"""Accepted name wrangler for trees using Open tree of Life for name resolution."""
from lmpy.data_wrangling.tree.accepted_name_wrangler import (
AcceptedNameTreeWrangler
)
from biotaphy.client.ot_service_wrapper.open_tree import resolve_names_otol
# .....................................................................................
[docs]class BiotaphyAcceptedNameTreeWrangler(AcceptedNameTreeWrangler):
"""Modifies tree columns to update taxon names to the "accepted" names."""
[docs] name = 'BiotaphyAcceptedNameTreeWrangler'
# .......................
def __init__(
self,
name_map=None,
name_resolver=None,
purge_failures=True,
out_map_filename=None,
map_write_interval=100,
out_map_format='json',
**params
):
"""Constructor for BiotaphyAcceptedNameTreeModifier class.
Args:
name_map (dict): A map of original name to accepted name.
name_resolver (str or Method): If provided, use this method for getting new
accepted names. If set to 'gbif', use GBIF name resolution.
purge_failures (bool): Should failures be purged from the tree.
out_map_filename (str): A file location to write the updated name map.
map_write_interval (int): Update the name map output file after each set of
this many iterations.
out_map_format (str): The format to write the names map (csv or json).
**params (dict): Keyword parameters to pass to _TreeDataWrangler.
"""
if isinstance(name_resolver, str) and name_resolver.lower() == 'otol':
name_resolver = resolve_names_otol
AcceptedNameTreeWrangler.__init__(
self,
name_map=name_map,
name_resolver=name_resolver,
purge_failures=purge_failures,
out_map_filename=out_map_filename,
map_write_interval=map_write_interval,
out_map_format=out_map_format,
**params
)