import CSVParse from './csv-parse.mjs'; let stripChevron = true; let threshold = 0; let ignoreLines = 0; let sequenceNames = []; function process(row) { let name = row[0]; if (name === undefined || /^\s*$/.test(name)) { return; } if (ignoreLines > 0) { ignoreLines--; return; } if (stripChevron && name[0] === '>') { name = name.substring(1); } sequenceNames.push(name); let i = 0; for (const col of row) { const val = Number(col); if (isNaN(val)) { continue; } if (val >= threshold && name !== sequenceNames[i]) { postMessage([name, sequenceNames[i], val]); } i++; } } onmessage = e => { console.debug('got message', e); console.debug('reading file'); console.debug('e.data', e.data); stripChevron = e.data.stripChevron; threshold = e.data.threshold; const { ignoreHeader, file } = e.data; const reader = new FileReader(); reader.onload = e => { const parser = new CSVParse(); for (const c of e.target.result) { parser.push(c); } if (ignoreHeader) { ignoreLines = 1; } parser.results.forEach(process); } reader.progress = e => { console.debug('reader.progress', e); } reader.readAsText(file); }