def test_no_shared_objects(): """Make sure shared objects are not being created between statements""" verbs = ('phosphorylates', 'binds', 'activates', ' causes activation of ', 'increases', 'degrades', 'synthesizes', 'transcribes', 'ubiquitinates') for verb in verbs: text = 'HEDGEHOG %s SMURF1 and SMURF2' % verb tp = trips.process_text(text) stmts = tp.statements assert len(stmts) == 2 stmt1, stmt2 = stmts # assert stmt1.evidence[0] is not stmt2.evidence[0] hedgehog1 = stmt1.agent_list()[0] hedgehog2 = stmt2.agent_list()[0] assert hedgehog1 is not hedgehog2 # autophosphorylation text = 'HEDGEHOG phosphorylates itself at Ser1337 and Tyr99' tp = trips.process_text(text) stmts = tp.statements assert len(stmts) == 2 stmt1, stmt2 = stmts assert stmt1.evidence[0] is not stmt2.evidence[0] hedgehog1 = stmt1.agent_list()[0] hedgehog2 = stmt2.agent_list()[0] assert hedgehog1 is not hedgehog2
def test_ubiquitination(): tp = trips.process_text('MDM2 ubiquitinates TP53.') assert len(tp.statements) == 1 st = tp.statements[0] assert isinstance(st, ist.Ubiquitination) assert unicode_strs((tp, st)) assert_grounding_value_or_none(st) assert_if_hgnc_then_up(st) assert st.evidence
def trips_process_text(): """Process text with TRIPS and return INDRA Statements.""" if request.method == 'OPTIONS': return {} response = request.body.read().decode('utf-8') body = json.loads(response) text = body.get('text') tp = trips.process_text(text) return _stmts_from_proc(tp)
def test_synthesis(): tp = trips.process_text('NFKB transcribes IKB.') assert len(tp.statements) == 1 st = tp.statements[0] assert isinstance(st, ist.IncreaseAmount) assert st.subj is not None assert st.obj is not None assert unicode_strs((tp, st)) assert_if_hgnc_then_up(st) assert_grounding_value_or_none(st) assert st.evidence
def test_degradation(): tp = trips.process_text('MDM2 degrades TP53.') assert len(tp.statements) == 1 st = tp.statements[0] assert isinstance(st, ist.DecreaseAmount) assert st.subj is not None assert st.obj is not None assert unicode_strs((tp, st)) assert_if_hgnc_then_up(st) assert_grounding_value_or_none(st) assert st.evidence
def test_phosphorylation_nosite(): tp = trips.process_text('BRAF phosphorylates MEK1 at Serine.') assert len(tp.statements) == 1 st = tp.statements[0] assert isinstance(st, ist.Phosphorylation) assert st.residue == 'S' assert st.position is None assert unicode_strs((tp, st)) assert_if_hgnc_then_up(st) assert_grounding_value_or_none(st) assert st.evidence
def test_actform_bound(): tp = trips.process_text('HRAS bound to GTP is activated.') assert len(tp.statements) == 1 st = tp.statements[0] assert isinstance(st, ist.ActiveForm) assert isinstance(st.agent.bound_conditions[0], ist.BoundCondition) assert st.agent.bound_conditions[0].agent.name == 'GTP' assert st.agent.bound_conditions[0].is_bound == True assert unicode_strs((tp, st)) assert_if_hgnc_then_up(st) assert_grounding_value_or_none(st) assert st.evidence
def test_phosphorylation(): tp = trips.process_text('BRAF phosphorylates MEK1 at Ser222.') assert len(tp.statements) == 1 st = tp.statements[0] assert isinstance(st, ist.Phosphorylation) assert st.residue == 'S' assert st.position == '222' assert st.evidence assert_if_hgnc_then_up(st) assert_grounding_value_or_none(st) assert st.sub.db_refs['TEXT'] == 'MEK1' assert unicode_strs((tp, st))
def test_actform_muts(): tp = trips.process_text('BRAF V600E is activated.') assert len(tp.statements) == 1 st = tp.statements[0] assert isinstance(st, ist.ActiveForm) assert isinstance(st.agent.mutations[0], ist.MutCondition) assert st.agent.mutations[0].residue_from == 'V' assert st.agent.mutations[0].residue_to == 'E' assert st.agent.mutations[0].position == '600' assert unicode_strs((tp, st)) assert_if_hgnc_then_up(st) assert_grounding_value_or_none(st) assert st.evidence
def test_actmods2(): tp = trips.process_text('BRAF phosphorylated at Ser536 binds MEK1.') assert len(tp.statements) == 1 st = tp.statements[0] assert isinstance(st, ist.Complex) braf = st.members[0] assert braf.mods[0].mod_type == 'phosphorylation' assert braf.mods[0].residue == 'S' assert braf.mods[0].position == '536' assert unicode_strs((tp, st, braf)) assert_if_hgnc_then_up(st) assert_grounding_value_or_none(st) assert st.evidence
def test_simple_decrease(): tp = trips.process_text('Selumetinib decreases FOS.') assert len(tp.statements) == 1 st = tp.statements[0] assert isinstance(st, ist.DecreaseAmount) assert st.subj is not None assert st.obj is not None assert st.subj.name.upper() == 'SELUMETINIB' assert st.obj.name.upper() == 'FOS' assert unicode_strs((tp, st)) assert_if_hgnc_then_up(st) assert_grounding_value_or_none(st) assert st.evidence
def test_simple_decrease(): tp = trips.process_text('Selumetinib decreases FOS.') assert len(tp.statements) == 1 st = tp.statements[0] assert isinstance(st, ist.DecreaseAmount) assert st.subj is not None assert st.obj is not None assert st.subj.name.upper() == 'SELUMETINIB' assert st.obj.name.upper() == 'FOS' assert unicode_strs((tp, st)) assert_if_hgnc_then_up(st) assert_grounding_value_or_none(st) assert st.evidence
def test_actmods2(): tp = trips.process_text('BRAF phosphorylated at Ser536 binds MEK1.') assert len(tp.statements) == 1 st = tp.statements[0] assert isinstance(st, ist.Complex) braf = st.members[0] assert braf.mods[0].mod_type == 'phosphorylation' assert braf.mods[0].residue == 'S' assert braf.mods[0].position == '536' assert unicode_strs((tp, st, braf)) assert_if_hgnc_then_up(st) assert_grounding_value_or_none(st) assert st.evidence
def test_not_bound_to4(): fname = sys._getframe().f_code.co_name + '.xml' txt = 'BRAF that is not bound to NRAS and Vemurafenib binds BRAF ' +\ 'that is not bound to Vemurafenib.' tp = trips.process_text(txt, fname, False) assert (len(tp.statements) == 1) st = tp.statements[0] assert (is_complex(st)) assert (st.members[0].name == 'BRAF') assert (st.members[1].name == 'BRAF') assert (len(st.members[0].bound_conditions) == 2) assert (len(st.members[1].bound_conditions) == 1) os.remove(fname)
def test_actform_muts(): tp = trips.process_text('BRAF V600E is activated.') assert len(tp.statements) == 1 st = tp.statements[0] assert isinstance(st, ist.ActiveForm) assert isinstance(st.agent.mutations[0], ist.MutCondition) assert st.agent.mutations[0].residue_from == 'V' assert st.agent.mutations[0].residue_to == 'E' assert st.agent.mutations[0].position == '600' assert unicode_strs((tp, st)) assert_if_hgnc_then_up(st) assert_grounding_value_or_none(st) assert st.evidence
def test_actmod(): tp = trips.process_text('MEK1 phosphorylated at Ser222 is activated.') assert len(tp.statements) == 1 st = tp.statements[0] assert isinstance(st, ist.ActiveForm) assert isinstance(st.agent.mods[0], ist.ModCondition) assert st.agent.mods[0].mod_type == 'phosphorylation' assert st.agent.mods[0].residue == 'S' assert st.agent.mods[0].position == '222' assert unicode_strs((tp, st)) assert_if_hgnc_then_up(st) assert_grounding_value_or_none(st) assert st.evidence
def test_actmod(): tp = trips.process_text('MEK1 phosphorylated at Ser222 is activated.') assert len(tp.statements) == 1 st = tp.statements[0] assert isinstance(st, ist.ActiveForm) assert isinstance(st.agent.mods[0], ist.ModCondition) assert st.agent.mods[0].mod_type == 'phosphorylation' assert st.agent.mods[0].residue == 'S' assert st.agent.mods[0].position == '222' assert unicode_strs((tp, st)) assert_if_hgnc_then_up(st) assert_grounding_value_or_none(st) assert st.evidence
def test_mod_cond(): tp = trips.process_text('Phosphorylated BRAF binds ubiquitinated MAP2K1.') assert len(tp.statements) == 1 st = tp.statements[0] assert isinstance(st, ist.Complex) braf = st.members[0] mek = st.members[1] assert len(braf.mods) == 1 assert braf.mods[0].mod_type == 'phosphorylation' assert len(mek.mods) == 1 assert mek.mods[0].mod_type == 'ubiquitination' assert unicode_strs((tp, st)) assert_if_hgnc_then_up(st) assert_grounding_value_or_none(st) assert st.evidence
def read_model(model_name, reread=False): xml_fname = model_name + '.xml' if not reread: print('Processing %s' % xml_fname) if os.path.exists(xml_fname): with open(xml_fname, 'rb') as fh: tp = trips.process_xml(fh.read()) else: reread = True if reread: fname = model_name + '.txt' print('Reading %s' % fname) with open(fname, 'rb') as fh: ts = time.time() tp = trips.process_text(fh.read(), xml_fname) te = time.time() print('Reading took %.2fs' % (te-ts)) print('Assembling statements:') for i, st in enumerate(tp.statements): print('%d: %s' % (i, st)) print('----------------------') return tp.statements
def assemble_model(model_id, reread=False): model_name = 'model%d' % model_id # If model has already been read, just process the EKB XML if os.path.exists(model_name + '.xml') and not reread: tp = trips.process_xml(open(model_name + '.xml').read()) else: # Start with the basic model model_txt = open('model1.txt').read() # Apply patches one by one to get to the current model text for j in range(1, model_id): patch_txt = open('model%d_from%d.txt' % (j+1, j)).read() model_txt = apply_patch(model_txt, patch_txt) print('Reading model %d text:' % model_id) print(model_txt) # Process model text and save result EKB XML tp = trips.process_text(model_txt, model_name + '.xml') print('Assembling statements:') for i, st in enumerate(tp.statements): print('%d: %s' % (i, st)) # Assemble the PySB model pa = PysbAssembler() pa.add_statements(tp.statements) model = pa.make_model(policies='two_step') # Set initial conditions erk = model.monomers['ERK'] obs = Observable('ERK_p', erk(phospho='p')) model.add_component(obs) vem = model.monomers['VEMURAFENIB'] obs = Observable('Vem_free', vem(map3k=None)) model.add_component(obs) ras = model.monomers['RAS'] obs = Observable('RAS_active', ras(gtp=ANY)) model.add_component(obs) braf = model.monomers['BRAF'] obs = Observable('BRAF_active', braf(vemurafenib=None)) model.add_component(obs) model.parameters['BRAF_0'].value = 0 egf = model.monomers['EGF'] obs = Observable('EGF_free', egf(erbb=None)) model.add_component(obs) # Add mutated form of BRAF as initial condition sites_dict = {} for site in braf.sites: if site in braf.site_states: sites_dict[site] = braf.site_states[site][0] else: sites_dict[site] = None sites_dict['V600'] = 'E' model.add_component(Parameter('BRAF_mut_0', 1e5)) model.initial(braf(**sites_dict), model.parameters['BRAF_mut_0']) # Set up model parameters model.parameters['kf_ee_bind_1'].value = 1 model.parameters['kr_ee_bind_1'].value = 0.1 model.parameters['kf_ee_bind_2'].value = 1 model.parameters['kr_ee_bind_2'].value = 0.1 model.parameters['kf_eg_bind_1'].value = 1 model.parameters['kr_eg_bind_1'].value = 0.1 model.parameters['kf_gs_bind_1'].value = 1 model.parameters['kr_gs_bind_1'].value = 0.1 model.parameters['kf_sr_bind_1'].value = 1 model.parameters['kr_sr_bind_1'].value = 50 model.parameters['kf_rg_bind_1'].value = 50 model.parameters['kr_rg_bind_1'].value = 0.5 model.parameters['kf_rb_bind_1'].value = 1 model.parameters['kr_rb_bind_1'].value = 0.5 model.parameters['kf_vb_bind_1'].value = 10 model.parameters['kr_vb_bind_1'].value = 1 model.parameters['kf_bm_bind_1'].value = 1 model.parameters['kr_bm_bind_1'].value = 0.1 model.parameters['kc_bm_phosphorylation_1'].value = 3 model.parameters['kf_pm_bind_1'].value = 1 model.parameters['kr_pm_bind_1'].value = 0.001 model.parameters['kc_pm_dephosphorylation_1'].value = 10 model.parameters['kf_me_bind_1'].value = 1 model.parameters['kr_me_bind_1'].value = 0.1 model.parameters['kc_me_phosphorylation_1'].value = 10 model.parameters['kf_de_bind_1'].value = 1 model.parameters['kr_de_bind_1'].value = 0.001 model.parameters['kc_de_dephosphorylation_1'].value = 10 model.parameters['VEMURAFENIB_0'].value = 0 model.parameters['EGF_0'].value = 1e3 model.parameters['EGFR_0'].value = 1e5 model.parameters['SOS_0'].value = 1e3 model.parameters['GRB2_0'].value = 1e5 model.parameters['RAS_0'].value = 2e5 model.parameters['GTP_0'].value = 1e7 model.parameters['MEK_0'].value = 1e5 model.parameters['ERK_0'].value = 1e5 model.parameters['DUSP6_0'].value = 1e3 model.parameters['PPP2CA_0'].value = 1e5 if model_id >= 2: model.parameters['Phosphatase_0'].value = 1e2 model.parameters['kf_es_bind_1'].value = 1e-05 model.parameters['kr_es_bind_1'].value = 1e-04 model.parameters['kc_es_phosphorylation_1'].value = 1 model.parameters['kf_ps_bind_1'].value = 1 model.parameters['kr_ps_bind_1'].value = 0.1 model.parameters['kc_ps_dephosphorylation_1'].value = 1e-04 if model_id >= 3: model.parameters['kf_bb_bind_1'].value = 10 model.parameters['kr_bb_bind_1'].value = 1 model.parameters['kf_vb_bind_2'].value = 1e-04 pa.model = model pa.save_model('model%d.py' % model_id) return model
def export_hello(model, formats): for f in formats: model_export = export(model, f) extension = (f if f != 'pysb_flat' else 'py') fname = 'hello_indra_model.%s' % extension with open(fname, 'wb') as fh: fh.write(model_export.encode('utf-8')) # User defines text text = 'MEK1 phosphorylates ERK2 on threonine 185 and tyrosine 187.' # Process text using TRIPS processor tp = trips.process_text(text) # Get the list of extracted Statements stmts = tp.statements # Assemble a PySB model pa = PysbAssembler() pa.add_statements(stmts) pa.make_model() # Run simulation t = np.linspace(0, 300) sol = Solver(pa.model, t) sol.run() # Plot the result