@jbrowse/plugin-config
Version:
JBrowse 2 config utilities
37 lines (36 loc) • 1.37 kB
JavaScript
import { BaseAdapter } from '@jbrowse/core/data_adapters/BaseAdapter';
import { openLocation } from '@jbrowse/core/util/io';
export default class RefNameAliasAdapter extends BaseAdapter {
async getRefNameAliases() {
const loc = this.getConf('location');
if (loc.uri === '' || loc.uri === '/path/to/my/aliases.txt') {
return [];
}
const results = await openLocation(loc, this.pluginManager).readFile('utf8');
const refColumn = this.getConf('refNameColumn');
const refColumnHeaderName = this.getConf('refNameColumnHeaderName');
const lines = results
.trim()
.split(/\n|\r\n|\r/)
.filter(f => !!f);
const header = lines.filter(f => f.startsWith('#'));
const headerCol = refColumnHeaderName && header.length
? header
.at(-1)
.slice(1)
.split('\t')
.map(t => t.trim())
.indexOf(refColumnHeaderName)
: refColumn;
return lines
.filter(f => !f.startsWith('#'))
.map(row => {
const aliases = row.split('\t');
const refName = aliases[headerCol];
return {
refName: refName,
aliases: aliases.filter(f => !!f.trim()),
};
});
}
}