@jbrowse/plugin-wiggle 3.7.0 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (403) hide show
  1. package/esm/BigWigAdapter/BigWigAdapter.d.ts +14 -1
  2. package/esm/BigWigAdapter/BigWigAdapter.js +118 -22
  3. package/esm/BigWigAdapter/configSchema.d.ts +2 -2
  4. package/esm/BigWigAdapter/configSchema.js +1 -1
  5. package/esm/BigWigAdapter/index.js +2 -2
  6. package/esm/CreateMultiWiggleExtension/index.js +1 -1
  7. package/esm/DensityRenderer/DensityRenderer.d.ts +5 -6
  8. package/esm/DensityRenderer/DensityRenderer.js +6 -5
  9. package/esm/DensityRenderer/configSchema.d.ts +3 -3
  10. package/esm/DensityRenderer/configSchema.js +1 -1
  11. package/esm/DensityRenderer/index.js +11 -9
  12. package/esm/DensityRenderer/makeImageData.d.ts +3 -0
  13. package/esm/DensityRenderer/makeImageData.js +13 -0
  14. package/esm/DensityRenderer/renderDensity.d.ts +3 -0
  15. package/esm/DensityRenderer/renderDensity.js +18 -0
  16. package/esm/LinePlotRenderer/LinePlotRenderer.d.ts +5 -7
  17. package/esm/LinePlotRenderer/LinePlotRenderer.js +6 -15
  18. package/esm/LinePlotRenderer/configSchema.d.ts +4 -4
  19. package/esm/LinePlotRenderer/configSchema.js +1 -1
  20. package/esm/LinePlotRenderer/index.js +4 -4
  21. package/esm/LinePlotRenderer/makeImageData.d.ts +3 -0
  22. package/esm/LinePlotRenderer/makeImageData.js +13 -0
  23. package/esm/LinePlotRenderer/renderLinePlot.d.ts +3 -0
  24. package/esm/LinePlotRenderer/renderLinePlot.js +23 -0
  25. package/esm/LinearWiggleDisplay/components/Tooltip.d.ts +2 -2
  26. package/esm/LinearWiggleDisplay/components/Tooltip.js +10 -6
  27. package/esm/LinearWiggleDisplay/components/WiggleDisplayComponent.d.ts +1 -1
  28. package/esm/LinearWiggleDisplay/components/WiggleDisplayComponent.js +2 -2
  29. package/esm/LinearWiggleDisplay/configSchema.d.ts +9 -9
  30. package/esm/LinearWiggleDisplay/configSchema.js +2 -2
  31. package/esm/LinearWiggleDisplay/index.d.ts +3 -3
  32. package/esm/LinearWiggleDisplay/index.js +6 -6
  33. package/esm/LinearWiggleDisplay/model.d.ts +1128 -105
  34. package/esm/LinearWiggleDisplay/model.js +58 -18
  35. package/esm/LinearWiggleDisplay/renderSvg.d.ts +1 -1
  36. package/esm/LinearWiggleDisplay/renderSvg.js +3 -2
  37. package/esm/MultiDensityRenderer/MultiDensityRenderer.d.ts +5 -7
  38. package/esm/MultiDensityRenderer/MultiDensityRenderer.js +6 -24
  39. package/esm/MultiDensityRenderer/configSchema.d.ts +3 -3
  40. package/esm/MultiDensityRenderer/configSchema.js +1 -1
  41. package/esm/MultiDensityRenderer/index.js +4 -4
  42. package/esm/MultiDensityRenderer/makeImageData.d.ts +3 -0
  43. package/esm/MultiDensityRenderer/makeImageData.js +7 -0
  44. package/esm/MultiDensityRenderer/renderMultiDensity.d.ts +3 -0
  45. package/esm/MultiDensityRenderer/renderMultiDensity.js +37 -0
  46. package/esm/MultiLineRenderer/MultiLineRenderer.d.ts +5 -7
  47. package/esm/MultiLineRenderer/MultiLineRenderer.js +6 -17
  48. package/esm/MultiLineRenderer/configSchema.d.ts +5 -5
  49. package/esm/MultiLineRenderer/configSchema.js +2 -2
  50. package/esm/MultiLineRenderer/index.js +4 -4
  51. package/esm/MultiLineRenderer/makeImageData.d.ts +3 -0
  52. package/esm/MultiLineRenderer/makeImageData.js +7 -0
  53. package/esm/MultiLineRenderer/renderMultiLine.d.ts +3 -0
  54. package/esm/MultiLineRenderer/renderMultiLine.js +34 -0
  55. package/esm/MultiLinearWiggleDisplay/components/ColorLegend.d.ts +2 -2
  56. package/esm/MultiLinearWiggleDisplay/components/ColorLegend.js +11 -6
  57. package/esm/MultiLinearWiggleDisplay/components/FullHeightScaleBar.d.ts +1 -1
  58. package/esm/MultiLinearWiggleDisplay/components/FullHeightScaleBar.js +4 -4
  59. package/esm/MultiLinearWiggleDisplay/components/IndividualScaleBars.d.ts +1 -1
  60. package/esm/MultiLinearWiggleDisplay/components/IndividualScaleBars.js +5 -5
  61. package/esm/MultiLinearWiggleDisplay/components/LegendItem.d.ts +3 -3
  62. package/esm/MultiLinearWiggleDisplay/components/LegendItem.js +1 -1
  63. package/esm/MultiLinearWiggleDisplay/components/LegendItemText.d.ts +6 -4
  64. package/esm/MultiLinearWiggleDisplay/components/LegendItemText.js +2 -2
  65. package/esm/MultiLinearWiggleDisplay/components/RectBg.d.ts +1 -1
  66. package/esm/MultiLinearWiggleDisplay/components/RectBg.js +4 -3
  67. package/esm/MultiLinearWiggleDisplay/components/ScoreLegend.d.ts +2 -2
  68. package/esm/MultiLinearWiggleDisplay/components/ScoreLegend.js +3 -3
  69. package/esm/MultiLinearWiggleDisplay/components/SetColorDialog.d.ts +1 -1
  70. package/esm/MultiLinearWiggleDisplay/components/SetColorDialog.js +2 -2
  71. package/esm/MultiLinearWiggleDisplay/components/SourcesGrid.d.ts +1 -1
  72. package/esm/MultiLinearWiggleDisplay/components/SourcesGrid.js +2 -2
  73. package/esm/MultiLinearWiggleDisplay/components/Tooltip.d.ts +2 -4
  74. package/esm/MultiLinearWiggleDisplay/components/Tooltip.js +8 -9
  75. package/esm/MultiLinearWiggleDisplay/components/WiggleClusterDialog/WiggleClusterDialog.d.ts +1 -1
  76. package/esm/MultiLinearWiggleDisplay/components/WiggleClusterDialog/WiggleClusterDialog.js +3 -3
  77. package/esm/MultiLinearWiggleDisplay/components/WiggleClusterDialog/WiggleClusterDialogAuto.d.ts +1 -1
  78. package/esm/MultiLinearWiggleDisplay/components/WiggleClusterDialog/WiggleClusterDialogAuto.js +4 -5
  79. package/esm/MultiLinearWiggleDisplay/components/WiggleClusterDialog/WiggleClusterDialogManual.d.ts +1 -1
  80. package/esm/MultiLinearWiggleDisplay/components/WiggleClusterDialog/WiggleClusterDialogManual.js +12 -17
  81. package/esm/MultiLinearWiggleDisplay/components/WiggleClusterDialog/types.d.ts +1 -1
  82. package/esm/MultiLinearWiggleDisplay/components/WiggleDisplayComponent.d.ts +1 -1
  83. package/esm/MultiLinearWiggleDisplay/components/WiggleDisplayComponent.js +2 -2
  84. package/esm/MultiLinearWiggleDisplay/components/YScaleBars.d.ts +2 -2
  85. package/esm/MultiLinearWiggleDisplay/components/YScaleBars.js +5 -16
  86. package/esm/MultiLinearWiggleDisplay/components/YScaleBarsWrapper.d.ts +7 -0
  87. package/esm/MultiLinearWiggleDisplay/components/YScaleBarsWrapper.js +15 -0
  88. package/esm/MultiLinearWiggleDisplay/components/types.d.ts +10 -0
  89. package/esm/MultiLinearWiggleDisplay/components/types.js +1 -0
  90. package/esm/MultiLinearWiggleDisplay/components/ui/SetColorDialog.js +4 -4
  91. package/esm/MultiLinearWiggleDisplay/components/ui/SetColorDialogBulkEditPanel.js +1 -1
  92. package/esm/MultiLinearWiggleDisplay/components/util.d.ts +1 -1
  93. package/esm/MultiLinearWiggleDisplay/configSchema.d.ts +9 -9
  94. package/esm/MultiLinearWiggleDisplay/configSchema.js +2 -2
  95. package/esm/MultiLinearWiggleDisplay/index.js +3 -3
  96. package/esm/MultiLinearWiggleDisplay/model.d.ts +3624 -106
  97. package/esm/MultiLinearWiggleDisplay/model.js +78 -48
  98. package/esm/MultiLinearWiggleDisplay/renderSvg.d.ts +1 -1
  99. package/esm/MultiLinearWiggleDisplay/renderSvg.js +3 -2
  100. package/esm/MultiQuantitativeTrack/configSchema.d.ts +16 -11
  101. package/esm/MultiQuantitativeTrack/index.js +13 -2
  102. package/esm/MultiRowLineRenderer/MultiRowLineRenderer.d.ts +5 -7
  103. package/esm/MultiRowLineRenderer/MultiRowLineRenderer.js +6 -29
  104. package/esm/MultiRowLineRenderer/configSchema.d.ts +5 -5
  105. package/esm/MultiRowLineRenderer/configSchema.js +2 -2
  106. package/esm/MultiRowLineRenderer/index.js +4 -4
  107. package/esm/MultiRowLineRenderer/makeImageData.d.ts +3 -0
  108. package/esm/MultiRowLineRenderer/makeImageData.js +7 -0
  109. package/esm/MultiRowLineRenderer/renderMultiRowLine.d.ts +3 -0
  110. package/esm/MultiRowLineRenderer/renderMultiRowLine.js +44 -0
  111. package/esm/MultiRowXYPlotRenderer/MultiRowXYPlotRenderer.d.ts +5 -7
  112. package/esm/MultiRowXYPlotRenderer/MultiRowXYPlotRenderer.js +6 -29
  113. package/esm/MultiRowXYPlotRenderer/configSchema.d.ts +5 -5
  114. package/esm/MultiRowXYPlotRenderer/configSchema.js +2 -2
  115. package/esm/MultiRowXYPlotRenderer/index.js +4 -4
  116. package/esm/MultiRowXYPlotRenderer/makeImageData.d.ts +3 -0
  117. package/esm/MultiRowXYPlotRenderer/makeImageData.js +7 -0
  118. package/esm/MultiRowXYPlotRenderer/renderMultiRowXYPlot.d.ts +3 -0
  119. package/esm/MultiRowXYPlotRenderer/renderMultiRowXYPlot.js +42 -0
  120. package/esm/MultiWiggleAdapter/MultiWiggleAdapter.d.ts +5 -0
  121. package/esm/MultiWiggleAdapter/MultiWiggleAdapter.js +48 -18
  122. package/esm/MultiWiggleAdapter/configSchema.d.ts +2 -2
  123. package/esm/MultiWiggleAdapter/index.js +2 -2
  124. package/esm/MultiWiggleAddTrackWorkflow/AddTrackWorkflow.d.ts +1 -1
  125. package/esm/MultiWiggleAddTrackWorkflow/AddTrackWorkflow.js +3 -4
  126. package/esm/MultiWiggleAddTrackWorkflow/index.js +2 -2
  127. package/esm/MultiWiggleRendering.d.ts +7 -7
  128. package/esm/MultiWiggleRendering.js +9 -7
  129. package/esm/MultiXYPlotRenderer/MultiXYPlotRenderer.d.ts +5 -7
  130. package/esm/MultiXYPlotRenderer/MultiXYPlotRenderer.js +6 -20
  131. package/esm/MultiXYPlotRenderer/configSchema.d.ts +5 -5
  132. package/esm/MultiXYPlotRenderer/configSchema.js +2 -2
  133. package/esm/MultiXYPlotRenderer/index.js +4 -4
  134. package/esm/MultiXYPlotRenderer/makeImageData.d.ts +3 -0
  135. package/esm/MultiXYPlotRenderer/makeImageData.js +7 -0
  136. package/esm/MultiXYPlotRenderer/renderMultiXYPlot.d.ts +3 -0
  137. package/esm/MultiXYPlotRenderer/renderMultiXYPlot.js +35 -0
  138. package/esm/QuantitativeTrack/configSchema.d.ts +16 -11
  139. package/esm/QuantitativeTrack/index.js +13 -2
  140. package/esm/SVGErrorBox.d.ts +5 -0
  141. package/esm/SVGErrorBox.js +4 -0
  142. package/esm/Tooltip.d.ts +1 -3
  143. package/esm/Tooltip.js +7 -7
  144. package/esm/WiggleRPC/MultiWiggleClusterScoreMatrix.d.ts +2 -10
  145. package/esm/WiggleRPC/MultiWiggleClusterScoreMatrix.js +3 -15
  146. package/esm/WiggleRPC/MultiWiggleGetScoreMatrix.d.ts +1 -1
  147. package/esm/WiggleRPC/MultiWiggleGetScoreMatrix.js +2 -5
  148. package/esm/WiggleRPC/MultiWiggleGetSources.js +1 -4
  149. package/esm/WiggleRPC/WiggleGetGlobalQuantitativeStats.js +1 -4
  150. package/esm/WiggleRPC/WiggleGetMultiRegionQuantitativeStats.d.ts +10 -0
  151. package/esm/WiggleRPC/WiggleGetMultiRegionQuantitativeStats.js +26 -5
  152. package/esm/WiggleRPC/executeClusterScoreMatrix.d.ts +6 -0
  153. package/esm/WiggleRPC/executeClusterScoreMatrix.js +15 -0
  154. package/esm/WiggleRPC/getScoreMatrix.d.ts +1 -1
  155. package/esm/WiggleRPC/getScoreMatrix.js +9 -6
  156. package/esm/WiggleRPC/rpcMethods.d.ts +5 -5
  157. package/esm/WiggleRPC/rpcMethods.js +5 -5
  158. package/esm/WiggleRPC/types.d.ts +1 -1
  159. package/esm/WiggleRendering.d.ts +2 -3
  160. package/esm/WiggleRendering.js +16 -3
  161. package/esm/XYPlotRenderer/XYPlotRenderer.d.ts +5 -6
  162. package/esm/XYPlotRenderer/XYPlotRenderer.js +6 -20
  163. package/esm/XYPlotRenderer/configSchema.d.ts +5 -5
  164. package/esm/XYPlotRenderer/configSchema.js +2 -2
  165. package/esm/XYPlotRenderer/index.d.ts +3 -3
  166. package/esm/XYPlotRenderer/index.js +14 -12
  167. package/esm/XYPlotRenderer/makeImageData.d.ts +3 -0
  168. package/esm/XYPlotRenderer/makeImageData.js +13 -0
  169. package/esm/XYPlotRenderer/renderXYPlot.d.ts +3 -0
  170. package/esm/XYPlotRenderer/renderXYPlot.js +23 -0
  171. package/esm/configSchema.d.ts +3 -3
  172. package/esm/configSchema.js +1 -1
  173. package/esm/drawDensity.d.ts +4 -2
  174. package/esm/drawDensity.js +25 -15
  175. package/esm/drawLine.d.ts +5 -3
  176. package/esm/drawLine.js +118 -41
  177. package/esm/drawXY.d.ts +4 -2
  178. package/esm/drawXY.js +75 -36
  179. package/esm/getMultiWiggleSourcesAutorun.d.ts +3 -2
  180. package/esm/getMultiWiggleSourcesAutorun.js +7 -2
  181. package/esm/getQuantitativeStats.d.ts +4 -2
  182. package/esm/getQuantitativeStats.js +18 -7
  183. package/esm/getQuantitativeStatsAutorun.d.ts +3 -2
  184. package/esm/getQuantitativeStatsAutorun.js +3 -3
  185. package/esm/index.d.ts +15 -19
  186. package/esm/index.js +31 -37
  187. package/esm/multiRendererHelper.d.ts +7 -0
  188. package/esm/multiRendererHelper.js +12 -0
  189. package/esm/saveTrackFormats/bedGraph.d.ts +4 -0
  190. package/esm/saveTrackFormats/bedGraph.js +11 -0
  191. package/esm/shared/SharedWiggleConfigSchema.d.ts +5 -5
  192. package/esm/shared/SharedWiggleConfigSchema.js +1 -1
  193. package/esm/shared/SharedWiggleMixin.d.ts +1081 -133
  194. package/esm/shared/SharedWiggleMixin.js +48 -26
  195. package/esm/shared/YScaleBar.d.ts +1 -1
  196. package/esm/shared/YScaleBar.js +16 -4
  197. package/esm/shared/axisPropsFromTickScale.d.ts +7 -0
  198. package/esm/shared/axisPropsFromTickScale.js +12 -0
  199. package/esm/svgExportUtil.d.ts +9 -0
  200. package/esm/svgExportUtil.js +6 -0
  201. package/esm/types.d.ts +24 -0
  202. package/esm/types.js +1 -0
  203. package/esm/util.d.ts +34 -1
  204. package/esm/util.js +60 -1
  205. package/package.json +35 -38
  206. package/dist/BigWigAdapter/BigWigAdapter.d.ts +0 -25
  207. package/dist/BigWigAdapter/BigWigAdapter.js +0 -81
  208. package/dist/BigWigAdapter/configSchema.d.ts +0 -20
  209. package/dist/BigWigAdapter/configSchema.js +0 -37
  210. package/dist/BigWigAdapter/index.d.ts +0 -2
  211. package/dist/BigWigAdapter/index.js +0 -54
  212. package/dist/CreateMultiWiggleExtension/ConfirmDialog.d.ts +0 -8
  213. package/dist/CreateMultiWiggleExtension/ConfirmDialog.js +0 -26
  214. package/dist/CreateMultiWiggleExtension/index.d.ts +0 -2
  215. package/dist/CreateMultiWiggleExtension/index.js +0 -95
  216. package/dist/DensityRenderer/DensityRenderer.d.ts +0 -7
  217. package/dist/DensityRenderer/DensityRenderer.js +0 -46
  218. package/dist/DensityRenderer/configSchema.d.ts +0 -37
  219. package/dist/DensityRenderer/configSchema.js +0 -13
  220. package/dist/DensityRenderer/index.d.ts +0 -2
  221. package/dist/DensityRenderer/index.js +0 -17
  222. package/dist/GuessAdapter/index.d.ts +0 -2
  223. package/dist/GuessAdapter/index.js +0 -25
  224. package/dist/LinePlotRenderer/LinePlotRenderer.d.ts +0 -8
  225. package/dist/LinePlotRenderer/LinePlotRenderer.js +0 -56
  226. package/dist/LinePlotRenderer/configSchema.d.ts +0 -43
  227. package/dist/LinePlotRenderer/configSchema.js +0 -19
  228. package/dist/LinePlotRenderer/index.d.ts +0 -2
  229. package/dist/LinePlotRenderer/index.js +0 -17
  230. package/dist/LinearWiggleDisplay/components/SetColorDialog.d.ts +0 -12
  231. package/dist/LinearWiggleDisplay/components/SetColorDialog.js +0 -31
  232. package/dist/LinearWiggleDisplay/components/Tooltip.d.ts +0 -15
  233. package/dist/LinearWiggleDisplay/components/Tooltip.js +0 -32
  234. package/dist/LinearWiggleDisplay/components/WiggleDisplayComponent.d.ts +0 -5
  235. package/dist/LinearWiggleDisplay/components/WiggleDisplayComponent.js +0 -28
  236. package/dist/LinearWiggleDisplay/configSchema.d.ts +0 -78
  237. package/dist/LinearWiggleDisplay/configSchema.js +0 -29
  238. package/dist/LinearWiggleDisplay/index.d.ts +0 -5
  239. package/dist/LinearWiggleDisplay/index.js +0 -65
  240. package/dist/LinearWiggleDisplay/model.d.ts +0 -434
  241. package/dist/LinearWiggleDisplay/model.js +0 -262
  242. package/dist/LinearWiggleDisplay/renderSvg.d.ts +0 -3
  243. package/dist/LinearWiggleDisplay/renderSvg.js +0 -16
  244. package/dist/MultiDensityRenderer/MultiDensityRenderer.d.ts +0 -8
  245. package/dist/MultiDensityRenderer/MultiDensityRenderer.js +0 -65
  246. package/dist/MultiDensityRenderer/configSchema.d.ts +0 -37
  247. package/dist/MultiDensityRenderer/configSchema.js +0 -13
  248. package/dist/MultiDensityRenderer/index.d.ts +0 -2
  249. package/dist/MultiDensityRenderer/index.js +0 -17
  250. package/dist/MultiLineRenderer/MultiLineRenderer.d.ts +0 -8
  251. package/dist/MultiLineRenderer/MultiLineRenderer.js +0 -58
  252. package/dist/MultiLineRenderer/configSchema.d.ts +0 -49
  253. package/dist/MultiLineRenderer/configSchema.js +0 -26
  254. package/dist/MultiLineRenderer/index.d.ts +0 -2
  255. package/dist/MultiLineRenderer/index.js +0 -17
  256. package/dist/MultiLinearWiggleDisplay/components/ColorLegend.d.ts +0 -7
  257. package/dist/MultiLinearWiggleDisplay/components/ColorLegend.js +0 -19
  258. package/dist/MultiLinearWiggleDisplay/components/FullHeightScaleBar.d.ts +0 -7
  259. package/dist/MultiLinearWiggleDisplay/components/FullHeightScaleBar.js +0 -17
  260. package/dist/MultiLinearWiggleDisplay/components/IndividualScaleBars.d.ts +0 -7
  261. package/dist/MultiLinearWiggleDisplay/components/IndividualScaleBars.js +0 -15
  262. package/dist/MultiLinearWiggleDisplay/components/LegendItem.d.ts +0 -11
  263. package/dist/MultiLinearWiggleDisplay/components/LegendItem.js +0 -17
  264. package/dist/MultiLinearWiggleDisplay/components/LegendItemText.d.ts +0 -10
  265. package/dist/MultiLinearWiggleDisplay/components/LegendItemText.js +0 -13
  266. package/dist/MultiLinearWiggleDisplay/components/RectBg.d.ts +0 -8
  267. package/dist/MultiLinearWiggleDisplay/components/RectBg.js +0 -9
  268. package/dist/MultiLinearWiggleDisplay/components/ScoreLegend.d.ts +0 -5
  269. package/dist/MultiLinearWiggleDisplay/components/ScoreLegend.js +0 -19
  270. package/dist/MultiLinearWiggleDisplay/components/SetColorDialog.d.ts +0 -9
  271. package/dist/MultiLinearWiggleDisplay/components/SetColorDialog.js +0 -12
  272. package/dist/MultiLinearWiggleDisplay/components/SourcesGrid.d.ts +0 -7
  273. package/dist/MultiLinearWiggleDisplay/components/SourcesGrid.js +0 -130
  274. package/dist/MultiLinearWiggleDisplay/components/Tooltip.d.ts +0 -18
  275. package/dist/MultiLinearWiggleDisplay/components/Tooltip.js +0 -39
  276. package/dist/MultiLinearWiggleDisplay/components/WiggleClusterDialog/WiggleClusterDialog.d.ts +0 -6
  277. package/dist/MultiLinearWiggleDisplay/components/WiggleClusterDialog/WiggleClusterDialog.js +0 -29
  278. package/dist/MultiLinearWiggleDisplay/components/WiggleClusterDialog/WiggleClusterDialogAuto.d.ts +0 -7
  279. package/dist/MultiLinearWiggleDisplay/components/WiggleClusterDialog/WiggleClusterDialogAuto.js +0 -87
  280. package/dist/MultiLinearWiggleDisplay/components/WiggleClusterDialog/WiggleClusterDialogManual.d.ts +0 -7
  281. package/dist/MultiLinearWiggleDisplay/components/WiggleClusterDialog/WiggleClusterDialogManual.js +0 -153
  282. package/dist/MultiLinearWiggleDisplay/components/WiggleClusterDialog/types.d.ts +0 -8
  283. package/dist/MultiLinearWiggleDisplay/components/WiggleClusterDialog/types.js +0 -2
  284. package/dist/MultiLinearWiggleDisplay/components/WiggleDisplayComponent.d.ts +0 -5
  285. package/dist/MultiLinearWiggleDisplay/components/WiggleDisplayComponent.js +0 -14
  286. package/dist/MultiLinearWiggleDisplay/components/YScaleBars.d.ts +0 -7
  287. package/dist/MultiLinearWiggleDisplay/components/YScaleBars.js +0 -28
  288. package/dist/MultiLinearWiggleDisplay/components/ui/SetColorDialog.d.ts +0 -31
  289. package/dist/MultiLinearWiggleDisplay/components/ui/SetColorDialog.js +0 -51
  290. package/dist/MultiLinearWiggleDisplay/components/ui/SetColorDialogBulkEditPanel.d.ts +0 -10
  291. package/dist/MultiLinearWiggleDisplay/components/ui/SetColorDialogBulkEditPanel.js +0 -84
  292. package/dist/MultiLinearWiggleDisplay/components/ui/SetColorDialogHelpfulTips.d.ts +0 -1
  293. package/dist/MultiLinearWiggleDisplay/components/ui/SetColorDialogHelpfulTips.js +0 -7
  294. package/dist/MultiLinearWiggleDisplay/components/ui/SetColorDialogRowPalettizer.d.ts +0 -10
  295. package/dist/MultiLinearWiggleDisplay/components/ui/SetColorDialogRowPalettizer.js +0 -42
  296. package/dist/MultiLinearWiggleDisplay/components/util.d.ts +0 -9
  297. package/dist/MultiLinearWiggleDisplay/components/util.js +0 -45
  298. package/dist/MultiLinearWiggleDisplay/configSchema.d.ts +0 -84
  299. package/dist/MultiLinearWiggleDisplay/configSchema.js +0 -44
  300. package/dist/MultiLinearWiggleDisplay/index.d.ts +0 -2
  301. package/dist/MultiLinearWiggleDisplay/index.js +0 -57
  302. package/dist/MultiLinearWiggleDisplay/model.d.ts +0 -453
  303. package/dist/MultiLinearWiggleDisplay/model.js +0 -413
  304. package/dist/MultiLinearWiggleDisplay/renderSvg.d.ts +0 -3
  305. package/dist/MultiLinearWiggleDisplay/renderSvg.js +0 -15
  306. package/dist/MultiLinearWiggleDisplay/types.d.ts +0 -15
  307. package/dist/MultiLinearWiggleDisplay/types.js +0 -2
  308. package/dist/MultiLinearWiggleDisplay/util.d.ts +0 -0
  309. package/dist/MultiLinearWiggleDisplay/util.js +0 -1
  310. package/dist/MultiQuantitativeTrack/configSchema.d.ts +0 -80
  311. package/dist/MultiQuantitativeTrack/configSchema.js +0 -11
  312. package/dist/MultiQuantitativeTrack/index.d.ts +0 -2
  313. package/dist/MultiQuantitativeTrack/index.js +0 -20
  314. package/dist/MultiRowLineRenderer/MultiRowLineRenderer.d.ts +0 -8
  315. package/dist/MultiRowLineRenderer/MultiRowLineRenderer.js +0 -70
  316. package/dist/MultiRowLineRenderer/configSchema.d.ts +0 -49
  317. package/dist/MultiRowLineRenderer/configSchema.js +0 -26
  318. package/dist/MultiRowLineRenderer/index.d.ts +0 -2
  319. package/dist/MultiRowLineRenderer/index.js +0 -17
  320. package/dist/MultiRowXYPlotRenderer/MultiRowXYPlotRenderer.d.ts +0 -8
  321. package/dist/MultiRowXYPlotRenderer/MultiRowXYPlotRenderer.js +0 -70
  322. package/dist/MultiRowXYPlotRenderer/configSchema.d.ts +0 -57
  323. package/dist/MultiRowXYPlotRenderer/configSchema.js +0 -34
  324. package/dist/MultiRowXYPlotRenderer/index.d.ts +0 -2
  325. package/dist/MultiRowXYPlotRenderer/index.js +0 -17
  326. package/dist/MultiWiggleAdapter/MultiWiggleAdapter.d.ts +0 -31
  327. package/dist/MultiWiggleAdapter/MultiWiggleAdapter.js +0 -110
  328. package/dist/MultiWiggleAdapter/configSchema.d.ts +0 -13
  329. package/dist/MultiWiggleAdapter/configSchema.js +0 -17
  330. package/dist/MultiWiggleAdapter/index.d.ts +0 -2
  331. package/dist/MultiWiggleAdapter/index.js +0 -57
  332. package/dist/MultiWiggleAddTrackWorkflow/AddTrackWorkflow.d.ts +0 -5
  333. package/dist/MultiWiggleAddTrackWorkflow/AddTrackWorkflow.js +0 -89
  334. package/dist/MultiWiggleAddTrackWorkflow/index.d.ts +0 -2
  335. package/dist/MultiWiggleAddTrackWorkflow/index.js +0 -46
  336. package/dist/MultiWiggleRendering.d.ts +0 -19
  337. package/dist/MultiWiggleRendering.js +0 -81
  338. package/dist/MultiXYPlotRenderer/MultiXYPlotRenderer.d.ts +0 -8
  339. package/dist/MultiXYPlotRenderer/MultiXYPlotRenderer.js +0 -61
  340. package/dist/MultiXYPlotRenderer/configSchema.d.ts +0 -57
  341. package/dist/MultiXYPlotRenderer/configSchema.js +0 -34
  342. package/dist/MultiXYPlotRenderer/index.d.ts +0 -2
  343. package/dist/MultiXYPlotRenderer/index.js +0 -17
  344. package/dist/QuantitativeTrack/configSchema.d.ts +0 -80
  345. package/dist/QuantitativeTrack/configSchema.js +0 -11
  346. package/dist/QuantitativeTrack/index.d.ts +0 -2
  347. package/dist/QuantitativeTrack/index.js +0 -20
  348. package/dist/Tooltip.d.ts +0 -18
  349. package/dist/Tooltip.js +0 -34
  350. package/dist/WiggleBaseRenderer.d.ts +0 -57
  351. package/dist/WiggleBaseRenderer.js +0 -42
  352. package/dist/WiggleRPC/MultiWiggleClusterScoreMatrix.d.ts +0 -14
  353. package/dist/WiggleRPC/MultiWiggleClusterScoreMatrix.js +0 -31
  354. package/dist/WiggleRPC/MultiWiggleGetScoreMatrix.d.ts +0 -6
  355. package/dist/WiggleRPC/MultiWiggleGetScoreMatrix.js +0 -22
  356. package/dist/WiggleRPC/MultiWiggleGetSources.d.ts +0 -14
  357. package/dist/WiggleRPC/MultiWiggleGetSources.js +0 -22
  358. package/dist/WiggleRPC/WiggleGetGlobalQuantitativeStats.d.ts +0 -12
  359. package/dist/WiggleRPC/WiggleGetGlobalQuantitativeStats.js +0 -22
  360. package/dist/WiggleRPC/WiggleGetMultiRegionQuantitativeStats.d.ts +0 -13
  361. package/dist/WiggleRPC/WiggleGetMultiRegionQuantitativeStats.js +0 -22
  362. package/dist/WiggleRPC/getScoreMatrix.d.ts +0 -6
  363. package/dist/WiggleRPC/getScoreMatrix.js +0 -35
  364. package/dist/WiggleRPC/rpcMethods.d.ts +0 -5
  365. package/dist/WiggleRPC/rpcMethods.js +0 -21
  366. package/dist/WiggleRPC/types.d.ts +0 -13
  367. package/dist/WiggleRPC/types.js +0 -2
  368. package/dist/WiggleRendering.d.ts +0 -14
  369. package/dist/WiggleRendering.js +0 -35
  370. package/dist/XYPlotRenderer/XYPlotRenderer.d.ts +0 -7
  371. package/dist/XYPlotRenderer/XYPlotRenderer.js +0 -61
  372. package/dist/XYPlotRenderer/configSchema.d.ts +0 -57
  373. package/dist/XYPlotRenderer/configSchema.js +0 -34
  374. package/dist/XYPlotRenderer/index.d.ts +0 -5
  375. package/dist/XYPlotRenderer/index.js +0 -24
  376. package/dist/configSchema.d.ts +0 -37
  377. package/dist/configSchema.js +0 -47
  378. package/dist/drawDensity.d.ts +0 -18
  379. package/dist/drawDensity.js +0 -81
  380. package/dist/drawLine.d.ts +0 -20
  381. package/dist/drawLine.js +0 -77
  382. package/dist/drawXY.d.ts +0 -21
  383. package/dist/drawXY.js +0 -191
  384. package/dist/getMultiWiggleSourcesAutorun.d.ts +0 -18
  385. package/dist/getMultiWiggleSourcesAutorun.js +0 -38
  386. package/dist/getQuantitativeStats.d.ts +0 -13
  387. package/dist/getQuantitativeStats.js +0 -70
  388. package/dist/getQuantitativeStatsAutorun.d.ts +0 -13
  389. package/dist/getQuantitativeStatsAutorun.js +0 -35
  390. package/dist/index.d.ts +0 -91
  391. package/dist/index.js +0 -112
  392. package/dist/shared/SetMinMaxDialog.d.ts +0 -10
  393. package/dist/shared/SetMinMaxDialog.js +0 -26
  394. package/dist/shared/SharedWiggleConfigSchema.d.ts +0 -66
  395. package/dist/shared/SharedWiggleConfigSchema.js +0 -56
  396. package/dist/shared/SharedWiggleMixin.d.ts +0 -420
  397. package/dist/shared/SharedWiggleMixin.js +0 -343
  398. package/dist/shared/YScaleBar.d.ts +0 -9
  399. package/dist/shared/YScaleBar.js +0 -12
  400. package/dist/util.d.ts +0 -25
  401. package/dist/util.js +0 -105
  402. package/esm/WiggleBaseRenderer.d.ts +0 -57
  403. package/esm/WiggleBaseRenderer.js +0 -36
