@genome-spy/core 0.36.1 → 0.37.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 (523) hide show
  1. package/README.md +1 -0
  2. package/dist/{index.es.js → bundled/index.es.js} +2253 -2115
  3. package/dist/{index.js → bundled/index.js} +180 -44
  4. package/dist/src/data/collector.d.ts +36 -0
  5. package/dist/src/data/collector.d.ts.map +1 -0
  6. package/dist/src/data/collector.js +184 -0
  7. package/dist/src/data/collector.test.js +84 -0
  8. package/dist/src/data/dataFlow.d.ts +65 -0
  9. package/dist/src/data/dataFlow.d.ts.map +1 -0
  10. package/dist/src/data/dataFlow.js +142 -0
  11. package/dist/src/data/dataFlow.test.js +5 -0
  12. package/dist/src/data/facetNode.d.ts +17 -0
  13. package/dist/src/data/facetNode.d.ts.map +1 -0
  14. package/dist/src/data/facetNode.js +17 -0
  15. package/dist/src/data/flow.test.js +72 -0
  16. package/dist/src/data/flowNode.d.ts +136 -0
  17. package/dist/src/data/flowNode.d.ts.map +1 -0
  18. package/dist/src/data/flowNode.js +286 -0
  19. package/dist/src/data/flowNode.test.js +50 -0
  20. package/dist/src/data/flowOptimizer.d.ts +27 -0
  21. package/dist/src/data/flowOptimizer.d.ts.map +1 -0
  22. package/dist/src/data/flowOptimizer.js +133 -0
  23. package/dist/src/data/flowOptimizer.test.js +193 -0
  24. package/dist/src/data/flowTestUtils.d.ts +30 -0
  25. package/dist/src/data/flowTestUtils.d.ts.map +1 -0
  26. package/dist/src/data/flowTestUtils.js +63 -0
  27. package/dist/src/data/formats/fasta.d.ts +20 -0
  28. package/dist/src/data/formats/fasta.d.ts.map +1 -0
  29. package/dist/src/data/formats/fasta.js +32 -0
  30. package/dist/src/data/formats/fasta.test.js +27 -0
  31. package/dist/src/data/sources/dataSource.d.ts +12 -0
  32. package/dist/src/data/sources/dataSource.d.ts.map +1 -0
  33. package/dist/src/data/sources/dataSource.js +25 -0
  34. package/dist/src/data/sources/dataSourceFactory.d.ts +16 -0
  35. package/dist/src/data/sources/dataSourceFactory.d.ts.map +1 -0
  36. package/dist/src/data/sources/dataSourceFactory.js +127 -0
  37. package/dist/src/data/sources/dataUtils.d.ts +50 -0
  38. package/dist/src/data/sources/dataUtils.d.ts.map +1 -0
  39. package/dist/src/data/sources/dataUtils.js +83 -0
  40. package/dist/src/data/sources/dynamic/README.md +3 -0
  41. package/dist/src/data/sources/dynamic/axisGenomeSource.d.ts +13 -0
  42. package/dist/src/data/sources/dynamic/axisGenomeSource.d.ts.map +1 -0
  43. package/dist/src/data/sources/dynamic/axisGenomeSource.js +19 -0
  44. package/dist/src/data/sources/dynamic/axisTickSource.d.ts +18 -0
  45. package/dist/src/data/sources/dynamic/axisTickSource.d.ts.map +1 -0
  46. package/dist/src/data/sources/dynamic/axisTickSource.js +73 -0
  47. package/dist/src/data/sources/dynamic/bamSource.d.ts +46 -0
  48. package/dist/src/data/sources/dynamic/bamSource.d.ts.map +1 -0
  49. package/dist/src/data/sources/dynamic/bamSource.js +115 -0
  50. package/dist/src/data/sources/dynamic/bigBedSource.d.ts +51 -0
  51. package/dist/src/data/sources/dynamic/bigBedSource.d.ts.map +1 -0
  52. package/dist/src/data/sources/dynamic/bigBedSource.js +128 -0
  53. package/dist/src/data/sources/dynamic/bigWigSource.d.ts +58 -0
  54. package/dist/src/data/sources/dynamic/bigWigSource.d.ts.map +1 -0
  55. package/dist/src/data/sources/dynamic/bigWigSource.js +166 -0
  56. package/dist/src/data/sources/dynamic/gff3Source.d.ts +8 -0
  57. package/dist/src/data/sources/dynamic/gff3Source.d.ts.map +1 -0
  58. package/dist/src/data/sources/dynamic/gff3Source.js +19 -0
  59. package/dist/src/data/sources/dynamic/indexedFastaSource.d.ts +30 -0
  60. package/dist/src/data/sources/dynamic/indexedFastaSource.d.ts.map +1 -0
  61. package/dist/src/data/sources/dynamic/indexedFastaSource.js +86 -0
  62. package/dist/src/data/sources/dynamic/singleAxisLazySource.d.ts +42 -0
  63. package/dist/src/data/sources/dynamic/singleAxisLazySource.d.ts.map +1 -0
  64. package/dist/src/data/sources/dynamic/singleAxisLazySource.js +129 -0
  65. package/dist/src/data/sources/dynamic/tabixSource.d.ts +54 -0
  66. package/dist/src/data/sources/dynamic/tabixSource.d.ts.map +1 -0
  67. package/dist/src/data/sources/dynamic/tabixSource.js +140 -0
  68. package/dist/src/data/sources/dynamic/windowedMixin.d.ts +32 -0
  69. package/dist/src/data/sources/dynamic/windowedMixin.d.ts.map +1 -0
  70. package/dist/src/data/sources/dynamic/windowedMixin.js +53 -0
  71. package/dist/src/data/sources/inlineSource.d.ts +16 -0
  72. package/dist/src/data/sources/inlineSource.d.ts.map +1 -0
  73. package/dist/src/data/sources/inlineSource.js +68 -0
  74. package/dist/src/data/sources/inlineSource.test.js +56 -0
  75. package/dist/src/data/sources/namedSource.d.ts +25 -0
  76. package/dist/src/data/sources/namedSource.d.ts.map +1 -0
  77. package/dist/src/data/sources/namedSource.js +80 -0
  78. package/dist/src/data/sources/sequenceSource.d.ts +17 -0
  79. package/dist/src/data/sources/sequenceSource.d.ts.map +1 -0
  80. package/dist/src/data/sources/sequenceSource.js +47 -0
  81. package/dist/src/data/sources/sequenceSource.test.js +46 -0
  82. package/dist/src/data/sources/urlSource.d.ts +16 -0
  83. package/dist/src/data/sources/urlSource.d.ts.map +1 -0
  84. package/dist/src/data/sources/urlSource.js +74 -0
  85. package/dist/src/data/transforms/aggregate.d.ts +18 -0
  86. package/dist/src/data/transforms/aggregate.d.ts.map +1 -0
  87. package/dist/src/data/transforms/aggregate.js +67 -0
  88. package/dist/src/data/transforms/clone.d.ts +15 -0
  89. package/dist/src/data/transforms/clone.d.ts.map +1 -0
  90. package/dist/src/data/transforms/clone.js +40 -0
  91. package/dist/src/data/transforms/clone.test.js +11 -0
  92. package/dist/src/data/transforms/coverage.d.ts +30 -0
  93. package/dist/src/data/transforms/coverage.d.ts.map +1 -0
  94. package/dist/src/data/transforms/coverage.js +183 -0
  95. package/dist/src/data/transforms/coverage.test.js +123 -0
  96. package/dist/src/data/transforms/filter.d.ts +12 -0
  97. package/dist/src/data/transforms/filter.d.ts.map +1 -0
  98. package/dist/src/data/transforms/filter.js +33 -0
  99. package/dist/src/data/transforms/filter.test.js +18 -0
  100. package/dist/src/data/transforms/filterScoredLabels.d.ts +29 -0
  101. package/dist/src/data/transforms/filterScoredLabels.d.ts.map +1 -0
  102. package/dist/src/data/transforms/filterScoredLabels.js +134 -0
  103. package/dist/src/data/transforms/flatten.d.ts +10 -0
  104. package/dist/src/data/transforms/flatten.d.ts.map +1 -0
  105. package/dist/src/data/transforms/flatten.js +68 -0
  106. package/dist/src/data/transforms/flatten.test.js +93 -0
  107. package/dist/src/data/transforms/flattenCompressedExons.d.ts +19 -0
  108. package/dist/src/data/transforms/flattenCompressedExons.d.ts.map +1 -0
  109. package/dist/src/data/transforms/flattenCompressedExons.js +53 -0
  110. package/dist/src/data/transforms/flattenDelimited.d.ts +10 -0
  111. package/dist/src/data/transforms/flattenDelimited.d.ts.map +1 -0
  112. package/dist/src/data/transforms/flattenDelimited.js +66 -0
  113. package/dist/src/data/transforms/flattenDelimited.test.js +87 -0
  114. package/dist/src/data/transforms/flattenSequence.d.ts +11 -0
  115. package/dist/src/data/transforms/flattenSequence.d.ts.map +1 -0
  116. package/dist/src/data/transforms/flattenSequence.js +35 -0
  117. package/dist/src/data/transforms/flattenSequence.test.js +34 -0
  118. package/dist/src/data/transforms/formula.d.ts +13 -0
  119. package/dist/src/data/transforms/formula.d.ts.map +1 -0
  120. package/dist/src/data/transforms/formula.js +35 -0
  121. package/dist/src/data/transforms/formula.test.js +19 -0
  122. package/dist/src/data/transforms/identifier.d.ts +40 -0
  123. package/dist/src/data/transforms/identifier.d.ts.map +1 -0
  124. package/dist/src/data/transforms/identifier.js +106 -0
  125. package/dist/src/data/transforms/identifier.test.js +83 -0
  126. package/dist/src/data/transforms/linearizeGenomicCoordinate.d.ts +10 -0
  127. package/dist/src/data/transforms/linearizeGenomicCoordinate.d.ts.map +1 -0
  128. package/dist/src/data/transforms/linearizeGenomicCoordinate.js +97 -0
  129. package/dist/src/data/transforms/measureText.d.ts +18 -0
  130. package/dist/src/data/transforms/measureText.d.ts.map +1 -0
  131. package/dist/src/data/transforms/measureText.js +42 -0
  132. package/dist/src/data/transforms/pileup.d.ts +10 -0
  133. package/dist/src/data/transforms/pileup.d.ts.map +1 -0
  134. package/dist/src/data/transforms/pileup.js +126 -0
  135. package/dist/src/data/transforms/pileup.test.js +70 -0
  136. package/dist/src/data/transforms/project.d.ts +13 -0
  137. package/dist/src/data/transforms/project.d.ts.map +1 -0
  138. package/dist/src/data/transforms/project.js +38 -0
  139. package/dist/src/data/transforms/project.test.js +32 -0
  140. package/dist/src/data/transforms/regexExtract.d.ts +13 -0
  141. package/dist/src/data/transforms/regexExtract.d.ts.map +1 -0
  142. package/dist/src/data/transforms/regexExtract.js +57 -0
  143. package/dist/src/data/transforms/regexExtract.test.js +67 -0
  144. package/dist/src/data/transforms/regexFold.d.ts +14 -0
  145. package/dist/src/data/transforms/regexFold.d.ts.map +1 -0
  146. package/dist/src/data/transforms/regexFold.js +139 -0
  147. package/dist/src/data/transforms/regexFold.test.js +160 -0
  148. package/dist/src/data/transforms/sample.d.ts +42 -0
  149. package/dist/src/data/transforms/sample.d.ts.map +1 -0
  150. package/dist/src/data/transforms/sample.js +99 -0
  151. package/dist/src/data/transforms/sample.test.js +38 -0
  152. package/dist/src/data/transforms/stack.d.ts +11 -0
  153. package/dist/src/data/transforms/stack.d.ts.map +1 -0
  154. package/dist/src/data/transforms/stack.js +134 -0
  155. package/dist/src/data/transforms/stack.test.js +91 -0
  156. package/dist/src/data/transforms/transformFactory.d.ts +12 -0
  157. package/dist/src/data/transforms/transformFactory.d.ts.map +1 -0
  158. package/dist/src/data/transforms/transformFactory.js +59 -0
  159. package/dist/src/encoder/accessor.d.ts +15 -0
  160. package/dist/src/encoder/accessor.d.ts.map +1 -0
  161. package/dist/src/encoder/accessor.js +76 -0
  162. package/dist/src/encoder/accessor.test.js +47 -0
  163. package/dist/src/encoder/encoder.d.ts +144 -0
  164. package/dist/src/encoder/encoder.d.ts.map +1 -0
  165. package/dist/src/encoder/encoder.js +400 -0
  166. package/dist/src/encoder/encoder.test.js +98 -0
  167. package/dist/src/fonts/Lato-Regular.json +1267 -0
  168. package/dist/src/fonts/Lato-Regular.png +0 -0
  169. package/dist/src/fonts/OFL.txt +93 -0
  170. package/dist/src/fonts/README.md +3 -0
  171. package/dist/src/fonts/bmFontManager.d.ts +182 -0
  172. package/dist/src/fonts/bmFontManager.d.ts.map +1 -0
  173. package/dist/src/fonts/bmFontManager.js +359 -0
  174. package/dist/src/fonts/bmFontMetrics.d.ts +45 -0
  175. package/dist/src/fonts/bmFontMetrics.d.ts.map +1 -0
  176. package/dist/src/fonts/bmFontMetrics.js +108 -0
  177. package/dist/src/genome/genome.d.ts +172 -0
  178. package/dist/src/genome/genome.d.ts.map +1 -0
  179. package/dist/src/genome/genome.js +379 -0
  180. package/dist/src/genome/genome.test.js +226 -0
  181. package/dist/src/genome/genomeStore.d.ts +20 -0
  182. package/dist/src/genome/genomeStore.d.ts.map +1 -0
  183. package/dist/src/genome/genomeStore.js +54 -0
  184. package/dist/src/genome/locusFormat.d.ts +14 -0
  185. package/dist/src/genome/locusFormat.d.ts.map +1 -0
  186. package/dist/src/genome/locusFormat.js +37 -0
  187. package/dist/src/genome/scaleIndex.d.ts +6 -0
  188. package/dist/src/genome/scaleIndex.d.ts.map +1 -0
  189. package/dist/src/genome/scaleIndex.js +165 -0
  190. package/dist/src/genome/scaleIndex.test.js +78 -0
  191. package/dist/src/genome/scaleLocus.d.ts +3 -0
  192. package/dist/src/genome/scaleLocus.d.ts.map +1 -0
  193. package/dist/src/genome/scaleLocus.js +101 -0
  194. package/dist/src/genome/scaleLocus.test.js +4 -0
  195. package/dist/src/genomeSpy.d.ts +141 -0
  196. package/dist/src/genomeSpy.d.ts.map +1 -0
  197. package/dist/src/genomeSpy.js +788 -0
  198. package/dist/src/gl/arrayBuilder.d.ts +71 -0
  199. package/dist/src/gl/arrayBuilder.d.ts.map +1 -0
  200. package/dist/src/gl/arrayBuilder.js +199 -0
  201. package/dist/src/gl/dataToVertices.d.ts +194 -0
  202. package/dist/src/gl/dataToVertices.d.ts.map +1 -0
  203. package/dist/src/gl/dataToVertices.js +639 -0
  204. package/dist/src/gl/includes/common.glsl.js +2 -0
  205. package/dist/src/gl/includes/picking.fragment.glsl.js +2 -0
  206. package/dist/src/gl/includes/picking.vertex.glsl.js +2 -0
  207. package/dist/src/gl/includes/sampleFacet.glsl.js +2 -0
  208. package/dist/src/gl/includes/scales.glsl.js +2 -0
  209. package/dist/src/gl/link.fragment.glsl.js +2 -0
  210. package/dist/src/gl/link.vertex.glsl.js +2 -0
  211. package/dist/src/gl/point.fragment.glsl.js +2 -0
  212. package/dist/src/gl/point.vertex.glsl.js +2 -0
  213. package/dist/src/gl/rect.fragment.glsl.js +2 -0
  214. package/dist/src/gl/rect.vertex.glsl.js +2 -0
  215. package/dist/src/gl/rule.fragment.glsl.js +2 -0
  216. package/dist/src/gl/rule.vertex.glsl.js +2 -0
  217. package/dist/src/gl/text.fragment.glsl.js +2 -0
  218. package/dist/src/gl/text.vertex.glsl.js +2 -0
  219. package/dist/src/gl/webGLHelper.d.ts +118 -0
  220. package/dist/src/gl/webGLHelper.d.ts.map +1 -0
  221. package/dist/src/gl/webGLHelper.js +513 -0
  222. package/dist/src/img/bowtie.svg +1 -0
  223. package/dist/src/img/genomespy-favicon.svg +34 -0
  224. package/dist/src/index.d.ts +15 -0
  225. package/dist/src/index.d.ts.map +1 -0
  226. package/dist/src/index.html +11 -0
  227. package/dist/src/index.js +129 -0
  228. package/dist/src/marks/link.d.ts +11 -0
  229. package/dist/src/marks/link.d.ts.map +1 -0
  230. package/dist/src/marks/link.js +175 -0
  231. package/dist/src/marks/mark.d.ts +226 -0
  232. package/dist/src/marks/mark.d.ts.map +1 -0
  233. package/dist/src/marks/mark.js +1004 -0
  234. package/dist/src/marks/markUtils.d.ts +23 -0
  235. package/dist/src/marks/markUtils.d.ts.map +1 -0
  236. package/dist/src/marks/markUtils.js +125 -0
  237. package/dist/src/marks/pointMark.d.ts +11 -0
  238. package/dist/src/marks/pointMark.d.ts.map +1 -0
  239. package/dist/src/marks/pointMark.js +251 -0
  240. package/dist/src/marks/rectMark.d.ts +18 -0
  241. package/dist/src/marks/rectMark.d.ts.map +1 -0
  242. package/dist/src/marks/rectMark.js +255 -0
  243. package/dist/src/marks/rule.d.ts +6 -0
  244. package/dist/src/marks/rule.d.ts.map +1 -0
  245. package/dist/src/marks/rule.js +250 -0
  246. package/dist/src/marks/text.d.ts +13 -0
  247. package/dist/src/marks/text.d.ts.map +1 -0
  248. package/dist/src/marks/text.js +279 -0
  249. package/dist/src/scale/colorUtils.d.ts +34 -0
  250. package/dist/src/scale/colorUtils.d.ts.map +1 -0
  251. package/dist/src/scale/colorUtils.js +184 -0
  252. package/dist/src/scale/glslScaleGenerator.d.ts +45 -0
  253. package/dist/src/scale/glslScaleGenerator.d.ts.map +1 -0
  254. package/dist/src/scale/glslScaleGenerator.js +506 -0
  255. package/dist/src/scale/scale.d.ts +10 -0
  256. package/dist/src/scale/scale.d.ts.map +1 -0
  257. package/dist/src/scale/scale.js +456 -0
  258. package/dist/src/scale/scale.test.js +324 -0
  259. package/dist/src/scale/ticks.d.ts +47 -0
  260. package/dist/src/scale/ticks.d.ts.map +1 -0
  261. package/dist/src/scale/ticks.js +203 -0
  262. package/dist/src/scale/ticks.test.js +40 -0
  263. package/dist/src/singlePageApp.d.ts +2 -0
  264. package/dist/src/singlePageApp.d.ts.map +1 -0
  265. package/dist/src/singlePageApp.js +13 -0
  266. package/dist/src/spec/axis.d.ts +402 -0
  267. package/dist/src/spec/channel.d.ts +440 -0
  268. package/dist/src/spec/data.d.ts +370 -0
  269. package/dist/src/spec/font.d.ts +15 -0
  270. package/dist/src/spec/genome.d.ts +35 -0
  271. package/dist/src/spec/mark.d.ts +435 -0
  272. package/dist/src/spec/root.d.ts +22 -0
  273. package/dist/src/spec/sampleView.d.ts +185 -0
  274. package/dist/src/spec/scale.d.ts +273 -0
  275. package/dist/src/spec/title.d.ts +102 -0
  276. package/dist/src/spec/tooltip.d.ts +9 -0
  277. package/dist/src/spec/transform.d.ts +504 -0
  278. package/dist/src/spec/view.d.ts +214 -0
  279. package/dist/src/styles/genome-spy.css.d.ts +3 -0
  280. package/dist/src/styles/genome-spy.css.d.ts.map +1 -0
  281. package/dist/src/styles/genome-spy.css.js +114 -0
  282. package/dist/src/styles/genome-spy.scss +153 -0
  283. package/dist/src/tooltip/dataTooltipHandler.d.ts +2 -0
  284. package/dist/src/tooltip/dataTooltipHandler.d.ts.map +1 -0
  285. package/dist/src/tooltip/dataTooltipHandler.js +64 -0
  286. package/dist/src/tooltip/refseqGeneTooltipHandler.d.ts +2 -0
  287. package/dist/src/tooltip/refseqGeneTooltipHandler.d.ts.map +1 -0
  288. package/dist/src/tooltip/refseqGeneTooltipHandler.js +78 -0
  289. package/dist/src/tooltip/tooltipHandler.d.ts +9 -0
  290. package/dist/src/tooltip/tooltipHandler.d.ts.map +1 -0
  291. package/dist/src/tooltip/tooltipHandler.ts +12 -0
  292. package/dist/src/types/bmFont.d.ts +58 -0
  293. package/dist/src/types/embedApi.d.ts +67 -0
  294. package/dist/src/types/encoder.d.ts +84 -0
  295. package/dist/src/types/flowBatch.d.ts +40 -0
  296. package/dist/src/types/rendering.d.ts +65 -0
  297. package/dist/src/types/scaleResolutionApi.d.ts +40 -0
  298. package/dist/src/types/viewContext.d.ts +85 -0
  299. package/dist/src/utils/addBaseUrl.d.ts +6 -0
  300. package/dist/src/utils/addBaseUrl.d.ts.map +1 -0
  301. package/dist/src/utils/addBaseUrl.js +19 -0
  302. package/dist/src/utils/addBaseUrl.test.js +22 -0
  303. package/dist/src/utils/animator.d.ts +41 -0
  304. package/dist/src/utils/animator.d.ts.map +1 -0
  305. package/dist/src/utils/animator.js +83 -0
  306. package/dist/src/utils/arrayUtils.d.ts +34 -0
  307. package/dist/src/utils/arrayUtils.d.ts.map +1 -0
  308. package/dist/src/utils/arrayUtils.js +61 -0
  309. package/dist/src/utils/binnedIndex.d.ts +23 -0
  310. package/dist/src/utils/binnedIndex.d.ts.map +1 -0
  311. package/dist/src/utils/binnedIndex.js +167 -0
  312. package/dist/src/utils/binnedIndex.test.js +155 -0
  313. package/dist/src/utils/clamp.d.ts +7 -0
  314. package/dist/src/utils/clamp.d.ts.map +1 -0
  315. package/dist/src/utils/clamp.js +8 -0
  316. package/dist/src/utils/cloner.d.ts +16 -0
  317. package/dist/src/utils/cloner.d.ts.map +1 -0
  318. package/dist/src/utils/cloner.js +34 -0
  319. package/dist/src/utils/cloner.test.js +24 -0
  320. package/dist/src/utils/coalesce.d.ts +6 -0
  321. package/dist/src/utils/coalesce.d.ts.map +1 -0
  322. package/dist/src/utils/coalesce.js +11 -0
  323. package/dist/src/utils/coalesce.test.js +16 -0
  324. package/dist/src/utils/concatIterables.d.ts +8 -0
  325. package/dist/src/utils/concatIterables.d.ts.map +1 -0
  326. package/dist/src/utils/concatIterables.js +26 -0
  327. package/dist/src/utils/concatIterables.test.js +8 -0
  328. package/dist/src/utils/debounce.d.ts +8 -0
  329. package/dist/src/utils/debounce.d.ts.map +1 -0
  330. package/dist/src/utils/debounce.js +37 -0
  331. package/dist/src/utils/domainArray.d.ts +61 -0
  332. package/dist/src/utils/domainArray.d.ts.map +1 -0
  333. package/dist/src/utils/domainArray.js +216 -0
  334. package/dist/src/utils/domainArray.test.js +130 -0
  335. package/dist/src/utils/eerp.d.ts +12 -0
  336. package/dist/src/utils/eerp.d.ts.map +1 -0
  337. package/dist/src/utils/eerp.js +13 -0
  338. package/dist/src/utils/expression.d.ts +9 -0
  339. package/dist/src/utils/expression.d.ts.map +1 -0
  340. package/dist/src/utils/expression.js +32 -0
  341. package/dist/src/utils/field.d.ts +17 -0
  342. package/dist/src/utils/field.d.ts.map +1 -0
  343. package/dist/src/utils/field.js +28 -0
  344. package/dist/src/utils/formatObject.d.ts +7 -0
  345. package/dist/src/utils/formatObject.d.ts.map +1 -0
  346. package/dist/src/utils/formatObject.js +37 -0
  347. package/dist/src/utils/indexer.d.ts +16 -0
  348. package/dist/src/utils/indexer.d.ts.map +1 -0
  349. package/dist/src/utils/indexer.js +43 -0
  350. package/dist/src/utils/indexer.test.js +47 -0
  351. package/dist/src/utils/inertia.d.ts +42 -0
  352. package/dist/src/utils/inertia.d.ts.map +1 -0
  353. package/dist/src/utils/inertia.js +124 -0
  354. package/dist/src/utils/interactionEvent.d.ts +26 -0
  355. package/dist/src/utils/interactionEvent.d.ts.map +1 -0
  356. package/dist/src/utils/interactionEvent.js +33 -0
  357. package/dist/src/utils/iterateNestedMaps.d.ts +11 -0
  358. package/dist/src/utils/iterateNestedMaps.d.ts.map +1 -0
  359. package/dist/src/utils/iterateNestedMaps.js +21 -0
  360. package/dist/src/utils/iterateNestedMaps.test.js +33 -0
  361. package/dist/src/utils/kWayMerge.d.ts +9 -0
  362. package/dist/src/utils/kWayMerge.d.ts.map +1 -0
  363. package/dist/src/utils/kWayMerge.js +42 -0
  364. package/dist/src/utils/kWayMerge.test.js +26 -0
  365. package/dist/src/utils/layout/flexLayout.d.ts +182 -0
  366. package/dist/src/utils/layout/flexLayout.d.ts.map +1 -0
  367. package/dist/src/utils/layout/flexLayout.js +381 -0
  368. package/dist/src/utils/layout/flexLayout.test.js +323 -0
  369. package/dist/src/utils/layout/grid.d.ts +29 -0
  370. package/dist/src/utils/layout/grid.d.ts.map +1 -0
  371. package/dist/src/utils/layout/grid.js +95 -0
  372. package/dist/src/utils/layout/grid.test.js +71 -0
  373. package/dist/src/utils/layout/padding.d.ts +83 -0
  374. package/dist/src/utils/layout/padding.d.ts.map +1 -0
  375. package/dist/src/utils/layout/padding.js +155 -0
  376. package/dist/src/utils/layout/point.d.ts +16 -0
  377. package/dist/src/utils/layout/point.d.ts.map +1 -0
  378. package/dist/src/utils/layout/point.js +23 -0
  379. package/dist/src/utils/layout/rectangle.d.ts +142 -0
  380. package/dist/src/utils/layout/rectangle.d.ts.map +1 -0
  381. package/dist/src/utils/layout/rectangle.js +296 -0
  382. package/dist/src/utils/layout/rectangle.test.js +172 -0
  383. package/dist/src/utils/mergeObjects.d.ts +15 -0
  384. package/dist/src/utils/mergeObjects.d.ts.map +1 -0
  385. package/dist/src/utils/mergeObjects.js +99 -0
  386. package/dist/src/utils/mergeObjects.test.js +42 -0
  387. package/dist/src/utils/numberExtractor.d.ts +9 -0
  388. package/dist/src/utils/numberExtractor.d.ts.map +1 -0
  389. package/dist/src/utils/numberExtractor.js +24 -0
  390. package/dist/src/utils/numberExtractor.test.js +6 -0
  391. package/dist/src/utils/point.d.ts +9 -0
  392. package/dist/src/utils/point.d.ts.map +1 -0
  393. package/dist/src/utils/point.js +14 -0
  394. package/dist/src/utils/propertyCacher.d.ts +30 -0
  395. package/dist/src/utils/propertyCacher.d.ts.map +1 -0
  396. package/dist/src/utils/propertyCacher.js +70 -0
  397. package/dist/src/utils/propertyCacher.test.js +85 -0
  398. package/dist/src/utils/propertyCoalescer.d.ts +15 -0
  399. package/dist/src/utils/propertyCoalescer.d.ts.map +1 -0
  400. package/dist/src/utils/propertyCoalescer.js +42 -0
  401. package/dist/src/utils/propertyCoalescer.test.js +22 -0
  402. package/dist/src/utils/reservationMap.d.ts +42 -0
  403. package/dist/src/utils/reservationMap.d.ts.map +1 -0
  404. package/dist/src/utils/reservationMap.js +103 -0
  405. package/dist/src/utils/reservationMap.test.js +20 -0
  406. package/dist/src/utils/scaleNull.d.ts +13 -0
  407. package/dist/src/utils/scaleNull.d.ts.map +1 -0
  408. package/dist/src/utils/scaleNull.js +21 -0
  409. package/dist/src/utils/setOperations.d.ts +31 -0
  410. package/dist/src/utils/setOperations.d.ts.map +1 -0
  411. package/dist/src/utils/setOperations.js +75 -0
  412. package/dist/src/utils/smoothstep.d.ts +7 -0
  413. package/dist/src/utils/smoothstep.d.ts.map +1 -0
  414. package/dist/src/utils/smoothstep.js +10 -0
  415. package/dist/src/utils/throttle.d.ts +8 -0
  416. package/dist/src/utils/throttle.d.ts.map +1 -0
  417. package/dist/src/utils/throttle.js +34 -0
  418. package/dist/src/utils/topK.d.ts +22 -0
  419. package/dist/src/utils/topK.d.ts.map +1 -0
  420. package/dist/src/utils/topK.js +76 -0
  421. package/dist/src/utils/topK.test.js +64 -0
  422. package/dist/src/utils/transition.d.ts +44 -0
  423. package/dist/src/utils/transition.d.ts.map +1 -0
  424. package/dist/src/utils/transition.js +74 -0
  425. package/dist/src/utils/trees.d.ts +56 -0
  426. package/dist/src/utils/trees.d.ts.map +1 -0
  427. package/dist/src/utils/trees.js +92 -0
  428. package/dist/src/utils/trees.test.js +130 -0
  429. package/dist/src/utils/ui/tooltip.d.ts +50 -0
  430. package/dist/src/utils/ui/tooltip.d.ts.map +1 -0
  431. package/dist/src/utils/ui/tooltip.js +189 -0
  432. package/dist/src/utils/url.d.ts +9 -0
  433. package/dist/src/utils/url.d.ts.map +1 -0
  434. package/dist/src/utils/url.js +22 -0
  435. package/dist/src/utils/variableTools.d.ts +14 -0
  436. package/dist/src/utils/variableTools.d.ts.map +1 -0
  437. package/dist/src/utils/variableTools.js +24 -0
  438. package/dist/src/utils/variableTools.test.js +13 -0
  439. package/dist/src/view/axisGridView.d.ts +39 -0
  440. package/dist/src/view/axisGridView.d.ts.map +1 -0
  441. package/dist/src/view/axisGridView.js +246 -0
  442. package/dist/src/view/axisResolution.d.ts +24 -0
  443. package/dist/src/view/axisResolution.d.ts.map +1 -0
  444. package/dist/src/view/axisResolution.js +141 -0
  445. package/dist/src/view/axisResolution.test.js +201 -0
  446. package/dist/src/view/axisView.d.ts +49 -0
  447. package/dist/src/view/axisView.d.ts.map +1 -0
  448. package/dist/src/view/axisView.js +629 -0
  449. package/dist/src/view/concatView.d.ts +16 -0
  450. package/dist/src/view/concatView.d.ts.map +1 -0
  451. package/dist/src/view/concatView.js +84 -0
  452. package/dist/src/view/containerView.d.ts +43 -0
  453. package/dist/src/view/containerView.d.ts.map +1 -0
  454. package/dist/src/view/containerView.js +137 -0
  455. package/dist/src/view/facetView.d.ts +71 -0
  456. package/dist/src/view/facetView.d.ts.map +1 -0
  457. package/dist/src/view/facetView.js +492 -0
  458. package/dist/src/view/flowBuilder.d.ts +37 -0
  459. package/dist/src/view/flowBuilder.d.ts.map +1 -0
  460. package/dist/src/view/flowBuilder.js +383 -0
  461. package/dist/src/view/flowBuilder.test.js +125 -0
  462. package/dist/src/view/gridView.d.ts +111 -0
  463. package/dist/src/view/gridView.d.ts.map +1 -0
  464. package/dist/src/view/gridView.js +1086 -0
  465. package/dist/src/view/implicitRootView.d.ts +9 -0
  466. package/dist/src/view/implicitRootView.d.ts.map +1 -0
  467. package/dist/src/view/implicitRootView.js +23 -0
  468. package/dist/src/view/importView.d.ts +17 -0
  469. package/dist/src/view/importView.d.ts.map +1 -0
  470. package/dist/src/view/importView.js +22 -0
  471. package/dist/src/view/layerView.d.ts +25 -0
  472. package/dist/src/view/layerView.d.ts.map +1 -0
  473. package/dist/src/view/layerView.js +77 -0
  474. package/dist/src/view/renderingContext/bufferedViewRenderingContext.d.ts +30 -0
  475. package/dist/src/view/renderingContext/bufferedViewRenderingContext.d.ts.map +1 -0
  476. package/dist/src/view/renderingContext/bufferedViewRenderingContext.js +175 -0
  477. package/dist/src/view/renderingContext/compositeViewRenderingContext.d.ts +14 -0
  478. package/dist/src/view/renderingContext/compositeViewRenderingContext.d.ts.map +1 -0
  479. package/dist/src/view/renderingContext/compositeViewRenderingContext.js +51 -0
  480. package/dist/src/view/renderingContext/debuggingViewRenderingContext.d.ts +51 -0
  481. package/dist/src/view/renderingContext/debuggingViewRenderingContext.d.ts.map +1 -0
  482. package/dist/src/view/renderingContext/debuggingViewRenderingContext.js +94 -0
  483. package/dist/src/view/renderingContext/layoutRecorderViewRenderingContext.d.ts +60 -0
  484. package/dist/src/view/renderingContext/layoutRecorderViewRenderingContext.d.ts.map +1 -0
  485. package/dist/src/view/renderingContext/layoutRecorderViewRenderingContext.js +128 -0
  486. package/dist/src/view/renderingContext/simpleViewRenderingContext.d.ts +19 -0
  487. package/dist/src/view/renderingContext/simpleViewRenderingContext.d.ts.map +1 -0
  488. package/dist/src/view/renderingContext/simpleViewRenderingContext.js +64 -0
  489. package/dist/src/view/renderingContext/svgViewRenderingContext.d.ts +22 -0
  490. package/dist/src/view/renderingContext/svgViewRenderingContext.d.ts.map +1 -0
  491. package/dist/src/view/renderingContext/svgViewRenderingContext.js +125 -0
  492. package/dist/src/view/renderingContext/viewRenderingContext.d.ts +33 -0
  493. package/dist/src/view/renderingContext/viewRenderingContext.d.ts.map +1 -0
  494. package/dist/src/view/renderingContext/viewRenderingContext.js +41 -0
  495. package/dist/src/view/scaleResolution.d.ts +170 -0
  496. package/dist/src/view/scaleResolution.d.ts.map +1 -0
  497. package/dist/src/view/scaleResolution.js +874 -0
  498. package/dist/src/view/scaleResolution.test.js +658 -0
  499. package/dist/src/view/testUtils.d.ts +30 -0
  500. package/dist/src/view/testUtils.d.ts.map +1 -0
  501. package/dist/src/view/testUtils.js +101 -0
  502. package/dist/src/view/title.d.ts +6 -0
  503. package/dist/src/view/title.d.ts.map +1 -0
  504. package/dist/src/view/title.js +165 -0
  505. package/dist/src/view/unitView.d.ts +93 -0
  506. package/dist/src/view/unitView.d.ts.map +1 -0
  507. package/dist/src/view/unitView.js +345 -0
  508. package/dist/src/view/view.d.ts +291 -0
  509. package/dist/src/view/view.d.ts.map +1 -0
  510. package/dist/src/view/view.js +691 -0
  511. package/dist/src/view/view.test.js +214 -0
  512. package/dist/src/view/viewFactory.d.ts +76 -0
  513. package/dist/src/view/viewFactory.d.ts.map +1 -0
  514. package/dist/src/view/viewFactory.js +178 -0
  515. package/dist/src/view/viewFactory.test.js +17 -0
  516. package/dist/src/view/viewUtils.d.ts +90 -0
  517. package/dist/src/view/viewUtils.d.ts.map +1 -0
  518. package/dist/src/view/viewUtils.js +326 -0
  519. package/dist/src/view/zoom.d.ts +23 -0
  520. package/dist/src/view/zoom.d.ts.map +1 -0
  521. package/dist/src/view/zoom.js +89 -0
  522. package/package.json +15 -12
  523. package/dist/style.css +0 -1
