nrnb / GoogleSummerOfCode

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

Cytoscape layout plugin to support Cytoscape.js layouts #228

Closed hasanbalci closed 5 months ago

hasanbalci commented 8 months ago

Background

Cytoscape [1] is an open source software platform for visualizing complex networks and integrating these with any type of attribute data. It includes many automatic layout algorithms, for organizing the network visually such as hierarchical, circular, force directed and CoSE (Compound Spring Embedder) etc. along with some yFiles layout plugins.

Cytoscape.js [2], the sister project of Cytoscape, is a graph drawing library written in pure JavaScript. It also supports various graph layout algorithms in its core and as extensions. Some of these layout algorithms support features that are not available in the layouts supported by Cytoscape such as fCoSE (faster and improved version of CoSE algorithm), CoLa (Constraint Layout), CiSE (Circular Spring Embedder) etc.

SyBLaRS (Systems Biology Layout & Rendering Service) [3] is a web service to lay out graphs in SBGNML, SBML, GraphML and Cytoscape.js JSON formats. It currently supports most of the Cytoscape.js layouts.

[1] M. Franz et al. "Cytoscape. js 2023 update: a graph theory library for visualization and analysis.", Bioinformatics 39.1, btad031, 2023. [2] P. Shannon et al. "Cytoscape: a software environment for integrated models of biomolecular interaction networks." Genome research 13.11, pp. 2498-2504, 2003. [3] H. Balci et al. "SyBLaRS: A web service for laying out, rendering and mining biological maps in SBGN, SBML and more." PLOS Computational Biology 18.11, e1010635, 2022.

Goal

The goal of this project is to implement a Cytoscape layout plugin to extend its layout capabilities by supporting Cytoscape.js layouts.. This plugin will have an interface that will allow user to set layout and its options to be applied. After user specified the layout type and its options, the plugin will basically:

Difficulty Level: Medium

Size and Length of Project

Skills

Essential skills: Java, Cytoscape, Cytoscape.js Nice to have skills: web service, JavaScript, Node.js

Public Repository

Cytoscape SyBLaRS

Potential Mentors

Hasan Balci Ugur Dogrusoz Martina Summer-Kutmon

tushar-c23 commented 7 months ago

Hi, @hasanbalci @ugurdogrusoz @mkutmon I am Tushar Choudhary a Computer Science Engineering Junior at Jawaharlal Nehru University, New Delhi, India. I am well versed with Java and have production level experience with working with Java which i used extensively during my last internship as a Software Engineering Intern. I am also well versed with web services, javascript and node js as a Full Stack Developer and have worked on multiple projects using the same. I have strong knowledge of computer science fundamentals and great problem solving skills. I have started familiarizing myself with Cytoscape and I am very positive that I'll learn it in a short time duration, the knowledge of which i would like to apply towards this project and contribute to your esteemed organisation. I would really love to receive your input regarding the same and any suggestions regarding how i should move ahead to work on this project.

hasanbalci commented 7 months ago

Hi @tushar-c23, thanks for your interest to the project. In addition to the project description, the following information may be useful to you and other interested candidates:

Getting to know Cytoscape and its plugin environment would be a good start for this project. It would be good to examine how the current layouts and layout plugins in Cytoscape work and how the options are set. There is also a detailed guideline on how to develop a Cytoscape app here: https://github.com/cytoscape/cytoscape/wiki//Cytoscape-App-Ladder

Additionally, examining the documentation and source code of SyBLaRS will be useful to learn the details of the service and how to use it.

tushar-c23 commented 7 months ago

Thank You for your response @hasanbalci , as you suggested, i've gone through the documentation and code of SyBLaRS. I've successfully tested it by running it locally. Currently I'm in the process of learning more about Cytoscape using the resource provided by you.

I have an additional question, what would be the structure of the plugin to be made and if there is some previous work already done in this regard which i can refer to or are we going to start from scratch?

tushar-c23 commented 7 months ago

Hi @hasanbalci , I've familiarised myself with Cytoscape using the resource you provided and also Cytoscape.js using the linked documentation. I have inferred a fair understanding of what cytoscape does and how to use its functionalities. Additionally i've also gone through the codebase of SyBLaRS and i believe that i have a pretty good understanding of the same.

I would like to ask you how should i proceed further, i believe that i am supposed to build an app using Cytoscape.js, kindly correct me if i am wrong and using that app we are supposed to be generating the required JSON file which will further be passed into SyBLaRS via a post request (I have verified the usage using samples in the codebase). Kindly point me towards the right direction so that i can start my work further towards building a robust solution to this project idea.

hasanbalci commented 6 months ago

The contributor application period is March 18 – April 2. Here are some useful links:

GSoC contributor guide NRNB project proposal template Eligibility requirements Full program timeline

khanspers commented 5 months ago

This is an active GSoC 2024 project. Closing this project idea as it is no longer available to other contributors.