def lineage_id(self, acc_number_list): """Get taxonomic lineage name for accession ids Given a list of accession numbers, yield the accession number and their associated lineage (in the form of taxids) as tuples Args: acc_number_list (:obj:`list`): a list of accession numbers Yields: tuple: (accession id, lineage list) """ self.check_list_ids(acc_number_list) with self.db.atomic(): query = Accession.select().where( Accession.accession << acc_number_list) for i in query: lineage_list = [] current_lineage = i.taxid.tax_name current_lineage_id = i.taxid.ncbi_taxid parent = i.taxid.parent_taxid while current_lineage != 'root': lineage_list.append(current_lineage_id) new_query = Taxa.get(Taxa.ncbi_taxid == parent) current_lineage = new_query.tax_name current_lineage_id = new_query.ncbi_taxid parent = new_query.parent_taxid yield (i.accession, lineage_list)
def sci_name(self, acc_number_list): """Get taxonomic scientific name for accession ids Given a list of accession numbers, yield the accession number and their associated scientific name as tuples Args: acc_number_list (:obj:`list`): a list of accession numbers Yields: tuple: (accession id, taxonomy id) """ self.check_list_ids(acc_number_list) with self.db.atomic(): query = Accession.select().where( Accession.accession << acc_number_list) for i in query: yield (i.accession, i.taxid.tax_name)