#Origenes Nucleotide sequences manipulation tools.
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' }
*/
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.
Copyright (c) 2013 tripitakit
Licensed under the MIT license.