def run_assembly(self): """Run INDRA's assembly pipeline on the Statements.""" self.eliminate_copies() stmts = self.get_indra_stmts() stmts = self.filter_event_association(stmts) stmts = ac.filter_no_hypothesis(stmts) if not self.assembly_config.get('skip_map_grounding'): stmts = ac.map_grounding(stmts) if self.assembly_config.get('standardize_names'): ac.standardize_names_groundings(stmts) if self.assembly_config.get('filter_ungrounded'): score_threshold = self.assembly_config.get('score_threshold') stmts = ac.filter_grounded_only(stmts, score_threshold=score_threshold) if self.assembly_config.get('merge_groundings'): stmts = ac.merge_groundings(stmts) if self.assembly_config.get('merge_deltas'): stmts = ac.merge_deltas(stmts) relevance_policy = self.assembly_config.get('filter_relevance') if relevance_policy: stmts = self.filter_relevance(stmts, relevance_policy) if not self.assembly_config.get('skip_filter_human'): stmts = ac.filter_human_only(stmts) if not self.assembly_config.get('skip_map_sequence'): stmts = ac.map_sequence(stmts) # Use WM hierarchies and belief scorer for WM preassembly preassembly_mode = self.assembly_config.get('preassembly_mode') if preassembly_mode == 'wm': hierarchies = get_wm_hierarchies() belief_scorer = get_eidos_scorer() stmts = ac.run_preassembly(stmts, return_toplevel=False, belief_scorer=belief_scorer, hierarchies=hierarchies) else: stmts = ac.run_preassembly(stmts, return_toplevel=False) belief_cutoff = self.assembly_config.get('belief_cutoff') if belief_cutoff is not None: stmts = ac.filter_belief(stmts, belief_cutoff) stmts = ac.filter_top_level(stmts) if self.assembly_config.get('filter_direct'): stmts = ac.filter_direct(stmts) stmts = ac.filter_enzyme_kinase(stmts) stmts = ac.filter_mod_nokinase(stmts) stmts = ac.filter_transcription_factor(stmts) if self.assembly_config.get('mechanism_linking'): ml = MechLinker(stmts) ml.gather_explicit_activities() ml.reduce_activities() ml.gather_modifications() ml.reduce_modifications() ml.gather_explicit_activities() ml.replace_activations() ml.require_active_forms() stmts = ml.statements self.assembled_stmts = stmts
def default_assembly(stmts): from indra.belief.wm_scorer import get_eidos_scorer from indra.preassembler.hierarchy_manager import get_wm_hierarchies hm = get_wm_hierarchies() scorer = get_eidos_scorer() stmts = ac.run_preassembly(stmts, belief_scorer=scorer, return_toplevel=True, flatten_evidence=True, flatten_evidence_collect_from='supported_by', poolsize=4) stmts = ac.merge_groundings(stmts) stmts = ac.merge_deltas(stmts) stmts = ac.standardize_names_groundings(stmts) return stmts
def test_merge_groundings(): refs1 = {'UN': [('x', 0.8), ('y', 0.7)], 'B': 'x', 'C': 'y'} refs2 = {'UN': [('x', 0.9), ('y', 0.6), ('z', 0.5)], 'B': 'x', 'D': 'z'} stmts = [ Influence(Concept('a', db_refs=refs1), Concept('b', db_refs=refs2), evidence=[Evidence(source_api='eidos', text='1')]), Influence(Concept('a', db_refs=refs2), Concept('b', db_refs=refs1), evidence=[Evidence(source_api='eidos', text='2')]) ] stmts = ac.run_preassembly(stmts) assert len(stmts) == 1 stmts = ac.merge_groundings(stmts) assert stmts[0].subj.db_refs == \ {'UN': [('x', 0.9), ('y', 0.7), ('z', 0.5)], 'B': 'x', 'C': 'y', 'D': 'z'}, \ stmts[0].subj.db_refs assert stmts[0].obj.db_refs == stmts[0].subj.db_refs
def test_merge_groundings(): refs1 = {'UN': [('x', 0.8), ('y', 0.7)], 'B': 'x', 'C': 'y'} refs2 = {'UN': [('x', 0.9), ('y', 0.6), ('z', 0.5)], 'B': 'x', 'D': 'z'} stmts = [Influence(Event(Concept('a', db_refs=refs1)), Event(Concept('b', db_refs=refs2)), evidence=[Evidence(source_api='eidos', text='1')]), Influence(Event(Concept('a', db_refs=refs2)), Event(Concept('b', db_refs=refs1)), evidence=[Evidence(source_api='eidos', text='2')])] stmts = ac.run_preassembly(stmts) assert len(stmts) == 1 stmts = ac.merge_groundings(stmts) assert stmts[0].subj.concept.db_refs == \ {'UN': [('x', 0.9), ('y', 0.7), ('z', 0.5)], 'B': 'x', 'C': 'y', 'D': 'z'}, \ stmts[0].subj.db_refs assert stmts[0].obj.concept.db_refs == stmts[0].subj.concept.db_refs
def surface_details(stmts): stmts = ac.merge_groundings(stmts) stmts = ac.merge_deltas(stmts) return stmts
from indra.statements import stmts_to_json_file import indra.tools.assemble_corpus as ac from assemble_model import process_eidos, assemble_stmts if __name__ == '__main__': stmts = process_eidos() stmts_to_json_file(stmts, 'eidos_500m_raw.json') stmts = assemble_stmts(stmts) stmts = ac.merge_groundings(stmts) stmts = ac.merge_deltas(stmts) stmts = ac.standardize_names_groundings(stmts) stmts_to_json_file(stmts, 'eidos_500m_assembled.json')