Code Monkey home page Code Monkey logo

biothings_explorer_web_old's Introduction

biothings_explorer_web

NOTE: This repo has been archived 2019-11-07

Project Website:

http://biothings.io/explorer/

Project Demo:

https://goo.gl/sx34T2

Project Description

RESTful APIs have been widely used to distribute biological data in a programmatic manner. And many popular biological APIs such as MyGene.info, MyVariant.info, Drugbank, Reactome, Wikipathways and Ensembl, all adopt JSON as their primary data format. These disparate API resources feature diverse types of biological entities, e.g. variants, genes, proteins, pathways, drugs, symptoms, and diseases. The integration of these API resources would greatly facilitate scientific domains such as translational medicine, where multiple types of biological entities are involved, and often from different resources.

To fulfill the task of integrating API resources, We have designed a workflow using a semantic approach. In this workflow, a JSON-LD context file, which provides Universal Resource Identifier(URI) mapping for each API input/output types, is created for individual API resource, enhancing their interoperability. Besides, API metadata are collected and organized, e.g. query syntax, input/output types, allowing API calls to be generated automatically. By utilizing this workflow, we are able to link different API resources through the input/output types which they shared in common. For example, MyGene.info (http://mygene.info) adopts Entrez Gene ID as its input type, which is also one of the output types for MyVariant.info (http://myvariant.info). Thus, data in these two APIs could be linked together through Entrez Gene ID.

Following this workflow, we have developed a Python package as well as a web visualization interface named ‘BioThings Explorer’ using Cytoscape.js. These tools empower users to explore the relationship between different biological entities through the vast amount of biological data provided by various API resources in a visually organized manner. For example, users could easily explore all biological pathways in which a rare Mendelian disease candidate gene is involved, and then find all genes as well as chemical compounds which could regulate these biological pathways (Ipython Notebook Demo: https://goo.gl/sx34T2), thus providing potential treatment options.

biothings_explorer_web_old's People

Contributors

andrewsu avatar kevinxin90 avatar newgene avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

biothings_explorer_web_old's Issues

from "Action Log" section, load links in new tab

currently, links in the "Action Log" box load in the current window. Because biothings explorer does not save state, the current session is lost when you return. Better to load the link in a new tab.

Escape forward slashes inside JSON response

MWE: http://biothings.io/explorer/api/v2/directinput2output?input_prefix=go&output_prefix=goDescription&input_value=0042535

Got json['data'][0]['output']['object']['id']:

"monocytes during acute inflammation and which is responsible for a diverse range of signaling events within cells, leading to necrosis or apoptosis."

Expecting:

"goDescription: Any process that activates or increases the frequency, rate or extent of the chemical reactions and pathways resulting in the formation of tumor necrosis factor, an inflammatory cytokine produced by macrophages/monocytes during acute inflammation and which is responsible for a diverse range of signaling events within cells, leading to necrosis or apoptosis. "

The part preceding the forward slash in front of "monocytes" is truncated.

Is it because of JSON-LD? Thanks!

Some Plotly Path between input and output fails to display

e.g. {'input': ncbigene, 'output': uniprot, max_no_api: 4}.
This path couldn't be displayed on the sankey plot.
But if we change the max_no_api to 3, it can be displayed.

Looks like an issue with the plotly side. But needs to be further confirmed.

Support multiple input parameters

e.g. humanbase API requires two input parameters -- tissue and gene.
In this case, if only one parameter is specified, the interface should pop out a window reminding the user to provide another parameter.

Integrated Databases Page

Set up crawler to fetch the databases and version (if they provide) used in those APIs, e.g. BioThings APIs and BioLink APIs, Pharos, DGIdb, etc.

BioLink: https://monarchinitiative.org/about/sources
MyGene: http://mygene.info/v3/metadata
MyChem: http://mychem.info/v1/metadata/
DGIdb: http://dgidb.org/api/v2/interaction_sources.json
Pharos: https://pharos.nih.gov/idg/help
EBI OLS: https://www.ebi.ac.uk/ols/api/ontologies?page=0&size=210
MyDisease: manually curate one
ChEMBL: https://www.ebi.ac.uk/chembl/faq#faq33
PubChem: https://pubchem.ncbi.nlm.nih.gov/sources

In the results tab, the checkboxes do not toggle edges in the network

2017-05-25_16-07-05

Given the state shown above, I would expect that unchecking the box for WP179 would remove the edge from my network. It does not however (and even adds another edge between the two nodes). Either the behavior should be changed so that unchecking the box removes it from the network, or the checkbox should be replaced by a simple "add to network" link/icon.

Export Graph function

  1. Add buttons on the cytoscape/plotly graph to enable users download those graph in PNG or jpg format
  2. Add buttons on the graph to enable users directly download the data, e.g. in triples.

Display Multi-edge results

  • web version
  1. all edges should be shown
  2. when clicking on one of the nodes or edges, the additional info should be displayed.
  • API
  1. Each path should be a list
  2. Each element in the list should represent an edge
  3. Need to find a way to populate this kind of structure

Export Python code

Add function to export Python code,
//COMMENT SHOWING HOW THE PATH IS GENERATED

  1. PATH = [....]
  2. import ...
  3. get_output(PATH, _INPUT, ...)
    //COMMENT SHOWING HOW TO DO ANALYSIS WITH THE OUTPUT

BioThings Explorer Should be able to handle APIs which couldn't be called

BioThings Explorer has the capability to display input/output information for each API endpoint.
We should categorize APIs into two separate categories:

  1. APIs which has metadata ready and can be called
  2. APIs which has metadata ready but can not be called, due to
    a) They doesn't return JSON format, e.g. SQL, SPARQL query endpoints
    b) They accepts multiple parameters (currently we handle one parameter only)
    c) The return format cannot be JSON-LD labeled, e.g. pharos

