if child.name == lTaxonomy[iTaxLevel]: node = child break ## remove nodes with one child for node in tree.traverse(): if len(node.get_children()) == 1: if len(node.get_ancestors()) > 0: ancestor = node.get_ancestors()[0] ancestor.add_child(node.get_children()[0]) ancestor.remove_child(node) else: tree = node.get_children()[0] return tree taxonomy = Taxonomy(sTaxdumpDir=sTaxdumpDir) lTaxonomies = [] for sLine in open(sInFile): sTaxId = sLine.strip() lTaxonomy = taxonomy.getTaxonomyByTaxId(sTaxId) lTaxonomy = list( map(lambda x: '{} {}'.format(re.sub('^ a-zA-Z0-9_', '', x[1]), x[0]), lTaxonomy))[::-1] lTaxonomies.append(lTaxonomy) ## for testing """ lTaxonomies = [['cellular organisms', 'eukaryota', 'opisthokonta', 'metazoa', 'eumetazoa', 'bilateria', 'deuterostomia', 'chordata', 'craniata', 'vertebrata', 'h**o sapiens'],\ ['cellular organisms', 'eukaryota', 'opisthokonta', 'metazoa', 'eumetazoa', 'bilateria', 'deuterostomia', 'chordata', 'tunicata', 'ascidiacea', 'phlebobranchia', 'cionidae', 'ciona', 'ciona intestinalis'],\ ['cellular organisms', 'bacteria', 'terrabacteria group', 'tenericutes', 'mollicutes', 'mycoplasmatales', 'mycoplasmataceae', 'mycoplasma', 'mycoplasma pneumoniae'],\ ['cellular organisms', 'archaea', 'euryarchaeota', 'methanomada group', 'methanococci', 'methanococcales', 'methanococcaceae', 'methanococcus', 'methanococcus maripaludis']]