예제 #1
0
 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 = []
예제 #2
0
 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()
예제 #3
0
 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)