def __init__(self, **kwargs): self.tree_lineage_names = None self.config_lineage_names = None self.is_case_sensitive = kwargs.pop("is_case_sensitive", False) self.is_fail_on_extra_tree_lineages = kwargs.pop( "is_fail_on_extra_tree_lineages", True) self.is_fail_on_extra_configuration_lineages = kwargs.pop( "is_fail_on_extra_configuration_lineages", True) self.logger = kwargs.pop("logger") self.original_to_normalized_lineage_name_map = {} self.config_name_normalization_report = {} self.preanalysis_constrained_species_lineages_map = {} if self.is_case_sensitive: self.normalized_tree_lineage_names = {} self.normalized_config_lineage_names = {} self.species_names = {} self.preanalysis_constrained_lineage_species_map = {} else: self.normalized_tree_lineage_names = OrderedCaselessDict() self.normalized_config_lineage_names = OrderedCaselessDict() self.normalized_species_names = OrderedCaselessDict() self.preanalysis_constrained_lineage_species_map = OrderedCaselessDict( ) self.extra_tree_lineage_names = [] self.extra_configuration_lineages = []
def read_configuration_table_species(self, conf_lineage_species_map, conf_constrained_lineages): if self.is_case_sensitive: nccl = {} else: nccl = OrderedCaselessDict() for ln in conf_constrained_lineages: nccl[ln] = True for lineage_name in conf_lineage_species_map: if lineage_name not in nccl: continue species_name = conf_lineage_species_map[lineage_name] if species_name not in self.normalized_species_names: self.normalized_species_names[species_name] = species_name else: species_name = self.normalized_species_names[species_name] try: normalized_lineage_name = self.original_to_normalized_lineage_name_map[lineage_name] except KeyError: utility.error_exit( msg="Lineage '{}' not defined (missing on tree?)".format(lineage_name), logger=self.logger) if normalized_lineage_name in self.preanalysis_constrained_lineage_species_map: utility.error_exit( msg="Duplicate lineage species assignment: '{}'".format(normalized_lineage_name), logger=self.logger) self.preanalysis_constrained_lineage_species_map[normalized_lineage_name] = species_name try: self.preanalysis_constrained_species_lineages_map[species_name].add(normalized_lineage_name) except KeyError: self.preanalysis_constrained_species_lineages_map[species_name] = set([normalized_lineage_name]) self.preanalysis_constrained_species_report()
def __init__(self, citation=None): """ Sets up internal dictionary of BibTeX fields, and initializes if argument is given. """ self.bibtype = None self.citekey = None if isinstance(citation, BibTexEntry): self._entry_dict = OrderedCaselessDict(citation._entry_dict) elif isinstance(citation, dict): self._entry_dict = OrderedCaselessDict() for k, v in citation.items(): self._entry_dict[k.lower()] = v self.bibtype = self._entry_dict.get("bibtype", None) self.citekey = self._entry_dict.get("citekey", None) else: self._entry_dict = OrderedCaselessDict() self.parse_text(citation)