@genome-spy/core 0.56.1 → 0.58.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 (177) hide show
  1. package/README.md +0 -1
  2. package/dist/bundle/_commonjsHelpers-DjF3Plf2.js +26 -0
  3. package/dist/bundle/index-BftNdA0O.js +27 -0
  4. package/dist/bundle/index-C08YCM2T.js +539 -0
  5. package/dist/bundle/index-CCJIjehY.js +218 -0
  6. package/dist/bundle/index-CalimFw3.js +2131 -0
  7. package/dist/bundle/index-DS2hvLgl.js +3425 -0
  8. package/dist/bundle/index-DTcHjAHp.js +505 -0
  9. package/dist/bundle/index-Dec7VcMU.js +626 -0
  10. package/dist/bundle/index-DnIkxb0L.js +1025 -0
  11. package/dist/bundle/index-DwLfOHEk.js +1319 -0
  12. package/dist/bundle/{index-HGQZ77IK.js → index-Ww3TAo6_.js} +7 -7
  13. package/dist/bundle/{index-CjesiOz_.js → index-vgGDWUPz.js} +24 -24
  14. package/dist/bundle/index.es.js +4185 -5309
  15. package/dist/bundle/index.js +155 -145
  16. package/dist/bundle/long-BviWyoZx.js +2387 -0
  17. package/dist/bundle/remoteFile-BuaqFGWk.js +94 -0
  18. package/dist/schema.json +66 -0
  19. package/dist/src/data/collector.d.ts.map +1 -1
  20. package/dist/src/data/dataFlow.d.ts.map +1 -1
  21. package/dist/src/data/facetNode.d.ts.map +1 -1
  22. package/dist/src/data/flowNode.d.ts.map +1 -1
  23. package/dist/src/data/flowNode.js +2 -2
  24. package/dist/src/data/sources/dataSourceFactory.d.ts +2 -1
  25. package/dist/src/data/sources/dataSourceFactory.d.ts.map +1 -1
  26. package/dist/src/data/sources/dataSourceFactory.js +11 -0
  27. package/dist/src/data/sources/dataUtils.d.ts +3 -3
  28. package/dist/src/data/sources/dataUtils.d.ts.map +1 -1
  29. package/dist/src/data/sources/inlineSource.d.ts.map +1 -1
  30. package/dist/src/data/sources/lazy/bamSource.js +7 -7
  31. package/dist/src/data/sources/lazy/bigBedSource.d.ts.map +1 -1
  32. package/dist/src/data/sources/lazy/gff3Source.d.ts +3 -5
  33. package/dist/src/data/sources/lazy/gff3Source.d.ts.map +1 -1
  34. package/dist/src/data/sources/lazy/gff3Source.js +7 -13
  35. package/dist/src/data/sources/lazy/singleAxisWindowedSource.d.ts.map +1 -1
  36. package/dist/src/data/sources/lazy/tabixSource.d.ts +5 -0
  37. package/dist/src/data/sources/lazy/tabixSource.d.ts.map +1 -1
  38. package/dist/src/data/sources/lazy/tabixSource.js +20 -7
  39. package/dist/src/data/sources/lazy/vcfSource.d.ts +9 -0
  40. package/dist/src/data/sources/lazy/vcfSource.d.ts.map +1 -0
  41. package/dist/src/data/sources/lazy/vcfSource.js +38 -0
  42. package/dist/src/data/sources/lazy/vcfTypes.d.ts +7 -0
  43. package/dist/src/data/sources/namedSource.d.ts.map +1 -1
  44. package/dist/src/data/sources/sequenceSource.d.ts.map +1 -1
  45. package/dist/src/data/sources/urlSource.d.ts.map +1 -1
  46. package/dist/src/data/transforms/aggregate.d.ts.map +1 -1
  47. package/dist/src/data/transforms/aggregateOps.d.ts.map +1 -1
  48. package/dist/src/data/transforms/coverage.d.ts +0 -1
  49. package/dist/src/data/transforms/coverage.d.ts.map +1 -1
  50. package/dist/src/data/transforms/filter.d.ts.map +1 -1
  51. package/dist/src/data/transforms/filterScoredLabels.d.ts.map +1 -1
  52. package/dist/src/data/transforms/linearizeGenomicCoordinate.d.ts.map +1 -1
  53. package/dist/src/data/transforms/linearizeGenomicCoordinate.js +9 -2
  54. package/dist/src/data/transforms/sample.d.ts.map +1 -1
  55. package/dist/src/data/transforms/transformFactory.d.ts.map +1 -1
  56. package/dist/src/encoder/accessor.js +2 -2
  57. package/dist/src/encoder/encoder.d.ts +4 -4
  58. package/dist/src/encoder/encoder.d.ts.map +1 -1
  59. package/dist/src/encoder/encoder.js +1 -0
  60. package/dist/src/fonts/bmFontManager.d.ts +1 -9
  61. package/dist/src/fonts/bmFontManager.d.ts.map +1 -1
  62. package/dist/src/genome/genome.d.ts +3 -3
  63. package/dist/src/genome/genome.d.ts.map +1 -1
  64. package/dist/src/genome/genomeStore.d.ts.map +1 -1
  65. package/dist/src/genome/scaleLocus.d.ts.map +1 -1
  66. package/dist/src/genomeSpy.d.ts.map +1 -1
  67. package/dist/src/genomeSpy.js +27 -2
  68. package/dist/src/gl/arrayBuilder.d.ts.map +1 -1
  69. package/dist/src/gl/colorUtils.js +11 -4
  70. package/dist/src/gl/dataToVertices.d.ts.map +1 -1
  71. package/dist/src/gl/dataToVertices.js +7 -7
  72. package/dist/src/gl/glslScaleGenerator.d.ts +1 -2
  73. package/dist/src/gl/glslScaleGenerator.d.ts.map +1 -1
  74. package/dist/src/gl/glslScaleGenerator.js +14 -14
  75. package/dist/src/gl/webGLHelper.d.ts.map +1 -1
  76. package/dist/src/index.d.ts +1 -2
  77. package/dist/src/index.d.ts.map +1 -1
  78. package/dist/src/index.html +9 -9
  79. package/dist/src/marks/mark.d.ts +0 -1
  80. package/dist/src/marks/mark.d.ts.map +1 -1
  81. package/dist/src/marks/mark.js +2 -2
  82. package/dist/src/marks/markUtils.d.ts.map +1 -1
  83. package/dist/src/marks/rule.js +1 -1
  84. package/dist/src/marks/text.js +2 -2
  85. package/dist/src/scale/scale.d.ts +1 -1
  86. package/dist/src/scale/scale.d.ts.map +1 -1
  87. package/dist/src/scale/scale.js +16 -16
  88. package/dist/src/scale/ticks.d.ts +4 -4
  89. package/dist/src/scale/ticks.d.ts.map +1 -1
  90. package/dist/src/scale/ticks.js +4 -4
  91. package/dist/src/selection/selection.d.ts.map +1 -1
  92. package/dist/src/spec/axis.d.ts +1 -1
  93. package/dist/src/spec/channel.d.ts +1 -1
  94. package/dist/src/spec/data.d.ts +14 -1
  95. package/dist/src/spec/parameter.d.ts +2 -2
  96. package/dist/src/styles/genome-spy.css.d.ts +1 -1
  97. package/dist/src/styles/genome-spy.css.js +1 -1
  98. package/dist/src/styles/genome-spy.scss +4 -2
  99. package/dist/src/tooltip/dataTooltipHandler.d.ts +1 -1
  100. package/dist/src/tooltip/dataTooltipHandler.d.ts.map +1 -1
  101. package/dist/src/tooltip/dataTooltipHandler.js +32 -12
  102. package/dist/src/tooltip/refseqGeneTooltipHandler.d.ts +1 -1
  103. package/dist/src/tooltip/refseqGeneTooltipHandler.d.ts.map +1 -1
  104. package/dist/src/types/viewContext.d.ts +8 -0
  105. package/dist/src/utils/animator.d.ts.map +1 -1
  106. package/dist/src/utils/arrayUtils.d.ts +1 -1
  107. package/dist/src/utils/arrayUtils.d.ts.map +1 -1
  108. package/dist/src/utils/binnedIndex.d.ts.map +1 -1
  109. package/dist/src/utils/cloner.d.ts.map +1 -1
  110. package/dist/src/utils/concatIterables.d.ts.map +1 -1
  111. package/dist/src/utils/debounce.d.ts.map +1 -1
  112. package/dist/src/utils/domainArray.d.ts.map +1 -1
  113. package/dist/src/utils/expression.d.ts.map +1 -1
  114. package/dist/src/utils/expression.js +7 -0
  115. package/dist/src/utils/field.d.ts.map +1 -1
  116. package/dist/src/utils/field.js +32 -1
  117. package/dist/src/utils/indexer.d.ts.map +1 -1
  118. package/dist/src/utils/inertia.d.ts.map +1 -1
  119. package/dist/src/utils/inputBinding.d.ts +1 -1
  120. package/dist/src/utils/inputBinding.d.ts.map +1 -1
  121. package/dist/src/utils/inputBinding.js +18 -16
  122. package/dist/src/utils/iterateNestedMaps.d.ts +1 -1
  123. package/dist/src/utils/iterateNestedMaps.d.ts.map +1 -1
  124. package/dist/src/utils/kWayMerge.d.ts.map +1 -1
  125. package/dist/src/utils/mergeObjects.d.ts.map +1 -1
  126. package/dist/src/utils/propertyCacher.d.ts.map +1 -1
  127. package/dist/src/utils/propertyCoalescer.d.ts.map +1 -1
  128. package/dist/src/utils/ringBuffer.d.ts.map +1 -1
  129. package/dist/src/utils/setOperations.d.ts.map +1 -1
  130. package/dist/src/utils/throttle.d.ts.map +1 -1
  131. package/dist/src/utils/throttle.js +9 -6
  132. package/dist/src/utils/topK.d.ts.map +1 -1
  133. package/dist/src/utils/transition.d.ts.map +1 -1
  134. package/dist/src/utils/trees.d.ts.map +1 -1
  135. package/dist/src/utils/ui/tooltip.d.ts.map +1 -1
  136. package/dist/src/utils/url.js +2 -2
  137. package/dist/src/utils/variableTools.d.ts.map +1 -1
  138. package/dist/src/view/axisResolution.d.ts.map +1 -1
  139. package/dist/src/view/axisView.d.ts.map +1 -1
  140. package/dist/src/view/concatView.js +4 -4
  141. package/dist/src/view/containerView.d.ts.map +1 -1
  142. package/dist/src/view/facetView.d.ts +2 -2
  143. package/dist/src/view/facetView.d.ts.map +1 -1
  144. package/dist/src/view/flowBuilder.d.ts.map +1 -1
  145. package/dist/src/view/gridView.d.ts +1 -1
  146. package/dist/src/view/gridView.d.ts.map +1 -1
  147. package/dist/src/view/gridView.js +5 -5
  148. package/dist/src/view/layout/flexLayout.d.ts.map +1 -1
  149. package/dist/src/view/layout/rectangle.d.ts.map +1 -1
  150. package/dist/src/view/layout/rectangle.js +2 -2
  151. package/dist/src/view/paramMediator.d.ts +3 -3
  152. package/dist/src/view/paramMediator.d.ts.map +1 -1
  153. package/dist/src/view/renderingContext/bufferedViewRenderingContext.d.ts.map +1 -1
  154. package/dist/src/view/renderingContext/compositeViewRenderingContext.d.ts.map +1 -1
  155. package/dist/src/view/renderingContext/simpleViewRenderingContext.d.ts.map +1 -1
  156. package/dist/src/view/scaleResolution.d.ts.map +1 -1
  157. package/dist/src/view/scaleResolution.js +29 -9
  158. package/dist/src/view/testUtils.d.ts +6 -2
  159. package/dist/src/view/testUtils.d.ts.map +1 -1
  160. package/dist/src/view/unitView.d.ts.map +1 -1
  161. package/dist/src/view/unitView.js +14 -0
  162. package/dist/src/view/view.d.ts.map +1 -1
  163. package/dist/src/view/view.js +3 -3
  164. package/dist/src/view/viewFactory.d.ts.map +1 -1
  165. package/dist/src/view/viewFactory.js +5 -5
  166. package/dist/src/view/viewUtils.d.ts.map +1 -1
  167. package/package.json +9 -8
  168. package/dist/bundle/_commonjsHelpers-DSebQMb9.js +0 -28
  169. package/dist/bundle/index-B6haPltu.js +0 -1042
  170. package/dist/bundle/index-BhtH2nrr.js +0 -513
  171. package/dist/bundle/index-BpoXW6_f.js +0 -1370
  172. package/dist/bundle/index-COovE1Oo.js +0 -3997
  173. package/dist/bundle/index-WACuLhO6.js +0 -2136
  174. package/dist/bundle/index-_ftu0t0z.js +0 -500
  175. package/dist/bundle/index-nCZhu2o-.js +0 -613
  176. package/dist/bundle/long-BXK3UEks.js +0 -2375
  177. package/dist/bundle/remoteFile-DuIsnepi.js +0 -90
