[Biojava-dev] Issue with SimpleNCBITaxon class

Richard Holland holland at eaglegenomics.com
Mon Apr 12 06:57:57 UTC 2010


Thanks Deepak. 

I've had a look at the code and I believe its due to the different ways in which BioJava and BioPerl load the taxon table. 

BioJava sets the ncbi_taxon_id and parent_taxon_id columns based on the values from the NCBI taxonomy file. The taxon_id column in BioJava is a meaningless auto-generated value that is never used.

BioPerl however is generating taxon_id values and linking them by setting parent_taxon_id to the generated value. The parent value from the NCBI taxonomy file is therefore replaced with the BioPerl generated parent ID, meaning that instead of linking from parent_taxon_id to ncbi_taxon_id as per BioJava, the link is to taxon_id instead. (I'm basing this comment on looking at load_ncbi_taxonomy.pl from the BioSQL archives.)

I believe if you load the taxonomy table using BioJava, you should see BioJava giving correct behaviour. Likewise if you load it using BioPerl, BioPerl will behave correctly. But if you load with one then query with the other, you'll get incorrect results.

This sounds like a case for discussion on both lists - a matter of standardisation between the two projects. Not quickly/easily solvable for now.

cheers,
Richard

On 11 Apr 2010, at 22:08, Deepak Sheoran wrote:

> I am using same table with biojava and bioperl taxon program and the output I get is below:
> 
> Biojava:
> For example for ncbi_taxon_id = 11876 (Avian sarcoma virus), the lineage i get is 
>             Rhamnus; Platanus occidentalis; Suillus placidus; Diadasia australis; Arnicastrum guerrerense; Labiduridae; Oreostemma alpigenum var. haydenii. 
> 
> Biojava process of finding names: 11876==>3019252==>50447==>176516==>143975==>48579==>4403==>3609==>276240   (wrong way of doing things)
> 
> Bioperl:    
> For example for ncbi_taxon_id = 11876 (Avian sarcoma virus), the lineage i get is 
>           Retroviridae; Orthoretrovirinae; Alpharetrovirus; unclassified  Alpharetrovirus.
> 
> Bioperl process of finding names: 11876==>353825==>153057==>327045==>11632   (Right way of doing things)
> 
> Hint: biojava search ncbi_taxon_id column with a value from parent_taxon_id where bioperl search taxon_id column with a value from parent_taxon_id.
> 
> Taxon and Taxon_name Table content which is being relevant  in discussion:
> 
> taxon_id	ncbi_taxon_id	parent_taxon_id	node_rank	name	name_class
> 2901	3609	276240	genus	Rhamnus	scientific name
> 3610	4403	3609	species	Platanus occidentalis	scientific name
> 29052	48579	4403	species	Suillus placidus	scientific name
> 114412	143975	48579	species	Diadasia australis	scientific name
> 143976	176516	143975	species	Arnicastrum guerrerense	scientific name
> 30680	50447	176516	family	Labiduridae	scientific name
> 254757	301952	50447	varietas	Oreostemma alpigenum var. haydenii	scientific name
> 9394	11632	17394	family	Retroviridae	scientific name
> 277861	327045	9394	subfamily	Orthoretrovirinae	scientific name
> 122448	153057	277861	genus	Alpharetrovirus	scientific name
> 301952	353825	122448	no rank	unclassified Alpharetrovirus	scientific name
> 9584
> 11876
> 301952
> species
> Avian sarcoma virus
> scientifice name
> 
> Thanks
> Deepak 
> 
> On 4/11/2010 2:53 PM, Richard Holland wrote:
>> I'm sorry but I don't understand your example. Could you provide a real example of correct values for each column from a sample taxon entry in NCBI, plus an example of what BioJava is doing wrong? (i.e. give a sample record to use as reference, then point out the correct value of parent_taxon_id, and point out what value BioJava is using instead).
>> 
>> thanks,
>> Richard
>> 
>> On 11 Apr 2010, at 20:16, Deepak Sheoran wrote:
>> 
>>   
>> 
>>> Hi,
>>> 
>>> Their is very fundamental issue in SimpleNCBITaxon class becuase of which it is producing wrong taxonomy hierarchy. I am explaing what I have found let me what you guys think of it, and me suggest how to fix it.
>>> 
>>> 1) Columns in taxon table are (taxon_id, ncbi_taxon_id, parent_taxon_id, nodeRank, geneticCode, mitoGeneticCode, leftValue, rightValue)
>>> 2) In the class SimpleNCBITaxon we are thinking "parent_taxon_id" to have parent ncbi_taxon_id for current ncbi_taxon_id value, but its not true. The value which "parent_taxon_id" have is "taxon_id" which have parent_ncbi_taxon_id of current ncbi_taxon_id.
>>> 
>>> <property name="NCBITaxID" column="ncbi_taxon_id" node="@NCBITaxId"/>
>>> <property name="nodeRank" column="node_rank"/>
>>> <property name="geneticCode" column="genetic_code"/>
>>> <property name="mitoGeneticCode" column="mito_genetic_code"/>
>>> <property name="leftValue" column="left_value"/>
>>> <property name="rightValue" column="right_value"/>
>>> <property name="parentNCBITaxID" column="parent_taxon_id"/>      ----- its not correct column parent_taxon_id stores the taxon_id which have parent_ncbi_taxon_id for current entry
>>> 
>>> Thanks
>>> Deepak Sheoran
>>> 
>>> 
>>>     
>>> 
>> --
>> Richard Holland, BSc MBCS
>> Operations and Delivery Director, Eagle Genomics Ltd
>> T: +44 (0)1223 654481 ext 3 | E: 
>> holland at eaglegenomics.com
>> http://www.eaglegenomics.com/
>> 
>> 
>>   
>> 
> 

--
Richard Holland, BSc MBCS
Operations and Delivery Director, Eagle Genomics Ltd
T: +44 (0)1223 654481 ext 3 | E: holland at eaglegenomics.com
http://www.eaglegenomics.com/




More information about the biojava-dev mailing list