nrnb / GoogleSummerOfCode

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

Additional Clustering (Community Detection) Algorithms for Cytoscape #179

Closed scootermorris closed 3 years ago

scootermorris commented 3 years ago

Background

clusterMaker2 is one of the most downloaded Cytoscape 3 apps, with over 77,000 downloads. It provides a number of different clustering algorithms and visualizations, most of which are implemented in Java as part of the app. During last summer's GSoC, clusterMaker2 was enhanced with the addition of a REST service that could calculate clusters on a server. This technique was used to implement a variety of clustering algorithms available through the Python interface to igraph.

Goal

We would like to further extend both the number and type of clustering algorithms available to clusterMaker2 by adding new algorithms to the REST services. Currently, all of the server-side components are in Python, but other languages can be used by integrating with the falcon-based REST wrapper. Some example algorithms might be dimensionality reduction tools like UMAP or tSNE, clustering algorithms like Leiden or Louvain, or perhaps taking on multilevel clustering.

Difficulty Level X

This project offers a range of difficulties. At it's simplest, it involves taking an existing Python cluster implementation (e.g. Louvain or Leiden clustering from scanpy) and adding it to the REST service. At it's most complex, it involves wrapping an algorithm that returns different data, such as a multi-level clusterer or a dimensionality reduction tool, and developing the JSON structure used to return that value and integrating it into the Java App. Given the shorter period, I would rank this a difficulty level 1 or 2.

Skills

Essential skills: Python Nice to have skills: Familiarity with clustering algorithms (community detection, unsupervised learning, etc.), Cytoscape, Java

Public Repository

https://github.com/RBVI/clusterMaker2

Potential Mentors

Scooter Morris scooter@cgl.ucsf.edu

advaitb commented 3 years ago

@scootermorris I would be interested to contribute to this project as part of GSoC 2021. Do let me know what would be the best way to get myself initiated.

Debanitrkl commented 3 years ago

@scootermorris I have gone through the clusterMarker2 code and found it to be under the aegis of my skill set, being a biomedical major with minor in computer science, and having decent experience in python and data science, I would like to get started with this issue as part of my contribution to the organization. My resume: https://drive.google.com/file/d/1dwa88JioFNfMz0NyktF9DAqtgkF9SDw-/view?usp=drivesdk

Kartik-Khandelwal commented 3 years ago

@scootermorris I have prior experience with cluster algorithms, and have done some projects on it. This project lies under my interest and skill set. Hence, I would love to work on this as a part of GSoC 2021. Do let me know how to get started, till then I will have a look at the repository.

shaliniiit commented 3 years ago

@scootermorris I have gone through the code and the issue and feel like its a good fit for me having worked on similar projects in other universities like Penn State and CMU. I'd be happy to start working. Please look up my resume: https://drive.google.com/file/d/1pcqymg8_DTuCQTTV8cUyEfISpvD63Jlq/view?usp=sharing

Ascensiony commented 3 years ago

@scootermorris I have been working with Graph-Neural Networks for quite a while, where I encountered community detection algorithms like Louvain's Algo, Community Affiliation Graph Model(AGM), etc. It would be interesting to see how these algorithms work out. Currently, I am looking at Cytoscape's codebase.

Can you please provide steps on how to proceed further? Thank you🙂

khanspers commented 3 years ago

This is an active GSoC 2021 project. The issue will be closed for the duration of GSoC since it is no longer available to other students.