Graph theory (a.k.a. network) library for analysis and visualisation
You can find the documentation and downloads on the project website.
If you're looking to get an old version of the library, you can build off the associated tag or you can browse the list of old builds. We very strongly recommend you use the latest version. If you run into a bug on the latest version, report it on the issue tracker. We'll try to fix the bug as soon as possible, and we'll give you a snapshot build that includes the fix for you to use until the next official bugfix release.
Cytoscape.js is an open source project, and anyone interested is encouraged to contribute to Cytoscape.js. We gladly accept pull requests. If you are interested in regular contributions to Cytoscape.js, then we can arrange granting you permission to the repository by [contacting us](mailto:firstname.lastname@example.org?subject=Granting permission to Cytoscape.js repository).
If your pull request is a bugfix, please make changes to the master branch. Otherwise, please make changes to the next version's branch (i.e. unstable).
The list of all code contributions to Cytoscape.js can be found in the Contributors section on GitHub.
CoSE is a layout in Cytoscape.js. It's one of the best force-directed layouts in Cytoscape.js in its own right, and it's excellent at arranging compound graphs. CoSE was implemented by Gerardo Huck and based on an article, "A layout algorithm for undirected compound graphs".
Arbor is used in one of Cytoscape.js' included layouts. We made some modifications to the library, written by Samizdat Drafting Co., so that it would work with multiple instances of Cytoscape.js and that it would work on lesser browsers, like IE. Information about this library can be found at the Arbor website and on GitHub where the original code was forked.
Note: Cytoscape.js does not include any of these libraries directly but allows use of them as layouts if they are included in your app.
When adding source (.js) files to the repository, update the list of JS files in
gulpfile.js. You can update the references to these JS files in the tests and debug page et cetera with
gulp debugrefs: Update the JS files referenced in the debug page (
gulp testrefs: Update the JS files referenced in the test page (
gulp testlist: Update the JS test files referenced in the test page (
Or you can do them together via
gulp. Of course,
npm install before using
gulp in the console. The main targets are:
build: build the library
zip: build the release ZIP
clean: clean the
dist: update the distribution JS for npm, bower, etc.
refs: update all refs
testrefs: update JS lib file refs in the tests page
testlist: update list of test JS files in tests page
debugrefs: update JS lib file refs in debug page
test: run the Mocha unit tests
lint: lint the JS sources via jshint
watch: update JS refs in HTML files (debug page, test page) automatically when JS files are added or deleted
docs: build the documentation template
docsdemoshots: get snapshots of demos referenced in the docs (requires PhantomJS, e.g.
brew update && brew install phantomjs)
sniper: runs a BioJS sniper server that hosts demos
docsmin: build the documentation template with all resources minified
docspub: build the documentation for publishing (ZIPs, JS refs, etc.)
docspush: push the built documentation to js.cytoscape.org
unstabledocspush: push the built documentation to js.cytoscape.org/unstable
VERSIONenvironment variable, e.g.
VERSIONis picked up by gulp:
gulp pub, and then...
gh-pagesbranch and push (e.g.
Mocha tests are found in the test directory. The tests can be run in the browser or they can be run via Node.js (
Funding for Cytoscape.js and Cytoscape is provided by NRNB (U.S. National Institutes of Health, National Center for Research Resources grant numbers P41 RR031228 and GM103504) and by NIH grants 2R01GM070743 and 1U41HG006623. The following organizations help develop Cytoscape: