@jbrowse/plugin-bed 2.17.0 → 3.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 (95) hide show
  1. package/dist/BedAdapter/BedAdapter.d.ts +15 -5
  2. package/dist/BedAdapter/BedAdapter.js +7 -10
  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/BedAdapter/index.js +17 -7
  7. package/dist/BedGraphAdapter/BedGraphAdapter.d.ts +24 -0
  8. package/dist/BedGraphAdapter/BedGraphAdapter.js +130 -0
  9. package/dist/BedGraphAdapter/configSchema.d.ts +15 -0
  10. package/dist/BedGraphAdapter/configSchema.js +19 -0
  11. package/dist/BedGraphAdapter/index.d.ts +2 -0
  12. package/dist/BedGraphAdapter/index.js +49 -0
  13. package/dist/BedGraphTabixAdapter/BedGraphTabixAdapter.d.ts +18 -0
  14. package/dist/BedGraphTabixAdapter/BedGraphTabixAdapter.js +108 -0
  15. package/dist/BedGraphTabixAdapter/configSchema.d.ts +29 -0
  16. package/dist/BedGraphTabixAdapter/configSchema.js +34 -0
  17. package/dist/BedGraphTabixAdapter/index.d.ts +2 -0
  18. package/dist/BedGraphTabixAdapter/index.js +49 -0
  19. package/dist/BedTabixAdapter/BedTabixAdapter.d.ts +6 -5
  20. package/dist/BedTabixAdapter/BedTabixAdapter.js +12 -5
  21. package/dist/BedTabixAdapter/configSchema.d.ts +0 -18
  22. package/dist/BedTabixAdapter/configSchema.js +1 -22
  23. package/dist/BedTabixAdapter/index.d.ts +1 -1
  24. package/dist/BedTabixAdapter/index.js +17 -7
  25. package/dist/BedpeAdapter/BedpeAdapter.d.ts +3 -3
  26. package/dist/BedpeAdapter/BedpeAdapter.js +7 -64
  27. package/dist/BedpeAdapter/configSchema.d.ts +0 -7
  28. package/dist/BedpeAdapter/configSchema.js +1 -12
  29. package/dist/BedpeAdapter/index.d.ts +1 -1
  30. package/dist/BedpeAdapter/index.js +17 -7
  31. package/dist/BedpeAdapter/util.d.ts +2 -0
  32. package/dist/BedpeAdapter/util.js +55 -0
  33. package/dist/BigBedAdapter/BigBedAdapter.d.ts +5 -4
  34. package/dist/BigBedAdapter/BigBedAdapter.js +13 -8
  35. package/dist/BigBedAdapter/configSchema.d.ts +0 -9
  36. package/dist/BigBedAdapter/configSchema.js +2 -14
  37. package/dist/BigBedAdapter/index.d.ts +1 -1
  38. package/dist/BigBedAdapter/index.js +17 -7
  39. package/dist/GuessAdapter/index.d.ts +2 -0
  40. package/dist/GuessAdapter/index.js +68 -0
  41. package/dist/generateBedMethylFeature.d.ts +3 -3
  42. package/dist/generateBedMethylFeature.js +6 -6
  43. package/dist/generateRepeatMaskerFeature.js +2 -1
  44. package/dist/generateUcscTranscript.d.ts +1 -1
  45. package/dist/generateUcscTranscript.js +4 -6
  46. package/dist/index.d.ts +1 -1
  47. package/dist/index.js +9 -72
  48. package/dist/util.d.ts +171 -6
  49. package/dist/util.js +65 -61
  50. package/esm/BedAdapter/BedAdapter.d.ts +15 -5
  51. package/esm/BedAdapter/BedAdapter.js +8 -11
  52. package/esm/BedAdapter/configSchema.d.ts +0 -21
  53. package/esm/BedAdapter/configSchema.js +1 -25
  54. package/esm/BedAdapter/index.d.ts +1 -1
  55. package/esm/BedGraphAdapter/BedGraphAdapter.d.ts +24 -0
  56. package/esm/BedGraphAdapter/BedGraphAdapter.js +124 -0
  57. package/esm/BedGraphAdapter/configSchema.d.ts +15 -0
  58. package/esm/BedGraphAdapter/configSchema.js +17 -0
  59. package/esm/BedGraphAdapter/index.d.ts +2 -0
  60. package/esm/BedGraphAdapter/index.js +10 -0
  61. package/esm/BedGraphTabixAdapter/BedGraphTabixAdapter.d.ts +18 -0
  62. package/esm/BedGraphTabixAdapter/BedGraphTabixAdapter.js +105 -0
  63. package/esm/BedGraphTabixAdapter/configSchema.d.ts +29 -0
  64. package/esm/BedGraphTabixAdapter/configSchema.js +32 -0
  65. package/esm/BedGraphTabixAdapter/index.d.ts +2 -0
  66. package/esm/BedGraphTabixAdapter/index.js +10 -0
  67. package/esm/BedTabixAdapter/BedTabixAdapter.d.ts +6 -5
  68. package/esm/BedTabixAdapter/BedTabixAdapter.js +13 -6
  69. package/esm/BedTabixAdapter/configSchema.d.ts +0 -18
  70. package/esm/BedTabixAdapter/configSchema.js +1 -22
  71. package/esm/BedTabixAdapter/index.d.ts +1 -1
  72. package/esm/BedpeAdapter/BedpeAdapter.d.ts +3 -3
  73. package/esm/BedpeAdapter/BedpeAdapter.js +6 -62
  74. package/esm/BedpeAdapter/configSchema.d.ts +0 -7
  75. package/esm/BedpeAdapter/configSchema.js +1 -12
  76. package/esm/BedpeAdapter/index.d.ts +1 -1
  77. package/esm/BedpeAdapter/util.d.ts +2 -0
  78. package/esm/BedpeAdapter/util.js +52 -0
  79. package/esm/BigBedAdapter/BigBedAdapter.d.ts +5 -4
  80. package/esm/BigBedAdapter/BigBedAdapter.js +14 -9
  81. package/esm/BigBedAdapter/configSchema.d.ts +0 -9
  82. package/esm/BigBedAdapter/configSchema.js +2 -14
  83. package/esm/BigBedAdapter/index.d.ts +1 -1
  84. package/esm/GuessAdapter/index.d.ts +2 -0
  85. package/esm/GuessAdapter/index.js +65 -0
  86. package/esm/generateBedMethylFeature.d.ts +3 -3
  87. package/esm/generateBedMethylFeature.js +6 -6
  88. package/esm/generateRepeatMaskerFeature.js +2 -1
  89. package/esm/generateUcscTranscript.d.ts +1 -1
  90. package/esm/generateUcscTranscript.js +4 -6
  91. package/esm/index.d.ts +1 -1
  92. package/esm/index.js +9 -72
  93. package/esm/util.d.ts +171 -6
  94. package/esm/util.js +65 -61
  95. package/package.json +5 -5
