Cytoscape.js | Toronto Open Science Code Sprint

Join us in Toronto this March at our first ever Mozilla Toronto Open Science Code Sprint on Sat/Sun March 07-08 2015. At this 2-day event we will be bringing together researchers working on open science projects with developers, designers and other scientists from the community to collaborate on tools helping further science on the web. Every day this week, we’ll feature a guest post on one of the projects we’ll be sprinting on: Contributorship Badges, Cytoscape.js, Matplotdash, Pathogens & Disease Immunity, WormBase.

Today’s guest post is from Max Franz, lead developer of Cytoscape.js. Don’t forget to register to collaborate with us on open science!


Cytoscape.js is a library written purely in JS for graph theory. It covers both the typical drawing and user interaction use case as found in apps and also the lower level, algorithmic use case for analysing graph data. Because Cytoscape.js focuses solely on graphs, the developer’s code is much more terse and readable as compared to if more generic visualisation libraries were used; and it means that the developer does not have to re-invent the wheel with regards to well established graph theory algorithms and traversal strategies.

My name is Max Franz, and I am a Software Engineer. I have designed and built Cytoscape.js, and I have also worked with many collaborators to improve and add to Cytoscape.js. This project is special to me, because graph theory has such diverse applications — such as how Google’s search works, social network analysis, circuit analysis, decision making (i.e. by game theory), biological data analysis, and so on — and especially because Euler, the father of graph theory, is one of my heroes.

To give a sense of the power and flexibility of Cytoscape.js, it would be relatively straightforward to create an app that primarily uses Cytoscape.js to spider the web, organise that spidered index via Google’s PageRank algorithm, and build a search user interface that is not only textual but also visual. In essence, you could create your own Google using Cytoscape.js.

Cytoscape.js is used in a number of research areas, especially biology — for things like pathways, gene-gene interactions, and the like. However, the scope of Cytoscape.js is wide enough such that the varied developers who use it tend to contribute back to it, thereby benefiting the research community where it was founded even more than if its scope were more specialised.

In terms of this opportunity for collaboration, generously hosted by Mozilla in Toronto, there are several options: Features may be added directly to the library itself in a modular manner via extensions. Extensions may also be used to create re-usable user interface components on top of the library. For the even more ambitious or creatively inclined, a project that uses Cytoscape.js could be created at the event. In any case, we would love to work with anyone interested — even if you would just like to give your opinions and feedback.

This event presents an excellent opportunity for anyone interested in coding, user interface design, or biology to help make Cytoscape.js better for you, the users. All those involved in Cytoscape.js appreciate your feedback and contributions. You can get in touch with us though the issue tracker on Github regarding bugs or feature requests, the main Github repository for code contributions, Stackoverflow for your questions, and you can even contact me directly if you wish.

Thank you for your time, and I hope to see you at Mozilla’s soon upcoming event.