PathwayCommons / cytoscape-sbgn-stylesheet

View biological networks via Cytoscape.js and sbgn-ml
MIT License
60 stars 30 forks source link
bader biology cytoscape cytoscape-graph-json es6 graph graphs javascript javasript-library lab networks sbgn sbgn-renderer science svg uoft

cytoscape-sbgn-stylesheet

A Cytoscape.js package that provides SBGN specific glyph styles (demo)

Purpose

To render SBGN-PD(Systems Biology Graphical Notation) graphs -- a visual language for representing biological processes.

Installation

Install via npm

npm install cytoscape-sbgn-stylesheet

Usage

Initialize cytoscape.js and call this module as a stylesheet parameter

var cytoscape = require('cytoscape');
var sbgnStylesheet = require('cytoscape-sbgn-stylesheet');

var cy = cytoscape({
  container: container,
  style: sbgnStylesheet(cytoscape),
  // other arguments here
});

Requirements

Input needs to be formatted Cytoscape.js graph JSON.

The following graph JSON structure is required:

{
  nodes: [],  // array of nodes
  edges: []   // array of edges
}

Supported SBGN PD glyphs

Supported SBGN PD arcs

Unsupported SBGN PD glyphs

The following node JSON structure is required:

      "data": {
        "id": "glyph23",                   // id of the node
        "class": "simple chemical",        // class of the node (see classes section for a list of supported sbgn glyphs
        "label": "Ca2+",                   // label to be displayed on the node
        "parent": "glyph2",                // parent node id if any
        "clonemarker": false,              // whether the node has a clonemarker or not
        "stateVariables": [],              // an array of state variables
        "unitsOfInformation": [],          // an array of units of information
      }

The following edge JSON structure is required:

      "data": {
        "id": "glyph19-glyph5",            // id
        "class": "production",             // sbgn class
        "cardinality": 0,                  // cardinality
        "source": "glyph19",               // source node id
        "target": "glyph5",                // target node id
        "portSource": "glyph19",           // port of the source
        "portTarget": "glyph5"             // port of the target
      }

To get Cytoscape.js graph JSON, you need the following:

Style Incompatibilities

The following cytoscape.js style properties are used to render SBGN PD graphics. Overriding these entirely will produce unexpected behaviour:

Run targets

Testing

All files /test will be run by Mocha. You can npm test to run all tests, or you can run mocha -g specific-test-name (prerequisite: npm install -g mocha) to run specific tests.

Chai is included to make the tests easier to read and write.

Publishing a release

  1. Make sure the tests are passing: npm test
  2. Do a prod build: npm run build-prod
  3. Make sure the linting is passing: npm run lint
  4. Bump the version number with npm version, in accordance with semver. The version command in npm updates both package.json and git tags, but note that it uses a v prefix on the tags (e.g. v1.2.3).
    1. For a bug fix / patch release, run npm version patch.
    2. For a new feature release, run npm version minor.
    3. For a breaking API change, run npm version major.
    4. For a specific version number (e.g. 1.2.3), run npm version 1.2.3.
  5. Push the release: git push origin --tags
  6. Publish to npm: npm publish .