Source code for lmpy.data_wrangling.occurrence.accepted_name_wrangler

"""Module containing occurrence data wranglers for modifying point data."""
from lmpy.data_wrangling.occurrence.base import _OccurrenceDataWrangler
from lmpy.data_wrangling.common.accepted_name_wrangler import (
    _AcceptedNameWrangler,
    resolve_names_gbif,
)


# .....................................................................................
[docs]class AcceptedNameOccurrenceWrangler(_OccurrenceDataWrangler, _AcceptedNameWrangler): """Modifies the species_name to the "accepted" taxon name for the species."""
[docs] name = 'AcceptedNameOccurrenceWrangler'
[docs] version = '1.0'
# ....................... def __init__( self, name_map=None, name_resolver=None, store_original_attribute=None, **params ): """Constructor for AcceptedNameModifier 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. store_original_attribute (str or None): A new attribute to store the original taxon name. **params (dict): Keyword parameters to pass to _OccurrenceDataWrangler. """ _OccurrenceDataWrangler.__init__(self, **params) if isinstance(name_resolver, str) and name_resolver.lower() == 'gbif': name_resolver = resolve_names_gbif _AcceptedNameWrangler.__init__( self, name_map=name_map, name_resolver=name_resolver ) self.store_original_attribute = store_original_attribute # .......................
[docs] def _pass_condition(self, point): """Determine if a point has an accepted name. Args: point (Point): A point object to assess. Returns: bool: An indication if the point passed the test. """ if point.species_name is None or len(point.species_name) == 0: return False return True
# .......................
[docs] def _modify_point(self, point): """Update taxon name if necessary. Args: point (Point): A point to modify. Returns: Point, bool: Modified (if needed) point and boolean if point was modified. """ is_modified = False acc_name = self.resolve_names([point.species_name])[point.species_name] # If we should keep original, add a new attribute if self.store_original_attribute is not None: point.set_attribute(self.store_original_attribute, point.species_name) is_modified = True if point.species_name != acc_name: point.species_name = acc_name is_modified = True return point, is_modified