@jbrowse/plugin-bed 3.6.5 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (86) hide show
  1. package/esm/BedAdapter/BedAdapter.d.ts +3 -3
  2. package/esm/BedAdapter/BedAdapter.js +9 -12
  3. package/esm/BedAdapter/configSchema.d.ts +2 -2
  4. package/esm/BedAdapter/index.js +2 -2
  5. package/esm/BedGraphAdapter/BedGraphAdapter.d.ts +3 -3
  6. package/esm/BedGraphAdapter/BedGraphAdapter.js +8 -11
  7. package/esm/BedGraphAdapter/configSchema.d.ts +2 -2
  8. package/esm/BedGraphAdapter/index.js +2 -2
  9. package/esm/BedGraphTabixAdapter/BedGraphTabixAdapter.js +3 -3
  10. package/esm/BedGraphTabixAdapter/configSchema.d.ts +5 -5
  11. package/esm/BedGraphTabixAdapter/configSchema.js +1 -1
  12. package/esm/BedGraphTabixAdapter/index.js +2 -2
  13. package/esm/BedTabixAdapter/BedTabixAdapter.d.ts +1 -1
  14. package/esm/BedTabixAdapter/BedTabixAdapter.js +10 -6
  15. package/esm/BedTabixAdapter/configSchema.d.ts +5 -5
  16. package/esm/BedTabixAdapter/configSchema.js +1 -1
  17. package/esm/BedTabixAdapter/index.js +2 -2
  18. package/esm/BedpeAdapter/BedpeAdapter.d.ts +2 -2
  19. package/esm/BedpeAdapter/BedpeAdapter.js +10 -14
  20. package/esm/BedpeAdapter/configSchema.d.ts +2 -2
  21. package/esm/BedpeAdapter/index.js +2 -2
  22. package/esm/BedpeAdapter/util.js +1 -1
  23. package/esm/BigBedAdapter/BigBedAdapter.d.ts +1 -1
  24. package/esm/BigBedAdapter/BigBedAdapter.js +8 -9
  25. package/esm/BigBedAdapter/configSchema.d.ts +2 -2
  26. package/esm/BigBedAdapter/index.js +2 -2
  27. package/esm/generateRepeatMaskerFeature.js +2 -2
  28. package/esm/generateUcscTranscript.d.ts +18 -9
  29. package/esm/generateUcscTranscript.js +67 -84
  30. package/esm/index.js +8 -11
  31. package/esm/types.d.ts +2 -11
  32. package/esm/util.d.ts +11 -174
  33. package/esm/util.js +49 -48
  34. package/package.json +26 -33
  35. package/dist/BedAdapter/BedAdapter.d.ts +0 -36
  36. package/dist/BedAdapter/BedAdapter.js +0 -137
  37. package/dist/BedAdapter/configSchema.d.ts +0 -41
  38. package/dist/BedAdapter/configSchema.js +0 -58
  39. package/dist/BedAdapter/index.d.ts +0 -2
  40. package/dist/BedAdapter/index.js +0 -49
  41. package/dist/BedGraphAdapter/BedGraphAdapter.d.ts +0 -23
  42. package/dist/BedGraphAdapter/BedGraphAdapter.js +0 -125
  43. package/dist/BedGraphAdapter/configSchema.d.ts +0 -15
  44. package/dist/BedGraphAdapter/configSchema.js +0 -32
  45. package/dist/BedGraphAdapter/index.d.ts +0 -2
  46. package/dist/BedGraphAdapter/index.js +0 -49
  47. package/dist/BedGraphTabixAdapter/BedGraphTabixAdapter.d.ts +0 -17
  48. package/dist/BedGraphTabixAdapter/BedGraphTabixAdapter.js +0 -107
  49. package/dist/BedGraphTabixAdapter/configSchema.d.ts +0 -29
  50. package/dist/BedGraphTabixAdapter/configSchema.js +0 -53
  51. package/dist/BedGraphTabixAdapter/index.d.ts +0 -2
  52. package/dist/BedGraphTabixAdapter/index.js +0 -49
  53. package/dist/BedTabixAdapter/BedTabixAdapter.d.ts +0 -43
  54. package/dist/BedTabixAdapter/BedTabixAdapter.js +0 -104
  55. package/dist/BedTabixAdapter/configSchema.d.ts +0 -39
  56. package/dist/BedTabixAdapter/configSchema.js +0 -63
  57. package/dist/BedTabixAdapter/index.d.ts +0 -2
  58. package/dist/BedTabixAdapter/index.js +0 -49
  59. package/dist/BedpeAdapter/BedpeAdapter.d.ts +0 -22
  60. package/dist/BedpeAdapter/BedpeAdapter.js +0 -114
  61. package/dist/BedpeAdapter/configSchema.d.ts +0 -16
  62. package/dist/BedpeAdapter/configSchema.js +0 -33
  63. package/dist/BedpeAdapter/index.d.ts +0 -2
  64. package/dist/BedpeAdapter/index.js +0 -49
  65. package/dist/BedpeAdapter/util.d.ts +0 -2
  66. package/dist/BedpeAdapter/util.js +0 -55
  67. package/dist/BigBedAdapter/BigBedAdapter.d.ts +0 -46
  68. package/dist/BigBedAdapter/BigBedAdapter.js +0 -230
  69. package/dist/BigBedAdapter/configSchema.d.ts +0 -20
  70. package/dist/BigBedAdapter/configSchema.js +0 -37
  71. package/dist/BigBedAdapter/index.d.ts +0 -2
  72. package/dist/BigBedAdapter/index.js +0 -49
  73. package/dist/GuessAdapter/index.d.ts +0 -2
  74. package/dist/GuessAdapter/index.js +0 -68
  75. package/dist/generateBedMethylFeature.d.ts +0 -31
  76. package/dist/generateBedMethylFeature.js +0 -32
  77. package/dist/generateRepeatMaskerFeature.d.ts +0 -51
  78. package/dist/generateRepeatMaskerFeature.js +0 -42
  79. package/dist/generateUcscTranscript.d.ts +0 -20
  80. package/dist/generateUcscTranscript.js +0 -123
  81. package/dist/index.d.ts +0 -6
  82. package/dist/index.js +0 -29
  83. package/dist/types.d.ts +0 -18
  84. package/dist/types.js +0 -2
  85. package/dist/util.d.ts +0 -213
  86. package/dist/util.js +0 -157
