@sjcrh/proteinpaint-client 2.166.0 → 2.167.1

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 (882) hide show
  1. package/dist/2dmaf-6M6QWXAQ.js +1364 -0
  2. package/dist/AIProjectAdmin-2NHMC3IV.js +780 -0
  3. package/dist/AppHeader-CTHEWSZD.js +813 -0
  4. package/dist/BoxPlot-3U6ZAKKO.js +44 -0
  5. package/dist/CorrelationVolcano-2ASIR6KY.js +616 -0
  6. package/dist/DifferentialAnalysis-C3NYGF7U.js +237 -0
  7. package/dist/Disco-2QLBZ3X5.js +3089 -0
  8. package/dist/Disco.UI-GPIIPM2P.js +238 -0
  9. package/dist/DziViewer-OHPZOH72.js +16328 -0
  10. package/dist/GB-FH6YQGHI.js +1099 -0
  11. package/dist/HicApp-TI2II3SZ.js +2218 -0
  12. package/dist/NumBinaryEditor-O42T63EX.js +259 -0
  13. package/dist/NumBinaryEditor.unit.spec-UMB2PHT5.js +277 -0
  14. package/dist/NumContEditor-7NOUKPCV.js +98 -0
  15. package/dist/NumContEditor.unit.spec-JGXJ2HLE.js +160 -0
  16. package/dist/NumCustomBinEditor-6CHN3KX3.js +29 -0
  17. package/dist/NumCustomBinEditor.unit.spec-RJPQLE3E.js +275 -0
  18. package/dist/NumDiscreteEditor-AFTUKU4K.js +145 -0
  19. package/dist/NumDiscreteEditor.unit.spec-GKR6ZNBQ.js +193 -0
  20. package/dist/NumRegularBinEditor-UJ5WQPHR.js +29 -0
  21. package/dist/NumRegularBinEditor.unit.spec-5HGJQEX7.js +220 -0
  22. package/dist/NumSplineEditor-JANA2DUE.js +181 -0
  23. package/dist/NumSplineEditor.unit.spec-UYAMAKZD.js +190 -0
  24. package/dist/NumericDensity-YE5R4CNP.js +29 -0
  25. package/dist/NumericDensity.unit.spec-SVEB5U2S.js +212 -0
  26. package/dist/NumericHandler-WW4M7YW2.js +30 -0
  27. package/dist/NumericHandler.unit.spec-2BWDFO53.js +210 -0
  28. package/dist/SC-UGJGMBL7.js +714 -0
  29. package/dist/Volcano-IU76MEIL.js +1018 -0
  30. package/dist/WSIViewer-3S7N4UDO.js +46959 -0
  31. package/dist/WsiSamplesPlot-4CAOHWCL.js +153 -0
  32. package/dist/adSandbox-AEBS3RTL.js +29 -0
  33. package/dist/alphaGenome-F2PB4SGI.js +170 -0
  34. package/dist/app-6SKETLMT.js +28 -0
  35. package/dist/app-GBEF2HBR.js +54 -0
  36. package/dist/app.js +16 -16
  37. package/dist/bam-5SE6XQJV.js +842 -0
  38. package/dist/barchart-AUSOT2XB.js +48 -0
  39. package/dist/barchart.data-GYCNBRPY.js +30 -0
  40. package/dist/barchart.events-QTSWNYXO.js +44 -0
  41. package/dist/barchart.integration.spec-LORJLJVX.js +1600 -0
  42. package/dist/bars.renderer-4N4QOUNI.js +12 -0
  43. package/dist/bars.settings-SDU7PZOS.js +10 -0
  44. package/dist/block-QLSIELXK.js +6291 -0
  45. package/dist/block.init-OOLEA6ZK.js +29 -0
  46. package/dist/block.mds.expressionrank-D2KUISXZ.js +350 -0
  47. package/dist/block.mds.geneboxplot-AMYBWXPS.js +819 -0
  48. package/dist/block.mds.junction-OG335MBK.js +1536 -0
  49. package/dist/block.mds.svcnv-WYDBQ6FV.js +6792 -0
  50. package/dist/block.svg-OH73245R.js +155 -0
  51. package/dist/block.tk.aicheck-CG5THFW2.js +274 -0
  52. package/dist/block.tk.ase-G2L3G5MQ.js +356 -0
  53. package/dist/block.tk.bam-DXWCA6EU.js +1897 -0
  54. package/dist/block.tk.bedgraphdot-LF3TFPNL.js +375 -0
  55. package/dist/block.tk.bigwig.ui-JKXZ3VDF.js +202 -0
  56. package/dist/block.tk.hicstraw-ZK4RKFB6.js +814 -0
  57. package/dist/block.tk.junction-ZB7Q2NLB.js +2355 -0
  58. package/dist/block.tk.junction.textmatrixui-ZYNQWKIW.js +190 -0
  59. package/dist/block.tk.ld-7H64HGER.js +90 -0
  60. package/dist/block.tk.menu-WFVKAH74.js +1020 -0
  61. package/dist/block.tk.pgv-632LLSBI.js +935 -0
  62. package/dist/brainImaging-AEPTHIQF.js +417 -0
  63. package/dist/chat-3XZCAFDD.js +142 -0
  64. package/dist/chat-3XZCAFDD.js.map +7 -0
  65. package/dist/chunk-22O6F463.js +619 -0
  66. package/dist/chunk-2HJ7OD7H.js +252 -0
  67. package/dist/chunk-2MN5JLZB.js +2878 -0
  68. package/dist/chunk-2OVIUIIL.js +1720 -0
  69. package/dist/chunk-2OVIUIIL.js.map +7 -0
  70. package/dist/chunk-37CK5IGW.js +480 -0
  71. package/dist/chunk-3JFEWVHR.js +80 -0
  72. package/dist/chunk-3MGBC64I.js +133 -0
  73. package/dist/chunk-3NWLWH4G.js +6364 -0
  74. package/dist/chunk-46T54RUY.js +1133 -0
  75. package/dist/chunk-46T54RUY.js.map +7 -0
  76. package/dist/chunk-4GKQ5PWY.js +142 -0
  77. package/dist/chunk-4PHD5H4A.js +226 -0
  78. package/dist/chunk-56IFQMJK.js +413 -0
  79. package/dist/chunk-5AMBV2JE.js +797 -0
  80. package/dist/chunk-5AMBV2JE.js.map +7 -0
  81. package/dist/chunk-5DMFTXUZ.js +158 -0
  82. package/dist/chunk-5QJDZHRU.js +95 -0
  83. package/dist/chunk-5WAVKWL6.js +1275 -0
  84. package/dist/chunk-6ISTNHM6.js +144 -0
  85. package/dist/chunk-6VQ4C735.js +1536 -0
  86. package/dist/chunk-74WMSW3E.js +229 -0
  87. package/dist/chunk-AFU66YOW.js +459 -0
  88. package/dist/chunk-AUJ2YUXV.js +14 -0
  89. package/dist/chunk-B65X5UQH.js +518 -0
  90. package/dist/chunk-B6I64LSV.js +634 -0
  91. package/dist/chunk-BAJ74DKS.js +419 -0
  92. package/dist/chunk-BAJ74DKS.js.map +7 -0
  93. package/dist/chunk-BTYCW3D5.js +85 -0
  94. package/dist/chunk-CCB5KYFQ.js +1415 -0
  95. package/dist/chunk-CKLYFA7H.js +467 -0
  96. package/dist/chunk-CLYRJ466.js +272 -0
  97. package/dist/chunk-CPHCZZWT.js +82 -0
  98. package/dist/chunk-CUADOD2T.js +217 -0
  99. package/dist/chunk-CV6ID6T7.js +422 -0
  100. package/dist/chunk-CWHBWY3B.js +190 -0
  101. package/dist/chunk-D53HBTYQ.js +238 -0
  102. package/dist/chunk-DDOM4XYV.js +1177 -0
  103. package/dist/chunk-DDOM4XYV.js.map +7 -0
  104. package/dist/chunk-DKI7YOTJ.js +196 -0
  105. package/dist/chunk-DNU4IPD2.js +165 -0
  106. package/dist/chunk-FN5XPUPH.js +83 -0
  107. package/dist/chunk-FN5XPUPH.js.map +7 -0
  108. package/dist/chunk-GLSDMBHR.js +55 -0
  109. package/dist/chunk-GLSDMBHR.js.map +7 -0
  110. package/dist/chunk-H3BSKMND.js +487 -0
  111. package/dist/chunk-H3BSKMND.js.map +7 -0
  112. package/dist/chunk-H6HP4H3U.js +2327 -0
  113. package/dist/chunk-HPEMEDXB.js +123 -0
  114. package/dist/chunk-HUDESZGX.js +1151 -0
  115. package/dist/chunk-ITJ2SXU5.js +467 -0
  116. package/dist/chunk-ITJ2SXU5.js.map +7 -0
  117. package/dist/chunk-J7IU77CA.js +166 -0
  118. package/dist/chunk-JMO7ENSD.js +381 -0
  119. package/dist/chunk-JTPN3BRG.js +129 -0
  120. package/dist/chunk-KCAMFDJH.js +323 -0
  121. package/dist/chunk-LD45BCVM.js +177 -0
  122. package/dist/chunk-LMELY5Z2.js +1412 -0
  123. package/dist/chunk-LVQK62CV.js +215 -0
  124. package/dist/chunk-MCVLRF66.js +157 -0
  125. package/dist/chunk-MK7RRJTX.js +1968 -0
  126. package/dist/chunk-MK7RRJTX.js.map +7 -0
  127. package/dist/chunk-MLD7DW5I.js +613 -0
  128. package/dist/chunk-NEF7LGNE.js +2789 -0
  129. package/dist/chunk-O7BAQPP3.js +256 -0
  130. package/dist/chunk-O7BAQPP3.js.map +7 -0
  131. package/dist/chunk-OARG7PAV.js +401 -0
  132. package/dist/chunk-OGCF6E6I.js +4947 -0
  133. package/dist/chunk-OGCF6E6I.js.map +7 -0
  134. package/dist/chunk-OGWY4MOB.js +748 -0
  135. package/dist/chunk-PQD6K5W5.js +2784 -0
  136. package/dist/chunk-Q4FYGFTQ.js +91 -0
  137. package/dist/chunk-QX5QVWUP.js +451 -0
  138. package/dist/chunk-QX5QVWUP.js.map +7 -0
  139. package/dist/chunk-RA2KI64U.js +303 -0
  140. package/dist/chunk-RHHLAKYS.js +1088 -0
  141. package/dist/chunk-RKV3CP4C.js +258 -0
  142. package/dist/chunk-RL7RU2V7.js +368 -0
  143. package/dist/chunk-RQ7CE7SK.js +161 -0
  144. package/dist/chunk-RX552WU6.js +1143 -0
  145. package/dist/chunk-S7V4SFKB.js +276 -0
  146. package/dist/chunk-SEL5UNRC.js +142 -0
  147. package/dist/chunk-SRBO57AD.js +297 -0
  148. package/dist/chunk-SYGLOTOV.js +1197 -0
  149. package/dist/chunk-TGZA4ETW.js +311 -0
  150. package/dist/chunk-TGZA4ETW.js.map +7 -0
  151. package/dist/chunk-UZ466XO3.js +203 -0
  152. package/dist/chunk-VDF5W47R.js +149 -0
  153. package/dist/chunk-W4SEWZF2.js +279 -0
  154. package/dist/chunk-W4SEWZF2.js.map +7 -0
  155. package/dist/chunk-W5EG334J.js +15083 -0
  156. package/dist/chunk-W5EG334J.js.map +7 -0
  157. package/dist/chunk-WTPVXDJT.js +31 -0
  158. package/dist/chunk-XRIM2YJZ.js +228 -0
  159. package/dist/chunk-YSWMQO23.js +55 -0
  160. package/dist/chunk-ZBZXIWSK.js +402 -0
  161. package/dist/chunk-ZFFHOEBE.js +117 -0
  162. package/dist/chunk-ZG63ZUDE.js +102 -0
  163. package/dist/chunk-ZGQ3BMLW.js +2676 -0
  164. package/dist/chunk-ZNINQ3FN.js +293 -0
  165. package/dist/chunk-ZQZWM544.js +4172 -0
  166. package/dist/condition-4FVKPSQ2.js +323 -0
  167. package/dist/controls-ZWBN566I.js +35 -0
  168. package/dist/controls.btns-H4TWTHTW.js +10 -0
  169. package/dist/controls.config-YU4W3CDL.js +31 -0
  170. package/dist/correlation-VADB4SQO.js +102 -0
  171. package/dist/cuminc-4BXE2YS6.js +1143 -0
  172. package/dist/cuminc.integration.spec-XQREKHVA.js +669 -0
  173. package/dist/customdata.inputui-VBQWT3M7.js +278 -0
  174. package/dist/dataDownload-QIZKBKH7.js +320 -0
  175. package/dist/dataDownload.integration.spec-MLJEHLYD.js +184 -0
  176. package/dist/databrowser.ui-6UIR4ULJ.js +426 -0
  177. package/dist/dictionary-FLWIWAC6.js +90 -0
  178. package/dist/e2pca-NKWSJRXM.js +341 -0
  179. package/dist/ep-EPN3AR6D.js +1247 -0
  180. package/dist/expclust.gdc.spec-ZRUH5E6E.js +298 -0
  181. package/dist/facet-BM7SLACF.js +437 -0
  182. package/dist/frequencyChart-HBXRIBAW.js +371 -0
  183. package/dist/frequencyChart.integration.spec-YJUYZWM6.js +301 -0
  184. package/dist/geneExpClustering-4VD5PAWN.js +242 -0
  185. package/dist/geneExpression-6OT2Y4P6.js +54 -0
  186. package/dist/geneExpression-EAMEZXJQ.js +310 -0
  187. package/dist/geneORA-RI2AG7JT.js +272 -0
  188. package/dist/geneVariant-FYYEOTWA.js +32 -0
  189. package/dist/geneVariant-PAKVDVC4.js +29 -0
  190. package/dist/genefusion.ui-QWC42XWQ.js +242 -0
  191. package/dist/geneset-XA6IWP3Q.js +186 -0
  192. package/dist/genomeBrowser.spec-LRKXWXNT.js +272 -0
  193. package/dist/grin2-O6TETVZ3.js +1044 -0
  194. package/dist/grin2-O6TETVZ3.js.map +7 -0
  195. package/dist/grin2-WLB7BY3S.js +1547 -0
  196. package/dist/gsea-ZM4WOPSQ.js +43 -0
  197. package/dist/hierCluster-LD43LLRC.js +60 -0
  198. package/dist/hierCluster-ZGYRS2WV.js +56 -0
  199. package/dist/hierCluster.config-O5HUOFNH.js +32 -0
  200. package/dist/hierCluster.integration.spec-37UNKHTH.js +389 -0
  201. package/dist/hierCluster.interactivity-B27ETKRP.js +45 -0
  202. package/dist/hierCluster.renderers-GWFH5ZX7.js +21 -0
  203. package/dist/imagePlot-LJZVGNDJ.js +134 -0
  204. package/dist/importPlot-RMVENQRD.js +8 -0
  205. package/dist/launch.adhoc-S3XHRSLN.js +36 -0
  206. package/dist/leftlabel.sample-J6PCA3UB.js +249 -0
  207. package/dist/lollipop-OZTV4C7A.js +159 -0
  208. package/dist/maf-3SRLCKGO.js +435 -0
  209. package/dist/maf-3SRLCKGO.js.map +7 -0
  210. package/dist/maftimeline-6F2LQJU6.js +584 -0
  211. package/dist/matrix-FIXOFAB4.js +60 -0
  212. package/dist/matrix-O5KPDLM2.js +55 -0
  213. package/dist/matrix.cells-SCLZA3P4.js +30 -0
  214. package/dist/matrix.config-WG7HFJL4.js +33 -0
  215. package/dist/matrix.controls-QQLBUUYP.js +31 -0
  216. package/dist/matrix.data-6JLF5HVI.js +35 -0
  217. package/dist/matrix.dom-QO7BXZ27.js +11 -0
  218. package/dist/matrix.groups-QMZMZ6Q7.js +26 -0
  219. package/dist/matrix.integration.spec-ZJYWNQ57.js +2936 -0
  220. package/dist/matrix.interactivity-ZZY5ET4E.js +36 -0
  221. package/dist/matrix.layout-XKFB4PKY.js +35 -0
  222. package/dist/matrix.legend-CS6DNC5V.js +22 -0
  223. package/dist/matrix.renderers-4LST6PBA.js +29 -0
  224. package/dist/matrix.serieses-3SERD6CV.js +21 -0
  225. package/dist/matrix.sort-UVS6WHIS.js +27 -0
  226. package/dist/matrix.sort.unit.spec-CTSUNUWB.js +464 -0
  227. package/dist/matrix.sorterUi-JDGLTLJM.js +18 -0
  228. package/dist/matrix.sorterUi.unit.spec-VQFMHIYI.js +335 -0
  229. package/dist/mavb-ECQ2CQ7F.js +723 -0
  230. package/dist/mds.fimo-JDYDT5NK.js +509 -0
  231. package/dist/mds.samplescatterplot-PEJBVSTO.js +1541 -0
  232. package/dist/mds.survivalplot-GYK6VRQT.js +474 -0
  233. package/dist/mutationSignature-43SECPTY.js +72 -0
  234. package/dist/numericDictTermCluster-2ER4FUKO.js +72 -0
  235. package/dist/oncomatrix-ZXDJMLN3.js +287 -0
  236. package/dist/oncomatrix.spec-HOPRIG3I.js +439 -0
  237. package/dist/plot.2dvaf-Y4SZUHLD.js +368 -0
  238. package/dist/plot.app-W5Z3C7P5.js +35 -0
  239. package/dist/plot.barplot-B2PRZDKV.js +93 -0
  240. package/dist/plot.boxplot-J7ET34FY.js +143 -0
  241. package/dist/plot.brainImaging-ISY4P6RT.js +51 -0
  242. package/dist/plot.disco-D7AL42PW.js +100 -0
  243. package/dist/plot.dzi-O32LH65U.js +33 -0
  244. package/dist/plot.ssgq-WF7262IZ.js +130 -0
  245. package/dist/plot.vaf2cov-OB6UKSFQ.js +250 -0
  246. package/dist/plot.wsi-J5S4YYXN.js +36 -0
  247. package/dist/polar-LIJORXR6.js +179 -0
  248. package/dist/profile.spec-3KE4CREI.js +71 -0
  249. package/dist/profileBarchart-UQHOJB5V.js +260 -0
  250. package/dist/profileForms-WTYVTIUN.js +365 -0
  251. package/dist/profilePlot-SOXXEUAT.js +50 -0
  252. package/dist/profileRadar-2OHJ2RIU.js +256 -0
  253. package/dist/profileRadarFacility-GHLG3QNG.js +256 -0
  254. package/dist/qualitative-B3OY7A7P.js +34 -0
  255. package/dist/regression-HO2TO4XT.js +57 -0
  256. package/dist/regression.inputs-JN3ZMIOP.js +49 -0
  257. package/dist/regression.inputs.term-67HVMXFZ.js +49 -0
  258. package/dist/regression.inputs.values.table-JXJK2YZT.js +46 -0
  259. package/dist/regression.integration.spec-L54ZS5VY.js +777 -0
  260. package/dist/regression.results-3ZSFKUNN.js +31 -0
  261. package/dist/regression.spec-SVWCQX2U.js +699 -0
  262. package/dist/report-IHX7XSOI.js +220 -0
  263. package/dist/runChart-QLQMK3OE.js +54 -0
  264. package/dist/runchart.integration.spec-5NVY5GHR.js +362 -0
  265. package/dist/sampleScatter.spec-4Q5CQQWH.js +193 -0
  266. package/dist/sampleView-7WHDFHB5.js +42 -0
  267. package/dist/samplelst-34GJVLVD.js +102 -0
  268. package/dist/samplematrix-L2HOSLUT.js +2189 -0
  269. package/dist/scatter-X6AAM2LJ.js +55 -0
  270. package/dist/scatter.integration.spec-QSH3PLBK.js +1026 -0
  271. package/dist/selectGenomeWithTklst-AJS2IPPW.js +125 -0
  272. package/dist/singleCellPlot-7JEWDVSR.js +50 -0
  273. package/dist/singlecell-IC5KU72L.js +1563 -0
  274. package/dist/singlecell-NWANPXWM.js +80 -0
  275. package/dist/snp-PSRNMTL6.js +73 -0
  276. package/dist/snplocus-QCAVDYLR.js +199 -0
  277. package/dist/spliceevent.a53ss.diagram-SGDJKUEC.js +142 -0
  278. package/dist/spliceevent.exonskip.diagram-BUYTHCK5.js +268 -0
  279. package/dist/spliceevent.noeventdiagram-OJZJUHXP.js +451 -0
  280. package/dist/ssGSEA-UUZG57MF.js +53 -0
  281. package/dist/stattable-324FS2HA.js +89 -0
  282. package/dist/summarizeCnvGeneexp-ZVZYWP43.js +136 -0
  283. package/dist/summarizeGeneexpSurvival-7XJRMT6M.js +90 -0
  284. package/dist/summarizeMutationDiagnosis-ZKLXOVY2.js +32 -0
  285. package/dist/summarizeMutationSurvival-S4YPGLWA.js +92 -0
  286. package/dist/summary-RVG7JL6Y.js +55 -0
  287. package/dist/summary.integration.spec-SCD35GO4.js +405 -0
  288. package/dist/summaryInput-DMN6DTSW.js +170 -0
  289. package/dist/sunburst-QZXYILRC.js +275 -0
  290. package/dist/survival-6CWEBRSF.js +41 -0
  291. package/dist/survival-J657VYLI.js +49 -0
  292. package/dist/survival.integration.spec-S5WE4V6M.js +601 -0
  293. package/dist/svgraph-NEKJL24M.js +1378 -0
  294. package/dist/svmr-5RQ5JQF2.js +3833 -0
  295. package/dist/table-CG6Z6NCJ.js +193 -0
  296. package/dist/termCollection-FOQNVXB7.js +80 -0
  297. package/dist/termInfo-5USFZGDB.js +9 -0
  298. package/dist/tk-2O7XOVGJ.js +37 -0
  299. package/dist/tp.ui-S4YUVCZH.js +1450 -0
  300. package/dist/tvs.dtcnv.continuous-7BPIXZ6C.js +65 -0
  301. package/dist/tvs.numeric-FCC2EY62.js +355 -0
  302. package/dist/tvs.samplelst-PKGFTULN.js +95 -0
  303. package/dist/violin-C7IBRTYP.js +47 -0
  304. package/dist/violin.integration.spec-WXRD3Z4E.js +1425 -0
  305. package/dist/violin.interactivity-BMG4TG5L.js +39 -0
  306. package/dist/violin.renderer-WUNW6ULV.js +31 -0
  307. package/dist/vocabulary-UUNEEBM3.js +32 -0
  308. package/package.json +3 -3
  309. package/dist/2dmaf-E4NOGWWO.js +0 -1364
  310. package/dist/AIProjectAdmin-3QDXMCOK.js +0 -780
  311. package/dist/AppHeader-IFZ57DJE.js +0 -813
  312. package/dist/BoxPlot-GXDTPRA5.js +0 -44
  313. package/dist/CorrelationVolcano-S4GUYIPT.js +0 -616
  314. package/dist/DifferentialAnalysis-YLKYWPUT.js +0 -237
  315. package/dist/Disco-OQMP3HRQ.js +0 -3089
  316. package/dist/Disco.UI-XB3XQP33.js +0 -238
  317. package/dist/DziViewer-UIRNTFNS.js +0 -16328
  318. package/dist/GB-KDPJTOLP.js +0 -1099
  319. package/dist/HicApp-XJERMLKH.js +0 -2218
  320. package/dist/NumBinaryEditor-5MWWWNLW.js +0 -259
  321. package/dist/NumBinaryEditor.unit.spec-ROGT5FOH.js +0 -277
  322. package/dist/NumContEditor-RRCB4CKG.js +0 -98
  323. package/dist/NumContEditor.unit.spec-AJTKOF7W.js +0 -160
  324. package/dist/NumCustomBinEditor-3GJITZ7V.js +0 -29
  325. package/dist/NumCustomBinEditor.unit.spec-DNBDZSHT.js +0 -275
  326. package/dist/NumDiscreteEditor-TARWA6CZ.js +0 -145
  327. package/dist/NumDiscreteEditor.unit.spec-TCSLTQ25.js +0 -193
  328. package/dist/NumRegularBinEditor-QF5ALVV4.js +0 -29
  329. package/dist/NumRegularBinEditor.unit.spec-GFNDBWNM.js +0 -220
  330. package/dist/NumSplineEditor-MOEUXR34.js +0 -181
  331. package/dist/NumSplineEditor.unit.spec-XPJOOXS4.js +0 -190
  332. package/dist/NumericDensity-JDE263EQ.js +0 -29
  333. package/dist/NumericDensity.unit.spec-RX6UGV56.js +0 -212
  334. package/dist/NumericHandler-XM7LUYHN.js +0 -30
  335. package/dist/NumericHandler.unit.spec-5EYRMII7.js +0 -210
  336. package/dist/SC-Z4KBNK7P.js +0 -714
  337. package/dist/Volcano-WYJLKM4K.js +0 -1018
  338. package/dist/WSIViewer-3RMG3VOA.js +0 -46959
  339. package/dist/WsiSamplesPlot-PAWNKI7R.js +0 -153
  340. package/dist/adSandbox-7H5H46SE.js +0 -29
  341. package/dist/alphaGenome-PODWDV5T.js +0 -170
  342. package/dist/app-JPURIGQW.js +0 -28
  343. package/dist/app-YL7S55T5.js +0 -54
  344. package/dist/bam-XEO47VYA.js +0 -842
  345. package/dist/barchart-B5M6SSJH.js +0 -48
  346. package/dist/barchart.data-6A6WVV4Y.js +0 -30
  347. package/dist/barchart.events-2GNB5KWY.js +0 -44
  348. package/dist/barchart.integration.spec-JEOTKIWC.js +0 -1600
  349. package/dist/bars.renderer-NLUBMQEO.js +0 -12
  350. package/dist/bars.settings-UQZ63KU4.js +0 -8
  351. package/dist/block-B7WMYLPO.js +0 -6291
  352. package/dist/block.init-KCIXEYQC.js +0 -29
  353. package/dist/block.mds.expressionrank-RYZXAH5Y.js +0 -350
  354. package/dist/block.mds.geneboxplot-LNWUEI6N.js +0 -819
  355. package/dist/block.mds.junction-CVIY7QMD.js +0 -1536
  356. package/dist/block.mds.svcnv-EUGWHSCA.js +0 -6792
  357. package/dist/block.svg-QBLNIGUF.js +0 -155
  358. package/dist/block.tk.aicheck-U6NG22FX.js +0 -274
  359. package/dist/block.tk.ase-U3TRZAOH.js +0 -356
  360. package/dist/block.tk.bam-6Y6YFVR2.js +0 -1897
  361. package/dist/block.tk.bedgraphdot-O3VCFX6K.js +0 -375
  362. package/dist/block.tk.bigwig.ui-DNBJAF72.js +0 -202
  363. package/dist/block.tk.hicstraw-2EIFJX7E.js +0 -814
  364. package/dist/block.tk.junction-UXSO5EJP.js +0 -2355
  365. package/dist/block.tk.junction.textmatrixui-HQ6ZKCHM.js +0 -190
  366. package/dist/block.tk.ld-NEB4F3UG.js +0 -90
  367. package/dist/block.tk.menu-BN4JPJSD.js +0 -1020
  368. package/dist/block.tk.pgv-A4QFVSPF.js +0 -935
  369. package/dist/brainImaging-ESQGNGZH.js +0 -417
  370. package/dist/chat-AY7RCQYY.js +0 -145
  371. package/dist/chat-AY7RCQYY.js.map +0 -7
  372. package/dist/chunk-236ZRGXA.js +0 -297
  373. package/dist/chunk-2DZWOGEH.js +0 -272
  374. package/dist/chunk-2HQJMZNY.js +0 -14
  375. package/dist/chunk-2MRZFUHZ.js +0 -165
  376. package/dist/chunk-2ZEORJCF.js +0 -215
  377. package/dist/chunk-3WA7SJTR.js +0 -82
  378. package/dist/chunk-47HG7LGD.js +0 -133
  379. package/dist/chunk-47X254B7.js +0 -91
  380. package/dist/chunk-4TPDYPGD.js +0 -1098
  381. package/dist/chunk-4TPDYPGD.js.map +0 -7
  382. package/dist/chunk-4WA2H5DE.js +0 -75
  383. package/dist/chunk-4WA2H5DE.js.map +0 -7
  384. package/dist/chunk-4XDKCFFT.js +0 -613
  385. package/dist/chunk-5CJJLBUZ.js +0 -229
  386. package/dist/chunk-5TDKRZN5.js +0 -1931
  387. package/dist/chunk-5TDKRZN5.js.map +0 -7
  388. package/dist/chunk-6MSJ3TLQ.js +0 -1151
  389. package/dist/chunk-7JAFXNAL.js +0 -256
  390. package/dist/chunk-7JAFXNAL.js.map +0 -7
  391. package/dist/chunk-7LKSKJCV.js +0 -480
  392. package/dist/chunk-7P67W6NF.js +0 -190
  393. package/dist/chunk-7RIC35AF.js +0 -129
  394. package/dist/chunk-A76B53VT.js +0 -158
  395. package/dist/chunk-AZ276Z7T.js +0 -2327
  396. package/dist/chunk-B662XJMJ.js +0 -748
  397. package/dist/chunk-BK7GIOC5.js +0 -4924
  398. package/dist/chunk-BK7GIOC5.js.map +0 -7
  399. package/dist/chunk-BP2F2GRB.js +0 -2676
  400. package/dist/chunk-BRO4KZSZ.js +0 -417
  401. package/dist/chunk-BRO4KZSZ.js.map +0 -7
  402. package/dist/chunk-C5YNONHQ.js +0 -144
  403. package/dist/chunk-CT3LPTWW.js +0 -1197
  404. package/dist/chunk-CZTC4MTE.js +0 -161
  405. package/dist/chunk-DA5VGV5L.js +0 -280
  406. package/dist/chunk-DA5VGV5L.js.map +0 -7
  407. package/dist/chunk-DPU66MZ7.js +0 -381
  408. package/dist/chunk-E6NE5IWR.js +0 -102
  409. package/dist/chunk-ECKWM4HB.js +0 -1536
  410. package/dist/chunk-EEX5VPJG.js +0 -467
  411. package/dist/chunk-EIMEUZP2.js +0 -323
  412. package/dist/chunk-ETFPL4UP.js +0 -4172
  413. package/dist/chunk-F3FTQWTA.js +0 -303
  414. package/dist/chunk-F4APZ34G.js +0 -55
  415. package/dist/chunk-FOXJTDTH.js +0 -166
  416. package/dist/chunk-FYTZCTJC.js +0 -1157
  417. package/dist/chunk-FYTZCTJC.js.map +0 -7
  418. package/dist/chunk-GBS5I24E.js +0 -1706
  419. package/dist/chunk-GBS5I24E.js.map +0 -7
  420. package/dist/chunk-GBWRKJAH.js +0 -413
  421. package/dist/chunk-GG67VPVD.js +0 -238
  422. package/dist/chunk-GZ2B634M.js +0 -123
  423. package/dist/chunk-HEFXMCSF.js +0 -6364
  424. package/dist/chunk-I26R4NJJ.js +0 -228
  425. package/dist/chunk-I2GCD26Y.js +0 -55
  426. package/dist/chunk-I2GCD26Y.js.map +0 -7
  427. package/dist/chunk-ICNJQHQZ.js +0 -117
  428. package/dist/chunk-IPAGDFO4.js +0 -80
  429. package/dist/chunk-J2E4FALN.js +0 -1415
  430. package/dist/chunk-JXHU2FIA.js +0 -2789
  431. package/dist/chunk-K7LZ77GD.js +0 -468
  432. package/dist/chunk-K7LZ77GD.js.map +0 -7
  433. package/dist/chunk-KACWSU3U.js +0 -487
  434. package/dist/chunk-KACWSU3U.js.map +0 -7
  435. package/dist/chunk-KGSCQRQ5.js +0 -203
  436. package/dist/chunk-KGYPMYQD.js +0 -1143
  437. package/dist/chunk-L3PMRBTA.js +0 -422
  438. package/dist/chunk-M7QVMSRW.js +0 -293
  439. package/dist/chunk-MG6GRQKO.js +0 -459
  440. package/dist/chunk-N5VBIEH5.js +0 -1412
  441. package/dist/chunk-NRYOB7WU.js +0 -252
  442. package/dist/chunk-NXOWHUR4.js +0 -311
  443. package/dist/chunk-NXOWHUR4.js.map +0 -7
  444. package/dist/chunk-OFQV6PRB.js +0 -1275
  445. package/dist/chunk-OMO754MK.js +0 -177
  446. package/dist/chunk-OQSP66C6.js +0 -226
  447. package/dist/chunk-OS46MR72.js +0 -368
  448. package/dist/chunk-PBJFLQGL.js +0 -142
  449. package/dist/chunk-PMZS3SHH.js +0 -2877
  450. package/dist/chunk-PPJSDC3Z.js +0 -157
  451. package/dist/chunk-QIS45Z4Y.js +0 -2784
  452. package/dist/chunk-RCVZ4L7K.js +0 -402
  453. package/dist/chunk-ROWCKPNW.js +0 -1088
  454. package/dist/chunk-RQUXELHE.js +0 -276
  455. package/dist/chunk-RYRCMHYR.js +0 -196
  456. package/dist/chunk-S7EKSDVS.js +0 -258
  457. package/dist/chunk-SN5QKRXO.js +0 -85
  458. package/dist/chunk-TZRD3FPN.js +0 -634
  459. package/dist/chunk-U5QRRS7K.js +0 -619
  460. package/dist/chunk-UOMRXQNW.js +0 -401
  461. package/dist/chunk-UT6W4ZZL.js +0 -15048
  462. package/dist/chunk-UT6W4ZZL.js.map +0 -7
  463. package/dist/chunk-UZV3QI5M.js +0 -518
  464. package/dist/chunk-VALBVQXS.js +0 -217
  465. package/dist/chunk-VDR5JXI2.js +0 -444
  466. package/dist/chunk-VDR5JXI2.js.map +0 -7
  467. package/dist/chunk-W4D2EYE4.js +0 -95
  468. package/dist/chunk-XATIKUGU.js +0 -142
  469. package/dist/chunk-ZHWC5SJP.js +0 -797
  470. package/dist/chunk-ZHWC5SJP.js.map +0 -7
  471. package/dist/chunk-ZL4CNBYY.js +0 -149
  472. package/dist/chunk-ZQ7L66GP.js +0 -31
  473. package/dist/condition-24HPVH23.js +0 -323
  474. package/dist/controls-5CSAKANR.js +0 -35
  475. package/dist/controls.btns-QLLBCT65.js +0 -10
  476. package/dist/controls.config-H4FMU5LI.js +0 -31
  477. package/dist/correlation-RB77VSXB.js +0 -102
  478. package/dist/cuminc-YZSLH5IO.js +0 -1143
  479. package/dist/cuminc.integration.spec-MZPT3Y5A.js +0 -669
  480. package/dist/customdata.inputui-CBTZFODT.js +0 -278
  481. package/dist/dataDownload-ZTGRVI4Q.js +0 -320
  482. package/dist/dataDownload.integration.spec-Q6GUTUYD.js +0 -184
  483. package/dist/databrowser.ui-V7E6CLUZ.js +0 -426
  484. package/dist/dictionary-RPC5OZMM.js +0 -90
  485. package/dist/e2pca-WDQHMAUM.js +0 -341
  486. package/dist/ep-NAM34BBI.js +0 -1247
  487. package/dist/expclust.gdc.spec-QB4GVDJA.js +0 -298
  488. package/dist/facet-DOXBBIG6.js +0 -437
  489. package/dist/frequencyChart-GLOIGP3T.js +0 -371
  490. package/dist/frequencyChart.integration.spec-B7NBBLH2.js +0 -301
  491. package/dist/geneExpClustering-B4S6GFNT.js +0 -242
  492. package/dist/geneExpression-DMU4AQP6.js +0 -310
  493. package/dist/geneExpression-MVVXRNEY.js +0 -54
  494. package/dist/geneORA-XDAITCQF.js +0 -272
  495. package/dist/geneVariant-N6IGEIRR.js +0 -29
  496. package/dist/geneVariant-QYLA2V6J.js +0 -32
  497. package/dist/genefusion.ui-FRBMNK7V.js +0 -242
  498. package/dist/geneset-GZYNBG7Y.js +0 -186
  499. package/dist/genomeBrowser.spec-WFIVQSE7.js +0 -272
  500. package/dist/grin2-I6GJF35U.js +0 -882
  501. package/dist/grin2-I6GJF35U.js.map +0 -7
  502. package/dist/grin2-ZKNNZXON.js +0 -1547
  503. package/dist/gsea-GFGAEC4K.js +0 -43
  504. package/dist/hierCluster-MF4TI3E4.js +0 -60
  505. package/dist/hierCluster-SDJMQLOQ.js +0 -56
  506. package/dist/hierCluster.config-RMEX3VTC.js +0 -32
  507. package/dist/hierCluster.integration.spec-3H63OHMU.js +0 -389
  508. package/dist/hierCluster.interactivity-4DZBRQ6P.js +0 -45
  509. package/dist/hierCluster.renderers-UOW7BI6N.js +0 -21
  510. package/dist/imagePlot-P2UHJRSL.js +0 -134
  511. package/dist/importPlot-PPCMNVOW.js +0 -8
  512. package/dist/launch.adhoc-RJWUEVRA.js +0 -36
  513. package/dist/leftlabel.sample-OYP6MICL.js +0 -249
  514. package/dist/lollipop-BXQOWLGO.js +0 -159
  515. package/dist/maf-YJJO773K.js +0 -448
  516. package/dist/maf-YJJO773K.js.map +0 -7
  517. package/dist/maftimeline-GHKDDWYR.js +0 -584
  518. package/dist/matrix-FWDLHZYR.js +0 -60
  519. package/dist/matrix-YMJFP53F.js +0 -55
  520. package/dist/matrix.cells-JH7FPY3E.js +0 -30
  521. package/dist/matrix.config-HIHOLDCE.js +0 -33
  522. package/dist/matrix.controls-EKZ543FY.js +0 -31
  523. package/dist/matrix.data-NKAZI2BF.js +0 -35
  524. package/dist/matrix.dom-RGZ52GJ2.js +0 -11
  525. package/dist/matrix.groups-BO53ZXXV.js +0 -26
  526. package/dist/matrix.integration.spec-BXTATNAC.js +0 -2936
  527. package/dist/matrix.interactivity-UGUMKCFN.js +0 -36
  528. package/dist/matrix.layout-WBIF5QTG.js +0 -35
  529. package/dist/matrix.legend-P3GFCXXK.js +0 -22
  530. package/dist/matrix.renderers-I54IHQ3S.js +0 -29
  531. package/dist/matrix.serieses-R2T57OYI.js +0 -21
  532. package/dist/matrix.sort-3GCA2GDU.js +0 -27
  533. package/dist/matrix.sort.unit.spec-AXGPCZZD.js +0 -464
  534. package/dist/matrix.sorterUi-QWRK6OGE.js +0 -18
  535. package/dist/matrix.sorterUi.unit.spec-H7GUVWRJ.js +0 -335
  536. package/dist/mavb-4EECWXYX.js +0 -723
  537. package/dist/mds.fimo-NHZOY43X.js +0 -509
  538. package/dist/mds.samplescatterplot-7A5IZ6W7.js +0 -1541
  539. package/dist/mds.survivalplot-SQDPUFQE.js +0 -474
  540. package/dist/mutationSignature-QH7PZYKL.js +0 -72
  541. package/dist/numericDictTermCluster-X5SGSC5K.js +0 -72
  542. package/dist/oncomatrix-M4C4XPQK.js +0 -287
  543. package/dist/oncomatrix.spec-3C642O7O.js +0 -439
  544. package/dist/plot.2dvaf-TILP7J53.js +0 -368
  545. package/dist/plot.app-DE2UQP2M.js +0 -35
  546. package/dist/plot.barplot-FJHS765K.js +0 -93
  547. package/dist/plot.boxplot-YRSHGNYZ.js +0 -143
  548. package/dist/plot.brainImaging-JV4OUVJY.js +0 -51
  549. package/dist/plot.disco-DBVPBMLG.js +0 -100
  550. package/dist/plot.dzi-O2OA4EBK.js +0 -33
  551. package/dist/plot.ssgq-YFQEZQYK.js +0 -130
  552. package/dist/plot.vaf2cov-YNFP5LJ4.js +0 -250
  553. package/dist/plot.wsi-DJB7TDIS.js +0 -36
  554. package/dist/polar-K5Z5FYKV.js +0 -179
  555. package/dist/profile.spec-A6EADWEC.js +0 -71
  556. package/dist/profileBarchart-EFLPJK2P.js +0 -260
  557. package/dist/profileForms-TG35YNLD.js +0 -365
  558. package/dist/profilePlot-2EW2XVTK.js +0 -50
  559. package/dist/profileRadar-AKUYC2O5.js +0 -256
  560. package/dist/profileRadarFacility-EAT66XTX.js +0 -256
  561. package/dist/qualitative-PHQU5DXE.js +0 -34
  562. package/dist/regression-EOMJRRDO.js +0 -57
  563. package/dist/regression.inputs-LIH5X2JM.js +0 -49
  564. package/dist/regression.inputs.term-OO4RZ3QB.js +0 -49
  565. package/dist/regression.inputs.values.table-E7WCTO2L.js +0 -46
  566. package/dist/regression.integration.spec-62VEQP6X.js +0 -777
  567. package/dist/regression.results-WAHFJ6NA.js +0 -31
  568. package/dist/regression.spec-IBIOTZVX.js +0 -699
  569. package/dist/report-MKDJXHGY.js +0 -220
  570. package/dist/runChart-ETM2EETF.js +0 -54
  571. package/dist/runchart.integration.spec-QFA4XBKB.js +0 -362
  572. package/dist/sampleScatter.spec-N4N7ZGZF.js +0 -193
  573. package/dist/sampleView-JTY3RV7I.js +0 -42
  574. package/dist/samplelst-RRUMBVT6.js +0 -102
  575. package/dist/samplematrix-L37O664Y.js +0 -2189
  576. package/dist/scatter-E5QHW32W.js +0 -55
  577. package/dist/scatter.integration.spec-FNVAJSVU.js +0 -1026
  578. package/dist/selectGenomeWithTklst-J6VXCYGG.js +0 -125
  579. package/dist/singleCellPlot-S6S6CKYX.js +0 -50
  580. package/dist/singlecell-4BMIKFY4.js +0 -80
  581. package/dist/singlecell-B4TNI23F.js +0 -1563
  582. package/dist/snp-PAUQ24NZ.js +0 -73
  583. package/dist/snplocus-HVFYZTEE.js +0 -199
  584. package/dist/spliceevent.a53ss.diagram-GGGHVNBF.js +0 -142
  585. package/dist/spliceevent.exonskip.diagram-HLMFD6LJ.js +0 -268
  586. package/dist/spliceevent.noeventdiagram-CKZ3BZ7Y.js +0 -451
  587. package/dist/ssGSEA-UGT4GH55.js +0 -53
  588. package/dist/stattable-6JWMALGB.js +0 -89
  589. package/dist/summarizeCnvGeneexp-BJOQY62E.js +0 -136
  590. package/dist/summarizeGeneexpSurvival-4HDHL7PE.js +0 -90
  591. package/dist/summarizeMutationDiagnosis-TDWO5CKU.js +0 -32
  592. package/dist/summarizeMutationSurvival-CJJFABOX.js +0 -92
  593. package/dist/summary-WOAXXIHG.js +0 -55
  594. package/dist/summary.integration.spec-GM73ERMN.js +0 -405
  595. package/dist/summaryInput-FD4SONTY.js +0 -170
  596. package/dist/sunburst-3LCJTBRN.js +0 -275
  597. package/dist/survival-A3A7IVXT.js +0 -41
  598. package/dist/survival-XF72VMM6.js +0 -49
  599. package/dist/survival.integration.spec-AU7MCAQV.js +0 -601
  600. package/dist/svgraph-BEMS4JDJ.js +0 -1378
  601. package/dist/svmr-CDEMTZPK.js +0 -3833
  602. package/dist/table-WYF6QCGB.js +0 -193
  603. package/dist/termCollection-BVQMNVY7.js +0 -80
  604. package/dist/termInfo-JXLIVCSO.js +0 -9
  605. package/dist/tk-TGIIJYBO.js +0 -37
  606. package/dist/tp.ui-USYF67P7.js +0 -1450
  607. package/dist/tvs.dtcnv.continuous-7SCTSFK3.js +0 -65
  608. package/dist/tvs.numeric-OLVW6US3.js +0 -355
  609. package/dist/tvs.samplelst-BHZHCX5V.js +0 -95
  610. package/dist/violin-OEOWVIZF.js +0 -47
  611. package/dist/violin.integration.spec-AW2U3RHO.js +0 -1425
  612. package/dist/violin.interactivity-3O2UDNPQ.js +0 -39
  613. package/dist/violin.renderer-W26FA6M7.js +0 -31
  614. package/dist/vocabulary-BIQYDKVY.js +0 -32
  615. /package/dist/{2dmaf-E4NOGWWO.js.map → 2dmaf-6M6QWXAQ.js.map} +0 -0
  616. /package/dist/{AIProjectAdmin-3QDXMCOK.js.map → AIProjectAdmin-2NHMC3IV.js.map} +0 -0
  617. /package/dist/{AppHeader-IFZ57DJE.js.map → AppHeader-CTHEWSZD.js.map} +0 -0
  618. /package/dist/{BoxPlot-GXDTPRA5.js.map → BoxPlot-3U6ZAKKO.js.map} +0 -0
  619. /package/dist/{CorrelationVolcano-S4GUYIPT.js.map → CorrelationVolcano-2ASIR6KY.js.map} +0 -0
  620. /package/dist/{DifferentialAnalysis-YLKYWPUT.js.map → DifferentialAnalysis-C3NYGF7U.js.map} +0 -0
  621. /package/dist/{Disco-OQMP3HRQ.js.map → Disco-2QLBZ3X5.js.map} +0 -0
  622. /package/dist/{Disco.UI-XB3XQP33.js.map → Disco.UI-GPIIPM2P.js.map} +0 -0
  623. /package/dist/{DziViewer-UIRNTFNS.js.map → DziViewer-OHPZOH72.js.map} +0 -0
  624. /package/dist/{GB-KDPJTOLP.js.map → GB-FH6YQGHI.js.map} +0 -0
  625. /package/dist/{HicApp-XJERMLKH.js.map → HicApp-TI2II3SZ.js.map} +0 -0
  626. /package/dist/{NumBinaryEditor-5MWWWNLW.js.map → NumBinaryEditor-O42T63EX.js.map} +0 -0
  627. /package/dist/{NumBinaryEditor.unit.spec-ROGT5FOH.js.map → NumBinaryEditor.unit.spec-UMB2PHT5.js.map} +0 -0
  628. /package/dist/{NumContEditor-RRCB4CKG.js.map → NumContEditor-7NOUKPCV.js.map} +0 -0
  629. /package/dist/{NumContEditor.unit.spec-AJTKOF7W.js.map → NumContEditor.unit.spec-JGXJ2HLE.js.map} +0 -0
  630. /package/dist/{NumCustomBinEditor-3GJITZ7V.js.map → NumCustomBinEditor-6CHN3KX3.js.map} +0 -0
  631. /package/dist/{NumCustomBinEditor.unit.spec-DNBDZSHT.js.map → NumCustomBinEditor.unit.spec-RJPQLE3E.js.map} +0 -0
  632. /package/dist/{NumDiscreteEditor-TARWA6CZ.js.map → NumDiscreteEditor-AFTUKU4K.js.map} +0 -0
  633. /package/dist/{NumDiscreteEditor.unit.spec-TCSLTQ25.js.map → NumDiscreteEditor.unit.spec-GKR6ZNBQ.js.map} +0 -0
  634. /package/dist/{NumRegularBinEditor-QF5ALVV4.js.map → NumRegularBinEditor-UJ5WQPHR.js.map} +0 -0
  635. /package/dist/{NumRegularBinEditor.unit.spec-GFNDBWNM.js.map → NumRegularBinEditor.unit.spec-5HGJQEX7.js.map} +0 -0
  636. /package/dist/{NumSplineEditor-MOEUXR34.js.map → NumSplineEditor-JANA2DUE.js.map} +0 -0
  637. /package/dist/{NumSplineEditor.unit.spec-XPJOOXS4.js.map → NumSplineEditor.unit.spec-UYAMAKZD.js.map} +0 -0
  638. /package/dist/{NumericDensity-JDE263EQ.js.map → NumericDensity-YE5R4CNP.js.map} +0 -0
  639. /package/dist/{NumericDensity.unit.spec-RX6UGV56.js.map → NumericDensity.unit.spec-SVEB5U2S.js.map} +0 -0
  640. /package/dist/{NumericHandler-XM7LUYHN.js.map → NumericHandler-WW4M7YW2.js.map} +0 -0
  641. /package/dist/{NumericHandler.unit.spec-5EYRMII7.js.map → NumericHandler.unit.spec-2BWDFO53.js.map} +0 -0
  642. /package/dist/{SC-Z4KBNK7P.js.map → SC-UGJGMBL7.js.map} +0 -0
  643. /package/dist/{Volcano-WYJLKM4K.js.map → Volcano-IU76MEIL.js.map} +0 -0
  644. /package/dist/{WSIViewer-3RMG3VOA.js.map → WSIViewer-3S7N4UDO.js.map} +0 -0
  645. /package/dist/{WsiSamplesPlot-PAWNKI7R.js.map → WsiSamplesPlot-4CAOHWCL.js.map} +0 -0
  646. /package/dist/{adSandbox-7H5H46SE.js.map → adSandbox-AEBS3RTL.js.map} +0 -0
  647. /package/dist/{alphaGenome-PODWDV5T.js.map → alphaGenome-F2PB4SGI.js.map} +0 -0
  648. /package/dist/{app-JPURIGQW.js.map → app-6SKETLMT.js.map} +0 -0
  649. /package/dist/{app-YL7S55T5.js.map → app-GBEF2HBR.js.map} +0 -0
  650. /package/dist/{bam-XEO47VYA.js.map → bam-5SE6XQJV.js.map} +0 -0
  651. /package/dist/{barchart-B5M6SSJH.js.map → barchart-AUSOT2XB.js.map} +0 -0
  652. /package/dist/{barchart.data-6A6WVV4Y.js.map → barchart.data-GYCNBRPY.js.map} +0 -0
  653. /package/dist/{barchart.events-2GNB5KWY.js.map → barchart.events-QTSWNYXO.js.map} +0 -0
  654. /package/dist/{barchart.integration.spec-JEOTKIWC.js.map → barchart.integration.spec-LORJLJVX.js.map} +0 -0
  655. /package/dist/{bars.renderer-NLUBMQEO.js.map → bars.renderer-4N4QOUNI.js.map} +0 -0
  656. /package/dist/{bars.settings-UQZ63KU4.js.map → bars.settings-SDU7PZOS.js.map} +0 -0
  657. /package/dist/{block-B7WMYLPO.js.map → block-QLSIELXK.js.map} +0 -0
  658. /package/dist/{block.init-KCIXEYQC.js.map → block.init-OOLEA6ZK.js.map} +0 -0
  659. /package/dist/{block.mds.expressionrank-RYZXAH5Y.js.map → block.mds.expressionrank-D2KUISXZ.js.map} +0 -0
  660. /package/dist/{block.mds.geneboxplot-LNWUEI6N.js.map → block.mds.geneboxplot-AMYBWXPS.js.map} +0 -0
  661. /package/dist/{block.mds.junction-CVIY7QMD.js.map → block.mds.junction-OG335MBK.js.map} +0 -0
  662. /package/dist/{block.mds.svcnv-EUGWHSCA.js.map → block.mds.svcnv-WYDBQ6FV.js.map} +0 -0
  663. /package/dist/{block.svg-QBLNIGUF.js.map → block.svg-OH73245R.js.map} +0 -0
  664. /package/dist/{block.tk.aicheck-U6NG22FX.js.map → block.tk.aicheck-CG5THFW2.js.map} +0 -0
  665. /package/dist/{block.tk.ase-U3TRZAOH.js.map → block.tk.ase-G2L3G5MQ.js.map} +0 -0
  666. /package/dist/{block.tk.bam-6Y6YFVR2.js.map → block.tk.bam-DXWCA6EU.js.map} +0 -0
  667. /package/dist/{block.tk.bedgraphdot-O3VCFX6K.js.map → block.tk.bedgraphdot-LF3TFPNL.js.map} +0 -0
  668. /package/dist/{block.tk.bigwig.ui-DNBJAF72.js.map → block.tk.bigwig.ui-JKXZ3VDF.js.map} +0 -0
  669. /package/dist/{block.tk.hicstraw-2EIFJX7E.js.map → block.tk.hicstraw-ZK4RKFB6.js.map} +0 -0
  670. /package/dist/{block.tk.junction-UXSO5EJP.js.map → block.tk.junction-ZB7Q2NLB.js.map} +0 -0
  671. /package/dist/{block.tk.junction.textmatrixui-HQ6ZKCHM.js.map → block.tk.junction.textmatrixui-ZYNQWKIW.js.map} +0 -0
  672. /package/dist/{block.tk.ld-NEB4F3UG.js.map → block.tk.ld-7H64HGER.js.map} +0 -0
  673. /package/dist/{block.tk.menu-BN4JPJSD.js.map → block.tk.menu-WFVKAH74.js.map} +0 -0
  674. /package/dist/{block.tk.pgv-A4QFVSPF.js.map → block.tk.pgv-632LLSBI.js.map} +0 -0
  675. /package/dist/{brainImaging-ESQGNGZH.js.map → brainImaging-AEPTHIQF.js.map} +0 -0
  676. /package/dist/{chunk-U5QRRS7K.js.map → chunk-22O6F463.js.map} +0 -0
  677. /package/dist/{chunk-NRYOB7WU.js.map → chunk-2HJ7OD7H.js.map} +0 -0
  678. /package/dist/{chunk-PMZS3SHH.js.map → chunk-2MN5JLZB.js.map} +0 -0
  679. /package/dist/{chunk-7LKSKJCV.js.map → chunk-37CK5IGW.js.map} +0 -0
  680. /package/dist/{chunk-IPAGDFO4.js.map → chunk-3JFEWVHR.js.map} +0 -0
  681. /package/dist/{chunk-47HG7LGD.js.map → chunk-3MGBC64I.js.map} +0 -0
  682. /package/dist/{chunk-HEFXMCSF.js.map → chunk-3NWLWH4G.js.map} +0 -0
  683. /package/dist/{chunk-XATIKUGU.js.map → chunk-4GKQ5PWY.js.map} +0 -0
  684. /package/dist/{chunk-OQSP66C6.js.map → chunk-4PHD5H4A.js.map} +0 -0
  685. /package/dist/{chunk-GBWRKJAH.js.map → chunk-56IFQMJK.js.map} +0 -0
  686. /package/dist/{chunk-A76B53VT.js.map → chunk-5DMFTXUZ.js.map} +0 -0
  687. /package/dist/{chunk-W4D2EYE4.js.map → chunk-5QJDZHRU.js.map} +0 -0
  688. /package/dist/{chunk-OFQV6PRB.js.map → chunk-5WAVKWL6.js.map} +0 -0
  689. /package/dist/{chunk-C5YNONHQ.js.map → chunk-6ISTNHM6.js.map} +0 -0
  690. /package/dist/{chunk-ECKWM4HB.js.map → chunk-6VQ4C735.js.map} +0 -0
  691. /package/dist/{chunk-5CJJLBUZ.js.map → chunk-74WMSW3E.js.map} +0 -0
  692. /package/dist/{chunk-MG6GRQKO.js.map → chunk-AFU66YOW.js.map} +0 -0
  693. /package/dist/{chunk-2HQJMZNY.js.map → chunk-AUJ2YUXV.js.map} +0 -0
  694. /package/dist/{chunk-UZV3QI5M.js.map → chunk-B65X5UQH.js.map} +0 -0
  695. /package/dist/{chunk-TZRD3FPN.js.map → chunk-B6I64LSV.js.map} +0 -0
  696. /package/dist/{chunk-SN5QKRXO.js.map → chunk-BTYCW3D5.js.map} +0 -0
  697. /package/dist/{chunk-J2E4FALN.js.map → chunk-CCB5KYFQ.js.map} +0 -0
  698. /package/dist/{chunk-EEX5VPJG.js.map → chunk-CKLYFA7H.js.map} +0 -0
  699. /package/dist/{chunk-2DZWOGEH.js.map → chunk-CLYRJ466.js.map} +0 -0
  700. /package/dist/{chunk-3WA7SJTR.js.map → chunk-CPHCZZWT.js.map} +0 -0
  701. /package/dist/{chunk-VALBVQXS.js.map → chunk-CUADOD2T.js.map} +0 -0
  702. /package/dist/{chunk-L3PMRBTA.js.map → chunk-CV6ID6T7.js.map} +0 -0
  703. /package/dist/{chunk-7P67W6NF.js.map → chunk-CWHBWY3B.js.map} +0 -0
  704. /package/dist/{chunk-GG67VPVD.js.map → chunk-D53HBTYQ.js.map} +0 -0
  705. /package/dist/{chunk-RYRCMHYR.js.map → chunk-DKI7YOTJ.js.map} +0 -0
  706. /package/dist/{chunk-2MRZFUHZ.js.map → chunk-DNU4IPD2.js.map} +0 -0
  707. /package/dist/{chunk-AZ276Z7T.js.map → chunk-H6HP4H3U.js.map} +0 -0
  708. /package/dist/{chunk-GZ2B634M.js.map → chunk-HPEMEDXB.js.map} +0 -0
  709. /package/dist/{chunk-6MSJ3TLQ.js.map → chunk-HUDESZGX.js.map} +0 -0
  710. /package/dist/{chunk-FOXJTDTH.js.map → chunk-J7IU77CA.js.map} +0 -0
  711. /package/dist/{chunk-DPU66MZ7.js.map → chunk-JMO7ENSD.js.map} +0 -0
  712. /package/dist/{chunk-7RIC35AF.js.map → chunk-JTPN3BRG.js.map} +0 -0
  713. /package/dist/{chunk-EIMEUZP2.js.map → chunk-KCAMFDJH.js.map} +0 -0
  714. /package/dist/{chunk-OMO754MK.js.map → chunk-LD45BCVM.js.map} +0 -0
  715. /package/dist/{chunk-N5VBIEH5.js.map → chunk-LMELY5Z2.js.map} +0 -0
  716. /package/dist/{chunk-2ZEORJCF.js.map → chunk-LVQK62CV.js.map} +0 -0
  717. /package/dist/{chunk-PPJSDC3Z.js.map → chunk-MCVLRF66.js.map} +0 -0
  718. /package/dist/{chunk-4XDKCFFT.js.map → chunk-MLD7DW5I.js.map} +0 -0
  719. /package/dist/{chunk-JXHU2FIA.js.map → chunk-NEF7LGNE.js.map} +0 -0
  720. /package/dist/{chunk-UOMRXQNW.js.map → chunk-OARG7PAV.js.map} +0 -0
  721. /package/dist/{chunk-B662XJMJ.js.map → chunk-OGWY4MOB.js.map} +0 -0
  722. /package/dist/{chunk-QIS45Z4Y.js.map → chunk-PQD6K5W5.js.map} +0 -0
  723. /package/dist/{chunk-47X254B7.js.map → chunk-Q4FYGFTQ.js.map} +0 -0
  724. /package/dist/{chunk-F3FTQWTA.js.map → chunk-RA2KI64U.js.map} +0 -0
  725. /package/dist/{chunk-ROWCKPNW.js.map → chunk-RHHLAKYS.js.map} +0 -0
  726. /package/dist/{chunk-S7EKSDVS.js.map → chunk-RKV3CP4C.js.map} +0 -0
  727. /package/dist/{chunk-OS46MR72.js.map → chunk-RL7RU2V7.js.map} +0 -0
  728. /package/dist/{chunk-CZTC4MTE.js.map → chunk-RQ7CE7SK.js.map} +0 -0
  729. /package/dist/{chunk-KGYPMYQD.js.map → chunk-RX552WU6.js.map} +0 -0
  730. /package/dist/{chunk-RQUXELHE.js.map → chunk-S7V4SFKB.js.map} +0 -0
  731. /package/dist/{chunk-PBJFLQGL.js.map → chunk-SEL5UNRC.js.map} +0 -0
  732. /package/dist/{chunk-236ZRGXA.js.map → chunk-SRBO57AD.js.map} +0 -0
  733. /package/dist/{chunk-CT3LPTWW.js.map → chunk-SYGLOTOV.js.map} +0 -0
  734. /package/dist/{chunk-KGSCQRQ5.js.map → chunk-UZ466XO3.js.map} +0 -0
  735. /package/dist/{chunk-ZL4CNBYY.js.map → chunk-VDF5W47R.js.map} +0 -0
  736. /package/dist/{chunk-ZQ7L66GP.js.map → chunk-WTPVXDJT.js.map} +0 -0
  737. /package/dist/{chunk-I26R4NJJ.js.map → chunk-XRIM2YJZ.js.map} +0 -0
  738. /package/dist/{chunk-F4APZ34G.js.map → chunk-YSWMQO23.js.map} +0 -0
  739. /package/dist/{chunk-RCVZ4L7K.js.map → chunk-ZBZXIWSK.js.map} +0 -0
  740. /package/dist/{chunk-ICNJQHQZ.js.map → chunk-ZFFHOEBE.js.map} +0 -0
  741. /package/dist/{chunk-E6NE5IWR.js.map → chunk-ZG63ZUDE.js.map} +0 -0
  742. /package/dist/{chunk-BP2F2GRB.js.map → chunk-ZGQ3BMLW.js.map} +0 -0
  743. /package/dist/{chunk-M7QVMSRW.js.map → chunk-ZNINQ3FN.js.map} +0 -0
  744. /package/dist/{chunk-ETFPL4UP.js.map → chunk-ZQZWM544.js.map} +0 -0
  745. /package/dist/{condition-24HPVH23.js.map → condition-4FVKPSQ2.js.map} +0 -0
  746. /package/dist/{controls-5CSAKANR.js.map → controls-ZWBN566I.js.map} +0 -0
  747. /package/dist/{controls.btns-QLLBCT65.js.map → controls.btns-H4TWTHTW.js.map} +0 -0
  748. /package/dist/{controls.config-H4FMU5LI.js.map → controls.config-YU4W3CDL.js.map} +0 -0
  749. /package/dist/{correlation-RB77VSXB.js.map → correlation-VADB4SQO.js.map} +0 -0
  750. /package/dist/{cuminc-YZSLH5IO.js.map → cuminc-4BXE2YS6.js.map} +0 -0
  751. /package/dist/{cuminc.integration.spec-MZPT3Y5A.js.map → cuminc.integration.spec-XQREKHVA.js.map} +0 -0
  752. /package/dist/{customdata.inputui-CBTZFODT.js.map → customdata.inputui-VBQWT3M7.js.map} +0 -0
  753. /package/dist/{dataDownload-ZTGRVI4Q.js.map → dataDownload-QIZKBKH7.js.map} +0 -0
  754. /package/dist/{dataDownload.integration.spec-Q6GUTUYD.js.map → dataDownload.integration.spec-MLJEHLYD.js.map} +0 -0
  755. /package/dist/{databrowser.ui-V7E6CLUZ.js.map → databrowser.ui-6UIR4ULJ.js.map} +0 -0
  756. /package/dist/{dictionary-RPC5OZMM.js.map → dictionary-FLWIWAC6.js.map} +0 -0
  757. /package/dist/{e2pca-WDQHMAUM.js.map → e2pca-NKWSJRXM.js.map} +0 -0
  758. /package/dist/{ep-NAM34BBI.js.map → ep-EPN3AR6D.js.map} +0 -0
  759. /package/dist/{expclust.gdc.spec-QB4GVDJA.js.map → expclust.gdc.spec-ZRUH5E6E.js.map} +0 -0
  760. /package/dist/{facet-DOXBBIG6.js.map → facet-BM7SLACF.js.map} +0 -0
  761. /package/dist/{frequencyChart-GLOIGP3T.js.map → frequencyChart-HBXRIBAW.js.map} +0 -0
  762. /package/dist/{frequencyChart.integration.spec-B7NBBLH2.js.map → frequencyChart.integration.spec-YJUYZWM6.js.map} +0 -0
  763. /package/dist/{geneExpClustering-B4S6GFNT.js.map → geneExpClustering-4VD5PAWN.js.map} +0 -0
  764. /package/dist/{geneExpression-MVVXRNEY.js.map → geneExpression-6OT2Y4P6.js.map} +0 -0
  765. /package/dist/{geneExpression-DMU4AQP6.js.map → geneExpression-EAMEZXJQ.js.map} +0 -0
  766. /package/dist/{geneORA-XDAITCQF.js.map → geneORA-RI2AG7JT.js.map} +0 -0
  767. /package/dist/{geneVariant-N6IGEIRR.js.map → geneVariant-FYYEOTWA.js.map} +0 -0
  768. /package/dist/{geneVariant-QYLA2V6J.js.map → geneVariant-PAKVDVC4.js.map} +0 -0
  769. /package/dist/{genefusion.ui-FRBMNK7V.js.map → genefusion.ui-QWC42XWQ.js.map} +0 -0
  770. /package/dist/{geneset-GZYNBG7Y.js.map → geneset-XA6IWP3Q.js.map} +0 -0
  771. /package/dist/{genomeBrowser.spec-WFIVQSE7.js.map → genomeBrowser.spec-LRKXWXNT.js.map} +0 -0
  772. /package/dist/{grin2-ZKNNZXON.js.map → grin2-WLB7BY3S.js.map} +0 -0
  773. /package/dist/{gsea-GFGAEC4K.js.map → gsea-ZM4WOPSQ.js.map} +0 -0
  774. /package/dist/{hierCluster-MF4TI3E4.js.map → hierCluster-LD43LLRC.js.map} +0 -0
  775. /package/dist/{hierCluster-SDJMQLOQ.js.map → hierCluster-ZGYRS2WV.js.map} +0 -0
  776. /package/dist/{hierCluster.config-RMEX3VTC.js.map → hierCluster.config-O5HUOFNH.js.map} +0 -0
  777. /package/dist/{hierCluster.integration.spec-3H63OHMU.js.map → hierCluster.integration.spec-37UNKHTH.js.map} +0 -0
  778. /package/dist/{hierCluster.interactivity-4DZBRQ6P.js.map → hierCluster.interactivity-B27ETKRP.js.map} +0 -0
  779. /package/dist/{hierCluster.renderers-UOW7BI6N.js.map → hierCluster.renderers-GWFH5ZX7.js.map} +0 -0
  780. /package/dist/{imagePlot-P2UHJRSL.js.map → imagePlot-LJZVGNDJ.js.map} +0 -0
  781. /package/dist/{importPlot-PPCMNVOW.js.map → importPlot-RMVENQRD.js.map} +0 -0
  782. /package/dist/{launch.adhoc-RJWUEVRA.js.map → launch.adhoc-S3XHRSLN.js.map} +0 -0
  783. /package/dist/{leftlabel.sample-OYP6MICL.js.map → leftlabel.sample-J6PCA3UB.js.map} +0 -0
  784. /package/dist/{lollipop-BXQOWLGO.js.map → lollipop-OZTV4C7A.js.map} +0 -0
  785. /package/dist/{maftimeline-GHKDDWYR.js.map → maftimeline-6F2LQJU6.js.map} +0 -0
  786. /package/dist/{matrix-FWDLHZYR.js.map → matrix-FIXOFAB4.js.map} +0 -0
  787. /package/dist/{matrix-YMJFP53F.js.map → matrix-O5KPDLM2.js.map} +0 -0
  788. /package/dist/{matrix.cells-JH7FPY3E.js.map → matrix.cells-SCLZA3P4.js.map} +0 -0
  789. /package/dist/{matrix.config-HIHOLDCE.js.map → matrix.config-WG7HFJL4.js.map} +0 -0
  790. /package/dist/{matrix.controls-EKZ543FY.js.map → matrix.controls-QQLBUUYP.js.map} +0 -0
  791. /package/dist/{matrix.data-NKAZI2BF.js.map → matrix.data-6JLF5HVI.js.map} +0 -0
  792. /package/dist/{matrix.dom-RGZ52GJ2.js.map → matrix.dom-QO7BXZ27.js.map} +0 -0
  793. /package/dist/{matrix.groups-BO53ZXXV.js.map → matrix.groups-QMZMZ6Q7.js.map} +0 -0
  794. /package/dist/{matrix.integration.spec-BXTATNAC.js.map → matrix.integration.spec-ZJYWNQ57.js.map} +0 -0
  795. /package/dist/{matrix.interactivity-UGUMKCFN.js.map → matrix.interactivity-ZZY5ET4E.js.map} +0 -0
  796. /package/dist/{matrix.layout-WBIF5QTG.js.map → matrix.layout-XKFB4PKY.js.map} +0 -0
  797. /package/dist/{matrix.legend-P3GFCXXK.js.map → matrix.legend-CS6DNC5V.js.map} +0 -0
  798. /package/dist/{matrix.renderers-I54IHQ3S.js.map → matrix.renderers-4LST6PBA.js.map} +0 -0
  799. /package/dist/{matrix.serieses-R2T57OYI.js.map → matrix.serieses-3SERD6CV.js.map} +0 -0
  800. /package/dist/{matrix.sort-3GCA2GDU.js.map → matrix.sort-UVS6WHIS.js.map} +0 -0
  801. /package/dist/{matrix.sort.unit.spec-AXGPCZZD.js.map → matrix.sort.unit.spec-CTSUNUWB.js.map} +0 -0
  802. /package/dist/{matrix.sorterUi-QWRK6OGE.js.map → matrix.sorterUi-JDGLTLJM.js.map} +0 -0
  803. /package/dist/{matrix.sorterUi.unit.spec-H7GUVWRJ.js.map → matrix.sorterUi.unit.spec-VQFMHIYI.js.map} +0 -0
  804. /package/dist/{mavb-4EECWXYX.js.map → mavb-ECQ2CQ7F.js.map} +0 -0
  805. /package/dist/{mds.fimo-NHZOY43X.js.map → mds.fimo-JDYDT5NK.js.map} +0 -0
  806. /package/dist/{mds.samplescatterplot-7A5IZ6W7.js.map → mds.samplescatterplot-PEJBVSTO.js.map} +0 -0
  807. /package/dist/{mds.survivalplot-SQDPUFQE.js.map → mds.survivalplot-GYK6VRQT.js.map} +0 -0
  808. /package/dist/{mutationSignature-QH7PZYKL.js.map → mutationSignature-43SECPTY.js.map} +0 -0
  809. /package/dist/{numericDictTermCluster-X5SGSC5K.js.map → numericDictTermCluster-2ER4FUKO.js.map} +0 -0
  810. /package/dist/{oncomatrix-M4C4XPQK.js.map → oncomatrix-ZXDJMLN3.js.map} +0 -0
  811. /package/dist/{oncomatrix.spec-3C642O7O.js.map → oncomatrix.spec-HOPRIG3I.js.map} +0 -0
  812. /package/dist/{plot.2dvaf-TILP7J53.js.map → plot.2dvaf-Y4SZUHLD.js.map} +0 -0
  813. /package/dist/{plot.app-DE2UQP2M.js.map → plot.app-W5Z3C7P5.js.map} +0 -0
  814. /package/dist/{plot.barplot-FJHS765K.js.map → plot.barplot-B2PRZDKV.js.map} +0 -0
  815. /package/dist/{plot.boxplot-YRSHGNYZ.js.map → plot.boxplot-J7ET34FY.js.map} +0 -0
  816. /package/dist/{plot.brainImaging-JV4OUVJY.js.map → plot.brainImaging-ISY4P6RT.js.map} +0 -0
  817. /package/dist/{plot.disco-DBVPBMLG.js.map → plot.disco-D7AL42PW.js.map} +0 -0
  818. /package/dist/{plot.dzi-O2OA4EBK.js.map → plot.dzi-O32LH65U.js.map} +0 -0
  819. /package/dist/{plot.ssgq-YFQEZQYK.js.map → plot.ssgq-WF7262IZ.js.map} +0 -0
  820. /package/dist/{plot.vaf2cov-YNFP5LJ4.js.map → plot.vaf2cov-OB6UKSFQ.js.map} +0 -0
  821. /package/dist/{plot.wsi-DJB7TDIS.js.map → plot.wsi-J5S4YYXN.js.map} +0 -0
  822. /package/dist/{polar-K5Z5FYKV.js.map → polar-LIJORXR6.js.map} +0 -0
  823. /package/dist/{profile.spec-A6EADWEC.js.map → profile.spec-3KE4CREI.js.map} +0 -0
  824. /package/dist/{profileBarchart-EFLPJK2P.js.map → profileBarchart-UQHOJB5V.js.map} +0 -0
  825. /package/dist/{profileForms-TG35YNLD.js.map → profileForms-WTYVTIUN.js.map} +0 -0
  826. /package/dist/{profilePlot-2EW2XVTK.js.map → profilePlot-SOXXEUAT.js.map} +0 -0
  827. /package/dist/{profileRadar-AKUYC2O5.js.map → profileRadar-2OHJ2RIU.js.map} +0 -0
  828. /package/dist/{profileRadarFacility-EAT66XTX.js.map → profileRadarFacility-GHLG3QNG.js.map} +0 -0
  829. /package/dist/{qualitative-PHQU5DXE.js.map → qualitative-B3OY7A7P.js.map} +0 -0
  830. /package/dist/{regression-EOMJRRDO.js.map → regression-HO2TO4XT.js.map} +0 -0
  831. /package/dist/{regression.inputs-LIH5X2JM.js.map → regression.inputs-JN3ZMIOP.js.map} +0 -0
  832. /package/dist/{regression.inputs.term-OO4RZ3QB.js.map → regression.inputs.term-67HVMXFZ.js.map} +0 -0
  833. /package/dist/{regression.inputs.values.table-E7WCTO2L.js.map → regression.inputs.values.table-JXJK2YZT.js.map} +0 -0
  834. /package/dist/{regression.integration.spec-62VEQP6X.js.map → regression.integration.spec-L54ZS5VY.js.map} +0 -0
  835. /package/dist/{regression.results-WAHFJ6NA.js.map → regression.results-3ZSFKUNN.js.map} +0 -0
  836. /package/dist/{regression.spec-IBIOTZVX.js.map → regression.spec-SVWCQX2U.js.map} +0 -0
  837. /package/dist/{report-MKDJXHGY.js.map → report-IHX7XSOI.js.map} +0 -0
  838. /package/dist/{runChart-ETM2EETF.js.map → runChart-QLQMK3OE.js.map} +0 -0
  839. /package/dist/{runchart.integration.spec-QFA4XBKB.js.map → runchart.integration.spec-5NVY5GHR.js.map} +0 -0
  840. /package/dist/{sampleScatter.spec-N4N7ZGZF.js.map → sampleScatter.spec-4Q5CQQWH.js.map} +0 -0
  841. /package/dist/{sampleView-JTY3RV7I.js.map → sampleView-7WHDFHB5.js.map} +0 -0
  842. /package/dist/{samplelst-RRUMBVT6.js.map → samplelst-34GJVLVD.js.map} +0 -0
  843. /package/dist/{samplematrix-L37O664Y.js.map → samplematrix-L2HOSLUT.js.map} +0 -0
  844. /package/dist/{scatter-E5QHW32W.js.map → scatter-X6AAM2LJ.js.map} +0 -0
  845. /package/dist/{scatter.integration.spec-FNVAJSVU.js.map → scatter.integration.spec-QSH3PLBK.js.map} +0 -0
  846. /package/dist/{selectGenomeWithTklst-J6VXCYGG.js.map → selectGenomeWithTklst-AJS2IPPW.js.map} +0 -0
  847. /package/dist/{singleCellPlot-S6S6CKYX.js.map → singleCellPlot-7JEWDVSR.js.map} +0 -0
  848. /package/dist/{singlecell-B4TNI23F.js.map → singlecell-IC5KU72L.js.map} +0 -0
  849. /package/dist/{singlecell-4BMIKFY4.js.map → singlecell-NWANPXWM.js.map} +0 -0
  850. /package/dist/{snp-PAUQ24NZ.js.map → snp-PSRNMTL6.js.map} +0 -0
  851. /package/dist/{snplocus-HVFYZTEE.js.map → snplocus-QCAVDYLR.js.map} +0 -0
  852. /package/dist/{spliceevent.a53ss.diagram-GGGHVNBF.js.map → spliceevent.a53ss.diagram-SGDJKUEC.js.map} +0 -0
  853. /package/dist/{spliceevent.exonskip.diagram-HLMFD6LJ.js.map → spliceevent.exonskip.diagram-BUYTHCK5.js.map} +0 -0
  854. /package/dist/{spliceevent.noeventdiagram-CKZ3BZ7Y.js.map → spliceevent.noeventdiagram-OJZJUHXP.js.map} +0 -0
  855. /package/dist/{ssGSEA-UGT4GH55.js.map → ssGSEA-UUZG57MF.js.map} +0 -0
  856. /package/dist/{stattable-6JWMALGB.js.map → stattable-324FS2HA.js.map} +0 -0
  857. /package/dist/{summarizeCnvGeneexp-BJOQY62E.js.map → summarizeCnvGeneexp-ZVZYWP43.js.map} +0 -0
  858. /package/dist/{summarizeGeneexpSurvival-4HDHL7PE.js.map → summarizeGeneexpSurvival-7XJRMT6M.js.map} +0 -0
  859. /package/dist/{summarizeMutationDiagnosis-TDWO5CKU.js.map → summarizeMutationDiagnosis-ZKLXOVY2.js.map} +0 -0
  860. /package/dist/{summarizeMutationSurvival-CJJFABOX.js.map → summarizeMutationSurvival-S4YPGLWA.js.map} +0 -0
  861. /package/dist/{summary-WOAXXIHG.js.map → summary-RVG7JL6Y.js.map} +0 -0
  862. /package/dist/{summary.integration.spec-GM73ERMN.js.map → summary.integration.spec-SCD35GO4.js.map} +0 -0
  863. /package/dist/{summaryInput-FD4SONTY.js.map → summaryInput-DMN6DTSW.js.map} +0 -0
  864. /package/dist/{sunburst-3LCJTBRN.js.map → sunburst-QZXYILRC.js.map} +0 -0
  865. /package/dist/{survival-A3A7IVXT.js.map → survival-6CWEBRSF.js.map} +0 -0
  866. /package/dist/{survival-XF72VMM6.js.map → survival-J657VYLI.js.map} +0 -0
  867. /package/dist/{survival.integration.spec-AU7MCAQV.js.map → survival.integration.spec-S5WE4V6M.js.map} +0 -0
  868. /package/dist/{svgraph-BEMS4JDJ.js.map → svgraph-NEKJL24M.js.map} +0 -0
  869. /package/dist/{svmr-CDEMTZPK.js.map → svmr-5RQ5JQF2.js.map} +0 -0
  870. /package/dist/{table-WYF6QCGB.js.map → table-CG6Z6NCJ.js.map} +0 -0
  871. /package/dist/{termCollection-BVQMNVY7.js.map → termCollection-FOQNVXB7.js.map} +0 -0
  872. /package/dist/{termInfo-JXLIVCSO.js.map → termInfo-5USFZGDB.js.map} +0 -0
  873. /package/dist/{tk-TGIIJYBO.js.map → tk-2O7XOVGJ.js.map} +0 -0
  874. /package/dist/{tp.ui-USYF67P7.js.map → tp.ui-S4YUVCZH.js.map} +0 -0
  875. /package/dist/{tvs.dtcnv.continuous-7SCTSFK3.js.map → tvs.dtcnv.continuous-7BPIXZ6C.js.map} +0 -0
  876. /package/dist/{tvs.numeric-OLVW6US3.js.map → tvs.numeric-FCC2EY62.js.map} +0 -0
  877. /package/dist/{tvs.samplelst-BHZHCX5V.js.map → tvs.samplelst-PKGFTULN.js.map} +0 -0
  878. /package/dist/{violin-OEOWVIZF.js.map → violin-C7IBRTYP.js.map} +0 -0
  879. /package/dist/{violin.integration.spec-AW2U3RHO.js.map → violin.integration.spec-WXRD3Z4E.js.map} +0 -0
  880. /package/dist/{violin.interactivity-3O2UDNPQ.js.map → violin.interactivity-BMG4TG5L.js.map} +0 -0
  881. /package/dist/{violin.renderer-W26FA6M7.js.map → violin.renderer-WUNW6ULV.js.map} +0 -0
  882. /package/dist/{vocabulary-BIQYDKVY.js.map → vocabulary-UUNEEBM3.js.map} +0 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../plots/manhattan/manhattan.ts", "../plots/grin2/grin2.ts"],
