UNPKG

biojs-io-fasta

Version:
55 lines (50 loc) 1.43 kB
// 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);