@jbrowse/plugin-wiggle 1.7.11 → 2.1.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 (446) hide show
  1. package/dist/BigWigAdapter/BigWigAdapter.d.ts +8 -7
  2. package/dist/BigWigAdapter/BigWigAdapter.js +205 -283
  3. package/dist/BigWigAdapter/BigWigAdapter.js.map +1 -0
  4. package/dist/BigWigAdapter/configSchema.js +17 -21
  5. package/dist/BigWigAdapter/configSchema.js.map +1 -0
  6. package/dist/BigWigAdapter/index.d.ts +3 -1
  7. package/dist/BigWigAdapter/index.js +42 -12
  8. package/dist/BigWigAdapter/index.js.map +1 -0
  9. package/dist/CreateMultiWiggleExtension/ConfirmDialog.d.ts +9 -0
  10. package/dist/CreateMultiWiggleExtension/ConfirmDialog.js +68 -0
  11. package/dist/CreateMultiWiggleExtension/ConfirmDialog.js.map +1 -0
  12. package/dist/CreateMultiWiggleExtension/index.d.ts +2 -0
  13. package/dist/CreateMultiWiggleExtension/index.js +111 -0
  14. package/dist/CreateMultiWiggleExtension/index.js.map +1 -0
  15. package/dist/DensityRenderer/DensityRenderer.d.ts +6 -0
  16. package/dist/DensityRenderer/DensityRenderer.js +74 -0
  17. package/dist/DensityRenderer/DensityRenderer.js.map +1 -0
  18. package/dist/DensityRenderer/configSchema.d.ts +2 -0
  19. package/dist/DensityRenderer/configSchema.js +10 -0
  20. package/dist/DensityRenderer/configSchema.js.map +1 -0
  21. package/dist/DensityRenderer/index.d.ts +3 -6
  22. package/dist/DensityRenderer/index.js +17 -135
  23. package/dist/DensityRenderer/index.js.map +1 -0
  24. package/dist/LinePlotRenderer/LinePlotRenderer.d.ts +4 -2
  25. package/dist/LinePlotRenderer/LinePlotRenderer.js +83 -168
  26. package/dist/LinePlotRenderer/LinePlotRenderer.js.map +1 -0
  27. package/dist/LinePlotRenderer/configSchema.d.ts +2 -2
  28. package/dist/LinePlotRenderer/configSchema.js +15 -69
  29. package/dist/LinePlotRenderer/configSchema.js.map +1 -0
  30. package/dist/LinePlotRenderer/index.d.ts +3 -3
  31. package/dist/LinePlotRenderer/index.js +17 -32
  32. package/dist/LinePlotRenderer/index.js.map +1 -0
  33. package/dist/LinearWiggleDisplay/components/SetColorDialog.d.ts +6 -2
  34. package/dist/LinearWiggleDisplay/components/SetColorDialog.js +88 -106
  35. package/dist/LinearWiggleDisplay/components/SetColorDialog.js.map +1 -0
  36. package/dist/LinearWiggleDisplay/components/SetMinMaxDialog.js +86 -107
  37. package/dist/LinearWiggleDisplay/components/SetMinMaxDialog.js.map +1 -0
  38. package/dist/LinearWiggleDisplay/components/Tooltip.d.ts +6 -11
  39. package/dist/LinearWiggleDisplay/components/Tooltip.js +47 -163
  40. package/dist/LinearWiggleDisplay/components/Tooltip.js.map +1 -0
  41. package/dist/LinearWiggleDisplay/components/WiggleDisplayComponent.js +44 -50
  42. package/dist/LinearWiggleDisplay/components/WiggleDisplayComponent.js.map +1 -0
  43. package/dist/LinearWiggleDisplay/components/YScaleBar.js +24 -31
  44. package/dist/LinearWiggleDisplay/components/YScaleBar.js.map +1 -0
  45. package/dist/LinearWiggleDisplay/index.d.ts +7 -3
  46. package/dist/LinearWiggleDisplay/index.js +27 -41
  47. package/dist/LinearWiggleDisplay/index.js.map +1 -0
  48. package/dist/LinearWiggleDisplay/models/configSchema.js +65 -69
  49. package/dist/LinearWiggleDisplay/models/configSchema.js.map +1 -0
  50. package/dist/LinearWiggleDisplay/models/model.d.ts +39 -18
  51. package/dist/LinearWiggleDisplay/models/model.js +538 -696
  52. package/dist/LinearWiggleDisplay/models/model.js.map +1 -0
  53. package/dist/MultiDensityRenderer/MultiDensityRenderer.d.ts +7 -0
  54. package/dist/MultiDensityRenderer/MultiDensityRenderer.js +135 -0
  55. package/dist/MultiDensityRenderer/MultiDensityRenderer.js.map +1 -0
  56. package/dist/MultiDensityRenderer/configSchema.d.ts +2 -0
  57. package/dist/MultiDensityRenderer/configSchema.js +10 -0
  58. package/dist/MultiDensityRenderer/configSchema.js.map +1 -0
  59. package/dist/MultiDensityRenderer/index.d.ts +3 -0
  60. package/dist/MultiDensityRenderer/index.js +19 -0
  61. package/dist/MultiDensityRenderer/index.js.map +1 -0
  62. package/dist/MultiLineRenderer/MultiLineRenderer.d.ts +7 -0
  63. package/dist/MultiLineRenderer/MultiLineRenderer.js +124 -0
  64. package/dist/MultiLineRenderer/MultiLineRenderer.js.map +1 -0
  65. package/dist/MultiLineRenderer/configSchema.d.ts +2 -0
  66. package/dist/MultiLineRenderer/configSchema.js +23 -0
  67. package/dist/MultiLineRenderer/configSchema.js.map +1 -0
  68. package/dist/MultiLineRenderer/index.d.ts +3 -0
  69. package/dist/MultiLineRenderer/index.js +19 -0
  70. package/dist/MultiLineRenderer/index.js.map +1 -0
  71. package/dist/MultiLinearWiggleDisplay/components/SetColorDialog.d.ts +10 -0
  72. package/dist/MultiLinearWiggleDisplay/components/SetColorDialog.js +239 -0
  73. package/dist/MultiLinearWiggleDisplay/components/SetColorDialog.js.map +1 -0
  74. package/dist/MultiLinearWiggleDisplay/components/SetMinMaxDialog.d.ts +11 -0
  75. package/dist/MultiLinearWiggleDisplay/components/SetMinMaxDialog.js +91 -0
  76. package/dist/MultiLinearWiggleDisplay/components/SetMinMaxDialog.js.map +1 -0
  77. package/dist/MultiLinearWiggleDisplay/components/Tooltip.d.ts +25 -0
  78. package/dist/MultiLinearWiggleDisplay/components/Tooltip.js +78 -0
  79. package/dist/MultiLinearWiggleDisplay/components/Tooltip.js.map +1 -0
  80. package/dist/MultiLinearWiggleDisplay/components/WiggleDisplayComponent.d.ts +13 -0
  81. package/dist/MultiLinearWiggleDisplay/components/WiggleDisplayComponent.js +144 -0
  82. package/dist/MultiLinearWiggleDisplay/components/WiggleDisplayComponent.js.map +1 -0
  83. package/dist/MultiLinearWiggleDisplay/components/YScaleBar.d.ts +7 -0
  84. package/dist/MultiLinearWiggleDisplay/components/YScaleBar.js +26 -0
  85. package/dist/MultiLinearWiggleDisplay/components/YScaleBar.js.map +1 -0
  86. package/dist/MultiLinearWiggleDisplay/components/util.d.ts +10 -0
  87. package/dist/MultiLinearWiggleDisplay/components/util.js +38 -0
  88. package/dist/MultiLinearWiggleDisplay/components/util.js.map +1 -0
  89. package/dist/MultiLinearWiggleDisplay/index.d.ts +3 -0
  90. package/dist/MultiLinearWiggleDisplay/index.js +23 -0
  91. package/dist/MultiLinearWiggleDisplay/index.js.map +1 -0
  92. package/dist/MultiLinearWiggleDisplay/models/configSchema.d.ts +2 -0
  93. package/dist/MultiLinearWiggleDisplay/models/configSchema.js +77 -0
  94. package/dist/MultiLinearWiggleDisplay/models/configSchema.js.map +1 -0
  95. package/dist/MultiLinearWiggleDisplay/models/model.d.ts +339 -0
  96. package/dist/MultiLinearWiggleDisplay/models/model.js +675 -0
  97. package/dist/MultiLinearWiggleDisplay/models/model.js.map +1 -0
  98. package/dist/MultiQuantitativeTrack/index.d.ts +3 -0
  99. package/dist/MultiQuantitativeTrack/index.js +19 -0
  100. package/dist/MultiQuantitativeTrack/index.js.map +1 -0
  101. package/dist/MultiRowLineRenderer/MultiRowLineRenderer.d.ts +7 -0
  102. package/dist/MultiRowLineRenderer/MultiRowLineRenderer.js +131 -0
  103. package/dist/MultiRowLineRenderer/MultiRowLineRenderer.js.map +1 -0
  104. package/dist/MultiRowLineRenderer/configSchema.d.ts +2 -0
  105. package/dist/MultiRowLineRenderer/configSchema.js +23 -0
  106. package/dist/MultiRowLineRenderer/configSchema.js.map +1 -0
  107. package/dist/MultiRowLineRenderer/index.d.ts +3 -0
  108. package/dist/MultiRowLineRenderer/index.js +19 -0
  109. package/dist/MultiRowLineRenderer/index.js.map +1 -0
  110. package/dist/MultiRowXYPlotRenderer/MultiRowXYPlotRenderer.d.ts +7 -0
  111. package/dist/MultiRowXYPlotRenderer/MultiRowXYPlotRenderer.js +164 -0
  112. package/dist/MultiRowXYPlotRenderer/MultiRowXYPlotRenderer.js.map +1 -0
  113. package/dist/MultiRowXYPlotRenderer/configSchema.d.ts +2 -0
  114. package/dist/MultiRowXYPlotRenderer/configSchema.js +31 -0
  115. package/dist/MultiRowXYPlotRenderer/configSchema.js.map +1 -0
  116. package/dist/MultiRowXYPlotRenderer/index.d.ts +3 -0
  117. package/dist/MultiRowXYPlotRenderer/index.js +19 -0
  118. package/dist/MultiRowXYPlotRenderer/index.js.map +1 -0
  119. package/dist/MultiWiggleAdapter/MultiWiggleAdapter.d.ts +28 -0
  120. package/dist/MultiWiggleAdapter/MultiWiggleAdapter.js +244 -0
  121. package/dist/MultiWiggleAdapter/MultiWiggleAdapter.js.map +1 -0
  122. package/dist/MultiWiggleAdapter/configSchema.d.ts +2 -0
  123. package/dist/MultiWiggleAdapter/configSchema.js +14 -0
  124. package/dist/MultiWiggleAdapter/configSchema.js.map +1 -0
  125. package/dist/MultiWiggleAdapter/index.d.ts +3 -0
  126. package/dist/MultiWiggleAdapter/index.js +47 -0
  127. package/dist/MultiWiggleAdapter/index.js.map +1 -0
  128. package/dist/MultiWiggleAddTrackWidget/AddTrackWorkflow.d.ts +5 -0
  129. package/dist/MultiWiggleAddTrackWidget/AddTrackWorkflow.js +139 -0
  130. package/dist/MultiWiggleAddTrackWidget/AddTrackWorkflow.js.map +1 -0
  131. package/dist/MultiWiggleAddTrackWidget/index.d.ts +3 -0
  132. package/dist/MultiWiggleAddTrackWidget/index.js +19 -0
  133. package/dist/MultiWiggleAddTrackWidget/index.js.map +1 -0
  134. package/dist/MultiWiggleRendering.d.ts +21 -0
  135. package/dist/MultiWiggleRendering.js +164 -0
  136. package/dist/MultiWiggleRendering.js.map +1 -0
  137. package/dist/MultiXYPlotRenderer/MultiXYPlotRenderer.d.ts +7 -0
  138. package/dist/MultiXYPlotRenderer/MultiXYPlotRenderer.js +153 -0
  139. package/dist/MultiXYPlotRenderer/MultiXYPlotRenderer.js.map +1 -0
  140. package/dist/MultiXYPlotRenderer/configSchema.d.ts +2 -0
  141. package/dist/MultiXYPlotRenderer/configSchema.js +31 -0
  142. package/dist/MultiXYPlotRenderer/configSchema.js.map +1 -0
  143. package/dist/MultiXYPlotRenderer/index.d.ts +3 -0
  144. package/dist/MultiXYPlotRenderer/index.js +19 -0
  145. package/dist/MultiXYPlotRenderer/index.js.map +1 -0
  146. package/dist/QuantitativeTrack/index.d.ts +3 -0
  147. package/dist/QuantitativeTrack/index.js +19 -0
  148. package/dist/QuantitativeTrack/index.js.map +1 -0
  149. package/dist/Tooltip.d.ts +20 -0
  150. package/dist/Tooltip.js +124 -0
  151. package/dist/Tooltip.js.map +1 -0
  152. package/dist/WiggleBaseRenderer.d.ts +11 -12
  153. package/dist/WiggleBaseRenderer.js +132 -129
  154. package/dist/WiggleBaseRenderer.js.map +1 -0
  155. package/dist/WiggleRPC/rpcMethods.d.ts +17 -1
  156. package/dist/WiggleRPC/rpcMethods.js +258 -289
  157. package/dist/WiggleRPC/rpcMethods.js.map +1 -0
  158. package/dist/WiggleRendering.d.ts +1 -1
  159. package/dist/WiggleRendering.js +103 -102
  160. package/dist/WiggleRendering.js.map +1 -0
  161. package/dist/XYPlotRenderer/XYPlotRenderer.d.ts +4 -1
  162. package/dist/XYPlotRenderer/XYPlotRenderer.js +147 -194
  163. package/dist/XYPlotRenderer/XYPlotRenderer.js.map +1 -0
  164. package/dist/XYPlotRenderer/configSchema.d.ts +2 -0
  165. package/dist/XYPlotRenderer/configSchema.js +31 -0
  166. package/dist/XYPlotRenderer/configSchema.js.map +1 -0
  167. package/dist/XYPlotRenderer/index.d.ts +7 -3
  168. package/dist/XYPlotRenderer/index.js +21 -32
  169. package/dist/XYPlotRenderer/index.js.map +1 -0
  170. package/dist/configSchema.js +42 -74
  171. package/dist/configSchema.js.map +1 -0
  172. package/dist/drawxy.d.ts +50 -0
  173. package/dist/drawxy.js +411 -0
  174. package/dist/drawxy.js.map +1 -0
  175. package/dist/index.d.ts +194 -85
  176. package/dist/index.js +139 -247
  177. package/dist/index.js.map +1 -0
  178. package/dist/util.d.ts +34 -1
  179. package/dist/util.js +270 -143
  180. package/dist/util.js.map +1 -0
  181. package/esm/BigWigAdapter/BigWigAdapter.d.ts +25 -0
  182. package/esm/BigWigAdapter/BigWigAdapter.js +81 -0
  183. package/esm/BigWigAdapter/BigWigAdapter.js.map +1 -0
  184. package/esm/BigWigAdapter/configSchema.d.ts +2 -0
  185. package/esm/BigWigAdapter/configSchema.js +16 -0
  186. package/esm/BigWigAdapter/configSchema.js.map +1 -0
  187. package/esm/BigWigAdapter/index.d.ts +3 -0
  188. package/esm/BigWigAdapter/index.js +15 -0
  189. package/esm/BigWigAdapter/index.js.map +1 -0
  190. package/esm/CreateMultiWiggleExtension/ConfirmDialog.d.ts +9 -0
  191. package/esm/CreateMultiWiggleExtension/ConfirmDialog.js +26 -0
  192. package/esm/CreateMultiWiggleExtension/ConfirmDialog.js.map +1 -0
  193. package/esm/CreateMultiWiggleExtension/index.d.ts +2 -0
  194. package/esm/CreateMultiWiggleExtension/index.js +51 -0
  195. package/esm/CreateMultiWiggleExtension/index.js.map +1 -0
  196. package/esm/DensityRenderer/DensityRenderer.d.ts +6 -0
  197. package/esm/DensityRenderer/DensityRenderer.js +8 -0
  198. package/esm/DensityRenderer/DensityRenderer.js.map +1 -0
  199. package/esm/DensityRenderer/configSchema.d.ts +2 -0
  200. package/esm/DensityRenderer/configSchema.js +5 -0
  201. package/esm/DensityRenderer/configSchema.js.map +1 -0
  202. package/esm/DensityRenderer/index.d.ts +3 -0
  203. package/esm/DensityRenderer/index.js +12 -0
  204. package/esm/DensityRenderer/index.js.map +1 -0
  205. package/esm/LinePlotRenderer/LinePlotRenderer.d.ts +6 -0
  206. package/esm/LinePlotRenderer/LinePlotRenderer.js +13 -0
  207. package/esm/LinePlotRenderer/LinePlotRenderer.js.map +1 -0
  208. package/esm/LinePlotRenderer/configSchema.d.ts +2 -0
  209. package/esm/LinePlotRenderer/configSchema.js +11 -0
  210. package/esm/LinePlotRenderer/configSchema.js.map +1 -0
  211. package/esm/LinePlotRenderer/index.d.ts +3 -0
  212. package/esm/LinePlotRenderer/index.js +12 -0
  213. package/esm/LinePlotRenderer/index.js.map +1 -0
  214. package/esm/LinearWiggleDisplay/components/SetColorDialog.d.ts +14 -0
  215. package/esm/LinearWiggleDisplay/components/SetColorDialog.js +48 -0
  216. package/esm/LinearWiggleDisplay/components/SetColorDialog.js.map +1 -0
  217. package/esm/LinearWiggleDisplay/components/SetMinMaxDialog.d.ts +11 -0
  218. package/esm/LinearWiggleDisplay/components/SetMinMaxDialog.js +46 -0
  219. package/esm/LinearWiggleDisplay/components/SetMinMaxDialog.js.map +1 -0
  220. package/esm/LinearWiggleDisplay/components/Tooltip.d.ts +19 -0
  221. package/esm/LinearWiggleDisplay/components/Tooltip.js +34 -0
  222. package/esm/LinearWiggleDisplay/components/Tooltip.js.map +1 -0
  223. package/esm/LinearWiggleDisplay/components/WiggleDisplayComponent.d.ts +8 -0
  224. package/esm/LinearWiggleDisplay/components/WiggleDisplayComponent.js +29 -0
  225. package/esm/LinearWiggleDisplay/components/WiggleDisplayComponent.js.map +1 -0
  226. package/esm/LinearWiggleDisplay/components/YScaleBar.d.ts +7 -0
  227. package/esm/LinearWiggleDisplay/components/YScaleBar.js +9 -0
  228. package/esm/LinearWiggleDisplay/components/YScaleBar.js.map +1 -0
  229. package/esm/LinearWiggleDisplay/index.d.ts +7 -0
  230. package/esm/LinearWiggleDisplay/index.js +21 -0
  231. package/esm/LinearWiggleDisplay/index.js.map +1 -0
  232. package/esm/LinearWiggleDisplay/models/configSchema.d.ts +2 -0
  233. package/esm/LinearWiggleDisplay/models/configSchema.js +64 -0
  234. package/esm/LinearWiggleDisplay/models/configSchema.js.map +1 -0
  235. package/esm/LinearWiggleDisplay/models/model.d.ts +309 -0
  236. package/esm/LinearWiggleDisplay/models/model.js +449 -0
  237. package/esm/LinearWiggleDisplay/models/model.js.map +1 -0
  238. package/esm/MultiDensityRenderer/MultiDensityRenderer.d.ts +7 -0
  239. package/esm/MultiDensityRenderer/MultiDensityRenderer.js +36 -0
  240. package/esm/MultiDensityRenderer/MultiDensityRenderer.js.map +1 -0
  241. package/esm/MultiDensityRenderer/configSchema.d.ts +2 -0
  242. package/esm/MultiDensityRenderer/configSchema.js +5 -0
  243. package/esm/MultiDensityRenderer/configSchema.js.map +1 -0
  244. package/esm/MultiDensityRenderer/index.d.ts +3 -0
  245. package/esm/MultiDensityRenderer/index.js +12 -0
  246. package/esm/MultiDensityRenderer/index.js.map +1 -0
  247. package/esm/MultiLineRenderer/MultiLineRenderer.d.ts +7 -0
  248. package/esm/MultiLineRenderer/MultiLineRenderer.js +25 -0
  249. package/esm/MultiLineRenderer/MultiLineRenderer.js.map +1 -0
  250. package/esm/MultiLineRenderer/configSchema.d.ts +2 -0
  251. package/esm/MultiLineRenderer/configSchema.js +18 -0
  252. package/esm/MultiLineRenderer/configSchema.js.map +1 -0
  253. package/esm/MultiLineRenderer/index.d.ts +3 -0
  254. package/esm/MultiLineRenderer/index.js +12 -0
  255. package/esm/MultiLineRenderer/index.js.map +1 -0
  256. package/esm/MultiLinearWiggleDisplay/components/SetColorDialog.d.ts +10 -0
  257. package/esm/MultiLinearWiggleDisplay/components/SetColorDialog.js +162 -0
  258. package/esm/MultiLinearWiggleDisplay/components/SetColorDialog.js.map +1 -0
  259. package/esm/MultiLinearWiggleDisplay/components/SetMinMaxDialog.d.ts +11 -0
  260. package/esm/MultiLinearWiggleDisplay/components/SetMinMaxDialog.js +46 -0
  261. package/esm/MultiLinearWiggleDisplay/components/SetMinMaxDialog.js.map +1 -0
  262. package/esm/MultiLinearWiggleDisplay/components/Tooltip.d.ts +25 -0
  263. package/esm/MultiLinearWiggleDisplay/components/Tooltip.js +43 -0
  264. package/esm/MultiLinearWiggleDisplay/components/Tooltip.js.map +1 -0
  265. package/esm/MultiLinearWiggleDisplay/components/WiggleDisplayComponent.d.ts +13 -0
  266. package/esm/MultiLinearWiggleDisplay/components/WiggleDisplayComponent.js +99 -0
  267. package/esm/MultiLinearWiggleDisplay/components/WiggleDisplayComponent.js.map +1 -0
  268. package/esm/MultiLinearWiggleDisplay/components/YScaleBar.d.ts +7 -0
  269. package/esm/MultiLinearWiggleDisplay/components/YScaleBar.js +9 -0
  270. package/esm/MultiLinearWiggleDisplay/components/YScaleBar.js.map +1 -0
  271. package/esm/MultiLinearWiggleDisplay/components/util.d.ts +10 -0
  272. package/esm/MultiLinearWiggleDisplay/components/util.js +31 -0
  273. package/esm/MultiLinearWiggleDisplay/components/util.js.map +1 -0
  274. package/esm/MultiLinearWiggleDisplay/index.d.ts +3 -0
  275. package/esm/MultiLinearWiggleDisplay/index.js +18 -0
  276. package/esm/MultiLinearWiggleDisplay/index.js.map +1 -0
  277. package/esm/MultiLinearWiggleDisplay/models/configSchema.d.ts +2 -0
  278. package/esm/MultiLinearWiggleDisplay/models/configSchema.js +74 -0
  279. package/esm/MultiLinearWiggleDisplay/models/configSchema.js.map +1 -0
  280. package/esm/MultiLinearWiggleDisplay/models/model.d.ts +339 -0
  281. package/esm/MultiLinearWiggleDisplay/models/model.js +570 -0
  282. package/esm/MultiLinearWiggleDisplay/models/model.js.map +1 -0
  283. package/esm/MultiQuantitativeTrack/index.d.ts +3 -0
  284. package/esm/MultiQuantitativeTrack/index.js +14 -0
  285. package/esm/MultiQuantitativeTrack/index.js.map +1 -0
  286. package/esm/MultiRowLineRenderer/MultiRowLineRenderer.d.ts +7 -0
  287. package/esm/MultiRowLineRenderer/MultiRowLineRenderer.js +33 -0
  288. package/esm/MultiRowLineRenderer/MultiRowLineRenderer.js.map +1 -0
  289. package/esm/MultiRowLineRenderer/configSchema.d.ts +2 -0
  290. package/esm/MultiRowLineRenderer/configSchema.js +18 -0
  291. package/esm/MultiRowLineRenderer/configSchema.js.map +1 -0
  292. package/esm/MultiRowLineRenderer/index.d.ts +3 -0
  293. package/esm/MultiRowLineRenderer/index.js +12 -0
  294. package/esm/MultiRowLineRenderer/index.js.map +1 -0
  295. package/esm/MultiRowXYPlotRenderer/MultiRowXYPlotRenderer.d.ts +7 -0
  296. package/esm/MultiRowXYPlotRenderer/MultiRowXYPlotRenderer.js +39 -0
  297. package/esm/MultiRowXYPlotRenderer/MultiRowXYPlotRenderer.js.map +1 -0
  298. package/esm/MultiRowXYPlotRenderer/configSchema.d.ts +2 -0
  299. package/esm/MultiRowXYPlotRenderer/configSchema.js +26 -0
  300. package/esm/MultiRowXYPlotRenderer/configSchema.js.map +1 -0
  301. package/esm/MultiRowXYPlotRenderer/index.d.ts +3 -0
  302. package/esm/MultiRowXYPlotRenderer/index.js +12 -0
  303. package/esm/MultiRowXYPlotRenderer/index.js.map +1 -0
  304. package/esm/MultiWiggleAdapter/MultiWiggleAdapter.d.ts +28 -0
  305. package/esm/MultiWiggleAdapter/MultiWiggleAdapter.js +87 -0
  306. package/esm/MultiWiggleAdapter/MultiWiggleAdapter.js.map +1 -0
  307. package/esm/MultiWiggleAdapter/configSchema.d.ts +2 -0
  308. package/esm/MultiWiggleAdapter/configSchema.js +12 -0
  309. package/esm/MultiWiggleAdapter/configSchema.js.map +1 -0
  310. package/esm/MultiWiggleAdapter/index.d.ts +3 -0
  311. package/esm/MultiWiggleAdapter/index.js +15 -0
  312. package/esm/MultiWiggleAdapter/index.js.map +1 -0
  313. package/esm/MultiWiggleAddTrackWidget/AddTrackWorkflow.d.ts +5 -0
  314. package/esm/MultiWiggleAddTrackWidget/AddTrackWorkflow.js +87 -0
  315. package/esm/MultiWiggleAddTrackWidget/AddTrackWorkflow.js.map +1 -0
  316. package/esm/MultiWiggleAddTrackWidget/index.d.ts +3 -0
  317. package/esm/MultiWiggleAddTrackWidget/index.js +12 -0
  318. package/esm/MultiWiggleAddTrackWidget/index.js.map +1 -0
  319. package/esm/MultiWiggleRendering.d.ts +21 -0
  320. package/esm/MultiWiggleRendering.js +75 -0
  321. package/esm/MultiWiggleRendering.js.map +1 -0
  322. package/esm/MultiXYPlotRenderer/MultiXYPlotRenderer.d.ts +7 -0
  323. package/esm/MultiXYPlotRenderer/MultiXYPlotRenderer.js +28 -0
  324. package/esm/MultiXYPlotRenderer/MultiXYPlotRenderer.js.map +1 -0
  325. package/esm/MultiXYPlotRenderer/configSchema.d.ts +2 -0
  326. package/esm/MultiXYPlotRenderer/configSchema.js +26 -0
  327. package/esm/MultiXYPlotRenderer/configSchema.js.map +1 -0
  328. package/esm/MultiXYPlotRenderer/index.d.ts +3 -0
  329. package/esm/MultiXYPlotRenderer/index.js +12 -0
  330. package/esm/MultiXYPlotRenderer/index.js.map +1 -0
  331. package/esm/QuantitativeTrack/index.d.ts +3 -0
  332. package/esm/QuantitativeTrack/index.js +14 -0
  333. package/esm/QuantitativeTrack/index.js.map +1 -0
  334. package/esm/Tooltip.d.ts +20 -0
  335. package/esm/Tooltip.js +71 -0
  336. package/esm/Tooltip.js.map +1 -0
  337. package/esm/WiggleBaseRenderer.d.ts +54 -0
  338. package/esm/WiggleBaseRenderer.js +36 -0
  339. package/esm/WiggleBaseRenderer.js.map +1 -0
  340. package/esm/WiggleRPC/rpcMethods.d.ts +47 -0
  341. package/esm/WiggleRPC/rpcMethods.js +112 -0
  342. package/esm/WiggleRPC/rpcMethods.js.map +1 -0
  343. package/esm/WiggleRendering.d.ts +16 -0
  344. package/esm/WiggleRendering.js +36 -0
  345. package/esm/WiggleRendering.js.map +1 -0
  346. package/esm/XYPlotRenderer/XYPlotRenderer.d.ts +7 -0
  347. package/esm/XYPlotRenderer/XYPlotRenderer.js +26 -0
  348. package/esm/XYPlotRenderer/XYPlotRenderer.js.map +1 -0
  349. package/esm/XYPlotRenderer/configSchema.d.ts +2 -0
  350. package/esm/XYPlotRenderer/configSchema.js +26 -0
  351. package/esm/XYPlotRenderer/configSchema.js.map +1 -0
  352. package/esm/XYPlotRenderer/index.d.ts +7 -0
  353. package/esm/XYPlotRenderer/index.js +13 -0
  354. package/esm/XYPlotRenderer/index.js.map +1 -0
  355. package/esm/configSchema.d.ts +2 -0
  356. package/esm/configSchema.js +41 -0
  357. package/esm/configSchema.js.map +1 -0
  358. package/esm/drawxy.d.ts +50 -0
  359. package/esm/drawxy.js +286 -0
  360. package/esm/drawxy.js.map +1 -0
  361. package/esm/index.d.ts +975 -0
  362. package/esm/index.js +90 -0
  363. package/esm/index.js.map +1 -0
  364. package/esm/util.d.ts +74 -0
  365. package/esm/util.js +231 -0
  366. package/esm/util.js.map +1 -0
  367. package/package.json +32 -18
  368. package/src/BigWigAdapter/BigWigAdapter.ts +53 -35
  369. package/src/BigWigAdapter/__snapshots__/BigWigAdapter.test.ts.snap +10 -10
  370. package/src/BigWigAdapter/configSchema.ts +5 -0
  371. package/src/BigWigAdapter/index.ts +19 -1
  372. package/src/CreateMultiWiggleExtension/ConfirmDialog.tsx +66 -0
  373. package/src/CreateMultiWiggleExtension/index.ts +57 -0
  374. package/src/DensityRenderer/DensityRenderer.test.js +8 -2
  375. package/src/DensityRenderer/DensityRenderer.ts +14 -0
  376. package/src/DensityRenderer/__snapshots__/DensityRenderer.test.js.snap +8 -0
  377. package/src/{LinePlotRenderer/index.js → DensityRenderer/configSchema.ts} +5 -5
  378. package/src/DensityRenderer/index.ts +14 -53
  379. package/src/LinePlotRenderer/LinePlotRenderer.ts +19 -0
  380. package/src/LinePlotRenderer/configSchema.ts +16 -0
  381. package/src/LinePlotRenderer/index.ts +16 -0
  382. package/src/LinearWiggleDisplay/components/SetColorDialog.tsx +26 -31
  383. package/src/LinearWiggleDisplay/components/SetMinMaxDialog.tsx +13 -11
  384. package/src/LinearWiggleDisplay/components/Tooltip.tsx +6 -121
  385. package/src/LinearWiggleDisplay/components/WiggleDisplayComponent.tsx +9 -4
  386. package/src/LinearWiggleDisplay/index.ts +24 -3
  387. package/src/LinearWiggleDisplay/models/model.tsx +139 -224
  388. package/src/MultiDensityRenderer/MultiDensityRenderer.ts +39 -0
  389. package/src/MultiDensityRenderer/configSchema.ts +10 -0
  390. package/src/MultiDensityRenderer/index.ts +16 -0
  391. package/src/MultiLineRenderer/MultiLineRenderer.ts +29 -0
  392. package/src/MultiLineRenderer/configSchema.ts +24 -0
  393. package/src/MultiLineRenderer/index.ts +17 -0
  394. package/src/MultiLinearWiggleDisplay/components/SetColorDialog.tsx +322 -0
  395. package/src/MultiLinearWiggleDisplay/components/SetMinMaxDialog.tsx +113 -0
  396. package/src/MultiLinearWiggleDisplay/components/Tooltip.tsx +76 -0
  397. package/src/MultiLinearWiggleDisplay/components/WiggleDisplayComponent.tsx +261 -0
  398. package/src/MultiLinearWiggleDisplay/components/YScaleBar.tsx +25 -0
  399. package/src/MultiLinearWiggleDisplay/components/declare.d.ts +1 -0
  400. package/src/MultiLinearWiggleDisplay/components/util.test.ts +69 -0
  401. package/src/MultiLinearWiggleDisplay/components/util.ts +33 -0
  402. package/src/MultiLinearWiggleDisplay/index.ts +20 -0
  403. package/src/MultiLinearWiggleDisplay/models/configSchema.ts +94 -0
  404. package/src/MultiLinearWiggleDisplay/models/model.tsx +721 -0
  405. package/src/MultiQuantitativeTrack/index.ts +26 -0
  406. package/src/MultiRowLineRenderer/MultiRowLineRenderer.ts +36 -0
  407. package/src/MultiRowLineRenderer/configSchema.ts +25 -0
  408. package/src/MultiRowLineRenderer/index.ts +16 -0
  409. package/src/MultiRowXYPlotRenderer/MultiRowXYPlotRenderer.ts +43 -0
  410. package/src/MultiRowXYPlotRenderer/configSchema.ts +33 -0
  411. package/src/MultiRowXYPlotRenderer/index.ts +16 -0
  412. package/src/MultiWiggleAdapter/MultiWiggleAdapter.ts +120 -0
  413. package/src/MultiWiggleAdapter/configSchema.ts +16 -0
  414. package/src/MultiWiggleAdapter/index.ts +20 -0
  415. package/src/MultiWiggleAdapter/test_data/volvox.bw +0 -0
  416. package/src/MultiWiggleAddTrackWidget/AddTrackWorkflow.tsx +130 -0
  417. package/src/MultiWiggleAddTrackWidget/index.ts +17 -0
  418. package/src/MultiWiggleRendering.tsx +125 -0
  419. package/src/MultiXYPlotRenderer/MultiXYPlotRenderer.ts +32 -0
  420. package/src/MultiXYPlotRenderer/configSchema.ts +31 -0
  421. package/src/MultiXYPlotRenderer/index.ts +17 -0
  422. package/src/QuantitativeTrack/index.ts +26 -0
  423. package/src/Tooltip.tsx +123 -0
  424. package/src/WiggleBaseRenderer.tsx +17 -11
  425. package/src/WiggleRPC/rpcMethods.ts +68 -17
  426. package/src/WiggleRendering.tsx +12 -18
  427. package/src/XYPlotRenderer/XYPlotRenderer.test.js +3 -1
  428. package/src/XYPlotRenderer/XYPlotRenderer.ts +19 -124
  429. package/src/XYPlotRenderer/__snapshots__/XYPlotRenderer.test.js.snap +8 -0
  430. package/src/XYPlotRenderer/configSchema.ts +32 -0
  431. package/src/XYPlotRenderer/index.ts +16 -10
  432. package/src/__snapshots__/WiggleRendering.test.js.snap +0 -2
  433. package/src/configSchema.ts +0 -28
  434. package/src/declare.d.ts +0 -1
  435. package/src/drawxy.ts +387 -0
  436. package/src/index.ts +75 -129
  437. package/src/util.ts +174 -0
  438. package/dist/BigWigAdapter/BigWigAdapter.test.js +0 -157
  439. package/dist/DensityRenderer/DensityRenderer.test.js +0 -88
  440. package/dist/WiggleRendering.test.js +0 -52
  441. package/dist/XYPlotRenderer/XYPlotRenderer.test.js +0 -87
  442. package/dist/declare.d.js +0 -1
  443. package/dist/index.test.js +0 -24
  444. package/dist/util.test.js +0 -66
  445. package/src/LinePlotRenderer/LinePlotRenderer.js +0 -91
  446. package/src/LinePlotRenderer/configSchema.js +0 -68