4
+ "sourcesContent": ["import { scaleLinear } from 'd3-scale'\nimport * as d3axis from 'd3-axis'\nimport { select } from 'd3-selection'\nimport { Menu, icons, axisstyle, table2col, renderTable, sayerror } from '#dom'\nimport { to_svg } from '#src/client'\nimport { quadtree, type Quadtree } from 'd3-quadtree'\nimport type { ManhattanPoint } from './manhattanTypes'\nimport { get$id } from '#termsetting'\n\n/**\n * Searches a quadtree for all points within a specified radius of target coordinates.\n *\n * @param {Object} quadtree - D3 quadtree containing ManhattanPoint data\n * @param {number} mx - Target x coordinate (in pixels)\n * @param {number} my - Target y coordinate (in pixels)\n * @param {number} hitRadius - Search radius (in pixels)\n * @returns {Array<{point: ManhattanPoint, distance: number}>} Array of points within radius with their distances\n */\nfunction findPointsInRadius(\n\tquadtree: Quadtree<ManhattanPoint>,\n\tmx: number,\n\tmy: number,\n\thitRadius: number\n): Array<{ point: ManhattanPoint; distance: number }> {\n\tconst candidates: Array<{ point: ManhattanPoint; distance: number }> = []\n\n\tquadtree.visit((node, x1, y1, x2, y2) => {\n\t\t// Skip this node if it's outside the search radius\n\t\tif (x1 > mx + hitRadius || x2 < mx - hitRadius || y1 > my + hitRadius || y2 < my - hitRadius) {\n\t\t\treturn true // Skip this branch\n\t\t}\n\n\t\t// If this is a leaf node, check the point\n\t\tif (!node.length) {\n\t\t\tconst point = node.data\n\t\t\tif (point) {\n\t\t\t\tconst px = point.pixel_x\n\t\t\t\tconst py = point.pixel_y\n\t\t\t\tconst distance = Math.sqrt((mx - px) ** 2 + (my - py) ** 2)\n\n\t\t\t\tif (distance <= hitRadius) {\n\t\t\t\t\tcandidates.push({ point, distance })\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn false // Don't stop early - check all nodes in radius\n\t})\n\n\treturn candidates\n}\n\n/**\n * Creates an interactive Manhattan plot on top of a PNG background plot image.\n *\n * @param {Object} div - div element to contain the plot\n * @param {Object} data - Plot data\n * @param {Object} settings - Display configuration options:\n * @param {number} [settings.plotWidth=500] - Plot area width\n * @param {number} [settings.plotHeight=200] - Plot area height\n * @param {boolean} [settings.showLegend=true] - Whether to display legend\n * @param {boolean} [settings.showDownload=true] - Whether to show download button\n * @param {boolean} [settings.showInteractiveDots=true] - Whether to show hoverable data points\n * @param {number} [settings.yAxisX=70] - Y-axis positioning\n * @param {number} [settings.yAxisSpace=40] - Space between Y-axis and plot\n * @param {number} [settings.yAxisY=40] - Top margin\n * @param {number} [settings.fontSize=12] - Base font size\n * @param {number} [settings.pngDotRadius=2] - Radius of dots in PNG plot\n * @param {number} [settings.legendItemWidth=80] - Horizontal space per legend item\n * @param {number} [settings.legendDotRadius=3] - Size of legend dots\n * @param {number} [settings.legendRightOffset=15] - Offset from right edge\n * @param {number} [settings.legendTextOffset=12] - Distance between dot and text\n * @param {number} [settings.legendVerticalOffset=4] - Vertical offset for legend items\n * @param {number} [settings.legendFontSize=12] - Font size for legend text\n * @param {number} [settings.interactiveDotRadius=2] - Radius of interactive dots\n * @param {number} [settings.xAxisLabelPad=20] - Amount of padding we give for x-axis title padding\n * @param {number} [settings.interactiveDotStrokeWidth=1] - Stroke width for interactive dots\n * @param {string} [settings.axisColor='#545454'] - Color for y-axis\n * @param {boolean} [settings.showYAxisLine=true] - Whether to show y-axis line\n * @param {number} [settings.interactiveDotsCap=5000] - Interactive dots cap\n * @param {number} [settings.maxTooltipGenes=5] - Maximum number of genes to show in tooltip\n * @param {Object} [app] - Optional app context for dispatching events\n *\n *\n * @description\n * Renders a genomic Manhattan plot by overlaying interactive elements on the base PNG plot image.\n * Features include chromosome labels, legend, hoverable data points with tooltips,\n * and proper axis scaling. The plot combines a static PNG plot image of all points with dynamic SVG elements\n * including axes, labels, legend, and top genes (represented as interactive dots) for detailed information on hover.\n */\n\nexport function plotManhattan(div: any, data: any, settings: any, app?: any) {\n\t// Get our settings\n\tsettings = {\n\t\t...settings\n\t}\n\n\t// Check size of interactive data\n\tlet interactivePoints = data.plotData.points\n\tif (data.plotData.points.length > settings.interactiveDotsCap) {\n\t\t// Sort points by y value (-log10(q-value)) descending and take top N up to interactiveDotsCap\n\t\tinteractivePoints = data.plotData.points.sort((a: any, b: any) => b.y - a.y).slice(0, settings.interactiveDotsCap)\n\t}\n\n\t// Set the positioning up for download button to work properly\n\tdiv.style('position', 'relative')\n\n\t// Create tooltip menu\n\tconst geneTip = new Menu({ padding: '' })\n\t// Create click menu for showing all nearby genes\n\tlet clickMenuIsShown = false\n\tconst clickMenu = new Menu({\n\t\tpadding: '',\n\t\tonHide: () => {\n\t\t\tclickMenuIsShown = false\n\t\t}\n\t})\n\n\tconst svg = div\n\t\t.append('svg')\n\t\t.attr('data-testid', 'sjpp-manhattan')\n\t\t.attr('width', settings.plotWidth + 2 * settings.pngDotRadius + settings.yAxisX + settings.yAxisSpace)\n\t\t.attr('height', settings.plotHeight + 2 * settings.pngDotRadius + settings.yAxisY * 4) // Extra space for x-axis labels, legend, and title\n\n\t// Add y-axis\n\t// yPlot \u2192 full padded scale, aligns exactly with PNG coordinates\n\t// yAxisScale \u2192 trimmed scale for axis labels, ignores PNG padding\n\t// --- Y-Axis Setup ---\n\t// This section builds two linked scales:\n\t//\n\t// 1) yPlot \u2192 full PNG-aligned scale (includes padding added by Rust)\n\t// 2) yAxisScale \u2192 visual axis scale (no padding; shows only real data values)\n\t//\n\t// The reason for two scales is that the PNG image itself was rendered\n\t// with top/bottom padding for dot radius. We need one scale to stay\n\t// pixel-perfect with the PNG (for dots, overlays, etc.), and another\n\t// scale to make the visible y-axis line up only with the *real* data region.\n\n\t// 1) yPlot: true positioning scale used for all pixel-aligned elements\n\t// - Domain = padded range from Rust (includes buffer above/below real data)\n\t// - Range = full PNG pixel height (0 is top, png_height is bottom)\n\tconst yPlot = scaleLinear()\n\t\t.domain([data.plotData.y_min, data.plotData.y_max]) // padded domain from Rust\n\t\t.range([settings.plotHeight + 2 * settings.pngDotRadius, 0]) // full PNG height\n\n\t// 2) yAxisScale: used only for the visible axis labels/ticks\n\t// - Domain = true data values (no padding)\n\t// - Range = subset of pixel space between yPlot(0) and yPlot(realMax [data.plotData.y_max - data.plotData.png_dot_radius])\n\t// so the axis sits entirely within the real data area\n\tconst yAxisScale = scaleLinear()\n\t\t.domain([0, data.plotData.y_max - settings.pngDotRadius])\n\t\t.range([yPlot(0), yPlot(data.plotData.y_max - settings.pngDotRadius)])\n\n\t// Axis group\n\tconst axisG = svg\n\t\t.append('g')\n\t\t.attr('transform', `translate(${settings.yAxisX + settings.yAxisSpace - settings.yAxisPad},${settings.yAxisY})`)\n\n\taxisG.call(\n\t\td3axis.axisLeft(yAxisScale).tickSizeOuter(0) // removes top/bottom cap lines for clean look\n\t)\n\n\taxisstyle({\n\t\taxis: axisG,\n\t\tcolor: settings.axisColor,\n\t\tfontsize: settings.fontSize + 2,\n\t\tshowline: settings.showYAxisLine\n\t})\n\n\t// Add y-axis label\n\tsvg\n\t\t.append('text')\n\t\t.attr('x', -((settings.plotHeight + 2 * settings.pngDotRadius) / 2) - settings.yAxisY)\n\t\t.attr('y', settings.yAxisX / 2)\n\t\t.attr('transform', 'rotate(-90)')\n\t\t.attr('text-anchor', 'middle')\n\t\t.attr('font-size', `${settings.fontSize + 4}px`)\n\t\t.attr('fill', 'black')\n\t\t.text('-log\u2081\u2080(q-value)')\n\n\t// Add png image\n\tsvg\n\t\t.append('image')\n\t\t.attr('transform', `translate(${settings.yAxisX + settings.yAxisSpace},${settings.yAxisY})`)\n\t\t.attr('width', settings.plotWidth + 2 * settings.pngDotRadius)\n\t\t.attr('height', settings.plotHeight + 2 * settings.pngDotRadius)\n\t\t.attr('href', `data:image/png;base64,${data.pngImg || data.png}`)\n\n\t// Create scales for positioning elements\n\tconst xScale = scaleLinear()\n\t\t.domain([-data.plotData.x_buffer, data.plotData.total_genome_length + data.plotData.x_buffer])\n\t\t.range([0, settings.plotWidth + 2 * settings.pngDotRadius])\n\n\t// Add interactive dots layer\n\tif (settings.showInteractiveDots && data.plotData.points && data.plotData.points.length > 0) {\n\t\t// Create a group for hover circles inside the SVG\n\t\tconst pointsLayer = svg\n\t\t\t.append('g')\n\t\t\t.attr('transform', `translate(${settings.yAxisX + settings.yAxisSpace},${settings.yAxisY})`)\n\n\t\t// Create cover as a sibling div positioned over the plot area\n\t\t// This avoids mouse event issues when nested inside SVG\n\t\tconst cover = select(svg.node().parentNode as HTMLElement)\n\t\t\t.append('div')\n\t\t\t.style('position', 'absolute')\n\t\t\t.style('left', `${settings.yAxisX + settings.yAxisSpace}px`)\n\t\t\t.style('top', `${settings.yAxisY}px`)\n\t\t\t.style('width', `${settings.plotWidth + 2 * settings.pngDotRadius}px`)\n\t\t\t.style('height', `${settings.plotHeight + 2 * settings.pngDotRadius}px`)\n\t\t\t.style('pointer-events', 'all')\n\n\t\t// Track which dots are currently highlighted\n\t\tlet highlightedDots: ManhattanPoint[] = []\n\n\t\tconst normalizedPoints = interactivePoints\n\n\t\tconst pointQuadtree = quadtree<ManhattanPoint>()\n\t\t\t.x(d => d.pixel_x)\n\t\t\t.y(d => d.pixel_y)\n\t\t\t.addAll(normalizedPoints)\n\n\t\tcover\n\t\t\t.on('mousemove', event => {\n\t\t\t\t// Don't show hover tooltip if click menu is open\n\t\t\t\tif (clickMenuIsShown) return\n\t\t\t\t// Get mouse position relative to the cover div\n\t\t\t\tconst rect = (cover.node() as HTMLElement).getBoundingClientRect()\n\t\t\t\tconst mx = event.clientX - rect.left\n\t\t\t\tconst my = event.clientY - rect.top\n\n\t\t\t\t// Find all dots within hit radius\n\t\t\t\t// TODO: Make hit radius user configurable with its own setting\n\t\t\t\tconst hitRadius = settings.pngDotRadius + 3\n\n\t\t\t\t// Find all points within hit radius with their distances\n\t\t\t\tconst candidates = findPointsInRadius(pointQuadtree, mx, my, hitRadius)\n\n\t\t\t\t// Sort by distance and take the closest points based on settings.maxTooltipGenes setting\n\t\t\t\tcandidates.sort((a, b) => a.distance - b.distance)\n\t\t\t\tconst nearbyDots = candidates.slice(0, settings.maxTooltipGenes).map(c => c.point)\n\t\t\t\tconst additionalCount = candidates.length - settings.maxTooltipGenes\n\n\t\t\t\t// Always remove old circles first\n\t\t\t\tpointsLayer.selectAll('.hover-circle').remove()\n\n\t\t\t\tif (nearbyDots.length > 0) {\n\t\t\t\t\t// Add hover circles for all nearby dots\n\t\t\t\t\tnearbyDots.forEach(d => {\n\t\t\t\t\t\tpointsLayer\n\t\t\t\t\t\t\t.append('circle')\n\t\t\t\t\t\t\t.attr('class', 'hover-circle')\n\t\t\t\t\t\t\t.attr('cx', d.pixel_x)\n\t\t\t\t\t\t\t.attr('cy', d.pixel_y)\n\t\t\t\t\t\t\t.attr('r', settings.pngDotRadius)\n\t\t\t\t\t\t\t.attr('fill', 'none')\n\t\t\t\t\t\t\t.attr('stroke', 'black')\n\t\t\t\t\t\t\t.attr('stroke-width', settings.interactiveDotStrokeWidth)\n\t\t\t\t\t})\n\n\t\t\t\t\thighlightedDots = nearbyDots\n\n\t\t\t\t\t// Show tooltip\n\t\t\t\t\tgeneTip.clear().show(event.clientX, event.clientY)\n\t\t\t\t\tif (nearbyDots.length > 1) {\n\t\t\t\t\t\t// Multiple genes - use renderTable\n\t\t\t\t\t\tconst holder = geneTip.d.append('div').style('margin', '10px')\n\n\t\t\t\t\t\trenderTable({\n\t\t\t\t\t\t\tdiv: holder,\n\t\t\t\t\t\t\theader: { allowSort: true },\n\t\t\t\t\t\t\tcolumns: [\n\t\t\t\t\t\t\t\t{ label: 'Gene' },\n\t\t\t\t\t\t\t\t{ label: `${nearbyDots[0].chrom} pos` },\n\t\t\t\t\t\t\t\t{ label: 'Type' },\n\t\t\t\t\t\t\t\t{ label: '-log\u2081\u2080(q-value)', sortable: true },\n\t\t\t\t\t\t\t\t{ label: 'Subject count', sortable: true }\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\trows: nearbyDots.map(d => [\n\t\t\t\t\t\t\t\t{ value: d.gene },\n\t\t\t\t\t\t\t\t{ html: `<span style=\"font-size:.8em\">${d.start}-${d.end}</span>` },\n\t\t\t\t\t\t\t\t{ html: `<span style=\"color:${d.color}\">\u25CF</span> ${d.type.charAt(0).toUpperCase() + d.type.slice(1)}` },\n\t\t\t\t\t\t\t\t{ value: d.y.toFixed(3) },\n\t\t\t\t\t\t\t\t{ value: d.nsubj }\n\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\tshowLines: false,\n\t\t\t\t\t\t\tshowHeader: true,\n\t\t\t\t\t\t\tstriped: true,\n\t\t\t\t\t\t\tresize: false\n\t\t\t\t\t\t})\n\n\t\t\t\t\t\t// Show message if there are more dots beyond the settings.maxTooltipGenes shown\n\t\t\t\t\t\t// TODO: Make these settings abstracted out and can improve this later\n\t\t\t\t\t\tif (additionalCount > 0) {\n\t\t\t\t\t\t\tholder\n\t\t\t\t\t\t\t\t.append('div')\n\t\t\t\t\t\t\t\t.style('font-size', '0.85em')\n\t\t\t\t\t\t\t\t.style('color', '#666')\n\t\t\t\t\t\t\t\t.style('font-style', 'italic')\n\t\t\t\t\t\t\t\t.text(`and ${additionalCount} more gene${additionalCount > 1 ? 's' : ''}...`)\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Single gene - use table2col format\n\t\t\t\t\t\tconst d = nearbyDots[0]\n\t\t\t\t\t\tconst table = table2col({\n\t\t\t\t\t\t\tholder: geneTip.d.append('div'),\n\t\t\t\t\t\t\tmargin: '10px'\n\t\t\t\t\t\t})\n\t\t\t\t\t\ttable.addRow('Gene', d.gene)\n\t\t\t\t\t\ttable.addRow('Position', `${d.chrom}:${d.start}-${d.end}`)\n\t\t\t\t\t\tconst [t1, t2] = table.addRow()\n\t\t\t\t\t\tt1.text('Type')\n\t\t\t\t\t\tt2.html(`<span style=\"color:${d.color}\">\u25CF</span> ${d.type.charAt(0).toUpperCase() + d.type.slice(1)}`)\n\t\t\t\t\t\ttable.addRow('-log\u2081\u2080(q-value)', d.y.toFixed(3))\n\t\t\t\t\t\ttable.addRow('Subject count', d.nsubj)\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// No dots nearby, hide tooltip\n\t\t\t\t\thighlightedDots = []\n\t\t\t\t\tgeneTip.hide()\n\t\t\t\t}\n\t\t\t})\n\t\t\t.on('mouseleave', () => {\n\t\t\t\t// Remove all hover circles and hide tooltip\n\t\t\t\tpointsLayer.selectAll('.hover-circle').remove()\n\t\t\t\thighlightedDots = []\n\t\t\t\tgeneTip.hide()\n\t\t\t})\n\t\t\t.on('click', event => {\n\t\t\t\t// Don't do anything if no dots nearby or no app context\n\t\t\t\tif (highlightedDots.length === 0 || !app) return\n\n\t\t\t\t// Hide the hover tooltip\n\t\t\t\tgeneTip.hide()\n\n\t\t\t\t// Get ALL candidates within hit radius (reusing the quadtree search)\n\t\t\t\tconst rect = (cover.node() as HTMLElement).getBoundingClientRect()\n\t\t\t\tconst mx = event.clientX - rect.left\n\t\t\t\tconst my = event.clientY - rect.top\n\t\t\t\tconst hitRadius = settings.pngDotRadius + 3\n\n\t\t\t\tconst allCandidates = findPointsInRadius(pointQuadtree, mx, my, hitRadius)\n\n\t\t\t\tallCandidates.sort((a, b) => a.distance - b.distance)\n\t\t\t\tconst allNearbyDots = allCandidates.map(c => c.point)\n\n\t\t\t\tif (allNearbyDots.length === 1) {\n\t\t\t\t\t// Single gene - launch directly\n\t\t\t\t\tcreateLollipopFromGene(allNearbyDots[0].gene, app)\n\t\t\t\t} else if (allNearbyDots.length > 1) {\n\t\t\t\t\t// Multiple genes - show click menu with table\n\t\t\t\t\tclickMenu.clear().show(event.clientX, event.clientY)\n\t\t\t\t\tclickMenuIsShown = true\n\n\t\t\t\t\tconst holder = clickMenu.d.append('div').style('margin', '10px')\n\n\t\t\t\t\t// Header with buttons\n\t\t\t\t\tconst headerDiv = holder\n\t\t\t\t\t\t.append('div')\n\t\t\t\t\t\t.style('display', 'flex')\n\t\t\t\t\t\t.style('align-items', 'center')\n\t\t\t\t\t\t.style('gap', '8px')\n\t\t\t\t\t\t.style('margin-bottom', '8px')\n\n\t\t\t\t\theaderDiv.append('span').style('font-weight', 'bold').text('Select genes:')\n\n\t\t\t\t\t// Matrix button\n\t\t\t\t\tconst matrixBtn = headerDiv\n\t\t\t\t\t\t.append('button')\n\t\t\t\t\t\t.text('Matrix (0)')\n\t\t\t\t\t\t.property('disabled', true)\n\t\t\t\t\t\t.on('click', () => {\n\t\t\t\t\t\t\tmatrixBtn.property('disabled', true)\n\t\t\t\t\t\t\tclickMenu.hide()\n\t\t\t\t\t\t\tcreateMatrixFromGenes(selectedGenes, app)\n\t\t\t\t\t\t})\n\n\t\t\t\t\t// Lollipop button\n\t\t\t\t\tconst lollipopBtn = headerDiv\n\t\t\t\t\t\t.append('button')\n\t\t\t\t\t\t.text('Lollipop')\n\t\t\t\t\t\t.property('disabled', true)\n\t\t\t\t\t\t.on('click', () => {\n\t\t\t\t\t\t\tif (lastTouchedGene) {\n\t\t\t\t\t\t\t\tlollipopBtn.property('disabled', true)\n\t\t\t\t\t\t\t\tclickMenu.hide()\n\t\t\t\t\t\t\t\tcreateLollipopFromGene(lastTouchedGene, app)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\n\t\t\t\t\tlet selectedGenes: string[] = []\n\t\t\t\t\tlet lastTouchedGene: string | null = null\n\n\t\t\t\t\trenderTable({\n\t\t\t\t\t\tdiv: holder,\n\t\t\t\t\t\theader: { allowSort: true },\n\t\t\t\t\t\tcolumns: [\n\t\t\t\t\t\t\t{ label: 'Gene' },\n\t\t\t\t\t\t\t{ label: `${allNearbyDots[0].chrom} pos` },\n\t\t\t\t\t\t\t{ label: 'Type' },\n\t\t\t\t\t\t\t{ label: '-log\u2081\u2080(q-value)', sortable: true },\n\t\t\t\t\t\t\t{ label: 'Subject count', sortable: true }\n\t\t\t\t\t\t],\n\t\t\t\t\t\trows: allNearbyDots.map(d => [\n\t\t\t\t\t\t\t{ value: d.gene },\n\t\t\t\t\t\t\t{ html: `<span style=\"font-size:.8em\">${d.start}-${d.end}</span>` },\n\t\t\t\t\t\t\t{ html: `<span style=\"color:${d.color}\">\u25CF</span> ${d.type.charAt(0).toUpperCase() + d.type.slice(1)}` },\n\t\t\t\t\t\t\t{ value: d.y.toFixed(3) },\n\t\t\t\t\t\t\t{ value: d.nsubj }\n\t\t\t\t\t\t]),\n\t\t\t\t\t\tshowLines: false,\n\t\t\t\t\t\tshowHeader: true,\n\t\t\t\t\t\tstriped: true,\n\t\t\t\t\t\tresize: false,\n\t\t\t\t\t\tnoButtonCallback: (rowIndex: number, checkboxNode: HTMLInputElement) => {\n\t\t\t\t\t\t\tconst geneName = allNearbyDots[rowIndex].gene\n\n\t\t\t\t\t\t\tif (checkboxNode.checked) {\n\t\t\t\t\t\t\t\tselectedGenes.push(geneName)\n\t\t\t\t\t\t\t\tlastTouchedGene = geneName\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tselectedGenes = selectedGenes.filter(g => g !== geneName)\n\t\t\t\t\t\t\t\tlastTouchedGene = selectedGenes.length > 0 ? selectedGenes[selectedGenes.length - 1] : null\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// Update lollipop button\n\t\t\t\t\t\t\tif (selectedGenes.length > 0) {\n\t\t\t\t\t\t\t\tlollipopBtn.text(`Lollipop (${lastTouchedGene})`)\n\t\t\t\t\t\t\t\tlollipopBtn.property('disabled', false)\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tlollipopBtn.text('Lollipop')\n\t\t\t\t\t\t\t\tlollipopBtn.property('disabled', true)\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tmatrixBtn.text(`Matrix (${selectedGenes.length})`).property('disabled', !selectedGenes.length)\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t})\n\t}\n\n\t// Add chromosome labels\n\tif (data.plotData.chrom_data) {\n\t\tconst chromLabelY = settings.plotHeight + 2 * settings.pngDotRadius + settings.yAxisY\n\n\t\tObject.entries(data.plotData.chrom_data).forEach(([chrom, chromData]: [string, any]) => {\n\t\t\tconst chromLabel = chrom.replace('chr', '')\n\n\t\t\t// Skip chrM\n\t\t\tif (chromLabel === 'M') return\n\n\t\t\t// Calculate center position for label\n\t\t\tconst centerPos = settings.yAxisX + settings.yAxisSpace + xScale(chromData.center)\n\n\t\t\t// Append chromosome label\n\t\t\tsvg\n\t\t\t\t.append('text')\n\t\t\t\t.attr('x', centerPos)\n\t\t\t\t.attr('y', chromLabelY)\n\t\t\t\t.attr('text-anchor', 'middle')\n\t\t\t\t.attr('font-size', `${settings.fontSize + 2}px`)\n\t\t\t\t.text(chromLabel)\n\t\t})\n\t}\n\n\t// Add x-axis label\n\tsvg\n\t\t.append('text')\n\t\t.attr('x', settings.yAxisX + settings.yAxisSpace + (settings.plotWidth + 2 * settings.pngDotRadius) / 2)\n\t\t.attr('y', settings.plotHeight + 2 * settings.pngDotRadius + settings.yAxisY + settings.xAxisLabelPad)\n\t\t.attr('text-anchor', 'middle')\n\t\t.attr('font-size', `${settings.fontSize + 4}px`)\n\t\t.attr('fill', 'black')\n\t\t.text('Chromosomes')\n\n\t// Add title\n\tsvg\n\t\t.append('text')\n\t\t.attr('x', settings.yAxisX + settings.yAxisSpace)\n\t\t.attr('y', settings.yAxisY / 2)\n\t\t.attr('font-weight', 'bold')\n\t\t.attr('font-size', `${settings.fontSize + 2}px`)\n\t\t.text('Manhattan Plot')\n\n\tif (settings.showDownload) {\n\t\tconst downloadDiv = div\n\t\t\t.append('div')\n\t\t\t.style('position', 'absolute')\n\t\t\t.style('top', '5px')\n\t\t\t.style('left', `${settings.yAxisX + settings.yAxisSpace + 108}px`)\n\n\t\ticons['download'](downloadDiv, {\n\t\t\twidth: 16,\n\t\t\theight: 16,\n\t\t\ttitle: 'Download Manhattan plot',\n\t\t\thandler: () => {\n\t\t\t\t// Clone the SVG to avoid modifying the displayed version\n\t\t\t\tconst svgNode = svg.node() as SVGSVGElement\n\t\t\t\tconst clone = svgNode.cloneNode(true) as SVGSVGElement\n\n\t\t\t\t// Get the bounding box of all content\n\t\t\t\tconst bbox = svgNode.getBBox()\n\n\t\t\t\t// Set the clone's dimensions to match the full content\n\t\t\t\tclone.setAttribute('width', bbox.width.toString())\n\t\t\t\tclone.setAttribute('height', bbox.height.toString())\n\t\t\t\tclone.setAttribute('viewBox', `${bbox.x} ${bbox.y} ${bbox.width} ${bbox.height}`)\n\n\t\t\t\tto_svg(clone, `manhattan_plot_${new Date().toISOString().replace(/[:.]/g, '-').slice(0, -5)}`, {\n\t\t\t\t\tapply_dom_styles: true\n\t\t\t\t})\n\t\t\t}\n\t\t})\n\t}\n\n\t// Generate legend data\n\tconst mutationTypes = [...new Set(data.plotData.points.map((p: any) => p.type))]\n\tconst legendData = mutationTypes.map(type => {\n\t\tconst point = data.plotData.points.find((p: any) => p.type === type)\n\t\treturn {\n\t\t\ttype: String(type).charAt(0).toUpperCase() + String(type).slice(1),\n\t\t\tcolor: point?.color\n\t\t}\n\t})\n\n\t// Add legend\n\tif (settings.showLegend && legendData.length > 0) {\n\t\tconst legendY = settings.yAxisY / 2\n\t\tconst totalWidth = legendData.length * settings.legendItemWidth\n\t\tconst legendX =\n\t\t\tsettings.yAxisX +\n\t\t\tsettings.yAxisSpace +\n\t\t\t(settings.plotWidth + 2 * settings.pngDotRadius) -\n\t\t\ttotalWidth -\n\t\t\tsettings.legendRightOffset\n\n\t\tlegendData.forEach((item, i) => {\n\t\t\tconst x = legendX + i * settings.legendItemWidth\n\n\t\t\t// Legend dot\n\t\t\tsvg\n\t\t\t\t.append('circle')\n\t\t\t\t.attr('cx', x + 8)\n\t\t\t\t.attr('cy', legendY)\n\t\t\t\t.attr('r', settings.legendDotRadius)\n\t\t\t\t.attr('fill', item.color)\n\n\t\t\t// Legend text\n\t\t\tsvg\n\t\t\t\t.append('text')\n\t\t\t\t.attr('x', x + 8 + settings.legendTextOffset)\n\t\t\t\t.attr('y', legendY + settings.legendVerticalOffset)\n\t\t\t\t.attr('font-size', `${settings.legendFontSize + 2}px`)\n\t\t\t\t.text(item.type)\n\t\t})\n\t}\n}\n\nexport function createLollipopFromGene(geneSymbol: string, app: any) {\n\tconst cfg: any = {\n\t\ttype: 'plot_create',\n\t\tconfig: {\n\t\t\tchartType: 'genomeBrowser',\n\t\t\tsnvindel: { shown: true }, // always set snvindel.shown=true so the mds3 tk is always shown; since grin2 works for this ds, it doesn't matter whether snvindel/cnv/svfusion any is present; all will be shown in mds3 tk\n\t\t\tgeneSearchResult: { geneSymbol }\n\t\t}\n\t}\n\tif (app.vocabApi.termdbConfig.queries.trackLst?.activeTracks) {\n\t\tcfg.config.trackLst = structuredClone(app.vocabApi.termdbConfig.queries.trackLst)\n\t\tcfg.config.trackLst.activeTracks = [] // clear all active tracks as they are not related to grin2 analysis\n\t\t// cannot do cfg.config.trackLst={activeTracks:[]}; breaks\n\t}\n\tapp.dispatch(cfg)\n}\n\nexport async function createMatrixFromGenes(geneSymbols: string[], app: any): Promise<void> {\n\ttry {\n\t\tconst termwrappers = await Promise.all(\n\t\t\tgeneSymbols.map(async (gene: string) => {\n\t\t\t\tconst term = {\n\t\t\t\t\ttype: 'geneVariant',\n\t\t\t\t\tgene: gene,\n\t\t\t\t\tname: gene\n\t\t\t\t}\n\t\t\t\tconst minTwCopy = app.vocabApi.getTwMinCopy({ term, q: {} })\n\t\t\t\treturn {\n\t\t\t\t\t$id: await get$id(minTwCopy),\n\t\t\t\t\tterm,\n\t\t\t\t\tq: {}\n\t\t\t\t}\n\t\t\t})\n\t\t)\n\n\t\tapp.dispatch({\n\t\t\ttype: 'plot_create',\n\t\t\tconfig: {\n\t\t\t\tchartType: 'matrix',\n\t\t\t\tdataType: 'geneVariant',\n\t\t\t\ttermgroups: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Genomic Alterations',\n\t\t\t\t\t\tlst: termwrappers\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t})\n\t} catch (error) {\n\t\tsayerror(app.dom.div, `Error creating matrix: ${error instanceof Error ? error.message : error}`)\n\t}\n}\n", "import { getCompInit, copyMerge, type RxComponent } from '#rx'\nimport type { BasePlotConfig, MassAppApi, MassState } from '#mass/types/mass'\nimport type { GRIN2Dom, GRIN2Opts } from './GRIN2Types'\nimport { dofetch3 } from '#common/dofetch'\nimport { getNormalRoot } from '#filter'\nimport { Menu, renderTable, table2col, make_one_checkbox, sayerror } from '#dom'\nimport { dtsnvindel, mclass, dtcnv, dtfusionrna, dtsv, proteinChangingMutations, dt2lesion } from '#shared/common.js'\nimport { PlotBase } from '#plots/PlotBase.ts'\nimport { plotManhattan, createLollipopFromGene, createMatrixFromGenes } from '#plots/manhattan/manhattan.ts'\n\nclass GRIN2 extends PlotBase implements RxComponent {\n\treadonly type = 'grin2'\n\tdom: GRIN2Dom\n\n\t// Colors\n\treadonly borderColor = '#eee'\n\treadonly backgroundColor = '#f8f8f8'\n\treadonly optionsTextColor = '#666'\n\treadonly btnBackgroundColor = '#f0f0f0'\n\treadonly btnBorderColor = '#ccc'\n\treadonly btnTextColor = '#333'\n\treadonly btnHoverBackgroundColor = '#e0e0e0'\n\n\t// Typography\n\treadonly optionsTextFontSize: number = 12\n\treadonly btnFontSize: number = 12\n\treadonly headerFontSize: number = 14\n\treadonly headerFontWeight: number = 600\n\treadonly tableFontSize: number = 11\n\treadonly statsTableFontWeight: string = 'bold'\n\n\t// Spacing & Layout\n\treadonly btnPadding = '8px 16px'\n\treadonly btnSmallPadding = '2px 8px' // for Select All/Clear All\n\treadonly btnBorderRadius = '3px'\n\treadonly btnMargin = '10px'\n\treadonly tableCellPadding = '8px'\n\treadonly controlsMargin = '5px'\n\treadonly controlsPadding = '10px'\n\n\t// Input fields\n\treadonly inputWidth = '80px'\n\treadonly inputPadding = '2px 4px'\n\treadonly inputBorderColor = '#ddd'\n\treadonly inputBorderRadius = '2px'\n\n\t// Containers\n\treadonly checkboxContainerMaxHeight = '150px'\n\treadonly checkboxContainerBackground = '#fafafa'\n\treadonly checkboxContainerBorder = '1px solid #ddd'\n\treadonly checkboxContainerPadding = '4px'\n\treadonly checkboxContainerBorderRadius = '3px'\n\n\t// Interactive states\n\treadonly disabledOpacity = '0.6'\n\treadonly enabledOpacity = '1'\n\n\t// Gaps and offsets\n\treadonly controlGap = '8px'\n\treadonly checkboxMarginBottom = '2px'\n\treadonly headerMargin = '0 10px 0 0'\n\treadonly sectionMargin = '20px 0'\n\n\tconstructor(opts: any, api) {\n\t\tsuper(opts, api)\n\t\tthis.opts = opts\n\t\topts.holder.classed('sjpp-grin2-main', true)\n\t\tthis.dom = {\n\t\t\tcontrols: opts.holder.append('div'), // controls ui on top\n\t\t\tdiv: opts.holder.append('div').style('margin', '20px'), // result ui on bottom\n\t\t\ttip: new Menu({ padding: '' }),\n\t\t\tgeneTip: new Menu({ padding: '' }),\n\t\t\tsnvindelCheckbox: null,\n\t\t\tcnvCheckbox: null,\n\t\t\tfusionCheckbox: null,\n\t\t\tsvCheckbox: null,\n\t\t\trunButton: null,\n\t\t\tconsequenceCheckboxes: {},\n\t\t\tsnvindelSelectAllBtn: null,\n\t\t\tsnvindelClearAllBtn: null,\n\t\t\tsnvindelDefaultBtn: null\n\t\t}\n\t\tif (opts.header) this.dom.header = opts.header.text('GRIN2')\n\t}\n\n\tgetState(appState: MassState) {\n\t\tconst config = appState.plots.find((p: BasePlotConfig) => p.id === this.id)\n\t\tif (!config) {\n\t\t\tthrow `No plot with id='${this.id}' found. Did you set this.id before this.api = getComponentApi(this)?`\n\t\t}\n\t\treturn {\n\t\t\tconfig\n\t\t}\n\t}\n\n\tprivate addSnvindelRow = (table: any) => {\n\t\tconst [left, right] = table.addRow()\n\n\t\t// Options table\n\t\tconst t2 = table2col({ holder: right })\n\n\t\t// Top numeric options\n\t\tthis.dom.snvindel_minTotalDepth = this.addOptionRowToTable(\n\t\t\tt2,\n\t\t\t'Min Total Depth',\n\t\t\tthis.state.config.settings?.snvindelOptions?.minTotalDepth ?? 10, // default. Getting from state and defaulting to 10 if not available\n\t\t\t0, // min\n\t\t\t1e6, // max\n\t\t\t1 // step\n\t\t)\n\t\tthis.dom.snvindel_minAltAlleleCount = this.addOptionRowToTable(\n\t\t\tt2,\n\t\t\t'Min Alt Allele Count',\n\t\t\tthis.state.config.settings?.snvindelOptions?.minAltAlleleCount ?? 2, // default. Getting from state and defaulting to 2 if not available\n\t\t\t0,\n\t\t\t1e6,\n\t\t\t1\n\t\t)\n\n\t\t// if 5/3 flanking size will be needed in future, can create a helper this.addFlankingOption() to dedup\n\n\t\t// TODO: Enable once talk to collaborators about supporting these options\n\t\t// // 5' flanking size\n\t\t// this.dom.snvindel_five_prime_flank_size = this.addOptionRowToTable(\n\t\t// \tt2,\n\t\t// \t\"5' Flanking Size\",\n\t\t// \t500, // default\n\t\t// \t0, // min\n\t\t// \t1e9, // max\n\t\t// \t500 // step\n\t\t// )\n\t\t// // 3' flanking size\n\t\t// this.dom.snvindel_three_prime_flank_size = this.addOptionRowToTable(\n\t\t// \tt2,\n\t\t// \t\"3' Flanking Size\",\n\t\t// \t500, // default\n\t\t// \t0, // min\n\t\t// \t1e9, // max\n\t\t// \t500 // step\n\t\t// )\n\n\t\t// Consequences section header + checkbox grid\n\t\t{\n\t\t\tconst [labelCell, containerCell] = t2.addRow()\n\t\t\tlabelCell\n\t\t\t\t.text('Consequences')\n\t\t\t\t.style('font-size', `${this.optionsTextFontSize}px`)\n\t\t\t\t.style('font-weight', '600')\n\t\t\t\t.style('padding-top', '8px')\n\n\t\t\t// Build the consequence checkboxes in the right cell\n\t\t\tthis.createConsequenceCheckboxes(containerCell)\n\t\t}\n\n\t\t// ----- Left-side SNV/INDEL checkbox -----\n\t\tconst isChecked = this.state.config.settings.dtUsage[dtsnvindel].checked\n\t\tt2.table.style('display', isChecked ? '' : 'none')\n\t\tthis.dom.snvindelCheckbox = make_one_checkbox({\n\t\t\tholder: left,\n\t\t\tlabeltext: dt2lesion[dtsnvindel].uilabel,\n\t\t\tchecked: isChecked,\n\t\t\ttestid: 'grin2-checkbox-snvindel',\n\t\t\tcallback: (checked: boolean) => {\n\t\t\t\tt2.table.style('display', checked ? '' : 'none')\n\t\t\t\tthis.updateRunButtonFromCheckboxes()\n\t\t\t}\n\t\t})\n\t}\n\n\t// Add CNV row\n\tprivate addCnvRow = (table: any) => {\n\t\tconst [left, right] = table.addRow()\n\n\t\t// CNV options table\n\t\tconst t2 = table2col({ holder: right })\n\n\t\t// We need this extra useSaved because of having a ds specific value set. Only use saved CNV settings if we know they came from a completed run\n\t\t// TODO: Long term we will need to do this for snvindel once we support ds specific values there also\n\t\tconst useSaved = this.state.config.settings.runAnalysis === true\n\t\tconst savedCnv = useSaved ? this.state.config.settings.cnvOptions : undefined\n\n\t\t// Loss Threshold\n\t\tthis.dom.cnv_lossThreshold = this.addOptionRowToTable(\n\t\t\tt2,\n\t\t\t'Loss Threshold',\n\t\t\tsavedCnv?.lossThreshold ?? this.app.vocabApi.termdbConfig.queries.cnv?.cnvLossCutoff ?? -0.4, // default. We first check if we have saved state, then we check the ds specific value, if that is undefined we fall back to the hardcoded default value\n\t\t\t-5, // min\n\t\t\t0, // max\n\t\t\t0.05 // step\n\t\t)\n\n\t\t// Gain Threshold\n\t\tthis.dom.cnv_gainThreshold = this.addOptionRowToTable(\n\t\t\tt2,\n\t\t\t'Gain Threshold',\n\t\t\tsavedCnv?.gainThreshold ?? this.app.vocabApi.termdbConfig.queries.cnv?.cnvGainCutoff ?? 0.4, // default. We first check if we have saved state, then we check the ds specific value, if that is undefined we fall back to the hardcoded default value\n\t\t\t0, // min\n\t\t\t5, // max\n\t\t\t0.05 // step\n\t\t)\n\n\t\t// Max Segment Length (0 = no cap)\n\t\tthis.dom.cnv_maxSegLength = this.addOptionRowToTable(\n\t\t\tt2,\n\t\t\t'Max Segment Length',\n\t\t\tsavedCnv?.maxSegLength ?? this.app.vocabApi.termdbConfig.queries.cnv?.cnvMaxLength ?? 2e6, // default 2Mb. We first check if we have saved state, then we check the ds specific value, if that is undefined we fall back to the hardcoded default value\n\t\t\t0, // min\n\t\t\t1e9, // max\n\t\t\t1000 // step\n\t\t)\n\n\t\t// // 5' flanking size\n\t\t// this.dom.cnv_five_prime_flank_size = this.addOptionRowToTable(\n\t\t// \tt2,\n\t\t// \t\"5' Flanking Size\",\n\t\t// \t500, // default\n\t\t// \t0, // min\n\t\t// \t1e9, // max\n\t\t// \t500 // step\n\t\t// )\n\n\t\t// // 3' flanking size\n\t\t// this.dom.cnv_three_prime_flank_size = this.addOptionRowToTable(\n\t\t// \tt2,\n\t\t// \t\"3' Flanking Size\",\n\t\t// \t500, // default\n\t\t// \t0, // min\n\t\t// \t1e9, // max\n\t\t// \t500 // step\n\t\t// )\n\n\t\t// ----- Left-side CNV checkbox -----\n\t\tconst dtUsage = this.state.config.settings.dtUsage\n\t\tconst isChecked =\n\t\t\tuseSaved && dtUsage[dtcnv]?.checked !== undefined\n\t\t\t\t? dtUsage[dtcnv].checked\n\t\t\t\t: !!this.app.vocabApi.termdbConfig.queries.cnv\n\n\t\tt2.table.style('display', isChecked ? '' : 'none')\n\n\t\tthis.dom.cnvCheckbox = make_one_checkbox({\n\t\t\tholder: left,\n\t\t\tlabeltext: dt2lesion[dtcnv].uilabel,\n\t\t\tchecked: isChecked,\n\t\t\ttestid: 'grin2-checkbox-cnv',\n\t\t\tcallback: (checked: boolean) => {\n\t\t\t\tt2.table.style('display', checked ? '' : 'none')\n\t\t\t\tthis.updateRunButtonFromCheckboxes()\n\t\t\t}\n\t\t})\n\t}\n\n\t// Add Fusion row\n\tprivate addFusionRow = (table: any) => {\n\t\tconst [left, right] = table.addRow()\n\n\t\t// Fusion options table\n\t\tconst t2 = table2col({ holder: right })\n\n\t\t// // 5' flanking size\n\t\t// this.dom.fusion_five_prime_flank_size = this.addOptionRowToTable(\n\t\t// \tt2,\n\t\t// \t\"5' Flanking Size\",\n\t\t// \t500, // default\n\t\t// \t0, // min\n\t\t// \t1e9, // max\n\t\t// \t500 // step\n\t\t// )\n\n\t\t// // 3' flanking size\n\t\t// this.dom.fusion_three_prime_flank_size = this.addOptionRowToTable(\n\t\t// \tt2,\n\t\t// \t\"3' Flanking Size\",\n\t\t// \t500, // default\n\t\t// \t0, // min\n\t\t// \t1e9, // max\n\t\t// \t500 // step\n\t\t// )\n\n\t\tconst isChecked = this.state.config.settings.dtUsage[dtfusionrna].checked\n\t\tt2.table.style('display', isChecked ? '' : 'none')\n\n\t\tthis.dom.fusionCheckbox = make_one_checkbox({\n\t\t\tholder: left,\n\t\t\tlabeltext: dt2lesion[dtfusionrna].uilabel,\n\t\t\tchecked: isChecked,\n\t\t\ttestid: 'grin2-checkbox-fusion',\n\t\t\tcallback: (checked: boolean) => {\n\t\t\t\tt2.table.style('display', checked ? '' : 'none')\n\t\t\t\tthis.updateRunButtonFromCheckboxes()\n\t\t\t}\n\t\t})\n\t}\n\n\t// Add SV row\n\tprivate addSvRow = (table: any) => {\n\t\tconst [left, right] = table.addRow()\n\n\t\t// SV options table\n\t\tconst t2 = table2col({ holder: right })\n\n\t\t// // 5' flanking size\n\t\t// this.dom.sv_five_prime_flank_size = this.addOptionRowToTable(\n\t\t// \tt2,\n\t\t// \t\"5' Flanking Size\",\n\t\t// \t500, // default\n\t\t// \t0, // min\n\t\t// \t1e9, // max\n\t\t// \t500 // step\n\t\t// )\n\n\t\t// // 3' flanking size\n\t\t// this.dom.sv_three_prime_flank_size = this.addOptionRowToTable(\n\t\t// \tt2,\n\t\t// \t\"3' Flanking Size\",\n\t\t// \t500, // default\n\t\t// \t0, // min\n\t\t// \t1e9, // max\n\t\t// \t500 // step\n\t\t// )\n\n\t\tconst isChecked = this.state.config.settings.dtUsage[dtsv].checked\n\t\tt2.table.style('display', isChecked ? '' : 'none')\n\n\t\tthis.dom.svCheckbox = make_one_checkbox({\n\t\t\tholder: left,\n\t\t\tlabeltext: dt2lesion[dtsv].uilabel,\n\t\t\tchecked: isChecked,\n\t\t\ttestid: 'grin2-checkbox-sv',\n\t\t\tcallback: (checked: boolean) => {\n\t\t\t\tt2.table.style('display', checked ? '' : 'none')\n\t\t\t\tthis.updateRunButtonFromCheckboxes()\n\t\t\t}\n\t\t})\n\t}\n\n\t// Enable the run button only if at least one data type is checked\n\tprivate updateRunButtonState(dtu?: Record<number, { checked: boolean; label: string }>) {\n\t\tconst dtUsage = dtu || (this.state.config.settings.dtUsage as Record<number, { checked: boolean; label: string }>)\n\t\tconst anyChecked = Object.values(dtUsage).some(info => info.checked)\n\t\tthis.dom.runButton.property('disabled', !anyChecked)\n\t}\n\n\tprivate createConfigTable() {\n\t\t// Add citation text\n\t\tthis.dom.controls\n\t\t\t.append('div')\n\t\t\t.style('margin', '15px')\n\t\t\t.html(\n\t\t\t\t'GRIN2 stands for Genomic Random Interval (GRIN) statistical model. For details, see <a href=https://pubmed.ncbi.nlm.nih.gov/23842812/ target=_blank>Pounds, S. et al. Bioinformatics 2013</a>.'\n\t\t\t)\n\n\t\tconst table = table2col({ holder: this.dom.controls, disableScroll: true })\n\t\tconst queries = this.app.vocabApi.termdbConfig.queries\n\t\tif (queries.snvindel) {\n\t\t\tthis.addSnvindelRow(table)\n\t\t}\n\n\t\tif (queries.cnv) {\n\t\t\tthis.addCnvRow(table)\n\t\t}\n\t\tif (queries.svfusion?.dtLst?.includes(dtfusionrna)) {\n\t\t\tthis.addFusionRow(table)\n\t\t}\n\t\tif (queries.svfusion?.dtLst?.includes(dtsv)) {\n\t\t\tthis.addSvRow(table)\n\t\t}\n\n\t\t// Run Button\n\t\tthis.dom.runButton = this.dom.controls\n\t\t\t.append('button')\n\t\t\t.attr('data-testid', 'grin2-run-button')\n\t\t\t.style('margin-left', '100px')\n\t\t\t.text('Run GRIN2')\n\t\t\t.on('click', () => {\n\t\t\t\tthis.runAnalysis()\n\t\t\t})\n\n\t\tif (this.state.config.settings.runAnalysis) {\n\t\t\tthis.runAnalysis()\n\t\t} else {\n\t\t\t// Set initial button state\n\t\t\tthis.updateRunButtonState()\n\t\t}\n\t}\n\n\t// Helper method to add option rows to table2col instances\n\tprivate addOptionRowToTable(\n\t\ttable: any,\n\t\tlabel: string,\n\t\tdefaultValue: number,\n\t\tmin?: number,\n\t\tmax?: number,\n\t\tstep?: number\n\t) {\n\t\tconst [labelCell, inputCell] = table.addRow()\n\t\tlabelCell.text(label).style('font-size', `${this.optionsTextFontSize}px`)\n\n\t\tconst input = inputCell\n\t\t\t.append('input')\n\t\t\t.attr('type', 'number')\n\t\t\t.attr('value', defaultValue)\n\t\t\t.style('width', this.inputWidth)\n\t\t\t.style('padding', this.inputPadding)\n\t\t\t.style('border', `1px solid ${this.inputBorderColor}`)\n\t\t\t.style('border-radius', this.inputBorderRadius)\n\t\t\t.style('font-size', `${this.optionsTextFontSize}px`)\n\n\t\tif (min !== null && min !== undefined) input.attr('min', min)\n\t\tif (max !== null && max !== undefined) input.attr('max', max)\n\t\tif (step !== null && step !== undefined) input.attr('step', step)\n\n\t\treturn input\n\t}\n\n\tprivate createConsequenceCheckboxes(container: any) {\n\t\tconst snvIndelClasses = Object.entries(mclass).filter(\n\t\t\t([key, cls]: [string, any]) => cls.dt === dtsnvindel && key !== 'Blank' && key !== 'WT'\n\t\t)\n\n\t\tconst saved = this.state.config.settings.snvindelOptions?.consequences as string[] | undefined\n\t\tconst useSaved = this.state.config.settings.runAnalysis === true && !!saved && saved.length > 0\n\n\t\t// Canonical default set = protein-changing + StartLost + StopLost\n\t\tconst canonicalDefault = new Set<string>([...proteinChangingMutations, 'StartLost', 'StopLost'])\n\n\t\t// What we use for initial rendering:\n\t\tconst initialChecked = useSaved ? new Set<string>(saved!) : canonicalDefault\n\n\t\t// --- Controls row ---\n\t\tconst controlDiv = container\n\t\t\t.append('div')\n\t\t\t.style('margin-bottom', '6px')\n\t\t\t.style('display', 'flex')\n\t\t\t.style('gap', this.controlGap)\n\n\t\tthis.dom.snvindelSelectAllBtn = controlDiv\n\t\t\t.append('button')\n\t\t\t.style('font-size', `${this.tableFontSize}px`)\n\t\t\t.text('Select All')\n\n\t\tthis.dom.snvindelClearAllBtn = controlDiv\n\t\t\t.append('button')\n\t\t\t.style('font-size', `${this.tableFontSize}px`)\n\t\t\t.text('Clear All')\n\n\t\tthis.dom.snvindelDefaultBtn = controlDiv\n\t\t\t.append('button')\n\t\t\t.style('font-size', `${this.tableFontSize}px`)\n\t\t\t.text('Default')\n\n\t\t// --- Checkbox list ---\n\t\tconst checkboxContainer = container\n\t\t\t.append('div')\n\t\t\t.style('max-height', this.checkboxContainerMaxHeight)\n\t\t\t.style('overflow-y', 'auto')\n\t\t\t.style('border', this.checkboxContainerBorder)\n\n\t\tthis.dom.consequenceCheckboxes = {}\n\n\t\tsnvIndelClasses.forEach(([classKey, classInfo]: [string, any]) => {\n\t\t\tconst checkboxDiv = checkboxContainer.append('div').style('margin-bottom', this.checkboxMarginBottom)\n\n\t\t\tconst checkbox = make_one_checkbox({\n\t\t\t\tholder: checkboxDiv,\n\t\t\t\tlabeltext: classInfo.label,\n\t\t\t\tchecked: initialChecked.has(classKey),\n\t\t\t\tdivstyle: { 'font-size': `${this.tableFontSize}px` },\n\t\t\t\tcallback: () => {}\n\t\t\t})\n\n\t\t\tcheckboxDiv.select('label').attr('title', classInfo.desc)\n\t\t\tthis.dom.consequenceCheckboxes[classKey] = checkbox\n\t\t})\n\n\t\t// Select All\n\t\tthis.dom.snvindelSelectAllBtn.on('click', () => {\n\t\t\tObject.values(this.dom.consequenceCheckboxes).forEach(cb => cb.property('checked', true))\n\t\t})\n\n\t\t// Clear All\n\t\tthis.dom.snvindelClearAllBtn.on('click', () => {\n\t\t\tObject.values(this.dom.consequenceCheckboxes).forEach(cb => cb.property('checked', false))\n\t\t})\n\n\t\t// Default: always reset to canonical (protein-changing + StartLost + StopLost)\n\t\tthis.dom.snvindelDefaultBtn.on('click', () => {\n\t\t\tObject.entries(this.dom.consequenceCheckboxes).forEach(([classKey, checkbox]) => {\n\t\t\t\tcheckbox.property('checked', canonicalDefault.has(classKey))\n\t\t\t})\n\t\t})\n\t}\n\n\tprivate getConfigValues(dtUsage: Record<number, { checked: boolean; label: string }>): any {\n\t\tconst requestConfig: any = {}\n\t\tconst usage = dtUsage || this.state.config.settings.dtUsage\n\n\t\tif (usage[dtsnvindel]?.checked) {\n\t\t\trequestConfig.snvindelOptions = {\n\t\t\t\tminTotalDepth: parseFloat(this.dom.snvindel_minTotalDepth.property('value')),\n\t\t\t\tminAltAlleleCount: parseFloat(this.dom.snvindel_minAltAlleleCount.property('value')),\n\t\t\t\tconsequences: this.getSelectedConsequences()\n\t\t\t}\n\t\t}\n\n\t\tif (usage[dtcnv]?.checked) {\n\t\t\trequestConfig.cnvOptions = {\n\t\t\t\tlossThreshold: parseFloat(this.dom.cnv_lossThreshold.property('value')),\n\t\t\t\tgainThreshold: parseFloat(this.dom.cnv_gainThreshold.property('value')),\n\t\t\t\tmaxSegLength: parseFloat(this.dom.cnv_maxSegLength.property('value'))\n\t\t\t}\n\t\t}\n\n\t\tif (usage[dtfusionrna]?.checked) {\n\t\t\trequestConfig.fusionOptions = {}\n\t\t}\n\n\t\tif (usage[dtsv]?.checked) {\n\t\t\trequestConfig.svOptions = {}\n\t\t}\n\n\t\treturn requestConfig\n\t}\n\n\tprivate getDtUsageFromCheckboxes(): Record<number, { checked: boolean; label: string }> {\n\t\tconst dtUsage = structuredClone(this.state.config.settings.dtUsage)\n\n\t\tif (dtUsage[dtsnvindel]) {\n\t\t\tdtUsage[dtsnvindel].checked = this.dom.snvindelCheckbox.property('checked')\n\t\t}\n\t\tif (dtUsage[dtcnv]) {\n\t\t\tdtUsage[dtcnv].checked = this.dom.cnvCheckbox.property('checked')\n\t\t}\n\t\tif (dtUsage[dtfusionrna]) {\n\t\t\tdtUsage[dtfusionrna].checked = this.dom.fusionCheckbox.property('checked')\n\t\t}\n\t\tif (dtUsage[dtsv]) {\n\t\t\tdtUsage[dtsv].checked = this.dom.svCheckbox.property('checked')\n\t\t}\n\n\t\treturn dtUsage\n\t}\n\n\tprivate getSelectedConsequences(): string[] {\n\t\tconst consequences: string[] = []\n\n\t\tObject.entries(this.dom.consequenceCheckboxes).forEach(([classKey, checkbox]) => {\n\t\t\tif (checkbox.property('checked')) {\n\t\t\t\tconsequences.push(classKey)\n\t\t\t}\n\t\t})\n\n\t\treturn consequences\n\t}\n\n\tprivate updateRunButtonFromCheckboxes() {\n\t\tconst dtUsage = this.getDtUsageFromCheckboxes()\n\t\tthis.updateRunButtonState(dtUsage)\n\t}\n\tprivate async runAnalysis() {\n\t\tthis.dom.controls.style('pointer-events', 'none').style('opacity', '0.5')\n\t\ttry {\n\t\t\t// Get checkbox states\n\t\t\tconst dtUsage = this.getDtUsageFromCheckboxes()\n\n\t\t\tthis.dom.runButton.property('disabled', true).text('Running GRIN2...')\n\n\t\t\t// Clear previous results\n\t\t\tthis.dom.div.selectAll('*').remove()\n\n\t\t\t// Get configuration and make request using the dtUsage we just read\n\t\t\tconst configValues = this.getConfigValues(dtUsage)\n\t\t\tconst requestData = {\n\t\t\t\tgenome: this.app.vocabApi.vocab.genome,\n\t\t\t\tdslabel: this.app.vocabApi.vocab.dslabel,\n\t\t\t\tfilter: getNormalRoot(this.app.vocabApi.state.termfilter.filter),\n\t\t\t\twidth: this.state.config.settings.manhattan?.plotWidth,\n\t\t\t\theight: this.state.config.settings.manhattan?.plotHeight,\n\t\t\t\tpngDotRadius: this.state.config.settings.manhattan?.pngDotRadius,\n\t\t\t\tdevicePixelRatio: window.devicePixelRatio,\n\t\t\t\tmaxGenesToShow: this.state.config.settings?.manhattan?.maxGenesToShow,\n\t\t\t\tlesionTypeColors: this.state.config.settings?.manhattan?.lesionTypeColors,\n\t\t\t\tqValueThreshold: this.state.config.settings?.manhattan?.qValueThreshold,\n\t\t\t\t...configValues\n\t\t\t}\n\n\t\t\tconst response = await dofetch3('/grin2', {\n\t\t\t\tbody: requestData\n\t\t\t})\n\n\t\t\tif (response.status === 'error') throw `GRIN2 analysis failed: ${response.error}`\n\n\t\t\tthis.renderResults(response)\n\n\t\t\t// After the analysis completes successfully, dispatch with the updated config to save state\n\t\t\tconst updatedConfig = {\n\t\t\t\t...this.state.config,\n\t\t\t\tsettings: {\n\t\t\t\t\t...this.state.config.settings,\n\t\t\t\t\t...configValues,\n\t\t\t\t\tdtUsage: dtUsage,\n\t\t\t\t\trunAnalysis: true\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.app.dispatch({\n\t\t\t\ttype: 'plot_edit',\n\t\t\t\tid: this.id,\n\t\t\t\tconfig: updatedConfig\n\t\t\t})\n\t\t} catch (error) {\n\t\t\tsayerror(this.dom.div, `Error running GRIN2: ${error instanceof Error ? error.message : error}`)\n\t\t} finally {\n\t\t\tthis.dom.controls.style('pointer-events', 'auto').style('opacity', '1')\n\t\t\tthis.dom.runButton.property('disabled', false).text('Run GRIN2')\n\t\t}\n\t}\n\n\tasync init() {}\n\n\tasync main() {\n\t\t// Initialize the table with the different data types and options\n\t\tconst config = structuredClone(this.state.config)\n\t\tif (config.childType != this.type && config.chartType != this.type) return\n\n\t\tif (!this.dom.runButton) {\n\t\t\tthis.createConfigTable()\n\t\t}\n\t}\n\n\tprivate renderResults(result: any) {\n\t\t// Display Manhattan plot\n\t\tif (result.pngImg) {\n\t\t\tconst plotData = result\n\t\t\tconst plotDiv = this.dom.div\n\t\t\tconst manhattanSettings = this.state.config.settings.manhattan\n\t\t\tplotManhattan(plotDiv, plotData, manhattanSettings, this.app)\n\t\t}\n\n\t\t// Display top genes table\n\t\tif (result.topGeneTable) {\n\t\t\tconst tableContainer = this.dom.div.append('div').style('margin', this.sectionMargin)\n\n\t\t\t// Create header with title and Matrix button\n\t\t\tconst headerDiv = tableContainer\n\t\t\t\t.append('div')\n\t\t\t\t.style('display', 'flex')\n\t\t\t\t.style('align-items', 'center')\n\t\t\t\t.style('margin', this.btnMargin)\n\n\t\t\theaderDiv\n\t\t\t\t.append('h3')\n\t\t\t\t.style('margin', this.headerMargin)\n\t\t\t\t.style('font-size', `${this.headerFontSize}px`)\n\t\t\t\t.text(`Top Genes (showing ${result.showingTop?.toLocaleString()} of ${result.totalGenes?.toLocaleString()})`)\n\n\t\t\t// Add Matrix button\n\t\t\tconst matrixBtn = headerDiv\n\t\t\t\t.append('button')\n\t\t\t\t.text('Matrix (0 genes selected)')\n\t\t\t\t.property('disabled', true)\n\t\t\t\t.on('click', () => {\n\t\t\t\t\tmatrixBtn.property('disabled', true)\n\t\t\t\t\tcreateMatrixFromGenes(selectedGenes, this.app)\n\t\t\t\t})\n\n\t\t\t// Add the lollipop button\n\t\t\tconst lollipopBtn = headerDiv\n\t\t\t\t.append('button')\n\t\t\t\t.text('Lollipop')\n\t\t\t\t.property('disabled', true)\n\t\t\t\t.on('click', () => {\n\t\t\t\t\tif (lastTouchedGene) {\n\t\t\t\t\t\tlollipopBtn.property('disabled', true)\n\t\t\t\t\t\tcreateLollipopFromGene(lastTouchedGene, this.app)\n\t\t\t\t\t}\n\t\t\t\t})\n\n\t\t\tconst tableDiv = tableContainer.append('div')\n\t\t\tconst selectedGenes: string[] = []\n\t\t\tlet lastTouchedGene: string | null = null\n\n\t\t\t// Define lesion type colors and q-value threshold\n\t\t\tconst lesionTypeColors = this.state.config.settings.manhattan.lesionTypeColors\n\t\t\tconst qValueThreshold = this.state.config.settings.manhattan.qValueThreshold\n\n\t\t\t// Find column indices for q-values\n\t\t\tconst columns = result.topGeneTable.columns\n\n\t\t\t// Map dt types to their column labels and lesion types\n\t\t\tconst dtMapping = {}\n\t\t\tObject.entries(dt2lesion).forEach(([dt, config]) => {\n\t\t\t\tdtMapping[dt] = config.lesionTypes.map(lt => ({\n\t\t\t\t\tcol: `Q-value (${lt.name})`,\n\t\t\t\t\ttype: lt.lesionType\n\t\t\t\t}))\n\t\t\t})\n\n\t\t\t// Build qValue entries for enabled data types\n\t\t\tconst qValueEntries: Array<{ colIndex: number; type: string }> = []\n\t\t\tObject.entries(this.state.config.settings.dtUsage).forEach(([key, isChecked]) => {\n\t\t\t\tif (isChecked && dtMapping[key]) {\n\t\t\t\t\tdtMapping[key].forEach(({ col, type }) => {\n\t\t\t\t\t\tconst colIndex = columns.findIndex(c => c.label === col)\n\t\t\t\t\t\tif (colIndex !== -1) qValueEntries.push({ colIndex, type })\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t})\n\n\t\t\t// Add significance column to the beginning\n\t\t\tconst modifiedColumns = [{ label: '', width: '20px' }, ...result.topGeneTable.columns]\n\n\t\t\t// Cache the circles HTML\n\t\t\tconst lesionTypeCircleCache = new Map(\n\t\t\t\tObject.entries(lesionTypeColors).map(([type, color]) => [\n\t\t\t\t\ttype,\n\t\t\t\t\t`<span style=\"display:inline-block;width:8px;height:8px;border-radius:50%;background-color:${color};margin-right:3px;\"></span>`\n\t\t\t\t])\n\t\t\t)\n\n\t\t\t// Process rows to add significance indicators\n\t\t\tconst processedRows = result.topGeneTable.rows.map(row => {\n\t\t\t\tconst circles = qValueEntries\n\t\t\t\t\t.filter(({ colIndex }) => {\n\t\t\t\t\t\tconst qValue = row[colIndex]?.value\n\t\t\t\t\t\treturn typeof qValue === 'number' && qValue < qValueThreshold\n\t\t\t\t\t})\n\t\t\t\t\t.map(({ type }) => lesionTypeCircleCache.get(type)!)\n\n\t\t\t\treturn [{ value: '', html: circles.join('') }, ...row]\n\t\t\t})\n\n\t\t\trenderTable({\n\t\t\t\tcolumns: modifiedColumns,\n\t\t\t\trows: processedRows,\n\t\t\t\tdiv: tableDiv,\n\t\t\t\tmaxHeight: '400px',\n\t\t\t\tmaxWidth: '100%',\n\t\t\t\tdataTestId: 'grin2-top-genes-table',\n\t\t\t\tnoButtonCallback: (rowIndex, checkboxNode) => {\n\t\t\t\t\tconst geneName = result.topGeneTable.rows[rowIndex][0]?.value\n\n\t\t\t\t\tif (checkboxNode.checked) {\n\t\t\t\t\t\tselectedGenes.push(geneName)\n\t\t\t\t\t\tlastTouchedGene = geneName\n\t\t\t\t\t} else {\n\t\t\t\t\t\tselectedGenes.splice(selectedGenes.indexOf(geneName), 1)\n\t\t\t\t\t\tlastTouchedGene = selectedGenes.length > 0 ? selectedGenes[selectedGenes.length - 1] : null\n\t\t\t\t\t}\n\n\t\t\t\t\t// Update lollipop button\n\t\t\t\t\tif (selectedGenes.length > 0) {\n\t\t\t\t\t\tlollipopBtn.text(`Lollipop (${lastTouchedGene})`)\n\t\t\t\t\t\tlollipopBtn.property('disabled', false)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tlollipopBtn.text('Lollipop')\n\t\t\t\t\t\tlollipopBtn.property('disabled', true)\n\t\t\t\t\t}\n\n\t\t\t\t\tmatrixBtn.text(`Matrix (${selectedGenes.length} genes selected)`).property('disabled', !selectedGenes.length)\n\t\t\t\t},\n\t\t\t\tselectAll: false,\n\t\t\t\tdownload: {\n\t\t\t\t\tfileName: `grin2_top_genes_${new Date().toISOString().replace(/[:.]/g, '-').slice(0, -5)}.tsv`\n\t\t\t\t},\n\t\t\t\theader: {\n\t\t\t\t\tallowSort: true,\n\t\t\t\t\tstyle: {\n\t\t\t\t\t\t'font-weight': this.statsTableFontWeight,\n\t\t\t\t\t\t'background-color': this.backgroundColor\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\n\t\t// Display run stats information\n\t\tif (result.processingSummary) {\n\t\t\t// Create header with title\n\t\t\tconst headerDiv = this.dom.div\n\t\t\t\t.append('div')\n\t\t\t\t.style('display', 'flex')\n\t\t\t\t.style('align-items', 'center')\n\t\t\t\t.style('margin', this.btnMargin)\n\n\t\t\theaderDiv\n\t\t\t\t.append('h3')\n\t\t\t\t.style('margin', this.headerMargin)\n\t\t\t\t.style('font-size', `${this.headerFontSize}px`)\n\t\t\t\t.text('GRIN2 Processing Summary')\n\n\t\t\t// Container for tables\n\t\t\tconst tablesContainer = this.dom.div.append('div')\n\n\t\t\t// General stats using table2col\n\t\t\tconst generalTable = table2col({\n\t\t\t\tholder: tablesContainer.append('div')\n\t\t\t})\n\n\t\t\tgeneralTable.addRow('Total Samples', result.processingSummary.totalSamples.toLocaleString())\n\t\t\tgeneralTable.addRow('Processed Samples', result.processingSummary.processedSamples.toLocaleString())\n\t\t\tgeneralTable.addRow('Unprocessed Samples', (result.processingSummary.unprocessedSamples ?? 0).toLocaleString())\n\t\t\tgeneralTable.addRow('Failed Samples', result.processingSummary.failedSamples.toLocaleString())\n\t\t\tgeneralTable.addRow(\n\t\t\t\t'Failed Files',\n\t\t\t\tresult.processingSummary.failedFiles?.length\n\t\t\t\t\t? result.processingSummary.failedFiles.map(f => f.sampleName).join(', ')\n\t\t\t\t\t: '0'\n\t\t\t)\n\t\t\tgeneralTable.addRow('Total Lesions', result.processingSummary.totalLesions.toLocaleString())\n\t\t\tgeneralTable.addRow('Processed Lesions', result.processingSummary.processedLesions.toLocaleString())\n\n\t\t\t// Lesion type details\n\t\t\tif (result.processingSummary.lesionCounts?.byType) {\n\t\t\t\tconst typeLabels: Record<string, string> = {}\n\t\t\t\tObject.values(dt2lesion).forEach(config => {\n\t\t\t\t\tconfig.lesionTypes.forEach(lt => {\n\t\t\t\t\t\ttypeLabels[lt.lesionType] = lt.name\n\t\t\t\t\t})\n\t\t\t\t})\n\n\t\t\t\tconst columns = [\n\t\t\t\t\t{ label: 'Lesion Type' },\n\t\t\t\t\t{ label: 'Count', sortable: true },\n\t\t\t\t\t{ label: 'Samples', sortable: true },\n\t\t\t\t\t{ label: 'Capped' }\n\t\t\t\t]\n\n\t\t\t\tconst rows = Object.entries(result.processingSummary.lesionCounts.byType).map(([type, typeData]) => {\n\t\t\t\t\tconst { count, capped, samples } = typeData as { count: number; capped: boolean; samples: number }\n\t\t\t\t\treturn [\n\t\t\t\t\t\t{ value: typeLabels[type] || type },\n\t\t\t\t\t\t{ value: count.toLocaleString() },\n\t\t\t\t\t\t{ value: samples?.toLocaleString() ?? '0' },\n\t\t\t\t\t\t{ value: capped ? 'Yes' : 'No' }\n\t\t\t\t\t]\n\t\t\t\t})\n\n\t\t\t\trenderTable({\n\t\t\t\t\tcolumns,\n\t\t\t\t\trows,\n\t\t\t\t\tdataTestId: 'grin2-lesion-counts-table',\n\t\t\t\t\tdiv: tablesContainer.append('div'),\n\t\t\t\t\tshowLines: false,\n\t\t\t\t\tstriped: true,\n\t\t\t\t\tmaxHeight: 'none',\n\t\t\t\t\tmaxWidth: '100%',\n\t\t\t\t\tresize: false,\n\t\t\t\t\tdownload: {\n\t\t\t\t\t\tfileName: `grin2_lesion_stats_${new Date().toISOString().replace(/[:.]/g, '-').slice(0, -5)}.tsv`\n\t\t\t\t\t},\n\t\t\t\t\theader: {\n\t\t\t\t\t\tstyle: {\n\t\t\t\t\t\t\t'font-weight': this.statsTableFontWeight,\n\t\t\t\t\t\t\t'background-color': this.backgroundColor\n\t\t\t\t\t\t},\n\t\t\t\t\t\tallowSort: true\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\n\t\t// Display timing information\n\t\tif (result.timing) {\n\t\t\tthis.dom.div\n\t\t\t\t.append('div')\n\t\t\t\t.style('margin', this.sectionMargin)\n\t\t\t\t.style('font-size', `${this.optionsTextFontSize}px`)\n\t\t\t\t.style('color', this.optionsTextColor)\n\t\t\t\t.text(\n\t\t\t\t\t`Analysis completed in ${result.timing.totalTime} (Processing: ${result.timing.processingTime}, GRIN2: ${result.timing.grin2Time}, Plotting: ${result.timing.plottingTime})`\n\t\t\t\t)\n\t\t}\n\n\t\t// If we didn't process all samples, note that caps truncated the run\n\t\tconst expectedToProcessSamples = result.processingSummary.totalSamples - result.processingSummary.failedSamples\n\t\tif (result.processingSummary.processedSamples < expectedToProcessSamples) {\n\t\t\tthis.dom.div\n\t\t\t\t.append('div')\n\t\t\t\t.style('margin', this.sectionMargin)\n\t\t\t\t.style('font-size', `${this.optionsTextFontSize}px`)\n\t\t\t\t.style('color', this.optionsTextColor)\n\t\t\t\t.text(\n\t\t\t\t\t`Note: Per-type lesion caps were reached before all samples could be processed. ` +\n\t\t\t\t\t\t`Analysis ran on ${result.processingSummary.processedSamples.toLocaleString()} of ${expectedToProcessSamples.toLocaleString()} samples.`\n\t\t\t\t)\n\t\t}\n\t}\n}\n\nexport const grin2Init = getCompInit(GRIN2)\nexport const componentInit = grin2Init\n\nexport function getDefaultSettings(opts) {\n\tconst defaults = {\n\t\tmanhattan: {\n\t\t\t// Core plot dimensions\n\t\t\tplotWidth: 1000,\n\t\t\tplotHeight: 400,\n\t\t\tpngDotRadius: 2,\n\n\t\t\t// Layout spacing\n\t\t\tyAxisX: 70,\n\t\t\tyAxisY: 40,\n\t\t\tyAxisSpace: 20,\n\t\t\txAxisLabelPad: 20,\n\t\t\tyAxisPad: 5,\n\t\t\taxisColor: '#545454',\n\t\t\tshowYAxisLine: true,\n\n\t\t\t// Typography\n\t\t\tfontSize: 12,\n\n\t\t\t// Legend settings\n\t\t\tshowLegend: true,\n\t\t\tlegendItemWidth: 80,\n\t\t\tlegendDotRadius: 3,\n\t\t\tlegendRightOffset: 15,\n\t\t\tlegendTextOffset: 12,\n\t\t\tlegendVerticalOffset: 4,\n\t\t\tlegendFontSize: 12,\n\n\t\t\t// Interactive dots\n\t\t\tshowInteractiveDots: true,\n\t\t\tinteractiveDotRadius: 2,\n\t\t\tinteractiveDotStrokeWidth: 1,\n\n\t\t\t// Download options\n\t\t\tshowDownload: true,\n\n\t\t\t// Max genes to show in table and interactive dots cap\n\t\t\tmaxGenesToShow: 500,\n\t\t\tinteractiveDotsCap: 5000,\n\t\t\tmaxTooltipGenes: 5,\n\n\t\t\t// Q-value threshold for significance indicators in the table\n\t\t\tqValueThreshold: 0.05,\n\n\t\t\t// Colors for lesion types (currently used for table significance indicators. Long term will also be used for the rust code colors)\n\t\t\tlesionTypeColors: {\n\t\t\t\tmutation: '#44AA44', // green\n\t\t\t\tloss: '#4444FF', // blue\n\t\t\t\tgain: '#FF4444', // red\n\t\t\t\tfusion: '#FFA500', // orange\n\t\t\t\tsv: '#9932CC' // purple\n\t\t\t}\n\t\t}\n\t}\n\n\treturn Object.assign(defaults, opts?.overrides)\n}\n\nexport async function getPlotConfig(opts: GRIN2Opts, app: MassAppApi) {\n\tconst queries = app.vocabApi.termdbConfig.queries\n\tconst defaultSettings = getDefaultSettings(opts)\n\n\tconst dtUsage: any = {}\n\n\t// Dynamically add data type options based on availability\n\tif (queries?.snvindel) {\n\t\tdtUsage[dtsnvindel] = { checked: true, label: dt2lesion[dtsnvindel].uilabel }\n\t}\n\n\tif (queries?.cnv) {\n\t\tdtUsage[dtcnv] = { checked: true, label: dt2lesion[dtcnv].uilabel }\n\t}\n\n\tif (queries?.svfusion) {\n\t\tif (queries.svfusion.dtLst.includes(dtfusionrna)) {\n\t\t\tdtUsage[dtfusionrna] = { checked: false, label: dt2lesion[dtfusionrna].uilabel }\n\t\t}\n\t\tif (queries.svfusion.dtLst.includes(dtsv)) {\n\t\t\tdtUsage[dtsv] = { checked: false, label: dt2lesion[dtsv].uilabel }\n\t\t}\n\t}\n\n\tconst config = {\n\t\tchartType: 'grin2',\n\t\tsettings: {\n\t\t\tcontrols: {},\n\t\t\tdtUsage: dtUsage,\n\t\t\trunAnalysis: false,\n\t\t\tmanhattan: {\n\t\t\t\t...defaultSettings.manhattan,\n\t\t\t\t...opts?.manhattan\n\t\t\t},\n\t\t\tsnvindelOptions: queries?.snvindel\n\t\t\t\t? {\n\t\t\t\t\t\tminTotalDepth: 10,\n\t\t\t\t\t\tminAltAlleleCount: 2,\n\t\t\t\t\t\tconsequences: [],\n\t\t\t\t\t\thyperMutator: 1000\n\t\t\t\t }\n\t\t\t\t: undefined,\n\t\t\tcnvOptions: queries?.cnv\n\t\t\t\t? {\n\t\t\t\t\t\tlossThreshold: -0.4,\n\t\t\t\t\t\tgainThreshold: 0.3,\n\t\t\t\t\t\tmaxSegLength: 0,\n\t\t\t\t\t\thyperMutator: 500\n\t\t\t\t }\n\t\t\t\t: undefined,\n\t\t\tfusionOptions: queries?.svfusion?.dtLst?.includes(dtfusionrna) ? {} : undefined,\n\t\t\tsvOptions: queries?.svfusion?.dtLst?.includes(dtsv) ? {} : undefined\n\t\t},\n\t\thidePlotFilter: true\n\t}\n\n\treturn copyMerge(config, opts)\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["quadtree"]
7
+ }