UNPKG

@jbrowse/plugin-config

Version:

JBrowse 2 config utilities

57 lines (56 loc) 2.12 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.makeFeatures = makeFeatures; const configuration_1 = require("@jbrowse/core/configuration"); const BaseAdapter_1 = require("@jbrowse/core/data_adapters/BaseAdapter"); const rxjs_1 = require("@jbrowse/core/util/rxjs"); const simpleFeature_1 = __importDefault(require("@jbrowse/core/util/simpleFeature")); function makeFeatures(fdata) { const features = new Map(); for (const entry of fdata) { const f = new simpleFeature_1.default(entry); const refName = f.get('refName'); let bucket = features.get(refName); if (!bucket) { bucket = []; features.set(refName, bucket); } bucket.push(f); } for (const refFeatures of features.values()) { refFeatures.sort((a, b) => a.get('start') - b.get('start')); } return features; } class FromConfigAdapter extends BaseAdapter_1.BaseFeatureDataAdapter { constructor(conf, getSubAdapter, pluginManager) { super(conf, getSubAdapter, pluginManager); const feats = (0, configuration_1.readConfObject)(conf, 'features'); this.features = makeFeatures(feats); } async getRefNames() { return [...this.features.keys()]; } async getRefNameAliases() { return [...this.features.values()].map(featureArray => ({ refName: featureArray[0].get('refName'), aliases: featureArray[0].get('aliases'), })); } getFeatures(region) { const { refName, start, end } = region; return (0, rxjs_1.ObservableCreate)(async (observer) => { const features = this.features.get(refName) || []; for (const f of features) { if (f.get('end') > start && f.get('start') < end) { observer.next(f); } } observer.complete(); }); } } exports.default = FromConfigAdapter;