nrnb / GoogleSummerOfCode

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

Implementation of web services versions of clusterMaker clustering algorithms #135

Closed scootermorris closed 3 years ago

scootermorris commented 5 years ago

Background

clusterMaker2 is one of the most popular apps for Cytoscape. It provides a large number of attribute and network clustering algorithms that may be visualized in Cytoscape, including hierarchical clustering, HOPACH, K-Means, K-Medoid, MCL, Affinity Propagation, TransCluster, etc. It also provides various dimensionality reduction algorithms such as tSNE, PCA, etc. All of these algorithms are implemented in Java and run on the desktop, which means they are limited by the memory footprint of the desktop environment.

Goal

The goal of this project is to implement a framework in clusterMaker that will allow it to utilize server-side implementations of these algorithms, and provide at least one attribute clusterer (e.g. hierarchical or PAM), one network clusterer (e.g. MCL) and one dimensionality reduction technique). The server-side implementations could also be used by other applications in the Cytoscape ecosystem. We have recently implemented a couple of server-side algorithms that can be used as examples, but they have not (yet) been tied into clusterMaker.

Difficulty Level 2

There are capabilities already available within Cytoscape to communicate with tasks running on a server. It should be moderately easy to hook up clusterMaker to utilize these.

Skills

Java (essential) REST, Python, R, web services (nice to have)

Public Repository

https://github.com/RBVI/clusterMaker2

Potential Mentors

Scooter Morris

Contact

Scooter Morris

soccerdroid commented 5 years ago

Hello, I am a CS undergraduate student from Ecuador. I am interested in the project. Where can I see the current implementation of Cytoscape communication with tasks from server-side? clusterMaker will communicate directly with the server or through Cytoscape?

scootermorris commented 5 years ago

Sorry to take so long to get back to you. The source code for clusterMaker2 is at https://github.com/RBVI/clusterMaker2. The Jobs API information is at: http://code.cytoscape.org/jenkins/job/cytoscape-3-javadoc/ws/swing-app-api/target/site/apidocs/org/cytoscape/jobs/package-summary.html

-- scooter

tarang98 commented 4 years ago

Hi, I'm an undergraduate CS student at UBC, Canada and I'm quite interested in this project. It seems like the Jobs API link above is broken. Also where could I find the code for the server-side implementations of the clustering algorithms?

scootermorris commented 4 years ago

Hi Tarang,    Each cluster algorithm will probably have it's own implementation somewhere.  For now, you can look at the clusterMaker2 src in github (https://github.com/RBVI/clusterMaker2) but there are probably much more performant implementations we can use if we're not bound to implementing things in Java.  The thrust of this project is to develop a server to wrap these clustering algorithms and hook that into clusterMaker2.  I've got a prototype I've put together for another project that I can share with you that wraps some of the algorithms in scanpy.  Here is a link to the Jobs API: http://code.cytoscape.org/javadoc/SNAPSHOT/org/cytoscape/jobs/package-frame.html.

    The proposals are due very, very soon, so you'll need to put in a lot of work between now and the end of the month in order to put together a reasonable proposal. It should include details about the time schedule, the algorithms you intend to wrap (I can suggest a couple to start with), and some evidence that you've started the ramp up.  I would suggest a good start would be to clone the clusterMaker2 repository and make sure you can build it and understand the code organization.

-- scooter

On 3/26/20 12:42 AM, Tarang Mahapatra wrote:

Hi, I'm an undergraduate CS student at UBC, Canada and I'm quite interested in this project. It seems like the Jobs API link above is broken. Also where could I find the code for the server-side implementations of the clustering algorithms?

— You are receiving this because you were assigned. Reply to this email directly, view it on GitHub https://github.com/nrnb/GoogleSummerOfCode/issues/135#issuecomment-604278142, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAXTJ6EFXAISK47MK5FC27LRJMBO7ANCNFSM4G7WRGOA.

tarang98 commented 4 years ago

Hi Scooter Thank you very much for the reply. I will be completing the above steps and then completing the proposal.