@jbrowse/plugin-config
Version:
JBrowse 2 config utilities
39 lines (38 loc) • 1.49 kB
JavaScript
import { readConfObject } from '@jbrowse/core/configuration';
import { BaseAdapter } from '@jbrowse/core/data_adapters/BaseAdapter';
import { makeFeatures } from '../FromConfigAdapter/FromConfigAdapter';
export default class FromConfigRegionsAdapter extends BaseAdapter {
constructor(config, getSubAdapter, pluginManager) {
super(config, getSubAdapter, pluginManager);
const f = readConfObject(config, 'features');
this.features = makeFeatures(f);
}
async getRegions() {
const regions = [];
for (const [refName, features] of this.features) {
let currentRegion;
for (const feature of features) {
if (currentRegion &&
currentRegion.end >= feature.get('start') &&
currentRegion.start <= feature.get('end')) {
currentRegion.end = feature.get('end');
}
else {
if (currentRegion) {
regions.push(currentRegion);
}
currentRegion = {
refName,
start: feature.get('start'),
end: feature.get('end'),
};
}
}
if (currentRegion) {
regions.push(currentRegion);
}
}
regions.sort((a, b) => a.refName.localeCompare(b.refName));
return regions;
}
}