@@ -1,114 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const interval_tree_1 = __importDefault(require("@flatten-js/interval-tree"));
7
- const BaseAdapter_1 = require("@jbrowse/core/data_adapters/BaseAdapter");
8
- const util_1 = require("@jbrowse/core/util");
9
- const io_1 = require("@jbrowse/core/util/io");
10
- const rxjs_1 = require("@jbrowse/core/util/rxjs");
11
- const util_2 = require("./util");
12
- class BedpeAdapter extends BaseAdapter_1.BaseFeatureDataAdapter {
13
- constructor() {
14
- super(...arguments);
15
- this.intervalTrees = {};
16
- }
17
- async loadDataP(opts) {
18
- const data = await (0, util_1.fetchAndMaybeUnzipText)((0, io_1.openLocation)(this.getConf('bedpeLocation'), this.pluginManager), opts);
19
- const lines = data.split(/\n|\r\n|\r/).filter(f => !!f);
20
- const headerLines = [];
21
- let i = 0;
22
- for (; i < lines.length && lines[i].startsWith('#'); i++) {
23
- headerLines.push(lines[i]);
24
- }
25
- const header = headerLines.join('\n');
26
- const feats1 = {};
27
- const feats2 = {};
28
- for (; i < lines.length; i++) {
29
- const line = lines[i];
30
- const cols = line.split('\t');
31
- const r1 = cols[0];
32
- const r2 = cols[3];
33
- if (!feats1[r1]) {
34
- feats1[r1] = [];
35
- }
36
- if (!feats2[r2]) {
37
- feats2[r2] = [];
38
- }
39
- feats1[r1].push(line);
40
- feats2[r2].push(line);
41
- }
42
- const columnNames = this.getConf('columnNames');
43
- return {
44
- header,
45
- feats1,
46
- feats2,
47
- columnNames,
48
- };
49
- }
50
- async loadData(opts = {}) {
51
- if (!this.bedpeFeatures) {
52
- this.bedpeFeatures = this.loadDataP(opts).catch((e) => {
53
- this.bedpeFeatures = undefined;
54
- throw e;
55
- });
56
- }
57
- return this.bedpeFeatures;
58
- }
59
- async getRefNames(opts = {}) {
60
- const { feats1, feats2 } = await this.loadData(opts);
61
- return [...new Set([...Object.keys(feats1), ...Object.keys(feats2)])];
62
- }
63
- async getHeader(opts = {}) {
64
- const { header } = await this.loadData(opts);
65
- return header;
66
- }
67
- async getNames() {
68
- const { header, columnNames } = await this.loadData();
69
- if (columnNames.length) {
70
- return columnNames;
71
- }
72
- const defs = header.split(/\n|\r\n|\r/).filter(f => !!f);
73
- const defline = defs.at(-1);
74
- return (defline === null || defline === void 0 ? void 0 : defline.includes('\t'))
75
- ? defline
76
- .slice(1)
77
- .split('\t')
78
- .map(field => field.trim())
79
- : undefined;
80
- }
81
- async loadFeatureTreeP(refName) {
82
- var _a, _b, _c, _d;
83
- const { feats1, feats2 } = await this.loadData();
84
- const names = await this.getNames();
85
- const intervalTree = new interval_tree_1.default();
86
- const ret1 = (_b = (_a = feats1[refName]) === null || _a === void 0 ? void 0 : _a.map((f, i) => (0, util_2.featureData)(f, `${this.id}-${refName}-${i}-r1`, false, names))) !== null && _b !== void 0 ? _b : [];
87
- const ret2 = (_d = (_c = feats2[refName]) === null || _c === void 0 ? void 0 : _c.map((f, i) => (0, util_2.featureData)(f, `${this.id}-${refName}-${i}-r2`, true, names))) !== null && _d !== void 0 ? _d : [];
88
- for (const obj of [...ret1, ...ret2]) {
89
- intervalTree.insert([obj.get('start'), obj.get('end')], obj);
90
- }
91
- return intervalTree;
92
- }
93
- async loadFeatureTree(refName) {
94
- if (!this.intervalTrees[refName]) {
95
- this.intervalTrees[refName] = this.loadFeatureTreeP(refName).catch((e) => {
96
- this.intervalTrees[refName] = undefined;
97
- throw e;
98
- });
99
- }
100
- return this.intervalTrees[refName];
101
- }
102
- getFeatures(query, opts = {}) {
103
- return (0, rxjs_1.ObservableCreate)(async (observer) => {
104
- const { start, end, refName } = query;
105
- const intervalTree = await this.loadFeatureTree(refName);
106
- for (const f of (intervalTree === null || intervalTree === void 0 ? void 0 : intervalTree.search([start, end])) || []) {
107
- observer.next(f);
108
- }
109
- observer.complete();
110
- }, opts.stopToken);
111
- }
112
- }
113
- BedpeAdapter.capabilities = ['getFeatures', 'getRefNames'];
114
- exports.default = BedpeAdapter;
@@ -1,16 +0,0 @@
1
- declare const BedpeAdapter: import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaType<{
2
- bedpeLocation: {
3
- type: string;
4
- description: string;
5
- defaultValue: {
6
- uri: string;
7
- locationType: string;
8
- };
9
- };
10
- columnNames: {
11
- type: string;
12
- description: string;
13
- defaultValue: never[];
14
- };
15
- }, import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaOptions<undefined, undefined>>;
16
- export default BedpeAdapter;
@@ -1,33 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const configuration_1 = require("@jbrowse/core/configuration");
4
- function x() { }
5
- const BedpeAdapter = (0, configuration_1.ConfigurationSchema)('BedpeAdapter', {
6
- bedpeLocation: {
7
- type: 'fileLocation',
8
- description: 'can be plaintext or gzipped, not indexed so loaded into memory on startup',
9
- defaultValue: {
10
- uri: '/path/to/my.bedpe.gz',
11
- locationType: 'UriLocation',
12
- },
13
- },
14
- columnNames: {
15
- type: 'stringArray',
16
- description: 'List of column names',
17
- defaultValue: [],
18
- },
19
- }, {
20
- explicitlyTyped: true,
21
- preProcessSnapshot: snap => {
22
- return snap.uri
23
- ? {
24
- ...snap,
25
- bedpeLocation: {
26
- uri: snap.uri,
27
- baseUri: snap.baseUri,
28
- },
29
- }
30
- : snap;
31
- },
32
- });
33
- exports.default = BedpeAdapter;
@@ -1,2 +0,0 @@
1
- import type PluginManager from '@jbrowse/core/PluginManager';
2
- export default function BedpeAdapterF(pluginManager: PluginManager): void;
@@ -1,49 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- var __importDefault = (this && this.__importDefault) || function (mod) {
36
- return (mod && mod.__esModule) ? mod : { "default": mod };
37
- };
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.default = BedpeAdapterF;
40
- const AdapterType_1 = __importDefault(require("@jbrowse/core/pluggableElementTypes/AdapterType"));
41
- const configSchema_1 = __importDefault(require("./configSchema"));
42
- function BedpeAdapterF(pluginManager) {
43
- pluginManager.addAdapterType(() => new AdapterType_1.default({
44
- name: 'BedpeAdapter',
45
- displayName: 'BEDPE adapter',
46
- configSchema: configSchema_1.default,
47
- getAdapterClass: () => Promise.resolve().then(() => __importStar(require('./BedpeAdapter'))).then(r => r.default),
48
- }));
49
- }
@@ -1,2 +0,0 @@
1
- import { SimpleFeature } from '@jbrowse/core/util';
2
- export declare function featureData(line: string, uniqueId: string, flip: boolean, names?: string[]): SimpleFeature;
@@ -1,55 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.featureData = featureData;
4
- const util_1 = require("@jbrowse/core/util");
5
- const svTypes = new Set(['DUP', 'TRA', 'INV', 'CNV', 'DEL']);
6
- function featureData(line, uniqueId, flip, names) {
7
- const l = line.split('\t');
8
- const ref1 = l[flip ? 3 : 0];
9
- const start1 = +l[flip ? 4 : 1];
10
- const end1 = +l[flip ? 5 : 2];
11
- const ref2 = l[!flip ? 3 : 0];
12
- const start2 = +l[!flip ? 4 : 1];
13
- const end2 = +l[!flip ? 5 : 2];
14
- const name = l[6];
15
- const score = +l[7];
16
- const strand1 = parseStrand(l[8]);
17
- const strand2 = parseStrand(l[9]);
18
- const extra = l.slice(10);
19
- const rest = names
20
- ? Object.fromEntries(names.slice(10).map((n, idx) => [n, extra[idx]]))
21
- : {};
22
- const ALT = svTypes.has(extra[0]) ? `<${extra[0]}>` : undefined;
23
- return new util_1.SimpleFeature({
24
- ...rest,
25
- start: start1,
26
- end: end1,
27
- type: 'paired_feature',
28
- refName: ref1,
29
- strand: strand1,
30
- name,
31
- score,
32
- uniqueId,
33
- mate: {
34
- refName: ref2,
35
- start: start2,
36
- end: end2,
37
- strand: strand2,
38
- },
39
- ...(ALT ? { ALT: [ALT] } : {}),
40
- });
41
- }
42
- function parseStrand(strand) {
43
- if (strand === '+') {
44
- return 1;
45
- }
46
- else if (strand === '-') {
47
- return -1;
48
- }
49
- else if (strand === '.') {
50
- return 0;
51
- }
52
- else {
53
- return undefined;
54
- }
55
- }
@@ -1,46 +0,0 @@
1
- import { BigBed } from '@gmod/bbi';
2
- import BED from '@gmod/bed';
3
- import { BaseFeatureDataAdapter } from '@jbrowse/core/data_adapters/BaseAdapter';
4
- import type { BaseOptions } from '@jbrowse/core/data_adapters/BaseAdapter';
5
- import type { Feature } from '@jbrowse/core/util';
6
- import type { Region } from '@jbrowse/core/util/types';
7
- import type { Observer } from 'rxjs';
8
- export default class BigBedAdapter extends BaseFeatureDataAdapter {
9
- private cachedP?;
10
- configurePre(opts?: BaseOptions): Promise<{
11
- bigbed: BigBed;
12
- header: import("@gmod/bbi/dist/types").BigWigHeaderWithRefNames;
13
- parser: BED;
14
- }>;
15
- configure(opts?: BaseOptions): Promise<{
16
- bigbed: BigBed;
17
- header: Awaited<ReturnType<BigBed["getHeader"]>>;
18
- parser: BED;
19
- }>;
20
- getRefNames(opts?: BaseOptions): Promise<string[]>;
21
- getRefNameAliases(opts?: BaseOptions): Promise<{
22
- refName: unknown;
23
- aliases: unknown[];
24
- override: boolean;
25
- }[]>;
26
- getData(): Promise<Feature[]>;
27
- getHeader(opts?: BaseOptions): Promise<{
28
- version: number;
29
- fileType: string;
30
- autoSql: {};
31
- fields: {
32
- [k: string]: string;
33
- };
34
- }>;
35
- getMetadata(opts?: BaseOptions): Promise<{
36
- [k: string]: string;
37
- }>;
38
- getFeaturesHelper({ query, opts, observer, allowRedispatch, originalQuery, }: {
39
- query: Region;
40
- opts: BaseOptions;
41
- observer: Observer<Feature>;
42
- allowRedispatch: boolean;
43
- originalQuery?: Region;
44
- }): Promise<void>;
45
- getFeatures(query: Region, opts?: BaseOptions): import("rxjs").Observable<Feature>;
46
- }
@@ -1,230 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const bbi_1 = require("@gmod/bbi");
7
- const bed_1 = __importDefault(require("@gmod/bed"));
8
- const BaseAdapter_1 = require("@jbrowse/core/data_adapters/BaseAdapter");
9
- const util_1 = require("@jbrowse/core/util");
10
- const io_1 = require("@jbrowse/core/util/io");
11
- const rxjs_1 = require("@jbrowse/core/util/rxjs");
12
- const rxjs_2 = require("rxjs");
13
- const util_2 = require("../util");
14
- class BigBedAdapter extends BaseAdapter_1.BaseFeatureDataAdapter {
15
- async configurePre(opts) {
16
- const pm = this.pluginManager;
17
- const bigbed = new bbi_1.BigBed({
18
- filehandle: (0, io_1.openLocation)(this.getConf('bigBedLocation'), pm),
19
- });
20
- const header = await bigbed.getHeader(opts);
21
- const parser = new bed_1.default({
22
- autoSql: header.autoSql,
23
- });
24
- return {
25
- bigbed,
26
- header,
27
- parser,
28
- };
29
- }
30
- async configure(opts) {
31
- if (!this.cachedP) {
32
- this.cachedP = this.configurePre(opts).catch((e) => {
33
- this.cachedP = undefined;
34
- throw e;
35
- });
36
- }
37
- return this.cachedP;
38
- }
39
- async getRefNames(opts) {
40
- const { header } = await this.configure(opts);
41
- return Object.keys(header.refsByName);
42
- }
43
- async getRefNameAliases(opts) {
44
- const { header } = await this.configure(opts);
45
- const ret = await Promise.all(Object.keys(header.refsByName).map(async (refName) => (await (0, rxjs_2.firstValueFrom)(this.getFeatures({
46
- assemblyName: '',
47
- refName,
48
- start: 0,
49
- end: 1,
50
- }).pipe((0, rxjs_2.toArray)())))[0]));
51
- return ret
52
- .map(r => r.toJSON())
53
- .map(r => ({
54
- refName: r.ucsc,
55
- aliases: [r.ncbi, r.refseq, r.genbank],
56
- override: true,
57
- }));
58
- }
59
- async getData() {
60
- const refNames = await this.getRefNames();
61
- const features = [];
62
- for (const refName of refNames) {
63
- const f = await (0, rxjs_2.firstValueFrom)(this.getFeatures({
64
- assemblyName: 'unknown',
65
- refName,
66
- start: 0,
67
- end: Number.MAX_SAFE_INTEGER,
68
- }).pipe((0, rxjs_2.toArray)()));
69
- features.push(f);
70
- }
71
- return features.flat();
72
- }
73
- async getHeader(opts) {
74
- const { parser, header } = await this.configure(opts);
75
- const { version, fileType } = header;
76
- const { fields, ...autoSql } = parser.autoSql;
77
- return {
78
- version,
79
- fileType,
80
- autoSql,
81
- fields: await this.getMetadata(opts),
82
- };
83
- }
84
- async getMetadata(opts) {
85
- const { parser } = await this.configure(opts);
86
- const { fields } = parser.autoSql;
87
- return Object.fromEntries(fields.map(({ name, comment }) => [name, comment]));
88
- }
89
- async getFeaturesHelper({ query, opts, observer, allowRedispatch, originalQuery = query, }) {
90
- const { statusCallback = () => { } } = opts;
91
- const scoreColumn = this.getConf('scoreColumn');
92
- const aggregateField = this.getConf('aggregateField');
93
- const { parser, bigbed } = await (0, util_1.updateStatus)('Downloading header', statusCallback, () => this.configure(opts));
94
- const feats = await (0, util_1.updateStatus)('Downloading features', statusCallback, () => bigbed.getFeatures(query.refName, query.start, query.end, {
95
- basesPerSpan: query.end - query.start,
96
- }));
97
- await (0, util_1.updateStatus)('Processing features', statusCallback, async () => {
98
- var _a;
99
- const parentAggregation = {};
100
- const parentAggregationFlat = [];
101
- if (feats.some(f => f.uniqueId === undefined)) {
102
- throw new Error('found uniqueId undefined');
103
- }
104
- for (const feat of feats) {
105
- const splitLine = [
106
- query.refName,
107
- `${feat.start}`,
108
- `${feat.end}`,
109
- ...(((_a = feat.rest) === null || _a === void 0 ? void 0 : _a.split('\t')) || []),
110
- ];
111
- const data = parser.parseLine(splitLine, {
112
- uniqueId: feat.uniqueId,
113
- });
114
- const aggr = data[aggregateField];
115
- const aggrIsNotNone = aggr && aggr !== 'none';
116
- if (aggrIsNotNone && !parentAggregation[aggr]) {
117
- parentAggregation[aggr] = [];
118
- }
119
- const { uniqueId, type, chrom, chromStart, chromEnd, description, chromStarts: chromStarts2, blockStarts: blockStarts2, blockSizes: blockSizes2, score: score2, blockCount, thickStart, thickEnd, strand, ...rest } = data;
120
- const f = (0, util_2.featureData2)({
121
- ...rest,
122
- scoreColumn,
123
- splitLine,
124
- parser,
125
- uniqueId,
126
- start: feat.start,
127
- end: feat.end,
128
- refName: query.refName,
129
- });
130
- if (aggrIsNotNone) {
131
- parentAggregation[aggr].push(f);
132
- parentAggregationFlat.push(f);
133
- }
134
- else {
135
- if ((0, util_1.doesIntersect2)(f.start, f.end, originalQuery.start, originalQuery.end)) {
136
- observer.next(new util_1.SimpleFeature({
137
- id: `${this.id}-${uniqueId}`,
138
- data: f,
139
- }));
140
- }
141
- }
142
- }
143
- if (allowRedispatch && parentAggregationFlat.length) {
144
- let minStart = Number.POSITIVE_INFINITY;
145
- let maxEnd = Number.NEGATIVE_INFINITY;
146
- for (const feat of parentAggregationFlat) {
147
- if (feat.start < minStart) {
148
- minStart = feat.start;
149
- }
150
- if (feat.end > maxEnd) {
151
- maxEnd = feat.end;
152
- }
153
- }
154
- if (maxEnd > query.end || minStart < query.start) {
155
- await this.getFeaturesHelper({
156
- query: {
157
- ...query,
158
- start: minStart - 500000,
159
- end: maxEnd + 500000,
160
- },
161
- opts,
162
- observer,
163
- allowRedispatch: false,
164
- originalQuery: query,
165
- });
166
- return;
167
- }
168
- }
169
- Object.entries(parentAggregation).map(([name, subfeatures]) => {
170
- var _a, _b, _c;
171
- const s = (0, util_1.min)(subfeatures.map(f => f.start));
172
- const e = (0, util_1.max)(subfeatures.map(f => f.end));
173
- if ((0, util_1.doesIntersect2)(s, e, originalQuery.start, originalQuery.end)) {
174
- const subs = subfeatures.sort((a, b) => a.uniqueId.localeCompare(b.uniqueId));
175
- if (subs.some((a, i) => subs.some((b, j) => i !== j && (0, util_1.doesIntersect2)(a.start, a.end, b.start, b.end)))) {
176
- observer.next(new util_1.SimpleFeature({
177
- id: `${this.id}-${(_a = subs[0]) === null || _a === void 0 ? void 0 : _a.uniqueId}-parent`,
178
- data: {
179
- type: 'gene',
180
- subfeatures: subs,
181
- strand: ((_b = subs[0]) === null || _b === void 0 ? void 0 : _b.strand) || 1,
182
- name,
183
- start: s,
184
- end: e,
185
- refName: query.refName,
186
- },
187
- }));
188
- }
189
- else {
190
- for (const sub of subs) {
191
- observer.next(new util_1.SimpleFeature({
192
- id: `${this.id}-${sub.uniqueId}-parent`,
193
- data: {
194
- type: 'gene',
195
- subfeatures: [sub],
196
- strand: ((_c = subs[0]) === null || _c === void 0 ? void 0 : _c.strand) || 1,
197
- name,
198
- start: sub.start,
199
- end: sub.end,
200
- refName: query.refName,
201
- },
202
- }));
203
- }
204
- }
205
- }
206
- });
207
- });
208
- observer.complete();
209
- }
210
- getFeatures(query, opts = {}) {
211
- return (0, rxjs_1.ObservableCreate)(async (observer) => {
212
- try {
213
- await this.getFeaturesHelper({
214
- query: {
215
- ...query,
216
- start: query.start,
217
- end: query.end,
218
- },
219
- opts,
220
- observer,
221
- allowRedispatch: true,
222
- });
223
- }
224
- catch (e) {
225
- observer.error(e);
226
- }
227
- }, opts.stopToken);
228
- }
229
- }
230
- exports.default = BigBedAdapter;
@@ -1,20 +0,0 @@
1
- declare const BigBedAdapter: import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaType<{
2
- bigBedLocation: {
3
- type: string;
4
- defaultValue: {
5
- uri: string;
6
- locationType: string;
7
- };
8
- };
9
- scoreColumn: {
10
- type: string;
11
- description: string;
12
- defaultValue: string;
13
- };
14
- aggregateField: {
15
- type: string;
16
- description: string;
17
- defaultValue: string;
18
- };
19
- }, import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaOptions<undefined, undefined>>;
20
- export default BigBedAdapter;
@@ -1,37 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const configuration_1 = require("@jbrowse/core/configuration");
4
- function x() { }
5
- const BigBedAdapter = (0, configuration_1.ConfigurationSchema)('BigBedAdapter', {
6
- bigBedLocation: {
7
- type: 'fileLocation',
8
- defaultValue: {
9
- uri: '/path/to/my.bb',
10
- locationType: 'UriLocation',
11
- },
12
- },
13
- scoreColumn: {
14
- type: 'string',
15
- description: 'The column to use as a "score" attribute',
16
- defaultValue: '',
17
- },
18
- aggregateField: {
19
- type: 'string',
20
- description: 'An attribute to aggregate features with',
21
- defaultValue: 'geneName2',
22
- },
23
- }, {
24
- explicitlyTyped: true,
25
- preProcessSnapshot: snap => {
26
- return snap.uri
27
- ? {
28
- ...snap,
29
- bigBedLocation: {
30
- uri: snap.uri,
31
- baseUri: snap.baseUri,
32
- },
33
- }
34
- : snap;
35
- },
36
- });
37
- exports.default = BigBedAdapter;
@@ -1,2 +0,0 @@
1
- import type PluginManager from '@jbrowse/core/PluginManager';
2
- export default function BigBedAdapterF(pluginManager: PluginManager): void;
@@ -1,49 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- var __importDefault = (this && this.__importDefault) || function (mod) {
36
- return (mod && mod.__esModule) ? mod : { "default": mod };
37
- };
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.default = BigBedAdapterF;
40
- const AdapterType_1 = __importDefault(require("@jbrowse/core/pluggableElementTypes/AdapterType"));
41
- const configSchema_1 = __importDefault(require("./configSchema"));
42
- function BigBedAdapterF(pluginManager) {
43
- pluginManager.addAdapterType(() => new AdapterType_1.default({
44
- name: 'BigBedAdapter',
45
- displayName: 'BigBed adapter',
46
- configSchema: configSchema_1.default,
47
- getAdapterClass: () => Promise.resolve().then(() => __importStar(require('./BigBedAdapter'))).then(r => r.default),
48
- }));
49
- }
@@ -1,2 +0,0 @@
1
- import type PluginManager from '@jbrowse/core/PluginManager';
2
- export default function GuessAdapterF(pluginManager: PluginManager): void;