def convert(self, umls_concept):
     """Performs an extra pass through the bad_mhs rules"""
     tentative_conversion = Converter.convert(self, umls_concept)
     new_conversion = []
     for mh in tentative_conversion.utterance:
         mh_ls = mh.term.lower().strip()
         if mh_ls not in self.bad_mhs:
             new_conversion.append(mh)
         else:
             # Exclusions first, to deal with 'carcinoma'
             exclusions = self.bad_mhs[mh_ls][1]
             inclusions = self.bad_mhs[mh_ls][0]
             exclusion_triggered = False
             for e in exclusions:
                 if e in umls_concept.concept_name:
                     exclusion_triggered = True
                     break
             if inclusions == INCLUDE_EVERYTHING:
                 if not exclusion_triggered:
                     new_conversion.append(mh)
                 continue
             for i in inclusions:
                 if i in umls_concept.concept_name:
                     if not exclusion_triggered:
                         new_conversion.append(mh)
                     continue
     return Expression(new_conversion)
 def convert(self, umls_concept):
     """Performs an extra pass through the bad_mhs rules"""
     tentative_conversion=Converter.convert(self, umls_concept)
     new_conversion=[]
     for mh in tentative_conversion.utterance:
         mh_ls=mh.term.lower().strip() 
         if mh_ls not in self.bad_mhs:
             new_conversion.append(mh)
         else:
             # Exclusions first, to deal with 'carcinoma'
             exclusions=self.bad_mhs[mh_ls][1]
             inclusions=self.bad_mhs[mh_ls][0]
             exclusion_triggered=False
             for e in exclusions:
                 if e in umls_concept.concept_name:
                     exclusion_triggered=True
                     break
             if inclusions==INCLUDE_EVERYTHING:
                 if not exclusion_triggered:
                     new_conversion.append(mh)
                 continue
             for i in inclusions:
                 if i in umls_concept.concept_name:
                     if not exclusion_triggered:
                         new_conversion.append(mh)
                     continue
     return Expression(new_conversion)
     
 def setUp(self):
     #logging.basicConfig(level=logging.DEBUG,
     #                    format='%(asctime)s %(levelname)s %(message)s')
     # Most of the functionality is really tested under test_converter
     self.my_tree = Tree(None, file_mode="c")  # Creates an empty tree
     self.my_tree._tree['hairitis'] = TreeNode('hairitis', 'MH',
                                               set(['A12.23.45']))
     self.my_tree._tree['hairiatic cancer'] = TreeNode(
         'hairiatic cancer', 'MH', set(['A12.23.54.65', 'B01.23']))
     self.my_tree._tree['hareitosis'] = TreeNode('hareitosis', 'SH',
                                                 set(['B02.34']))
     self.empty_rules = ConverterData({}, {}, {}, {}, {})
     self.ruleless_converter = RankedConverter(
         Converter(self.my_tree, self.empty_rules))
Exemple #4
0
 def __init__(self, reader, graph_builder, ranker, eval_parameters,
              ranking_cutoff, mesh_tree_filename, distance_matrix_filename,
              distance_function, umls_converter_data_filename,
              umls_concept_data_filename, output_file):
     logging.debug("Setting up a Workflow instance.")
     logging.debug("My reader is: %r", reader)
     self._reader = reader
     logging.debug("My graph builder is: %r", graph_builder)
     self._graph_builder = graph_builder
     self._ranker = MappedRanker(ranker)
     logging.debug("My ranker is: %r", self._ranker)
     self._ranking_cutoff = ranking_cutoff
     logging.debug("My ranking cutoff is: %r", self._ranking_cutoff)
     logging.debug("Creating a Tree instance from %s", mesh_tree_filename)
     self._mesh_tree = Tree(mesh_tree_filename)
     logging.debug(
         "Creating SAVCC distance matrix with %r and distance "
         "function %r", distance_matrix_filename, distance_function)
     self._matrix = SavccNormalizedMatrix(
         open(distance_matrix_filename, "rb"), distance_function)
     logging.debug("Filling in the rest of the evaluation parameters.")
     self._eval_parameters = eval_parameters
     self._eval_parameters.mesh_tree = self._mesh_tree
     self._eval_parameters.savcc_matrix = self._matrix
     logging.debug("My evaluation parameters are: %r",
                   self._eval_parameters)
     if umls_converter_data_filename is None:
         converter_data = None
     else:
         converter_data = pickle.load(
             open(umls_converter_data_filename, "rb"))
     self._umls_converter = RankedConverter(
         Converter(self._mesh_tree, converter_data))
     logging.debug("My converter is: %r", self._umls_converter)
     logging.debug("Initializing Concept storage from %s",
                   umls_concept_data_filename)
     if umls_concept_data_filename is None:
         Concept.init_storage()
     else:
         Concept.init_storage(StringDBDict(umls_concept_data_filename))
     self._output_file = output_file
     logging.debug("My output file is: %r", self._output_file)
     return
 def __init__(self, tree, rule_data=None, skip_unknown_concepts=True):
     Converter.__init__(self, tree, rule_data, skip_unknown_concepts, set(["a", "i", "g/p", "g/s", "g/c", "o"]))
 def __init__(self, tree, rule_data=None, skip_unknown_concepts=True):
     Converter.__init__(self, tree, rule_data, skip_unknown_concepts,
                         set(['a', 'i', 'g/p', 'g/s', 'g/c', 'o']))
Exemple #7
0
 def create_converter(self, mesh_tree, converter_data):
     """Creates and returns the UMLS converter we'll use - override for easy
     customization"""
     return RankedConverter(Converter(mesh_tree, converter_data))