Source code for mgkit.snps.mapper

"""
Mapping functions for SNPs - Should be move into an 'iterator' package to
be shared with other modules?
"""


[docs]def map_gene_id(gene_id, gene_map=None): """ Returns an iterator for all the values of a dictionary. if gene_id is not found in the gene_map, an empty iterator is returned. Arguments: gene_id (immutable): gene_id or any other dictionary key. gene_map (dict): a dictionary in the form key->[v1, v2, .. vN] Returns: generator: iterator (empty if gene_id is not in gene_map) with the values """ if gene_id not in gene_map: return for map_id in gene_map[gene_id]: yield map_id
[docs]def map_taxon_id_to_rank(taxon_id, rank=None, taxonomy=None, include_higher=False): """ Given a taxon_id, returns an iterator with only the element that correspond to the requested rank. If the taxon returned by :class:`mgkit.taxon.Taxonomy.get_ranked_taxon` has a different rank than requested, the iterator will be empty if `include_higher` is False and the returned taxon ID if True. Arguments: taxon_id (int): taxon ID to be mapped rank (str): taxon rank used (:data:`mgkit.taxon.TAXON_RANKS`) include_higher (bool): determines if a rank higher than the one requested is to be returned Returns: generator: iterator with the values or empty """ ranked_taxon = taxonomy.get_ranked_taxon(taxon_id, rank=rank) # in case we don't want to include higher taxa if (ranked_taxon.rank != rank) and (not include_higher): return yield ranked_taxon.taxon_id
[docs]def map_taxon_id_to_ancestor(taxon_id, anc_ids=None, func=None): """ Given a taxon_id and a list of ancestors IDs, returns an iterator with the IDs that are ancestors of taxon_id. Arguments: taxon_id (int): taxon ID to be mapped anc_ids (iterable): taxon IDs to check for ancestry func: function used to check for ancestry - partial function for :func:`mgkit.taxon.is_ancestor` that accepts taxon_id and anc_id Returns: generator: iterator with the values or empty .. note:: check :func:`mgkit.filter.taxon.filter_taxon_by_id_list` for examples on using func """ for anc_id in anc_ids: if func(taxon_id, anc_id): yield anc_id