Code Monkey home page Code Monkey logo

ppi-query's Introduction

HELP REQUIRED

We have no more time to finish this plugin. Any help would be really appreciated. Feel free to contact us!


PPiMapBuilder

PPiMapBuilder is a Cytoscape 3 app for protein-protein interaction network generation and protein-protein interaction prediction via the Phylogenetic profiling method as described by:

Echeverría PC, Bernthaler A, Dupuis P, Mayer B, Picard D (2011) An interaction network predicted from public data as a discovery tool: application to the Hsp90 molecular chaperone machine. PLoS One 6: e26044.doi:10.1371/journal.pone.0026044.

PPiMapBuilder uses PSICQUIC services to retrieve interaction data, InParanoid 8 for protein orthology and UniProt for protein data.

This project was initiated by Pablo Echeverría from picardLab as a bio-informatic master student project.

To get more details about this Cytoscape 3 app, you can check the wiki.

PPiMapBuilder ScreenShot

Installation

From release

  1. Download the lastest PPiMapBuilder release
  2. Install PPiMapBuilder-X.X.jar
  • Within Cytoscape:
    • Go to Apps > App Manager
    • Click Install from file
    • Select the PPiMapBuilder jar file

OR

  • Manually:
    • Move the PPiMapBuilder jar file to <USER_DIRECTORY>/CytoscapeConfiguration/3/apps/installed/

From source code

  1. Clone this git repository or download source
  2. Run mvn install in the PPiMapBuilder folder
  3. Install ./target/PPiMapBuilder-X.X.jar
  • Within Cytoscape:
    • Go to Apps > App Manager
    • Click Install from file
    • Select the PPiMapBuilder jar file

OR

  • Manually:
    • Move the PPiMapBuilder jar file to <USER_DIRECTORY>/CytoscapeConfiguration/3/apps/installed/

Reference webservices used

UniProt PSICQUIC UniProt UniProt UniProt

ppi-query's People

Contributors

gcornut avatar juleffel avatar pidupuis avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

ppi-query's Issues

Fetch direct interactions for 1-n proteins and 1 organism

Depends on #4

Fetch interactions for network of interests

Implement the following methods.

  • Get query for one organism and one protein
get-query-by-taxon-and-prot [taxid protId] 
Same as above but with restriction on interactor identifiers
Input: 9606 "P04040"
Output: [:and [:taxidA 9606] [:taxIdB 9606] [:species 9606] [:or [:idA "P04040"] [:idB "P04040"]]]
  • Get queries for one taxon and multiple proteins
get-queries-by-taxon-and-prot-pool [taxId protPool limit]
A query should be less thatn 1000 characters so we have to split it into a list of queries.
The queries have the same taxid restrictions but different interactor identifier restrictions (in "or" section).
The following example aims to explain how to split but in this case we could have keep it in one query.
As an indicator, a query should stick to around 20 `and` blocks.
Input: 9606 ["P04040" "Q9D2V5"]
Output:
[[:and 
    [:taxidA 9606] 
    [:taxIdB 9606] 
    [:species 9606] 
    [:or 
        [:and [:idA "P04040"] [:idB "Q9D2V5"]]
        [:and [:idA "Q9D2V5"] [:idB "P04040"]]]]
[:and 
    [:taxidA 9606] 
    [:taxIdB 9606] 
    [:species 9606] 
    [:or 
        [:and [:idA "P04040"] [:idB "P04040"]]
        [:and [:idA "Q9D2V5"] [:idB "Q9D2V5"]]]]]
  • Format query in MIQL format

Update to-miql [query]

  • Fetch interactions by query

Update fetch-by-query [client query]

Import ppi-query in PMB

  • Import ppi-query as a maven module inside PMB
  • Test invoking ppi-query function from PMB
  • Define interface between ppi-query and PMB
    • Data interface for proteins, interactions, etc. (use Map? use Java interface?)
    • Program interface for processes (Java interface for fetching networks mostly)
  • Deeper integration
    • Integrated progress report from ppi-query to PMB

Better ortholog cache

For now the cache is in memory and grows indefinitely
TODO

  • Add cache persistance (to disk)
  • Flatten cache for easier management
    {:org {:prot :ortho-group}} => {[:org :prot] :ortho-group}
  • Set up caching strategy
  • Link memory cache, disk cache and inparanoid webservices all together

Pseudo-code:

(if in-memory-cache?
   (get-from-memory-cache)
   (save-in-memory-cache
     (if in-disk-cache?
        (get-from-disk-cache)
        (save-in-disk-cache
          (get-from-inparanoid-ws)))))

Proposed caching strategy:

  • LRU with size threshold (with clojure core.cache)
  • Write to memory and disk on new entry (or periodically write to disk?)

Persistence:

  • Use nippy for writting/reading clojure data structures in binary
  • Split the cache in organism pairs (like in PMB)

TODO cache loader:

  • Download OrthologXML by organism pairs
  • Parse & load to cache
  • Add approx loaded percent
  • Add progress monitoring interface

Add PSICQUIC registry client

  • Fetch registry xml
  • Parse to maps
  • Store & update memory cache
  • Fetch from PMB
  • disk cache? (like ortholog cache)

Fetch interaction for only 1 organism

Fetch interactions for interactome

Implement the following methods.

  • Get query by taxon
get-query-by-taxon [taxId]
Returns query filtering interaction for which the taxonomic ID of the two proteins and
 the species is the `taxId` parameter
Input: 9606
Output: [:and [:taxidA 9606] [:taxidB 9606] [:species 9606] ]
  • Format query in MIQL format
to-miql [query]
Returns the query in MIQL format
Example: [:and [:key1 "value"] [:or [:key2 "value2"] [:key3 "value3"]] ] returns "key1:value and (key2:value2 or key3:value3)"
  • Fetch interactions by query
fetch-by-query [client query]
Returns result of a query (handling pagination if needed)

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.