@@ -6,24 +6,27 @@ import {
6
6
  readConfObject,
7
7
  } from '@jbrowse/core/configuration'
8
8
  import {
9
- isAbortException,
10
9
  getSession,
11
10
  getContainingView,
12
11
  isSelectionContainer,
13
12
  } from '@jbrowse/core/util'
14
- import { getRpcSessionId } from '@jbrowse/core/util/tracks'
15
13
  import {
16
14
  BaseLinearDisplay,
17
15
  LinearGenomeViewModel,
18
16
  } from '@jbrowse/plugin-linear-genome-view'
19
- import { autorun, when } from 'mobx'
20
- import { addDisposer, isAlive, types, getEnv, Instance } from 'mobx-state-tree'
17
+ import { when } from 'mobx'
18
+ import { isAlive, types, getEnv, Instance } from 'mobx-state-tree'
21
19
  import PluginManager from '@jbrowse/core/PluginManager'
22
20
 
23
- import { FeatureStats } from '@jbrowse/core/util/stats'
24
21
  import { Feature } from '@jbrowse/core/util/simpleFeature'
25
22
  import { axisPropsFromTickScale } from 'react-d3-axis-mod'
26
- import { getNiceDomain, getScale } from '../../util'
23
+ import {
24
+ getNiceDomain,
25
+ getScale,
26
+ getStats,
27
+ statsAutorun,
28
+ YSCALEBAR_LABEL_OFFSET,
29
+ } from '../../util'
27
30
 