@@ -0,0 +1,94 @@
1
+ import { b as d } from "./index-BftNdA0O.js";
2
+ function u(n) {
3
+ return (typeof n == "object" && n !== null && "message" in n ? n.message : `${n}`).replace(/\.$/, "");
4
+ }
5
+ class $ {
6
+ async getBufferFromResponse(e) {
7
+ const t = await e.arrayBuffer();
8
+ return d.Buffer.from(t);
9
+ }
10
+ constructor(e, t = {}) {
11
+ this.baseOverrides = {}, this.url = e;
12
+ const r = t.fetch || globalThis.fetch.bind(globalThis);
13
+ if (!r)
14
+ throw new TypeError("no fetch function supplied, and none found in global environment");
15
+ t.overrides && (this.baseOverrides = t.overrides), this.fetchImplementation = r;
16
+ }
17
+ async fetch(e, t) {
18
+ let r;
19
+ try {
20
+ r = await this.fetchImplementation(e, t);
21
+ } catch (s) {
22
+ if (`${s}`.includes("Failed to fetch")) {
23
+ console.warn(`generic-filehandle: refetching ${e} to attempt to work around chrome CORS header caching bug`);
24
+ try {
25
+ r = await this.fetchImplementation(e, {
26
+ ...t,
27
+ cache: "reload"
28
+ });
29
+ } catch (i) {
30
+ throw new Error(`${u(i)} fetching ${e}`, { cause: i });
31
+ }
32
+ } else
33
+ throw new Error(`${u(s)} fetching ${e}`, { cause: s });
34
+ }
35
+ return r;
36
+ }
37
+ async read(e, t = 0, r, s = 0, i = {}) {
38
+ const { headers: c = {}, signal: o, overrides: f = {} } = i;
39
+ r < 1 / 0 ? c.range = `bytes=${s}-${s + r}` : r === 1 / 0 && s !== 0 && (c.range = `bytes=${s}-`);
40
+ const a = await this.fetch(this.url, {
41
+ ...this.baseOverrides,
42
+ ...f,
43
+ headers: {
44
+ ...c,
45
+ ...f.headers,
46
+ ...this.baseOverrides.headers
47
+ },
48
+ method: "GET",
49
+ redirect: "follow",
50
+ mode: "cors",
51
+ signal: o
52
+ });
53
+ if (!a.ok)
54
+ throw new Error(`HTTP ${a.status} fetching ${this.url}`);
55
+ if (a.status === 200 && s === 0 || a.status === 206) {
56
+ const l = await this.getBufferFromResponse(a), g = l.copy(e, t, 0, Math.min(r, l.length)), w = a.headers.get("content-range"), h = /\/(\d+)$/.exec(w || "");
57
+ return h != null && h[1] && (this._stat = { size: parseInt(h[1], 10) }), { bytesRead: g, buffer: e };
58
+ }
59
+ throw a.status === 200 ? new Error(`${this.url} fetch returned status 200, expected 206`) : new Error(`HTTP ${a.status} fetching ${this.url}`);
60
+ }
61
+ async readFile(e = {}) {
62
+ let t, r;
63
+ typeof e == "string" ? (t = e, r = {}) : (t = e.encoding, r = e, delete r.encoding);
64
+ const { headers: s = {}, signal: i, overrides: c = {} } = r, o = await this.fetch(this.url, {
65
+ headers: s,
66
+ method: "GET",
67
+ redirect: "follow",
68
+ mode: "cors",
69
+ signal: i,
70
+ ...this.baseOverrides,
71
+ ...c
72
+ });
73
+ if (o.status !== 200)
74
+ throw new Error(`HTTP ${o.status} fetching ${this.url}`);
75
+ if (t === "utf8")
76
+ return o.text();
77
+ if (t)
78
+ throw new Error(`unsupported encoding: ${t}`);
79
+ return this.getBufferFromResponse(o);
80
+ }
81
+ async stat() {
82
+ if (!this._stat) {
83
+ const e = d.Buffer.allocUnsafe(10);
84
+ if (await this.read(e, 0, 10, 0), !this._stat)
85
+ throw new Error(`unable to determine size of file at ${this.url}`);
86
+ }
87
+ return this._stat;
88
+ }
89
+ async close() {
90
+ }
91
+ }
92
+ export {
93
+ $ as R
94
+ };
package/dist/schema.json CHANGED
@@ -2905,6 +2905,13 @@
2905
2905
  "Gff3Data": {
2906
2906
  "additionalProperties": false,
2907
2907
  "properties": {
2908
+ "addChrPrefix": {
2909
+ "description": "Add a `chr` (boolean) or custom (string) prefix to the chromosome names in the Tabix file.\n\n__Default value:__ `false`",
2910
+ "type": [
2911
+ "boolean",
2912
+ "string"
2913
+ ]
2914
+ },
2908
2915
  "channel": {
2909
2916
  "$ref": "#/definitions/PrimaryPositionalChannel",
2910
2917
  "description": "Which channel's scale domain to monitor.\n\n__Default value:__ `\"x\"`"
@@ -3654,6 +3661,9 @@
3654
3661
  },
3655
3662
  {
3656
3663
  "$ref": "#/definitions/Gff3Data"
3664
+ },
3665
+ {
3666
+ "$ref": "#/definitions/VcfData"
3657
3667
  }
3658
3668
  ]
3659
3669
  },
@@ -8821,6 +8831,62 @@
8821
8831
  ],
8822
8832
  "type": "object"
8823
8833
  },
