UNPKG

biojs-io-fasta

Version:
58 lines (54 loc) 1.49 kB
// Generated by CoffeeScript 1.9.0 var Fasta, extend, st; st = require("msa-seqtools"); extend = require("./extend"); module.exports = Fasta = { getMeta: st.getMeta, extend: function(metaParser) { var customFasta; customFasta = extend(Fasta); Fasta.getMeta = metaParser; return customFasta; }, parse: function(text) { var currentSeq, getMeta, id, 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"); } getMeta = Fasta.getMeta; for (_i = 0, _len = text.length; _i < _len; _i++) { line = text[_i]; if (line[0] === ">" || line[0] === ";") { label = line.slice(1); obj = getMeta(label); label = obj.name; id = obj.id || seqs.length; currentSeq = new st.model("", obj.name, id); currentSeq.ids = obj.ids || {}; 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; } };