Those API still should be discoverable using BioThings Explorer, but when making actual API call chains, they should be excluded.

TODO:
Each API endpoints in the BioThings Explorer registry should have a field called tag, which categorize their functionality.

create tutorial

just a step-by-step guide that shows one reasonable use case...

Integrated Databases in BioThings Explorer

Set up crawler to fetch the databases and version (if they provide) used in those APIs, e.g. BioThings APIs and BioLink APIs, Pharos, DGIdb, etc.

BioLink: https://monarchinitiative.org/about/sources
MyGene: http://mygene.info/v3/metadata
MyChem: http://mychem.info/v1/metadata/
DGIdb: http://dgidb.org/api/v2/interaction_sources.json
Pharos: https://pharos.nih.gov/idg/help
EBI OLS: https://www.ebi.ac.uk/ols/api/ontologies?page=0&size=210
MyDisease: manually curate one
ChEMBL: https://www.ebi.ac.uk/chembl/faq#faq33
PubChem: https://pubchem.ncbi.nlm.nih.gov/sources

Add relation filter

Provide functions for users to filter the path based on relation(predicate) between input and output.
e.g. Drug, Protein may have multiple different relations, e.g. transport, enzyme, target, etc.
Users can select the path which specified drug -> targets -> Protein.

Should support output as JSON arrays

Internal function to convert JSON array to JSON object
By default, wrap the JSON array under 'data' field to form a JSON object.
Then create the JSON-LD context file based on the new JSON object.

User Defined Path

Add a function where user can define their own path.
This is to handle cases where there are duplicates in the paths,
e.g. gene -> pathway -> gene -> drug
Start with input,
-> Second option set include all APIs linked from that input
-> Third option set includes all outputs of the previously selected API
-> Repeat...

Allow grouping of nodes of the same type

This starts getting in to heavier UI development, so we should discuss the game plan before committing to implementing this ticket. But, imagine the scenario below:
2017-05-25_16-07-05

currently I can add all 14 of those WP pathways to the network, but they show up as separate nodes. Suppose I want to get all genes associated with any of those pathways. I would want to aggregate them into a single node. If I click that node, it should show me services that take that node type. If I click a service, then the explorer should execute 14 calls for each of those pathways (or even better, a single query that combines those 14 pathways).

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.