biojs-io-fasta
Version:
Parses FASTA files
55 lines (50 loc) • 1.43 kB
JavaScript
// Generated by CoffeeScript 1.9.0
var GenericReader, st;
GenericReader = require("biojs-io-parser");
st = require("msa-seqtools");
module.exports = {
parse: function(text) {
var currentSeq, keys, label, line, obj, seqs, _i, _len;
seqs = [];
if (!text || text.length === 0) {
return [];
}
if (Object.prototype.toString.call(text) !== '[object Array]') {
text = text.split("\n");
}
for (_i = 0, _len = text.length; _i < _len; _i++) {
line = text[_i];
if (line[0] === ">" || line[0] === ";") {
label = line.slice(1);
obj = st.getMeta(label);
label = obj.name;
currentSeq = new st.model("", label, seqs.length);
currentSeq.ids = obj.ids || {};
keys = Object.keys(currentSeq.ids);
if (keys.length > 0) {
currentSeq.id = currentSeq.ids[keys[0]];
}
currentSeq.details = obj.details || {};
seqs.push(currentSeq);
} else {
currentSeq.seq += line;
}
}
return seqs;
},
write: function(seqs, access) {
var seq, text, _i, _len;
text = "";
for (_i = 0, _len = seqs.length; _i < _len; _i++) {
seq = seqs[_i];
if (access != null) {
seq = access(seq);
}
text += ">" + seq.name + "\n";
text += (st.splitNChars(seq.seq, 80)).join("\n");
text += "\n";
}
return text;
}
};
GenericReader.mixin(this);