[Bioperl-l] Bio::Species/Bio::Taxonomy changes
Chris Fields
cjfields at uiuc.edu
Sun Jul 23 20:53:32 UTC 2006
Sendu, Hilmar, et al,
I was looking through SeqIO::genbank and though I would bring up a
couple of things to think about re: GenBank Taxonomy information.
This is how NCBI defines the names used for SOURCE and ORGANISM
according to the latest GenBank release notes:
SOURCE - Common name of the organism or the name most frequently used
in the literature. Mandatory keyword in all annotated entries/one or
more records/includes one subkeyword.
ORGANISM - Formal scientific name of the organism (first line)
and taxonomic classification levels (second and subsequent lines).
Mandatory subkeyword in all annotated entries/two or more records.
According to their sample file page (http://www.ncbi.nlm.nih.gov/
Sitemap/samplerecord.html), the SOURCE is this:
Free-format information including an abbreviated form of the organism
name, sometimes followed by a molecule type. (See section 3.4.10 of
the GenBank release notes for more info.)
The SOURCE can also include the organelle and also may include
additional information, such as an abbreviated name and a common name
in parentheses.
...
SOURCE Saccharomyces cerevisiae (baker's yeast)
ORGANISM Saccharomyces cerevisiae
Eukaryota; Fungi; Ascomycota; Saccharomycotina;
Saccharomycetes;
Saccharomycetales; Saccharomycetaceae; Saccharomyces.
...
Setting scientific_name() isn't a problem; acc. to the above
definition, it is the full name on the ORGANISM line. The lineage
(or classification() array) is also straight-forward. The common_name
(), though as used by Bio::SeqIO::genbank, is the entire SOURCE line
(not just the abbreviated name, but the name and everything else).
No additional parsing is performed on it. write_seq() also seems to
do the wrong thing when rebuilding the SOURCE line as well as the
method writes the subspecies to the line.
I plan on using Bio::SeqIO::genbank as a guinea pig of sorts to try
using Bio::Taxonomy::Node objects instead of Bio::Species, then get
the parsing for these lines corrected and simplified. Essentially,
the way NCBI describes it, the main name on the line is actually the
free-form abbreviated name, the name in parentheses is the common
name (optionally present), and the organelle precedes all of these if
present. I want to try getting common_name() to match the common
name found for taxonomy (baker's yeast) rather than have it be a
simple container, add an abbreviated_name() method for the name
container for the SOURCE line, and have the organelle() method
actually be used if an organelle is present (it doesn't seem to be
set at the moment in SeqIO::genbank).
Right now, I have NO idea how EMBL, DDBJ, other formats deal with
organism info; I would think that the main three (GenBank/EMBL-
SwissProt/DDBJ) handle them similarly...(Famous Last Words)
I also propose (I'll probably get yelled at here) NOT actively
supporting additional parsing of species, subspecies, etc directly
from a file w/o a DB lookup. As in, leave species, subspecies, genus
parsing from the flatfile as is (no longer support it) or remove it
completely and leave them unset.
I haven't looked, but I have a strong feeling that the species
parsing in Bio::SeqIO is different from format to format. It really
seems like more trouble than it's worth to maintain this, especially
as there is perfectly valid Taxonomy database information available
either locally using a flatfile or via Entrez. If people want to
have reliable $species->species or $species-genus for taxonomy
information, they will need to have the db_handle() set for the
Bio::Taxonomy::Node object and have an Node-based method to reset
species, genus, etc to the tax database information (maybe
reset_taxon or something along those lines).
Okay, rambled on enough. Any thoughts?
Christopher Fields
Postdoctoral Researcher
Lab of Dr. Robert Switzer
Dept of Biochemistry
University of Illinois Urbana-Champaign
More information about the Bioperl-l
mailing list