add annotation about rank during rank filtering

This commit is contained in:
2009-10-12 15:47:51 +00:00
parent 295ca9b8f6
commit 550627095f

View File

@ -62,14 +62,23 @@ def taxonomyFilterGenerator(options):
loadTaxonomyDatabase(options) loadTaxonomyDatabase(options)
if options.taxonomy is not None: if options.taxonomy is not None:
taxonomy=options.taxonomy taxonomy=options.taxonomy
def taxonomyFilter(seq): def taxonomyFilter(seq,rank):
def annotateAtRank(seq):
if 'taxid' in seq:
taxid = seq['taxid']
rtaxid= taxonomy.getTaxonAtRank(taxid,rank)
if rtaxid is not None:
seq["%s_taxid" % rank]=rtaxid
seq[rank]=taxonomy.getScientificName(rtaxid)
return rtaxid
return None
good = True good = True
if 'taxid' in seq: if 'taxid' in seq:
taxid = seq['taxid'] taxid = seq['taxid']
# print taxid, # print taxid,
if options.requiredRank: if options.requiredRank:
taxonatrank = reduce(lambda x,y: x and y, taxonatrank = reduce(lambda x,y: x and y,
(taxonomy.getTaxonAtRank(taxid,rank) is not None (annotateAtRank(seq,rank) is not None
for rank in options.requiredRank),True) for rank in options.requiredRank),True)
good = good and taxonatrank good = good and taxonatrank
# print >>sys.stderr, " Has rank : ",good, # print >>sys.stderr, " Has rank : ",good,