@@ -0,0 +1,193 @@
1
+ import { describe, expect, test } from "vitest";
2
+ import FlowNode, { BEHAVIOR_CLONES } from "./flowNode";
3
+ import { removeRedundantCloneTransforms, validateLinks } from "./flowOptimizer";
4
+ import CloneTransform from "./transforms/clone";
5
+ import Collector from "./collector";
6
+ import DataFlow from "./dataFlow";
7
+ import { combineIdenticalDataSources } from "./flowOptimizer";
8
+ import InlineSource from "./sources/inlineSource";
9
+ import UrlSource from "./sources/urlSource";
10
+
11
+ test("validateLinks() detects broken graph", () => {
12
+ const root = new FlowNode();
13
+ const a = new FlowNode();
14
+ const b = new FlowNode();
15
+ const c = new FlowNode();
16
+
17
+ root.addChild(a);
18
+ root.addChild(b);
19
+ root.addChild(c);
20
+
21
+ expect(validateLinks(root)).toBeTruthy();
22
+
23
+ // Break it!
24
+ b.parent = undefined;
25
+
26
+ expect(validateLinks(root)).toBeFalsy();
27
+
28
+ // Check handling of root
29
+
30
+ const rootWithParent = new FlowNode();
31
+ // Break it!
32
+ rootWithParent.parent = new FlowNode();
33
+
34
+ expect(validateLinks(rootWithParent)).toBeFalsy();
35
+ });
36
+
37
+ describe("removeRedundantCloneTransforms", () => {
38
+ test("Removes redundancy from linear graph #1", () => {
39
+ const a = new FlowNode();
40
+ const b = new CloneTransform();
41
+ const c = new FlowNode();
42
+ const d = new CloneTransform();
43
+ const e = new CloneTransform();
44
+ const f = new FlowNode();
45
+
46
+ a.addChild(b);
47
+ b.addChild(c);
48
+ c.addChild(d);
49
+ d.addChild(e);
50
+ e.addChild(f);
51
+
52
+ removeRedundantCloneTransforms(a);
53
+
54
+ expect(a.children[0]).toBe(c);
55
+ expect(c.children[0]).toBe(f);
56
+ });
57
+
58
+ test("Removes redundancy from linear graph #2", () => {
59
+ const a = new FlowNode();
60
+ const b = new CloneTransform();
61
+ const c = new FlowNode();
62
+ const d = new CloneTransform();
63
+ const e = new CloneTransform();
64
+ const f = new FlowNode();
65
+
66
+ a.addChild(b);
67
+ b.addChild(c);
68
+ c.addChild(d);
69
+ d.addChild(e);
70
+ e.addChild(f);
71
+
72
+ // First CloneTransform should be retained
73
+ removeRedundantCloneTransforms(a, true);
74
+
75
+ expect(a.children[0]).toBe(b);
76
+ expect(b.children[0]).toBe(c);
77
+ expect(c.children[0]).toBe(f);
78
+ });
79
+
80
+ test("Node with cloning behavior satisfies cloning requirement", () => {
81
+ class CloningFlowNode extends FlowNode {
82
+ get behavior() {
83
+ return BEHAVIOR_CLONES;
84
+ }
85
+ }
86
+
87
+ const a = new FlowNode();
88
+ const b = new CloningFlowNode();
89
+ const c = new FlowNode();
90
+ const d = new CloneTransform();
91
+ const e = new FlowNode();
92
+
93
+ a.addChild(b);
94
+ b.addChild(c);
95
+ c.addChild(d);
96
+ d.addChild(e);
97
+
98
+ removeRedundantCloneTransforms(a, true);
99
+
100
+ expect(a.children[0]).toBe(b);
101
+ expect(b.children[0]).toBe(c);
102
+ expect(c.children[0]).toBe(e);
103
+ });
104
+
105
+ test("Removes redundancy from a branching graph", () => {
106
+ const root = new FlowNode();
107
+ const branching = new FlowNode();
108
+ const a = new CloneTransform();
109
+ const al = new FlowNode();
110
+ const b = new CloneTransform();
111
+ const bl = new FlowNode();
112
+ const c = new CloneTransform();
113
+ const cl = new FlowNode();
114
+
115
+ root.addChild(branching);
116
+ branching.addChild(a);
117
+ branching.addChild(b);
118
+ branching.addChild(c);
119
+ a.addChild(al);
120
+ b.addChild(bl);
121
+ c.addChild(cl);
122
+
123
+ removeRedundantCloneTransforms(root);
124
+
125
+ // All but the last branch needs cloning
126
+ expect(branching.children[0]).toBe(a);
127
+ expect(branching.children[1]).toBe(b);
128
+ expect(branching.children[2]).toBe(c);
129
+ });
130
+ });
131
+
132
+ describe("Merge indentical data sources", () => {
133
+ test("Merges correctly", () => {
134
+ /** @type {DataFlow<string>} */
135
+ const dataFlow = new DataFlow();
136
+
137
+ const a = new UrlSource({ url: "http://genomespy.app/" });
138
+ const ac = new Collector();
139
+ a.addChild(ac);
140
+
141
+ const b = new UrlSource({ url: "http://genomespy.app/" });
142
+ const bc = new Collector();
143
+ b.addChild(bc);
144
+
145
+ const c = new UrlSource({ url: "http://helsinki.fi/" });
146
+ const cc = new Collector();
147
+ c.addChild(cc);
148
+
149
+ dataFlow.addDataSource(a, "a");
150
+ dataFlow.addDataSource(b, "b");
151
+ dataFlow.addDataSource(c, "c");
152
+
153
+ dataFlow.addCollector(ac, "a");
154
+ dataFlow.addCollector(bc, "b");
155
+ dataFlow.addCollector(cc, "c");
156
+
157
+ combineIdenticalDataSources(dataFlow);
158
+
159
+ expect(dataFlow.dataSources.length).toEqual(2);
160
+
161
+ expect(dataFlow.findDataSourceByKey("a")).toBe(a);
162
+ expect(dataFlow.findDataSourceByKey("b")).toBe(a); // Merged!
163
+ expect(dataFlow.findDataSourceByKey("c")).toBe(c);
164
+
165
+ expect(new Set(a.children)).toEqual(new Set([ac, bc]));
166
+ expect(c.children[0]).toBe(cc);
167
+
168
+ for (const dataSource of dataFlow.dataSources) {
169
+ // Cheat that we loaded something
170
+ dataSource.complete();
171
+ }
172
+
173
+ expect(ac.completed).toBeTruthy();
174
+ expect(bc.completed).toBeTruthy();
175
+ expect(cc.completed).toBeTruthy();
176
+ });
177
+
178
+ test("Does not merge those with undefined identifier", () => {
179
+ /** @type {DataFlow<string>} */
180
+ const dataFlow = new DataFlow();
181
+
182
+ const a = new InlineSource({ values: [1, 2, 3] });
183
+ const b = new InlineSource({ values: [1, 2, 3] });
184
+
185
+ dataFlow.addDataSource(a, "a");
186
+ dataFlow.addDataSource(b, "b");
187
+
188
+ combineIdenticalDataSources(dataFlow);
189
+
190
+ expect(dataFlow.findDataSourceByKey("a")).toBe(a);
191
+ expect(dataFlow.findDataSourceByKey("b")).toBe(b);
192
+ });
193
+ });
@@ -0,0 +1,30 @@
1
+ /**
2
+ *
3
+ * @param {import("./flowNode").default} flowNode
4
+ * @param {any[]} data
5
+ */
6
+ export function processData(flowNode: import("./flowNode").default, data: any[]): import("./flowNode").Datum[];
7
+ /**
8
+ * For testing
9
+ */
10
+ export class SynchronousSource extends FlowNode {
11
+ /**
12
+ *
13
+ * @param {any[]} data
14
+ */
15
+ constructor(data: any[]);
16
+ data: any[];
17
+ dispatch(): void;
18
+ }
19
+ /**
20
+ * For testing
21
+ */
22
+ export class SynchronousSequenceSource extends SynchronousSource {
23
+ /**
24
+ *
25
+ * @param {number} n number of elements
26
+ */
27
+ constructor(n: number);
28
+ }
29
+ import FlowNode from "./flowNode";
30
+ //# sourceMappingURL=flowTestUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flowTestUtils.d.ts","sourceRoot":"","sources":["../../../src/data/flowTestUtils.js"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,sCAHW,OAAO,YAAY,EAAE,OAAO,QAC5B,GAAG,EAAE,gCAcf;AAED;;GAEG;AACH;IACI;;;OAGG;IACH,kBAFW,GAAG,EAAE,EAKf;IADG,YAAgB;IAGpB,iBAMC;CACJ;AAED;;GAEG;AACH;IACI;;;OAGG;IACH,eAFW,MAAM,EAWhB;CACJ;qBA7DoB,YAAY"}
@@ -0,0 +1,63 @@
1
+ import Collector from "./collector";
2
+ import FlowNode from "./flowNode";
3
+
4
+ /**
5
+ *
6
+ * @param {import("./flowNode").default} flowNode
7
+ * @param {any[]} data
8
+ */
9
+ export function processData(flowNode, data) {
10
+ const collector = new Collector();
11
+ flowNode.addChild(collector);
12
+
13
+ for (const d of data) {
14
+ flowNode.handle(d);
15
+ }
16
+ flowNode.complete();
17
+
18
+ flowNode.removeChild(collector);
19
+
20
+ return [...collector.getData()];
21
+ }
22
+
23
+ /**
24
+ * For testing
25
+ */
26
+ export class SynchronousSource extends FlowNode {
27
+ /**
28
+ *
29
+ * @param {any[]} data
30
+ */
31
+ constructor(data) {
32
+ super();
33
+ this.data = data;
34
+ }
35
+
36
+ dispatch() {
37
+ for (const d of this.data) {
38
+ this._propagate(d);
39
+ }
40
+
41
+ this.complete();
42
+ }
43
+ }
44
+
45
+ /**
46
+ * For testing
47
+ */
48
+ export class SynchronousSequenceSource extends SynchronousSource {
49
+ /**
50
+ *
51
+ * @param {number} n number of elements
52
+ */
53
+ constructor(n) {
54
+ n = n || 10;
55
+
56
+ const data = [];
57
+ for (let i = 0; i < n; i++) {
58
+ data.push({ data: i });
59
+ }
60
+
61
+ super(data);
62
+ }
63
+ }
@@ -0,0 +1,20 @@
1
+ /**
2
+ * A bare-bones FASTA-parser
3
+ *
4
+ * @typedef {object} SequenceEntry
5
+ * @prop {string} identifier
6
+ * @prop {string} sequence
7
+ *
8
+ * @param {string} data
9
+ * @param {any} options
10
+ * @returns {SequenceEntry[]}
11
+ */
12
+ export default function fasta(data: string, options: any): SequenceEntry[];
13
+ /**
14
+ * A bare-bones FASTA-parser
15
+ */
16
+ export type SequenceEntry = {
17
+ identifier: string;
18
+ sequence: string;
19
+ };
20
+ //# sourceMappingURL=fasta.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fasta.d.ts","sourceRoot":"","sources":["../../../../src/data/formats/fasta.js"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,oCAJW,MAAM,WACN,GAAG,GACD,aAAa,EAAE,CAsB3B;;;;;gBA3BS,MAAM;cACN,MAAM"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * A bare-bones FASTA-parser
3
+ *
4
+ * @typedef {object} SequenceEntry
5
+ * @prop {string} identifier
6
+ * @prop {string} sequence
7
+ *
8
+ * @param {string} data
9
+ * @param {any} options
10
+ * @returns {SequenceEntry[]}
11
+ */
12
+ export default function fasta(data, options) {
13
+ /** @type {SequenceEntry[]} */
14
+ const sequences = [];
15
+
16
+ /** @type {SequenceEntry} */
17
+ let currentEntry;
18
+
19
+ for (const line of data.split("\n")) {
20
+ if (line.startsWith(">")) {
21
+ const identifier = line.match(/>(\S+)/)[1];
22
+ currentEntry = { identifier, sequence: "" };
23
+ sequences.push(currentEntry);
24
+ } else if (currentEntry) {
25
+ currentEntry.sequence += line.trim();
26
+ } else {
27
+ throw new Error("Invalid fasta file!");
28
+ }
29
+ }
30
+
31
+ return sequences;
32
+ }
@@ -0,0 +1,27 @@
1
+ import { expect, test } from "vitest";
2
+ import fasta from "./fasta";
3
+
4
+ test("fasta", () => {
5
+ const fileContent = `>A stuff
6
+ --------------------------AGAGTTTGATCCTGGCTCAGGGTGAACGCTGGCG
7
+ GCGTGC----TTAAGACATGCAAGTCGAACGG-CCT------TCTTCG-G-AAGGC-AGT
8
+ ---------------------------------
9
+ >B other stuff
10
+ --------------------------AGAGTTTGATCATGGCTCAGGGTGAACGCTGGCG
11
+ GCGTGC----TTAAGACATGCAAGTCGGACGA-TCG------GCTTCG---GCCGGTAGT
12
+ ---------------------------------
13
+ `;
14
+
15
+ expect(fasta(fileContent)).toEqual([
16
+ {
17
+ identifier: "A",
18
+ sequence:
19
+ "--------------------------AGAGTTTGATCCTGGCTCAGGGTGAACGCTGGCGGCGTGC----TTAAGACATGCAAGTCGAACGG-CCT------TCTTCG-G-AAGGC-AGT---------------------------------",
20
+ },
21
+ {
22
+ identifier: "B",
23
+ sequence:
24
+ "--------------------------AGAGTTTGATCATGGCTCAGGGTGAACGCTGGCGGCGTGC----TTAAGACATGCAAGTCGGACGA-TCG------GCTTCG---GCCGGTAGT---------------------------------",
25
+ },
26
+ ]);
27
+ });
@@ -0,0 +1,12 @@
1
+ export default class DataSource extends FlowNode {
2
+ /**
3
+ * Returns a string that identifies a data source. Data sources with the
4
+ * same identifier can be merged.
5
+ *
6
+ * @return {string}
7
+ */
8
+ get identifier(): string;
9
+ load(): Promise<void>;
10
+ }
11
+ import FlowNode from "../flowNode";
12
+ //# sourceMappingURL=dataSource.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dataSource.d.ts","sourceRoot":"","sources":["../../../../src/data/sources/dataSource.js"],"names":[],"mappings":"AAEA;IACI;;;;;OAKG;IACH,yBAEC;IAUD,sBAEC;CACJ;qBAxBoB,aAAa"}
@@ -0,0 +1,25 @@
1
+ import FlowNode from "../flowNode";
2
+
3
+ export default class DataSource extends FlowNode {
4
+ /**
5
+ * Returns a string that identifies a data source. Data sources with the
6
+ * same identifier can be merged.
7
+ *
8
+ * @return {string}
9
+ */
10
+ get identifier() {
11
+ return undefined;
12
+ }
13
+
14
+ /**
15
+ *
16
+ * @param {import("../flowNode").Datum} datum
17
+ */
18
+ handle(datum) {
19
+ throw new Error("Source does not handle incoming data!");
20
+ }
21
+
22
+ async load() {
23
+ // override
24
+ }
25
+ }
@@ -0,0 +1,16 @@
1
+ /**
2
+ * @param {Partial<import("../../spec/data").Data>} params
3
+ * @param {import("../../view/view").default} view
4
+ */
5
+ export default function createDataSource(params: Partial<import("../../spec/data").Data>, view: import("../../view/view").default): InlineSource | UrlSource | SequenceSource | AxisTickSource | AxisGenomeSource | IndexedFastaSource | BigWigSource | BigBedSource | BamSource | Gff3Source;
6
+ import InlineSource from "./inlineSource";
7
+ import UrlSource from "./urlSource";
8
+ import SequenceSource from "./sequenceSource";
9
+ import AxisTickSource from "./dynamic/axisTickSource";
10
+ import AxisGenomeSource from "./dynamic/axisGenomeSource";
11
+ import IndexedFastaSource from "./dynamic/indexedFastaSource";
12
+ import BigWigSource from "./dynamic/bigWigSource";
13
+ import BigBedSource from "./dynamic/bigBedSource";
14
+ import BamSource from "./dynamic/bamSource";
15
+ import Gff3Source from "./dynamic/gff3Source";
16
+ //# sourceMappingURL=dataSourceFactory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dataSourceFactory.d.ts","sourceRoot":"","sources":["../../../../src/data/sources/dataSourceFactory.js"],"names":[],"mappings":"AAWA;;;GAGG;AACH,iDAHW,QAAQ,OAAO,iBAAiB,EAAE,IAAI,CAAC,QACvC,OAAO,iBAAiB,EAAE,OAAO,6JAgB3C;yBA7B0C,gBAAgB;sBACtB,aAAa;2BACE,kBAAkB;2BAC3C,0BAA0B;6BACxB,4BAA4B;+BAC1B,8BAA8B;yBACpC,wBAAwB;yBACxB,wBAAwB;sBAC3B,qBAAqB;uBACpB,sBAAsB"}
@@ -0,0 +1,127 @@
1
+ import InlineSource, { isInlineData } from "./inlineSource";
2
+ import UrlSource, { isUrlData } from "./urlSource";
3
+ import SequenceSource, { isSequenceGenerator } from "./sequenceSource";
4
+ import AxisTickSource from "./dynamic/axisTickSource";
5
+ import AxisGenomeSource from "./dynamic/axisGenomeSource";
6
+ import IndexedFastaSource from "./dynamic/indexedFastaSource";
7
+ import BigWigSource from "./dynamic/bigWigSource";
8
+ import BigBedSource from "./dynamic/bigBedSource";
9
+ import BamSource from "./dynamic/bamSource";
10
+ import Gff3Source from "./dynamic/gff3Source";
11
+
12
+ /**
13
+ * @param {Partial<import("../../spec/data").Data>} params
14
+ * @param {import("../../view/view").default} view
15
+ */
16
+ export default function createDataSource(params, view) {
17
+ if (isInlineData(params)) {
18
+ return new InlineSource(params, view);
19
+ } else if (isUrlData(params)) {
20
+ return new UrlSource(params, view);
21
+ } else if (isSequenceGenerator(params)) {
22
+ return new SequenceSource(params, view);
23
+ } else if (isLazyData(params)) {
24
+ return createDynamicDataSource(params.lazy, view);
25
+ }
26
+
27
+ throw new Error(
28
+ "Cannot figure out the data source type: " + JSON.stringify(params)
29
+ );
30
+ }
31
+
32
+ /**
33
+ *
34
+ * @param {Partial<import("../../spec/data").Data>} params
35
+ * @returns {params is import("../../spec/data").LazyData}
36
+ */
37
+ function isLazyData(params) {
38
+ return "lazy" in params;
39
+ }
40
+
41
+ /**
42
+ *
43
+ * @param {import("../../spec/data").LazyDataParams} params
44
+ * @returns {params is import("../../spec/data").AxisTicksData}
45
+ */
46
+ function isAxisTickSource(params) {
47
+ return params?.type == "axisTicks";
48
+ }
49
+
50
+ /**
51
+ *
52
+ * @param {import("../../spec/data").LazyDataParams} params
53
+ * @returns {params is import("../../spec/data").AxisGenomeData}
54
+ */
55
+ function isAxisGenomeSource(params) {
56
+ return params?.type == "axisGenome";
57
+ }
58
+
59
+ /**
60
+ *
61
+ * @param {import("../../spec/data").LazyDataParams} params
62
+ * @returns {params is import("../../spec/data").IndexedFastaData}
63
+ */
64
+ function isIndexedFastaSource(params) {
65
+ return params?.type == "indexedFasta";
66
+ }
67
+
68
+ /**
69
+ *
70
+ * @param {import("../../spec/data").LazyDataParams} params
71
+ * @returns {params is import("../../spec/data").BigWigData}
72
+ */
73
+ function isBigWigSource(params) {
74
+ return params?.type == "bigwig";
75
+ }
76
+
77
+ /**
78
+ *
79
+ * @param {import("../../spec/data").LazyDataParams} params
80
+ * @returns {params is import("../../spec/data").BigBedData}
81
+ */
82
+ function isBigBedSource(params) {
83
+ return params?.type == "bigbed";
84
+ }
85
+
86
+ /**
87
+ *
88
+ * @param {import("../../spec/data").LazyDataParams} params
89
+ * @returns {params is import("../../spec/data").BamData}
90
+ */
91
+ function isBamSource(params) {
92
+ return params?.type == "bam";
93
+ }
94
+
95
+ /**
96
+ * @param {import("../../spec/data").LazyDataParams} params
97
+ * @returns {params is import("../../spec/data").Gff3Data}
98
+ */
99
+ function isGff3Source(params) {
100
+ return params?.type == "gff3";
101
+ }
102
+
103
+ /**
104
+ * @param {import("../../spec/data").LazyDataParams} params
105
+ * @param {import("../../view/view").default} view
106
+ */
107
+ function createDynamicDataSource(params, view) {
108
+ if (isAxisTickSource(params)) {
109
+ return new AxisTickSource(params, view);
110
+ } else if (isAxisGenomeSource(params)) {
111
+ return new AxisGenomeSource(params, view);
112
+ } else if (isIndexedFastaSource(params)) {
113
+ return new IndexedFastaSource(params, view);
114
+ } else if (isBigWigSource(params)) {
115
+ return new BigWigSource(params, view);
116
+ } else if (isBigBedSource(params)) {
117
+ return new BigBedSource(params, view);
118
+ } else if (isBamSource(params)) {
119
+ return new BamSource(params, view);
120
+ } else if (isGff3Source(params)) {
121
+ return new Gff3Source(params, view);
122
+ }
123
+
124
+ throw new Error(
125
+ "Cannot figure out the data source type: " + JSON.stringify(params)
126
+ );
127
+ }
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Validates data source params, infers format if not specified explicitly,
3
+ * returns a complete DataSource params object.
4
+ *
5
+ * @param {import("../../spec/data").DataSource} params
6
+ * DataSource parameters
7
+ */
8
+ export function getFormat(params: import("../../spec/data").DataSource): {
9
+ type?: "csv" | "tsv";
10
+ parse?: import("../../spec/data").Parse;
11
+ } | {
12
+ type?: "dsv";
13
+ delimiter: string;
14
+ parse?: import("../../spec/data").Parse;
15
+ } | {
16
+ type?: "json";
17
+ property?: string;
18
+ parse?: import("../../spec/data").Parse;
19
+ } | {
20
+ type: string;
21
+ };
22
+ /**
23
+ * @param {string | string[]} url
24
+ */
25
+ export function extractTypeFromUrl(url: string | string[]): string;
26
+ /**
27
+ * @param {import("../../spec/data").DataFormat} dataFormat
28
+ * @return {dataFormat is import("../../spec/data").CsvDataFormat}
29
+ */
30
+ export function isCsvDataFormat(dataFormat: import("../../spec/data").DataFormat): dataFormat is import("../../spec/data").CsvDataFormat;
31
+ /**
32
+ * @param {import("../../spec/data").DataFormat} dataFormat
33
+ * @return {dataFormat is import("../../spec/data").DsvDataFormat}
34
+ */
35
+ export function isDsvDataFormat(dataFormat: import("../../spec/data").DataFormat): dataFormat is import("../../spec/data").DsvDataFormat;
36
+ /**
37
+ * @param {import("../../spec/data").DataFormat} dataFormat
38
+ * @return {dataFormat is import("../../spec/data").JsonDataFormat}
39
+ */
40
+ export function isJsonDataFormat(dataFormat: import("../../spec/data").DataFormat): dataFormat is import("../../spec/data").JsonDataFormat;
41
+ /**
42
+ *
43
+ * @param {import("../../spec/data").DataSource} dataSource
44
+ * @return {dataSource is import("../../spec/data").UrlData}
45
+ */
46
+ export function isUrlData(dataSource: import("../../spec/data").DataSource): dataSource is import("../../spec/data").UrlData;
47
+ export function makeWrapper(d: any): ((x: import("@genome-spy/core/spec/channel").Scalar) => {
48
+ data: import("@genome-spy/core/spec/channel").Scalar;
49
+ }) | ((x: import("../flowNode").Datum) => import("../flowNode").Datum);
50
+ //# sourceMappingURL=dataUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dataUtils.d.ts","sourceRoot":"","sources":["../../../../src/data/sources/dataUtils.js"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,kCAHW,OAAO,iBAAiB,EAAE,UAAU;;;;;;;;;;;;;EAqB9C;AAED;;GAEG;AACH,wCAFW,MAAM,GAAG,MAAM,EAAE,UAU3B;AAWD;;;GAGG;AACH,4CAHW,OAAO,iBAAiB,EAAE,UAAU,yDAK9C;AAED;;;GAGG;AACH,4CAHW,OAAO,iBAAiB,EAAE,UAAU,yDAK9C;AAED;;;GAGG;AACH,6CAHW,OAAO,iBAAiB,EAAE,UAAU,0DAK9C;AAED;;;;GAIG;AACH,sCAHW,OAAO,iBAAiB,EAAE,UAAU,mDAK9C;AAxCM,+BAAgC,GAAG,QAI3B,OAAO,+BAA+B,EAAE,MAAM;;UAG9B,OAAO,aAAa,EAAE,KAAK,kCANL"}