@jbrowse/plugin-bed 2.16.1 → 2.18.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 (89) hide show
  1. package/dist/BedAdapter/BedAdapter.d.ts +15 -5
  2. package/dist/BedAdapter/BedAdapter.js +17 -13
  3. package/dist/BedAdapter/configSchema.d.ts +0 -21
  4. package/dist/BedAdapter/configSchema.js +1 -25
  5. package/dist/BedAdapter/index.d.ts +1 -1
  6. package/dist/BedGraphAdapter/BedGraphAdapter.d.ts +24 -0
  7. package/dist/BedGraphAdapter/BedGraphAdapter.js +130 -0
  8. package/dist/BedGraphAdapter/configSchema.d.ts +15 -0
  9. package/dist/BedGraphAdapter/configSchema.js +19 -0
  10. package/dist/BedGraphAdapter/index.d.ts +2 -0
  11. package/dist/BedGraphAdapter/index.js +39 -0
  12. package/dist/BedGraphTabixAdapter/BedGraphTabixAdapter.d.ts +18 -0
  13. package/dist/BedGraphTabixAdapter/BedGraphTabixAdapter.js +105 -0
  14. package/dist/BedGraphTabixAdapter/configSchema.d.ts +29 -0
  15. package/dist/BedGraphTabixAdapter/configSchema.js +34 -0
  16. package/dist/BedGraphTabixAdapter/index.d.ts +2 -0
  17. package/dist/BedGraphTabixAdapter/index.js +39 -0
  18. package/dist/BedTabixAdapter/BedTabixAdapter.d.ts +6 -5
  19. package/dist/BedTabixAdapter/BedTabixAdapter.js +23 -9
  20. package/dist/BedTabixAdapter/configSchema.d.ts +0 -18
  21. package/dist/BedTabixAdapter/configSchema.js +1 -22
  22. package/dist/BedTabixAdapter/index.d.ts +1 -1
  23. package/dist/BedpeAdapter/BedpeAdapter.d.ts +4 -2
  24. package/dist/BedpeAdapter/BedpeAdapter.js +7 -9
  25. package/dist/BedpeAdapter/configSchema.d.ts +0 -7
  26. package/dist/BedpeAdapter/configSchema.js +1 -12
  27. package/dist/BedpeAdapter/index.d.ts +1 -1
  28. package/dist/BigBedAdapter/BigBedAdapter.d.ts +14 -6
  29. package/dist/BigBedAdapter/BigBedAdapter.js +72 -62
  30. package/dist/BigBedAdapter/configSchema.d.ts +0 -9
  31. package/dist/BigBedAdapter/configSchema.js +1 -13
  32. package/dist/BigBedAdapter/index.d.ts +1 -1
  33. package/dist/generateBedMethylFeature.d.ts +31 -0
  34. package/dist/generateBedMethylFeature.js +30 -0
  35. package/dist/generateRepeatMaskerFeature.d.ts +51 -0
  36. package/dist/generateRepeatMaskerFeature.js +41 -0
  37. package/dist/generateUcscTranscript.d.ts +15 -0
  38. package/dist/generateUcscTranscript.js +95 -0
  39. package/dist/index.d.ts +1 -1
  40. package/dist/index.js +8 -4
  41. package/dist/types.d.ts +18 -0
  42. package/dist/types.js +2 -0
  43. package/dist/util.d.ts +184 -29
  44. package/dist/util.js +134 -156
  45. package/esm/BedAdapter/BedAdapter.d.ts +15 -5
  46. package/esm/BedAdapter/BedAdapter.js +18 -14
  47. package/esm/BedAdapter/configSchema.d.ts +0 -21
  48. package/esm/BedAdapter/configSchema.js +1 -25
  49. package/esm/BedAdapter/index.d.ts +1 -1
  50. package/esm/BedGraphAdapter/BedGraphAdapter.d.ts +24 -0
  51. package/esm/BedGraphAdapter/BedGraphAdapter.js +124 -0
  52. package/esm/BedGraphAdapter/configSchema.d.ts +15 -0
  53. package/esm/BedGraphAdapter/configSchema.js +17 -0
  54. package/esm/BedGraphAdapter/index.d.ts +2 -0
  55. package/esm/BedGraphAdapter/index.js +10 -0
  56. package/esm/BedGraphTabixAdapter/BedGraphTabixAdapter.d.ts +18 -0
  57. package/esm/BedGraphTabixAdapter/BedGraphTabixAdapter.js +102 -0
  58. package/esm/BedGraphTabixAdapter/configSchema.d.ts +29 -0
  59. package/esm/BedGraphTabixAdapter/configSchema.js +32 -0
  60. package/esm/BedGraphTabixAdapter/index.d.ts +2 -0
  61. package/esm/BedGraphTabixAdapter/index.js +10 -0
  62. package/esm/BedTabixAdapter/BedTabixAdapter.d.ts +6 -5
  63. package/esm/BedTabixAdapter/BedTabixAdapter.js +23 -9
  64. package/esm/BedTabixAdapter/configSchema.d.ts +0 -18
  65. package/esm/BedTabixAdapter/configSchema.js +1 -22
  66. package/esm/BedTabixAdapter/index.d.ts +1 -1
  67. package/esm/BedpeAdapter/BedpeAdapter.d.ts +4 -2
  68. package/esm/BedpeAdapter/BedpeAdapter.js +8 -10
  69. package/esm/BedpeAdapter/configSchema.d.ts +0 -7
  70. package/esm/BedpeAdapter/configSchema.js +1 -12
  71. package/esm/BedpeAdapter/index.d.ts +1 -1
  72. package/esm/BigBedAdapter/BigBedAdapter.d.ts +14 -6
  73. package/esm/BigBedAdapter/BigBedAdapter.js +74 -64
  74. package/esm/BigBedAdapter/configSchema.d.ts +0 -9
  75. package/esm/BigBedAdapter/configSchema.js +1 -13
  76. package/esm/BigBedAdapter/index.d.ts +1 -1
  77. package/esm/generateBedMethylFeature.d.ts +31 -0
  78. package/esm/generateBedMethylFeature.js +26 -0
  79. package/esm/generateRepeatMaskerFeature.d.ts +51 -0
  80. package/esm/generateRepeatMaskerFeature.js +37 -0
  81. package/esm/generateUcscTranscript.d.ts +15 -0
  82. package/esm/generateUcscTranscript.js +91 -0
  83. package/esm/index.d.ts +1 -1
  84. package/esm/index.js +8 -4
  85. package/esm/types.d.ts +18 -0
  86. package/esm/types.js +1 -0
  87. package/esm/util.d.ts +184 -29
  88. package/esm/util.js +132 -154
  89. package/package.json +2 -2