28
31
  import Tooltip from '../components/Tooltip'
29
32
  import { YScaleBar } from '../components/WiggleDisplayComponent'
@@ -31,9 +34,6 @@ import { YScaleBar } from '../components/WiggleDisplayComponent'
31
34
  const SetMinMaxDlg = lazy(() => import('../components/SetMinMaxDialog'))
32
35
  const SetColorDlg = lazy(() => import('../components/SetColorDialog'))
33
36
 
34
- // fudge factor for making all labels on the YScalebar visible
35
- export const YSCALEBAR_LABEL_OFFSET = 5
36
-
37
37
  // using a map because it preserves order
38
38
  const rendererTypes = new Map([
39
39
  ['xyplot', 'XYPlotRenderer'],
@@ -57,6 +57,7 @@ const stateModelFactory = (
57
57
  selectedRendering: types.optional(types.string, ''),
58
58
  resolution: types.optional(types.number, 1),
59
59
  fill: types.maybe(types.boolean),
60
+ minSize: types.maybe(types.number),
60
61
  color: types.maybe(types.string),
61
62
  posColor: types.maybe(types.string),
62
63
  negColor: types.maybe(types.string),
@@ -81,20 +82,16 @@ const stateModelFactory = (
81
82
  statsFetchInProgress: undefined as undefined | AbortController,
82
83
  }))
83
84
  .actions(self => ({
84
- updateStats({
85
- scoreMin,
86
- scoreMax,
87
- }: {
88
- scoreMin: number
89
- scoreMax: number
90
- }) {
85
+ updateStats(stats: { scoreMin: number; scoreMax: number }) {
86
+ const { scoreMin, scoreMax } = stats
87
+ const EPSILON = 0.000001
91
88
  if (
92
- self.stats.scoreMin !== scoreMin ||
93
- self.stats.scoreMax !== scoreMax
89
+ Math.abs(self.stats.scoreMax - scoreMax) > EPSILON ||
90
+ Math.abs(self.stats.scoreMin - scoreMin) > EPSILON
94
91
  ) {
95
92
  self.stats = { scoreMin, scoreMax }
93
+ self.statsReady = true
96
94
  }
97
- self.statsReady = true
98
95
  },
99
96
  setColor(color: string) {
100
97
  self.color = color
@@ -127,8 +124,17 @@ const stateModelFactory = (
127
124
  self.resolution = res
128
125
  },
129
126
 
130
- setFill(fill: boolean) {
131
- self.fill = fill
127
+ setFill(fill: number) {
128
+ if (fill === 0) {
129
+ self.fill = true
130
+ self.minSize = 0
131
+ } else if (fill === 1) {
132
+ self.fill = false
133
+ self.minSize = 1
134
+ } else if (fill === 2) {
135
+ self.fill = false
136
+ self.minSize = 2
137
+ }
132
138
  },
133
139
 
134
140
  toggleLogScale() {
@@ -180,12 +186,15 @@ const stateModelFactory = (
180
186
  return self.adapterConfig.type
181
187
  },
182
188
 
189
+ get rendererTypeNameSimple() {
190
+ return self.rendererTypeNameState || getConf(self, 'defaultRendering')
191
+ },
192
+
183
193
  get rendererTypeName() {
184
- const viewName =
185
- self.rendererTypeNameState || getConf(self, 'defaultRendering')
186
- const rendererType = rendererTypes.get(viewName)
194
+ const name = this.rendererTypeNameSimple
195
+ const rendererType = rendererTypes.get(name)
187
196
  if (!rendererType) {
188
- throw new Error(`unknown alignments view name ${viewName}`)
197
+ throw new Error(`unknown renderer ${name}`)
189
198
  }
190
199
  return rendererType
191
200
  },
@@ -200,13 +209,11 @@ const stateModelFactory = (
200
209
  },
201
210
 
202
211
  get maxScore() {
203
- const { max } = self.constraints
204
- return max ?? getConf(self, 'maxScore')
212
+ return self.constraints.max ?? getConf(self, 'maxScore')
205
213
  },
206
214
 
207
215
  get minScore() {
208
- const { min } = self.constraints
209
- return min ?? getConf(self, 'minScore')
216
+ return self.constraints.min ?? getConf(self, 'minScore')
210
217
  },
211
218
  }))
212
219
  .views(self => ({
@@ -214,16 +221,30 @@ const stateModelFactory = (
214
221
  const configBlob =
215
222
  getConf(self, ['renderers', self.rendererTypeName]) || {}
216
223
 
224
+ const {
225
+ color,
226
+ displayCrossHatches,
227
+ fill,
228
+ minSize,
229
+ negColor,
230
+ posColor,
231
+ summaryScoreMode,
232
+ scaleType,
233
+ } = self
234
+
217
235
  return self.rendererType.configSchema.create(
218
236
  {
219
237
  ...configBlob,
220
- filled: self.fill,
221
- scaleType: self.scaleType,
222
- displayCrossHatches: self.displayCrossHatches,
223
- summaryScoreMode: self.summaryScoreMode,
224
- ...(self.color ? { color: self.color } : {}),
225
- ...(self.negColor ? { negColor: self.negColor } : {}),
226
- ...(self.posColor ? { posColor: self.posColor } : {}),
238
+ ...(scaleType ? { scaleType } : {}),
239
+ ...(fill !== undefined ? { filled: fill } : {}),
240
+ ...(displayCrossHatches !== undefined
241
+ ? { displayCrossHatches }
242
+ : {}),
243
+ ...(summaryScoreMode !== undefined ? { summaryScoreMode } : {}),
244
+ ...(color !== undefined ? { color } : {}),
245
+ ...(negColor !== undefined ? { negColor } : {}),
246
+ ...(posColor !== undefined ? { posColor } : {}),
247
+ ...(minSize !== undefined ? { minSize } : {}),
227
248
  },
228
249
  getEnv(self),
229
250
  )
@@ -233,20 +254,18 @@ const stateModelFactory = (
233
254
  let oldDomain: [number, number] = [0, 0]
234
255
  return {
235
256
  get filled() {
236
- return self.fill ?? readConfObject(self.rendererConfig, 'filled')
257
+ const { fill, rendererConfig: conf } = self
258
+ return fill ?? readConfObject(conf, 'filled')
237
259
  },
238
260
  get summaryScoreModeSetting() {
239
- return (
240
- self.summaryScoreMode ||
241
- readConfObject(self.rendererConfig, 'summaryScoreMode')
242
- )
261
+ const { summaryScoreMode, rendererConfig: conf } = self
262
+ return summaryScoreMode ?? readConfObject(conf, 'summaryScoreMode')
243
263
  },
244
264
  get domain() {
245
265
  const { stats, scaleType, minScore, maxScore } = self
246
- const { scoreMin, scoreMax } = stats
247
266
 
248
267
  const ret = getNiceDomain({
249
- domain: [scoreMin, scoreMax],
268
+ domain: [stats.scoreMin, stats.scoreMax],
250
269
  bounds: [minScore, maxScore],
251
270
  scaleType,
252
271
  })
@@ -285,14 +304,12 @@ const stateModelFactory = (
285
304
  },
286
305
 
287
306
  get autoscaleType() {
288
- return self.autoscale || getConf(self, 'autoscale')
307
+ return self.autoscale ?? getConf(self, 'autoscale')
289
308
  },
290
309
 
291
310
  get displayCrossHatchesSetting() {
292
- return (
293
- self.displayCrossHatches ||
294
- readConfObject(self.rendererConfig, 'displayCrossHatches')
295
- )
311
+ const { displayCrossHatches: hatches, rendererConfig: conf } = self
312
+ return hatches ?? readConfObject(conf, 'displayCrossHatches')
296
313
  },
297
314
  }
298
315
  })
@@ -300,55 +317,67 @@ const stateModelFactory = (
300
317
  get ticks() {
301
318
  const { scaleType, domain, height } = self
302
319
  const minimalTicks = getConf(self, 'minimalTicks')
320
+ const inverted = getConf(self, 'inverted')
303
321
  const range = [height - YSCALEBAR_LABEL_OFFSET, YSCALEBAR_LABEL_OFFSET]
304
322
  const scale = getScale({
305
323
  scaleType,
306
324
  domain,
307
325
  range,
308
- inverted: getConf(self, 'inverted'),
326
+ inverted,
309
327
  })
310
328
  const ticks = axisPropsFromTickScale(scale, 4)
311
329
  return height < 100 || minimalTicks
312
330
  ? { ...ticks, values: domain }
313
331
  : ticks
314
332
  },
333
+
334
+ get adapterCapabilities() {
335
+ return pluginManager.getAdapterType(self.adapterTypeName)
336
+ .adapterCapabilities
337
+ },
315
338
  }))
316
339
  .views(self => {
317
340
  const { renderProps: superRenderProps } = self
318
341
  return {
319
342
  renderProps() {
320
343
  const superProps = superRenderProps()
344
+ const { filters, ticks, height, resolution, scaleOpts } = self
321
345
  return {
322
346
  ...superProps,
323
347
  notReady: superProps.notReady || !self.statsReady,
324
348
  rpcDriverName: self.rpcDriverName,
325
349
  displayModel: self,
326
350
  config: self.rendererConfig,
327
- scaleOpts: self.scaleOpts,
328
- resolution: self.resolution,
329
- height: self.height,
330
- ticks: self.ticks,
331
- displayCrossHatches: self.displayCrossHatches,
332
- filters: self.filters,
351
+ displayCrossHatches: self.displayCrossHatchesSetting,
352
+ scaleOpts,
353
+ resolution,
354
+ height,
355
+ ticks,
356
+ filters,
333
357
  }
334
358
  },
335
-
336
- get adapterCapabilities() {
337
- return pluginManager.getAdapterType(self.adapterTypeName)
338
- .adapterCapabilities
339
- },
340
-
341
359
  get hasResolution() {
342
- return this.adapterCapabilities.includes('hasResolution')
360
+ return self.adapterCapabilities.includes('hasResolution')
343
361
  },
344
362
 
345
363
  get hasGlobalStats() {
346
- return this.adapterCapabilities.includes('hasGlobalStats')
364
+ return self.adapterCapabilities.includes('hasGlobalStats')
365
+ },
366
+
367
+ get fillSetting() {
368
+ if (self.filled) {
369
+ return 0
370
+ } else if (!self.filled && self.minSize === 1) {
371
+ return 1
372
+ } else {
373
+ return 2
374
+ }
347
375
  },
348
376
  }
349
377
  })
350
378
  .views(self => {
351
379
  const { trackMenuItems: superTrackMenuItems } = self
380
+ const hasRenderings = getConf(self, 'defaultRendering')
352
381
  return {
353
382
  trackMenuItems() {
354
383
  return [
@@ -360,63 +389,66 @@ const stateModelFactory = (
360
389
  subMenu: [
361
390
  {
362
391
  label: 'Finer resolution',
363
- onClick: () => {
364
- self.setResolution(self.resolution * 5)
365
- },
392
+ onClick: () => self.setResolution(self.resolution * 5),
366
393
  },
367
394
  {
368
395
  label: 'Coarser resolution',
369
- onClick: () => {
370
- self.setResolution(self.resolution / 5)
371
- },
396
+ onClick: () => self.setResolution(self.resolution / 5),
372
397
  },
373
398
  ],
374
399
  },
375
400
  {
376
401
  label: 'Summary score mode',
377
- subMenu: ['min', 'max', 'avg', 'whiskers'].map(elt => {
378
- return {
379
- label: elt,
380
- onClick: () => self.setSummaryScoreMode(elt),
381
- }
382
- }),
402
+ subMenu: ['min', 'max', 'avg', 'whiskers'].map(elt => ({
403
+ label: elt,
404
+ type: 'radio',
405
+ checked: self.summaryScoreModeSetting === elt,
406
+ onClick: () => self.setSummaryScoreMode(elt),
407
+ })),
383
408
  },
384
409
  ]
385
410
  : []),
411
+
386
412
  ...(self.canHaveFill
387
413
  ? [
388
414
  {
389
- label: self.filled
390
- ? 'Turn off histogram fill'
391
- : 'Turn on histogram fill',
392
- onClick: () => {
393
- self.setFill(!self.filled)
394
- },
415
+ label: 'Fill mode',
416
+ subMenu: ['filled', 'no fill', 'no fill w/ emphasis'].map(
417
+ (elt, idx) => ({
418
+ label: elt,
419
+ type: 'radio',
420
+ checked: self.fillSetting === idx,
421
+ onClick: () => self.setFill(idx),
422
+ }),
423
+ ),
395
424
  },
396
425
  ]
397
426
  : []),
398
427
  {
399
428
  label:
400
429
  self.scaleType === 'log' ? 'Set linear scale' : 'Set log scale',
401
- onClick: () => {
402
- self.toggleLogScale()
403
- },
404
- },
405
- {
406
- type: 'checkbox',
407
- label: 'Draw cross hatches',
408
- checked: self.displayCrossHatchesSetting,
409
- onClick: () => {
410
- self.toggleCrossHatches()
411
- },
430
+ onClick: () => self.toggleLogScale(),
412
431
  },
413
432
 
414
- ...(Object.keys(getConf(self, 'renderers') || {}).length > 1
433
+ ...(self.needsScalebar
434
+ ? [
435
+ {
436
+ type: 'checkbox',
437
+ label: 'Draw cross hatches',
438
+ checked: self.displayCrossHatchesSetting,
439
+ onClick: () => self.toggleCrossHatches(),
440
+ },
441
+ ]
442
+ : []),
443
+
444
+ ...(hasRenderings
415
445
  ? [
416
446
  {
417
447
  label: 'Renderer type',
418
- subMenu: [...rendererTypes.keys()].map(key => ({
448
+ subMenu: ['xyplot', 'density', 'line'].map(key => ({
419
449
  label: key,
450
+ type: 'radio',
451
+ checked: self.rendererTypeNameSimple === key,
420
452
  onClick: () => self.setRendererType(key),
421
453
  })),
422
454
  },
@@ -433,30 +465,28 @@ const stateModelFactory = (
433
465
  ]
434
466
  : []),
435
467
  ['localsd', 'Local ± 3σ'],
436
- ].map(([val, label]) => {
437
- return {
438
- label,
439
- onClick() {
440
- self.setAutoscale(val)
441
- },
442
- }
443
- }),
468
+ ].map(([val, label]) => ({
469
+ label,
470
+ type: 'radio',
471
+ checked: self.autoscaleType === val,
472
+ onClick: () => self.setAutoscale(val),
473
+ })),
444
474
  },
445
475
  {
446
476
  label: 'Set min/max score',
447
477
  onClick: () => {
448
- getSession(self).queueDialog(doneCallback => [
478
+ getSession(self).queueDialog(handleClose => [
449
479
  SetMinMaxDlg,
450
- { model: self, handleClose: doneCallback },
480
+ { model: self, handleClose },
451
481
  ])
452
482
  },
453
483
  },
454
484
  {
455
485
  label: 'Set color',
456
486
  onClick: () => {
457
- getSession(self).queueDialog(doneCallback => [
487
+ getSession(self).queueDialog(handleClose => [
458
488
  SetColorDlg,
459
- { model: self, handleClose: doneCallback },
489
+ { model: self, handleClose },
460
490
  ])
461
491
  },
462
492
  },
@@ -469,92 +499,14 @@ const stateModelFactory = (
469
499
 
470
500
  type ExportSvgOpts = Parameters<typeof superRenderSvg>[0]
471
501
 
472
- async function getStats(opts: {
473
- headers?: Record<string, string>
474
- signal?: AbortSignal
475
- filters?: string[]
476
- }): Promise<FeatureStats> {
477
- const { rpcManager } = getSession(self)
478
- const nd = getConf(self, 'numStdDev') || 3
479
- const { adapterConfig, autoscaleType } = self
480
- const sessionId = getRpcSessionId(self)
481
- const params = {
482
- sessionId,
483
- adapterConfig,
484
- statusCallback: (message: string) => {
485
- if (isAlive(self)) {
486
- self.setMessage(message)
487
- }
488
- },
489
- ...opts,
490
- }
491
-
492
- if (autoscaleType === 'global' || autoscaleType === 'globalsd') {
493
- const results: FeatureStats = (await rpcManager.call(
494
- sessionId,
495
- 'WiggleGetGlobalStats',
496
- params,
497
- )) as FeatureStats
498
- const { scoreMin, scoreMean, scoreStdDev } = results
499
- // globalsd uses heuristic to avoid unnecessary scoreMin<0
500
- // if the scoreMin is never less than 0
501
- // helps with most coverage bigwigs just being >0
502
- return autoscaleType === 'globalsd'
503
- ? {
504
- ...results,
505
- scoreMin: scoreMin >= 0 ? 0 : scoreMean - nd * scoreStdDev,
506
- scoreMax: scoreMean + nd * scoreStdDev,
507
- }
508
- : results
509
- }
510
- if (autoscaleType === 'local' || autoscaleType === 'localsd') {
511
- const { dynamicBlocks, bpPerPx } = getContainingView(self) as LGV
512
- const results = (await rpcManager.call(
513
- sessionId,
514
- 'WiggleGetMultiRegionStats',
515
- {
516
- ...params,
517
- regions: dynamicBlocks.contentBlocks.map(region => {
518
- const { start, end } = region
519
- return {
520
- ...JSON.parse(JSON.stringify(region)),
521
- start: Math.floor(start),
522
- end: Math.ceil(end),
523
- }
524
- }),
525
- bpPerPx,
526
- },
527
- )) as FeatureStats
528
- const { scoreMin, scoreMean, scoreStdDev } = results
529
-
530
- // localsd uses heuristic to avoid unnecessary scoreMin<0 if the
531
- // scoreMin is never less than 0 helps with most coverage bigwigs
532
- // just being >0
533
- return autoscaleType === 'localsd'
534
- ? {
535
- ...results,
536
- scoreMin: scoreMin >= 0 ? 0 : scoreMean - nd * scoreStdDev,
537
- scoreMax: scoreMean + nd * scoreStdDev,
538
- }
539
- : results
540
- }
541
- if (autoscaleType === 'zscale') {
542
- return rpcManager.call(
543
- sessionId,
544
- 'WiggleGetGlobalStats',
545
- params,
546
- ) as Promise<FeatureStats>
547
- }
548
- throw new Error(`invalid autoscaleType '${autoscaleType}'`)
549
- }
550
502
  return {
551
503
  // re-runs stats and refresh whole display on reload
552
504
  async reload() {
553
505
  self.setError()
554
506
  const aborter = new AbortController()
555
- let stats
507
+ self.setLoading(aborter)
556
508
  try {
557
- stats = await getStats({
509
+ const stats = await getStats(self, {
558
510
  signal: aborter.signal,
559
511
  ...self.renderProps(),
560
512
  })
@@ -567,44 +519,7 @@ const stateModelFactory = (
567
519
  }
568
520
  },
569
521
  afterAttach() {
570
- addDisposer(
571
- self,
572
- autorun(
573
- async () => {
574
- try {
575
- const aborter = new AbortController()
576
- const view = getContainingView(self) as LGV
577
- self.setLoading(aborter)
578
-
579
- if (!view.initialized) {
580
- return
581
- }
582
-
583
- if (!self.estimatedStatsReady) {
584
- return
585
- }
586
- if (self.regionTooLarge) {
587
- return
588
- }
589
-
590
- const wiggleStats = await getStats({
591
- signal: aborter.signal,
592
- ...self.renderProps(),
593
- })
594
-
595
- if (isAlive(self)) {
596
- self.updateStats(wiggleStats)
597
- }
598
- } catch (e) {
599
- if (!isAbortException(e) && isAlive(self)) {
600
- console.error(e)
601
- self.setError(e)
602
- }
603
- }
604
- },
605
- { delay: 1000 },
606
- ),
607
- )
522
+ statsAutorun(self)
608
523
  },
609
524
  async renderSvg(opts: ExportSvgOpts) {
610
525
  await when(() => self.statsReady && !!self.regionCannotBeRenderedText)
@@ -0,0 +1,39 @@
1
+ import { Feature } from '@jbrowse/core/util'
2
+ import { groupBy } from '../util'
3
+ import WiggleBaseRenderer, {
4
+ MultiRenderArgsDeserialized as MultiArgs,
5
+ } from '../WiggleBaseRenderer'
6
+ import { drawDensity } from '../drawxy'
7
+
8
+ export default class MultiXYPlotRenderer extends WiggleBaseRenderer {
9
+ // @ts-ignore
10
+ async draw(ctx: CanvasRenderingContext2D, props: MultiArgs) {
11
+ const { bpPerPx, sources, regions, features } = props
12
+ const [region] = regions
13
+ const groups = groupBy([...features.values()], f => f.get('source'))
14
+ const height = props.height / Object.keys(groups).length
15
+ const width = (region.end - region.start) / bpPerPx
16
+ let feats = [] as Feature[]
17
+ ctx.save()
18
+ sources.forEach(source => {
19
+ const features = groups[source.name]
20
+ if (!features) {
21
+ return
22
+ }
23
+ const { reducedFeatures } = drawDensity(ctx, {
24
+ ...props,
25
+ features,
26
+ height,
27
+ })
28
+ ctx.strokeStyle = 'rgba(200,200,200,0.8)'
29
+ ctx.beginPath()
30
+ ctx.moveTo(0, height)
31
+ ctx.lineTo(width, height)
32
+ ctx.stroke()
33
+ ctx.translate(0, height)
34
+ feats = feats.concat(reducedFeatures)
35
+ })
36
+ ctx.restore()
37
+ return { reducedFeatures: feats }
38
+ }
39
+ }
@@ -0,0 +1,10 @@
1
+ import { ConfigurationSchema } from '@jbrowse/core/configuration'
2
+ import ConfigSchema from '../configSchema'
3
+
4
+ const configSchema = ConfigurationSchema(
5
+ 'MultiDensityRenderer',
6
+ {},
7
+ { baseConfiguration: ConfigSchema, explicitlyTyped: true },
8
+ )
9
+
10
+ export default configSchema
@@ -0,0 +1,16 @@
1
+ import PluginManager from '@jbrowse/core/PluginManager'
2
+ import configSchema from './configSchema'
3
+ import ReactComponent from '../MultiWiggleRendering'
4
+ import MultiDensityRenderer from './MultiDensityRenderer'
5
+
6
+ export default (pluginManager: PluginManager) => {
7
+ pluginManager.addRendererType(
8
+ () =>
9
+ new MultiDensityRenderer({
10
+ name: 'MultiDensityRenderer',
11
+ ReactComponent,
12
+ configSchema,
13
+ pluginManager,
14
+ }),
15
+ )
16
+ }
@@ -0,0 +1,29 @@
1
+ import { Feature } from '@jbrowse/core/util'
2
+ import { drawLine } from '../drawxy'
3
+ import { groupBy } from '../util'
4
+
5
+ import WiggleBaseRenderer, {
6
+ MultiRenderArgsDeserialized as MultiArgs,
7
+ } from '../WiggleBaseRenderer'
8
+
9
+ export default class MultiLineRenderer extends WiggleBaseRenderer {
10
+ // @ts-ignore
11
+ async draw(ctx: CanvasRenderingContext2D, props: MultiArgs) {
12
+ const { sources, features } = props
13
+ const groups = groupBy([...features.values()], f => f.get('source'))
14
+ let feats = [] as Feature[]
15
+ sources.forEach(source => {
16
+ const features = groups[source.name]
17
+ if (!features) {
18
+ return
19
+ }
20
+ const { reducedFeatures } = drawLine(ctx, {
21
+ ...props,
22
+ features,
23
+ colorCallback: () => source.color || 'blue',
24
+ })
25
+ feats = feats.concat(reducedFeatures)
26
+ })
27
+ return { reducedFeatures: feats }
28
+ }
29
+ }