8834
+ "VcfData": {
8835
+ "additionalProperties": false,
8836
+ "properties": {
8837
+ "addChrPrefix": {
8838
+ "description": "Add a `chr` (boolean) or custom (string) prefix to the chromosome names in the Tabix file.\n\n__Default value:__ `false`",
8839
+ "type": [
8840
+ "boolean",
8841
+ "string"
8842
+ ]
8843
+ },
8844
+ "channel": {
8845
+ "$ref": "#/definitions/PrimaryPositionalChannel",
8846
+ "description": "Which channel's scale domain to monitor.\n\n__Default value:__ `\"x\"`"
8847
+ },
8848
+ "debounce": {
8849
+ "anyOf": [
8850
+ {
8851
+ "type": "number"
8852
+ },
8853
+ {
8854
+ "$ref": "#/definitions/ExprRef"
8855
+ }
8856
+ ],
8857
+ "description": "Debounce time for data updates, in milliseconds. Debouncing prevents excessive data updates when the user is zooming or panning around.\n\n__Default value:__ `200`"
8858
+ },
8859
+ "debounceMode": {
8860
+ "description": "The debounce mode for data updates. If set to `\"domain\"`, domain change events (panning and zooming) will be debounced. If set to `\"window\"`, the data fetches initiated by the changes to the visible window (or tile) will be debounced. If your data is small, the `\"window\"` is better as it will start fetching data while the user is still panning around, resulting in a shorter perceived latency.\n\n__Default value:__ `\"window\"`",
8861
+ "enum": [
8862
+ "domain",
8863
+ "window"
8864
+ ],
8865
+ "type": "string"
8866
+ },
8867
+ "indexUrl": {
8868
+ "description": "Url of the tabix index file.\n\n__Default value:__ `url` + `\".tbi\"`.",
8869
+ "type": "string"
8870
+ },
8871
+ "type": {
8872
+ "const": "vcf",
8873
+ "type": "string"
8874
+ },
8875
+ "url": {
8876
+ "description": "Url of the bgzip compressed file.",
8877
+ "type": "string"
8878
+ },
8879
+ "windowSize": {
8880
+ "description": "Size of each chunk when fetching the Tabix file. Data is only fetched when the length of the visible domain smaller than the window size.\n\n__Default value:__ `30000000`",
8881
+ "type": "number"
8882
+ }
8883
+ },
8884
+ "required": [
8885
+ "type",
8886
+ "url"
8887
+ ],
8888
+ "type": "object"
8889
+ },
8824
8890
  "ViewBackground": {
8825
8891
  "additionalProperties": false,
8826
8892
  "properties": {
@@ -1 +1 @@
1
- {"version":3,"file":"collector.d.ts","sourceRoot":"","sources":["../../../src/data/collector.js"],"names":[],"mappings":"AAUA;;;;;GAKG;AACH;IAkCI;;OAEG;IACH,qBAFW,OAAO,sBAAsB,EAAE,aAAa,EAetD;IAVG,qDAA2C;IAE3C,2CAA2C;IAC3C,WADW,QAAU,SAAS,KAAE,IAAI,CAAC,EAAE,CACpB;IAGnB,yFAAyF;IACzF,cADW,IAAI,OAAO,oBAAoB,EAAE,MAAM,EAAE,+BAAO,CACN;IAuHzD;;OAEG;IACH,mDAmBC;IAED;;;OAGG;IACH,6DAF6B,IAAI,QAUhC;IAED;;OAEG;IACH,uBAMC;IA8CD;;;;OAIG;IACH,8BAFW,MAAM,iCA4BhB;;CACJ;qBA/SyD,eAAe"}
1
+ {"version":3,"file":"collector.d.ts","sourceRoot":"","sources":["../../../src/data/collector.js"],"names":[],"mappings":"AAUA;;;;;GAKG;AACH;IAkCI;;OAEG;IACH,qBAFW,OAAO,sBAAsB,EAAE,aAAa,EAetD;IAVG,qDAA2C;IAE3C,2CAA2C;IAC3C,WADW,CAAC,CAAS,IAAS,EAAT,SAAS,KAAE,IAAI,CAAC,EAAE,CACpB;IAGnB,yFAAyF;IACzF,cADW,GAAG,CAAC,OAAO,oBAAoB,EAAE,MAAM,EAAE,+BAAO,CACN;IAuHzD;;OAEG;IACH,WAFa,QAAQ,+BAAO,CAqB3B;IAED;;;OAGG;IACH,mBAFW,CAAC,KAAK,+BAAO,KAAK,IAAI,QAUhC;IAED;;OAEG;IACH,uBAMC;IA8CD;;;;OAIG;IACH,8BAFW,MAAM,iCA4BhB;;CACJ;qBA/SyD,eAAe"}
@@ -1 +1 @@
1
- {"version":3,"file":"dataFlow.d.ts","sourceRoot":"","sources":["../../../src/data/dataFlow.js"],"names":[],"mappings":"AAEA;;;GAGG;AACH;IAEQ,gEAAgE;IAChE,oBADW,IAAI,CAAC,EAAE,OAAO,yBAAyB,EAAE,OAAO,CAAC,CACzB;IAEnC,uDAAuD;IACvD,mBADW,IAAI,CAAC,EAAE,OAAO,gBAAgB,EAAE,OAAO,CAAC,CACjB;IAElC,0EAA0E;IAC1E,YADW,IAAI,CAAC,EAAE,QAAU,OAAO,gBAAgB,EAAE,OAAO,KAAE,IAAI,CAAC,EAAE,CAAC,CAC3C;IAG/B,+DAEC;IAED,qDAEC;IAED;;;;;OAKG;IACH,6BAHoB,OAAO,gBAAgB,EAAE,OAAO,KAAE,IAAI,OAC/C,CAAC,QAUX;IAED;;;;OAIG;IACH,kCAHW,OAAO,gBAAgB,EAAE,OAAO,OAChC,CAAC,QAUX;IAED;;;;OAIG;IACH,0BAHW,OAAO,yBAAyB,EAAE,OAAO,OACzC,CAAC,QAIX;IAED;;;OAGG;IACH,yBAFW,CAAC,6CAIX;IAED;;;OAGG;IACH,0BAFW,MAAM;;;MAiChB;IAED;;;;OAIG;IACH,wBAHW,OAAO,gBAAgB,EAAE,OAAO,OAChC,CAAC,QAOX;IAED;;;OAGG;IACH,wBAFW,CAAC,oCAIX;IAED;;;;OAIG;IACH,mBAIC;CACJ;wBA7IuB,0BAA0B"}
1
+ {"version":3,"file":"dataFlow.d.ts","sourceRoot":"","sources":["../../../src/data/dataFlow.js"],"names":[],"mappings":"AAEA;;;GAGG;AACH,8BAHa,CAAC;IAKN,gEAAgE;IAChE,oBADW,GAAG,CAAC,CAAC,EAAE,OAAO,yBAAyB,EAAE,OAAO,CAAC,CACzB;IAEnC,uDAAuD;IACvD,mBADW,GAAG,CAAC,CAAC,EAAE,OAAO,gBAAgB,EAAE,OAAO,CAAC,CACjB;IAElC,0EAA0E;IAC1E,YADW,GAAG,CAAC,CAAC,EAAE,CAAC,CAAS,IAAgC,EAAhC,OAAO,gBAAgB,EAAE,OAAO,KAAE,IAAI,CAAC,EAAE,CAAC,CAC3C;IAG/B,+DAEC;IAED,qDAEC;IAED;;;;;OAKG;IACH,sBAHW,CAAS,IAAgC,EAAhC,OAAO,gBAAgB,EAAE,OAAO,KAAE,IAAI,OAC/C,CAAC,QAUX;IAED;;;;OAIG;IACH,kCAHW,OAAO,gBAAgB,EAAE,OAAO,OAChC,CAAC,QAUX;IAED;;;;OAIG;IACH,0BAHW,OAAO,yBAAyB,EAAE,OAAO,OACzC,CAAC,QAIX;IAED;;;OAGG;IACH,yBAFW,CAAC,6CAIX;IAED;;;OAGG;IACH,0BAFW,MAAM;;;MAiChB;IAED;;;;OAIG;IACH,wBAHW,OAAO,gBAAgB,EAAE,OAAO,OAChC,CAAC,QAOX;IAED;;;OAGG;IACH,wBAFW,CAAC,oCAIX;IAED;;;;OAIG;IACH,mBAIC;CACJ;wBA7IuB,0BAA0B"}
@@ -1 +1 @@
1
- {"version":3,"file":"facetNode.d.ts","sourceRoot":"","sources":["../../../src/data/facetNode.js"],"names":[],"mappings":"AAEA;;;GAGG;AACH;IACI;;OAEG;IACH,oBAFW,WAAW,EAOrB;IAFG,yCAAyC;IACzC,UADW,IAAI,GAAG,GAAG,GAAG,EAAE,EAAE,QAAQ,CAAC,CACZ;CAEhC;;aAZS,MAAM,EAAE;;qBAJG,eAAe"}
1
+ {"version":3,"file":"facetNode.d.ts","sourceRoot":"","sources":["../../../src/data/facetNode.js"],"names":[],"mappings":"AAEA;;;GAGG;AACH;IACI;;OAEG;IACH,oBAFW,WAAW,EAOrB;IAFG,yCAAyC;IACzC,UADW,GAAG,CAAC,GAAG,GAAG,GAAG,EAAE,EAAE,QAAQ,CAAC,CACZ;CAEhC;;aAZS,MAAM,EAAE;;qBAJG,eAAe"}
@@ -1 +1 @@
1
- {"version":3,"file":"flowNode.d.ts","sourceRoot":"","sources":["../../../src/data/flowNode.js"],"names":[],"mappings":"AAuUA;;;GAGG;AACH,uCAHW,OAAO,uBAAuB,EAAE,SAAS,0DAKnD;AAED;;;GAGG;AACH,wCAHW,OAAO,uBAAuB,EAAE,SAAS,2DAKnD;AAnVD;;;GAGG;AACH,qCAAsC;AAEtC;;;GAGG;AACH,uCAAwC;AAExC;;;GAGG;AACH,uCAAwC;AAExC;;GAEG;AAEH;;;;;GAKG;AACH;IA2BI;;OAEG;IACH,oCAFW,qBAAqB,EAa/B;IAxCD;;QAEI,oBAAoB;eAAT,KAAK;MAElB;IAEF;;;;OAIG;IACH,uBAFU,qBAAqB,CAEF;IAE7B,uBAEC;IAED;;;;OAIG;IACH,oBAEC;IAQG,yBAAyB;IACzB,UADW,QAAQ,EAAE,CACH;IAElB,uBAAuB;IACvB,QADW,QAAQ,CACI;IAEvB,2CAA2C;IAC3C,mBAAsB;IAG1B;;;OAGG;IACH,cASC;IAED;;;OAGG;IACH,mBAEC;IAgOD;;;OAGG;IACH,4BAHW,KAAK,QAKf;IA7MD;;;OAGG;IACH,kBAFW,QAAQ,QAIlB;IAED;;;OAGG;IACH,gBAFW,QAAQ,QAUlB;IAED;;OAEG;IACH,YAFW,QAAQ,QAQlB;IAED;;OAEG;IACH,6BAFW,QAAQ,QAMlB;IAED;;OAEG;IACH,0BAFW,QAAQ,QAalB;IAED;;;OAGG;IACH,mBAFW,QAAQ,QAWlB;IAED;;OAEG;IACH,eAiBC;IAED,kBAEC;IAED,uBAEC;IAED,sBAEC;IAED;;;;OAIG;IACH,eAFW,QAAU,QAAQ,KAAE,IAAI,CAAC,GAAG;QAAE,aAAa,CAAC,SAAW,QAAQ,KAAE,IAAI,CAAA;KAAC,QAchF;IAED;;;OAGG;IACH,wBAHW,MAAM,GACJ,MAAM,CAWlB;IAED;;;OAGG;IACH,cAFW,KAAK,QAKf;IAED,iBAMC;IAED;;;;OAIG;IACH,sBAFW,OAAO,uBAAuB,EAAE,SAAS,QAMnD;IAED;;;OAGG;IACH,0EASC;IAED;;;;OAIG;IACH,8BAQC;;CASJ;oCAhTY;IAAC,aAAa,EAAE,OAAO,0BAA0B,EAAE,OAAO,CAAA;CAAC;;;;oBAM3D,OAAO,MAAM,EAAE,GAAG,CAAC;;;;mBACnB,KAAK,EAAE"}
1
+ {"version":3,"file":"flowNode.d.ts","sourceRoot":"","sources":["../../../src/data/flowNode.js"],"names":[],"mappings":"AAuUA;;;GAGG;AACH,uCAHW,OAAO,uBAAuB,EAAE,SAAS,GACvC,SAAS,IAAI,OAAO,uBAAuB,EAAE,SAAS,CAIlE;AAED;;;GAGG;AACH,wCAHW,OAAO,uBAAuB,EAAE,SAAS,GACvC,SAAS,IAAI,OAAO,uBAAuB,EAAE,UAAU,CAInE;AAnVD;;;GAGG;AACH,qCAAsC;AAEtC;;;GAGG;AACH,uCAAwC;AAExC;;;GAGG;AACH,uCAAwC;AAExC;;GAEG;AAEH;;;;;GAKG;AACH;IA2BI;;OAEG;IACH,oCAFW,qBAAqB,EAa/B;IAxCD;;QAEI,oBAAoB;eAAT,KAAK;MAElB;IAEF;;;;OAIG;IACH,uBAFU,qBAAqB,CAEF;IAE7B,uBAEC;IAED;;;;OAIG;IACH,oBAEC;IAQG,yBAAyB;IACzB,UADW,QAAQ,EAAE,CACH;IAElB,uBAAuB;IACvB,QADW,QAAQ,CACI;IAEvB,2CAA2C;IAC3C,mBAAsB;IAG1B;;;OAGG;IACH,cASC;IAED;;;OAGG;IACH,mBAEC;IAgOD;;;OAGG;IACH,4BAHW,KAAK,QAKf;IA7MD;;;OAGG;IACH,kBAFW,QAAQ,QAIlB;IAED;;;OAGG;IACH,gBAFW,QAAQ,QAUlB;IAED;;OAEG;IACH,YAFW,QAAQ,QAQlB;IAED;;OAEG;IACH,6BAFW,QAAQ,QAMlB;IAED;;OAEG;IACH,0BAFW,QAAQ,QAalB;IAED;;;OAGG;IACH,mBAFW,QAAQ,QAWlB;IAED;;OAEG;IACH,eAiBC;IAED,kBAEC;IAED,uBAEC;IAED,sBAEC;IAED;;;;OAIG;IACH,eAFW,CAAC,CAAS,IAAQ,EAAR,QAAQ,KAAE,IAAI,CAAC,GAAG;QAAE,aAAa,CAAC,EAAE,CAAS,IAAQ,EAAR,QAAQ,KAAE,IAAI,CAAA;KAAC,QAchF;IAED;;;OAGG;IACH,wBAHW,MAAM,GACJ,MAAM,CAWlB;IAED;;;OAGG;IACH,cAFW,KAAK,QAKf;IAED,iBAMC;IAED;;;;OAIG;IACH,sBAFW,OAAO,uBAAuB,EAAE,SAAS,QAMnD;IAED;;;OAGG;IACH,0EASC;IAED;;;;OAIG;IACH,8BAQC;;CASJ;oCAhTY;IAAC,aAAa,EAAE,OAAO,0BAA0B,EAAE,OAAO,CAAA;CAAC;;;;oBAM3D,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;;;;mBACnB,KAAK,EAAE"}
@@ -252,9 +252,9 @@ export default class FlowNode {
252
252
  .map((child) => child.subtreeToString(depth + 1))
253
253
  .join("");
254
254
  return `${" ".repeat(depth * 2)}* ${this.label}${
255
- ("identifier" in this && this.identifier
255
+ "identifier" in this && this.identifier
256
256
  ? ": " + this.identifier
257
- : "") ?? ""
257
+ : ""
258
258
  } \n${childTree}`;
259
259
  }
260
260
 
@@ -2,7 +2,7 @@
2
2
  * @param {Partial<import("../../spec/data.js").Data>} params
3
3
  * @param {import("../../view/view.js").default} view
4
4
  */
5
- export default function createDataSource(params: Partial<import("../../spec/data.js").Data>, view: import("../../view/view.js").default): InlineSource | UrlSource | SequenceSource | AxisTickSource | AxisGenomeSource | IndexedFastaSource | BigWigSource | BigBedSource | BamSource | Gff3Source;
5
+ export default function createDataSource(params: Partial<import("../../spec/data.js").Data>, view: import("../../view/view.js").default): InlineSource | UrlSource | SequenceSource | AxisTickSource | AxisGenomeSource | IndexedFastaSource | BigWigSource | BigBedSource | BamSource | Gff3Source | VcfSource;
6
6
  import InlineSource from "./inlineSource.js";
7
7
  import UrlSource from "./urlSource.js";
8
8
  import SequenceSource from "./sequenceSource.js";
@@ -13,4 +13,5 @@ import BigWigSource from "./lazy/bigWigSource.js";
13
13
  import BigBedSource from "./lazy/bigBedSource.js";
14
14
  import BamSource from "./lazy/bamSource.js";
15
15
  import Gff3Source from "./lazy/gff3Source.js";
16
+ import VcfSource from "./lazy/vcfSource.js";
16
17
  //# sourceMappingURL=dataSourceFactory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dataSourceFactory.d.ts","sourceRoot":"","sources":["../../../../src/data/sources/dataSourceFactory.js"],"names":[],"mappings":"AAWA;;;GAGG;AACH,iDAHW,QAAQ,OAAO,oBAAoB,EAAE,IAAI,CAAC,QAC1C,OAAO,oBAAoB,EAAE,OAAO,6JAgB9C;yBA7B0C,mBAAmB;sBACzB,gBAAgB;2BACD,qBAAqB;2BAC9C,0BAA0B;6BACxB,4BAA4B;+BAC1B,8BAA8B;yBACpC,wBAAwB;yBACxB,wBAAwB;sBAC3B,qBAAqB;uBACpB,sBAAsB"}
1
+ {"version":3,"file":"dataSourceFactory.d.ts","sourceRoot":"","sources":["../../../../src/data/sources/dataSourceFactory.js"],"names":[],"mappings":"AAYA;;;GAGG;AACH,iDAHW,OAAO,CAAC,OAAO,oBAAoB,EAAE,IAAI,CAAC,QAC1C,OAAO,oBAAoB,EAAE,OAAO,yKAgB9C;yBA9B0C,mBAAmB;sBACzB,gBAAgB;2BACD,qBAAqB;2BAC9C,0BAA0B;6BACxB,4BAA4B;+BAC1B,8BAA8B;yBACpC,wBAAwB;yBACxB,wBAAwB;sBAC3B,qBAAqB;uBACpB,sBAAsB;sBACvB,qBAAqB"}
@@ -8,6 +8,7 @@ import BigWigSource from "./lazy/bigWigSource.js";
8
8
  import BigBedSource from "./lazy/bigBedSource.js";
9
9
  import BamSource from "./lazy/bamSource.js";
10
10
  import Gff3Source from "./lazy/gff3Source.js";
11
+ import VcfSource from "./lazy/vcfSource.js";
11
12
 
12
13
  /**
13
14
  * @param {Partial<import("../../spec/data.js").Data>} params
@@ -100,6 +101,14 @@ function isGff3Source(params) {
100
101
  return params?.type == "gff3";
101
102
  }
102
103
 
104
+ /**
105
+ * @param {import("../../spec/data.js").LazyDataParams} params
106
+ * @returns {params is import("../../spec/data.js").VcfData}
107
+ */
108
+ function isVcfSource(params) {
109
+ return params?.type == "vcf";
110
+ }
111
+
103
112
  /**
104
113
  * @param {import("../../spec/data.js").LazyDataParams} params
105
114
  * @param {import("../../view/view.js").default} view
@@ -119,6 +128,8 @@ function createLazyDataSource(params, view) {
119
128
  return new BamSource(params, view);
120
129
  } else if (isGff3Source(params)) {
121
130
  return new Gff3Source(params, view);
131
+ } else if (isVcfSource(params)) {
132
+ return new VcfSource(params, view);
122
133
  }
123
134
 
124
135
  throw new Error(
@@ -7,15 +7,15 @@
7
7
  */
8
8
  export function getFormat(params: import("../../spec/data.js").DataSource): {
9
9
  type?: "csv" | "tsv";
10
- parse?: import("../../spec/data.js").Parse;
10
+ parse?: import("../../spec/data.js").Parse | null;
11
11
  } | {
12
12
  type?: "dsv";
13
13
  delimiter: string;
14
- parse?: import("../../spec/data.js").Parse;
14
+ parse?: import("../../spec/data.js").Parse | null;
15
15
  } | {
16
16
  type?: "json";
17
17
  property?: string;
18
- parse?: import("../../spec/data.js").Parse;
18
+ parse?: import("../../spec/data.js").Parse | null;
19
19
  } | {
20
20
  type: string;
21
21
  };
@@ -1 +1 @@
1
- {"version":3,"file":"dataUtils.d.ts","sourceRoot":"","sources":["../../../../src/data/sources/dataUtils.js"],"names":[],"mappings":"AAIA;;;;;;GAMG;AACH,kCAHW,OAAO,oBAAoB,EAAE,UAAU;;;;;;;;;;;;;EAsBjD;AAED;;;GAGG;AACH,mCAHW,MAAM,GACJ,MAAM,CAIlB;AAED;;GAEG;AACH,wCAFW,MAAM,GAAG,MAAM,EAAE,UAU3B;AAWD;;;GAGG;AACH,4CAHW,OAAO,oBAAoB,EAAE,UAAU,4DAKjD;AAED;;;GAGG;AACH,4CAHW,OAAO,oBAAoB,EAAE,UAAU,4DAKjD;AAED;;;GAGG;AACH,6CAHW,OAAO,oBAAoB,EAAE,UAAU,6DAKjD;AAED;;;;GAIG;AACH,sCAHW,OAAO,oBAAoB,EAAE,UAAU,sDAKjD;AAxCM,+BAAgC,GAAG,QAI3B,OAAO,uBAAuB,EAAE,MAAM;;UAGtB,OAAO,gBAAgB,EAAE,KAAK,qCANR"}
1
+ {"version":3,"file":"dataUtils.d.ts","sourceRoot":"","sources":["../../../../src/data/sources/dataUtils.js"],"names":[],"mappings":"AAIA;;;;;;GAMG;AACH,kCAHW,OAAO,oBAAoB,EAAE,UAAU;;;;;;;;;;;;;EAsBjD;AAED;;;GAGG;AACH,mCAHW,MAAM,GACJ,MAAM,CAIlB;AAED;;GAEG;AACH,wCAFW,MAAM,GAAG,MAAM,EAAE,UAU3B;AAWD;;;GAGG;AACH,4CAHW,OAAO,oBAAoB,EAAE,UAAU,GACtC,UAAU,IAAI,OAAO,oBAAoB,EAAE,aAAa,CAInE;AAED;;;GAGG;AACH,4CAHW,OAAO,oBAAoB,EAAE,UAAU,GACtC,UAAU,IAAI,OAAO,oBAAoB,EAAE,aAAa,CAInE;AAED;;;GAGG;AACH,6CAHW,OAAO,oBAAoB,EAAE,UAAU,GACtC,UAAU,IAAI,OAAO,oBAAoB,EAAE,cAAc,CAIpE;AAED;;;;GAIG;AACH,sCAHW,OAAO,oBAAoB,EAAE,UAAU,GACtC,UAAU,IAAI,OAAO,oBAAoB,EAAE,OAAO,CAI7D;AAxCM,+BAAgC,GAAG,QAI3B,OAAO,uBAAuB,EAAE,MAAM;;UAGtB,OAAO,gBAAgB,EAAE,KAAK,qCANR"}
@@ -1 +1 @@
1
- {"version":3,"file":"inlineSource.d.ts","sourceRoot":"","sources":["../../../../src/data/sources/inlineSource.js"],"names":[],"mappings":"AAIA;;;GAGG;AACH,mCAHW,QAAQ,OAAO,oBAAoB,EAAE,IAAI,CAAC,mDAKpD;AAED;IACI;;;OAGG;IACH,oBAHW,OAAO,oBAAoB,EAAE,UAAU,QACvC,OAAO,oBAAoB,EAAE,OAAO,EAY9C;IAPG,gDAAoB;IAaxB;;OAEG;IACH,qBASC;IAED,0BAiCC;CAKJ;uBAnFsB,iBAAiB"}
1
+ {"version":3,"file":"inlineSource.d.ts","sourceRoot":"","sources":["../../../../src/data/sources/inlineSource.js"],"names":[],"mappings":"AAIA;;;GAGG;AACH,mCAHW,OAAO,CAAC,OAAO,oBAAoB,EAAE,IAAI,CAAC,GACxC,IAAI,IAAI,OAAO,oBAAoB,EAAE,UAAU,CAI3D;AAED;IACI;;;OAGG;IACH,oBAHW,OAAO,oBAAoB,EAAE,UAAU,QACvC,OAAO,oBAAoB,EAAE,OAAO,EAY9C;IAPG,gDAAoB;IAaxB;;OAEG;IACH,qBASC;IAED,0BAiCC;CAKJ;uBAnFsB,iBAAiB"}
@@ -92,13 +92,13 @@ export default class BamSource extends SingleAxisWindowedSource {
92
92
  .then((records) =>
93
93
  records.map((record) => ({
94
94
  chrom: d.chrom,
95
- start: record.get("start"),
96
- end: record.get("end"),
97
- name: record.get("name"),
98
- MD: record.get("MD"),
99
- cigar: record.get("cigar"),
100
- mapq: record.get("mq"),
101
- strand: record.get("strand") === 1 ? "+" : "-",
95
+ start: record.start,
96
+ end: record.end,
97
+ name: record.name,
98
+ //MD: record.get("MD"),
99
+ cigar: record.CIGAR,
100
+ mapq: record.mq,
101
+ strand: record.strand === 1 ? "+" : "-",
102
102
  }))
103
103
  )
104
104
  );
@@ -1 +1 @@
1
- {"version":3,"file":"bigBedSource.d.ts","sourceRoot":"","sources":["../../../../../src/data/sources/lazy/bigBedSource.js"],"names":[],"mappings":"AAOA;IAUI;;;OAGG;IACH,oBAHW,OAAO,uBAAuB,EAAE,UAAU,QAC1C,OAAO,uBAAuB,EAAE,OAAO,EAmCjD;IA9CD,0CAA0C;IAC1C,QADW,OAAO,WAAW,EAAE,OAAO,CAC/B;IAEP,yCAAyC;IACzC,KADW,OAAO,WAAW,EAAE,MAAM,CACjC;IAEJ,4GAA4G;IAC5G,WADW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,MAAM,EAAE,GAAG,CAAC,CAC9F;IA8BN,mDAA6B;;CAwFpC;qCAhIoC,+BAA+B"}
1
+ {"version":3,"file":"bigBedSource.d.ts","sourceRoot":"","sources":["../../../../../src/data/sources/lazy/bigBedSource.js"],"names":[],"mappings":"AAOA;IAUI;;;OAGG;IACH,oBAHW,OAAO,uBAAuB,EAAE,UAAU,QAC1C,OAAO,uBAAuB,EAAE,OAAO,EAmCjD;IA9CD,0CAA0C;IAC1C,QADW,OAAO,WAAW,EAAE,OAAO,CAC/B;IAEP,yCAAyC;IACzC,KADW,OAAO,WAAW,EAAE,MAAM,CACjC;IAEJ,4GAA4G;IAC5G,WADW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAC9F;IA8BN,mDAA6B;;CAwFpC;qCAhIoC,+BAA+B"}
@@ -2,11 +2,9 @@
2
2
  * @extends {TabixSource<import("@gmod/gff").GFF3Feature>}
3
3
  */
4
4
  export default class Gff3Source extends TabixSource<import("@gmod/gff").GFF3Feature> {
5
- /**
6
- * @param {import("../../../spec/data.js").TabixData} params
7
- * @param {import("../../../view/view.js").default} view
8
- */
9
- constructor(params: import("../../../spec/data.js").TabixData, view: import("../../../view/view.js").default);
5
+ constructor(params: import("../../../spec/data.js").TabixData, view: import("../../../view/view.js" /**
6
+ * @param {string[]} lines
7
+ */).default);
10
8
  /**
11
9
  * @param {string[]} lines
12
10
  */
@@ -1 +1 @@
1
- {"version":3,"file":"gff3Source.d.ts","sourceRoot":"","sources":["../../../../../src/data/sources/lazy/gff3Source.js"],"names":[],"mappings":"AAEA;;GAEG;AACH;IAII;;;OAGG;IACH,oBAHW,OAAO,uBAAuB,EAAE,SAAS,QACzC,OAAO,uBAAuB,EAAE,OAAO,EASjD;IAMD;;OAEG;IACH,sBAFW,MAAM,EAAE,OAUlB;;CACJ;wBAtCuB,kBAAkB"}
1
+ {"version":3,"file":"gff3Source.d.ts","sourceRoot":"","sources":["../../../../../src/data/sources/lazy/gff3Source.js"],"names":[],"mappings":"AAEA;;GAEG;AACH;+BAWU,uBAAuB,0BACQ,uBAGzC,CAAI;;OAEG;IAFH;;OAEG;IACH,sBAFW,MAAM,EAAE,OAUlB;;CACJ;wBAhCuB,kBAAkB"}
@@ -7,23 +7,17 @@ export default class Gff3Source extends TabixSource {
7
7
  /** @type {import("@gmod/gff").default} */
8
8
  #gff;
9
9
 
10
- /**
11
- * @param {import("../../../spec/data.js").TabixData} params
12
- * @param {import("../../../view/view.js").default} view
13
- */
14
- constructor(params, view) {
15
- super(params, view);
16
-
17
- import("@gmod/gff").then((gff) => {
18
- // TODO: Fix race condition
19
- this.#gff = gff.default;
20
- });
21
- }
22
-
23
10
  get label() {
24
11
  return "gff3Source";
25
12
  }
26
13
 
14
+ /**
15
+ * @param {string} header
16
+ */
17
+ async _handleHeader(header) {
18
+ this.#gff = (await import("@gmod/gff")).default;
19
+ }
20
+
27
21
  /**
28
22
  * @param {string[]} lines
29
23
  */
@@ -1 +1 @@
1
- {"version":3,"file":"singleAxisWindowedSource.d.ts","sourceRoot":"","sources":["../../../../../src/data/sources/lazy/singleAxisWindowedSource.js"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH;IAWI;;;OAGG;IACH,kBAHU;QAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,4BAA4B,EAAE,OAAO,CAAA;KAAC,CAGvE;IAEP;;;OAGG;IACH,0CAHW,OAAO,uBAAuB,EAAE,aAAa,QAqBvD;IAED;;;;OAIG;IACH,wBAFW,MAAM,EAAE,QAqBlB;IAcD;;;;;OAKG;IACH,iCAHW,MAAM,EAAE,iBAKlB;IApBD;;OAEG;IACH,mCAOC;IAYD;;;;;;;;;OASG;IACH,yCANW,MAAM,EAAE,4BACU,OAAO,mCAAmC,EAAE,0BAA0B,UAAU,WAAW,+BAqCvH;IAED;;;;;;OAMG;IACH,yCALW,MAAM,EAAE,cACR,MAAM,mBACG,MAAM,EAAE,KAAE,IAAI,QAyBjC;;CACJ;iCA3KgC,2BAA2B"}
1
+ {"version":3,"file":"singleAxisWindowedSource.d.ts","sourceRoot":"","sources":["../../../../../src/data/sources/lazy/singleAxisWindowedSource.js"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH;IAWI;;;OAGG;IACH,kBAHU;QAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,4BAA4B,EAAE,OAAO,CAAA;KAAC,CAGvE;IAEP;;;OAGG;IACH,0CAHW,OAAO,uBAAuB,EAAE,aAAa,QAqBvD;IAED;;;;OAIG;IACH,wBAFW,MAAM,EAAE,QAqBlB;IAcD;;;;;OAKG;IACH,iCAHW,MAAM,EAAE,iBAKlB;IApBD;;OAEG;IACH,mCAOC;IAYD;;;;;;;;;OASG;IACH,4BAHa,CAAC,YAHH,MAAM,EAAE,UACR,CAAC,eAAe,EAAE,OAAO,mCAAmC,EAAE,0BAA0B,EAAE,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,GAC3H,OAAO,CAAC,CAAC,EAAE,CAAC,CAoCvB;IAED;;;;;;OAMG;IACH,yCALW,MAAM,EAAE,cACR,MAAM,YACN,CAAS,IAAQ,EAAR,MAAM,EAAE,KAAE,IAAI,QAyBjC;;CACJ;iCA3KgC,2BAA2B"}
@@ -10,6 +10,11 @@ export default class TabixSource<T> extends SingleAxisWindowedSource {
10
10
  constructor(params: import("../../../spec/data.js").TabixData, view: import("../../../view/view.js").default);
11
11
  params: import("../../../spec/data.js").TabixData;
12
12
  initializedPromise: Promise<any>;
13
+ /**
14
+ * @param {string} header
15
+ * @protected
16
+ */
17
+ protected _handleHeader(header: string): Promise<void>;
13
18
  /**
14
19
  * @abstract
15
20
  * @protected
@@ -1 +1 @@
1
- {"version":3,"file":"tabixSource.d.ts","sourceRoot":"","sources":["../../../../../src/data/sources/lazy/tabixSource.js"],"names":[],"mappings":"AAGA;;;GAGG;AACH;IAII;;;OAGG;IACH,oBAHW,OAAO,uBAAuB,EAAE,SAAS,QACzC,OAAO,uBAAuB,EAAE,OAAO,EA8CjD;IAhCG,kDAAgC;IAQhC,iCAuBE;IAoCN;;;;;OAKG;IACH,gCAHW,MAAM,EAAE,GACN,CAAC,EAAE,CAKf;;CACJ;qCAvGoC,+BAA+B"}
1
+ {"version":3,"file":"tabixSource.d.ts","sourceRoot":"","sources":["../../../../../src/data/sources/lazy/tabixSource.js"],"names":[],"mappings":"AAGA;;;GAGG;AACH,iCAHa,CAAC;IAOV;;;OAGG;IACH,oBAHW,OAAO,uBAAuB,EAAE,SAAS,QACzC,OAAO,uBAAuB,EAAE,OAAO,EAkDjD;IAnCG,kDAAgC;IAQhC,iCA0BE;IAqCN;;;OAGG;IACH,gCAHW,MAAM,iBAKhB;IAED;;;;;OAKG;IACH,gCAHW,MAAM,EAAE,GACN,CAAC,EAAE,CAKf;;CACJ;qCApHoC,+BAA+B"}
@@ -20,6 +20,7 @@ export default class TabixSource extends SingleAxisWindowedSource {
20
20
  windowSize: 3_000_000,
21
21
  debounce: 200,
22
22
  debounceMode: "domain",
23
+ addChrPrefix: false,
23
24
  ...params,
24
25
  };
25
26
 
@@ -35,15 +36,9 @@ export default class TabixSource extends SingleAxisWindowedSource {
35
36
 
36
37
  this.initializedPromise = new Promise((resolve) => {
37
38
  Promise.all([
38
- import("buffer"),
39
39
  import("@gmod/tabix"),
40
40
  import("generic-filehandle"),
41
- ]).then(([{ Buffer }, { TabixIndexedFile }, { RemoteFile }]) => {
42
- // Hack needed by @gmod/tabix
43
- if (typeof window !== "undefined") {
44
- window.Buffer ??= Buffer;
45
- }
46
-
41
+ ]).then(async ([{ TabixIndexedFile }, { RemoteFile }]) => {
47
42
  const withBase = (/** @type {string} */ uri) =>
48
43
  new RemoteFile(addBaseUrl(uri, this.view.getBaseUrl()));
49
44
 
@@ -52,8 +47,17 @@ export default class TabixSource extends SingleAxisWindowedSource {
52
47
  tbiFilehandle: withBase(
53
48
  this.params.indexUrl ?? this.params.url + ".tbi"
54
49
  ),
50
+ renameRefSeqs:
51
+ this.params.addChrPrefix === true
52
+ ? (refSeq) => "chr" + refSeq
53
+ : this.params.addChrPrefix
54
+ ? (refSeq) => this.params.addChrPrefix + refSeq
55
+ : undefined,
55
56
  });
56
57
 
58
+ const header = await this.#tbiIndex.getHeader();
59
+ await this._handleHeader(header);
60
+
57
61
  resolve();
58
62
  });
59
63
  });
@@ -65,6 +69,7 @@ export default class TabixSource extends SingleAxisWindowedSource {
65
69
  * @param {number[]} interval linearized domain
66
70
  */
67
71
  async loadInterval(interval) {
72
+ await this.initializedPromise;
68
73
  const featureChunks = await this.discretizeAndLoad(
69
74
  interval,
70
75
  async (discreteInterval, signal) => {
@@ -92,6 +97,14 @@ export default class TabixSource extends SingleAxisWindowedSource {
92
97
  }
93
98
  }
94
99
 
100
+ /**
101
+ * @param {string} header
102
+ * @protected
103
+ */
104
+ async _handleHeader(header) {
105
+ //
106
+ }
107
+
95
108
  /**
96
109
  * @abstract
97
110
  * @protected
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @extends {TabixSource<import("./vcfTypes.js").ParsedVariant>}
3
+ */
4
+ export default class VcfSource extends TabixSource<import("./vcfTypes.js").ParsedVariant> {
5
+ constructor(params: import("../../../spec/data.js").TabixData, view: import("../../../view/view.js").default);
6
+ #private;
7
+ }
8
+ import TabixSource from "./tabixSource.js";
9
+ //# sourceMappingURL=vcfSource.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vcfSource.d.ts","sourceRoot":"","sources":["../../../../../src/data/sources/lazy/vcfSource.js"],"names":[],"mappings":"AAEA;;GAEG;AACH;+BAUK,uBACe,0BACQ,uBAAuB;;CAoBlD;wBArCuB,kBAAkB"}
@@ -0,0 +1,38 @@
1
+ import TabixSource from "./tabixSource.js";
2
+
3
+ /**
4
+ * @extends {TabixSource<import("./vcfTypes.js").ParsedVariant>}
5
+ */
6
+ export default class VcfSource extends TabixSource {
7
+ /** @type {import("@gmod/vcf").default} */
8
+ #tbiVCFParser;
9
+
10
+ get label() {
11
+ return "vcfSource";
12
+ }
13
+
14
+ /**
15
+ * @param {string} header
16
+ */
17
+ async _handleHeader(header) {
18
+ const VCFParser = (await import("@gmod/vcf")).default;
19
+ // @ts-ignore - There's something wrong with the type definition
20
+ this.#tbiVCFParser = new VCFParser({ header });
21
+ }
22
+
23
+ /**
24
+ * @param {string[]} lines
25
+ */
26
+ _parseFeatures(lines) {
27
+ return lines.map((line) => {
28
+ const parsed = this.#tbiVCFParser.parseLine(line);
29
+ delete parsed.GENOTYPES;
30
+ // @ts-ignore
31
+ parsed.SAMPLES = parsed.SAMPLES();
32
+
33
+ return /** @type {import("./vcfTypes.js").ParsedVariant} */ (
34
+ /** @type {object} */ (parsed)
35
+ );
36
+ });
37
+ }
38
+ }
@@ -0,0 +1,7 @@
1
+ import { Variant } from "@gmod/vcf";
2
+
3
+ type Samples = ReturnType<Variant["SAMPLES"]>;
4
+
5
+ export type ParsedVariant = Omit<Variant, "SAMPLES" | "GENOTYPES"> & {
6
+ SAMPLES: Samples;
7
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"namedSource.d.ts","sourceRoot":"","sources":["../../../../src/data/sources/namedSource.js"],"names":[],"mappings":"AAGA;;;GAGG;AACH,kCAHW,QAAQ,OAAO,oBAAoB,EAAE,IAAI,CAAC,kDAKpD;AAED;IAOI;;;;OAIG;IACH,oBAJW,OAAO,oBAAoB,EAAE,SAAS,QACtC,OAAO,oBAAoB,EAAE,OAAO,mBAC3B,MAAM,KAAE,GAAG,EAAE,EAOhC;IAFG,iBALgB,MAAM,KAAE,GAAG,EAAE,CAKL;IACxB,+CAAoB;IAcxB;;;;OAIG;IACH,yBAFW,OAAO,gBAAgB,EAAE,KAAK,EAAE,QAM1C;IAED,0BA0BC;;CAKJ;uBAnFsB,iBAAiB"}
1
+ {"version":3,"file":"namedSource.d.ts","sourceRoot":"","sources":["../../../../src/data/sources/namedSource.js"],"names":[],"mappings":"AAGA;;;GAGG;AACH,kCAHW,OAAO,CAAC,OAAO,oBAAoB,EAAE,IAAI,CAAC,GACxC,IAAI,IAAI,OAAO,oBAAoB,EAAE,SAAS,CAI1D;AAED;IAOI;;;;OAIG;IACH,oBAJW,OAAO,oBAAoB,EAAE,SAAS,QACtC,OAAO,oBAAoB,EAAE,OAAO,YACpC,CAAS,IAAM,EAAN,MAAM,KAAE,GAAG,EAAE,EAOhC;IAFG,iBALgB,MAAM,KAAE,GAAG,EAAE,CAKL;IACxB,+CAAoB;IAcxB;;;;OAIG;IACH,yBAFW,OAAO,gBAAgB,EAAE,KAAK,EAAE,QAM1C;IAED,0BA0BC;;CAKJ;uBAnFsB,iBAAiB"}
@@ -1 +1 @@
1
- {"version":3,"file":"sequenceSource.d.ts","sourceRoot":"","sources":["../../../../src/data/sources/sequenceSource.js"],"names":[],"mappings":"AAMA;;;GAGG;AACH,0CAHW,QAAQ,OAAO,oBAAoB,EAAE,IAAI,CAAC,0DAKpD;AAED;IACI;;;;OAIG;IACH,oBAHW,OAAO,oBAAoB,EAAE,iBAAiB,QAC9C,OAAO,oBAAoB,EAAE,OAAO,EAiB9C;IAZG,sDAIC;IAcL,0BAcC;CAKJ;uBAxDsB,iBAAiB"}
1
+ {"version":3,"file":"sequenceSource.d.ts","sourceRoot":"","sources":["../../../../src/data/sources/sequenceSource.js"],"names":[],"mappings":"AAMA;;;GAGG;AACH,0CAHW,OAAO,CAAC,OAAO,oBAAoB,EAAE,IAAI,CAAC,GACxC,IAAI,IAAI,OAAO,oBAAoB,EAAE,iBAAiB,CAIlE;AAED;IACI;;;;OAIG;IACH,oBAHW,OAAO,oBAAoB,EAAE,iBAAiB,QAC9C,OAAO,oBAAoB,EAAE,OAAO,EAiB9C;IAZG,sDAIC;IAcL,0BAcC;CAKJ;uBAxDsB,iBAAiB"}
@@ -1 +1 @@
1
- {"version":3,"file":"urlSource.d.ts","sourceRoot":"","sources":["../../../../src/data/sources/urlSource.js"],"names":[],"mappings":"AASA;;;GAGG;AACH,gCAHW,QAAQ,OAAO,oBAAoB,EAAE,IAAI,CAAC,gDAKpD;AAED;IACI;;;OAGG;IACH,oBAHW,OAAO,oBAAoB,EAAE,OAAO,QACpC,OAAO,oBAAoB,EAAE,OAAO,EAU9C;IALG,6CAEC;IAED,gBAAiC;CA0ExC;uBArGsB,iBAAiB"}
1
+ {"version":3,"file":"urlSource.d.ts","sourceRoot":"","sources":["../../../../src/data/sources/urlSource.js"],"names":[],"mappings":"AASA;;;GAGG;AACH,gCAHW,OAAO,CAAC,OAAO,oBAAoB,EAAE,IAAI,CAAC,GACxC,IAAI,IAAI,OAAO,oBAAoB,EAAE,OAAO,CAIxD;AAED;IACI;;;OAGG;IACH,oBAHW,OAAO,oBAAoB,EAAE,OAAO,QACpC,OAAO,oBAAoB,EAAE,OAAO,EAU9C;IALG,6CAEC;IAED,gBAAiC;CA0ExC;uBArGsB,iBAAiB"}
@@ -1 +1 @@
1
- {"version":3,"file":"aggregate.d.ts","sourceRoot":"","sources":["../../../../src/data/transforms/aggregate.js"],"names":[],"mappings":"AAOA;IAKI;;;;OAIG;IACH,oBAJW,OAAO,yBAAyB,EAAE,eAAe,EA6C3D;IAvCG,0DAAoB;IAEpB,oBAAoB;IACpB,QADW,GAAG,EAAE,CACA;IAEhB;;OAEG;IACH,iDAF6B,MAAM,IAEtB;IACb;;OAEG;IACH,IAFU,MAAM,EAAE,CAEN;CAiFnB;sBA5GqB,gBAAgB"}
1
+ {"version":3,"file":"aggregate.d.ts","sourceRoot":"","sources":["../../../../src/data/transforms/aggregate.js"],"names":[],"mappings":"AAOA;IAKI;;;;OAIG;IACH,oBAJW,OAAO,yBAAyB,EAAE,eAAe,EA6C3D;IAvCG,0DAAoB;IAEpB,oBAAoB;IACpB,QADW,GAAG,EAAE,CACA;IAEhB;;OAEG;IACH,KAFU,CAAC,CAAC,GAAG,EAAE,gCAAO,KAAK,MAAM,CAAC,EAAE,CAEzB;IACb;;OAEG;IACH,IAFU,MAAM,EAAE,CAEN;CAiFnB;sBA5GqB,gBAAgB"}
@@ -1 +1 @@
1
- {"version":3,"file":"aggregateOps.d.ts","sourceRoot":"","sources":["../../../../src/data/transforms/aggregateOps.js"],"names":[],"mappings":";AAEA;;GAEG;AACH,6BAFU,OAAO,OAAO,yBAAyB,EAAE,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,MAAM,KAAK,MAAM,CAAC,CAWxH"}
1
+ {"version":3,"file":"aggregateOps.d.ts","sourceRoot":"","sources":["../../../../src/data/transforms/aggregateOps.js"],"names":[],"mappings":";AAEA;;GAEG;AACH,6BAFU,MAAM,CAAC,OAAO,yBAAyB,EAAE,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,MAAM,KAAK,MAAM,CAAC,CAWxH"}
@@ -1,4 +1,3 @@
1
- /// <reference types="external-typings/flatqueue.js" />
2
1
  /**
3
2
  * Computes coverage for sorted segments
4
3
  *
@@ -1 +1 @@
1
- {"version":3,"file":"coverage.d.ts","sourceRoot":"","sources":["../../../../src/data/transforms/coverage.js"],"names":[],"mappings":";AAMA;;;;;;;GAOG;AACH;IAKI;;OAEG;IAEH;;OAEG;IACH,oBAFW,OAAO,yBAAyB,EAAE,cAAc,EAgD1D;IA5CG,yDAAoB;IAEpB,mDAAwC;IACxC,iDAAoC;IAEpC,mCAAmC;IACnC,sBADoB,GAAG,KAAE,MAAM,CAGT;IACtB,mCAAmC;IACnC,uBADoB,GAAG,KAAE,MAAM,CACsC;IAErE;;;;;MAKC;IAED,sEACsE,MAAM,oCAgBvE;IAEL;;;;OAIG;IACH,MAFU,UAAU,MAAM,CAAC,CAEA;CA0IlC;sBA7MqB,gBAAgB;sBAJhB,WAAW"}
1
+ {"version":3,"file":"coverage.d.ts","sourceRoot":"","sources":["../../../../src/data/transforms/coverage.js"],"names":[],"mappings":"AAMA;;;;;;;GAOG;AACH;IAKI;;OAEG;IAEH;;OAEG;IACH,oBAFW,OAAO,yBAAyB,EAAE,cAAc,EAgD1D;IA5CG,yDAAoB;IAEpB,mDAAwC;IACxC,iDAAoC;IAEpC,mCAAmC;IACnC,eADW,CAAS,IAAG,EAAH,GAAG,KAAE,MAAM,CAGT;IACtB,mCAAmC;IACnC,gBADW,CAAS,IAAG,EAAH,GAAG,KAAE,MAAM,CACsC;IAErE;;;;;MAKC;IAED,sEACsE,MAAM,oCAgBvE;IAEL;;;;OAIG;IACH,MAFU,SAAS,CAAC,MAAM,CAAC,CAEA;CA0IlC;sBA7MqB,gBAAgB;sBAJhB,WAAW"}
@@ -1 +1 @@
1
- {"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../../../../src/data/transforms/filter.js"],"names":[],"mappings":"AA8CA;;;GAGG;AACH,2CAHW,OAAO,yBAAyB,EAAE,YAAY,gEAKxD;AAED;;;GAGG;AACH,gDAHW,OAAO,yBAAyB,EAAE,YAAY,qEAKxD;AAzDD;IACI;;;;OAIG;IACH,oBAHW,OAAO,yBAAyB,EAAE,YAAY,yBAC9C,OAAO,gBAAgB,EAAE,qBAAqB,EASxD;IAJG,uDAAoB;IAEpB,oEAAoE;IACpE,WADW,OAAO,6BAA6B,EAAE,eAAe,CACtC;CA6BjC;sBA3CqB,gBAAgB"}
1
+ {"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../../../../src/data/transforms/filter.js"],"names":[],"mappings":"AA8CA;;;GAGG;AACH,2CAHW,OAAO,yBAAyB,EAAE,YAAY,GAC5C,MAAM,IAAI,OAAO,yBAAyB,EAAE,gBAAgB,CAIxE;AAED;;;GAGG;AACH,gDAHW,OAAO,yBAAyB,EAAE,YAAY,GAC5C,MAAM,IAAI,OAAO,yBAAyB,EAAE,qBAAqB,CAI7E;AAzDD;IACI;;;;OAIG;IACH,oBAHW,OAAO,yBAAyB,EAAE,YAAY,yBAC9C,OAAO,gBAAgB,EAAE,qBAAqB,EASxD;IAJG,uDAAoB;IAEpB,oEAAoE;IACpE,WADW,OAAO,6BAA6B,EAAE,eAAe,CACtC;CA6BjC;sBA3CqB,gBAAgB"}
@@ -1 +1 @@
1
- {"version":3,"file":"filterScoredLabels.d.ts","sourceRoot":"","sources":["../../../../src/data/transforms/filterScoredLabels.js"],"names":[],"mappings":"AAOA;IAKI;;;;OAIG;IACH,oBAHW,OAAO,yBAAyB,EAAE,wBAAwB,QAC1D,OAAO,oBAAoB,EAAE,OAAO,EA2C9C;IAtCG,mEAAoB;IAEpB,oBAAoB;IACpB,OADW,GAAG,EAAE,CACD;IAEf,mBAAoC;IAMpC,iDAAyC;IACzC,mDAA6C;IAC7C,mDAA6C;IAC7C,mDAA6C;IAC7C,gCAAgC;IAChC,qBADoB,GAAG,KAAE,GAAG,CAGd;IACd,gBAAuC;IAEvC,uCAAuC;IACvC,iBADW,IAAI,GAAG,EAAE,cAAc,CAAC,CACH;IAEhC,4DAAuD;IAIvD,qBAAuE;IAgBvE,eAAiD;IAWrD,4BAyCC;IAKG,sBAAuB;CAU9B;sBA9HqB,gBAAgB;2BAFX,+BAA+B"}
1
+ {"version":3,"file":"filterScoredLabels.d.ts","sourceRoot":"","sources":["../../../../src/data/transforms/filterScoredLabels.js"],"names":[],"mappings":"AAOA;IAKI;;;;OAIG;IACH,oBAHW,OAAO,yBAAyB,EAAE,wBAAwB,QAC1D,OAAO,oBAAoB,EAAE,OAAO,EA2C9C;IAtCG,mEAAoB;IAEpB,oBAAoB;IACpB,OADW,GAAG,EAAE,CACD;IAEf,mBAAoC;IAMpC,iDAAyC;IACzC,mDAA6C;IAC7C,mDAA6C;IAC7C,mDAA6C;IAC7C,gCAAgC;IAChC,cADW,CAAS,IAAG,EAAH,GAAG,KAAE,GAAG,CAGd;IACd,gBAAuC;IAEvC,uCAAuC;IACvC,iBADW,GAAG,CAAC,GAAG,EAAE,cAAc,CAAC,CACH;IAEhC,4DAAuD;IAIvD,qBAAuE;IAgBvE,eAAiD;IAWrD,4BAyCC;IAKG,sBAAuB;CAU9B;sBA9HqB,gBAAgB;2BAFX,+BAA+B"}
@@ -1 +1 @@
1
- {"version":3,"file":"linearizeGenomicCoordinate.d.ts","sourceRoot":"","sources":["../../../../src/data/transforms/linearizeGenomicCoordinate.js"],"names":[],"mappings":"AAKA;IAKI;;;;OAIG;IACH,oBAHW,OAAO,yBAAyB,EAAE,gCAAgC,QAClE,OAAO,oBAAoB,EAAE,OAAO,EAyF9C;IAhFG,2EAAoB;CAiF3B;sBApGqB,gBAAgB"}
1
+ {"version":3,"file":"linearizeGenomicCoordinate.d.ts","sourceRoot":"","sources":["../../../../src/data/transforms/linearizeGenomicCoordinate.js"],"names":[],"mappings":"AAKA;IAKI;;;;OAIG;IACH,oBAHW,OAAO,yBAAyB,EAAE,gCAAgC,QAClE,OAAO,oBAAoB,EAAE,OAAO,EAgG9C;IAvFG,2EAAoB;CAwF3B;sBA3GqB,gBAAgB"}
@@ -87,7 +87,7 @@ export default class LinearizeGenomicCoordinate extends Transform {
87
87
  if (chrom !== lastChrom) {
88
88
  chromOffset = genome.cumulativeChromPositions.get(chrom);
89
89
  if (chromOffset === undefined) {
90
- throw new Error("Unknown chromosome/contig: " + chrom);
90
+ return;
91
91
  }
92
92
  lastChrom = chrom;
93
93
  }
@@ -97,7 +97,14 @@ export default class LinearizeGenomicCoordinate extends Transform {
97
97
 
98
98
  /** @param {Record<string, any>} datum */
99
99
  this.handle = (datum) => {
100
- setter(datum, getChromOffset(chromAccessor(datum)), posAccessors);
100
+ const chrom = chromAccessor(datum);
101
+ const chromOffset = getChromOffset(chrom);
102
+ if (chromOffset === undefined) {
103
+ throw new Error(
104
+ `Unknown chromosome/contig "${chrom}" in datum: ${JSON.stringify(datum)}`
105
+ );
106
+ }
107
+ setter(datum, chromOffset, posAccessors);
101
108
  this._propagate(datum);
102
109
  };
103
110
  }