Giter Club home page Giter Club logo

amirunpri2018 / indra Goto Github PK

View Code? Open in Web Editor NEW

This project forked from sorgerlab/indra

0.0 1.0 0.0 171.01 MB

INDRA (Integrated Network and Dynamical Reasoning Assembler) is an automated model assembly system interfacing with NLP systems and databases to collect knowledge, and through a process of assembly, produce causal graphs and dynamical models.

Home Page: http://indra.bio

License: BSD 2-Clause "Simplified" License

Python 96.83% JavaScript 2.63% HTML 0.52% Shell 0.01% CSS 0.01%

indra's Introduction

Build Status Documentation Status

INDRA

INDRA (Integrated Network and Dynamical Reasoning Assembler) is an automated model assembly system, originally developed for molecular systems biology and currently being generalized to other domains. INDRA draws on natural language processing systems and structured databases to collect mechanistic and causal assertions, represents them in a standardized form (INDRA Statements), and assembles them into various modeling formalisms including causal graphs and dynamical models. INDRA also provides knowledge assembly procedures that operate on INDRA Statements and correct certain errors, find and resolve redundancies, infer missing information, filter to a scope of interest and assess belief.

Knowledge sources

INDRA is currently integrated with the following natural language processing systems:

and can collect information from these databases:

These input modules (available in indra.sources) all produce INDRA Statements.

Output model assemblers

INDRA also provides several model output assemblers that take INDRA Statements as input. INDRA can assemble into the following modeling formalisms

  • Detailed mechanistic, executable models in PySB which can further be exported into SBML, SBGN, Kappa, and BNGL.
  • Directed causal networks in SIF, NDEx/CX, Cytoscape.js, and Graphviz formats.
  • English language (a human-readable summary of the information collected and assembled by INDRA)

Internal knowledge assembly

The internal assembly steps of INDRA are exposed in the indra.tools.assemble_corpus submodule. This submodule contains functions that take Statements as input and produce processed Statements as output. They can be composed to form an assembly pipeline connecting knowledge collected from sources with an output model.

INDRA also contains utility modules to access literature content (e.g. PubMed), ontological information (e.g. UniProt, HGNC), and other resources.

Citation

From word models to executable models of signaling networks using automated assembly, Molecular Systems Biology (2017)

Documentation

Documentation is available at http://indra.readthedocs.io.

Installation

For detailed installation instructions, see the documentation.

INDRA works with both Python 2 and 3 (tested with 2.7 and 3.5).

The preferred way to install INDRA is by pointing pip to the source repository as

$ pip install git+https://github.com/sorgerlab/indra.git

or by cloning the repository and then using pip to install the package as

$ git clone https://github.com/sorgerlab/indra.git
$ cd indra
$ pip install .

You can also install INDRA by cloning this repository and running setup.py as

$ git clone https://github.com/sorgerlab/indra.git
$ cd indra
$ python setup.py install

Releases of INDRA are also available on PyPI, you can install the latest release as

$ pip install indra

However, releases will usually be behind the latest code available in this repository.

INDRA depends on a few standard Python packages. These packages are installed by either setup method (using pip or running setup.py install). For certain modules and use cases, other dependencies may be needed, which are described in detail in the documentation.

Using INDRA

In this example INDRA assembles a PySB model from the natural language description of a mechanism via the TRIPS reading web service.

from indra.sources import trips
from indra.assemblers.pysb import PysbAssembler
pa = PysbAssembler()
# Process a natural language description of a mechanism
trips_processor = trips.process_text('MEK2 phosphorylates ERK1 at Thr-202 and Tyr-204')
# Collect extracted mechanisms in PysbAssembler
pa.add_statements(trips_processor.statements)
# Assemble the model
model = pa.make_model(policies='two_step')

INDRA also provides an interface for the REACH natural language processor. In this example, a full paper from PubMed Central is processed. The paper's PMC ID is PMC3717945.

from indra.sources import reach
# Process the neighborhood of BRAF and MAP2K1
reach_processor = reach.process_pmc('3717945')

At this point, reach_processor.statements contains a list of INDRA statements extracted from the PMC paper.

Next we look at an example of reading the 10 most recent PubMed abstracts on BRAF and collecting the results in INDRA statements.

from indra.sources import reach
from indra.literature import pubmed_client
# Search for 10 most recent abstracts in PubMed on 'BRAF'
pmids = pubmed_client.get_ids('BRAF', retmax=10)
all_statements = []
for pmid in pmids:
    abs = pubmed_client.get_abstract(pmid)
    if abs is not None:
        reach_processor = reach.process_text(abs)
        if reach_processor is not None:
            all_statements += reach_processor.statements

At this point, the all_statements list contains all the statements extracted from the 10 abstracts.

The next example shows querying the BEL large corpus network for a neighborhood of a given list of proteins using their HGNC gene names. This example performs the query via PyBEL.

from indra.sources import bel
# Process the neighborhood of BRAF and MAP2K1
bel_processor = bel.process_pybel_neighborhood(['BRAF', 'MAP2K1'])

At this point, bel_processor.statements contains a list of INDRA statements extracted from the neighborhood query.

Next, we look at an example of querying the Pathway Commons database for paths between two lists of proteins. Note: see installation notes above for installing pyjnius, which is required for using the BioPAX API of INDRA.

from indra.sources import biopax
# Process the neighborhood of BRAF and MAP2K1
biopax_processor = biopax.process_pc_pathsfromto(['BRAF', 'RAF1'], ['MAP2K1', 'MAP2K2'])

At this point, biopax_processor.statements contains a list of INDRA Statements extracted from the paths-from-to query.

INDRA REST API

A REST API for INDRA is available at http://api.indra.bio:8000 with documentation at http://www.indra.bio/rest_api/docs. Note that the REST API is ideal for prototyping and for building light-weight web apps, but should not be used for large reading and assembly workflows.

INDRA Dockers

There are currently two Dockerfiles that build INDRA and its dependencies. They are available in the following repositories:

indra's People

Contributors

adarshp avatar bgyori avatar cthoyt avatar djmilstein avatar jmuhlich avatar johnbachman avatar kkaris avatar lithicchloroplast avatar pagreene avatar pvtodorov avatar smkartik avatar steppi avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.