INNER CODE UNIT · JavaScript
re_cigar
lh3/pangene · pangene.js:157
const re_cigar = /(\d+)([MIDSN])/g;
while ((m = re_cigar.exec(t[5])) != null) {
if (m[2] == 'M' || m[2] == 'D' || m[2] == 'N') ov += parseInt(m[1]);
if (m[2] == 'M' || m[2] == 'I' || m[2] == 'S') ow += parseInt(m[1]);
}
for (let j = 6; j < t.length; ++j)
if ((m = /^(SR:i):(\S+)/.exec(t[j])) != null) // TODO: parse other tags
rank = parseInt(m[2]);
}
this.arc.push({ v:v, w:w, ov:ov, ow:ow, rank:rank, ori:true });
//this.arc.push({ v:w^1, w:v^1, ov:ow, ow:ov, rank:rank, ori:false }); // TODO: add and dedup dual links
}
#parse_W(line) {
const t = line.split("\t");
if (t.length < 7) return;
const re_walk = /([><])([^\s><]+)/g;
let m, walk = { asm:t[1]+"#"+t[2], sample:t[1], hap:parseInt(t[2]), sname:t[3], st:-1, en:-1, v:[], lof:[] };
if (t[4] != "*") walk.st = parseInt(t[4]);