@@ -1,12 +1,15 @@
1
1
  import { readConfObject } from '@jbrowse/core/configuration';
2
- import { featureSpanPx } from '@jbrowse/core/util';
3
- import { checkStopToken } from '@jbrowse/core/util/stopToken';
4
- import { fillRectCtx, getScale } from './util';
2
+ import { checkStopToken2, createStopTokenChecker, } from '@jbrowse/core/util/stopToken';
3
+ import { fillRectCtx, getScale } from "./util.js";
5
4
  const fudgeFactor = 0.3;
6
5
  const clipHeight = 2;
7
6
  export function drawDensity(ctx, props) {
8
- const { stopToken, features, regions, bpPerPx, scaleOpts, height, config } = props;
7
+ const { features, regions, bpPerPx, scaleOpts, height, config, stopToken, lastCheck = createStopTokenChecker(stopToken), } = props;
9
8
  const region = regions[0];
9
+ const regionStart = region.start;
10
+ const regionEnd = region.end;
11
+ const regionReversed = region.reversed;
12
+ const inverseBpPerPx = 1 / bpPerPx;
10
13
  const pivot = readConfObject(config, 'bicolorPivot');
11
14
  const pivotValue = readConfObject(config, 'bicolorPivotValue');
12
15
  const negColor = readConfObject(config, 'negColor');
@@ -29,13 +32,16 @@ export function drawDensity(ctx, props) {
29
32
  let prevLeftPx = Number.NEGATIVE_INFINITY;
30
33
  let hasClipping = false;
31
34
  const reducedFeatures = [];
32
- let start = performance.now();
33
35
  for (const feature of features.values()) {
34
- if (performance.now() - start > 400) {
35
- checkStopToken(stopToken);
36
- start = performance.now();
37
- }
38
- const [leftPx, rightPx] = featureSpanPx(feature, region, bpPerPx);
36
+ checkStopToken2(lastCheck);
37
+ const fStart = feature.get('start');
38
+ const fEnd = feature.get('end');
39
+ const leftPx = regionReversed
40
+ ? (regionEnd - fEnd) * inverseBpPerPx
41
+ : (fStart - regionStart) * inverseBpPerPx;
42
+ const rightPx = regionReversed
43
+ ? (regionEnd - fStart) * inverseBpPerPx
44
+ : (fEnd - regionStart) * inverseBpPerPx;
39
45
  if (Math.floor(leftPx) !== Math.floor(prevLeftPx) || rightPx - leftPx > 1) {
40
46
  reducedFeatures.push(feature);
41
47
  prevLeftPx = leftPx;
@@ -56,11 +62,15 @@ export function drawDensity(ctx, props) {
56
62
  if (hasClipping) {
57
63
  ctx.fillStyle = clipColor;
58
64
  for (const feature of features.values()) {
59
- if (performance.now() - start > 400) {
60
- checkStopToken(stopToken);
61
- start = performance.now();
62
- }
63
- const [leftPx, rightPx] = featureSpanPx(feature, region, bpPerPx);
65
+ checkStopToken2(lastCheck);
66
+ const fStart = feature.get('start');
67
+ const fEnd = feature.get('end');
68
+ const leftPx = regionReversed
69
+ ? (regionEnd - fEnd) * inverseBpPerPx
70
+ : (fStart - regionStart) * inverseBpPerPx;
71
+ const rightPx = regionReversed
72
+ ? (regionEnd - fStart) * inverseBpPerPx
73
+ : (fEnd - regionStart) * inverseBpPerPx;
64
74
  const w = rightPx - leftPx + fudgeFactor;
65
75
  const score = feature.get('score');
66
76
  if (score > niceMax) {
package/esm/drawLine.d.ts CHANGED
@@ -1,6 +1,6 @@
1
- import type { ScaleOpts } from './util';
1
+ import type { ScaleOpts } from './util.ts';
2
2
  import type { AnyConfigurationModel } from '@jbrowse/core/configuration';
3
- import type { Feature, Region } from '@jbrowse/core/util';
3
+ import type { Feature, LastStopTokenCheck, Region, StopToken } from '@jbrowse/core/util';
4
4
  export declare function drawLine(ctx: CanvasRenderingContext2D, props: {
5
5
  features: Map<string, Feature> | Feature[];
6
6
  regions: Region[];
@@ -14,7 +14,9 @@ export declare function drawLine(ctx: CanvasRenderingContext2D, props: {
14
14
  colorCallback: (f: Feature, score: number) => string;
15
15
  config: AnyConfigurationModel;
16
16
  offset?: number;
17
- stopToken?: string;
17
+ stopToken?: StopToken;
18
+ lastCheck?: LastStopTokenCheck;
19
+ staticColor?: string;
18
20
  }): {
19
21
  reducedFeatures: Feature[];
20
22
  };
package/esm/drawLine.js CHANGED
@@ -1,61 +1,138 @@
1
1
  import { readConfObject } from '@jbrowse/core/configuration';
2
- import { clamp, featureSpanPx } from '@jbrowse/core/util';
3
- import { checkStopToken } from '@jbrowse/core/util/stopToken';
4
- import { getScale } from './util';
5
- const fudgeFactor = 0.3;
6
- const clipHeight = 2;
2
+ import { clamp } from '@jbrowse/core/util';
3
+ import { checkStopToken2, createStopTokenChecker, } from '@jbrowse/core/util/stopToken';
4
+ import { WIGGLE_CLIP_HEIGHT, WIGGLE_FUDGE_FACTOR, getScale } from "./util.js";
7
5
  export function drawLine(ctx, props) {
8
- const { features, regions, bpPerPx, scaleOpts, height: unadjustedHeight, ticks: { values }, displayCrossHatches, colorCallback, config, offset = 0, stopToken, } = props;
6
+ const { features, regions, bpPerPx, scaleOpts, height: unadjustedHeight, ticks: { values }, displayCrossHatches, colorCallback, config, offset = 0, staticColor, stopToken, lastCheck = createStopTokenChecker(stopToken), } = props;
9
7
  const region = regions[0];
10
- const width = (region.end - region.start) / bpPerPx;
8
+ const regionStart = region.start;
9
+ const regionEnd = region.end;
10
+ const reversed = region.reversed;
11
+ const invBpPerPx = 1 / bpPerPx;
12
+ const width = (regionEnd - regionStart) * invBpPerPx;
11
13
  const height = unadjustedHeight - offset * 2;
12
14
  const clipColor = readConfObject(config, 'clipColor');
13
15
  const scale = getScale({ ...scaleOpts, range: [0, height] });
14
16
  const domain = scale.domain();
15
17
  const niceMin = domain[0];
16
18
  const niceMax = domain[1];
17
- const toY = (n) => clamp(height - (scale(n) || 0), 0, height) + offset;
19
+ const domainSpan = niceMax - niceMin;
20
+ const isLog = scaleOpts.scaleType === 'log';
21
+ const linearRatio = domainSpan !== 0 ? height / domainSpan : 0;
22
+ const log2 = Math.log(2);
23
+ const logMin = Math.log(niceMin) / log2;
24
+ const logMax = Math.log(niceMax) / log2;
25
+ const logSpan = logMax - logMin;
26
+ const logRatio = logSpan !== 0 ? height / logSpan : 0;
27
+ const toY = isLog
28
+ ? (n) => clamp(height - (Math.log(n) / log2 - logMin) * logRatio, 0, height) +
29
+ offset
30
+ : (n) => clamp(height - (n - niceMin) * linearRatio, 0, height) + offset;
18
31
  let lastVal;
19
32
  let prevLeftPx = Number.NEGATIVE_INFINITY;
20
33
  const reducedFeatures = [];
21
- let start = performance.now();
22
- for (const feature of features.values()) {
23
- if (performance.now() - start > 400) {
24
- checkStopToken(stopToken);
25
- start = performance.now();
26
- }
27
- const [leftPx, rightPx] = featureSpanPx(feature, region, bpPerPx);
28
- if (Math.floor(leftPx) !== Math.floor(prevLeftPx) || rightPx - leftPx > 1) {
29
- reducedFeatures.push(feature);
30
- prevLeftPx = leftPx;
31
- }
32
- const score = feature.get('score');
33
- const lowClipping = score < niceMin;
34
- const highClipping = score > niceMax;
35
- const w = rightPx - leftPx + fudgeFactor;
36
- const c = colorCallback(feature, score);
34
+ if (staticColor) {
37
35
  ctx.beginPath();
38
- ctx.strokeStyle = c;
39
- const startPos = lastVal !== undefined ? lastVal : score;
40
- if (!region.reversed) {
41
- ctx.moveTo(leftPx, toY(startPos));
42
- ctx.lineTo(leftPx, toY(score));
43
- ctx.lineTo(rightPx, toY(score));
44
- }
45
- else {
46
- ctx.moveTo(rightPx, toY(startPos));
47
- ctx.lineTo(rightPx, toY(score));
48
- ctx.lineTo(leftPx, toY(score));
36
+ ctx.strokeStyle = staticColor;
37
+ const clippingFeatures = [];
38
+ for (const feature of features.values()) {
39
+ checkStopToken2(lastCheck);
40
+ const fStart = feature.get('start');
41
+ const fEnd = feature.get('end');
42
+ const leftPx = reversed
43
+ ? (regionEnd - fEnd) * invBpPerPx
44
+ : (fStart - regionStart) * invBpPerPx;
45
+ const rightPx = reversed
46
+ ? (regionEnd - fStart) * invBpPerPx
47
+ : (fEnd - regionStart) * invBpPerPx;
48
+ if ((leftPx | 0) !== (prevLeftPx | 0) || rightPx - leftPx > 1) {
49
+ reducedFeatures.push(feature);
50
+ prevLeftPx = leftPx;
51
+ }
52
+ const score = feature.get('score');
53
+ const scoreY = toY(score);
54
+ if (score > niceMax) {
55
+ clippingFeatures.push({
56
+ leftPx,
57
+ w: rightPx - leftPx + WIGGLE_FUDGE_FACTOR,
58
+ high: true,
59
+ });
60
+ }
61
+ else if (score < niceMin && !isLog) {
62
+ clippingFeatures.push({
63
+ leftPx,
64
+ w: rightPx - leftPx + WIGGLE_FUDGE_FACTOR,
65
+ high: false,
66
+ });
67
+ }
68
+ const startY = lastVal !== undefined ? toY(lastVal) : scoreY;
69
+ if (!reversed) {
70
+ ctx.moveTo(leftPx, startY);
71
+ ctx.lineTo(leftPx, scoreY);
72
+ ctx.lineTo(rightPx, scoreY);
73
+ }
74
+ else {
75
+ ctx.moveTo(rightPx, startY);
76
+ ctx.lineTo(rightPx, scoreY);
77
+ ctx.lineTo(leftPx, scoreY);
78
+ }
79
+ lastVal = score;
49
80
  }
50
81
  ctx.stroke();
51
- lastVal = score;
52
- if (highClipping) {
82
+ if (clippingFeatures.length > 0) {
53
83
  ctx.fillStyle = clipColor;
54
- ctx.fillRect(leftPx, offset, w, clipHeight);
84
+ for (const { leftPx, w, high } of clippingFeatures) {
85
+ if (high) {
86
+ ctx.fillRect(leftPx, offset, w, WIGGLE_CLIP_HEIGHT);
87
+ }
88
+ else {
89
+ ctx.fillRect(leftPx, height - WIGGLE_CLIP_HEIGHT, w, WIGGLE_CLIP_HEIGHT);
90
+ }
91
+ }
55
92
  }
56
- else if (lowClipping && scaleOpts.scaleType !== 'log') {
57
- ctx.fillStyle = clipColor;
58
- ctx.fillRect(leftPx, height - clipHeight, w, height);
93
+ }
94
+ else {
95
+ for (const feature of features.values()) {
96
+ checkStopToken2(lastCheck);
97
+ const fStart = feature.get('start');
98
+ const fEnd = feature.get('end');
99
+ const leftPx = reversed
100
+ ? (regionEnd - fEnd) * invBpPerPx
101
+ : (fStart - regionStart) * invBpPerPx;
102
+ const rightPx = reversed
103
+ ? (regionEnd - fStart) * invBpPerPx
104
+ : (fEnd - regionStart) * invBpPerPx;
105
+ if ((leftPx | 0) !== (prevLeftPx | 0) || rightPx - leftPx > 1) {
106
+ reducedFeatures.push(feature);
107
+ prevLeftPx = leftPx;
108
+ }
109
+ const score = feature.get('score');
110
+ const scoreY = toY(score);
111
+ const w = rightPx - leftPx + WIGGLE_FUDGE_FACTOR;
112
+ const c = colorCallback(feature, score);
113
+ ctx.beginPath();
114
+ ctx.strokeStyle = c;
115
+ const startY = lastVal !== undefined ? toY(lastVal) : scoreY;
116
+ if (!reversed) {
117
+ ctx.moveTo(leftPx, startY);
118
+ ctx.lineTo(leftPx, scoreY);
119
+ ctx.lineTo(rightPx, scoreY);
120
+ }
121
+ else {
122
+ ctx.moveTo(rightPx, startY);
123
+ ctx.lineTo(rightPx, scoreY);
124
+ ctx.lineTo(leftPx, scoreY);
125
+ }
126
+ ctx.stroke();
127
+ lastVal = score;
128
+ if (score > niceMax) {
129
+ ctx.fillStyle = clipColor;
130
+ ctx.fillRect(leftPx, offset, w, WIGGLE_CLIP_HEIGHT);
131
+ }
132
+ else if (score < niceMin && !isLog) {
133
+ ctx.fillStyle = clipColor;
134
+ ctx.fillRect(leftPx, height - WIGGLE_CLIP_HEIGHT, w, WIGGLE_CLIP_HEIGHT);
135
+ }
59
136
  }
60
137
  }
61
138
  if (displayCrossHatches) {
package/esm/drawXY.d.ts CHANGED
@@ -1,8 +1,8 @@
1
- import type { ScaleOpts } from './util';
1
+ import type { ScaleOpts } from './util.ts';
2
2
  import type { AnyConfigurationModel } from '@jbrowse/core/configuration';
3
3
  import type { Feature, Region } from '@jbrowse/core/util';
4
+ import type { LastStopTokenCheck, StopToken } from '@jbrowse/core/util/stopToken';
4
5
  export declare function drawXY(ctx: CanvasRenderingContext2D, props: {
5
- stopToken?: string;
6
6
  features: Map<string, Feature> | Feature[];
7
7
  bpPerPx: number;
8
8
  regions: Region[];
@@ -15,6 +15,8 @@ export declare function drawXY(ctx: CanvasRenderingContext2D, props: {
15
15
  displayCrossHatches: boolean;
16
16
  inverted: boolean;
17
17
  offset?: number;
18
+ lastCheck?: LastStopTokenCheck;
19
+ stopToken?: StopToken;
18
20
  colorCallback: (f: Feature, score: number) => string;
19
21
  }): {
20
22
  reducedFeatures: Feature[];
package/esm/drawXY.js CHANGED
@@ -1,8 +1,8 @@
1
1
  import { readConfObject } from '@jbrowse/core/configuration';
2
- import { clamp, featureSpanPx } from '@jbrowse/core/util';
2
+ import { clamp } from '@jbrowse/core/util';
3
3
  import { colord } from '@jbrowse/core/util/colord';
4
- import { checkStopToken } from '@jbrowse/core/util/stopToken';
5
- import { fillRectCtx, getOrigin, getScale } from './util';
4
+ import { checkStopToken2, createStopTokenChecker, } from '@jbrowse/core/util/stopToken';
5
+ import { fillRectCtx, getOrigin, getScale } from "./util.js";
6
6
  function lighten(color, amount) {
7
7
  const hslColor = color.toHsl();
8
8
  const l = hslColor.l * (1 + amount);
@@ -22,9 +22,12 @@ function darken(color, amount) {
22
22
  const fudgeFactor = 0.3;
23
23
  const clipHeight = 2;
24
24
  export function drawXY(ctx, props) {
25
- const { features, bpPerPx, regions, scaleOpts, height: unadjustedHeight, config, ticks, displayCrossHatches, offset = 0, colorCallback, inverted, stopToken, } = props;
25
+ const { features, bpPerPx, regions, scaleOpts, height: unadjustedHeight, config, ticks, displayCrossHatches, offset = 0, colorCallback, inverted, stopToken, lastCheck = createStopTokenChecker(stopToken), } = props;
26
26
  const region = regions[0];
27
27
  const width = (region.end - region.start) / bpPerPx;
28
+ const regionStart = region.start;
29
+ const regionEnd = region.end;
30
+ const regionReversed = region.reversed;
28
31
  const height = unadjustedHeight - offset * 2;
29
32
  const filled = readConfObject(config, 'filled');
30
33
  const clipColor = readConfObject(config, 'clipColor');
@@ -36,24 +39,48 @@ export function drawXY(ctx, props) {
36
39
  const domain = scale.domain();
37
40
  const niceMin = domain[0];
38
41
  const niceMax = domain[1];
39
- const toY = (n) => clamp(height - (scale(n) || 0), 0, height) + offset;
42
+ const isLog = scaleOpts.scaleType === 'log';
43
+ const log2 = Math.log(2);
44
+ const domainSpan = niceMax - niceMin;
45
+ const linearRatio = domainSpan !== 0 ? height / domainSpan : 0;
46
+ const logMin = isLog ? Math.log(niceMin) / log2 : 0;
47
+ const logMax = isLog ? Math.log(niceMax) / log2 : 0;
48
+ const logSpan = logMax - logMin;
49
+ const logRatio = logSpan !== 0 ? height / logSpan : 0;
50
+ const effectiveRange = inverted ? [height, 0] : [0, height];
51
+ const rangeFlipped = effectiveRange[0] === height;
52
+ const toY = isLog
53
+ ? (n) => {
54
+ const logVal = Math.log(n) / log2;
55
+ const scaled = (logVal - logMin) * logRatio;
56
+ const result = rangeFlipped ? scaled : height - scaled;
57
+ return clamp(result, 0, height) + offset;
58
+ }
59
+ : (n) => {
60
+ const scaled = (n - niceMin) * linearRatio;
61
+ const result = rangeFlipped ? scaled : height - scaled;
62
+ return clamp(result, 0, height) + offset;
63
+ };
40
64
  const toOrigin = (n) => toY(originY) - toY(n);
41
65
  const getHeight = (n) => (filled ? toOrigin(n) : Math.max(minSize, 1));
66
+ const inverseBpPerPx = 1 / bpPerPx;
42
67
  let hasClipping = false;
43
68
  let prevLeftPx = Number.NEGATIVE_INFINITY;
44
69
  const reducedFeatures = [];
45
70
  const crossingOrigin = niceMin < pivotValue && niceMax > pivotValue;
46
- let start = performance.now();
47
71
  if (summaryScoreMode === 'whiskers') {
48
72
  let lastCol;
49
73
  let lastMix;
50
- start = performance.now();
51
74
  for (const feature of features.values()) {
52
- if (performance.now() - start > 400) {
53
- checkStopToken(stopToken);
54
- start = performance.now();
55
- }
56
- const [leftPx, rightPx] = featureSpanPx(feature, region, bpPerPx);
75
+ checkStopToken2(lastCheck);
76
+ const fStart = feature.get('start');
77
+ const fEnd = feature.get('end');
78
+ const leftPx = regionReversed
79
+ ? (regionEnd - fEnd) * inverseBpPerPx
80
+ : (fStart - regionStart) * inverseBpPerPx;
81
+ const rightPx = regionReversed
82
+ ? (regionEnd - fStart) * inverseBpPerPx
83
+ : (fEnd - regionStart) * inverseBpPerPx;
57
84
  if (feature.get('summary')) {
58
85
  const w = Math.max(rightPx - leftPx + fudgeFactor, minSize);
59
86
  const max = feature.get('maxScore');
@@ -69,13 +96,16 @@ export function drawXY(ctx, props) {
69
96
  }
70
97
  lastMix = undefined;
71
98
  lastCol = undefined;
72
- start = performance.now();
73
99
  for (const feature of features.values()) {
74
- if (performance.now() - start > 400) {
75
- checkStopToken(stopToken);
76
- start = performance.now();
77
- }
78
- const [leftPx, rightPx] = featureSpanPx(feature, region, bpPerPx);
100
+ checkStopToken2(lastCheck);
101
+ const fStart = feature.get('start');
102
+ const fEnd = feature.get('end');
103
+ const leftPx = regionReversed
104
+ ? (regionEnd - fEnd) * inverseBpPerPx
105
+ : (fStart - regionStart) * inverseBpPerPx;
106
+ const rightPx = regionReversed
107
+ ? (regionEnd - fStart) * inverseBpPerPx
108
+ : (fEnd - regionStart) * inverseBpPerPx;
79
109
  const score = feature.get('score');
80
110
  const max = feature.get('maxScore');
81
111
  const min = feature.get('minScore');
@@ -100,13 +130,16 @@ export function drawXY(ctx, props) {
100
130
  }
101
131
  lastMix = undefined;
102
132
  lastCol = undefined;
103
- start = performance.now();
104
133
  for (const feature of features.values()) {
105
- if (performance.now() - start > 400) {
106
- checkStopToken(stopToken);
107
- start = performance.now();
108
- }
109
- const [leftPx, rightPx] = featureSpanPx(feature, region, bpPerPx);
134
+ checkStopToken2(lastCheck);
135
+ const fStart = feature.get('start');
136
+ const fEnd = feature.get('end');
137
+ const leftPx = regionReversed
138
+ ? (regionEnd - fEnd) * inverseBpPerPx
139
+ : (fStart - regionStart) * inverseBpPerPx;
140
+ const rightPx = regionReversed
141
+ ? (regionEnd - fStart) * inverseBpPerPx
142
+ : (fEnd - regionStart) * inverseBpPerPx;
110
143
  if (feature.get('summary')) {
111
144
  const min = feature.get('minScore');
112
145
  const c = colorCallback(feature, min);
@@ -122,13 +155,16 @@ export function drawXY(ctx, props) {
122
155
  }
123
156
  }
124
157
  else {
125
- start = performance.now();
126
158
  for (const feature of features.values()) {
127
- if (performance.now() - start > 400) {
128
- checkStopToken(stopToken);
129
- start = performance.now();
130
- }
131
- const [leftPx, rightPx] = featureSpanPx(feature, region, bpPerPx);
159
+ checkStopToken2(lastCheck);
160
+ const fStart = feature.get('start');
161
+ const fEnd = feature.get('end');
162
+ const leftPx = regionReversed
163
+ ? (regionEnd - fEnd) * inverseBpPerPx
164
+ : (fStart - regionStart) * inverseBpPerPx;
165
+ const rightPx = regionReversed
166
+ ? (regionEnd - fStart) * inverseBpPerPx
167
+ : (fEnd - regionStart) * inverseBpPerPx;
132
168
  if (Math.floor(leftPx) !== Math.floor(prevLeftPx) ||
133
169
  rightPx - leftPx > 1) {
134
170
  reducedFeatures.push(feature);
@@ -154,13 +190,16 @@ export function drawXY(ctx, props) {
154
190
  ctx.save();
155
191
  if (hasClipping) {
156
192
  ctx.fillStyle = clipColor;
157
- start = performance.now();
158
193
  for (const feature of features.values()) {
159
- if (performance.now() - start > 400) {
160
- checkStopToken(stopToken);
161
- start = performance.now();
162
- }
163
- const [leftPx, rightPx] = featureSpanPx(feature, region, bpPerPx);
194
+ checkStopToken2(lastCheck);
195
+ const fStart = feature.get('start');
196
+ const fEnd = feature.get('end');
197
+ const leftPx = regionReversed
198
+ ? (regionEnd - fEnd) * inverseBpPerPx
199
+ : (fStart - regionStart) * inverseBpPerPx;
200
+ const rightPx = regionReversed
201
+ ? (regionEnd - fStart) * inverseBpPerPx
202
+ : (fEnd - regionStart) * inverseBpPerPx;
164
203
  const w = rightPx - leftPx + fudgeFactor;
165
204
  const score = feature.get('score');
166
205
  if (score > niceMax) {
@@ -1,4 +1,5 @@
1
1
  import type { AnyConfigurationModel } from '@jbrowse/core/configuration';
2
+ import type { StopToken } from '@jbrowse/core/util/stopToken';
2
3
  export interface Source {
3
4
  name: string;
4
5
  source: string;
@@ -11,8 +12,8 @@ export declare function getMultiWiggleSourcesAutorun(self: {
11
12
  adapterConfig: AnyConfigurationModel;
12
13
  autoscaleType: string;
13
14
  adapterProps: () => Record<string, unknown>;
14
- setSourcesLoading: (aborter: string) => void;
15
+ setSourcesLoading: (aborter: StopToken) => void;
15
16
  setError: (error: unknown) => void;
16
- setMessage: (str: string) => void;
17
+ setStatusMessage: (str: string) => void;
17
18
  setSources: (sources: Source[]) => void;
18
19
  }): void;
@@ -2,8 +2,8 @@ import { getContainingView, getSession } from '@jbrowse/core/util';
2
2
  import { isAbortException } from '@jbrowse/core/util/aborting';
3
3
  import { createStopToken } from '@jbrowse/core/util/stopToken';
4
4
  import { getRpcSessionId } from '@jbrowse/core/util/tracks';
5
+ import { addDisposer, isAlive } from '@jbrowse/mobx-state-tree';
5
6
  import { autorun } from 'mobx';
6
- import { addDisposer, isAlive } from 'mobx-state-tree';
7
7
  export function getMultiWiggleSourcesAutorun(self) {
8
8
  addDisposer(self, autorun(async () => {
9
9
  try {
@@ -20,6 +20,11 @@ export function getMultiWiggleSourcesAutorun(self) {
20
20
  regions: view.staticBlocks.contentBlocks,
21
21
  sessionId,
22
22
  adapterConfig,
23
+ statusCallback: (arg) => {
24
+ if (isAlive(self)) {
25
+ self.setStatusMessage(arg);
26
+ }
27
+ },
23
28
  }));
24
29
  if (isAlive(self)) {
25
30
  self.setSources(sources);
@@ -31,5 +36,5 @@ export function getMultiWiggleSourcesAutorun(self) {
31
36
  getSession(self).notifyError(`${e}`, e);
32
37
  }
33
38
  }
34
- }));
39
+ }, { name: 'MultiWiggleGetSources' }));
35
40
  }
@@ -1,13 +1,15 @@
1
1
  import type { AnyConfigurationModel } from '@jbrowse/core/configuration';
2
2
  import type { QuantitativeStats } from '@jbrowse/core/util/stats';
3
+ import type { StopToken } from '@jbrowse/core/util/stopToken';
3
4
  export declare function getQuantitativeStats(self: {
4
5
  adapterConfig: AnyConfigurationModel;
5
6
  configuration: AnyConfigurationModel;
6
7
  autoscaleType: string;
7
- setMessage: (str: string) => void;
8
+ setStatusMessage: (str: string) => void;
9
+ effectiveRpcDriverName?: string;
8
10
  }, opts: {
9
11
  headers?: Record<string, string>;
10
- stopToken?: string;
12
+ stopToken?: StopToken;
11
13
  filters: string[];
12
14
  currStatsBpPerPx: number;
13
15
  }): Promise<QuantitativeStats>;
@@ -1,19 +1,22 @@
1
1
  import { getConf } from '@jbrowse/core/configuration';
2
- import { getContainingView, getSession } from '@jbrowse/core/util';
2
+ import { getContainingTrack, getContainingView, getSession, } from '@jbrowse/core/util';
3
3
  import { getRpcSessionId } from '@jbrowse/core/util/tracks';
4
- import { isAlive } from 'mobx-state-tree';
4
+ import { isAlive } from '@jbrowse/mobx-state-tree';
5
5
  export async function getQuantitativeStats(self, opts) {
6
6
  const { rpcManager } = getSession(self);
7
7
  const numStdDev = getConf(self, 'numStdDev') || 3;
8
- const { adapterConfig, autoscaleType } = self;
8
+ const { adapterConfig, autoscaleType, effectiveRpcDriverName } = self;
9
9
  const sessionId = getRpcSessionId(self);
10
+ const trackInstanceId = getContainingTrack(self).id;
10
11
  const { currStatsBpPerPx } = opts;
11
12
  const params = {
12
13
  sessionId,
14
+ trackInstanceId,
13
15
  adapterConfig,
16
+ rpcDriverName: effectiveRpcDriverName,
14
17
  statusCallback: (message) => {
15
18
  if (isAlive(self)) {
16
- self.setMessage(message);
19
+ self.setStatusMessage(message);
17
20
  }
18
21
  },
19
22
  ...opts,
@@ -33,8 +36,8 @@ export async function getQuantitativeStats(self, opts) {
33
36
  currStatsBpPerPx,
34
37
  };
35
38
  }
36
- if (autoscaleType === 'local' || autoscaleType === 'localsd') {
37
- const { dynamicBlocks, bpPerPx } = getContainingView(self);
39
+ else if (autoscaleType === 'local' || autoscaleType === 'localsd') {
40
+ const { dynamicBlocks, staticBlocks, bpPerPx } = getContainingView(self);
38
41
  const results = (await rpcManager.call(sessionId, 'WiggleGetMultiRegionQuantitativeStats', {
39
42
  ...params,
40
43
  regions: dynamicBlocks.contentBlocks.map(region => {
@@ -45,6 +48,14 @@ export async function getQuantitativeStats(self, opts) {
45
48
  end: Math.ceil(end),
46
49
  };
47
50
  }),
51
+ staticBlocks: staticBlocks.contentBlocks.map(region => {
52
+ const { start, end } = region;
53
+ return {
54
+ ...JSON.parse(JSON.stringify(region)),
55
+ start: Math.floor(start),
56
+ end: Math.ceil(end),
57
+ };
58
+ }),
48
59
  bpPerPx,
49
60
  }));
50
61
  const { scoreMin, scoreMean, scoreStdDev } = results;
@@ -60,7 +71,7 @@ export async function getQuantitativeStats(self, opts) {
60
71
  currStatsBpPerPx,
61
72
  };
62
73
  }
63
- if (autoscaleType === 'zscale') {
74
+ else if (autoscaleType === 'zscale') {
64
75
  return rpcManager.call(sessionId, 'WiggleGetGlobalQuantitativeStats', params);
65
76
  }
66
77
  throw new Error(`invalid autoscaleType '${autoscaleType}'`);
@@ -1,13 +1,14 @@
1
1
  import type { AnyConfigurationModel } from '@jbrowse/core/configuration';
2
2
  import type { QuantitativeStats } from '@jbrowse/core/util/stats';
3
+ import type { StopToken } from '@jbrowse/core/util/stopToken';
3
4
  export declare function getQuantitativeStatsAutorun(self: {
4
5
  quantitativeStatsReady: boolean;
5
6
  configuration: AnyConfigurationModel;
6
7
  adapterConfig: AnyConfigurationModel;
7
8
  autoscaleType: string;
8
9
  adapterProps: () => Record<string, unknown>;
9
- setStatsLoading: (token: string) => void;
10
+ setStatsLoading: (token: StopToken) => void;
10
11
  setError: (error: unknown) => void;
11
- setMessage: (str: string) => void;
12
+ setStatusMessage: (str: string) => void;
12
13
  updateQuantitativeStats: (stats: QuantitativeStats, region: string) => void;
13
14
  }): void;
@@ -1,8 +1,8 @@
1
1
  import { getContainingView, isAbortException } from '@jbrowse/core/util';
2
2
  import { createStopToken } from '@jbrowse/core/util/stopToken';
3
+ import { addDisposer, isAlive } from '@jbrowse/mobx-state-tree';
3
4
  import { autorun } from 'mobx';
4
- import { addDisposer, isAlive } from 'mobx-state-tree';
5
- import { getQuantitativeStats } from './getQuantitativeStats';
5
+ import { getQuantitativeStats } from "./getQuantitativeStats.js";
6
6
  export function getQuantitativeStatsAutorun(self) {
7
7
  addDisposer(self, autorun(async () => {
8
8
  try {
@@ -28,5 +28,5 @@ export function getQuantitativeStatsAutorun(self) {
28
28
  self.setError(e);
29
29
  }
30
30
  }
31
- }, { delay: 1000 }));
31
+ }, { delay: 500 }));
32
32
  }