package/dist/util.js CHANGED
@@ -1,179 +1,157 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ucscProcessedTranscript = ucscProcessedTranscript;
4
3
  exports.makeBlocks = makeBlocks;
5
4
  exports.featureData = featureData;
6
- exports.isUcscProcessedTranscript = isUcscProcessedTranscript;
7
- const util_1 = require("@jbrowse/core/util");
8
- function ucscProcessedTranscript(feature) {
9
- const { subfeatures: oldSubfeatures, thickStart, thickEnd, blockCount, blockSizes, chromStarts, refName, strand = 0, ...rest } = feature;
10
- if (!thickStart || !thickEnd || !strand) {
11
- return feature;
12
- }
13
- const subfeatures = [];
14
- oldSubfeatures
15
- .filter(child => child.type === 'block')
16
- .sort((a, b) => a.start - b.start)
17
- .forEach(block => {
18
- const start = block.start;
19
- const end = block.end;
20
- if (thickStart >= end) {
21
- // left-side UTR
22
- const prime = strand > 0 ? 'five' : 'three';
23
- subfeatures.push({
24
- type: `${prime}_prime_UTR`,
25
- start,
26
- end,
27
- refName,
28
- });
29
- }
30
- else if (thickStart > start && thickStart < end && thickEnd >= end) {
31
- // UTR | CDS
32
- const prime = strand > 0 ? 'five' : 'three';
33
- subfeatures.push({
34
- type: `${prime}_prime_UTR`,
35
- start,
36
- end: thickStart,
37
- refName,
38
- }, {
39
- type: 'CDS',
40
- start: thickStart,
41
- end,
42
- refName,
43
- });
5
+ exports.featureData2 = featureData2;
6
+ exports.arrayify = arrayify;
7
+ const generateBedMethylFeature_1 = require("./generateBedMethylFeature");
8
+ const generateRepeatMaskerFeature_1 = require("./generateRepeatMaskerFeature");
9
+ const generateUcscTranscript_1 = require("./generateUcscTranscript");
10
+ function defaultParser(fields, splitLine) {
11
+ let hasBlockCount = false;
12
+ const r = [];
13
+ for (let i = 0; i < splitLine.length; i++) {
14
+ if (fields[i] === 'blockCount') {
15
+ hasBlockCount = true;
44
16
  }
45
- else if (thickStart <= start && thickEnd >= end) {
46
- // CDS
47
- subfeatures.push({
48
- type: 'CDS',
49
- start,
50
- end,
51
- refName,
52
- });
53
- }
54
- else if (thickStart > start && thickStart < end && thickEnd < end) {
55
- // UTR | CDS | UTR
56
- const leftPrime = strand > 0 ? 'five' : 'three';
57
- const rightPrime = strand > 0 ? 'three' : 'five';
58
- subfeatures.push({
59
- type: `${leftPrime}_prime_UTR`,
60
- start,
61
- end: thickStart,
62
- refName,
63
- }, {
64
- type: 'CDS',
65
- start: thickStart,
66
- end: thickEnd,
67
- refName,
68
- }, {
69
- type: `${rightPrime}_prime_UTR`,
70
- start: thickEnd,
71
- end,
72
- refName,
73
- });
74
- }
75
- else if (thickStart <= start && thickEnd > start && thickEnd < end) {
76
- // CDS | UTR
77
- const prime = strand > 0 ? 'three' : 'five';
78
- subfeatures.push({
79
- type: 'CDS',
80
- start,
81
- end: thickEnd,
82
- refName,
83
- }, {
84
- type: `${prime}_prime_UTR`,
85
- start: thickEnd,
86
- end,
87
- refName,
88
- });
89
- }
90
- else if (thickEnd <= start) {
91
- // right-side UTR
92
- const prime = strand > 0 ? 'three' : 'five';
93
- subfeatures.push({
94
- type: `${prime}_prime_UTR`,
95
- start,
96
- end,
97
- refName,
98
- });
99
- }
100
- });
101
- return { ...rest, strand, type: 'mRNA', refName, subfeatures };
102
- }
103
- function defaultParser(fields, line) {
104
- const obj = Object.fromEntries(line.split('\t').map((f, i) => [fields[i], f]));
105
- const { blockStarts, blockCount, chromStarts, thickEnd, thickStart, blockSizes, ...rest } = obj;
106
- return {
107
- ...rest,
108
- blockStarts: blockStarts === null || blockStarts === void 0 ? void 0 : blockStarts.split(',').map(r => +r),
109
- chromStarts: chromStarts === null || chromStarts === void 0 ? void 0 : chromStarts.split(',').map(r => +r),
110
- blockSizes: blockSizes === null || blockSizes === void 0 ? void 0 : blockSizes.split(',').map(r => +r),
111
- thickStart: thickStart ? +thickStart : undefined,
112
- thickEnd: thickEnd ? +thickEnd : undefined,
113
- blockCount: blockCount ? +blockCount : undefined,
114
- };
17
+ r.push([fields[i], splitLine[i]]);
18
+ }
19
+ const obj = Object.fromEntries(r);
20
+ if (hasBlockCount) {
21
+ const { blockStarts, blockCount, chromStarts, thickEnd, thickStart, blockSizes, ...rest } = obj;
22
+ return {
23
+ ...rest,
24
+ blockStarts: arrayify(blockStarts),
25
+ chromStarts: arrayify(chromStarts),
26
+ blockSizes: arrayify(blockSizes),
27
+ thickStart: thickStart ? +thickStart : undefined,
28
+ thickEnd: thickEnd ? +thickEnd : undefined,
29
+ blockCount: blockCount ? +blockCount : undefined,
30
+ };
31
+ }
32
+ else {
33
+ return obj;
34
+ }
115
35
  }
116
36
  function makeBlocks({ start, uniqueId, refName, chromStarts, blockCount, blockSizes, blockStarts, }) {
117
37
  const subfeatures = [];
118
38
  const starts = chromStarts || blockStarts || [];
119
39
  for (let b = 0; b < blockCount; b++) {
120
40
  const bmin = (starts[b] || 0) + start;
121
- const bmax = bmin + (blockSizes[b] || 0);
122
- subfeatures.push({
123
- uniqueId: `${uniqueId}-${b}`,
124
- start: bmin,
125
- end: bmax,
126
- refName,
127
- type: 'block',
128
- });
41
+ const bsize = blockSizes === null || blockSizes === void 0 ? void 0 : blockSizes[b];
42
+ if (bsize && bsize > 0) {
43
+ const bmax = bmin + bsize;
44
+ subfeatures.push({
45
+ uniqueId: `${uniqueId}-${b}`,
46
+ start: bmin,
47
+ end: bmax,
48
+ refName,
49
+ type: 'block',
50
+ });
51
+ }
129
52
  }
130
53
  return subfeatures;
131
54
  }
132
- function featureData(line, colRef, colStart, colEnd, scoreColumn, parser, uniqueId, names) {
133
- const l = line.split('\t');
134
- const refName = l[colRef];
135
- const start = +l[colStart];
136
- const colSame = colStart === colEnd ? 1 : 0;
137
- const end = +l[colEnd] + colSame;
55
+ function featureData({ line, colRef, colStart, colEnd, scoreColumn, parser, uniqueId, names, }) {
56
+ const splitLine = line.split('\t');
57
+ const refName = splitLine[colRef];
58
+ const start = Number.parseInt(splitLine[colStart], 10);
59
+ const end = Number.parseInt(splitLine[colEnd], 10) + (colStart === colEnd ? 1 : 0);
60
+ return featureData2({
61
+ splitLine,
62
+ refName,
63
+ start,
64
+ end,
65
+ parser,
66
+ uniqueId,
67
+ scoreColumn,
68
+ names,
69
+ });
70
+ }
71
+ function featureData2({ splitLine, refName, start, end, parser, uniqueId, scoreColumn, names, }) {
138
72
  const data = names
139
- ? defaultParser(names, line)
140
- : parser.parseLine(line, { uniqueId });
141
- const { blockCount, blockSizes, blockStarts, chromStarts, thickStart, thickEnd, type, score, chrom: _1, chromStart: _2, chromEnd: _3, ...rest } = data;
142
- const subfeatures = blockCount
73
+ ? defaultParser(names, splitLine)
74
+ : parser.parseLine(splitLine, { uniqueId });
75
+ const { strand: strand2, score: score2, chrom: _1, chromStart: _2, chromEnd: _3, ...rest } = data;
76
+ const score = scoreColumn ? +data[scoreColumn] : score2 ? +score2 : undefined;
77
+ const strand = typeof strand2 === 'string' ? (strand2 === '-' ? -1 : 1) : strand2;
78
+ const subfeatures = rest.blockCount
143
79
  ? makeBlocks({
144
80
  start,
145
81
  uniqueId,
146
82
  refName,
83
+ chromStarts: rest.chromStarts,
84
+ blockCount: rest.blockCount,
85
+ blockSizes: rest.blockSizes,
86
+ blockStarts: rest.blockStarts,
87
+ })
88
+ : undefined;
89
+ if ((0, generateBedMethylFeature_1.isBedMethylFeature)({ splitLine, start, end })) {
90
+ return (0, generateBedMethylFeature_1.generateBedMethylFeature)({
91
+ splitLine,
92
+ uniqueId,
93
+ refName,
94
+ start,
95
+ end,
96
+ });
97
+ }
98
+ else if ((0, generateRepeatMaskerFeature_1.isRepeatMaskerDescriptionField)(rest.description)) {
99
+ const { chromStarts, blockSizes, blockStarts, type, blockCount, thickStart, thickEnd, description, ...rest2 } = rest;
100
+ return (0, generateRepeatMaskerFeature_1.generateRepeatMaskerFeature)({
101
+ ...rest2,
102
+ uniqueId,
103
+ description,
104
+ type,
105
+ score,
106
+ start,
107
+ end,
108
+ strand,
109
+ refName,
110
+ subfeatures,
111
+ });
112
+ }
113
+ else if (subfeatures &&
114
+ (0, generateUcscTranscript_1.isUcscTranscript)({
115
+ strand,
116
+ blockCount: rest.blockCount,
117
+ thickStart: rest.thickStart,
118
+ })) {
119
+ const { chromStarts, blockSizes, type, blockCount, thickStart, thickEnd, description, } = rest;
120
+ return (0, generateUcscTranscript_1.generateUcscTranscript)({
121
+ ...rest,
122
+ description,
147
123
  chromStarts,
148
- blockCount,
124
+ thickStart,
125
+ thickEnd,
149
126
  blockSizes,
150
- blockStarts,
151
- })
152
- : [];
153
- const f = {
154
- ...rest,
155
- type,
156
- score: scoreColumn ? +data[scoreColumn] : score,
157
- start,
158
- end,
159
- refName,
160
- uniqueId,
161
- subfeatures,
162
- };
163
- return new util_1.SimpleFeature({
164
- id: uniqueId,
165
- data: isUcscProcessedTranscript(data)
166
- ? ucscProcessedTranscript({
167
- thickStart: thickStart,
168
- thickEnd: thickEnd,
169
- blockCount: blockCount,
170
- blockSizes: blockSizes,
171
- chromStarts: chromStarts,
172
- ...f,
173
- })
174
- : f,
175
- });
127
+ blockCount,
128
+ type,
129
+ score,
130
+ start,
131
+ end,
132
+ strand,
133
+ refName,
134
+ uniqueId,
135
+ subfeatures,
136
+ });
137
+ }
138
+ else {
139
+ return {
140
+ ...rest,
141
+ uniqueId,
142
+ score,
143
+ start,
144
+ end,
145
+ strand,
146
+ refName,
147
+ subfeatures,
148
+ };
149
+ }
176
150
  }
177
- function isUcscProcessedTranscript(f) {
178
- return f.thickStart && f.blockCount && f.strand !== 0;
151
+ function arrayify(f) {
152
+ return f !== undefined
153
+ ? typeof f === 'string'
154
+ ? f.split(',').map(f => +f)
155
+ : f
156
+ : undefined;
179
157
  }
@@ -1,7 +1,8 @@
1
- import BED from '@gmod/bed';
2
- import { BaseFeatureDataAdapter, BaseOptions } from '@jbrowse/core/data_adapters/BaseAdapter';
3
- import { Region, Feature } from '@jbrowse/core/util';
4
1
  import IntervalTree from '@flatten-js/interval-tree';
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, Region } from '@jbrowse/core/util';
5
6
  export default class BedAdapter extends BaseFeatureDataAdapter {
6
7
  protected bedFeatures?: Promise<{
7
8
  header: string;
@@ -16,12 +17,21 @@ export default class BedAdapter extends BaseFeatureDataAdapter {
16
17
  protected intervalTrees: Record<string, Promise<IntervalTree | undefined> | undefined>;
17
18
  static capabilities: string[];
18
19
  private loadDataP;
19
- private loadData;
20
+ loadData(opts?: BaseOptions): Promise<{
21
+ header: string;
22
+ features: Record<string, string[]>;
23
+ parser: BED;
24
+ columnNames: string[];
25
+ scoreColumn: string;
26
+ colRef: number;
27
+ colStart: number;
28
+ colEnd: number;
29
+ }>;
20
30
  getRefNames(opts?: BaseOptions): Promise<string[]>;
21
31
  getHeader(opts?: BaseOptions): Promise<string>;
22
32
  getNames(): Promise<string[] | undefined>;
23
33
  private loadFeatureIntervalTreeHelper;
24
- private loadFeatureIntervalTree;
34
+ loadFeatureIntervalTree(refName: string): Promise<IntervalTree<any> | undefined>;
25
35
  getFeatures(query: Region, opts?: BaseOptions): import("rxjs").Observable<Feature>;
26
36
  freeResources(): void;
27
37
  }
@@ -1,11 +1,9 @@
1
+ import IntervalTree from '@flatten-js/interval-tree';
1
2
  import BED from '@gmod/bed';
2
- import { BaseFeatureDataAdapter, } from '@jbrowse/core/data_adapters/BaseAdapter';
3
+ import { BaseFeatureDataAdapter } from '@jbrowse/core/data_adapters/BaseAdapter';
4
+ import { SimpleFeature, fetchAndMaybeUnzip } from '@jbrowse/core/util';
3
5
  import { openLocation } from '@jbrowse/core/util/io';
4
6
  import { ObservableCreate } from '@jbrowse/core/util/rxjs';
5
- import { isGzip } from '@jbrowse/core/util';
6
- import IntervalTree from '@flatten-js/interval-tree';
7
- import { unzip } from '@gmod/bgzf-filehandle';
8
- // locals
9
7
  import { featureData } from '../util';
10
8
  class BedAdapter extends BaseFeatureDataAdapter {
11
9
  constructor() {
@@ -15,9 +13,7 @@ class BedAdapter extends BaseFeatureDataAdapter {
15
13
  async loadDataP(opts = {}) {
16
14
  const pm = this.pluginManager;
17
15
  const bedLoc = this.getConf('bedLocation');
18
- const buf = await openLocation(bedLoc, pm).readFile(opts);
19
- const buffer = isGzip(buf) ? await unzip(buf) : buf;
20
- // 512MB max chrome string length is 512MB
16
+ const buffer = await fetchAndMaybeUnzip(openLocation(bedLoc, pm), opts);
21
17
  if (buffer.length > 536870888) {
22
18
  throw new Error('Data exceeds maximum string length (512MB)');
23
19
  }
@@ -96,12 +92,20 @@ class BedAdapter extends BaseFeatureDataAdapter {
96
92
  }
97
93
  const names = await this.getNames();
98
94
  const intervalTree = new IntervalTree();
99
- const ret = lines.map((f, i) => {
95
+ for (let i = 0; i < lines.length; i++) {
96
+ const line = lines[i];
100
97
  const uniqueId = `${this.id}-${refName}-${i}`;
101
- return featureData(f, colRef, colStart, colEnd, scoreColumn, parser, uniqueId, names);
102
- });
103
- for (const obj of ret) {
104
- intervalTree.insert([obj.get('start'), obj.get('end')], obj);
98
+ const feat = new SimpleFeature(featureData({
99
+ line,
100
+ colRef,
101
+ colStart,
102
+ colEnd,
103
+ scoreColumn,
104
+ parser,
105
+ uniqueId,
106
+ names,
107
+ }));
108
+ intervalTree.insert([feat.get('start'), feat.get('end')], feat);
105
109
  }
106
110
  return intervalTree;
107
111
  }
@@ -122,7 +126,7 @@ class BedAdapter extends BaseFeatureDataAdapter {
122
126
  observer.next(f);
123
127
  });
124
128
  observer.complete();
125
- }, opts.signal);
129
+ }, opts.stopToken);
126
130
  }
127
131
  freeResources() { }
128
132
  }
