def buildConcepts(self): cc = ConcreteConcept('hareitosis', 'i', ['hareitosis'], ['B02.34'], ['']) cc2 = ConcreteConcept('inflammed hair cancer', 'a', ['hairitis', 'hairiatic cancer'], ['A12.23.45', 'B01.23'], ['']) self.storage = {'c12345': cc, 'c98765': cc2} Concept.init_storage(self.storage) return (Concept('c12345'), Concept('c98765'))
def testWrongMappingType(self): c1, c2 = self.buildConcepts() cc3 = ConcreteConcept('hairosis', 'g/p', ['hairotic hairisis'], ['C1.2.3'], ['']) # Add it in a roundabout way to the original storage self.storage['c2468'] = cc3 c3 = Concept('c2468') self.assertEqual([], self.ruleless_converter.convert(c3).utterance)
def convert(self, a_ranked_result_set): """Convert a ranked result set into a RankedConversionResult. In other words, convert a ranked term list to its MeSH equivalents.""" result = RankedConversionResult() self._my_converter.start_conversion() for incoming_term, incoming_score in a_ranked_result_set: converted = self._my_converter.convert( Concept(incoming_term.node_id)) if converted.utterance != []: result.add_term_score(converted, incoming_score) converted = self._my_converter.end_conversion() if converted.utterance != []: result.add_term_score(converted, incoming_score + self._checktag_boost) logging.log(ULTRADEBUG, "RankedConverter results: %r", result) return result
def testTermNotInTreeRaisesException(self): c1, c2 = self.buildConcepts() cc3 = ConcreteConcept( 'hairosis', 'i', [ 'hairotic hairisis', 'hair-raising hair', # <--This'll be a descriptor 'hurry' ], ['Q12345678', 'D123456', 'Q987564'], ['']) # Add it in a roundabout way to the original storage self.storage['c2468'] = cc3 c3 = Concept('c2468') self.ruleless_converter._skip_unknown = False self.assertRaises(TermNotInTree, self.ruleless_converter.convert, c3)
def testDeepestOnePreferred(self): c1, c2 = self.buildConcepts() cc3 = ConcreteConcept( 'hair-raising hair', 'i', [ 'hairitis', # <-- a descriptor 'hairiatic cancer', # <-- a descriptor 'hareitosis' ], # <-- a descriptor ['D12345678', 'D123456', 'D987564'], ['']) # Add it in a roundabout way to the original storage self.storage['c2468'] = cc3 c3 = Concept('c2468') # Should choose the deepest one (hairiatic cancer, according to # self.my_tree) self.assertEqual([Term('hairiatic cancer')], self.ruleless_converter.convert(c3).utterance)
def testDescriptorNamedLikeConceptPreferred(self): c1, c2 = self.buildConcepts() cc3 = ConcreteConcept( 'hair-raising hair', 'i', [ 'hairotic hairisis', # <-- a descriptor 'hair-raising hair', # <-- a descriptor 'hurry' ], # <-- not a descriptor ['D12345678', 'D123456', 'Q987564'], ['']) # Add it in a roundabout way to the original storage self.storage['c2468'] = cc3 c3 = Concept('c2468') # Make sure the tree knows about this concept self.my_tree._tree['hair-raising hair'] = TreeNode( 'hair-raising hair', 'MH', 'Q', set(['B12.34'])) self.assertEqual([Term('hair-raising hair')], self.ruleless_converter.convert(c3).utterance)
def __init__(self, original_line, converter): RelationLine.__init__(self, original_line) self._mesh1 = converter.convert(Concept(self.CUI1)) self._mesh2 = converter.convert(Concept(self.CUI2)) dummy = converter.end_conversion() # Discard extra terms generated by
def __init__(self, original_line, converter): EntityLine.__init__(self, original_line) self._mesh = converter.convert(Concept(self.CUI)) dummy = converter.end_conversion() # Discard extra terms generated by