UNPKG

@jbrowse/plugin-config

Version:

JBrowse 2 config utilities

39 lines (38 loc) 1.63 kB
import { BaseAdapter } from '@jbrowse/core/data_adapters/BaseAdapter'; import { openLocation } from '@jbrowse/core/util/io'; export default class NcbiSequenceReportAliasAdapter extends BaseAdapter { async getRefNameAliases() { const loc = this.getConf('location'); if (loc.uri === '' || loc.uri === '/path/to/my/sequence_report.tsv') { return []; } const override = this.getConf('useNameOverride'); const results = await openLocation(loc, this.pluginManager).readFile('utf8'); const lines = results .split(/\n|\r\n|\r/) .filter(f => !!f.trim()) .map(row => row.split('\t')); const r = lines[0] || []; const genBankIdx = r.indexOf('GenBank seq accession'); const refSeqIdx = r.indexOf('RefSeq seq accession'); const ucscIdx = r.indexOf('UCSC style name'); const seqNameIdx = r.indexOf('Sequence name'); if (genBankIdx === -1 || refSeqIdx === -1 || ucscIdx === -1) { throw new Error('Header line must include "GenBank seq accession", "RefSeq seq accession", "UCSC style name", and "Sequence name"'); } return lines .slice(1) .filter(cols => !!cols[ucscIdx] || !!cols[seqNameIdx]) .map(cols => ({ refName: (cols[ucscIdx] || cols[seqNameIdx]), aliases: [ cols[genBankIdx], cols[refSeqIdx], cols[ucscIdx], cols[seqNameIdx], ].filter((f) => !!f), override, })) .filter(f => !!f.refName); } }