package/esm/util.js CHANGED
@@ -1,59 +1,58 @@
1
1
  import { generateBedMethylFeature, isBedMethylFeature, } from './generateBedMethylFeature';
2
- import { generateUcscTranscript, isUcscTranscript, } from './generateUcscTranscript';
3
2
  import { generateRepeatMaskerFeature, isRepeatMaskerDescriptionField, } from './generateRepeatMaskerFeature';
4
- function stringToStrand(f) {
5
- if (f === '-1') {
6
- return -1;
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;
10
+ }
11
+ r.push([fields[i], splitLine[i]]);
7
12
  }
8
- else if (f === '+') {
9
- return 1;
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
+ };
10
25
  }
11
26
  else {
12
- return 0;
27
+ return obj;
13
28
  }
14
29
  }
15
- function defaultParser(fields, line) {
16
- const obj = Object.fromEntries(line.split('\t').map((f, i) => [fields[i], f]));
17
- const { blockStarts, blockCount, chromStarts, thickEnd, thickStart, blockSizes, ...rest } = obj;
18
- return {
19
- ...rest,
20
- blockStarts: arrayify(blockStarts),
21
- chromStarts: arrayify(chromStarts),
22
- blockSizes: arrayify(blockSizes),
23
- thickStart: thickStart ? +thickStart : undefined,
24
- thickEnd: thickEnd ? +thickEnd : undefined,
25
- blockCount: blockCount ? +blockCount : undefined,
26
- };
27
- }
28
30
  export function makeBlocks({ start, uniqueId, refName, chromStarts, blockCount, blockSizes, blockStarts, }) {
29
- if (blockCount) {
30
- const subfeatures = [];
31
- const starts = chromStarts || blockStarts || [];
32
- for (let b = 0; b < blockCount; b++) {
33
- const bmin = (starts[b] || 0) + start;
34
- const bsize = blockSizes === null || blockSizes === void 0 ? void 0 : blockSizes[b];
35
- if (bsize && bsize > 0) {
36
- const bmax = bmin + bsize;
37
- subfeatures.push({
38
- uniqueId: `${uniqueId}-${b}`,
39
- start: bmin,
40
- end: bmax,
41
- refName,
42
- type: 'block',
43
- });
44
- }
31
+ const subfeatures = [];
32
+ const starts = chromStarts || blockStarts || [];
33
+ for (let b = 0; b < blockCount; b++) {
34
+ const bmin = (starts[b] || 0) + start;
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
45
  }
46
- return subfeatures;
47
46
  }
48
- return [];
47
+ return subfeatures;
49
48
  }
50
49
  export function featureData({ line, colRef, colStart, colEnd, scoreColumn, parser, uniqueId, names, }) {
51
50
  const splitLine = line.split('\t');
52
51
  const refName = splitLine[colRef];
53
- const start = +splitLine[colStart];
54
- const end = +splitLine[colEnd] + (colStart === colEnd ? 1 : 0);
52
+ const start = Number.parseInt(splitLine[colStart], 10);
53
+ const end = Number.parseInt(splitLine[colEnd], 10) + (colStart === colEnd ? 1 : 0);
55
54
  return featureData2({
56
- line,
55
+ splitLine,
57
56
  refName,
58
57
  start,
59
58
  end,
@@ -63,34 +62,35 @@ export function featureData({ line, colRef, colStart, colEnd, scoreColumn, parse
63
62
  names,
64
63
  });
65
64
  }
66
- export function featureData2({ line, refName, start, end, parser, uniqueId, scoreColumn, names, }) {
67
- const splitLine = line.split('\t');
65
+ export function featureData2({ splitLine, refName, start, end, parser, uniqueId, scoreColumn, names, }) {
68
66
  const data = names
69
- ? defaultParser(names, line)
70
- : parser.parseLine(line, { uniqueId });
67
+ ? defaultParser(names, splitLine)
68
+ : parser.parseLine(splitLine, { uniqueId });
71
69
  const { strand: strand2, score: score2, chrom: _1, chromStart: _2, chromEnd: _3, ...rest } = data;
72
- const { chromStarts, blockSizes, blockStarts, type, blockCount, thickStart, thickEnd, description, ...rest2 } = rest;
73
70
  const score = scoreColumn ? +data[scoreColumn] : score2 ? +score2 : undefined;
74
- const strand = typeof strand2 === 'string' ? stringToStrand(strand2) : strand2;
75
- const subfeatures = makeBlocks({
76
- start,
77
- uniqueId,
78
- refName,
79
- chromStarts,
80
- blockCount,
81
- blockSizes,
82
- blockStarts,
83
- });
71
+ const strand = typeof strand2 === 'string' ? (strand2 === '-' ? -1 : 1) : strand2;
72
+ const subfeatures = rest.blockCount
73
+ ? makeBlocks({
74
+ start,
75
+ uniqueId,
76
+ refName,
77
+ chromStarts: rest.chromStarts,
78
+ blockCount: rest.blockCount,
79
+ blockSizes: rest.blockSizes,
80
+ blockStarts: rest.blockStarts,
81
+ })
82
+ : undefined;
84
83
  if (isBedMethylFeature({ splitLine, start, end })) {
85
84
  return generateBedMethylFeature({
86
- line,
85
+ splitLine,
87
86
  uniqueId,
88
87
  refName,
89
88
  start,
90
89
  end,
91
90
  });
92
91
  }
93
- else if (isRepeatMaskerDescriptionField(description)) {
92
+ else if (isRepeatMaskerDescriptionField(rest.description)) {
93
+ const { chromStarts, blockSizes, blockStarts, type, blockCount, thickStart, thickEnd, description, ...rest2 } = rest;
94
94
  return generateRepeatMaskerFeature({
95
95
  ...rest2,
96
96
  uniqueId,
@@ -104,7 +104,13 @@ export function featureData2({ line, refName, start, end, parser, uniqueId, scor
104
104
  subfeatures,
105
105
  });
106
106
  }
107
- else if (isUcscTranscript({ strand, blockCount, thickStart })) {
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;
108
114
  return generateUcscTranscript({
109
115
  ...rest,
110
116
  description,
@@ -127,8 +133,6 @@ export function featureData2({ line, refName, start, end, parser, uniqueId, scor
127
133
  return {
128
134
  ...rest,
129
135
  uniqueId,
130
- description,
131
- type,
132
136
  score,
133
137
  start,
134
138
  end,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jbrowse/plugin-bed",
3
- "version": "2.17.0",
3
+ "version": "3.0.0",
4
4
  "description": "JBrowse 2 bed adapters, tracks, etc.",
5
5
  "keywords": [
6
6
  "jbrowse",
@@ -37,10 +37,10 @@
37
37
  },
38
38
  "dependencies": {
39
39
  "@flatten-js/interval-tree": "^1.0.15",
40
- "@gmod/bbi": "^5.0.0",
40
+ "@gmod/bbi": "^6.0.0",
41
41
  "@gmod/bed": "^2.1.2",
42
- "@gmod/bgzf-filehandle": "^1.4.3",
43
- "@gmod/tabix": "^1.5.6"
42
+ "@gmod/bgzf-filehandle": "^2.0.1",
43
+ "@gmod/tabix": "^2.0.0"
44
44
  },
45
45
  "peerDependencies": {
46
46
  "@jbrowse/core": "^2.0.0",
@@ -55,5 +55,5 @@
55
55
  "distModule": "esm/index.js",
56
56
  "srcModule": "src/index.ts",
57
57
  "module": "esm/index.js",
58
- "gitHead": "eed30b5e671f8f7823652d7cecc51aa89226de46"
58
+ "gitHead": "2c6897f1fa732b1db5b094d1dca197e333e95319"
59
59
  }