nrnb / GoogleSummerOfCode

Main documentation site for NRNB GSoC project ideas and resources
116 stars 39 forks source link

Create cloud-based graph/network layout algorithms for the new Cytoscape Cyberinfrastructure #49

Closed bdemchak closed 5 years ago

bdemchak commented 8 years ago

Background

Cytoscape is a highly popular open source bioinformatics software platform for visualizing, analyzing, and publishing graphs or networks representing molecular interactions, gene expression, other biological data. As a desktop platform, Cytoscape is one of the most successful open source projects in biology. However, as bioinformatic computation becomes increasingly web- and cloud-based, network biology web applications can benefit from the availability of certain Cytoscape functionality as services in the cloud.

The new Cytoscape Cyberinfrastructure (CI) addresses this by providing a means for web-based and desktop applications to call cloud-resident Cytoscape-oriented services. A top priority is to produce services that can be leveraged on a large scale to calculate and present biological networks, and make them accessible both from Cytoscape and Python/R (via Jupyter notebook). Examples include merging two networks, performing graph calculations on networks, and laying graphs out in a biologically informative manner. Examples of networks laid out with the Cytoscape desktop can be found at http://www.cytoscape.org/screenshots.html.

Skills acquired during this project will be useful for a future in bioinformatics, computer science or social networking.

Goal

Create, port, or call graph layout algorithms written in Java, C++, Python, etc. as REST services published as cloud-based services accessible via the Cytoscape Cyberinfrastructure.

Technologies

A number of merge, graph analysis, and layout algorithms are already coded in Java as part of the Cytoscape desktop product. Other algorithms are coded as Python and C++ libraries. Creating REST services around them involves interfacing them to a REST framework and then creating Python-based testing platforms. Testers will acquire sample networks from either Cytoscape or the new NDEx graph database via REST calls, and will return the results to the original source (either Cytoscape or NDEx).

For extra credit, make significantly faster algorithms by writing them in parallelizable languages (e.g., Clojure, Scheme, or Java 9), compiled languages (e.g., C++) or make explicit use of GPUs (e.g., OpenCL).

Difficulty level: 2

Demonstrated experience Python and Java coding is required. Familiarity with networks/graphs and graph algorithms (e.g., merge, analysis and layout) is a plus.

Potential mentors

Barry Demchak and Keiichiro Ono

Contact

Barry Demchak (idekerlab.bdemchak@gmail.com)

bdemchak commented 6 years ago

Nope ... this was supposed to remain open. I spruced it up, and would like volunteers.

Xinghom commented 6 years ago

Hi @bdemchak,

Here is a candidate! I am Xinghom, a master student, having a good graph algorithms' understanding. Also, I am familiar with Python, Java and C++. Recently, I'm learning parallel processing. I will send my details to you. Hoping I can do my contributions to this!

khanspers commented 5 years ago

Closing for GSoC 2019