@jbrowse/plugin-config
Version:
JBrowse 2 config utilities
42 lines (41 loc) • 1.77 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const BaseAdapter_1 = require("@jbrowse/core/data_adapters/BaseAdapter");
const io_1 = require("@jbrowse/core/util/io");
class NcbiSequenceReportAliasAdapter extends BaseAdapter_1.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 (0, io_1.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);
}
}
exports.default = NcbiSequenceReportAliasAdapter;