@@ -1,7 +1,4 @@
1
1
  declare const BedAdapter: import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaType<{
2
- /**
3
- * #slot
4
- */
5
2
  bedLocation: {
6
3
  type: string;
7
4
  defaultValue: {
@@ -9,49 +6,31 @@ declare const BedAdapter: import("@jbrowse/core/configuration/configurationSchem
9
6
  locationType: string;
10
7
  };
11
8
  };
12
- /**
13
- * #slot
14
- */
15
9
  columnNames: {
16
10
  type: string;
17
11
  description: string;
18
12
  defaultValue: never[];
19
13
  };
20
- /**
21
- * #slot
22
- */
23
14
  scoreColumn: {
24
15
  type: string;
25
16
  description: string;
26
17
  defaultValue: string;
27
18
  };
28
- /**
29
- * #slot
30
- */
31
19
  autoSql: {
32
20
  type: string;
33
21
  description: string;
34
22
  defaultValue: string;
35
23
  };
36
- /**
37
- * #slot
38
- */
39
24
  colRef: {
40
25
  type: string;
41
26
  description: string;
42
27
  defaultValue: number;
43
28
  };
44
- /**
45
- * #slot
46
- */
47
29
  colStart: {
48
30
  type: string;
49
31
  description: string;
50
32
  defaultValue: number;
51
33
  };
52
- /**
53
- * #slot
54
- */
55
34
  colEnd: {
56
35
  type: string;
57
36
  description: string;
@@ -1,59 +1,35 @@
1
1
  import { ConfigurationSchema } from '@jbrowse/core/configuration';
2
- /**
3
- * #config BedAdapter
4
- */
5
- function x() { } // eslint-disable-line @typescript-eslint/no-unused-vars
2
+ function x() { }
6
3
  const BedAdapter = ConfigurationSchema('BedAdapter', {
7
- /**
8
- * #slot
9
- */
10
4
  bedLocation: {
11
5
  type: 'fileLocation',
12
6
  defaultValue: { uri: '/path/to/my.bed.gz', locationType: 'UriLocation' },
13
7
  },
14
- /**
15
- * #slot
16
- */
17
8
  columnNames: {
18
9
  type: 'stringArray',
19
10
  description: 'List of column names',
20
11
  defaultValue: [],
21
12
  },
22
- /**
23
- * #slot
24
- */
25
13
  scoreColumn: {
26
14
  type: 'string',
27
15
  description: 'The column to use as a "score" attribute',
28
16
  defaultValue: '',
29
17
  },
30
- /**
31
- * #slot
32
- */
33
18
  autoSql: {
34
19
  type: 'string',
35
20
  description: 'The autoSql definition for the data fields in the file',
36
21
  defaultValue: '',
37
22
  },
38
- /**
39
- * #slot
40
- */
41
23
  colRef: {
42
24
  type: 'number',
43
25
  description: 'The column to use as a "refName" attribute',
44
26
  defaultValue: 0,
45
27
  },
46
- /**
47
- * #slot
48
- */
49
28
  colStart: {
50
29
  type: 'number',
51
30
  description: 'The column to use as a "start" attribute',
52
31
  defaultValue: 1,
53
32
  },
54
- /**
55
- * #slot
56
- */
57
33
  colEnd: {
58
34
  type: 'number',
59
35
  description: 'The column to use as a "end" attribute',
@@ -1,2 +1,2 @@
1
- import PluginManager from '@jbrowse/core/PluginManager';
1
+ import type PluginManager from '@jbrowse/core/PluginManager';
2
2
  export default function BedAdapterF(pluginManager: PluginManager): void;
@@ -0,0 +1,24 @@
1
+ import IntervalTree from '@flatten-js/interval-tree';
2
+ import { BaseFeatureDataAdapter } from '@jbrowse/core/data_adapters/BaseAdapter';
3
+ import type { BaseOptions } from '@jbrowse/core/data_adapters/BaseAdapter';
4
+ import type { Feature, Region } from '@jbrowse/core/util';
5
+ export default class BedGraphAdapter extends BaseFeatureDataAdapter {
6
+ protected bedFeatures?: Promise<{
7
+ header: string;
8
+ features: Record<string, string[]>;
9
+ columnNames: string[];
10
+ }>;
11
+ protected intervalTrees: Record<string, Promise<IntervalTree | undefined> | undefined>;
12
+ getNames(): Promise<string[] | undefined>;
13
+ private loadFeatureIntervalTreeHelper;
14
+ getRefNames(opts?: BaseOptions): Promise<string[]>;
15
+ private loadDataP;
16
+ loadFeatureIntervalTree(refName: string): Promise<IntervalTree<any> | undefined>;
17
+ loadData(opts?: BaseOptions): Promise<{
18
+ header: string;
19
+ features: Record<string, string[]>;
20
+ columnNames: string[];
21
+ }>;
22
+ getFeatures(query: Region, _opts?: BaseOptions): import("rxjs").Observable<Feature>;
23
+ freeResources(): void;
24
+ }