nrnb / GoogleSummerOfCode

Main documentation site for NRNB GSoC project ideas and resources
114 stars 38 forks source link

Develop a Web Application for the EnrichmentMap Workflow #89

Closed cannin closed 4 years ago

cannin commented 7 years ago

Background

Enrichment analyses allow biologists to analyze their results by understanding whether a group of genes involved in a process (e.g. metabolism) are strongly represented in their results. Often many hundreds of these processes are tested. These proceses can be related (e.g. cell cycle upregulation, cell cycle downregulation), and it can be helpful to group/cluster these processes. The Bader Lab has recently produced a workflow for running this type of enrichment analysis, called EnrichmentMap.

The complete workflow involves multiple steps that are carried out by different tools:

Below is an example output:

EnrichmentMap

A tutorial for R was written as part of a previous GSOC project:

https://github.com/jooolia/gsoc_Rcy3_vignettes/blob/master/recreating_enrichment_map_vignette_part2.Rmd

The tutorial makes use of the cyREST REST API to interact with the desktop Cytoscape.

Goal

The goal of this project is to produce a prototype web application that allows biologist to use a website to run the workflow described above without the need to directly use Cytoscape Desktop or R. After a user inputs their data, the application should make a call to R using an API; for this the R components need to be wrapped into an API using OpenCPU R package. The parts of the workflow that are run in Cytoscape desktop will continue to be run in Cytoscape, but with Cytoscape running within Docker containers. Lastly, rather than returning a static image, the goal of the project would be to show the results in an interactive visualization with cytoscape.js.

Description

  1. Get the workflow working locally.
  2. Get the workflow working using Cytoscape in Docker
  3. Make a REST API for the R components using OpenCPU
  4. Make web application
  5. Export results from Cytoscape Desktop as a cytoscape.js JSON file and visualize within the application

Skills

Javascript (React preferable), REST APIs, R (would be helpful)

Difficulty level 2

This project makes use of a pre-existing

Public Repository

EnrichmentMapApp

Potential mentors

Augustin Luna (aluna@jimmy.harvard.edu)

References

bhaveshsunny commented 7 years ago

Hi , I am a WebDeveloper and I am interested in this project. Could you guys just point me in the right direction?

shubhamkmr47 commented 7 years ago

Hi I am Shubham Kumar pursuing my Btech in Computer Science and MS by Research in Computational Natural Sciences at International Institute of Information Technology, Hyderabad, India. I have hands on experience in the technologies like Javascript, OpenCPU(R), cytoscape, REST api. I am very much interested in this project.

I'm my previous year(2016) GSOC project I have developed a web-based application to perform various statistical computations in an interactive and graphical manner. The tool utilises R based server to enable interactive statistical analyses such as descriptive statistics, graphing, clustering, classification etc. Here's link to my gsoc project: https://github.com/HelikarLab/StatisticalPlatform

I could share my resume so that you could know more about my work experiences. I believe that I have adequate technological and conceptual knowledge which is required for the project. I would like to start actively contributing and so I would be grateful if I could get a few pointers regarding how to get started with the code-base and the reference documents. I would be thankful if someone could guide me towards a moderate/beginner level bug in this regard so that I could first have some idea about how things work and get started.

Thank you

cannin commented 7 years ago

Thank you for your interest. I have built a very rough prototype of the application that I envision for the project.

Demo

The app currently is hosted here:

http://sanderlab.org/shinydebug/

Though it, soon, might be moved to:

http://sanderlab.org/emdemo/

You'll quickly notice some components are not functional. Below is a screenshot of the demo was supposed to look like.

screen shot 2017-02-23 at 11 59 22 am

Code

The prototype code is here:

https://github.com/cannin/enrichmentmap-demo

The prototype was developed using the Shiny, R web framework. This was done out of convenience. The goal of the project is to use the technologies outlined on this template project:

https://github.com/maxkfranz/slush-js

Plus cytoscape.js for the network views and the R-based analysis code needs to be wrapped in an OpenCPU API. Lastly, the entire application needs to be wrapped in a Docker container. NOTE: You might need Redux (or easier, MobX) to handle state.

Next Steps

As far as what could be done as starting points:

shubhamkmr47 commented 7 years ago

Hi cannin I have been trying to build the project. I have cloned the enrichmentmap-demo repository. But I am facing trouble running it. I am getting some error. Could you help me with that

Error response from daemon: no such id: emdemo FATA[0000] Error: failed to remove one or more containers

cannin commented 7 years ago

@shubhamkmr47 I updated the README on the repo to help, but make sure you understand the Docker commands by reading other documentation/tutorials

bhaveshsunny commented 7 years ago

I have the shiny server up and running. Just started reading the shiny docs. What do I do next. Here's a screen shot screenshot from 2017-03-05 16-12-23

shubhamkmr47 commented 7 years ago

I have started the application. Some of the features weren't working like you mentioned in the description. I am trying to fix them just to get started with the flow. @bhaveshsunny you can open the application on localhost:3838/emdemo.

bhaveshsunny commented 7 years ago

@shubhamkmr47 Thanks.

cannin commented 7 years ago

Do not spend to much time debugging/fixing my prototype. Shiny should not be used for GSOC; see Next Steps above for ideas, if want to try something. It is better to showcase a familiarity with frontend development (slush-js) and its connection to OpenCPU even if for demonstration the sent from OpenCPU is hard-coded (mocked up).

shubhamkmr47 commented 7 years ago

@cannin I have made demo application using that uses OpenCPU. It takes input a csv file and the data could be parsed to make plots. For know I have manipulated data to make scatter plot, bar plots, line plot. For now, to visualise them I used D3.js. Also, I made a dendogram for trial purpose. I have attached the image of scatter plot.

Could you guide me further with my approach?

Also, I have exams this week so I wouldn't be able to spend much time on it. Please excuse me for this.

opencpu

shubhamkmr47 commented 7 years ago

Hi @cannin I wish to share my draft proposal with you. It would contain my approach to the problem. Where can I share it? Thanks.

cannin commented 7 years ago

A link by email to a Google Doc where I can at least Suggest (not just View Only).

kash1102 commented 7 years ago

Hello, I am Kashish Punjani 4th year B.tech Science and MS by Research in Computational Natural Sciences. I wanted to share my approach for this project. All the inputs would be appreciated. Thanks https://docs.google.com/document/d/181EkWUaN-Za_y3O1myu9RYSnS5wjkWNQgQqzhyVOUtM/edit?usp=sharing