@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/esm/util.d.ts CHANGED
@@ -1,48 +1,203 @@
1
- import BED from '@gmod/bed';
2
- import { SimpleFeature } from '@jbrowse/core/util';
3
- export interface MinimalFeature {
1
+ import type BED from '@gmod/bed';
2
+ export declare function makeBlocks({ start, uniqueId, refName, chromStarts, blockCount, blockSizes, blockStarts, }: {
3
+ blockCount: number;
4
+ start: number;
5
+ uniqueId: string;
6
+ refName: string;
7
+ chromStarts?: number[];
8
+ blockSizes?: number[];
9
+ blockStarts?: number[];
10
+ }): {
11
+ uniqueId: string;
12
+ start: number;
13
+ end: number;
14
+ refName: string;
4
15
  type: string;
16
+ }[];
17
+ export declare function featureData({ line, colRef, colStart, colEnd, scoreColumn, parser, uniqueId, names, }: {
18
+ line: string;
19
+ colRef: number;
20
+ colStart: number;
21
+ colEnd: number;
22
+ scoreColumn: string;
23
+ parser: BED;
24
+ uniqueId: string;
25
+ names?: string[];
26
+ }): {
27
+ uniqueId: string;
28
+ refName: string;
5
29
  start: number;
6
30
  end: number;
31
+ code: string | undefined;
32
+ score: number;
33
+ strand: string | undefined;
34
+ color: string | undefined;
35
+ source: string | undefined;
36
+ n_valid_cov: string | undefined;
37
+ fraction_modified: string | undefined;
38
+ n_mod: string | undefined;
39
+ n_canonical: string | undefined;
40
+ n_other_mod: string | undefined;
41
+ n_delete: string | undefined;
42
+ n_fail: string | undefined;
43
+ n_diff: string | undefined;
44
+ n_nocall: string | undefined;
45
+ } | {
46
+ uniqueId: string;
7
47
  refName: string;
8
- [key: string]: unknown;
9
- }
10
- export interface TranscriptFeat extends MinimalFeature {
11
- thickStart: number;
12
- thickEnd: number;
13
- blockCount: number;
14
- blockSizes: number[];
15
- chromStarts: number[];
48
+ start: number;
49
+ end: number;
50
+ bitsw_score: string | undefined;
51
+ percent_div: string | undefined;
52
+ percent_del: string | undefined;
53
+ percent_ins: string | undefined;
54
+ query_chr: string | undefined;
55
+ query_begin: string | undefined;
56
+ query_end: string | undefined;
57
+ query_remaining: string | undefined;
58
+ orientation: string | undefined;
59
+ matching_repeat_name: string | undefined;
60
+ matching_repeat_class: string | undefined;
61
+ matching_repeat_begin: string | undefined;
62
+ matching_repeat_end: string | undefined;
63
+ matching_repeat_remaining: string | undefined;
64
+ repeat_id: string | undefined;
65
+ description?: undefined;
66
+ } | {
67
+ uniqueId: string;
16
68
  refName: string;
17
- strand?: number;
18
- subfeatures: MinimalFeature[];
19
- }
20
- export declare function ucscProcessedTranscript(feature: TranscriptFeat): TranscriptFeat | {
69
+ start: number;
70
+ end: number;
71
+ description: undefined;
72
+ bitsw_score?: undefined;
73
+ percent_div?: undefined;
74
+ percent_del?: undefined;
75
+ percent_ins?: undefined;
76
+ query_chr?: undefined;
77
+ query_begin?: undefined;
78
+ query_end?: undefined;
79
+ query_remaining?: undefined;
80
+ orientation?: undefined;
81
+ matching_repeat_name?: undefined;
82
+ matching_repeat_class?: undefined;
83
+ matching_repeat_begin?: undefined;
84
+ matching_repeat_end?: undefined;
85
+ matching_repeat_remaining?: undefined;
86
+ repeat_id?: undefined;
87
+ } | {
88
+ uniqueId: string;
21
89
  strand: number;
22
90
  type: string;
23
91
  refName: string;
24
- subfeatures: MinimalFeature[];
92
+ subfeatures: import("./types").MinimalFeature[];
93
+ start: number;
94
+ end: number;
95
+ } | {
96
+ uniqueId: string;
97
+ score: number | undefined;
25
98
  start: number;
26
99
  end: number;
100
+ strand: any;
101
+ refName: string;
102
+ subfeatures: {
103
+ uniqueId: string;
104
+ start: number;
105
+ end: number;
106
+ refName: string;
107
+ type: string;
108
+ }[] | undefined;
27
109
  };
28
- export declare function makeBlocks({ start, uniqueId, refName, chromStarts, blockCount, blockSizes, blockStarts, }: {
29
- blockCount: number;
110
+ export declare function featureData2({ splitLine, refName, start, end, parser, uniqueId, scoreColumn, names, }: {
111
+ splitLine: string[];
112
+ refName: string;
30
113
  start: number;
114
+ end: number;
115
+ parser: BED;
31
116
  uniqueId: string;
32
- refName: string;
33
- chromStarts?: number[];
34
- blockSizes: number[];
35
- blockStarts?: number[];
117
+ scoreColumn: string;
118
+ names?: string[];
36
119
  }): {
37
120
  uniqueId: string;
121
+ refName: string;
38
122
  start: number;
39
123
  end: number;
124
+ code: string | undefined;
125
+ score: number;
126
+ strand: string | undefined;
127
+ color: string | undefined;
128
+ source: string | undefined;
129
+ n_valid_cov: string | undefined;
130
+ fraction_modified: string | undefined;
131
+ n_mod: string | undefined;
132
+ n_canonical: string | undefined;
133
+ n_other_mod: string | undefined;
134
+ n_delete: string | undefined;
135
+ n_fail: string | undefined;
136
+ n_diff: string | undefined;
137
+ n_nocall: string | undefined;
138
+ } | {
139
+ uniqueId: string;
140
+ refName: string;
141
+ start: number;
142
+ end: number;
143
+ bitsw_score: string | undefined;
144
+ percent_div: string | undefined;
145
+ percent_del: string | undefined;
146
+ percent_ins: string | undefined;
147
+ query_chr: string | undefined;
148
+ query_begin: string | undefined;
149
+ query_end: string | undefined;
150
+ query_remaining: string | undefined;
151
+ orientation: string | undefined;
152
+ matching_repeat_name: string | undefined;
153
+ matching_repeat_class: string | undefined;
154
+ matching_repeat_begin: string | undefined;
155
+ matching_repeat_end: string | undefined;
156
+ matching_repeat_remaining: string | undefined;
157
+ repeat_id: string | undefined;
158
+ description?: undefined;
159
+ } | {
160
+ uniqueId: string;
40
161
  refName: string;
162
+ start: number;
163
+ end: number;
164
+ description: undefined;
165
+ bitsw_score?: undefined;
166
+ percent_div?: undefined;
167
+ percent_del?: undefined;
168
+ percent_ins?: undefined;
169
+ query_chr?: undefined;
170
+ query_begin?: undefined;
171
+ query_end?: undefined;
172
+ query_remaining?: undefined;
173
+ orientation?: undefined;
174
+ matching_repeat_name?: undefined;
175
+ matching_repeat_class?: undefined;
176
+ matching_repeat_begin?: undefined;
177
+ matching_repeat_end?: undefined;
178
+ matching_repeat_remaining?: undefined;
179
+ repeat_id?: undefined;
180
+ } | {
181
+ uniqueId: string;
182
+ strand: number;
41
183
  type: string;
42
- }[];
43
- export declare function featureData(line: string, colRef: number, colStart: number, colEnd: number, scoreColumn: string, parser: BED, uniqueId: string, names?: string[]): SimpleFeature;
44
- export declare function isUcscProcessedTranscript(f: {
45
- thickStart?: number;
46
- blockCount?: number;
47
- strand?: number;
48
- }): boolean | 0 | undefined;
184
+ refName: string;
185
+ subfeatures: import("./types").MinimalFeature[];
186
+ start: number;
187
+ end: number;
188
+ } | {
189
+ uniqueId: string;
190
+ score: number | undefined;
191
+ start: number;
192
+ end: number;
193
+ strand: any;
194
+ refName: string;
195
+ subfeatures: {
196
+ uniqueId: string;
197
+ start: number;
198
+ end: number;
199
+ refName: string;
200
+ type: string;
201
+ }[] | undefined;
202
+ };
203
+ export declare function arrayify(f?: string | number[]): number[] | undefined;
package/esm/util.js CHANGED
@@ -1,173 +1,151 @@
1
- import { SimpleFeature } from '@jbrowse/core/util';
2
- export function ucscProcessedTranscript(feature) {
3
- const { subfeatures: oldSubfeatures, thickStart, thickEnd, blockCount, blockSizes, chromStarts, refName, strand = 0, ...rest } = feature;
4
- if (!thickStart || !thickEnd || !strand) {
5
- return feature;
6
- }
7
- const subfeatures = [];
8
- oldSubfeatures
9
- .filter(child => child.type === 'block')
10
- .sort((a, b) => a.start - b.start)
11
- .forEach(block => {
12
- const start = block.start;
13
- const end = block.end;
14
- if (thickStart >= end) {
15
- // left-side UTR
16
- const prime = strand > 0 ? 'five' : 'three';
17
- subfeatures.push({
18
- type: `${prime}_prime_UTR`,
19
- start,
20
- end,
21
- refName,
22
- });
23
- }
24
- else if (thickStart > start && thickStart < end && thickEnd >= end) {
25
- // UTR | CDS
26
- const prime = strand > 0 ? 'five' : 'three';
27
- subfeatures.push({
28
- type: `${prime}_prime_UTR`,
29
- start,
30
- end: thickStart,
31
- refName,
32
- }, {
33
- type: 'CDS',
34
- start: thickStart,
35
- end,
36
- refName,
37
- });
1
+ import { generateBedMethylFeature, isBedMethylFeature, } from './generateBedMethylFeature';
2
+ import { generateRepeatMaskerFeature, isRepeatMaskerDescriptionField, } from './generateRepeatMaskerFeature';
3
+ import { generateUcscTranscript, isUcscTranscript, } from './generateUcscTranscript';
4
+ function defaultParser(fields, splitLine) {
5
+ let hasBlockCount = false;
6
+ const r = [];
7
+ for (let i = 0; i < splitLine.length; i++) {
8
+ if (fields[i] === 'blockCount') {
9
+ hasBlockCount = true;
38
10
  }
39
- else if (thickStart <= start && thickEnd >= end) {
40
- // CDS
41
- subfeatures.push({
42
- type: 'CDS',
43
- start,
44
- end,
45
- refName,
46
- });
47
- }
48
- else if (thickStart > start && thickStart < end && thickEnd < end) {
49
- // UTR | CDS | UTR
50
- const leftPrime = strand > 0 ? 'five' : 'three';
51
- const rightPrime = strand > 0 ? 'three' : 'five';
52
- subfeatures.push({
53
- type: `${leftPrime}_prime_UTR`,
54
- start,
55
- end: thickStart,
56
- refName,
57
- }, {
58
- type: 'CDS',
59
- start: thickStart,
60
- end: thickEnd,
61
- refName,
62
- }, {
63
- type: `${rightPrime}_prime_UTR`,
64
- start: thickEnd,
65
- end,
66
- refName,
67
- });
68
- }
69
- else if (thickStart <= start && thickEnd > start && thickEnd < end) {
70
- // CDS | UTR
71
- const prime = strand > 0 ? 'three' : 'five';
72
- subfeatures.push({
73
- type: 'CDS',
74
- start,
75
- end: thickEnd,
76
- refName,
77
- }, {
78
- type: `${prime}_prime_UTR`,
79
- start: thickEnd,
80
- end,
81
- refName,
82
- });
83
- }
84
- else if (thickEnd <= start) {
85
- // right-side UTR
86
- const prime = strand > 0 ? 'three' : 'five';
87
- subfeatures.push({
88
- type: `${prime}_prime_UTR`,
89
- start,
90
- end,
91
- refName,
92
- });
93
- }
94
- });
95
- return { ...rest, strand, type: 'mRNA', refName, subfeatures };
96
- }
97
- function defaultParser(fields, line) {
98
- const obj = Object.fromEntries(line.split('\t').map((f, i) => [fields[i], f]));
99
- const { blockStarts, blockCount, chromStarts, thickEnd, thickStart, blockSizes, ...rest } = obj;
100
- return {
101
- ...rest,
102
- blockStarts: blockStarts === null || blockStarts === void 0 ? void 0 : blockStarts.split(',').map(r => +r),
103
- chromStarts: chromStarts === null || chromStarts === void 0 ? void 0 : chromStarts.split(',').map(r => +r),
104
- blockSizes: blockSizes === null || blockSizes === void 0 ? void 0 : blockSizes.split(',').map(r => +r),
105
- thickStart: thickStart ? +thickStart : undefined,
106
- thickEnd: thickEnd ? +thickEnd : undefined,
107
- blockCount: blockCount ? +blockCount : undefined,
108
- };
11
+ r.push([fields[i], splitLine[i]]);
12
+ }
13
+ const obj = Object.fromEntries(r);
14
+ if (hasBlockCount) {
15
+ const { blockStarts, blockCount, chromStarts, thickEnd, thickStart, blockSizes, ...rest } = obj;
16
+ return {
17
+ ...rest,
18
+ blockStarts: arrayify(blockStarts),
19
+ chromStarts: arrayify(chromStarts),
20
+ blockSizes: arrayify(blockSizes),
21
+ thickStart: thickStart ? +thickStart : undefined,
22
+ thickEnd: thickEnd ? +thickEnd : undefined,
23
+ blockCount: blockCount ? +blockCount : undefined,
24
+ };
25
+ }
26
+ else {
27
+ return obj;
28
+ }
109
29
  }
110
30
  export function makeBlocks({ start, uniqueId, refName, chromStarts, blockCount, blockSizes, blockStarts, }) {
111
31
  const subfeatures = [];
112
32
  const starts = chromStarts || blockStarts || [];
113
33
  for (let b = 0; b < blockCount; b++) {
114
34
  const bmin = (starts[b] || 0) + start;
115
- const bmax = bmin + (blockSizes[b] || 0);
116
- subfeatures.push({
117
- uniqueId: `${uniqueId}-${b}`,
118
- start: bmin,
119
- end: bmax,
120
- refName,
121
- type: 'block',
122
- });
35
+ const bsize = blockSizes === null || blockSizes === void 0 ? void 0 : blockSizes[b];
36
+ if (bsize && bsize > 0) {
37
+ const bmax = bmin + bsize;
38
+ subfeatures.push({
39
+ uniqueId: `${uniqueId}-${b}`,
40
+ start: bmin,
41
+ end: bmax,
42
+ refName,
43
+ type: 'block',
44
+ });
45
+ }
123
46
  }
124
47
  return subfeatures;
125
48
  }
126
- export function featureData(line, colRef, colStart, colEnd, scoreColumn, parser, uniqueId, names) {
127
- const l = line.split('\t');
128
- const refName = l[colRef];
129
- const start = +l[colStart];
130
- const colSame = colStart === colEnd ? 1 : 0;
131
- const end = +l[colEnd] + colSame;
49
+ export function featureData({ line, colRef, colStart, colEnd, scoreColumn, parser, uniqueId, names, }) {
50
+ const splitLine = line.split('\t');
51
+ const refName = splitLine[colRef];
52
+ const start = Number.parseInt(splitLine[colStart], 10);
53
+ const end = Number.parseInt(splitLine[colEnd], 10) + (colStart === colEnd ? 1 : 0);
54
+ return featureData2({
55
+ splitLine,
56
+ refName,
57
+ start,
58
+ end,
59
+ parser,
60
+ uniqueId,
61
+ scoreColumn,
62
+ names,
63
+ });
64
+ }
65
+ export function featureData2({ splitLine, refName, start, end, parser, uniqueId, scoreColumn, names, }) {
132
66
  const data = names
133
- ? defaultParser(names, line)
134
- : parser.parseLine(line, { uniqueId });
135
- const { blockCount, blockSizes, blockStarts, chromStarts, thickStart, thickEnd, type, score, chrom: _1, chromStart: _2, chromEnd: _3, ...rest } = data;
136
- const subfeatures = blockCount
67
+ ? defaultParser(names, splitLine)
68
+ : parser.parseLine(splitLine, { uniqueId });
69
+ const { strand: strand2, score: score2, chrom: _1, chromStart: _2, chromEnd: _3, ...rest } = data;
70
+ const score = scoreColumn ? +data[scoreColumn] : score2 ? +score2 : undefined;
71
+ const strand = typeof strand2 === 'string' ? (strand2 === '-' ? -1 : 1) : strand2;
72
+ const subfeatures = rest.blockCount
137
73
  ? makeBlocks({
138
74
  start,
139
75
  uniqueId,
140
76
  refName,
77
+ chromStarts: rest.chromStarts,
78
+ blockCount: rest.blockCount,
79
+ blockSizes: rest.blockSizes,
80
+ blockStarts: rest.blockStarts,
81
+ })
82
+ : undefined;
83
+ if (isBedMethylFeature({ splitLine, start, end })) {
84
+ return generateBedMethylFeature({
85
+ splitLine,
86
+ uniqueId,
87
+ refName,
88
+ start,
89
+ end,
90
+ });
91
+ }
92
+ else if (isRepeatMaskerDescriptionField(rest.description)) {
93
+ const { chromStarts, blockSizes, blockStarts, type, blockCount, thickStart, thickEnd, description, ...rest2 } = rest;
94
+ return generateRepeatMaskerFeature({
95
+ ...rest2,
96
+ uniqueId,
97
+ description,
98
+ type,
99
+ score,
100
+ start,
101
+ end,
102
+ strand,
103
+ refName,
104
+ subfeatures,
105
+ });
106
+ }
107
+ else if (subfeatures &&
108
+ isUcscTranscript({
109
+ strand,
110
+ blockCount: rest.blockCount,
111
+ thickStart: rest.thickStart,
112
+ })) {
113
+ const { chromStarts, blockSizes, type, blockCount, thickStart, thickEnd, description, } = rest;
114
+ return generateUcscTranscript({
115
+ ...rest,
116
+ description,
141
117
  chromStarts,
142
- blockCount,
118
+ thickStart,
119
+ thickEnd,
143
120
  blockSizes,
144
- blockStarts,
145
- })
146
- : [];
147
- const f = {
148
- ...rest,
149
- type,
150
- score: scoreColumn ? +data[scoreColumn] : score,
151
- start,
152
- end,
153
- refName,
154
- uniqueId,
155
- subfeatures,
156
- };
157
- return new SimpleFeature({
158
- id: uniqueId,
159
- data: isUcscProcessedTranscript(data)
160
- ? ucscProcessedTranscript({
161
- thickStart: thickStart,
162
- thickEnd: thickEnd,
163
- blockCount: blockCount,
164
- blockSizes: blockSizes,
165
- chromStarts: chromStarts,
166
- ...f,
167
- })
168
- : f,
169
- });
121
+ blockCount,
122
+ type,
123
+ score,
124
+ start,
125
+ end,
126
+ strand,
127
+ refName,
128
+ uniqueId,
129
+ subfeatures,
130
+ });
131
+ }
132
+ else {
133
+ return {
134
+ ...rest,
135
+ uniqueId,
136
+ score,
137
+ start,
138
+ end,
139
+ strand,
140
+ refName,
141
+ subfeatures,
142
+ };
143
+ }
170
144
  }
171
- export function isUcscProcessedTranscript(f) {
172
- return f.thickStart && f.blockCount && f.strand !== 0;
145
+ export function arrayify(f) {
146
+ return f !== undefined
147
+ ? typeof f === 'string'
148
+ ? f.split(',').map(f => +f)
149
+ : f
150
+ : undefined;
173
151
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jbrowse/plugin-bed",
3
- "version": "2.16.1",
3
+ "version": "2.18.0",
4
4
  "description": "JBrowse 2 bed adapters, tracks, etc.",
5
5
  "keywords": [
6
6
  "jbrowse",
@@ -55,5 +55,5 @@
55
55
  "distModule": "esm/index.js",
56
56
  "srcModule": "src/index.ts",
57
57
  "module": "esm/index.js",
58
- "gitHead": "c6a658d2344989895543f0456b1cf7dd3b937769"
58
+ "gitHead": "c344ea60099cb7e460b77f15808946b24a7eee74"
59
59
  }