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))
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']))
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))