/origenes

DNA sequence manipulation tools with node.js

Primary LanguageJavaScriptMIT LicenseMIT

#Origenes Nucleotide sequences manipulation tools.

Getting Started

Install the module with: npm install origenes

var Sequence = require('origenes').Sequence;

// Create some sequence instances

	var simple_seq = new Sequence('ACTG');
	/*
		{ SEQ: 'ACTG', 
		  LEN: 4,
		  TYPE: 'DNA' }
	 */

	var oligonucleotide = new Sequence("GTTGACCGTAGCGAGTCCG");
	/*
		{ SEQ: 'GTTGACCGTAGCGAGTCCG',
		  LEN: 19,
		  TYPE: 'DNA',
		  TM: 62,
		  TA: 57 }
	 */

	var rna = new Sequence("AUGGAACUGACUGAAGAUUGA");
	/*
		{ SEQ: 'AUGGAACUGACUGAAGAUUGA', 
		  LEN: 21,
		  TYPE: 'RNA' }
	 */
 
	var degenerate_seq = new Sequence('AN-RCTYGK');
	/*
		{ SEQ: 'AN-RCTYGK',
		  LEN: 9,
		  TYPE: 'DNA' }
	 */


// Sequence instances are immutable, their properties are constants

	simple_seq.SEQ = "ATATATATATA";
	simple_seq.aNewProperty = "something":
	simple_seq; 
	/*
		{ SEQ: 'ACTG', 
		  LEN: 4,
		  TYPE: 'DNA' }
	 */


// Melting and annealing temperatures are calculated for DNA oligonucleotides [18..25nt]

	oligonucleotide.TM; // 62  as 4*(G+C) + 2*(A+T) in °C
	oligonucleotide.TA; // 57  as (TM - 5) in °C


// Tm, Ta are not defined for sequences shorter than 18nt or longer than 25nt

	simple_seq.TM; // undefined
	simple_seq.TA; // undefined


// Sequence instance methods return new Sequence instances

	simple_seq.transcribe();
	/*
		{ SEQ: 'ACUG', 
		  LEN: 4,
		  TYPE: 'RNA' }
	 */

	rna.transcribe(); 
	/*
		'Error: can't transcribe RNA.' 
	 */

	simple_seq.reverse();
	/*
		{ SEQ: 'GTCA', 
		  LEN: 4,
		  TYPE: 'DNA' }
	 */

	simple_seq.complement(); 
	/*
		{ SEQ: 'TGAC', 
		  LEN: 4,
		  TYPE: 'DNA' }
	 */

	degenerate_seq.complement(); 
	/* 
		{ SEQ: 'TN-YGARCN',
		  LEN: 9,
		  TYPE: 'DNA' }
	*/ 

	rna.complement(); 
	/*
		{ SEQ: 'UACCUUGACUGACUUCUAACU', 
		  LEN: 21,
		  TYPE: 'RNA' }
	 */


// Instance methods are chainable

	simple_seq.reverse().complement(); 
	/*
		{ SEQ: 'CAGT', 
		  LEN: 4,
		  TYPE: 'DNA' }
	 */

	simple_seq.SEQ == simple_seq.reverse().reverse().SEQ; // true

	simple_seq.reverse().complement().SEQ == simple_seq.complement().reverse().SEQ; // true


// Translate a RNA Sequence object into a new Sequence instance of type PROT
	
	rna.translate();
	/*
		{ SEQ: 'MELTED*',
		  LEN: 7,
		  TYPE: 'PROT' }
	 */

// translate a DNA Sequence object into new Sequence instance of type PROT
// with automatic/under the hood transcription()

	long_oligo.translate();
	/*
		{ SEQ: 'VDRSES',
		  LEN: 6,
		  TYPE: 'PROT' }
	 */
	 

Contributing

In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality.

Lint and test your code using Grunt.

License

Copyright (c) 2013 tripitakit
Licensed under the MIT license.