Skip to content

Parsing and writing SBGN-ML files in javascript

License

Notifications You must be signed in to change notification settings

sbgn/libsbgn.js

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

libsbgn.js

npm Build Status

Documentation under construction.

API doc is located here. More detailed documentation can be found in the wiki.

1. Installation

npm install libsbgn.js

Run test:

npm test

Generate API doc:

npm run doc

2. Quick example

var libsbgn = require('libsbgn.js');

var sbgn = new libsbgn.Sbgn({xmlns: 'http://sbgn.org/libsbgn/0.3'});

var map = new libsbgn.Map({id: 'mymap', language: 'process description'});
sbgn.addMap(map);

var glyph1 = new libsbgn.Glyph({id: 'glyph1', class_: 'macromolecule'});
glyph1.setLabel(new libsbgn.Label({text: 'entity A'}));
glyph1.setBbox(new libsbgn.Bbox({x: 0, y: 0, w:10, h:10}));
map.addGlyph(glyph1);

var glyph2 = new libsbgn.Glyph({id: 'glyph2', class_: 'macromolecule'});
glyph2.setLabel(new libsbgn.Label({text: 'entity B'}));
glyph2.setBbox(new libsbgn.Bbox({x: 20, y: 0, w:10, h:10}));
map.addGlyph(glyph2);

var processGlyph = new libsbgn.Glyph({id: 'process1', class_: 'process'});
processGlyph.setBbox(new libsbgn.Bbox({x: 10, y: 0, w:10, h:10}));
map.addGlyph(processGlyph);

var arc1 = new libsbgn.Arc({id:'arc1', class_:'consumption',
	source:'glyph1', target:'process1'});
arc1.setStart(new libsbgn.Start({x:0, y:0}));
arc1.setEnd(new libsbgn.End({x:10, y:0}));
map.addArc(arc1);

var arc2 = new libsbgn.Arc({id:'arc2', class_:'production',
	source:'process1', target:'glyph2'});
arc2.setStart(new libsbgn.Start({x:10, y:0}));
arc2.setEnd(new libsbgn.End({x:20, y:0}));
map.addArc(arc2);

var xmlString = sbgn.toXML();

xmlString contains the serialized raw XML, without any newline or indentation. A pretty version of xmlString would be:

<sbgn xmlns="http://sbgn.org/libsbgn/0.3">
	<map id="mymap" language="process description">
		<glyph id="glyph1" class="macromolecule">
			<label text="entity A"/>
			<bbox x="0" y="0" w="10" h="10"/>
		</glyph>
		<glyph id="glyph2" class="macromolecule">
			<label text="entity B"/>
			<bbox x="20" y="0" w="10" h="10"/>
		</glyph>
		<glyph id="process1" class="process">
			<bbox x="10" y="0" w="10" h="10"/>
		</glyph>

		<arc id="arc1" class="consumption" source="glyph1" target="process1">
			<start x="0" y="0"/>
			<end x="10" y="0"/>
		</arc>
		<arc id="arc2" class="production" source="process1" target="glyph2">
			<start x="10" y="0"/>
			<end x="20" y="0"/>
		</arc>
	</map>
</sbgn>

3.Schematron Validation Example

Please place templatelibsbgn.xslt file your project structure

var libsbgn = require('libsbgn.js');

var fs = require('file-system');

var file=fs.readFileSync('path-of-validated-file', 'utf8');

var errors = libsbgn.Sbgn.doValidation(file);