Using natural language to build models¶
In this tutorial we build a simple model using natural language, then contextualize and parameterize it, and export it into different formats.
Read INDRA Statements from a natural language string¶
First we import INDRA’s API to the TRIPS reading system. We then define a block of text which serves as the description of the mechanism to be modeled in the model_text variable. Finally, indra.sources.trips.process_text is called which sends a request to the TRIPS web service, gets a response and processes the extraction knowledge base to obtain a list of INDRA Statements
In : from indra.sources import trips In : model_text = 'MAP2K1 phosphorylates MAPK1 and DUSP6 dephosphorylates MAPK1.' In : tp = trips.process_text(model_text)
At this point tp.statements should contain 2 INDRA Statements: a Phosphorylation Statement and a Dephosphorylation Statement. Note that the evidence sentence for each Statement is propagated:
In : for st in tp.statements: ...: print('%s with evidence "%s"' % (st, st.evidence.text)) ...: Phosphorylation(MAP2K1(), MAPK1()) with evidence "MAP2K1 phosphorylates MAPK1 and DUSP6 dephosphorylates MAPK1." Dephosphorylation(DUSP6(), MAPK1()) with evidence "MAP2K1 phosphorylates MAPK1 and DUSP6 dephosphorylates MAPK1."
Assemble the INDRA Statements into a rule-based executable model¶
We next use INDRA’s PySB Assembler to automatically assemble a rule-based model representing the biochemical mechanisms described in model_text. First a PysbAssembler object is instantiated, then the list of INDRA Statements is added to the assembler. Finally, the assembler’s make_model method is called which assembles the model and returns it, while also storing it in pa.model. Notice that we are using policies=’two_step’ as an argument of make_model. This directs the assemble to use rules in which enzymatic catalysis is modeled as a two-step process in which enzyme and substrate first reversibly bind and the enzyme-substrate complex produces and releases a product irreversibly.
In : from indra.assemblers.pysb_assembler import PysbAssembler --------------------------------------------------------------------------- ImportError Traceback (most recent call last) <ipython-input-5-18a38341912b> in <module>() ----> 1 from indra.assemblers.pysb_assembler import PysbAssembler ~/checkouts/readthedocs.org/user_builds/indra/checkouts/docstrings/indra/assemblers/pysb_assembler.py in <module>() 13 14 from indra import statements as ist ---> 15 from indra.databases import context_client, get_identifiers_url 16 from indra.preassembler.hierarchy_manager import entity_hierarchy as enth 17 from indra.tools.expand_families import _agent_from_uri ~/checkouts/readthedocs.org/user_builds/indra/checkouts/docstrings/indra/databases/context_client.py in <module>() 2 from builtins import dict, str 3 from copy import copy ----> 4 from indra.databases import cbio_client 5 # Python 2 6 try: ~/checkouts/readthedocs.org/user_builds/indra/checkouts/docstrings/indra/databases/cbio_client.py in <module>() 1 from __future__ import absolute_import, print_function, unicode_literals 2 from builtins import dict, str ----> 3 import pandas 4 import logging 5 import requests ImportError: No module named 'pandas' In : pa = PysbAssembler()