@sjcrh/proteinpaint-client 2.200.0 → 2.201.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (993) hide show
  1. package/dist/2dmaf-6MNHNHWX.js +1373 -0
  2. package/dist/AIProjectAdmin-W36NGUX2.js +958 -0
  3. package/dist/AggregateMatrix-YH2SN6VN.js +671 -0
  4. package/dist/AggregateMatrix-YH2SN6VN.js.map +7 -0
  5. package/dist/AppHeader-I5CFECIL.js +835 -0
  6. package/dist/BoxPlot-4SXDAOBP.js +1218 -0
  7. package/dist/CorrelationVolcano-NAWMGG4Q.js +619 -0
  8. package/dist/DE-VZMT7KEM.js +95 -0
  9. package/dist/DEinput-TKERM2YD.js +409 -0
  10. package/dist/DifferentialAnalysis-Y4SU4BVP.js +243 -0
  11. package/dist/Disco-DLK3BYPV.js +3392 -0
  12. package/dist/Disco.UI-IKGMFG36.js +248 -0
  13. package/dist/DmrPlot-JWBZJFS6.js +642 -0
  14. package/dist/GB-3UZSSIBW.js +1396 -0
  15. package/dist/GSEA-YLHBZY55.js +846 -0
  16. package/dist/GeneExpInput-KX5I63YV.js +367 -0
  17. package/dist/Geomap-QTUHM4VH.js +89 -0
  18. package/dist/HicApp-M2OCHGRT.js +2250 -0
  19. package/dist/IDCViewer-SWFBLBZH.js +10817 -0
  20. package/dist/NumBinaryEditor-ILFP6DR7.js +284 -0
  21. package/dist/NumBinaryEditor-ILFP6DR7.js.map +7 -0
  22. package/dist/NumBinaryEditor.unit.spec-TNIH7GQB.js +317 -0
  23. package/dist/NumBinaryEditor.unit.spec-TNIH7GQB.js.map +7 -0
  24. package/dist/NumContEditor-7UR3QMO6.js +110 -0
  25. package/dist/NumContEditor-7UR3QMO6.js.map +7 -0
  26. package/dist/NumContEditor.unit.spec-P67AFEHM.js +169 -0
  27. package/dist/NumCustomBinEditor-H22J4K47.js +38 -0
  28. package/dist/NumCustomBinEditor.unit.spec-CO76BQPZ.js +402 -0
  29. package/dist/NumCustomBinEditor.unit.spec-CO76BQPZ.js.map +7 -0
  30. package/dist/NumDiscreteEditor-TSUHVX77.js +175 -0
  31. package/dist/NumDiscreteEditor-TSUHVX77.js.map +7 -0
  32. package/dist/NumDiscreteEditor.unit.spec-RGC3GT22.js +238 -0
  33. package/dist/NumDiscreteEditor.unit.spec-RGC3GT22.js.map +7 -0
  34. package/dist/NumRegularBinEditor-IRD27CE2.js +38 -0
  35. package/dist/NumRegularBinEditor.unit.spec-MUHVOK5P.js +283 -0
  36. package/dist/NumRegularBinEditor.unit.spec-MUHVOK5P.js.map +7 -0
  37. package/dist/NumSplineEditor-3V7RWHE2.js +215 -0
  38. package/dist/NumSplineEditor-3V7RWHE2.js.map +7 -0
  39. package/dist/NumSplineEditor.unit.spec-BUI7NPN4.js +229 -0
  40. package/dist/NumSplineEditor.unit.spec-BUI7NPN4.js.map +7 -0
  41. package/dist/NumericDensity-53KMCTDL.js +38 -0
  42. package/dist/NumericDensity.unit.spec-OKAQPQHR.js +423 -0
  43. package/dist/NumericDensity.unit.spec-OKAQPQHR.js.map +7 -0
  44. package/dist/NumericHandler-5QFNXVBA.js +39 -0
  45. package/dist/NumericHandler.unit.spec-OBITSUU3.js +219 -0
  46. package/dist/ProteomeInput-MM373EL3.js +394 -0
  47. package/dist/RunChart2-2L6T3ITZ.js +758 -0
  48. package/dist/SC-JKD3Z2X5.js +1112 -0
  49. package/dist/Volcano-STGBS7IJ.js +1404 -0
  50. package/dist/WSIViewer-LOBVUTOD.js +48562 -0
  51. package/dist/WsiSamplesPlot-D3L3AILR.js +165 -0
  52. package/dist/adSandbox-XO5HDSFW.js +38 -0
  53. package/dist/animatedBubbleChart-XKW6TCZP.js +553 -0
  54. package/dist/app-H7ABTG6X.js +49 -0
  55. package/dist/app-HJSPIKRQ.js +37 -0
  56. package/dist/app.js +19 -19
  57. package/dist/bam-R5QVHWGY.js +859 -0
  58. package/dist/barchart-OGCLBPQ2.js +47 -0
  59. package/dist/barchart.data-VBSWS5N7.js +21 -0
  60. package/dist/barchart.events-GZTY4IC3.js +47 -0
  61. package/dist/barchart.integration.spec-Z6ECNFSM.js +2243 -0
  62. package/dist/barchart2-DT42I747.js +314 -0
  63. package/dist/block-UYYJXSCM.js +6255 -0
  64. package/dist/block.init-43M53IMA.js +38 -0
  65. package/dist/block.mds.expressionrank-YH3IWMKM.js +359 -0
  66. package/dist/block.mds.geneboxplot-QS2IK37X.js +828 -0
  67. package/dist/block.mds.junction-7FF5BFEX.js +1545 -0
  68. package/dist/block.mds.svcnv-MMJYLL2W.js +6801 -0
  69. package/dist/block.svg-SA6DSUM2.js +164 -0
  70. package/dist/block.tk.aicheck-ZX5LZ2QO.js +283 -0
  71. package/dist/block.tk.ase-YXT4BOXK.js +365 -0
  72. package/dist/block.tk.bam-IMLRIOOV.js +1906 -0
  73. package/dist/block.tk.bedgraphdot-UYQLL7HM.js +384 -0
  74. package/dist/block.tk.bigwig.ui-WUVLVRSM.js +211 -0
  75. package/dist/block.tk.hicstraw-N4SJGF7H.js +823 -0
  76. package/dist/block.tk.junction-LZWHFKWJ.js +2364 -0
  77. package/dist/block.tk.junction.textmatrixui-B626NYPA.js +199 -0
  78. package/dist/block.tk.ld-6VWUMAP6.js +99 -0
  79. package/dist/block.tk.menu-RRN2UPQX.js +1029 -0
  80. package/dist/block.tk.pgv-GYG3EI6P.js +944 -0
  81. package/dist/brainImaging-VIMLETC5.js +423 -0
  82. package/dist/brainRegions-DRYZT5K5.js +221 -0
  83. package/dist/bubbleHeatmap-Y4SGMVJY.js +383 -0
  84. package/dist/cellTypeBubbleHeatmap-QW37ZT5W.js +283 -0
  85. package/dist/chunk-2Y5C7GJS.js +299 -0
  86. package/dist/chunk-2ZTCRUOL.js +2899 -0
  87. package/dist/chunk-3O6XFPUB.js +243 -0
  88. package/dist/chunk-3O6XFPUB.js.map +7 -0
  89. package/dist/chunk-3P74DH6P.js +236 -0
  90. package/dist/chunk-3PPCZPLN.js +98 -0
  91. package/dist/chunk-4H4WJJ2G.js +54 -0
  92. package/dist/chunk-4L2OSDQ6.js +626 -0
  93. package/dist/chunk-4USLEUNR.js +1812 -0
  94. package/dist/chunk-5ITKSTJX.js +34 -0
  95. package/dist/chunk-5VMYXVZG.js +272 -0
  96. package/dist/chunk-75T7ESEO.js +61 -0
  97. package/dist/chunk-75T7ESEO.js.map +7 -0
  98. package/dist/chunk-7ZVFLC2V.js +134 -0
  99. package/dist/chunk-A7OWXDYA.js +129 -0
  100. package/dist/chunk-A7OWXDYA.js.map +7 -0
  101. package/dist/chunk-C2JHLAKV.js +222 -0
  102. package/dist/chunk-C2JHLAKV.js.map +7 -0
  103. package/dist/chunk-C5IAIOCA.js +102 -0
  104. package/dist/chunk-CIRCVMWE.js +102 -0
  105. package/dist/chunk-CLTRQZGJ.js +170 -0
  106. package/dist/chunk-CRH37PEV.js +203 -0
  107. package/dist/chunk-DCNDZOI3.js +6364 -0
  108. package/dist/chunk-DCR4QQ5Y.js +194 -0
  109. package/dist/chunk-DKAHHMKN.js +5070 -0
  110. package/dist/chunk-E2GHT7RH.js +39 -0
  111. package/dist/chunk-EQCVSUAF.js +37 -0
  112. package/dist/chunk-ETK36FXN.js +384 -0
  113. package/dist/chunk-FCOX5Q4Q.js +58 -0
  114. package/dist/chunk-FVL37XFU.js +834 -0
  115. package/dist/chunk-FXQXCOII.js +101 -0
  116. package/dist/chunk-FXQXCOII.js.map +7 -0
  117. package/dist/chunk-FXS4I3Z3.js +176 -0
  118. package/dist/chunk-FYAY6D3O.js +123 -0
  119. package/dist/chunk-GEQUQ3GG.js +1652 -0
  120. package/dist/chunk-GEQUQ3GG.js.map +7 -0
  121. package/dist/chunk-GL44X7JY.js +302 -0
  122. package/dist/chunk-HQAJVJCQ.js +195 -0
  123. package/dist/chunk-HQAJVJCQ.js.map +7 -0
  124. package/dist/chunk-IQVBMLFI.js +446 -0
  125. package/dist/chunk-IYT5PNYJ.js +148 -0
  126. package/dist/chunk-J6EP7JPJ.js +1245 -0
  127. package/dist/chunk-JKMN7XOP.js +1114 -0
  128. package/dist/chunk-JKMN7XOP.js.map +7 -0
  129. package/dist/chunk-JLGCQ2F4.js +480 -0
  130. package/dist/chunk-JQT67SWE.js +263 -0
  131. package/dist/chunk-JQYPRW42.js +217 -0
  132. package/dist/chunk-K4IGOJPT.js +160 -0
  133. package/dist/chunk-K6OVOHIZ.js +21483 -0
  134. package/dist/chunk-K6OVOHIZ.js.map +7 -0
  135. package/dist/chunk-KPTPDZX2.js +56 -0
  136. package/dist/chunk-KTB7KXC2.js +187 -0
  137. package/dist/chunk-KW7MKBGF.js +2681 -0
  138. package/dist/chunk-KZFVYDVK.js +448 -0
  139. package/dist/chunk-L44P5N4U.js +314 -0
  140. package/dist/chunk-L44P5N4U.js.map +7 -0
  141. package/dist/chunk-M77DCLJX.js +100 -0
  142. package/dist/chunk-MFEYO6FB.js +4306 -0
  143. package/dist/chunk-MFEYO6FB.js.map +7 -0
  144. package/dist/chunk-MGGAWPTR.js +54 -0
  145. package/dist/chunk-MKPU5TWN.js +194 -0
  146. package/dist/chunk-MKPU5TWN.js.map +7 -0
  147. package/dist/chunk-MUJMZ6W6.js +129 -0
  148. package/dist/chunk-NRP55BOF.js +50 -0
  149. package/dist/chunk-O5KFJBU3.js +1942 -0
  150. package/dist/chunk-Q4AP5L7R.js +1311 -0
  151. package/dist/chunk-Q4AP5L7R.js.map +7 -0
  152. package/dist/chunk-QHPN3JJZ.js +55 -0
  153. package/dist/chunk-QSGXZEUU.js +465 -0
  154. package/dist/chunk-R3ARQMM4.js +119 -0
  155. package/dist/chunk-RIQT2LSR.js +479 -0
  156. package/dist/chunk-RVRRHEUG.js +26 -0
  157. package/dist/chunk-SOCGXVIL.js +2327 -0
  158. package/dist/chunk-SZHFBRRT.js +514 -0
  159. package/dist/chunk-TOYMIFHN.js +381 -0
  160. package/dist/chunk-TPVHGI7Q.js +368 -0
  161. package/dist/chunk-TRQUMV4T.js +254 -0
  162. package/dist/chunk-UFLJ6PRI.js +387 -0
  163. package/dist/chunk-UFLJ6PRI.js.map +7 -0
  164. package/dist/chunk-UJN2RH5R.js +411 -0
  165. package/dist/chunk-UJN2RH5R.js.map +7 -0
  166. package/dist/chunk-UO7MD3XA.js +556 -0
  167. package/dist/chunk-UONOFG2J.js +274 -0
  168. package/dist/chunk-V2DU2OXH.js +1710 -0
  169. package/dist/chunk-WWXXSQ2M.js +31 -0
  170. package/dist/chunk-X6VTVZY7.js +263 -0
  171. package/dist/chunk-X7KRSZQT.js +2784 -0
  172. package/dist/chunk-XFAL46LZ.js +102 -0
  173. package/dist/chunk-XFAL46LZ.js.map +7 -0
  174. package/dist/chunk-XIBY5I6F.js +240 -0
  175. package/dist/chunk-XIBY5I6F.js.map +7 -0
  176. package/dist/chunk-XJBSBIZ4.js +70 -0
  177. package/dist/chunk-XRQWZJJ3.js +347 -0
  178. package/dist/chunk-XZ4M3QAV.js +158 -0
  179. package/dist/chunk-YMP4YKBN.js +142 -0
  180. package/dist/chunk-YUURGVV3.js +275 -0
  181. package/dist/chunk-Z7VK2AMA.js +292 -0
  182. package/dist/chunk-ZFJUVP2N.js +787 -0
  183. package/dist/chunk-ZH7JPYQE.js +14 -0
  184. package/dist/chunk-ZVDOSFWU.js +276 -0
  185. package/dist/cohort-CEYVJJ7E.js +75 -0
  186. package/dist/condition-QSOFP4MY.js +332 -0
  187. package/dist/controls-QYHARIEY.js +39 -0
  188. package/dist/controls.config-3OO3JK6E.js +39 -0
  189. package/dist/correlation-TOI3TMYL.js +102 -0
  190. package/dist/cuminc-L7OJTYXC.js +1148 -0
  191. package/dist/cuminc.integration.spec-LSWV3KOF.js +678 -0
  192. package/dist/customdata.inputui-VMB3HSSC.js +289 -0
  193. package/dist/dataDownload-NPSWNOAG.js +330 -0
  194. package/dist/dataDownload.integration.spec-J6FRFLBK.js +193 -0
  195. package/dist/databrowser.ui-GVYWG6YI.js +432 -0
  196. package/dist/dictionary-GD67R72W.js +118 -0
  197. package/dist/dnaMethylation-S7OSGLAF.js +38 -0
  198. package/dist/dnaMethylation.integration.spec-ETMMJNDE.js +203 -0
  199. package/dist/dofetch-7GURQS65.js +51 -0
  200. package/dist/e2pca-ZIIPBJFN.js +350 -0
  201. package/dist/ep-A2HAL5WA.js +1256 -0
  202. package/dist/expclust.gdc.spec-ZSILLYNI.js +307 -0
  203. package/dist/facet-74LKIPTA.js +521 -0
  204. package/dist/gb-C3MPQXKN.js +88 -0
  205. package/dist/geneExpClustering-HYCFUUTU.js +249 -0
  206. package/dist/geneExpression-GATKMJJ5.js +313 -0
  207. package/dist/geneExpression-JXSAP2H7.js +38 -0
  208. package/dist/geneExpression.unit.spec-CODZYFHZ.js +102 -0
  209. package/dist/geneORA-LJRIR4VV.js +278 -0
  210. package/dist/geneRanking-TWLBKQZG.js +553 -0
  211. package/dist/geneVariant-35RQHTCK.js +41 -0
  212. package/dist/geneVariant-TMJJIMUF.js +39 -0
  213. package/dist/geneVariant.integration.spec-FIQ7IBSD.js +198 -0
  214. package/dist/genefusion.ui-SOBESSNO.js +308 -0
  215. package/dist/geneset-JXEJFEK2.js +208 -0
  216. package/dist/genomeBrowser.spec-25ZO5S2X.js +281 -0
  217. package/dist/grin2-CW4RPVPI.js +75 -0
  218. package/dist/grin2-EI5BVP4E.js +1143 -0
  219. package/dist/hierCluster-OBBPQH24.js +59 -0
  220. package/dist/hierCluster-SDH3TJQY.js +63 -0
  221. package/dist/hierCluster.config-DO67TCXI.js +40 -0
  222. package/dist/hierCluster.integration.spec-EB24C4VZ.js +488 -0
  223. package/dist/hierCluster.interactivity-LGEAFT5T.js +54 -0
  224. package/dist/hierCluster.renderers-FXDCU3PN.js +21 -0
  225. package/dist/imagePlot-LGLFG2QZ.js +163 -0
  226. package/dist/importPlot-R2WRZGZU.js +8 -0
  227. package/dist/isoformExpression-KI3WY5M3.js +40 -0
  228. package/dist/isoformExpression.unit.spec-OQRG2DDU.js +242 -0
  229. package/dist/junction-6SWFPNM5.js +41 -0
  230. package/dist/junction.customTerm-MDBOU6I7.js +18 -0
  231. package/dist/junction.unit.spec-5TZFITSU.js +187 -0
  232. package/dist/launch.adhoc-HCX2RQLB.js +42 -0
  233. package/dist/leftlabel.sample-OI6XCXTQ.js +263 -0
  234. package/dist/lollipop-SOSOYHYL.js +171 -0
  235. package/dist/maf-73RLOEVN.js +459 -0
  236. package/dist/maftimeline-UOMLYUNI.js +593 -0
  237. package/dist/matrix-5QWDN6SI.js +63 -0
  238. package/dist/matrix-SKPVVDVR.js +58 -0
  239. package/dist/matrix.cells-CFSI2NWU.js +28 -0
  240. package/dist/matrix.config-HE64MAL4.js +41 -0
  241. package/dist/matrix.data-HTUZXQAM.js +25 -0
  242. package/dist/matrix.groups-ZFKWVNMX.js +27 -0
  243. package/dist/matrix.integration.spec-YKJ4LZFY.js +3072 -0
  244. package/dist/matrix.interactivity-YB5G5W5T.js +42 -0
  245. package/dist/matrix.layout-MFG65V7K.js +44 -0
  246. package/dist/matrix.legend-7MIZZJVB.js +22 -0
  247. package/dist/matrix.renderers-PCZFHDDZ.js +38 -0
  248. package/dist/matrix.serieses-7KYX3KAY.js +21 -0
  249. package/dist/matrix.sort-CR3J45MQ.js +27 -0
  250. package/dist/matrix.sort.unit.spec-GEAM5DSU.js +472 -0
  251. package/dist/matrix.sorterUi-YSKIX6B6.js +18 -0
  252. package/dist/matrix.sorterUi.unit.spec-2MW64QS5.js +342 -0
  253. package/dist/mavb-YMHJXCGA.js +732 -0
  254. package/dist/mds.fimo-PTEDRMLQ.js +518 -0
  255. package/dist/mds.samplescatterplot-7R7PLVQJ.js +1550 -0
  256. package/dist/mds.survivalplot-F3EENMFQ.js +483 -0
  257. package/dist/numericDictTermCluster-3HXLMURH.js +65 -0
  258. package/dist/oncomatrix-27VVSMZB.js +295 -0
  259. package/dist/oncomatrix.spec-F43Y7CWN.js +448 -0
  260. package/dist/plot.2dvaf-MYFQSWIA.js +377 -0
  261. package/dist/plot.app-36QWCKXR.js +41 -0
  262. package/dist/plot.barplot-535EP7XT.js +102 -0
  263. package/dist/plot.boxplot-6IBP7VEB.js +152 -0
  264. package/dist/plot.brainImaging-M4HPNXZH.js +51 -0
  265. package/dist/plot.disco-HIT6GR44.js +102 -0
  266. package/dist/plot.dzi-W66SBKTH.js +33 -0
  267. package/dist/plot.ssgq-MI2OMCUY.js +139 -0
  268. package/dist/plot.vaf2cov-F4CBMLRA.js +259 -0
  269. package/dist/plot.wsi-7M5KTNFC.js +36 -0
  270. package/dist/polar2-7VSWGT4U.js +237 -0
  271. package/dist/profileForms-DFPCNJW2.js +940 -0
  272. package/dist/profilePlot-ECTPPVB2.js +54 -0
  273. package/dist/proteinView-6ELOLOIU.js +1568 -0
  274. package/dist/proteomeCohortCompare-V2FMWI62.js +799 -0
  275. package/dist/pseudbulk.unit.spec-KV6URTXC.js +91 -0
  276. package/dist/pseudobulk-6ZRFCE65.js +40 -0
  277. package/dist/qualitative-3B62RUOB.js +43 -0
  278. package/dist/qualitative-GJDQBD7L.js +220 -0
  279. package/dist/radar2-4QQER64E.js +332 -0
  280. package/dist/radarFacility2-MZKORRDY.js +340 -0
  281. package/dist/regression-GZ2YNX6Y.js +56 -0
  282. package/dist/regression.inputs-ZEFDNSVT.js +48 -0
  283. package/dist/regression.inputs.term-O2FQBX7L.js +48 -0
  284. package/dist/regression.inputs.values.table-63BQKSZP.js +45 -0
  285. package/dist/regression.integration.spec-KDHC3KDU.js +838 -0
  286. package/dist/regression.integration.spec-KDHC3KDU.js.map +7 -0
  287. package/dist/regression.results-5J3QM4RX.js +40 -0
  288. package/dist/regression.spec-WZAZTDDA.js +708 -0
  289. package/dist/render-MZTEXVU5.js +38 -0
  290. package/dist/report-M5TYHH2W.js +222 -0
  291. package/dist/sampleView-QYTLYJEW.js +48 -0
  292. package/dist/samplelst-FN3Q7M7A.js +111 -0
  293. package/dist/samplematrix-Z5FVODO7.js +2198 -0
  294. package/dist/sc-4CHP5SYP.js +86 -0
  295. package/dist/scatter-UOPJYXL3.js +890 -0
  296. package/dist/scatter-UOPJYXL3.js.map +7 -0
  297. package/dist/selectGenomeWithTklst-WMAHGT4F.js +134 -0
  298. package/dist/singleCellCellType-XPWENB6V.js +38 -0
  299. package/dist/singleCellCellType.unit.spec-QK56PHKW.js +159 -0
  300. package/dist/singleCellGeneExpression-4CEVDVYF.js +38 -0
  301. package/dist/singleCellGeneExpression.unit.spec-ZYRLBVF5.js +153 -0
  302. package/dist/singleCellPlot-JS74VUGC.js +54 -0
  303. package/dist/singlecell-5XYOHMWJ.js +1572 -0
  304. package/dist/singlecell-OO77XBDD.js +86 -0
  305. package/dist/snp-X5ZILM5J.js +38 -0
  306. package/dist/snp.unit.spec-V23G3JLJ.js +176 -0
  307. package/dist/snplocus-U5UIIUWR.js +208 -0
  308. package/dist/spliceevent.a53ss.diagram-YDFVSDMT.js +151 -0
  309. package/dist/spliceevent.exonskip.diagram-VDKN5JBE.js +283 -0
  310. package/dist/spliceevent.noeventdiagram-EFPFRUFI.js +460 -0
  311. package/dist/ssGSEA-LKJW5OQK.js +38 -0
  312. package/dist/ssGSEA.unit.spec-7WCZVEP2.js +88 -0
  313. package/dist/studyCatalog-EU33KE5H.js +358 -0
  314. package/dist/summarizeCnvGeneexp-QL25OQNB.js +163 -0
  315. package/dist/summarizeGeneexpSurvival-B7HTCH7L.js +110 -0
  316. package/dist/summarizeMutationCnv-DFAPX2JE.js +164 -0
  317. package/dist/summarizeMutationDiagnosis-HCSDSVII.js +40 -0
  318. package/dist/summarizeMutationSurvival-6WEASSA2.js +99 -0
  319. package/dist/summary-BWYXE77G.js +49 -0
  320. package/dist/summary.integration.spec-AVGSW5MF.js +414 -0
  321. package/dist/summaryInput-MOQ6HUCX.js +231 -0
  322. package/dist/sunburst-EZDHVJCL.js +284 -0
  323. package/dist/survival-5TFMM7NP.js +1239 -0
  324. package/dist/survival-IEVELTC4.js +58 -0
  325. package/dist/survival.integration.spec-HHWP3R4H.js +958 -0
  326. package/dist/svgraph-55XRIYJW.js +1387 -0
  327. package/dist/svmr-CMEBFSRO.js +3842 -0
  328. package/dist/table-LTWQ3TLQ.js +200 -0
  329. package/dist/termCollection-CPQXYBFA.js +38 -0
  330. package/dist/termCollection-ZWOH273K.js +257 -0
  331. package/dist/termCollection.unit.spec-RK7VATLU.js +304 -0
  332. package/dist/termCollectionFractionSelection-Z4ZRW63R.js +47 -0
  333. package/dist/termCollectionFractionSelection.unit.spec-3CS7DPNU.js +193 -0
  334. package/dist/tk-4NNTWWLK.js +46 -0
  335. package/dist/tk-RHWJJXH2.js +1127 -0
  336. package/dist/tp.ui-DPN5UN6U.js +1459 -0
  337. package/dist/tvs.density-LMRZZO4D.js +19 -0
  338. package/dist/tvs.dt-ARPDFRVM.js +39 -0
  339. package/dist/tvs.dtcnv.categorical-POS6WQK6.js +40 -0
  340. package/dist/tvs.dtcnv.continuous-5OETJ7JU.js +72 -0
  341. package/dist/tvs.dtfusion-ERYVI3DW.js +40 -0
  342. package/dist/tvs.dtitd-KTZZYEWU.js +40 -0
  343. package/dist/tvs.dtsnvindel-TGUAX3RN.js +40 -0
  344. package/dist/tvs.dtsv-AM63OIL6.js +40 -0
  345. package/dist/tvs.numeric-MQPO5XUQ.js +22 -0
  346. package/dist/tvs.samplelst-VW2NOQ2C.js +104 -0
  347. package/dist/tvs.termCollection-O4ZSWJFA.js +129 -0
  348. package/dist/violin-ZQ3DEYGR.js +46 -0
  349. package/dist/violin.integration.spec-PVEF77HB.js +1425 -0
  350. package/dist/violin.interactivity-FYU4TCFO.js +38 -0
  351. package/dist/violin.renderer-XAERGBMV.js +40 -0
  352. package/dist/vocabulary-ECJX27W2.js +41 -0
  353. package/package.json +3 -3
  354. package/dist/2dmaf-RRV3ORZR.js +0 -1373
  355. package/dist/AIProjectAdmin-DKLEFCGX.js +0 -958
  356. package/dist/AppHeader-WQ2F7HZY.js +0 -835
  357. package/dist/BoxPlot-5JQCYENZ.js +0 -1218
  358. package/dist/CorrelationVolcano-HR6IP2SZ.js +0 -619
  359. package/dist/DE-DAW6ZKM7.js +0 -95
  360. package/dist/DEinput-XCR4VMR3.js +0 -409
  361. package/dist/DifferentialAnalysis-SETJAZEN.js +0 -243
  362. package/dist/Disco-QEBEVQS2.js +0 -3392
  363. package/dist/Disco.UI-OYVL7UBI.js +0 -248
  364. package/dist/DmrPlot-CWBQDZL7.js +0 -642
  365. package/dist/GB-5PYCR4SV.js +0 -1396
  366. package/dist/GSEA-6UKMI6GY.js +0 -846
  367. package/dist/GeneExpInput-2N62XM7Z.js +0 -367
  368. package/dist/Geomap-ANMR32HE.js +0 -89
  369. package/dist/HicApp-WHPUPHEM.js +0 -2250
  370. package/dist/IDCViewer-FWXRE4AX.js +0 -10817
  371. package/dist/NumBinaryEditor-VG5KOGDA.js +0 -271
  372. package/dist/NumBinaryEditor-VG5KOGDA.js.map +0 -7
  373. package/dist/NumBinaryEditor.unit.spec-UCGFZS3P.js +0 -286
  374. package/dist/NumBinaryEditor.unit.spec-UCGFZS3P.js.map +0 -7
  375. package/dist/NumContEditor-J52RON3G.js +0 -109
  376. package/dist/NumContEditor-J52RON3G.js.map +0 -7
  377. package/dist/NumContEditor.unit.spec-5GTWUJEL.js +0 -169
  378. package/dist/NumCustomBinEditor-GM2OJMOX.js +0 -38
  379. package/dist/NumCustomBinEditor.unit.spec-3PGJ25J4.js +0 -284
  380. package/dist/NumCustomBinEditor.unit.spec-3PGJ25J4.js.map +0 -7
  381. package/dist/NumDiscreteEditor-2CAKT3Y4.js +0 -179
  382. package/dist/NumDiscreteEditor-2CAKT3Y4.js.map +0 -7
  383. package/dist/NumDiscreteEditor.unit.spec-XCWSJTRT.js +0 -202
  384. package/dist/NumDiscreteEditor.unit.spec-XCWSJTRT.js.map +0 -7
  385. package/dist/NumRegularBinEditor-CZYITY5L.js +0 -38
  386. package/dist/NumRegularBinEditor.unit.spec-OUBZ5XB3.js +0 -227
  387. package/dist/NumRegularBinEditor.unit.spec-OUBZ5XB3.js.map +0 -7
  388. package/dist/NumSplineEditor-TWRL5AQQ.js +0 -198
  389. package/dist/NumSplineEditor-TWRL5AQQ.js.map +0 -7
  390. package/dist/NumSplineEditor.unit.spec-5P6NQZ3N.js +0 -199
  391. package/dist/NumSplineEditor.unit.spec-5P6NQZ3N.js.map +0 -7
  392. package/dist/NumericDensity-JSOFOEH2.js +0 -38
  393. package/dist/NumericDensity.unit.spec-REUKHMKK.js +0 -221
  394. package/dist/NumericDensity.unit.spec-REUKHMKK.js.map +0 -7
  395. package/dist/NumericHandler-UZOGKPKB.js +0 -39
  396. package/dist/NumericHandler.unit.spec-X2DAED4O.js +0 -219
  397. package/dist/ProteomeInput-GBVCLNS7.js +0 -394
  398. package/dist/RunChart2-N4JPWNVV.js +0 -758
  399. package/dist/SC-RCZT5BRP.js +0 -1112
  400. package/dist/Volcano-2BQ6SYHO.js +0 -1404
  401. package/dist/WSIViewer-UDA4WIRT.js +0 -48562
  402. package/dist/WsiSamplesPlot-DYSFMD22.js +0 -165
  403. package/dist/adSandbox-5BUDCAER.js +0 -38
  404. package/dist/animatedBubbleChart-N6MBJ4X3.js +0 -553
  405. package/dist/app-O64TGDFH.js +0 -37
  406. package/dist/app-Y2STUISK.js +0 -49
  407. package/dist/bam-2EOABVGT.js +0 -859
  408. package/dist/barchart-UHCTYRMJ.js +0 -47
  409. package/dist/barchart.data-LSK2P2PR.js +0 -21
  410. package/dist/barchart.events-Y4H2GADS.js +0 -47
  411. package/dist/barchart.integration.spec-BFGZFECA.js +0 -2243
  412. package/dist/barchart2-VIZKZRMP.js +0 -314
  413. package/dist/block-BGSSF6XP.js +0 -6255
  414. package/dist/block.init-H7RKUIHG.js +0 -38
  415. package/dist/block.mds.expressionrank-MA3HGT7S.js +0 -359
  416. package/dist/block.mds.geneboxplot-CWT5DM5T.js +0 -828
  417. package/dist/block.mds.junction-P4I7O73X.js +0 -1545
  418. package/dist/block.mds.svcnv-NSPEY43S.js +0 -6801
  419. package/dist/block.svg-DP4G3LNQ.js +0 -164
  420. package/dist/block.tk.aicheck-EBLTOWKZ.js +0 -283
  421. package/dist/block.tk.ase-X7WKQOFS.js +0 -365
  422. package/dist/block.tk.bam-OIP3TS3N.js +0 -1906
  423. package/dist/block.tk.bedgraphdot-2DDF55J3.js +0 -384
  424. package/dist/block.tk.bigwig.ui-S2SMAEXM.js +0 -211
  425. package/dist/block.tk.hicstraw-4OIG4TBZ.js +0 -823
  426. package/dist/block.tk.junction-52OWEQUN.js +0 -2364
  427. package/dist/block.tk.junction.textmatrixui-64YOSZLW.js +0 -199
  428. package/dist/block.tk.ld-3AMNHBDY.js +0 -99
  429. package/dist/block.tk.menu-4724DJXL.js +0 -1029
  430. package/dist/block.tk.pgv-2SIOPWYI.js +0 -944
  431. package/dist/brainImaging-D43CQQN6.js +0 -423
  432. package/dist/brainRegions-HJ2VGL3L.js +0 -221
  433. package/dist/bubbleHeatmap-IL44M4QZ.js +0 -383
  434. package/dist/cellTypeBubbleHeatmap-NQP7RCZO.js +0 -283
  435. package/dist/chunk-26APRXD3.js +0 -254
  436. package/dist/chunk-2GLA2SWU.js +0 -160
  437. package/dist/chunk-3BGFM7Q4.js +0 -1275
  438. package/dist/chunk-3BGFM7Q4.js.map +0 -7
  439. package/dist/chunk-3SHZTAGF.js +0 -193
  440. package/dist/chunk-3SHZTAGF.js.map +0 -7
  441. package/dist/chunk-46X6AQ7Z.js +0 -123
  442. package/dist/chunk-4HZN6PMU.js +0 -129
  443. package/dist/chunk-4KRGCOTL.js +0 -479
  444. package/dist/chunk-5DMVORBB.js +0 -98
  445. package/dist/chunk-5QMBB4SK.js +0 -1245
  446. package/dist/chunk-5RVA43MN.js +0 -274
  447. package/dist/chunk-5T3MOOEJ.js +0 -379
  448. package/dist/chunk-5T3MOOEJ.js.map +0 -7
  449. package/dist/chunk-5T3ZDRTS.js +0 -70
  450. package/dist/chunk-5ZTVJSYI.js +0 -834
  451. package/dist/chunk-6JYQGZ3Y.js +0 -446
  452. package/dist/chunk-6OUBUUC2.js +0 -626
  453. package/dist/chunk-6PNPHACF.js +0 -1652
  454. package/dist/chunk-6PNPHACF.js.map +0 -7
  455. package/dist/chunk-7JRDJNLR.js +0 -263
  456. package/dist/chunk-7PIHRWGG.js +0 -102
  457. package/dist/chunk-7PJNKPQB.js +0 -275
  458. package/dist/chunk-AGLAYNXP.js +0 -170
  459. package/dist/chunk-B7VDZ6VF.js +0 -399
  460. package/dist/chunk-B7VDZ6VF.js.map +0 -7
  461. package/dist/chunk-BGTBRAJ6.js +0 -50
  462. package/dist/chunk-BNAO6N5X.js +0 -2899
  463. package/dist/chunk-BQHPJY2M.js +0 -347
  464. package/dist/chunk-BZTWTH4Y.js +0 -87
  465. package/dist/chunk-BZTWTH4Y.js.map +0 -7
  466. package/dist/chunk-CY4RQ5L6.js +0 -1710
  467. package/dist/chunk-D565DNJD.js +0 -236
  468. package/dist/chunk-DH3LAQKT.js +0 -384
  469. package/dist/chunk-E3VF4RHJ.js +0 -381
  470. package/dist/chunk-EGPNRSPF.js +0 -292
  471. package/dist/chunk-FACITNG5.js +0 -142
  472. package/dist/chunk-GNS6CQMA.js +0 -119
  473. package/dist/chunk-H3N4KYKL.js +0 -2327
  474. package/dist/chunk-H3VWJH4U.js +0 -14
  475. package/dist/chunk-HEVKBSN6.js +0 -222
  476. package/dist/chunk-HEVKBSN6.js.map +0 -7
  477. package/dist/chunk-HQUYAZQY.js +0 -514
  478. package/dist/chunk-IUBBQPO2.js +0 -146
  479. package/dist/chunk-IUBBQPO2.js.map +0 -7
  480. package/dist/chunk-J4USU73L.js +0 -26
  481. package/dist/chunk-JNITUVXP.js +0 -41
  482. package/dist/chunk-JNITUVXP.js.map +0 -7
  483. package/dist/chunk-JVPWIVDT.js +0 -1812
  484. package/dist/chunk-KU7YH7MV.js +0 -217
  485. package/dist/chunk-KZILNGAV.js +0 -187
  486. package/dist/chunk-LSEFWW72.js +0 -94
  487. package/dist/chunk-LSEFWW72.js.map +0 -7
  488. package/dist/chunk-M66VDGSH.js +0 -272
  489. package/dist/chunk-MJN6RDXB.js +0 -302
  490. package/dist/chunk-MPNEZ6EL.js +0 -31
  491. package/dist/chunk-MPSLUEI4.js +0 -314
  492. package/dist/chunk-MPSLUEI4.js.map +0 -7
  493. package/dist/chunk-NIXFCC7X.js +0 -368
  494. package/dist/chunk-NODQZTWK.js +0 -276
  495. package/dist/chunk-NRYHIWBS.js +0 -1942
  496. package/dist/chunk-NUWJ4RN7.js +0 -465
  497. package/dist/chunk-NVTJ5AUT.js +0 -1102
  498. package/dist/chunk-NVTJ5AUT.js.map +0 -7
  499. package/dist/chunk-NZRMHM76.js +0 -158
  500. package/dist/chunk-OOWXMY7U.js +0 -55
  501. package/dist/chunk-OTTMHVYH.js +0 -787
  502. package/dist/chunk-QDX2XUNF.js +0 -58
  503. package/dist/chunk-QYXCHZ6U.js +0 -4282
  504. package/dist/chunk-QYXCHZ6U.js.map +0 -7
  505. package/dist/chunk-R6NM2HSH.js +0 -556
  506. package/dist/chunk-RJOY6A74.js +0 -56
  507. package/dist/chunk-ROMW4AK2.js +0 -102
  508. package/dist/chunk-RR5U35N7.js +0 -230
  509. package/dist/chunk-RR5U35N7.js.map +0 -7
  510. package/dist/chunk-RVKADD4L.js +0 -148
  511. package/dist/chunk-S5ZCK44Z.js +0 -54
  512. package/dist/chunk-SNRIVNQ3.js +0 -176
  513. package/dist/chunk-STI7BO3P.js +0 -2681
  514. package/dist/chunk-TAM7UCAI.js +0 -263
  515. package/dist/chunk-TDKMBQSM.js +0 -5070
  516. package/dist/chunk-TKW5TW4Z.js +0 -21449
  517. package/dist/chunk-TKW5TW4Z.js.map +0 -7
  518. package/dist/chunk-TQTYW66I.js +0 -2784
  519. package/dist/chunk-U3NTH4CS.js +0 -54
  520. package/dist/chunk-UEGQVQD6.js +0 -34
  521. package/dist/chunk-ULESDMUT.js +0 -480
  522. package/dist/chunk-UUKSL7QC.js +0 -134
  523. package/dist/chunk-VUPWQCDR.js +0 -194
  524. package/dist/chunk-W76X6W73.js +0 -100
  525. package/dist/chunk-W7OS7BNM.js +0 -203
  526. package/dist/chunk-WKNI3HRQ.js +0 -39
  527. package/dist/chunk-WTTD6DUL.js +0 -6364
  528. package/dist/chunk-WXPFMVU6.js +0 -299
  529. package/dist/chunk-XNWUI5VL.js +0 -37
  530. package/dist/chunk-YBLTSYQV.js +0 -216
  531. package/dist/chunk-YBLTSYQV.js.map +0 -7
  532. package/dist/chunk-Z7VDFWIP.js +0 -126
  533. package/dist/chunk-Z7VDFWIP.js.map +0 -7
  534. package/dist/chunk-ZEKIUYN3.js +0 -448
  535. package/dist/cohort-OWLNJZVH.js +0 -75
  536. package/dist/condition-L2IXP6WH.js +0 -332
  537. package/dist/controls-2S5QVWUC.js +0 -39
  538. package/dist/controls.config-3AJKR4ZZ.js +0 -39
  539. package/dist/correlation-DXTAWSLU.js +0 -102
  540. package/dist/cuminc-WQB6FHVS.js +0 -1148
  541. package/dist/cuminc.integration.spec-WAYRLHUH.js +0 -678
  542. package/dist/customdata.inputui-7WH2NJGB.js +0 -289
  543. package/dist/dataDownload-HM4UYOBO.js +0 -330
  544. package/dist/dataDownload.integration.spec-F5CO4BWA.js +0 -193
  545. package/dist/databrowser.ui-E2YOG3L4.js +0 -432
  546. package/dist/dictionary-EEPTFDYD.js +0 -118
  547. package/dist/dnaMethylation-N3WNK6XA.js +0 -38
  548. package/dist/dnaMethylation.integration.spec-AIYRTFMR.js +0 -203
  549. package/dist/dofetch-YKYPEJTQ.js +0 -51
  550. package/dist/e2pca-JEZIGVB2.js +0 -350
  551. package/dist/ep-5FMH2MLV.js +0 -1256
  552. package/dist/expclust.gdc.spec-FR26VSUA.js +0 -307
  553. package/dist/facet-5YYY3MUN.js +0 -521
  554. package/dist/gb-WGEVO7L2.js +0 -88
  555. package/dist/geneExpClustering-DHE6XJHV.js +0 -249
  556. package/dist/geneExpression-5NWQXMJ3.js +0 -313
  557. package/dist/geneExpression-VWUMM2LU.js +0 -38
  558. package/dist/geneExpression.unit.spec-HBU3WTZ4.js +0 -102
  559. package/dist/geneORA-3VWFWDYI.js +0 -278
  560. package/dist/geneRanking-PKDVD5OD.js +0 -553
  561. package/dist/geneVariant-IFIJQXH4.js +0 -39
  562. package/dist/geneVariant-WZSOG4GI.js +0 -41
  563. package/dist/geneVariant.integration.spec-6KQMWVHR.js +0 -198
  564. package/dist/genefusion.ui-C4NTALL3.js +0 -308
  565. package/dist/geneset-RJAULSKC.js +0 -208
  566. package/dist/genomeBrowser.spec-42OTTMGO.js +0 -281
  567. package/dist/grin2-26O6YDDY.js +0 -75
  568. package/dist/grin2-FT5BQJMB.js +0 -1143
  569. package/dist/hierCluster-GJPPMFNR.js +0 -59
  570. package/dist/hierCluster-HMJF3PBE.js +0 -63
  571. package/dist/hierCluster.config-TAS7XKTU.js +0 -40
  572. package/dist/hierCluster.integration.spec-RLHQKX65.js +0 -488
  573. package/dist/hierCluster.interactivity-IKTAJ6CU.js +0 -54
  574. package/dist/hierCluster.renderers-I6WFZRNW.js +0 -21
  575. package/dist/imagePlot-N4OXNMVA.js +0 -163
  576. package/dist/importPlot-VMYXDP66.js +0 -8
  577. package/dist/isoformExpression-2KV64KMN.js +0 -40
  578. package/dist/isoformExpression.unit.spec-RG2VWEMG.js +0 -242
  579. package/dist/junction-VO4IGMW2.js +0 -41
  580. package/dist/junction.customTerm-EFMHHVWA.js +0 -18
  581. package/dist/junction.unit.spec-NB24MR2B.js +0 -187
  582. package/dist/launch.adhoc-R3MO3VXK.js +0 -42
  583. package/dist/leftlabel.sample-SI6KMULD.js +0 -263
  584. package/dist/lollipop-XIVE4ANX.js +0 -171
  585. package/dist/maf-WRHD4OJF.js +0 -459
  586. package/dist/maftimeline-IE6YKV7Y.js +0 -593
  587. package/dist/matrix-ALBCAZP5.js +0 -58
  588. package/dist/matrix-W72XRUZD.js +0 -63
  589. package/dist/matrix.cells-DEEUWC74.js +0 -28
  590. package/dist/matrix.config-JYXQOXDT.js +0 -41
  591. package/dist/matrix.data-ENXNM6RP.js +0 -25
  592. package/dist/matrix.groups-EXSNNESB.js +0 -27
  593. package/dist/matrix.integration.spec-BW6U6PIW.js +0 -3072
  594. package/dist/matrix.interactivity-G6AL566T.js +0 -42
  595. package/dist/matrix.layout-UBUPIJ3R.js +0 -44
  596. package/dist/matrix.legend-S3P4F2DG.js +0 -22
  597. package/dist/matrix.renderers-IXFGXHJQ.js +0 -38
  598. package/dist/matrix.serieses-THHXUAPM.js +0 -21
  599. package/dist/matrix.sort-WJV6LIZI.js +0 -27
  600. package/dist/matrix.sort.unit.spec-LGMIL2LR.js +0 -472
  601. package/dist/matrix.sorterUi-VXVCOKEZ.js +0 -18
  602. package/dist/matrix.sorterUi.unit.spec-CWSEJ62U.js +0 -342
  603. package/dist/mavb-SXGKASQ5.js +0 -732
  604. package/dist/mds.fimo-EDOT3TDN.js +0 -518
  605. package/dist/mds.samplescatterplot-IXHNABKB.js +0 -1550
  606. package/dist/mds.survivalplot-KTTMHHII.js +0 -483
  607. package/dist/numericDictTermCluster-H4JSPW22.js +0 -65
  608. package/dist/oncomatrix-O4EMNUOT.js +0 -295
  609. package/dist/oncomatrix.spec-BME6CQWF.js +0 -448
  610. package/dist/plot.2dvaf-FDM4KXGT.js +0 -377
  611. package/dist/plot.app-UNUXG7ND.js +0 -41
  612. package/dist/plot.barplot-R333TMG2.js +0 -102
  613. package/dist/plot.boxplot-KQTYGUN3.js +0 -152
  614. package/dist/plot.brainImaging-YBYMHCEG.js +0 -51
  615. package/dist/plot.disco-CMDKRSOM.js +0 -102
  616. package/dist/plot.dzi-YAZA6RQS.js +0 -33
  617. package/dist/plot.ssgq-YKCOEXZP.js +0 -139
  618. package/dist/plot.vaf2cov-3TLMTFZS.js +0 -259
  619. package/dist/plot.wsi-7ADVYTQS.js +0 -36
  620. package/dist/polar2-O5SHVLP4.js +0 -237
  621. package/dist/profileForms-RLB6SMPQ.js +0 -940
  622. package/dist/profilePlot-AP52VLLO.js +0 -54
  623. package/dist/proteinView-S7WDBMQU.js +0 -1568
  624. package/dist/proteomeCohortCompare-ERVUM7RO.js +0 -799
  625. package/dist/pseudbulk.unit.spec-VSH7IM3R.js +0 -91
  626. package/dist/pseudobulk-7UKRLKQI.js +0 -40
  627. package/dist/qualitative-2D7MC4V5.js +0 -43
  628. package/dist/qualitative-2INAKDTJ.js +0 -220
  629. package/dist/radar2-ELVGQFZE.js +0 -332
  630. package/dist/radarFacility2-SDAZHGNG.js +0 -340
  631. package/dist/regression-CE54AQMY.js +0 -56
  632. package/dist/regression.inputs-SMC5CNPY.js +0 -48
  633. package/dist/regression.inputs.term-XS54IQC2.js +0 -48
  634. package/dist/regression.inputs.values.table-LNPM3MX5.js +0 -45
  635. package/dist/regression.integration.spec-6QSMYPWJ.js +0 -784
  636. package/dist/regression.integration.spec-6QSMYPWJ.js.map +0 -7
  637. package/dist/regression.results-25ZRRDEE.js +0 -40
  638. package/dist/regression.spec-EDWHFRPY.js +0 -708
  639. package/dist/render-SEB6GFXQ.js +0 -38
  640. package/dist/report-U6L3KBYG.js +0 -222
  641. package/dist/sampleView-QAAJ26KT.js +0 -48
  642. package/dist/samplelst-KYRXJSZN.js +0 -111
  643. package/dist/samplematrix-STLF2QA5.js +0 -2198
  644. package/dist/sc-HL6YSMDX.js +0 -86
  645. package/dist/scatter-BSGDMOC2.js +0 -851
  646. package/dist/scatter-BSGDMOC2.js.map +0 -7
  647. package/dist/selectGenomeWithTklst-4NHQDTE6.js +0 -134
  648. package/dist/singleCellCellType-3E2IU42J.js +0 -38
  649. package/dist/singleCellCellType.unit.spec-MC7ZRSMW.js +0 -159
  650. package/dist/singleCellGeneExpression-53UUGYTK.js +0 -38
  651. package/dist/singleCellGeneExpression.unit.spec-QSLTXHFE.js +0 -153
  652. package/dist/singleCellPlot-JDSARDRV.js +0 -54
  653. package/dist/singlecell-IJR7BJYT.js +0 -1572
  654. package/dist/singlecell-OK6GJFWL.js +0 -86
  655. package/dist/snp-H4KJEEOE.js +0 -38
  656. package/dist/snp.unit.spec-2Y4A3XYI.js +0 -176
  657. package/dist/snplocus-4GG6VTWX.js +0 -208
  658. package/dist/spliceevent.a53ss.diagram-JZNRC5UC.js +0 -151
  659. package/dist/spliceevent.exonskip.diagram-H54N7ZKY.js +0 -283
  660. package/dist/spliceevent.noeventdiagram-II753XAK.js +0 -460
  661. package/dist/ssGSEA-JPJ3C4JI.js +0 -38
  662. package/dist/ssGSEA.unit.spec-45F5OCDK.js +0 -88
  663. package/dist/studyCatalog-O3VGIKDM.js +0 -358
  664. package/dist/summarizeCnvGeneexp-55DNXHXA.js +0 -163
  665. package/dist/summarizeGeneexpSurvival-VLO4DC5M.js +0 -110
  666. package/dist/summarizeMutationCnv-QX7BADYL.js +0 -164
  667. package/dist/summarizeMutationDiagnosis-MHFM7RX6.js +0 -40
  668. package/dist/summarizeMutationSurvival-G4KHSUBN.js +0 -99
  669. package/dist/summary-PJYRCQNY.js +0 -49
  670. package/dist/summary.integration.spec-KPKROD6L.js +0 -414
  671. package/dist/summaryInput-TOAL53EP.js +0 -231
  672. package/dist/sunburst-IGIV2RBE.js +0 -284
  673. package/dist/survival-DINCIWW7.js +0 -58
  674. package/dist/survival-RKV5BPDK.js +0 -1239
  675. package/dist/survival.integration.spec-7ZYBBZKT.js +0 -958
  676. package/dist/svgraph-EUEZWGVR.js +0 -1387
  677. package/dist/svmr-B24LODSC.js +0 -3842
  678. package/dist/table-XSJJ3UZV.js +0 -200
  679. package/dist/termCollection-IAB3425K.js +0 -38
  680. package/dist/termCollection-LGEGHZSJ.js +0 -257
  681. package/dist/termCollection.unit.spec-4TIRHC44.js +0 -304
  682. package/dist/termCollectionFractionSelection-35YKAOUY.js +0 -47
  683. package/dist/termCollectionFractionSelection.unit.spec-SUFEIKJZ.js +0 -193
  684. package/dist/tk-25EJJDRK.js +0 -46
  685. package/dist/tk-4E3XJ7CO.js +0 -1127
  686. package/dist/tp.ui-VGA62NFM.js +0 -1459
  687. package/dist/tvs.density-G56327WY.js +0 -19
  688. package/dist/tvs.dt-DFW36WKO.js +0 -39
  689. package/dist/tvs.dtcnv.categorical-ZP33EO3A.js +0 -40
  690. package/dist/tvs.dtcnv.continuous-FJTMQF4J.js +0 -72
  691. package/dist/tvs.dtfusion-FTDQWNKM.js +0 -40
  692. package/dist/tvs.dtitd-W5VEECJ2.js +0 -40
  693. package/dist/tvs.dtsnvindel-UOXSLCDZ.js +0 -40
  694. package/dist/tvs.dtsv-HWCPRVBO.js +0 -40
  695. package/dist/tvs.numeric-7TGKWQYU.js +0 -22
  696. package/dist/tvs.samplelst-OWD22ITS.js +0 -104
  697. package/dist/tvs.termCollection-27BWABYK.js +0 -129
  698. package/dist/violin-2IAVZGFF.js +0 -46
  699. package/dist/violin.integration.spec-JVODKUCL.js +0 -1425
  700. package/dist/violin.interactivity-STOCZMVN.js +0 -38
  701. package/dist/violin.renderer-MKDTJ3EX.js +0 -40
  702. package/dist/vocabulary-4IHU6DNN.js +0 -41
  703. /package/dist/{2dmaf-RRV3ORZR.js.map → 2dmaf-6MNHNHWX.js.map} +0 -0
  704. /package/dist/{AIProjectAdmin-DKLEFCGX.js.map → AIProjectAdmin-W36NGUX2.js.map} +0 -0
  705. /package/dist/{AppHeader-WQ2F7HZY.js.map → AppHeader-I5CFECIL.js.map} +0 -0
  706. /package/dist/{BoxPlot-5JQCYENZ.js.map → BoxPlot-4SXDAOBP.js.map} +0 -0
  707. /package/dist/{CorrelationVolcano-HR6IP2SZ.js.map → CorrelationVolcano-NAWMGG4Q.js.map} +0 -0
  708. /package/dist/{DE-DAW6ZKM7.js.map → DE-VZMT7KEM.js.map} +0 -0
  709. /package/dist/{DEinput-XCR4VMR3.js.map → DEinput-TKERM2YD.js.map} +0 -0
  710. /package/dist/{DifferentialAnalysis-SETJAZEN.js.map → DifferentialAnalysis-Y4SU4BVP.js.map} +0 -0
  711. /package/dist/{Disco-QEBEVQS2.js.map → Disco-DLK3BYPV.js.map} +0 -0
  712. /package/dist/{Disco.UI-OYVL7UBI.js.map → Disco.UI-IKGMFG36.js.map} +0 -0
  713. /package/dist/{DmrPlot-CWBQDZL7.js.map → DmrPlot-JWBZJFS6.js.map} +0 -0
  714. /package/dist/{GB-5PYCR4SV.js.map → GB-3UZSSIBW.js.map} +0 -0
  715. /package/dist/{GSEA-6UKMI6GY.js.map → GSEA-YLHBZY55.js.map} +0 -0
  716. /package/dist/{GeneExpInput-2N62XM7Z.js.map → GeneExpInput-KX5I63YV.js.map} +0 -0
  717. /package/dist/{Geomap-ANMR32HE.js.map → Geomap-QTUHM4VH.js.map} +0 -0
  718. /package/dist/{HicApp-WHPUPHEM.js.map → HicApp-M2OCHGRT.js.map} +0 -0
  719. /package/dist/{IDCViewer-FWXRE4AX.js.map → IDCViewer-SWFBLBZH.js.map} +0 -0
  720. /package/dist/{NumContEditor.unit.spec-5GTWUJEL.js.map → NumContEditor.unit.spec-P67AFEHM.js.map} +0 -0
  721. /package/dist/{NumCustomBinEditor-GM2OJMOX.js.map → NumCustomBinEditor-H22J4K47.js.map} +0 -0
  722. /package/dist/{NumRegularBinEditor-CZYITY5L.js.map → NumRegularBinEditor-IRD27CE2.js.map} +0 -0
  723. /package/dist/{NumericDensity-JSOFOEH2.js.map → NumericDensity-53KMCTDL.js.map} +0 -0
  724. /package/dist/{NumericHandler-UZOGKPKB.js.map → NumericHandler-5QFNXVBA.js.map} +0 -0
  725. /package/dist/{NumericHandler.unit.spec-X2DAED4O.js.map → NumericHandler.unit.spec-OBITSUU3.js.map} +0 -0
  726. /package/dist/{ProteomeInput-GBVCLNS7.js.map → ProteomeInput-MM373EL3.js.map} +0 -0
  727. /package/dist/{RunChart2-N4JPWNVV.js.map → RunChart2-2L6T3ITZ.js.map} +0 -0
  728. /package/dist/{SC-RCZT5BRP.js.map → SC-JKD3Z2X5.js.map} +0 -0
  729. /package/dist/{Volcano-2BQ6SYHO.js.map → Volcano-STGBS7IJ.js.map} +0 -0
  730. /package/dist/{WSIViewer-UDA4WIRT.js.map → WSIViewer-LOBVUTOD.js.map} +0 -0
  731. /package/dist/{WsiSamplesPlot-DYSFMD22.js.map → WsiSamplesPlot-D3L3AILR.js.map} +0 -0
  732. /package/dist/{adSandbox-5BUDCAER.js.map → adSandbox-XO5HDSFW.js.map} +0 -0
  733. /package/dist/{animatedBubbleChart-N6MBJ4X3.js.map → animatedBubbleChart-XKW6TCZP.js.map} +0 -0
  734. /package/dist/{app-O64TGDFH.js.map → app-H7ABTG6X.js.map} +0 -0
  735. /package/dist/{app-Y2STUISK.js.map → app-HJSPIKRQ.js.map} +0 -0
  736. /package/dist/{bam-2EOABVGT.js.map → bam-R5QVHWGY.js.map} +0 -0
  737. /package/dist/{barchart-UHCTYRMJ.js.map → barchart-OGCLBPQ2.js.map} +0 -0
  738. /package/dist/{barchart.data-LSK2P2PR.js.map → barchart.data-VBSWS5N7.js.map} +0 -0
  739. /package/dist/{barchart.events-Y4H2GADS.js.map → barchart.events-GZTY4IC3.js.map} +0 -0
  740. /package/dist/{barchart.integration.spec-BFGZFECA.js.map → barchart.integration.spec-Z6ECNFSM.js.map} +0 -0
  741. /package/dist/{barchart2-VIZKZRMP.js.map → barchart2-DT42I747.js.map} +0 -0
  742. /package/dist/{block-BGSSF6XP.js.map → block-UYYJXSCM.js.map} +0 -0
  743. /package/dist/{block.init-H7RKUIHG.js.map → block.init-43M53IMA.js.map} +0 -0
  744. /package/dist/{block.mds.expressionrank-MA3HGT7S.js.map → block.mds.expressionrank-YH3IWMKM.js.map} +0 -0
  745. /package/dist/{block.mds.geneboxplot-CWT5DM5T.js.map → block.mds.geneboxplot-QS2IK37X.js.map} +0 -0
  746. /package/dist/{block.mds.junction-P4I7O73X.js.map → block.mds.junction-7FF5BFEX.js.map} +0 -0
  747. /package/dist/{block.mds.svcnv-NSPEY43S.js.map → block.mds.svcnv-MMJYLL2W.js.map} +0 -0
  748. /package/dist/{block.svg-DP4G3LNQ.js.map → block.svg-SA6DSUM2.js.map} +0 -0
  749. /package/dist/{block.tk.aicheck-EBLTOWKZ.js.map → block.tk.aicheck-ZX5LZ2QO.js.map} +0 -0
  750. /package/dist/{block.tk.ase-X7WKQOFS.js.map → block.tk.ase-YXT4BOXK.js.map} +0 -0
  751. /package/dist/{block.tk.bam-OIP3TS3N.js.map → block.tk.bam-IMLRIOOV.js.map} +0 -0
  752. /package/dist/{block.tk.bedgraphdot-2DDF55J3.js.map → block.tk.bedgraphdot-UYQLL7HM.js.map} +0 -0
  753. /package/dist/{block.tk.bigwig.ui-S2SMAEXM.js.map → block.tk.bigwig.ui-WUVLVRSM.js.map} +0 -0
  754. /package/dist/{block.tk.hicstraw-4OIG4TBZ.js.map → block.tk.hicstraw-N4SJGF7H.js.map} +0 -0
  755. /package/dist/{block.tk.junction-52OWEQUN.js.map → block.tk.junction-LZWHFKWJ.js.map} +0 -0
  756. /package/dist/{block.tk.junction.textmatrixui-64YOSZLW.js.map → block.tk.junction.textmatrixui-B626NYPA.js.map} +0 -0
  757. /package/dist/{block.tk.ld-3AMNHBDY.js.map → block.tk.ld-6VWUMAP6.js.map} +0 -0
  758. /package/dist/{block.tk.menu-4724DJXL.js.map → block.tk.menu-RRN2UPQX.js.map} +0 -0
  759. /package/dist/{block.tk.pgv-2SIOPWYI.js.map → block.tk.pgv-GYG3EI6P.js.map} +0 -0
  760. /package/dist/{brainImaging-D43CQQN6.js.map → brainImaging-VIMLETC5.js.map} +0 -0
  761. /package/dist/{brainRegions-HJ2VGL3L.js.map → brainRegions-DRYZT5K5.js.map} +0 -0
  762. /package/dist/{bubbleHeatmap-IL44M4QZ.js.map → bubbleHeatmap-Y4SGMVJY.js.map} +0 -0
  763. /package/dist/{cellTypeBubbleHeatmap-NQP7RCZO.js.map → cellTypeBubbleHeatmap-QW37ZT5W.js.map} +0 -0
  764. /package/dist/{chunk-WXPFMVU6.js.map → chunk-2Y5C7GJS.js.map} +0 -0
  765. /package/dist/{chunk-BNAO6N5X.js.map → chunk-2ZTCRUOL.js.map} +0 -0
  766. /package/dist/{chunk-D565DNJD.js.map → chunk-3P74DH6P.js.map} +0 -0
  767. /package/dist/{chunk-5DMVORBB.js.map → chunk-3PPCZPLN.js.map} +0 -0
  768. /package/dist/{chunk-S5ZCK44Z.js.map → chunk-4H4WJJ2G.js.map} +0 -0
  769. /package/dist/{chunk-6OUBUUC2.js.map → chunk-4L2OSDQ6.js.map} +0 -0
  770. /package/dist/{chunk-JVPWIVDT.js.map → chunk-4USLEUNR.js.map} +0 -0
  771. /package/dist/{chunk-UEGQVQD6.js.map → chunk-5ITKSTJX.js.map} +0 -0
  772. /package/dist/{chunk-M66VDGSH.js.map → chunk-5VMYXVZG.js.map} +0 -0
  773. /package/dist/{chunk-UUKSL7QC.js.map → chunk-7ZVFLC2V.js.map} +0 -0
  774. /package/dist/{chunk-ROMW4AK2.js.map → chunk-C5IAIOCA.js.map} +0 -0
  775. /package/dist/{chunk-7PIHRWGG.js.map → chunk-CIRCVMWE.js.map} +0 -0
  776. /package/dist/{chunk-AGLAYNXP.js.map → chunk-CLTRQZGJ.js.map} +0 -0
  777. /package/dist/{chunk-W7OS7BNM.js.map → chunk-CRH37PEV.js.map} +0 -0
  778. /package/dist/{chunk-WTTD6DUL.js.map → chunk-DCNDZOI3.js.map} +0 -0
  779. /package/dist/{chunk-VUPWQCDR.js.map → chunk-DCR4QQ5Y.js.map} +0 -0
  780. /package/dist/{chunk-TDKMBQSM.js.map → chunk-DKAHHMKN.js.map} +0 -0
  781. /package/dist/{chunk-WKNI3HRQ.js.map → chunk-E2GHT7RH.js.map} +0 -0
  782. /package/dist/{chunk-XNWUI5VL.js.map → chunk-EQCVSUAF.js.map} +0 -0
  783. /package/dist/{chunk-DH3LAQKT.js.map → chunk-ETK36FXN.js.map} +0 -0
  784. /package/dist/{chunk-QDX2XUNF.js.map → chunk-FCOX5Q4Q.js.map} +0 -0
  785. /package/dist/{chunk-5ZTVJSYI.js.map → chunk-FVL37XFU.js.map} +0 -0
  786. /package/dist/{chunk-SNRIVNQ3.js.map → chunk-FXS4I3Z3.js.map} +0 -0
  787. /package/dist/{chunk-46X6AQ7Z.js.map → chunk-FYAY6D3O.js.map} +0 -0
  788. /package/dist/{chunk-MJN6RDXB.js.map → chunk-GL44X7JY.js.map} +0 -0
  789. /package/dist/{chunk-6JYQGZ3Y.js.map → chunk-IQVBMLFI.js.map} +0 -0
  790. /package/dist/{chunk-RVKADD4L.js.map → chunk-IYT5PNYJ.js.map} +0 -0
  791. /package/dist/{chunk-5QMBB4SK.js.map → chunk-J6EP7JPJ.js.map} +0 -0
  792. /package/dist/{chunk-ULESDMUT.js.map → chunk-JLGCQ2F4.js.map} +0 -0
  793. /package/dist/{chunk-TAM7UCAI.js.map → chunk-JQT67SWE.js.map} +0 -0
  794. /package/dist/{chunk-KU7YH7MV.js.map → chunk-JQYPRW42.js.map} +0 -0
  795. /package/dist/{chunk-2GLA2SWU.js.map → chunk-K4IGOJPT.js.map} +0 -0
  796. /package/dist/{chunk-RJOY6A74.js.map → chunk-KPTPDZX2.js.map} +0 -0
  797. /package/dist/{chunk-KZILNGAV.js.map → chunk-KTB7KXC2.js.map} +0 -0
  798. /package/dist/{chunk-STI7BO3P.js.map → chunk-KW7MKBGF.js.map} +0 -0
  799. /package/dist/{chunk-ZEKIUYN3.js.map → chunk-KZFVYDVK.js.map} +0 -0
  800. /package/dist/{chunk-W76X6W73.js.map → chunk-M77DCLJX.js.map} +0 -0
  801. /package/dist/{chunk-U3NTH4CS.js.map → chunk-MGGAWPTR.js.map} +0 -0
  802. /package/dist/{chunk-4HZN6PMU.js.map → chunk-MUJMZ6W6.js.map} +0 -0
  803. /package/dist/{chunk-BGTBRAJ6.js.map → chunk-NRP55BOF.js.map} +0 -0
  804. /package/dist/{chunk-NRYHIWBS.js.map → chunk-O5KFJBU3.js.map} +0 -0
  805. /package/dist/{chunk-OOWXMY7U.js.map → chunk-QHPN3JJZ.js.map} +0 -0
  806. /package/dist/{chunk-NUWJ4RN7.js.map → chunk-QSGXZEUU.js.map} +0 -0
  807. /package/dist/{chunk-GNS6CQMA.js.map → chunk-R3ARQMM4.js.map} +0 -0
  808. /package/dist/{chunk-4KRGCOTL.js.map → chunk-RIQT2LSR.js.map} +0 -0
  809. /package/dist/{chunk-J4USU73L.js.map → chunk-RVRRHEUG.js.map} +0 -0
  810. /package/dist/{chunk-H3N4KYKL.js.map → chunk-SOCGXVIL.js.map} +0 -0
  811. /package/dist/{chunk-HQUYAZQY.js.map → chunk-SZHFBRRT.js.map} +0 -0
  812. /package/dist/{chunk-E3VF4RHJ.js.map → chunk-TOYMIFHN.js.map} +0 -0
  813. /package/dist/{chunk-NIXFCC7X.js.map → chunk-TPVHGI7Q.js.map} +0 -0
  814. /package/dist/{chunk-26APRXD3.js.map → chunk-TRQUMV4T.js.map} +0 -0
  815. /package/dist/{chunk-R6NM2HSH.js.map → chunk-UO7MD3XA.js.map} +0 -0
  816. /package/dist/{chunk-5RVA43MN.js.map → chunk-UONOFG2J.js.map} +0 -0
  817. /package/dist/{chunk-CY4RQ5L6.js.map → chunk-V2DU2OXH.js.map} +0 -0
  818. /package/dist/{chunk-MPNEZ6EL.js.map → chunk-WWXXSQ2M.js.map} +0 -0
  819. /package/dist/{chunk-7JRDJNLR.js.map → chunk-X6VTVZY7.js.map} +0 -0
  820. /package/dist/{chunk-TQTYW66I.js.map → chunk-X7KRSZQT.js.map} +0 -0
  821. /package/dist/{chunk-5T3ZDRTS.js.map → chunk-XJBSBIZ4.js.map} +0 -0
  822. /package/dist/{chunk-BQHPJY2M.js.map → chunk-XRQWZJJ3.js.map} +0 -0
  823. /package/dist/{chunk-NZRMHM76.js.map → chunk-XZ4M3QAV.js.map} +0 -0
  824. /package/dist/{chunk-FACITNG5.js.map → chunk-YMP4YKBN.js.map} +0 -0
  825. /package/dist/{chunk-7PJNKPQB.js.map → chunk-YUURGVV3.js.map} +0 -0
  826. /package/dist/{chunk-EGPNRSPF.js.map → chunk-Z7VK2AMA.js.map} +0 -0
  827. /package/dist/{chunk-OTTMHVYH.js.map → chunk-ZFJUVP2N.js.map} +0 -0
  828. /package/dist/{chunk-H3VWJH4U.js.map → chunk-ZH7JPYQE.js.map} +0 -0
  829. /package/dist/{chunk-NODQZTWK.js.map → chunk-ZVDOSFWU.js.map} +0 -0
  830. /package/dist/{cohort-OWLNJZVH.js.map → cohort-CEYVJJ7E.js.map} +0 -0
  831. /package/dist/{condition-L2IXP6WH.js.map → condition-QSOFP4MY.js.map} +0 -0
  832. /package/dist/{controls-2S5QVWUC.js.map → controls-QYHARIEY.js.map} +0 -0
  833. /package/dist/{controls.config-3AJKR4ZZ.js.map → controls.config-3OO3JK6E.js.map} +0 -0
  834. /package/dist/{correlation-DXTAWSLU.js.map → correlation-TOI3TMYL.js.map} +0 -0
  835. /package/dist/{cuminc-WQB6FHVS.js.map → cuminc-L7OJTYXC.js.map} +0 -0
  836. /package/dist/{cuminc.integration.spec-WAYRLHUH.js.map → cuminc.integration.spec-LSWV3KOF.js.map} +0 -0
  837. /package/dist/{customdata.inputui-7WH2NJGB.js.map → customdata.inputui-VMB3HSSC.js.map} +0 -0
  838. /package/dist/{dataDownload-HM4UYOBO.js.map → dataDownload-NPSWNOAG.js.map} +0 -0
  839. /package/dist/{dataDownload.integration.spec-F5CO4BWA.js.map → dataDownload.integration.spec-J6FRFLBK.js.map} +0 -0
  840. /package/dist/{databrowser.ui-E2YOG3L4.js.map → databrowser.ui-GVYWG6YI.js.map} +0 -0
  841. /package/dist/{dictionary-EEPTFDYD.js.map → dictionary-GD67R72W.js.map} +0 -0
  842. /package/dist/{dnaMethylation-N3WNK6XA.js.map → dnaMethylation-S7OSGLAF.js.map} +0 -0
  843. /package/dist/{dnaMethylation.integration.spec-AIYRTFMR.js.map → dnaMethylation.integration.spec-ETMMJNDE.js.map} +0 -0
  844. /package/dist/{dofetch-YKYPEJTQ.js.map → dofetch-7GURQS65.js.map} +0 -0
  845. /package/dist/{e2pca-JEZIGVB2.js.map → e2pca-ZIIPBJFN.js.map} +0 -0
  846. /package/dist/{ep-5FMH2MLV.js.map → ep-A2HAL5WA.js.map} +0 -0
  847. /package/dist/{expclust.gdc.spec-FR26VSUA.js.map → expclust.gdc.spec-ZSILLYNI.js.map} +0 -0
  848. /package/dist/{facet-5YYY3MUN.js.map → facet-74LKIPTA.js.map} +0 -0
  849. /package/dist/{gb-WGEVO7L2.js.map → gb-C3MPQXKN.js.map} +0 -0
  850. /package/dist/{geneExpClustering-DHE6XJHV.js.map → geneExpClustering-HYCFUUTU.js.map} +0 -0
  851. /package/dist/{geneExpression-5NWQXMJ3.js.map → geneExpression-GATKMJJ5.js.map} +0 -0
  852. /package/dist/{geneExpression-VWUMM2LU.js.map → geneExpression-JXSAP2H7.js.map} +0 -0
  853. /package/dist/{geneExpression.unit.spec-HBU3WTZ4.js.map → geneExpression.unit.spec-CODZYFHZ.js.map} +0 -0
  854. /package/dist/{geneORA-3VWFWDYI.js.map → geneORA-LJRIR4VV.js.map} +0 -0
  855. /package/dist/{geneRanking-PKDVD5OD.js.map → geneRanking-TWLBKQZG.js.map} +0 -0
  856. /package/dist/{geneVariant-IFIJQXH4.js.map → geneVariant-35RQHTCK.js.map} +0 -0
  857. /package/dist/{geneVariant-WZSOG4GI.js.map → geneVariant-TMJJIMUF.js.map} +0 -0
  858. /package/dist/{geneVariant.integration.spec-6KQMWVHR.js.map → geneVariant.integration.spec-FIQ7IBSD.js.map} +0 -0
  859. /package/dist/{genefusion.ui-C4NTALL3.js.map → genefusion.ui-SOBESSNO.js.map} +0 -0
  860. /package/dist/{geneset-RJAULSKC.js.map → geneset-JXEJFEK2.js.map} +0 -0
  861. /package/dist/{genomeBrowser.spec-42OTTMGO.js.map → genomeBrowser.spec-25ZO5S2X.js.map} +0 -0
  862. /package/dist/{grin2-26O6YDDY.js.map → grin2-CW4RPVPI.js.map} +0 -0
  863. /package/dist/{grin2-FT5BQJMB.js.map → grin2-EI5BVP4E.js.map} +0 -0
  864. /package/dist/{hierCluster-GJPPMFNR.js.map → hierCluster-OBBPQH24.js.map} +0 -0
  865. /package/dist/{hierCluster-HMJF3PBE.js.map → hierCluster-SDH3TJQY.js.map} +0 -0
  866. /package/dist/{hierCluster.config-TAS7XKTU.js.map → hierCluster.config-DO67TCXI.js.map} +0 -0
  867. /package/dist/{hierCluster.integration.spec-RLHQKX65.js.map → hierCluster.integration.spec-EB24C4VZ.js.map} +0 -0
  868. /package/dist/{hierCluster.interactivity-IKTAJ6CU.js.map → hierCluster.interactivity-LGEAFT5T.js.map} +0 -0
  869. /package/dist/{hierCluster.renderers-I6WFZRNW.js.map → hierCluster.renderers-FXDCU3PN.js.map} +0 -0
  870. /package/dist/{imagePlot-N4OXNMVA.js.map → imagePlot-LGLFG2QZ.js.map} +0 -0
  871. /package/dist/{importPlot-VMYXDP66.js.map → importPlot-R2WRZGZU.js.map} +0 -0
  872. /package/dist/{isoformExpression-2KV64KMN.js.map → isoformExpression-KI3WY5M3.js.map} +0 -0
  873. /package/dist/{isoformExpression.unit.spec-RG2VWEMG.js.map → isoformExpression.unit.spec-OQRG2DDU.js.map} +0 -0
  874. /package/dist/{junction-VO4IGMW2.js.map → junction-6SWFPNM5.js.map} +0 -0
  875. /package/dist/{junction.customTerm-EFMHHVWA.js.map → junction.customTerm-MDBOU6I7.js.map} +0 -0
  876. /package/dist/{junction.unit.spec-NB24MR2B.js.map → junction.unit.spec-5TZFITSU.js.map} +0 -0
  877. /package/dist/{launch.adhoc-R3MO3VXK.js.map → launch.adhoc-HCX2RQLB.js.map} +0 -0
  878. /package/dist/{leftlabel.sample-SI6KMULD.js.map → leftlabel.sample-OI6XCXTQ.js.map} +0 -0
  879. /package/dist/{lollipop-XIVE4ANX.js.map → lollipop-SOSOYHYL.js.map} +0 -0
  880. /package/dist/{maf-WRHD4OJF.js.map → maf-73RLOEVN.js.map} +0 -0
  881. /package/dist/{maftimeline-IE6YKV7Y.js.map → maftimeline-UOMLYUNI.js.map} +0 -0
  882. /package/dist/{matrix-ALBCAZP5.js.map → matrix-5QWDN6SI.js.map} +0 -0
  883. /package/dist/{matrix-W72XRUZD.js.map → matrix-SKPVVDVR.js.map} +0 -0
  884. /package/dist/{matrix.cells-DEEUWC74.js.map → matrix.cells-CFSI2NWU.js.map} +0 -0
  885. /package/dist/{matrix.config-JYXQOXDT.js.map → matrix.config-HE64MAL4.js.map} +0 -0
  886. /package/dist/{matrix.data-ENXNM6RP.js.map → matrix.data-HTUZXQAM.js.map} +0 -0
  887. /package/dist/{matrix.groups-EXSNNESB.js.map → matrix.groups-ZFKWVNMX.js.map} +0 -0
  888. /package/dist/{matrix.integration.spec-BW6U6PIW.js.map → matrix.integration.spec-YKJ4LZFY.js.map} +0 -0
  889. /package/dist/{matrix.interactivity-G6AL566T.js.map → matrix.interactivity-YB5G5W5T.js.map} +0 -0
  890. /package/dist/{matrix.layout-UBUPIJ3R.js.map → matrix.layout-MFG65V7K.js.map} +0 -0
  891. /package/dist/{matrix.legend-S3P4F2DG.js.map → matrix.legend-7MIZZJVB.js.map} +0 -0
  892. /package/dist/{matrix.renderers-IXFGXHJQ.js.map → matrix.renderers-PCZFHDDZ.js.map} +0 -0
  893. /package/dist/{matrix.serieses-THHXUAPM.js.map → matrix.serieses-7KYX3KAY.js.map} +0 -0
  894. /package/dist/{matrix.sort-WJV6LIZI.js.map → matrix.sort-CR3J45MQ.js.map} +0 -0
  895. /package/dist/{matrix.sort.unit.spec-LGMIL2LR.js.map → matrix.sort.unit.spec-GEAM5DSU.js.map} +0 -0
  896. /package/dist/{matrix.sorterUi-VXVCOKEZ.js.map → matrix.sorterUi-YSKIX6B6.js.map} +0 -0
  897. /package/dist/{matrix.sorterUi.unit.spec-CWSEJ62U.js.map → matrix.sorterUi.unit.spec-2MW64QS5.js.map} +0 -0
  898. /package/dist/{mavb-SXGKASQ5.js.map → mavb-YMHJXCGA.js.map} +0 -0
  899. /package/dist/{mds.fimo-EDOT3TDN.js.map → mds.fimo-PTEDRMLQ.js.map} +0 -0
  900. /package/dist/{mds.samplescatterplot-IXHNABKB.js.map → mds.samplescatterplot-7R7PLVQJ.js.map} +0 -0
  901. /package/dist/{mds.survivalplot-KTTMHHII.js.map → mds.survivalplot-F3EENMFQ.js.map} +0 -0
  902. /package/dist/{numericDictTermCluster-H4JSPW22.js.map → numericDictTermCluster-3HXLMURH.js.map} +0 -0
  903. /package/dist/{oncomatrix-O4EMNUOT.js.map → oncomatrix-27VVSMZB.js.map} +0 -0
  904. /package/dist/{oncomatrix.spec-BME6CQWF.js.map → oncomatrix.spec-F43Y7CWN.js.map} +0 -0
  905. /package/dist/{plot.2dvaf-FDM4KXGT.js.map → plot.2dvaf-MYFQSWIA.js.map} +0 -0
  906. /package/dist/{plot.app-UNUXG7ND.js.map → plot.app-36QWCKXR.js.map} +0 -0
  907. /package/dist/{plot.barplot-R333TMG2.js.map → plot.barplot-535EP7XT.js.map} +0 -0
  908. /package/dist/{plot.boxplot-KQTYGUN3.js.map → plot.boxplot-6IBP7VEB.js.map} +0 -0
  909. /package/dist/{plot.brainImaging-YBYMHCEG.js.map → plot.brainImaging-M4HPNXZH.js.map} +0 -0
  910. /package/dist/{plot.disco-CMDKRSOM.js.map → plot.disco-HIT6GR44.js.map} +0 -0
  911. /package/dist/{plot.dzi-YAZA6RQS.js.map → plot.dzi-W66SBKTH.js.map} +0 -0
  912. /package/dist/{plot.ssgq-YKCOEXZP.js.map → plot.ssgq-MI2OMCUY.js.map} +0 -0
  913. /package/dist/{plot.vaf2cov-3TLMTFZS.js.map → plot.vaf2cov-F4CBMLRA.js.map} +0 -0
  914. /package/dist/{plot.wsi-7ADVYTQS.js.map → plot.wsi-7M5KTNFC.js.map} +0 -0
  915. /package/dist/{polar2-O5SHVLP4.js.map → polar2-7VSWGT4U.js.map} +0 -0
  916. /package/dist/{profileForms-RLB6SMPQ.js.map → profileForms-DFPCNJW2.js.map} +0 -0
  917. /package/dist/{profilePlot-AP52VLLO.js.map → profilePlot-ECTPPVB2.js.map} +0 -0
  918. /package/dist/{proteinView-S7WDBMQU.js.map → proteinView-6ELOLOIU.js.map} +0 -0
  919. /package/dist/{proteomeCohortCompare-ERVUM7RO.js.map → proteomeCohortCompare-V2FMWI62.js.map} +0 -0
  920. /package/dist/{pseudbulk.unit.spec-VSH7IM3R.js.map → pseudbulk.unit.spec-KV6URTXC.js.map} +0 -0
  921. /package/dist/{pseudobulk-7UKRLKQI.js.map → pseudobulk-6ZRFCE65.js.map} +0 -0
  922. /package/dist/{qualitative-2D7MC4V5.js.map → qualitative-3B62RUOB.js.map} +0 -0
  923. /package/dist/{qualitative-2INAKDTJ.js.map → qualitative-GJDQBD7L.js.map} +0 -0
  924. /package/dist/{radar2-ELVGQFZE.js.map → radar2-4QQER64E.js.map} +0 -0
  925. /package/dist/{radarFacility2-SDAZHGNG.js.map → radarFacility2-MZKORRDY.js.map} +0 -0
  926. /package/dist/{regression-CE54AQMY.js.map → regression-GZ2YNX6Y.js.map} +0 -0
  927. /package/dist/{regression.inputs-SMC5CNPY.js.map → regression.inputs-ZEFDNSVT.js.map} +0 -0
  928. /package/dist/{regression.inputs.term-XS54IQC2.js.map → regression.inputs.term-O2FQBX7L.js.map} +0 -0
  929. /package/dist/{regression.inputs.values.table-LNPM3MX5.js.map → regression.inputs.values.table-63BQKSZP.js.map} +0 -0
  930. /package/dist/{regression.results-25ZRRDEE.js.map → regression.results-5J3QM4RX.js.map} +0 -0
  931. /package/dist/{regression.spec-EDWHFRPY.js.map → regression.spec-WZAZTDDA.js.map} +0 -0
  932. /package/dist/{render-SEB6GFXQ.js.map → render-MZTEXVU5.js.map} +0 -0
  933. /package/dist/{report-U6L3KBYG.js.map → report-M5TYHH2W.js.map} +0 -0
  934. /package/dist/{sampleView-QAAJ26KT.js.map → sampleView-QYTLYJEW.js.map} +0 -0
  935. /package/dist/{samplelst-KYRXJSZN.js.map → samplelst-FN3Q7M7A.js.map} +0 -0
  936. /package/dist/{samplematrix-STLF2QA5.js.map → samplematrix-Z5FVODO7.js.map} +0 -0
  937. /package/dist/{sc-HL6YSMDX.js.map → sc-4CHP5SYP.js.map} +0 -0
  938. /package/dist/{selectGenomeWithTklst-4NHQDTE6.js.map → selectGenomeWithTklst-WMAHGT4F.js.map} +0 -0
  939. /package/dist/{singleCellCellType-3E2IU42J.js.map → singleCellCellType-XPWENB6V.js.map} +0 -0
  940. /package/dist/{singleCellCellType.unit.spec-MC7ZRSMW.js.map → singleCellCellType.unit.spec-QK56PHKW.js.map} +0 -0
  941. /package/dist/{singleCellGeneExpression-53UUGYTK.js.map → singleCellGeneExpression-4CEVDVYF.js.map} +0 -0
  942. /package/dist/{singleCellGeneExpression.unit.spec-QSLTXHFE.js.map → singleCellGeneExpression.unit.spec-ZYRLBVF5.js.map} +0 -0
  943. /package/dist/{singleCellPlot-JDSARDRV.js.map → singleCellPlot-JS74VUGC.js.map} +0 -0
  944. /package/dist/{singlecell-IJR7BJYT.js.map → singlecell-5XYOHMWJ.js.map} +0 -0
  945. /package/dist/{singlecell-OK6GJFWL.js.map → singlecell-OO77XBDD.js.map} +0 -0
  946. /package/dist/{snp-H4KJEEOE.js.map → snp-X5ZILM5J.js.map} +0 -0
  947. /package/dist/{snp.unit.spec-2Y4A3XYI.js.map → snp.unit.spec-V23G3JLJ.js.map} +0 -0
  948. /package/dist/{snplocus-4GG6VTWX.js.map → snplocus-U5UIIUWR.js.map} +0 -0
  949. /package/dist/{spliceevent.a53ss.diagram-JZNRC5UC.js.map → spliceevent.a53ss.diagram-YDFVSDMT.js.map} +0 -0
  950. /package/dist/{spliceevent.exonskip.diagram-H54N7ZKY.js.map → spliceevent.exonskip.diagram-VDKN5JBE.js.map} +0 -0
  951. /package/dist/{spliceevent.noeventdiagram-II753XAK.js.map → spliceevent.noeventdiagram-EFPFRUFI.js.map} +0 -0
  952. /package/dist/{ssGSEA-JPJ3C4JI.js.map → ssGSEA-LKJW5OQK.js.map} +0 -0
  953. /package/dist/{ssGSEA.unit.spec-45F5OCDK.js.map → ssGSEA.unit.spec-7WCZVEP2.js.map} +0 -0
  954. /package/dist/{studyCatalog-O3VGIKDM.js.map → studyCatalog-EU33KE5H.js.map} +0 -0
  955. /package/dist/{summarizeCnvGeneexp-55DNXHXA.js.map → summarizeCnvGeneexp-QL25OQNB.js.map} +0 -0
  956. /package/dist/{summarizeGeneexpSurvival-VLO4DC5M.js.map → summarizeGeneexpSurvival-B7HTCH7L.js.map} +0 -0
  957. /package/dist/{summarizeMutationCnv-QX7BADYL.js.map → summarizeMutationCnv-DFAPX2JE.js.map} +0 -0
  958. /package/dist/{summarizeMutationDiagnosis-MHFM7RX6.js.map → summarizeMutationDiagnosis-HCSDSVII.js.map} +0 -0
  959. /package/dist/{summarizeMutationSurvival-G4KHSUBN.js.map → summarizeMutationSurvival-6WEASSA2.js.map} +0 -0
  960. /package/dist/{summary-PJYRCQNY.js.map → summary-BWYXE77G.js.map} +0 -0
  961. /package/dist/{summary.integration.spec-KPKROD6L.js.map → summary.integration.spec-AVGSW5MF.js.map} +0 -0
  962. /package/dist/{summaryInput-TOAL53EP.js.map → summaryInput-MOQ6HUCX.js.map} +0 -0
  963. /package/dist/{sunburst-IGIV2RBE.js.map → sunburst-EZDHVJCL.js.map} +0 -0
  964. /package/dist/{survival-RKV5BPDK.js.map → survival-5TFMM7NP.js.map} +0 -0
  965. /package/dist/{survival-DINCIWW7.js.map → survival-IEVELTC4.js.map} +0 -0
  966. /package/dist/{survival.integration.spec-7ZYBBZKT.js.map → survival.integration.spec-HHWP3R4H.js.map} +0 -0
  967. /package/dist/{svgraph-EUEZWGVR.js.map → svgraph-55XRIYJW.js.map} +0 -0
  968. /package/dist/{svmr-B24LODSC.js.map → svmr-CMEBFSRO.js.map} +0 -0
  969. /package/dist/{table-XSJJ3UZV.js.map → table-LTWQ3TLQ.js.map} +0 -0
  970. /package/dist/{termCollection-IAB3425K.js.map → termCollection-CPQXYBFA.js.map} +0 -0
  971. /package/dist/{termCollection-LGEGHZSJ.js.map → termCollection-ZWOH273K.js.map} +0 -0
  972. /package/dist/{termCollection.unit.spec-4TIRHC44.js.map → termCollection.unit.spec-RK7VATLU.js.map} +0 -0
  973. /package/dist/{termCollectionFractionSelection-35YKAOUY.js.map → termCollectionFractionSelection-Z4ZRW63R.js.map} +0 -0
  974. /package/dist/{termCollectionFractionSelection.unit.spec-SUFEIKJZ.js.map → termCollectionFractionSelection.unit.spec-3CS7DPNU.js.map} +0 -0
  975. /package/dist/{tk-25EJJDRK.js.map → tk-4NNTWWLK.js.map} +0 -0
  976. /package/dist/{tk-4E3XJ7CO.js.map → tk-RHWJJXH2.js.map} +0 -0
  977. /package/dist/{tp.ui-VGA62NFM.js.map → tp.ui-DPN5UN6U.js.map} +0 -0
  978. /package/dist/{tvs.density-G56327WY.js.map → tvs.density-LMRZZO4D.js.map} +0 -0
  979. /package/dist/{tvs.dt-DFW36WKO.js.map → tvs.dt-ARPDFRVM.js.map} +0 -0
  980. /package/dist/{tvs.dtcnv.categorical-ZP33EO3A.js.map → tvs.dtcnv.categorical-POS6WQK6.js.map} +0 -0
  981. /package/dist/{tvs.dtcnv.continuous-FJTMQF4J.js.map → tvs.dtcnv.continuous-5OETJ7JU.js.map} +0 -0
  982. /package/dist/{tvs.dtfusion-FTDQWNKM.js.map → tvs.dtfusion-ERYVI3DW.js.map} +0 -0
  983. /package/dist/{tvs.dtitd-W5VEECJ2.js.map → tvs.dtitd-KTZZYEWU.js.map} +0 -0
  984. /package/dist/{tvs.dtsnvindel-UOXSLCDZ.js.map → tvs.dtsnvindel-TGUAX3RN.js.map} +0 -0
  985. /package/dist/{tvs.dtsv-HWCPRVBO.js.map → tvs.dtsv-AM63OIL6.js.map} +0 -0
  986. /package/dist/{tvs.numeric-7TGKWQYU.js.map → tvs.numeric-MQPO5XUQ.js.map} +0 -0
  987. /package/dist/{tvs.samplelst-OWD22ITS.js.map → tvs.samplelst-VW2NOQ2C.js.map} +0 -0
  988. /package/dist/{tvs.termCollection-27BWABYK.js.map → tvs.termCollection-O4ZSWJFA.js.map} +0 -0
  989. /package/dist/{violin-2IAVZGFF.js.map → violin-ZQ3DEYGR.js.map} +0 -0
  990. /package/dist/{violin.integration.spec-JVODKUCL.js.map → violin.integration.spec-PVEF77HB.js.map} +0 -0
  991. /package/dist/{violin.interactivity-STOCZMVN.js.map → violin.interactivity-FYU4TCFO.js.map} +0 -0
  992. /package/dist/{violin.renderer-MKDTJ3EX.js.map → violin.renderer-XAERGBMV.js.map} +0 -0
  993. /package/dist/{vocabulary-4IHU6DNN.js.map → vocabulary-ECJX27W2.js.map} +0 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../shared/types/src/routes/aiProjectSelectedWSImages.ts", "../../shared/types/src/routes/hicgenome.ts", "../../shared/types/src/routes/samplewsimages.ts", "../../shared/types/src/routes/termdb.bubbleHeatmap.ts", "../../shared/types/src/routes/termdb.categories.ts", "../../shared/types/src/routes/termdb.chat.ts", "../../shared/types/src/routes/termdb.descrstats.ts", "../../shared/types/src/routes/termdb.percentile.ts", "../../shared/types/src/routes/termdb.rootterm.ts", "../../shared/types/src/routes/termdb.runChart.ts", "../../shared/types/src/routes/termdb.singleCellPlots.ts", "../../shared/types/src/routes/termdb.termchildren.ts", "../../shared/types/src/routes/termdb.violinBox.ts", "../../shared/types/src/terms/constants.ts", "../../shared/types/src/terms/pseudobulk.ts", "../../shared/utils/src/common.ts"],
4
+ "sourcesContent": ["import type { WSImage } from './samplewsimages.ts'\n\nexport const FlagStatus = {\n\tNormal: 0,\n\tSkipped: 1,\n\tFlagged: 2,\n\tDeleted: 3\n} as const\n// These are action that will change the active index/highlight for the table in AIHAL project\nexport type ProvokingActions = 'annotation' | 'delete' | 'skipping' | 'flagging'\nexport type FlagStatusValues = (typeof FlagStatus)[keyof typeof FlagStatus]\n\nexport const FeaturePrefixes = {\n\tStar: 'annotation-star-',\n\tSquare: 'annotation-square-',\n\tBorder: 'annotation-border-',\n\tPredBorder: 'prediction-border-'\n} as const\n\nexport type FeaturePrefixValues = (typeof FeaturePrefixes)[keyof typeof FeaturePrefixes]\n\nexport const SelectionPrefixes = {\n\tTileSelection: 'ts_',\n\tPrediction: 'pred_',\n\tAnnotation: 'anno_'\n} as const\n\nexport type SelectionPrefixValues = (typeof SelectionPrefixes)[keyof typeof SelectionPrefixes]\n\nexport const FlagStatusMessages = {\n\t[FlagStatus.Normal]: '',\n\t[FlagStatus.Skipped]: '(Skipped)',\n\t[FlagStatus.Flagged]: '(Flagged)'\n\t// Didn't add Deleted to FlagStatusMessages because deleted annotations dont exist\n\t// and deleted predictons are filtered out in proteinpaint/server/routes/aiProjectSelectedWSImages.ts around line 119\n}\n\nexport type AiProjectSelectedWSImagesRequest = {\n\tgenome: string\n\tdslabel: string\n\tprojectId: number\n\twsimagesFilenames: Array<string>\n}\n\nexport type AiProjectSelectedWSImagesResponse = {\n\t// TODO create a type for WSImage with AI project specific fields\n\twsimages: WSImage[]\n}\n\nexport interface FlagPredictionInfo {\n\tflag: FlagStatusValues\n\ttimestamp: string\n}\n\n// TODO move to another class\nexport interface TileSelection {\n\tzoomCoordinates: [number, number]\n\tclass?: string\n\tflag: FlagStatusValues\n\tid: string\n\ttimestamp: string\n}\n\nexport interface Annotation extends TileSelection {\n\tclass: string\n}\n\nexport interface Prediction extends TileSelection {\n\tclass: string\n\tuncertainty: number\n}\n\nexport function createSelectionID(prefix: SelectionPrefixValues, coordinates: [number, number]): string {\n\treturn prefix + JSON.stringify(coordinates)\n}\n\nexport function checkSelectionType(tileSelection: TileSelection, suspectedPrefix: SelectionPrefixValues): boolean {\n\treturn tileSelection.id.startsWith(suspectedPrefix)\n}\n\nexport function createFeatureID(featurePrefix: FeaturePrefixValues, coords: [number, number]) {\n\treturn featurePrefix + JSON.stringify(coords)\n}\n\n// TODO: write payload examples to help with automated testing and documentation, for non-prod use only\n", "import type { BaseHicRequest, XYZCoord } from './hicdata.ts'\n\nexport type HicGenomeRequest = BaseHicRequest & {\n\t/** Entire chromosome list read from the file (see hicstate) */\n\tchrlst: string[]\n\t/** window location */\n\tembedder: string\n\t/** whether or not the file contains 'chr' for the chromosomes */\n\tnochr: boolean\n}\n\nexport type HicGenomeResponse = {\n\tdata: {\n\t\t/** First chromosome */\n\t\tlead: string\n\t\t/** Second chromosome */\n\t\tfollow: string\n\t\titems: XYZCoord[]\n\t}[]\n\t/** Error message to display on the client, if applicable */\n\terror?: string\n}\n\n// TODO: write payload examples to help with automated testing and documentation, for non-prod use only\n// The example below will not work in github CI where only termdb test\nexport const hicGenomePayloadExample = {\n\texamples: [\n\t\t{\n\t\t\trequest: {\n\t\t\t\tbody: {\n\t\t\t\t\tembedder: 'localhost',\n\t\t\t\t\turl: 'https://proteinpaint.stjude.org/ppdemo/hg19/hic/hic_demo.hic',\n\t\t\t\t\tmatrixType: 'observed',\n\t\t\t\t\tnmeth: 'NONE',\n\t\t\t\t\tpos1: '3',\n\t\t\t\t\tpos2: '2',\n\t\t\t\t\tresolution: 1000000\n\t\t\t\t} // satisfies HicGenomeRequest // TODO: fix the type or example\n\t\t\t},\n\t\t\tresponse: {\n\t\t\t\theader: { status: 200 }\n\t\t\t}\n\t\t}\n\t]\n}\n", "import type { WSIClass } from '../dataset.ts'\nimport type { Annotation, Prediction } from './aiProjectSelectedWSImages.ts'\n\nexport type SampleWSImagesRequest = {\n\tgenome: string\n\tdslabel: string\n\tsample_id: string\n\twsimage: string\n}\n\nexport type SampleWSImagesResponse = {\n\tsampleWSImages: WSImage[]\n}\n\nexport class WSImage {\n\tid?: number\n\tfilename: string\n\tmetadata?: string\n\tpredictionLayers?: Array<string>\n\tannotations?: Array<Annotation>\n\tpredictions?: Array<Prediction>\n\tclasses?: Array<WSIClass>\n\t/** ds defined uncertainity labels and colors */\n\tuncertainty?: any\n\t/** Color to highlight active patches */\n\tactivePatchColor?: string\n\t/** Tile size in pixels needed for AI scripts */\n\ttileSize?: number\n\n\tconstructor(filename: string) {\n\t\tthis.filename = filename\n\t}\n}\n\n// TODO: write payload examples to help with automated testing and documentation, for non-prod use only\n", "import type { ErrorResponse } from './errorResponse.ts'\n\nexport type BubbleHeatmapRequest = {\n\tgenome: string\n\tdslabel: string\n\tgene: string\n}\n\n/** One modification site (PTM) or one protein-level measurement (whole/insoluble\n * proteome). PTM cells carry many of these; protein-level cells carry exactly one. */\nexport type BubbleSite = {\n\t/** site identifier \u2014 the DAPfile `identifier` column (modified peptide for PTM,\n\t * e.g. `K.VAVVRT%PPKSPSS*AK.S`; protein id for protein-level rows) */\n\tid: string\n\t/** raw per-site log2 fold change from the DAPfile */\n\tlog2FC: number\n\t/** per-site FDR (adjusted p-value) from the DAPfile */\n\tfdr: number\n\t/** true when fdr < the response's fdrThreshold; non-significant sites\n\t * are still returned (the client draws non-significant protein-level dots faded\n\t * and hides non-significant PTM sites) */\n\tsignificant: boolean\n\t/** matched reference-assay (total protein) log2FC for this protein (base UniProt\n\t * acc) + cohort, if available */\n\tproteinLog2FC?: number\n\t/** protein-abundance-adjusted change = log2FC \u2212 proteinLog2FC (point estimate),\n\t * present only when proteinLog2FC is available */\n\tadjustedLog2FC?: number\n\t/** true when a matched protein value existed and adjustedLog2FC was computed */\n\tadjustedAvailable: boolean\n}\n\nexport type BubbleCell = {\n\t/** all sites for this (acc, assay, cohort); one entry for protein-level assays */\n\tsites: BubbleSite[]\n}\n\nexport type BubbleHeatmapIsoform = {\n\tgene_name: string\n\t/** data[assay][cohort] \u2192 cell (omitted when the cohort doesn't exist under the\n\t * assay or the gene has no row in that DAPfile) */\n\tdata: {\n\t\t[assay: string]: {\n\t\t\t[cohort: string]: BubbleCell\n\t\t}\n\t}\n}\n\nexport type BubbleHeatmapResponse =\n\t| ErrorResponse\n\t| {\n\t\t\tisoforms: { [isoformId: string]: BubbleHeatmapIsoform }\n\t\t\t/** subset of `assays` that are PTM assays \u2014 rendered as multiple small\n\t\t\t * per-site dots; the rest render as a single big dot per cell */\n\t\t\tptmAssays: string[]\n\t\t\t/** Row order */\n\t\t\tassays: string[]\n\t\t\t/** Column order */\n\t\t\tcohorts: string[]\n\t\t\t/** FDR threshold below which a site is significant. Sites with\n\t\t\t * fdr \u2265 threshold are still returned with `significant: false`; the client\n\t\t\t * draws non-significant protein-level dots faded and omits non-significant\n\t\t\t * PTM sites. */\n\t\t\tfdrThreshold: number\n\t\t\t/** assay used as the total-protein baseline for protein-abundance\n\t\t\t * adjustment, or null when adjustment is not configured for this dataset */\n\t\t\tproteinReferenceAssay: string | null\n\t }\n\nexport const bubbleHeatmapPayload = {\n\trequest: { typeId: 'BubbleHeatmapRequest' },\n\tresponse: { typeId: 'BubbleHeatmapResponse' }\n}\n", "import type { Filter } from '../filter.ts'\nimport type { TermWrapper } from '../terms/tw.ts'\n\nexport type CategoriesRequest = {\n\tgenome: string\n\tdslabel: string\n\tembedder: string\n\t/** termwrapper object */\n\ttw: TermWrapper\n\tfilter?: Filter\n\tfilter0?: any\n\t/** quick fix only for gdc */\n\tcurrentGeneNames?: string[]\n\t/** optional property added by mds3 tk, to limit to cases mutated in this region */\n\trglst?: any\n}\n\ninterface Entries {\n\tsamplecount: number\n\tkey: string\n\tlabel: string\n}\n\nexport type CategoriesResponse = {\n\tlst: Entries[]\n\torderedLabels?: []\n}\n\n// TODO: write more payload examples to help with automated testing and documentation, for non-prod use only\n\nexport const termdbCategoriesPayloadExamples = {\n\trequest: {\n\t\ttypeId: 'CategoriesRequest'\n\t},\n\tresponse: {\n\t\ttypeId: 'CategoriesResponse'\n\t},\n\texamples: [\n\t\t{\n\t\t\trequest: {\n\t\t\t\tbody: {\n\t\t\t\t\tgenome: 'hg38-test',\n\t\t\t\t\tdslabel: 'TermdbTest',\n\t\t\t\t\tembedder: 'localhost',\n\t\t\t\t\ttw: { id: 'diaggrp' },\n\t\t\t\t\tfilter: {\n\t\t\t\t\t\ttype: 'tvslst',\n\t\t\t\t\t\tin: true,\n\t\t\t\t\t\tjoin: '',\n\t\t\t\t\t\tlst: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t//tag: 'cohortFilter',\n\t\t\t\t\t\t\t\ttype: 'tvs',\n\t\t\t\t\t\t\t\ttvs: {\n\t\t\t\t\t\t\t\t\tterm: {\n\t\t\t\t\t\t\t\t\t\tname: 'Cohort',\n\t\t\t\t\t\t\t\t\t\ttype: 'categorical',\n\t\t\t\t\t\t\t\t\t\tvalues: { ABC: { label: 'ABC' }, XYZ: { label: 'XYZ' } },\n\t\t\t\t\t\t\t\t\t\tid: 'subcohort',\n\t\t\t\t\t\t\t\t\t\tisleaf: false,\n\t\t\t\t\t\t\t\t\t\tgroupsetting: { disabled: true }\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tvalues: [{ key: 'ABC', label: 'ABC' }]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t]\n\t\t\t\t\t}\n\t\t\t\t} // satisfies CategoriesRequest // TODO: use the type definition\n\t\t\t},\n\t\t\tresponse: {\n\t\t\t\theader: { status: 200 }\n\t\t\t}\n\t\t}\n\t]\n}\n", "import type { TermTypes } from '../terms/constants.ts'\nimport type { Filter } from '../filter.ts'\n\n/** */\n// Helps track ambiguous points in the LLM reasoning process for debugging and improvement purposes.\n// Create a fresh array per request/pipeline run to avoid sharing mutable state across module consumers.\nexport const createAmbiguousPoints = (): string[] => []\n\nexport type ChatRequest = {\n\tgenome: string\n\tdslabel: string\n\tfilter?: Filter\n\t/** user prompt */\n\tprompt: string\n\t__protected__?: any\n}\n\nexport type TextResponse = {\n\ttype: 'text'\n\t/** Plain text message to display in the chat */\n\ttext: string\n}\nexport type HtmlResponse = {\n\ttype: 'html'\n\t/** Pre-approved HTML from the dataset JSON resources array */\n\thtml: string\n}\nexport type PlotResponse = {\n\ttype: 'plot'\n\tplot: object\n\tmsg?: string\n\t/** Specifies what action to take e.g. Summary plot or no action. Will add more chart types later */\n}\n\nexport interface GeneDataTypeResult {\n\tgene: string\n\tdataType: string\n}\n\n/** Gene data types a dataset supports, for the mass omnisearch to decide which gene-search actions\n * (expression / variant sub-types / methylation / genome browser) to offer. */\nexport interface GeneDataTypeAvailability {\n\tgeneExpression: boolean\n\tdnaMethylation: boolean\n\tsnvindel: boolean\n\tcnv: boolean\n\tsvfusion: boolean\n\t/** True when any genomic-alteration data type (snvindel/cnv/svfusion) is available, meaning a\n\t * genome browser can be seeded for the gene. Derived from the three flags above. */\n\tgenomeBrowser: boolean\n}\n\n/** One matched gene together with the data types available for that specific gene. */\nexport interface GeneMatch {\n\tgene: string\n\tdataTypes: GeneDataTypeAvailability\n\t/** Default genomic coordinate for the gene, used to seed a genome browser track (e.g. the DNA\n\t * methylation region picker) so the client needs no separate genelookup request. Null when the\n\t * gene is not resolved to a coordinate (only resolved for genes that need a genome browser). */\n\tcoord: { chr: string; start: number; stop: number } | null\n}\n\n/** One matched sample. Only sent when the dataset allows displaying sample ids\n * (authApi.canDisplaySampleIds); a dataset that does not permit it yields no samples at all, so the\n * client needs no permission check of its own. */\nexport interface SampleMatch {\n\tid: number | string\n\tname: string\n\t/** Sample selection for the single-cell viewer, when this sample has single-cell data. */\n\tsingleCell?: { sID: string; eID?: string }\n\t/** Facet-table assays available for this sample, when track-list facet data exists. */\n\tassays?: { facet: string; names: string[] }[]\n}\n\n/** Result of the mass omnisearch: matched dictionary terms and matched genes, each carrying its own\n * available gene data types so the client can offer the appropriate per-gene action buttons. */\nexport interface OmnisearchResult {\n\tdictionaryTerms: any[]\n\tgenes: GeneMatch[]\n\t/** Matched samples. Always [] for a dataset that does not allow displaying sample ids. */\n\tsamples: SampleMatch[]\n\t/** Total match count per result type BEFORE the per-type display cap. Lets the client show a\n\t * \"Displaying N out of M\" note when a type's matches were truncated (total > the returned array length). */\n\ttotals?: { dictionaryTerms: number; genes: number; samples: number }\n\t/** Parsed genomic coordinate when the prompt is a valid \"chr:start-stop\" range AND the dataset\n\t * supports the genome browser genomic view (has snvindel/cnv/svfusion and gbRestrictMode !== 'protein').\n\t * Null/absent otherwise. Resolved server-side (via string2pos) so the client needs no genome object. */\n\tcoord?: { chr: string; start: number; stop: number } | null\n\terror?: any\n}\n\nexport type LlmConfig = {\n\tprovider: 'SJ' | 'ollama' | 'huggingface' | 'azure'\n\tEmbeddingProvider: 'SJ' | 'ollama' | 'huggingface'\n\tEmbeddingProviderApi: string\n\tapi: string\n\tapiToken?: string\n\tEmbeddingProviderApiToken?: string\n\tmodel: ModelConfig\n\tembeddingModelName: string\n\t/** Whether to load the embedding model locally (via transformers.js) or call a remote API. Defaults to 'api'. */\n\tembeddingModelAccess?: 'local' | 'api'\n\t/** Smaller model to use for LLM classification fallback. Defaults to `model` if not set. */\n\tclassifierModelConfig?: ModelConfig\n\t/** Log verbose debug output (e.g. raw embedding arrays) to the terminal. Defaults to false. */\n\tverbose?: boolean\n}\n\nexport type ModelConfig = {\n\tmodelName: string\n\tmaxTokens: number\n}\n\nexport interface GeneSetDataTypeResult {\n\tgeneSet: string\n\tdataType: typeof TermTypes.SSGSEA | typeof TermTypes.GENE_VARIANT | 'ambiguous' | typeof TermTypes.GENE_EXPRESSION\n}\n\nexport type ChatResponse = TextResponse | HtmlResponse | PlotResponse\n\nexport type SummaryType = {\n\t/** Name of 1st term */\n\tterm: string\n\t/** Name of 2nd term */\n\tterm2?: string\n\t/** Optional simple filter terms */\n\tsimpleFilter: FilterTerm[]\n\t/** Optional explicit child type requested by the user. If omitted, the logic of the data types picks the child type. */\n\tchildType?: 'violin' | 'boxplot' | 'sampleScatter' | 'barchart'\n}\n\nexport type FilterTerm =\n\t| CategoricalFilterTerm\n\t| NumericFilterTerm /** FilterTerm can either be numeric or categorical */\n\nexport type CategoricalFilterTerm = {\n\t/** Name of categorical term */\n\tterm: string\n\t/** The category of the term */\n\tcategory: string\n\t/** join term to be used only when there is more than one filter term and should be placed from the 2nd filter term onwards describing how it connects to the previous term */\n\tjoin?: 'and' | 'or'\n}\n\nexport type NumericFilterTerm = {\n\t/** Name of numeric term */\n\tterm: string\n\t/** start position (or lower limit) of numeric term */\n\tstart?: number\n\t/** stop position (or upper limit) of numeric term */\n\tstop?: number\n\t/** join term to be used only when there is more than one filter term and should be placed from the 2nd filter term onwards describing how it connects to the previous term */\n\tjoin?: 'and' | 'or'\n}\n\nexport type DbRows = {\n\t/** Name of the term */\n\tname: string\n\t/** Description of the term in plain language */\n\tdescription: string\n\t/** The type of variable stored in the DB (e.g. categorical, float) */\n\tterm_type: string\n\t/** Array of {key,value} terms storing the possible categories for a categorical variable */\n\tvalues: DbValue[]\n}\n\nexport type DbValue = {\n\t/** Name of the key */\n\tkey: string\n\t/** Object of values corresponding to the key */\n\tvalue: any\n}\n\nexport type ClassificationType =\n\t| plot_type\n\t| resource_type\n\t| none_type /** Variable containing the type of action the UI needs to take */\n\nexport type plot_type = {\n\t/** When type == plot, show the corresponding plot in the plot field */\n\ttype: 'plot'\n\t/** The type of plot to be displayed on the UI.\n\t * Standard categories are listed; datasets may define additional custom categories. */\n\tplot: 'summary' | 'dge' | 'survival' | 'matrix' | 'sampleScatter' | 'hierCluster' | 'genomeBrowser'\n}\n\nexport type resource_type = {\n\t/** When type == resource, invoke the resource agent to return a matching resource link */\n\ttype: 'resource'\n}\n\nexport type none_type = {\n\t/** When type == none, the query did not match any known category */\n\ttype: 'none'\n}\n\n/** Top-level classification returned by classifyQuery: plot or notplot (subtype determined separately by plot.ts) */\nexport type QueryClassification = { type: 'plot' } | { type: 'notplot' } | { type: 'binaryQuery' }\n\n/** Specific plot type returned by classifyPlotType in plot.ts */\nexport type PlotType =\n\t| 'summary'\n\t| 'dge'\n\t| 'survival'\n\t| 'cox'\n\t| 'matrix'\n\t| 'prebuiltscatter'\n\t| 'hiercluster'\n\t| 'genomeBrowser'\n\nexport type DEType = {\n\t/** Name of group1 which is an array of filter terms */\n\tgroup1: FilterTerm[]\n\t/** Name of group2 which is an array of filter terms */\n\tgroup2: FilterTerm[]\n\t/** Method used for carrying out differential gene expression analysis */\n\tmethod?: 'edgeR' | 'limma' | 'wilcoxon'\n}\n\nexport type MatrixType = {\n\t/** Names of dictionary terms to include as rows in the matrix (e.g. \"Diagnosis\", \"Gender\", \"Race\") */\n\tterms?: string[]\n\t/** Names of genes to include as gene variant rows in the matrix (e.g. \"TP53\", \"KRAS\", \"NRAS\") */\n\tgeneNames?: string[]\n\t/** Names of gene sets containing ssGSEA enrichment scores */\n\tgenesetNames?: string[]\n\t/** Optional simple filter terms to restrict the sample set */\n\tsimpleFilter?: FilterTerm[]\n}\n\nexport type HierClusterType = {\n\t/** Names of genes to include in the hierarchical clustering (e.g. \"TP53\", \"KRAS\", \"BCR\") */\n\tgeneNames?: string[]\n\t/** Names of gene sets containing list of genes to be used for hierarchical clustering */\n\tgenesetNames?: string[]\n\t/** Optional simple filter terms to restrict the sample set */\n\tsimpleFilter?: FilterTerm[]\n}\n\nexport type SampleScatterType = {\n\t/** Name of the pre-built plot (e.g. \"Transcriptome t-SNE\", \"Transcriptome UMAP\") */\n\tplotName: string\n\t/** Term or gene name to overlay as color, or null to remove color overlay */\n\tcolorTW?: string | null\n\t/** Term or gene name to overlay as shape, or null to remove shape overlay */\n\tshapeTW?: string | null\n\t/** Term or gene name to overlay as Z-divide, or null to remove divide overlay */\n\tterm0?: string | null\n\t/** Optional simple filter terms */\n\tsimpleFilter?: FilterTerm[]\n}\n", "import type { Filter } from '../filter.ts'\nimport type { TermWrapper } from '../terms/tw.ts'\n\nexport type DescrStatsRequest = {\n\t/** genome label in the serverconfig.json */\n\tgenome: string\n\t/** dataset label for the given genome */\n\tdslabel: string\n\t// embedder: string\n\t/** wrapper of a numeric term, q.mode can be any as getData() will always pull sample-level values for summarizing */\n\ttw: TermWrapper\n\t/** if true, the (violin) plot is in log scale and must exclude 0-values from the stat */\n\tlogScale?: boolean\n\t/** optional pp filter */\n\tfilter?: Filter\n\t/** optional gdc filter */\n\tfilter0?: any\n}\n\nexport type DescrStats = {\n\t[key: string]: {\n\t\tkey: string\n\t\tlabel: string\n\t\tvalue: number\n\t}\n}\n\nexport type DescrStatsResponse = DescrStats\n\n// TODO: write more payload examples to help with automated testing and documentation, for non-prod use only\n\nexport const descrStatsPayloadExamples = {\n\trequest: {\n\t\ttypeId: 'DescrStatsRequest'\n\t},\n\tresponse: {\n\t\ttypeId: 'DescrStatsResponse'\n\t},\n\texamples: [\n\t\t{\n\t\t\trequest: {\n\t\t\t\tbody: {\n\t\t\t\t\tgenome: 'hg38-test',\n\t\t\t\t\tdslabel: 'TermdbTest',\n\t\t\t\t\tembedder: 'localhost',\n\t\t\t\t\ttw: { term: { id: 'hrtavg' }, q: { mode: 'continuous' } },\n\t\t\t\t\tfilter: {\n\t\t\t\t\t\ttype: 'tvslst',\n\t\t\t\t\t\tin: true,\n\t\t\t\t\t\tjoin: '',\n\t\t\t\t\t\tlst: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttag: 'cohortFilter',\n\t\t\t\t\t\t\t\ttype: 'tvs',\n\t\t\t\t\t\t\t\ttvs: {\n\t\t\t\t\t\t\t\t\tterm: {\n\t\t\t\t\t\t\t\t\t\tname: 'Cohort',\n\t\t\t\t\t\t\t\t\t\ttype: 'categorical',\n\t\t\t\t\t\t\t\t\t\tvalues: { ABC: { label: 'ABC' }, XYZ: { label: 'XYZ' } },\n\t\t\t\t\t\t\t\t\t\tid: 'subcohort',\n\t\t\t\t\t\t\t\t\t\tisleaf: false,\n\t\t\t\t\t\t\t\t\t\tgroupsetting: { disabled: true }\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tvalues: [{ key: 'ABC', label: 'ABC' }]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t]\n\t\t\t\t\t}\n\t\t\t\t} // satisfies DescrStatsRequest // TODO: enable type check\n\t\t\t},\n\t\t\tresponse: {\n\t\t\t\theader: { status: 200 }\n\t\t\t}\n\t\t}\n\t]\n}\n", "import type { Filter } from '../filter.ts'\nimport type { Term } from '../terms/term.ts'\n\nexport type PercentileRequest = {\n\t/** a user-defined genome label in the serverconfig.json, hg38, hg19, mm10, etc */\n\tgenome: string\n\t/** a user-defined dataset label in the serverconfig.json, such as ClinVar, SJLife, GDC, etc */\n\tdslabel: string\n\tembedder: string\n\tgetpercentile: number[]\n\t/** term id string */\n\tterm: Term\n\tfilter?: Filter\n\tfilter0?: any\n}\n\nexport type PercentileResponse = {\n\tvalues: number[]\n}\n\n// TODO: write more payload examples to help with automated testing and documentation, for non-prod use only\n\nexport const percentilePayloadExamples = {\n\trequest: {\n\t\ttypeId: 'PercentileRequest'\n\t},\n\tresponse: {\n\t\ttypeId: 'PercentileResponse'\n\t},\n\texamples: [\n\t\t{\n\t\t\trequest: {\n\t\t\t\tbody: {\n\t\t\t\t\tgenome: 'hg38-test',\n\t\t\t\t\tdslabel: 'TermdbTest',\n\t\t\t\t\tembedder: 'localhost',\n\t\t\t\t\tgetpercentile: [50],\n\t\t\t\t\tterm: { id: 'agedx' },\n\t\t\t\t\tfilter: {\n\t\t\t\t\t\ttype: 'tvslst',\n\t\t\t\t\t\tin: true,\n\t\t\t\t\t\tjoin: '',\n\t\t\t\t\t\tlst: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttag: 'cohortFilter',\n\t\t\t\t\t\t\t\ttype: 'tvs',\n\t\t\t\t\t\t\t\ttvs: {\n\t\t\t\t\t\t\t\t\tterm: {\n\t\t\t\t\t\t\t\t\t\tname: 'Cohort',\n\t\t\t\t\t\t\t\t\t\ttype: 'categorical',\n\t\t\t\t\t\t\t\t\t\tvalues: { ABC: { label: 'ABC' }, XYZ: { label: 'XYZ' } },\n\t\t\t\t\t\t\t\t\t\tid: 'subcohort',\n\t\t\t\t\t\t\t\t\t\tisleaf: false,\n\t\t\t\t\t\t\t\t\t\tgroupsetting: { disabled: true }\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tvalues: [{ key: 'ABC', label: 'ABC' }]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t]\n\t\t\t\t\t}\n\t\t\t\t} // satisfies PercentileRequest // TODO: enable type check\n\t\t\t},\n\t\t\tresponse: {\n\t\t\t\theader: { status: 200 }\n\t\t\t}\n\t\t}\n\t]\n}\n", "export type RootTermRequest = {\n\t/** a user-defined genome label in the serverconfig.json, hg38, hg19, mm10, etc */\n\tgenome: string\n\t/** a user-defined dataset label in the serverconfig.json, such as ClinVar, SJLife, GDC, etc */\n\tdslabel: string\n\tembedder: string\n\tdefault_rootterm: number\n\tcohortValues: string\n\ttreeFilter: string\n}\n\ninterface Entries {\n\tname: string\n\tid: string\n\tisleaf: boolean\n\tincluded_types: string[]\n\tchild_types: string[]\n}\n\nexport type RootTermResponse = {\n\tlst: Entries[]\n}\n\nexport const rootTermPayloadExamples = {\n\trequest: {\n\t\ttypeId: 'RootTermRequest'\n\t},\n\tresponse: {\n\t\ttypeId: 'RootTermResponse'\n\t},\n\texamples: [\n\t\t{\n\t\t\trequest: {\n\t\t\t\tbody: {\n\t\t\t\t\tgenome: 'hg38-test',\n\t\t\t\t\tdslabel: 'TermdbTest',\n\t\t\t\t\tembedder: 'localhost',\n\t\t\t\t\tdefault_rootterm: 1,\n\t\t\t\t\tcohortValues: 'ABC'\n\t\t\t\t} // satisfies RootTermRequest // TODO: enable type check\n\t\t\t},\n\t\t\tresponse: {\n\t\t\t\theader: { status: 200 }\n\t\t\t}\n\t\t}\n\t]\n}\n", "export type RunChartRequest = {\n\tgenome: string\n\tdslabel: string\n\t/**\n\t * term wrapper for x axis: { term, q }.\n\t * runChart2: q.mode='continuous' \u2192 1 series.\n\t * runChart2Period: q.mode='discrete' (with bins) \u2192 multiple series by period.\n\t */\n\txtw: { term: { id: string }; q?: { mode?: 'continuous' | 'discrete' }; $id?: string }\n\t/** term wrapper for y axis: { term, q }. When omitted, chart renders as frequency (count per time bucket). */\n\tytw?: { term: { id: string }; q?: { mode?: string }; $id?: string }\n\taggregation?: 'median'\n\t/** When true (frequency mode only), series Y values are cumulative counts. */\n\tshowCumulativeFrequency?: boolean\n\tfilter?: any\n\t__protected__?: any // auth token for accessing protected data\n}\n\nexport type RunChartSeries = {\n\t/** period/series identifier */\n\tseriesId?: string\n\t/** calculated Y median value for this curve */\n\tmedian: number\n\tpoints: Point[]\n}\n\nexport type RunChartSuccessResponse = {\n\tstatus: 'ok'\n\t/** each series is one curve, with a median. a runchart may show 1 or multiple curves */\n\tseries: RunChartSeries[]\n}\n\nexport type RunChartErrorResponse = {\n\terror: string\n\t/** Always empty on error; present so response shape is consistent for clients/checkers. */\n\tseries: RunChartSeries[]\n}\n\n/** Discriminated union: server returns success shape on 200 or error shape with series: []. */\nexport type RunChartResponse = RunChartSuccessResponse | RunChartErrorResponse\n\nexport function isRunChartSuccess(r: RunChartResponse): r is RunChartSuccessResponse {\n\treturn 'status' in r && r.status === 'ok'\n}\n\ntype Point = {\n\t/** decimal year, e.g. 2024.21321321 */\n\tx: number\n\t/** text of human-readable x value, e.g. \"Jan 2024\" which may be by the months, depends on dataset customization */\n\txName: string\n\t/** timeline, e.g. number of days */\n\ty: number\n\t/** number of samples with this timeline at this time point */\n\tsampleCount: number\n}\n\n// TODO: write payload examples to help with automated testing and documentation, for non-prod use only\n", "import type { Filter } from '../filter.ts'\nimport type { ErrorResponse } from './errorResponse.ts'\nimport type { ColorLegendEntry, ShapeLegendEntry } from './termdb.sampleScatter.ts'\nimport type { TermWrapper } from '../terms/tw.ts'\n\nexport type TermdbSingleCellPlotsRequest = {\n\t/** Genome id */\n\tgenome: string\n\t/** Dataset label */\n\tdslabel: string\n\tsingleCellPlot: {\n\t\t/** Name of the single cell plot type, e.g. 'umap', 'tsne' */\n\t\tname: string\n\t\tsample?: { eID?: string; sID: string }\n\t\tisMetaResult?: boolean\n\t}\n\tfilter?: Filter\n\tfilter0?: any //ds specific filter, specifically for api requests\n\t/** When sample size is too large, canvas rendering uses\n\t * these settings to control how the plot is rendered. */\n\tcanvasSettings: {\n\t\t/** Maximum number of samples to render on the client side.\n\t\t * If over the cutoff, will return an image instead of sample array.\n\t\t * Matches the maxSvgSamplesCutoff in scatter settings.*/\n\t\tcutoff: number\n\t\t/** Width of the scatter canvas */\n\t\twidth: number\n\t\t/** Height of the scatter canvas */\n\t\theight: number\n\t\t/** Radius of the points in the scatter plot. In scatter,\n\t\t * this is the setting size. */\n\t\tradius: number\n\t\t/** Default or user defined lower limit cutoff for x scale */\n\t\tminXScale: number | null\n\t\t/** Default or user defined upper limit cutoff for x scale */\n\t\tmaxXScale: number | null\n\t\t/** Default or user defined lower limit cutoff for y scale */\n\t\tminYScale: number | null\n\t\t/** Default or user defined upper limit cutoff for y scale */\n\t\tmaxYScale: number | null\n\t\t/** Default or user defined opacity for the scatter plot points */\n\t\topacity: number\n\t\t/** Required non expression color for scge plots. 'startColor' is the\n\t\t * settings key in the scatter. */\n\t\tstartColor: string\n\t\t/** Required non expression color for scge plots. 'stopColor' is the\n\t\t * settings key in the scatter. */\n\t\tstopColor: string\n\t\t/** Device pixel ratio from the client for HiDPI rendering */\n\t\tdevicePixelRatio?: number\n\t}\n\t/** Term wrapper for coloring the single cell plot */\n\tcolorTW?: TermWrapper\n\t/** Term wrappers for gene expression */\n\tcoordTWs?: TermWrapper[]\n}\n\nexport type TermdbSingleCellPlotsResponse = ErrorResponse | ValidSingleCellPlotsResponse\n\n/** The computed coordinate and gene expression range for cells\n * returned in a single request. Scoped to the specific plot type\n * (e.g. 'umap', 'tsne') and optional sample filter \u2014 not a global\n * range across all plots or samples. Used to define axis domains\n * and color scale domains for rendering. */\nexport type SingleCellRange = {\n\t/** Minimum x coordinate across all cells in this plot response */\n\txMin: number\n\t/** Maximum x coordinate across all cells in this plot response */\n\txMax: number\n\t/** Minimum y coordinate across all cells in this plot response */\n\tyMin: number\n\t/** Maximum y coordinate across all cells in this plot response */\n\tyMax: number\n\t/** Minimum gene expression value (Infinity when no expression data) */\n\tgeMin: number\n\t/** Maximum gene expression value (-Infinity when no expression data) */\n\tgeMax: number\n}\n\n/** Returns cell data formatted in samples array for the sampleScatter */\nexport type FormattedCell2Sample = {\n\t/** Cell identifier used as the sample id */\n\tsampleId: string\n\t/** X coordinate of the cell in the plot */\n\tx: number\n\t/** Y coordinate of the cell in the plot */\n\ty: number\n\t/** Z coordinate, always 0 (2D plots only) */\n\tz: number\n\t/** Cell type or group assignment for coloring */\n\tcategory: string\n\t/** Shape key for the legend, always 'Ref' */\n\tshape: string\n\t/** Visibility state based on user-hidden categories */\n\thidden: { category: boolean }\n\t/** Gene expression value for this cell, undefined when not applicable */\n\tgeneExp: number | undefined\n}\n\nexport type SingleCellPlotDataResult = {\n\tcolorLegend: ColorLegendEntry[]\n\tshapeLegend: ShapeLegendEntry[]\n\tsamples?: FormattedCell2Sample[]\n\t/** If over the cutoff, will return image instead of sample array */\n\tsrc?: string\n\t/** css dimensions of the canvas image, used to display at\n\t * the correct size when devicePixelRatio > 1 */\n\tcanvasWidth?: number\n\tcanvasHeight?: number\n\t/** When no sample array is returned, send the total sample count for\n\t * the legend. */\n\ttotalSampleCount?: number\n}\n\nexport type ValidSingleCellPlotsResponse = {\n\trange: SingleCellRange\n\tresult: { Default: SingleCellPlotDataResult }\n}\n\nconst TermdbSingleCellPlotsRequestExample = {\n\tgenome: 'hg38-test',\n\tdslabel: 'TermdbTest',\n\tsingleCellPlot: {\n\t\tname: 'umap',\n\t\tsample: { sID: 'sample1' }\n\t},\n\tfilter: {\n\t\ttype: 'tvslst',\n\t\tin: true,\n\t\tjoin: '',\n\t\tlst: [\n\t\t\t{\n\t\t\t\ttag: 'cohortFilter',\n\t\t\t\ttype: 'tvs',\n\t\t\t\ttvs: {\n\t\t\t\t\tterm: { id: 'subcohort', type: 'multivalue' },\n\t\t\t\t\tvalues: [{ key: 'ABC', label: 'ABC' }]\n\t\t\t\t}\n\t\t\t}\n\t\t]\n\t},\n\tfilter0: undefined,\n\tcanvasSettings: {\n\t\tcutoff: 10000,\n\t\twidth: 800,\n\t\theight: 600,\n\t\tradius: 3,\n\t\tminXScale: null,\n\t\tmaxXScale: null,\n\t\tminYScale: null,\n\t\tmaxYScale: null,\n\t\topacity: 0.8,\n\t\tstartColor: '#0000ff',\n\t\tstopColor: '#ff0000',\n\t\tdevicePixelRatio: 2\n\t},\n\tcolorTW: {\n\t\tterm: {\n\t\t\tname: 'Cell Type',\n\t\t\tplot: 'UMAP',\n\t\t\ttype: 'singleCellCellType',\n\t\t\tsample: { sID: '1_patient' },\n\t\t\tgroupsetting: { disabled: false },\n\t\t\tvalues: {}\n\t\t},\n\t\tq: { mode: 'discrete', type: 'values', hiddenValues: {} }\n\t}\n}\n\nconst TermdbSingleCellPlotsResponseExample = {\n\trange: {\n\t\txMin: -2.45230826499861,\n\t\txMax: 2.02116419939392,\n\t\tyMin: -2.670907125487,\n\t\tyMax: 2.97596441655721,\n\t\tgeMin: null,\n\t\tgeMax: null\n\t},\n\tresult: {\n\t\tDefault: {\n\t\t\tcolorLegend: [\n\t\t\t\t[\n\t\t\t\t\t'T_NK',\n\t\t\t\t\t{\n\t\t\t\t\t\tsampleCount: 20,\n\t\t\t\t\t\tcolor: '#1b9e77',\n\t\t\t\t\t\tkey: 'T_NK'\n\t\t\t\t\t}\n\t\t\t\t],\n\t\t\t\t[\n\t\t\t\t\t'Blast',\n\t\t\t\t\t{\n\t\t\t\t\t\tsampleCount: 54,\n\t\t\t\t\t\tcolor: '#030303',\n\t\t\t\t\t\tkey: 'Blast'\n\t\t\t\t\t}\n\t\t\t\t],\n\t\t\t\t[\n\t\t\t\t\t'Monocyte',\n\t\t\t\t\t{\n\t\t\t\t\t\tsampleCount: 26,\n\t\t\t\t\t\tcolor: '#7570b3',\n\t\t\t\t\t\tkey: 'Monocyte'\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t],\n\t\t\tshapeLegend: [\n\t\t\t\t[\n\t\t\t\t\t'Ref',\n\t\t\t\t\t{\n\t\t\t\t\t\tsampleCount: 100,\n\t\t\t\t\t\tshape: 0,\n\t\t\t\t\t\tkey: 'Ref'\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t],\n\t\t\tsamples: [\n\t\t\t\t{\n\t\t\t\t\tsampleId: 'cell1',\n\t\t\t\t\tx: 0.958429213345285,\n\t\t\t\t\ty: 1.94008987552318,\n\t\t\t\t\tz: 0,\n\t\t\t\t\tcategory: 'T_NK',\n\t\t\t\t\tshape: 'Ref',\n\t\t\t\t\thidden: {\n\t\t\t\t\t\tcategory: false\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tsampleId: 'cell2',\n\t\t\t\t\tx: 0.678836078621254,\n\t\t\t\t\ty: -1.13854914348622,\n\t\t\t\t\tz: 0,\n\t\t\t\t\tcategory: 'T_NK',\n\t\t\t\t\tshape: 'Ref',\n\t\t\t\t\thidden: {\n\t\t\t\t\t\tcategory: false\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tsampleId: 'cell3',\n\t\t\t\t\tx: -2.11135267144421,\n\t\t\t\t\ty: -2.33519450621652,\n\t\t\t\t\tz: 0,\n\t\t\t\t\tcategory: 'T_NK',\n\t\t\t\t\tshape: 'Ref',\n\t\t\t\t\thidden: {\n\t\t\t\t\t\tcategory: false\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tsampleId: 'cell4',\n\t\t\t\t\tx: 0.551783876521269,\n\t\t\t\t\ty: -1.24685552943596,\n\t\t\t\t\tz: 0,\n\t\t\t\t\tcategory: 'T_NK',\n\t\t\t\t\tshape: 'Ref',\n\t\t\t\t\thidden: {\n\t\t\t\t\t\tcategory: false\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tsampleId: 'cell5',\n\t\t\t\t\tx: 1.84959385901015,\n\t\t\t\t\ty: 2.68311790617899,\n\t\t\t\t\tz: 0,\n\t\t\t\t\tcategory: 'T_NK',\n\t\t\t\t\tshape: 'Ref',\n\t\t\t\t\thidden: {\n\t\t\t\t\t\tcategory: false\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t}\n\t}\n}\n\nexport const TermdbSingleCellPlotsExample = {\n\trequest: {\n\t\tbody: TermdbSingleCellPlotsRequestExample\n\t},\n\tresponse: {\n\t\tbody: TermdbSingleCellPlotsResponseExample\n\t}\n}\n", "export type TermChildrenRequest = {\n\t/** a user-defined genome label in the serverconfig.json, hg38, hg19, mm10, etc */\n\tgenome: string\n\t/** a user-defined dataset label in the serverconfig.json, such as ClinVar, SJLife, GDC, etc */\n\tdslabel: string\n\tembedder: string\n\tget_children: number\n\tcohortValues?: string\n\ttid: string\n}\n\ninterface Entries {\n\tname: string\n\tid: string\n\tisleaf: boolean\n\tincluded_types: string[]\n\tchild_types: string[]\n}\n\nexport type TermChildrenResponse = {\n\tlst: Entries[]\n}\n\nexport const termChildrenPayloadExamples = {\n\trequest: {\n\t\ttypeId: 'TermChildrenRequest'\n\t},\n\tresponse: {\n\t\ttypeId: 'TermChildrenResponse'\n\t},\n\texamples: [\n\t\t{\n\t\t\trequest: {\n\t\t\t\tbody: {\n\t\t\t\t\tgenome: 'hg38-test',\n\t\t\t\t\tdslabel: 'TermdbTest',\n\t\t\t\t\tembedder: 'localhost',\n\t\t\t\t\tget_children: 1,\n\t\t\t\t\tcohortValues: 'ABC',\n\t\t\t\t\ttid: 'GO:0000001'\n\t\t\t\t} satisfies TermChildrenRequest // TODO: enable type check\n\t\t\t},\n\t\t\tresponse: {\n\t\t\t\theader: { status: 200 }\n\t\t\t}\n\t\t}\n\t]\n}\n", "import type { TermWrapper } from '../terms/tw.ts'\nimport type { Filter } from '../filter.ts'\nimport type { ErrorResponse } from './errorResponse.ts'\nimport type { DescrStats } from './termdb.descrstats.ts'\n\n/** Common properties shared by both violin and box plots */\ntype CommonProps = {\n\t/** numeric tw to fetch numeric data. tw.q.mode must be continuous */\n\ttw: TermWrapper\n\tdslabel: string\n\tgenome: string\n\t/** overlay tw for multiple violins/boxplots */\n\toverlayTw?: TermWrapper\n\t/** tw to divide to multiple charts */\n\tdivideTw?: TermWrapper\n\t/** mass filter */\n\tfilter?: Filter\n\t/** read-only invisible filter */\n\tfilter0?: any\n\t/** TODO: Needs description FIXME delete */\n\tcurrentGeneNames?: string[]\n\t/** if true, use log scale; if false or undefined, use linear scale */\n\tisLogScale?: boolean\n}\n\n/** Request type for violin plots with required violin-specific parameters */\nexport type ViolinRequest = CommonProps & {\n\t/** Indicates the type of chart to render */\n\tplotType: 'violin'\n\t/** A number representing the dimension perpendicular to the violin spread */\n\taxisHeight?: number\n\t/** A string representing the type of symbol used on the plot */\n\tdatasymbol?: string\n\t/** A number representing the device's pixel ratio */\n\tdevicePixelRatio: number\n\t/** If true, uses KDE method to build plot */\n\tisKDE?: boolean\n\t/** A string with two possible values: 'horizontal' or 'vertical' */\n\torientation: string\n\t/** A number representing the radius of the data symbols */\n\tradius: number\n\t/** A number representing the right margin */\n\trightMargin?: number\n\t/** Term may be scaled from regression analysis */\n\tscale?: any\n\t/** A number representing the width of the stroke */\n\tstrokeWidth?: number\n\t/** A number representing the width of the SVG box */\n\tsvgw: number\n\t/** Number of bins to build the plot. Default is 20. */\n\tticks?: number\n}\n\n/** Request type for box plots with required box-specific parameters */\nexport type BoxRequest = CommonProps & {\n\t/** Indicates the type of chart to render */\n\tplotType: 'box'\n\t/** sort plots by median value */\n\torderByMedian?: boolean\n\t/** Remove outliers from the plot */\n\tremoveOutliers?: boolean\n\t/** If true, show association tests table */\n\tshowAssocTests?: boolean\n}\n\n/**Unified request type for violin and boxplot - union of ViolinRequest and BoxRequest */\nexport type ViolinBoxRequest = ViolinRequest | BoxRequest\n\nexport type ViolinBoxResponse = ViolinResponse | BoxPlotResponse | ErrorResponse\n\n/** Type guard to check if response is an ErrorResponse */\nexport function isErrorResponse(response: ViolinBoxResponse): response is ErrorResponse {\n\treturn 'error' in response && 'status' in response\n}\n\n/** Type guard to check if response is a BoxPlotResponse */\nexport function isBoxPlotResponse(response: ViolinBoxResponse): response is BoxPlotResponse {\n\treturn !isErrorResponse(response) && 'charts' in response && 'descrStats' in response\n}\n\n/** Type guard to check if response is a ViolinResponse */\nexport function isViolinResponse(response: ViolinBoxResponse): response is ViolinResponse {\n\treturn !isErrorResponse(response) && 'min' in response && 'max' in response\n}\n\n/** Violin response types */\ninterface BinsEntries {\n\tx0: number\n\tx1: number\n\tdensity: number\n}\n\ninterface ValuesEntries {\n\tid: string\n\tlabel: string\n\tvalue: number\n}\n\ninterface PValueEntries {\n\tvalue?: string\n\thtml?: string\n}\n\ntype ViolinDensity = {\n\tbins: BinsEntries[]\n\tdensityMax: number\n\tdensityMin: number\n}\n\nexport type ViolinPlotEntry = {\n\tcolor: string\n\tchartId: string\n\tdensity: ViolinDensity\n\tlabel: string\n\tplotValueCount: number\n\tseriesId: string\n\tsrc: string\n\tsummaryStats: ValuesEntries[]\n}\n\nexport type ViolinResponse = {\n\tbins: { [index: string]: any }\n\tcharts: {\n\t\t[index: string]: {\n\t\t\tchartId: string\n\t\t\tplots: ViolinPlotEntry[]\n\t\t\tpvalues?: PValueEntries[][]\n\t\t}\n\t}\n\tmin: number\n\tmax: number\n\tuncomputableValues: { [index: string]: number }[] | null\n\tdescrStats?: DescrStats\n}\n\n/** Boxplot response types */\nexport type BoxPlotData = {\n\tw1: number | undefined\n\tw2: number | undefined\n\tp05: number\n\tp25: number\n\tp50: number\n\tp75: number\n\tp95: number\n\tiqr: number\n\tout: { value: number }[]\n}\n\nexport type BoxPlotEntry = {\n\tboxplot: BoxPlotData & { label: string }\n\tcolor?: string\n\tdescrStats: DescrStats\n\tisHidden?: boolean\n\tkey: string\n\tseriesId?: string\n}\n\nexport type BoxPlotChartEntry = {\n\tchartId: string\n\tplots: BoxPlotEntry[]\n\tsampleCount: number\n\twilcoxon?: [{ value: string }, { value: string }, { html: string }][]\n}\n\nexport type BoxPlotResponse = {\n\tabsMin?: number\n\tabsMax?: number\n\tbins?: {\n\t\t[index: string]: any\n\t}\n\tcharts: {\n\t\t[chartId: string]: BoxPlotChartEntry\n\t}\n\tdescrStats: DescrStats\n\tuncomputableValues: { label: string; value: number }[] | null\n}\n\n// TODO: write more payload examples to help with automated testing and documentation, for non-prod use only\n\nexport const violinBoxPayload = {\n\trequest: {\n\t\ttypeId: 'ViolinBoxRequest'\n\t},\n\tresponse: {\n\t\ttypeId: 'ViolinBoxResponse'\n\t},\n\texamples: [\n\t\t{\n\t\t\trequest: {\n\t\t\t\tbody: {\n\t\t\t\t\tplotType: 'violin',\n\t\t\t\t\tgenome: 'hg38-test',\n\t\t\t\t\tdslabel: 'TermdbTest',\n\t\t\t\t\ttw: {\n\t\t\t\t\t\tterm: { id: 'aaclassic_5', type: 'float' },\n\t\t\t\t\t\tq: { mode: 'continuous' }\n\t\t\t\t\t},\n\t\t\t\t\tdevicePixelRatio: 2,\n\t\t\t\t\tsvgw: 200,\n\t\t\t\t\torientation: 'horizontal',\n\t\t\t\t\tdatasymbol: 'rug',\n\t\t\t\t\tradius: 5,\n\t\t\t\t\tisLogScale: false\n\t\t\t\t} // satisfies ViolinBoxRequest // TODO: enable type check\n\t\t\t},\n\t\t\tresponse: {\n\t\t\t\theader: { status: 200 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\trequest: {\n\t\t\t\tbody: {\n\t\t\t\t\tplotType: 'box',\n\t\t\t\t\tgenome: 'hg38-test',\n\t\t\t\t\tdslabel: 'TermdbTest',\n\t\t\t\t\ttw: {\n\t\t\t\t\t\tterm: { id: 'agedx', type: 'float' },\n\t\t\t\t\t\tq: { mode: 'continuous' }\n\t\t\t\t\t},\n\t\t\t\t\toverlayTw: {\n\t\t\t\t\t\tterm: { id: 'sex', type: 'categorical' }\n\t\t\t\t\t},\n\t\t\t\t\torderByMedian: true\n\t\t\t\t} // satisfies ViolinBoxRequest // TODO: enable type check\n\t\t\t},\n\t\t\tresponse: {\n\t\t\t\theader: { status: 200 }\n\t\t\t}\n\t\t}\n\t]\n}\n", "export const CATEGORICAL = 'categorical'\nexport const CONDITION = 'condition'\nexport const DATE = 'date'\nexport const DNA_METHYLATION = 'dnaMethylation'\n// dt term types, used for filtering variants of a geneVariant term;\n// the matching dt term entries are declared in `#shared/common.js` dtTerms[]\nexport const DTCNV = 'dtcnv'\nexport const DTFUSION = 'dtfusion'\nexport const DTITD = 'dtitd'\nexport const DTSNVINDEL = 'dtsnvindel'\nexport const DTSV = 'dtsv'\nexport const FLOAT = 'float'\nexport const GENE_VARIANT = 'geneVariant'\nexport const GENE_EXPRESSION = 'geneExpression'\nexport const ISOFORM_EXPRESSION = 'isoformExpression'\nexport const INTEGER = 'integer'\nexport const JUNCTION = 'junction'\nexport const METABOLITE_INTENSITY = 'metaboliteIntensity'\nexport const MULTIVALUE = 'multivalue'\nexport const PROTEOME_ABUNDANCE = 'proteomeAbundance'\nexport const PROTEOME_DAP = 'proteomeDAP'\nexport const PSEUDOBULK = 'pseudobulk'\nexport const SAMPLELST = 'samplelst'\nexport const SINGLECELL_CELLTYPE = 'singleCellCellType'\nexport const SINGLECELL_GENE_EXPRESSION = 'singleCellGeneExpression'\nexport const SNP = 'snp'\nexport const SNP_LIST = 'snplst'\nexport const SNP_LOCUS = 'snplocus'\nexport const SSGSEA = 'ssGSEA'\nexport const SURVIVAL = 'survival'\nexport const TERM_COLLECTION = 'termCollection'\nexport const COHORT = 'cohort'\n\n//Term types should be used gradually using these constants instead of hardcoding the values,\n// eg: type == CATEGORICAL instead of type == 'categorical'\n// NOTE: keep this list complete at declaration, do not add entries to it at runtime,\n// so that consumers see the same keys regardless of module load order\nexport const TermTypes = {\n\tGENE_VARIANT,\n\tGENE_EXPRESSION,\n\tISOFORM_EXPRESSION,\n\tSSGSEA,\n\tDNA_METHYLATION,\n\tCATEGORICAL,\n\tINTEGER,\n\tJUNCTION,\n\tFLOAT,\n\tSNP,\n\tSNP_LIST,\n\tSNP_LOCUS,\n\tCONDITION,\n\tSURVIVAL,\n\tSAMPLELST,\n\tMETABOLITE_INTENSITY,\n\tPROTEOME_ABUNDANCE,\n\tPSEUDOBULK,\n\tSINGLECELL_CELLTYPE,\n\tSINGLECELL_GENE_EXPRESSION,\n\tMULTIVALUE,\n\tDATE,\n\tTERM_COLLECTION,\n\tCOHORT,\n\tDTCNV,\n\tDTFUSION,\n\tDTITD,\n\tDTSNVINDEL,\n\tDTSV\n}\n", "import type { NumericBaseTerm, NumTW, PresetNumericBins, RawNumTW } from '../index.ts'\n\nexport const PseudobulkAssay = ['geneExpression'] as const //Add more assays here\n\nexport type PseudobulkTerm = NumericBaseTerm & {\n\ttype: 'pseudobulk'\n\t/** Corresponds to the singleCell.pseudobulk[assay] */\n\tassay: (typeof PseudobulkAssay)[number]\n\t/** Corresponds to the singleCell.pseudobulk[assay][memberId] */\n\tmemberId: string\n\t/** Corresponds to one key in singleCell.pseudobulk[assay][memberId].categories{} */\n\tcategory: string\n\t/** gene symbol */\n\tgene: string\n\tbins?: PresetNumericBins\n}\n\nexport type PseudobulkTW = NumTW & { term: PseudobulkTerm }\n\nexport type RawPseudobulkTerm = PseudobulkTerm & { name?: string }\n\nexport type RawPseudobulkTW = RawNumTW & { term: RawPseudobulkTerm }\n", "/*\nshared between client and server\n\nexported functions\n- bplen()\n- mclasstester()\n- basecompliment()\n\n\n*/\nimport { rgb } from 'd3-color'\nimport * as d3scale from 'd3-scale'\nimport * as d3 from 'd3'\nimport { DTCNV, DTFUSION, DTITD, DTSNVINDEL, DTSV } from '#types'\n\n// moved from `#shared/terms` to here, so that this can be passed as\n// part of 'common' argument to exported dataset js function, at server runtime\n// 3/30/2026 - changed from literal object to a class with static properties\n// to make it easier for IDEs and tsc compiler to catch typos in consumer code\nexport class TermTypeGroups {\n\tstatic DICTIONARY_VARIABLES = 'Dictionary Variables'\n\tstatic DNA_METHYLATION = 'DNA Methylation'\n\tstatic GENE_DEPENDENCY = 'Gene Dependency'\n\tstatic GENE_EXPRESSION = 'Gene Expression'\n\tstatic ISOFORM_EXPRESSION = 'Isoform Expression'\n\tstatic GSEA = 'GSEA'\n\tstatic METABOLITE_INTENSITY = 'Metabolite Intensity'\n\tstatic PROTEOME_ABUNDANCE = 'Proteome Abundance'\n\tstatic MUTATION_CNV_FUSION = 'Mutation/CNV/Fusion'\n\tstatic MUTATION_SIGNATURE = 'Mutation Signature'\n\tstatic PROTEIN_EXPRESSION = 'Protein Expression'\n\tstatic PSEUDOBULK = 'Pseudobulk'\n\tstatic SINGLECELL_CELLTYPE = 'Single-cell Cell Type'\n\tstatic SINGLECELL_GENE_EXPRESSION = 'Single-cell Gene Expression'\n\tstatic SNP = 'SNP Genotype'\n\tstatic SNP_LIST = 'SNP List'\n\tstatic SNP_LOCUS = 'SNP Locus'\n\tstatic SPLICE_JUNCTION = 'Splice Junction'\n\tstatic SSGSEA = 'Geneset Expression'\n\tstatic TERM_COLLECTION = 'Term Collection'\n\tstatic VARIANT_GENOTYPE = 'Variant Genotype'\n\tstatic COHORT = 'Cohort'\n}\n// freeze so that mutating any of the static properties above will throw at runtime\nObject.freeze(TermTypeGroups)\n\nexport const defaultcolor = rgb('#8AB1D4').darker()\nexport const default_text_color = rgb('#aaa').darker().darker()\n\nexport const exoncolor = '#4F8053'\nexport const plotColor = '#ce768e'\n\n// something that has something to do with coding gene reading frame\nexport const IN_frame = true\nexport const OUT_frame = false\n\n/********************************\n* on dt usage *\n*********************************\n- once a dt value is decided and used with actual dataset,\n the value must not be altered, since dataset file may hardcode such value and reassigning to a new integer will break!\n- never test dt value by range e.g. if(dt>10), it breaks! only test equality!\n- in code import variable from here and DO NOT use literal values, to make code tractable\n*/\nexport const dtsnvindel = 1\nexport const dtfusionrna = 2\nexport const dtgeneexpression = 3\nexport const dtcnv = 4\nexport const dtsv = 5\nexport const dtitd = 6\nexport const dtdel = 7\nexport const dtnloss = 8\nexport const dtcloss = 9\nexport const dtloh = 10\nexport const dtmetaboliteintensity = 11\nexport const dtssgsea = 12\nexport const dtdnamethylation = 13\nexport const dtproteomeabundance = 14\n// add new dt value here. !!!DO NOT change value of existing dt!!!\n\nexport const dt2label = {\n\t[dtsnvindel]: 'SNV/indel',\n\t[dtfusionrna]: 'Fusion RNA',\n\t[dtcnv]: 'CNV',\n\t[dtsv]: 'SV',\n\t[dtitd]: 'ITD',\n\t[dtdel]: 'Deletion',\n\t[dtnloss]: 'N-loss',\n\t[dtcloss]: 'C-loss',\n\t[dtloh]: 'LOH',\n\t[dtgeneexpression]: 'Gene Expression',\n\t[dtmetaboliteintensity]: 'Metabolite Intensity',\n\t[dtproteomeabundance]: 'Proteome Abundance'\n}\n\n// Maps dt types to UI labels and lesion types for GRIN2\n// All dt types use lesionTypes array for consistency\nexport const dt2lesion = {\n\t[dtsnvindel]: {\n\t\tuilabel: 'SNV/INDEL (Mutation)',\n\t\tlesionTypes: [{ name: 'Mutation', lesionType: 'mutation', color: '#44AA44' }]\n\t},\n\t[dtcnv]: {\n\t\tuilabel: 'CNV (Copy Number Variation)',\n\t\tlesionTypes: [\n\t\t\t{ name: 'Loss', lesionType: 'loss', color: '#4444FF' },\n\t\t\t{ name: 'Gain', lesionType: 'gain', color: '#FF4444' }\n\t\t]\n\t},\n\t[dtsv]: {\n\t\tuilabel: 'SV (Structural Variation)',\n\t\tlesionTypes: [{ name: 'SV', lesionType: 'sv', color: '#9932CC' }]\n\t},\n\t[dtfusionrna]: {\n\t\tuilabel: 'Fusion (RNA Fusion)',\n\t\tlesionTypes: [{ name: 'Fusion', lesionType: 'fusion', color: '#FFA500' }]\n\t},\n\t[dtitd]: {\n\t\tuilabel: 'ITD (Internal Tandem Duplication)',\n\t\tlesionTypes: [{ name: 'ITD', lesionType: 'itd', color: '#ff70ff' }]\n\t}\n}\n\n// Maps GRIN2 option types to their corresponding dt values\nexport const optionToDt = {\n\tsnvindelOptions: dtsnvindel,\n\tcnvOptions: dtcnv,\n\tfusionOptions: dtfusionrna,\n\tsvOptions: dtsv,\n\titdOptions: dtitd\n}\n\nexport const mclass = {\n\tM: {\n\t\tlabel: 'MISSENSE',\n\t\tcolor: '#3987CC',\n\t\tdt: dtsnvindel,\n\t\tdesc: 'A sequence variant, that changes one or more bases, resulting in a different amino acid sequence but where the length is preserved',\n\t\tkey: 'M'\n\t},\n\tE: { label: 'EXON', color: '#bcbd22', dt: dtsnvindel, desc: 'A variant in the exon of a non-coding RNA.', key: 'E' },\n\tF: {\n\t\tlabel: 'FRAMESHIFT',\n\t\tcolor: 'rgb(200, 61, 61)',\n\t\tdt: dtsnvindel,\n\t\tdesc: 'A sequence variant which causes a disruption of the translational reading frame, because the number of nucleotides inserted or deleted is not a multiple of three',\n\t\tkey: 'F'\n\t},\n\tN: {\n\t\tlabel: 'NONSENSE',\n\t\tcolor: '#ff7f0e',\n\t\tdt: dtsnvindel,\n\t\tdesc: 'A sequence variant whereby at least one base of a codon is changed, resulting in a premature stop codon, leading to a shortened transcript',\n\t\tkey: 'N'\n\t},\n\tS: {\n\t\tlabel: 'SILENT',\n\t\tcolor: '#2ca02c',\n\t\tdt: dtsnvindel,\n\t\tdesc: 'A sequence variant where there is no resulting change to the encoded amino acid',\n\t\tkey: 'S'\n\t},\n\tD: {\n\t\tlabel: 'PROTEINDEL',\n\t\tcolor: 'rgb(100, 100, 100)',\n\t\tdt: dtsnvindel,\n\t\tdesc: 'An inframe non synonymous variant that deletes bases from the coding sequence',\n\t\tkey: 'D'\n\t},\n\tI: {\n\t\tlabel: 'PROTEININS',\n\t\tcolor: '#8c564b',\n\t\tdt: dtsnvindel,\n\t\tdesc: 'An inframe non synonymous variant that inserts bases into in the coding sequence',\n\t\tkey: 'I'\n\t},\n\tProteinAltering: {\n\t\tlabel: 'PROTEINALTERING',\n\t\tcolor: '#5a0034',\n\t\tdt: dtsnvindel,\n\t\tdesc: 'An inframe complex change to the coding sequence',\n\t\tkey: 'ProteinAltering'\n\t},\n\tP: {\n\t\tlabel: 'SPLICE_REGION',\n\t\tcolor: '#9467bd',\n\t\tdt: dtsnvindel,\n\t\tdesc: 'A sequence variant in which a change has occurred within the region of the splice site, either within 1-3 bases of the exon or 3-8 bases of the intron',\n\t\tkey: 'P'\n\t},\n\tL: {\n\t\tlabel: 'SPLICE',\n\t\tcolor: '#6633FF',\n\t\tdt: dtsnvindel,\n\t\tdesc: 'A variant near an exon edge that may affect splicing functionality',\n\t\tkey: 'L'\n\t},\n\tIntron: { label: 'INTRON', color: '#656565', dt: dtsnvindel, desc: 'An intronic variant.', key: 'Intron' },\n\n\tStopLost: {\n\t\tlabel: 'Stop lost',\n\t\tcolor: '#ff7f0e',\n\t\tdt: dtsnvindel,\n\t\tdesc: 'A sequence variant where at least one base of the terminator codon (stop) is changed, resulting in an elongated transcript',\n\t\tkey: 'StopLost'\n\t},\n\tStartLost: {\n\t\tlabel: 'Start lost',\n\t\tcolor: '#ff7f0e',\n\t\tdt: dtsnvindel,\n\t\tdesc: 'A codon variant that changes at least one base of the canonical start codon',\n\t\tkey: 'StartLost'\n\t},\n\n\t// quick fix!! for showing genes that are not tested in samples (e.g. gene panels) in the heatmap\n\tBlank: { label: 'Not tested', color: '#fff', dt: dtsnvindel, desc: 'This gene is not tested.', key: 'Blank' },\n\n\tWT: { label: 'Wildtype', color: '#D3D3D3', dt: dtsnvindel, desc: 'Wildtype', key: 'WT' }\n}\nexport const mclassitd = 'ITD'\nmclass[mclassitd] = {\n\tlabel: 'ITD',\n\tcolor: '#ff70ff',\n\tdt: dtitd,\n\tdesc: 'In-frame internal tandem duplication',\n\tkey: mclassitd\n}\n\nexport const mclassdel = 'DEL'\nmclass[mclassdel] = {\n\tlabel: 'DELETION, intragenic',\n\tcolor: '#858585',\n\tdt: dtdel,\n\tdesc: 'Intragenic deletion',\n\tkey: mclassdel\n}\n\nexport const mclassnloss = 'NLOSS'\nmclass[mclassnloss] = {\n\tlabel: 'N-terminus loss',\n\tcolor: '#545454',\n\tdt: dtnloss,\n\tdesc: 'N-terminus loss due to translocation',\n\tkey: mclassnloss\n}\n\nexport const mclasscloss = 'CLOSS'\nmclass[mclasscloss] = {\n\tlabel: 'C-terminus loss',\n\tcolor: '#545454',\n\tdt: dtcloss,\n\tdesc: 'C-terminus loss due to translocation',\n\tkey: mclasscloss\n}\n\nexport const mclassutr3 = 'Utr3'\nmclass[mclassutr3] = {\n\tlabel: 'UTR_3',\n\tcolor: '#998199',\n\tdt: dtsnvindel,\n\tdesc: \"A variant in the 3' untranslated region\",\n\tkey: mclassutr3\n}\n\nexport const mclassutr5 = 'Utr5'\nmclass[mclassutr5] = {\n\tlabel: 'UTR_5',\n\tcolor: '#819981',\n\tdt: dtsnvindel,\n\tdesc: \"A variant in the 5' untranslated region\",\n\tkey: mclassutr5\n}\n\nexport const mclassnonstandard = 'X'\nmclass[mclassnonstandard] = {\n\tlabel: 'NONSTANDARD',\n\tcolor: 'black',\n\tdt: dtsnvindel,\n\tdesc: 'A mutation class that either does not match our notation, or is unspecified',\n\tkey: mclassnonstandard\n}\n\nexport const mclassnoncoding = 'noncoding'\nmclass[mclassnoncoding] = {\n\tlabel: 'NONCODING',\n\tcolor: 'black',\n\tdt: dtsnvindel,\n\tdesc: 'Noncoding mutation',\n\tkey: mclassnoncoding\n}\n\n/*\nincludes full list of consequences from\nhttps://www.ensembl.org/info/genome/variation/prediction/predicted_data.html\neach entry is SO term with matching pp class\nentries that cannot be mapped to dtsnvindel classes are commented off\norder of entries is severity\n\n* since source of data! *\nfrom this array derives multiple types of lookup tables to perform mapping on both ways\n*/\nconst SOterms = [\n\t//transcript_ablation // not supported: 1) do not expect this in maf/vcf 2) should be represented as cnv deletion but not the legacy unused value \"dtdel\"; if needed can reenable\n\t['splice_acceptor_variant', 'L'],\n\t['splice_donor_variant', 'L'],\n\t['stop_gained', 'N'],\n\t['frameshift_variant', 'F'],\n\t['stop_lost', 'StopLost'],\n\t['start_lost', 'StartLost'],\n\t//transcript_amplification // not supported, should be represented by cnv instead\n\t['feature_elongation', mclassnoncoding],\n\t['feature_truncation', mclassnoncoding],\n\t['inframe_insertion', 'I'],\n\t['inframe_deletion', 'D'],\n\t['missense_variant', 'M'],\n\t['protein_altering_variant', 'ProteinAltering'],\n\t['splice_donor_5th_base_variant', 'P'],\n\t['splice_region_variant', 'P'],\n\t['splice_donor_region_variant', 'P'],\n\t['splice_polypyrimidine_tract_variant', 'P'],\n\t['incomplete_terminal_codon_variant', 'N'],\n\t['start_retained_variant', 'S'],\n\t['stop_retained_variant', 'S'],\n\t['synonymous_variant', 'S'],\n\t['coding_sequence_variant', 'E'],\n\t['mature_miRNA_variant', 'E'],\n\t['5_prime_UTR_variant', mclassutr5],\n\t['3_prime_UTR_variant', mclassutr3],\n\t['non_coding_transcript_exon_variant', 'E'],\n\t['intron_variant', 'Intron'],\n\t['NMD_transcript_variant', 'F'],\n\t['non_coding_transcript_variant', 'E'],\n\t['coding_transcript_variant', 'E'],\n\t['upstream_gene_variant', mclassnoncoding],\n\t['downstream_gene_variant', mclassnoncoding],\n\t['TFBS_ablation', mclassnoncoding],\n\t['TFBS_amplification', mclassnoncoding],\n\t['TF_binding_site_variant', mclassnoncoding],\n\t['regulatory_region_ablation', mclassnoncoding],\n\t['regulatory_region_amplification', mclassnoncoding],\n\t['regulatory_region_variant', mclassnoncoding],\n\t['intergenic_variant', mclassnoncoding],\n\t['sequence_variant', mclassnonstandard]\n]\n\n// maps a pp class to an array of consequences\n// k: pp class, v: array of consequences. case sensitive\nexport const class2SOterm = new Map()\nfor (const [csq, cls] of SOterms) {\n\tif (!class2SOterm.has(cls)) class2SOterm.set(cls, [])\n\tclass2SOterm.get(cls).push(csq)\n}\n\n// maps a consequence to a pp class. no severity info. use vepinfo() if needs severity\n// k: consequence, v: pp class. case sensitive.\nexport const SOterm2class = new Map()\nfor (const [csq, cls] of SOterms) {\n\tSOterm2class.set(csq, cls)\n}\n\n// outdated function to match with adhoc nonstandard notations, only used in legacy code utils/src/bulk.snv.js\n// DO NOT USE to map vep consequences\nexport function mclasstester(s) {\n\tswitch (s.toLowerCase()) {\n\t\tcase 'missense_mutation':\n\t\t\treturn 'M'\n\t\tcase 'nonsense_mutation':\n\t\t\treturn 'N'\n\t\tcase 'splice_site':\n\t\t\treturn 'L'\n\t\tcase 'splice_region':\n\t\t\treturn 'P'\n\t\tcase 'rna':\n\t\t\treturn mclassnoncoding\n\t\tcase 'frame_shift_del':\n\t\t\treturn 'F'\n\t\tcase 'frame_shift_ins':\n\t\t\treturn 'F'\n\t\tcase 'in_frame_del':\n\t\t\treturn 'D'\n\t\tcase 'in_frame_ins':\n\t\t\treturn 'I'\n\t\tcase 'protein_altering_variant':\n\t\t\treturn 'ProteinAltering'\n\t\tcase 'translation_start_site':\n\t\t\treturn mclassnonstandard\n\t\tcase 'nonstop_mutation':\n\t\t\treturn 'N'\n\t\tcase \"3'utr\":\n\t\t\treturn mclassutr3\n\t\tcase \"3'flank\":\n\t\t\treturn mclassnoncoding\n\t\tcase \"5'utr\":\n\t\t\treturn mclassutr5\n\t\tcase \"5'flank\":\n\t\t\treturn mclassnoncoding\n\t\tcase 'silent':\n\t\t\treturn 'S'\n\t\tcase 'blank':\n\t\t\treturn 'Blank'\n\t\tdefault:\n\t\t\treturn null\n\t}\n}\n\nexport const mclassfusionrna = 'Fuserna'\nmclass[mclassfusionrna] = {\n\tlabel: 'Fusion transcript',\n\tcolor: '#545454',\n\tdt: dtfusionrna,\n\tdesc:\n\t\t'Marks the break points leading to fusion transcripts.<br>' +\n\t\t'<span style=\"font-size:150%\">&#9680;</span> - 3\\' end of the break point is fused to the 5\\' end of another break point in a different gene.<br>' +\n\t\t'<span style=\"font-size:150%\">&#9681;</span> - 5\\' end of the break point is fused to the 3\\' end of another break point in a different gene.',\n\tkey: mclassfusionrna\n}\nexport const mclasssv = 'SV'\nmclass[mclasssv] = {\n\tlabel: 'Structural variation',\n\tcolor: '#858585',\n\tdt: dtsv,\n\tdesc:\n\t\t'<span style=\"font-size:150%\">&#9680;</span> - 3\\' end of the break point is fused to the 5\\' end of another break point in a different gene.<br>' +\n\t\t'<span style=\"font-size:150%\">&#9681;</span> - 5\\' end of the break point is fused to the 3\\' end of another break point in a different gene.',\n\tkey: mclasssv\n}\n\n// \"CNV_amp\" represents \"CNV Gain\" and is used in both 2-category and 5-category CNV data representation\n// \"CNV_amplification\" represents CNV amplification and is used in 5-category CNV\n// \"CNV_amp\" have to stay as-is since it may be hardcoded in lots of data beyond portal code.\nexport const mclasscnvgain = 'CNV_amp'\nmclass[mclasscnvgain] = {\n\tlabel: 'Copy number gain', // TODO change to 'Gain'\n\tcolor: '#e9a3c9',\n\tdt: dtcnv,\n\tdesc: 'Copy number gain',\n\tkey: mclasscnvgain\n}\n\nexport const mclasscnvloss = 'CNV_loss'\nmclass[mclasscnvloss] = {\n\tlabel: 'Copy number loss',\n\tcolor: '#a1d76a',\n\tdt: dtcnv,\n\tdesc: 'Copy number loss',\n\tkey: mclasscnvloss\n}\n\n// mclasscnvAmp is next level above mclasscnvgain and is used in 5-category CNV data\nexport const mclasscnvAmp = 'CNV_amplification'\nmclass[mclasscnvAmp] = {\n\tlabel: 'Copy number amplification',\n\tcolor: '#ff0000',\n\tdt: dtcnv,\n\tdesc: 'Copy number amplification',\n\tkey: mclasscnvAmp\n}\n\nexport const mclasscnvHomozygousDel = 'CNV_homozygous_deletion'\nmclass[mclasscnvHomozygousDel] = {\n\tlabel: 'Copy number homozygous deletion',\n\tcolor: '#0000ff',\n\tdt: dtcnv,\n\tdesc: 'Copy number homozygous deletion',\n\tkey: mclasscnvHomozygousDel\n}\n\nexport const mclasscnvloh = 'CNV_loh'\nmclass[mclasscnvloh] = { label: 'LOH', color: '#12EDFC', dt: dtcnv, desc: 'Loss of heterozygosity', key: mclasscnvloh }\n\n// for VCF\nexport const mclasssnv = 'snv'\nmclass[mclasssnv] = {\n\tlabel: 'SNV',\n\tcolor: '#92a2d4',\n\tdt: dtsnvindel,\n\tdesc: 'Single nucleotide variation',\n\tkey: mclasssnv\n}\n\nexport const mclassmnv = 'mnv'\nmclass[mclassmnv] = {\n\tlabel: 'MNV',\n\tcolor: '#92a2d4',\n\tdt: dtsnvindel,\n\tdesc: 'Multiple nucleotide variation',\n\tkey: mclassmnv\n}\n\nexport const mclassinsertion = 'insertion'\nmclass[mclassinsertion] = {\n\tlabel: 'Sequence insertion',\n\tcolor: '#bd8e91',\n\tdt: dtsnvindel,\n\tdesc: 'Sequence insertion',\n\tkey: mclassinsertion\n}\n\nexport const mclassdeletion = 'deletion'\nmclass[mclassdeletion] = {\n\tlabel: 'Sequence deletion',\n\tcolor: '#b5a174',\n\tdt: dtsnvindel,\n\tdesc: 'Sequence deletion',\n\tkey: mclassdeletion\n}\n// TODO complex indel\n\n/* tricky\nwhen a mds3 tk uses numeric cnv, data points from tk.cnv.cnvLst[] has .class=dtcnv but no class!\na \"cnv\" entry needs to be present in mclass legend, and thus this wrapper function over mclass{} to allow dtcnv as key\nthe tricky case doesn't apply to other plots\n*/\nexport function mds3tkMclass(k) {\n\tif (k == dtcnv) {\n\t\treturn {\n\t\t\tcolor: '#858585',\n\t\t\tlabel: 'CNV',\n\t\t\tdesc: 'Copy number variation'\n\t\t}\n\t}\n\treturn mclass[k]\n}\n\nexport const dt2color = {\n\t[dtsnvindel]: mclass.M.color // general color for snvindel irrespective of class (when class is not available)\n\t// add new dt as needed\n}\n\n// option to override mutation class attribute values\nexport function applyOverrides(overrides: Record<string, any> = {}) {\n\tif (overrides.mclass) {\n\t\tfor (const key in overrides.mclass) {\n\t\t\t// allow to fill-in mutation class that are missing from mclass;\n\t\t\t// may be useful for things like 'Not tested', etc, that may not be in mclass by default\n\t\t\t// but are used by a customer with its own PP server instance\n\t\t\tif (!mclass[key]) mclass[key] = {}\n\t\t\tfor (const subkey in overrides.mclass[key]) {\n\t\t\t\tmclass[key][subkey] = overrides.mclass[key][subkey]\n\t\t\t}\n\t\t}\n\t}\n}\n\n/* legacy function. input is comma-joined multiple consequences\nperforms case insensitive match and returns severity rank\nTODO share data with SOterms\n*/\nexport const vepinfo = function (s) {\n\tconst l = s.toLowerCase().split(',')\n\tlet rank = 1\n\tif (l.indexOf('transcript_ablation') != -1) {\n\t\t// FIXME no class for whole gene deletion\n\t\treturn [dtdel, mclassdel, rank]\n\t}\n\trank++\n\tif (l.indexOf('splice_acceptor_variant') != -1) return [dtsnvindel, 'L', rank]\n\trank++\n\tif (l.indexOf('splice_donor_variant') != -1) return [dtsnvindel, 'L', rank]\n\trank++\n\tif (l.indexOf('stop_gained') != -1) return [dtsnvindel, 'N', rank]\n\trank++\n\tif (l.indexOf('frameshift_variant') != -1) return [dtsnvindel, 'F', rank]\n\trank++\n\tif (l.indexOf('stop_lost') != -1) return [dtsnvindel, 'N', rank]\n\trank++\n\tif (l.indexOf('start_lost') != -1) return [dtsnvindel, 'N', rank]\n\trank++\n\tif (l.indexOf('transcript_amplification') != -1) {\n\t\t// FIXME no class for whole gene amp\n\t\treturn [dtsnvindel, mclassnonstandard, rank]\n\t}\n\trank++\n\tif (\n\t\tl.indexOf('inframe_insertion') != -1 ||\n\t\tl.indexOf('conservative_inframe_insertion') != -1 ||\n\t\tl.indexOf('disruptive_inframe_insertion') != -1\n\t)\n\t\treturn [dtsnvindel, 'I', rank]\n\trank++\n\tif (\n\t\tl.indexOf('inframe_deletion') != -1 ||\n\t\tl.indexOf('conservative_inframe_deletion') != -1 ||\n\t\tl.indexOf('disruptive_inframe_deletion') != -1\n\t)\n\t\treturn [dtsnvindel, 'D', rank]\n\trank++\n\tif (l.indexOf('missense_variant') != -1) return [dtsnvindel, 'M', rank]\n\trank++\n\tif (l.indexOf('protein_altering_variant') != -1) return [dtsnvindel, 'ProteinAltering', rank]\n\trank++\n\tif (l.indexOf('splice_region_variant') != -1) return [dtsnvindel, 'P', rank]\n\trank++\n\tif (l.indexOf('incomplete_terminal_codon_variant') != -1) return [dtsnvindel, 'N', rank]\n\trank++\n\tif (l.indexOf('stop_retained_variant') != -1) return [dtsnvindel, 'S', rank]\n\trank++\n\tif (l.indexOf('synonymous_variant') != -1) return [dtsnvindel, 'S', rank]\n\trank++\n\tif (l.indexOf('coding_sequence_variant') != -1) return [dtsnvindel, mclassnonstandard, rank]\n\trank++\n\tif (l.indexOf('mature_mirna_variant') != -1) return [dtsnvindel, 'E', rank]\n\trank++\n\tif (l.indexOf('5_prime_utr_variant') != -1) return [dtsnvindel, mclassutr5, rank]\n\trank++\n\tif (l.indexOf('3_prime_utr_variant') != -1) return [dtsnvindel, mclassutr3, rank]\n\trank++\n\tif (l.indexOf('non_coding_transcript_exon_variant') != -1) return [dtsnvindel, 'E', rank]\n\trank++\n\tif (l.indexOf('intron_variant') != -1) return [dtsnvindel, 'Intron', rank]\n\trank++\n\tif (l.indexOf('nmd_transcript_variant') != -1) return [dtsnvindel, 'S', rank]\n\trank++\n\tif (l.indexOf('non_coding_transcript_variant') != -1) return [dtsnvindel, 'E', rank]\n\trank++\n\tif (l.indexOf('upstream_gene_variant') != -1) return [dtsnvindel, mclassnoncoding, rank]\n\trank++\n\tif (l.indexOf('downstream_gene_variant') != -1) return [dtsnvindel, mclassnoncoding, rank]\n\trank++\n\tif (l.indexOf('tfbs_ablation') != -1) return [dtsnvindel, mclassnoncoding, rank]\n\trank++\n\tif (l.indexOf('tfbs_amplification') != -1) return [dtsnvindel, mclassnoncoding, rank]\n\trank++\n\tif (l.indexOf('tf_binding_site_variant') != -1) return [dtsnvindel, mclassnoncoding, rank]\n\trank++\n\tif (l.indexOf('regulatory_region_ablation') != -1) return [dtsnvindel, mclassnoncoding, rank]\n\trank++\n\tif (l.indexOf('regulatory_region_amplification') != -1) return [dtsnvindel, mclassnoncoding, rank]\n\trank++\n\tif (l.indexOf('feature_elongation') != -1) return [dtsnvindel, mclassnoncoding, rank]\n\trank++\n\tif (l.indexOf('regulatory_region_variant') != -1) return [dtsnvindel, mclassnoncoding, rank]\n\trank++\n\tif (l.indexOf('feature_truncation') != -1) return [dtsnvindel, mclassnoncoding, rank]\n\trank++\n\tif (l.indexOf('intergenic_variant') != -1) return [dtsnvindel, mclassnoncoding, rank]\n\trank++\n\treturn [dtsnvindel, mclassnonstandard, rank]\n}\n\n// m orgin\nexport const germlinelegend =\n\t'<circle cx=\"7\" cy=\"12\" r=\"7\" fill=\"#b1b1b1\"></circle><path d=\"M6.735557395310443e-16,-11A11,11 0 0,1 11,0L9,0A9,9 0 0,0 5.51091059616309e-16,-9Z\" transform=\"translate(7,12)\" fill=\"#858585\" stroke=\"none\"></path>'\n\nexport const morigin: Record<string, any> = {}\n\nexport const moriginsomatic = 'S'\nmorigin[moriginsomatic] = {\n\tlabel: 'Somatic',\n\tdesc: 'A variant found only in a tumor sample. The proportion is indicated by lack of any arc.',\n\tlegend: '<circle cx=\"7\" cy=\"12\" r=\"7\" fill=\"#b1b1b1\"></circle>'\n}\nexport const morigingermline = 'G'\nmorigin[morigingermline] = {\n\tlabel: 'Germline',\n\tdesc: 'A constitutional variant found in a normal sample. The proportion is indicated by the span of the solid arc within the whole circle.',\n\tlegend: germlinelegend\n}\n\nmorigin.germline = morigin[morigingermline]\nmorigin.somatic = morigin[moriginsomatic]\n\nexport const moriginrelapse = 'R'\nmorigin[moriginrelapse] = {\n\tlabel: 'Relapse',\n\tdesc: 'A somatic variant found only in a relapse sample. The proportion is indicated by the span of the hollow arc within the whole circle.',\n\tlegend:\n\t\t'<circle cx=\"7\" cy=\"12\" r=\"7\" fill=\"#b1b1b1\"></circle><path d=\"M6.735557395310443e-16,-11A11,11 0 0,1 11,0L9,0A9,9 0 0,0 5.51091059616309e-16,-9Z\" transform=\"translate(7,12)\" fill=\"none\" stroke=\"#858585\"></path>'\n}\nexport const morigingermlinepathogenic = 'GP'\nmorigin[morigingermlinepathogenic] = {\n\tlabel: 'Germline pathogenic',\n\tdesc: 'A constitutional variant with pathogenic allele.',\n\tlegend: germlinelegend\n}\nexport const morigingermlinenonpathogenic = 'GNP'\nmorigin[morigingermlinenonpathogenic] = {\n\tlabel: 'Germline non-pathogenic',\n\tdesc: 'A constitutional variant with non-pathogenic allele.',\n\tlegend: germlinelegend,\n\thidden: true\n}\n\nexport const tkt = {\n\tusegm: 'usegm',\n\tds: 'dataset',\n\tbigwig: 'bigwig',\n\tbigwigstranded: 'bigwigstranded',\n\tjunction: 'junction',\n\tmdsjunction: 'mdsjunction',\n\tmdssvcnv: 'mdssvcnv', // replaced by mds3\n\tmdsexpressionrank: 'mdsexpressionrank',\n\tmdsvcf: 'mdsvcf', // for snv/indels, currently vcf, may include MAF\n\t//mdsgeneral:'mdsgeneral', // replaces mdssvcnv ****** not ready yet\n\tbedj: 'bedj',\n\tpgv: 'profilegenevalue',\n\tbampile: 'bampile',\n\thicstraw: 'hicstraw',\n\texpressionrank: 'expressionrank',\n\taicheck: 'aicheck',\n\tase: 'ase',\n\tmds3: 'mds3', //\n\tbedgraphdot: 'bedgraphdot',\n\tbam: 'bam',\n\tld: 'ld',\n\tj2: 'j2' // mds3 cohort junction\n}\n\nexport function validtkt(what) {\n\tfor (const k in tkt) {\n\t\tif (what == tkt[k]) {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n/*\nmember track types from mdsvcf\nto get rid of hardcoded strings\nin future may include MAF format files\n*/\nexport const mdsvcftype = {\n\tvcf: 'vcf'\n}\n\n/*\nfor custom mdssvcnv track\nor general track\nto avoid using hard-coded string\n*/\nexport const custommdstktype = {\n\tvcf: 'vcf',\n\tsvcnvitd: 'svcnvitd',\n\tgeneexpression: 'geneexpression'\n}\n\n// codons that are not here are stop codon!!\nexport const codon = {\n\tGCT: 'A',\n\tGCC: 'A',\n\tGCA: 'A',\n\tGCG: 'A',\n\tCGT: 'R',\n\tCGC: 'R',\n\tCGA: 'R',\n\tCGG: 'R',\n\tAGA: 'R',\n\tAGG: 'R',\n\tAAT: 'N',\n\tAAC: 'N',\n\tGAT: 'D',\n\tGAC: 'D',\n\tTGT: 'C',\n\tTGC: 'C',\n\tCAA: 'Q',\n\tCAG: 'Q',\n\tGAA: 'E',\n\tGAG: 'E',\n\tGGT: 'G',\n\tGGC: 'G',\n\tGGA: 'G',\n\tGGG: 'G',\n\tCAT: 'H',\n\tCAC: 'H',\n\tATT: 'I',\n\tATC: 'I',\n\tATA: 'I',\n\tTTA: 'L',\n\tTTG: 'L',\n\tCTT: 'L',\n\tCTC: 'L',\n\tCTA: 'L',\n\tCTG: 'L',\n\tAAA: 'K',\n\tAAG: 'K',\n\tATG: 'M',\n\tTTT: 'F',\n\tTTC: 'F',\n\tCCT: 'P',\n\tCCC: 'P',\n\tCCA: 'P',\n\tCCG: 'P',\n\tTCT: 'S',\n\tTCC: 'S',\n\tTCA: 'S',\n\tTCG: 'S',\n\tAGT: 'S',\n\tAGC: 'S',\n\tACT: 'T',\n\tACC: 'T',\n\tACA: 'T',\n\tACG: 'T',\n\tTGG: 'W',\n\tTAT: 'Y',\n\tTAC: 'Y',\n\tGTT: 'V',\n\tGTC: 'V',\n\tGTA: 'V',\n\tGTG: 'V'\n}\n\nexport const codon_stop = '*'\n\nexport function nt2aa(gm) {\n\t// must convert genome seq to upper case!!!\n\tif (!gm.genomicseq) return undefined\n\tconst enlst: string[] = []\n\tif (gm.coding) {\n\t\tfor (const e of gm.coding.values()) {\n\t\t\tconst s = gm.genomicseq.substr(e[0] - gm.start, e[1] - e[0])\n\t\t\tif (gm.strand == '-') {\n\t\t\t\tenlst.push(reversecompliment(s))\n\t\t\t} else {\n\t\t\t\tenlst.push(s)\n\t\t\t}\n\t\t}\n\t}\n\tconst nt = enlst.join('')\n\tconst pep: string[] = []\n\n\t/*\n\tif startCodonFrame is set, will not begin translation from first nt, but will skip 1 or 2 nt at the beginning\n\tin case of IGKC, frame=1 means it will borrow 1 nt from the previous IGKJ exons\n\tso the first two nucleotides from the current exon will have to be skipped when translating IGKC alone\n\t*/\n\tconst startntidx = gm.startCodonFrame ? 3 - gm.startCodonFrame : 0\n\tfor (let i = startntidx; i < nt.length; i += 3) {\n\t\tconst a = codon[nt.substr(i, 3)]\n\t\tpep.push(a || codon_stop)\n\t}\n\tgm.cdseq = nt\n\treturn pep.join('')\n}\n\nexport function bplen(len, isfile?: boolean) {\n\t// if \"isfile\" is true, to measure file size instead of basepair len\n\tif (len >= 1000000000) return (len / 1000000000).toFixed(1) + ' Gb'\n\tif (len >= 10000000) return Math.ceil(len / 1000000) + ' Mb'\n\tif (len >= 1000000) return (len / 1000000).toFixed(1) + ' Mb'\n\tif (len >= 10000) return Math.ceil(len / 1000) + ' Kb'\n\tif (len >= 1000) return (len / 1000).toFixed(1) + ' Kb'\n\treturn len + (isfile ? 'bytes' : ' bp')\n}\n\nexport const basecolor = {\n\tA: '#ca0020',\n\tT: '#f4a582',\n\tC: '#92c5de',\n\tG: '#0571b0'\n}\n\nexport function basecompliment(nt) {\n\tswitch (nt) {\n\t\tcase 'A':\n\t\t\treturn 'T'\n\t\tcase 'T':\n\t\t\treturn 'A'\n\t\tcase 'C':\n\t\t\treturn 'G'\n\t\tcase 'G':\n\t\t\treturn 'C'\n\t\tcase 'a':\n\t\t\treturn 't'\n\t\tcase 't':\n\t\t\treturn 'a'\n\t\tcase 'c':\n\t\t\treturn 'g'\n\t\tcase 'g':\n\t\t\treturn 'c'\n\t\tdefault:\n\t\t\treturn nt\n\t}\n}\n\nexport function reversecompliment(s) {\n\tconst tmp: string[] = []\n\tfor (let i = s.length - 1; i >= 0; i--) {\n\t\ttmp.push(basecompliment(s[i]))\n\t}\n\treturn tmp.join('')\n}\n\nexport function spliceeventchangegmexon(gm, evt) {\n\t/*\n\talter gm.coding[], by exon-skip/alt events\n\tfor frame checking\n\tgm must have coding\n\t*/\n\tconst gm2 = {\n\t\tchr: gm.chr,\n\t\tstart: gm.start,\n\t\tstop: gm.stop,\n\t\tstrand: gm.strand,\n\t\tcoding: [] as number[][]\n\t}\n\tif (evt.isskipexon || evt.isaltexon) {\n\t\tfor (let i = 0; i < gm.exon.length; i++) {\n\t\t\tconst codingstart = Math.max(gm.codingstart, gm.exon[i][0])\n\t\t\tconst codingstop = Math.min(gm.codingstop, gm.exon[i][1])\n\t\t\tif (codingstart > codingstop) {\n\t\t\t\t// not coding exon\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif (evt.skippedexon.indexOf(i) == -1) {\n\t\t\t\t// not skipped\n\t\t\t\tgm2.coding.push([codingstart, codingstop])\n\t\t\t} else {\n\t\t\t\t// skipped\n\t\t\t}\n\t\t}\n\t} else if (evt.a5ss || evt.a3ss) {\n\t\t// still equal number of exons\n\t\t// adjust the affected exon first, then figure out coding[]\n\t\tconst exons = gm.exon.map(e => [e[0], e[1]])\n\t\tconst forward = gm.strand == '+'\n\t\tif (evt.a5ss) {\n\t\t\tif (forward) {\n\t\t\t\texons[evt.exon5idx][1] = evt.junctionB.start\n\t\t\t} else {\n\t\t\t\texons[evt.exon5idx + 1][0] = evt.junctionB.stop\n\t\t\t}\n\t\t} else {\n\t\t\tif (forward) {\n\t\t\t\texons[evt.exon5idx + 1][0] = evt.junctionB.stop\n\t\t\t} else {\n\t\t\t\texons[evt.exon5idx][1] = evt.junctionB.start\n\t\t\t}\n\t\t}\n\t\t// from new exons, figure out coding exons\n\t\tfor (const e of exons) {\n\t\t\tconst codingstart = Math.max(gm.codingstart, e[0])\n\t\t\tconst codingstop = Math.min(gm.codingstop, e[1])\n\t\t\tif (codingstart > codingstop) {\n\t\t\t\t// not coding exon\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tgm2.coding.push([codingstart, codingstop])\n\t\t}\n\t}\n\treturn gm2\n}\n\nexport function fasta2gmframecheck(gm, str) {\n\t/*\n\tgm{}\n\t\t.chr\n\t\t.start\n\t\t.stop\n\t\t\tstart/stop is transcript position\n\t\t.strand\n\t\t.coding[]\n\tstr\n\t\tsamtools faidx output\n\t*/\n\tconst lines = str.split('\\n')\n\t// remove fasta header\n\tlines.shift()\n\tgm.genomicseq = lines.join('').toUpperCase()\n\n\tconst aaseq = nt2aa(gm)\n\tif (!aaseq) return OUT_frame\n\n\tlet thisframe = OUT_frame\n\tconst stopcodonidx = aaseq.indexOf(codon_stop)\n\tif (stopcodonidx == aaseq.length - 1) {\n\t\t// the first appearance of stop codon is at the last of translation\n\t\tthisframe = IN_frame\n\t}\n\treturn thisframe\n}\n\nexport function validate_vcfinfofilter(obj) {\n\t/*\n\tvalidate vcfinfofilter as from embedding api or dataset\n\t*/\n\n\tif (!obj.lst) return '.lst missing'\n\n\tif (!Array.isArray(obj.lst)) return 'input is not an array'\n\n\tfor (const set of obj.lst) {\n\t\tif (!set.name) return 'name missing from a set of .vcfinfofilter.lst'\n\n\t\tif (set.autocategory || set.categories) {\n\t\t\t// categorical info, auto or defined\n\n\t\t\tif (!set.autocategory) {\n\t\t\t\tfor (const k in set.categories) {\n\t\t\t\t\tconst v = set.categories[k]\n\t\t\t\t\tif (!set.autocolor && !v.color)\n\t\t\t\t\t\treturn '.color missing for class ' + k + ' from .categories of set ' + set.name\n\t\t\t\t\tif (!v.label) {\n\t\t\t\t\t\tv.label = k\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (set.categoryhidden) {\n\t\t\t\tfor (const k in set.categoryhidden) {\n\t\t\t\t\tif (!set.categories[k]) return 'unknown hidden-by-default category ' + k + ' from set ' + set.name\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tset.categoryhidden = {}\n\t\t\t}\n\t\t} else if (set.numericfilter) {\n\t\t\t// otherwise, numerical value, the style of population frequency filter\n\t\t\tconst lst: any[] = []\n\t\t\tfor (const v of set.numericfilter) {\n\t\t\t\tif (typeof v == 'number') {\n\t\t\t\t\t/*\n\t\t\t\t\tjust a number, defaults to 'lower-than'\n\t\t\t\t\t*/\n\t\t\t\t\tlst.push({ side: '<', value: v })\n\t\t\t\t} else {\n\t\t\t\t\tlst.push({\n\t\t\t\t\t\tside: v.side || '<',\n\t\t\t\t\t\tvalue: v.value\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t\tset.numericfilter = lst\n\n\t\t\t//return 'no .categories or .numericfilter from set '+set.name\n\t\t}\n\n\t\tif (set.altalleleinfo) {\n\t\t\tif (!set.altalleleinfo.key) {\n\t\t\t\treturn '.key missing from .altalleleinfo from set ' + set.name\n\t\t\t}\n\t\t} else if (set.locusinfo) {\n\t\t\tif (!set.locusinfo.key) {\n\t\t\t\treturn '.key missing from .locusinfo from set ' + set.name\n\t\t\t}\n\t\t} else {\n\t\t\treturn 'neither .altalleleinfo or .locusinfo is available from set ' + set.name\n\t\t}\n\t}\n}\n\nexport function contigNameNoChr(genome, chrlst) {\n\t/*\n\tFIXME hard-coded for human genome styled chromosome names\n\t*/\n\tfor (const n in genome.majorchr) {\n\t\tif (chrlst.indexOf(n.replace('chr', '')) != -1) {\n\t\t\treturn true\n\t\t}\n\t}\n\tif (genome.minorchr) {\n\t\tfor (const n in genome.minorchr) {\n\t\t\tif (chrlst.indexOf(n.replace('chr', '')) != -1) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t}\n\treturn false\n}\nexport function contigNameNoChr2(genome, chrlst) {\n\t// returns number of matching chr names that either includes \"chr\" or not\n\t// for detecting if chrlst entirely mismatch with what's in the genome build\n\t// TODO replace contigNameNoChr\n\tlet nochrcount = 0,\n\t\thaschrcount = 0\n\tfor (const n in genome.majorchr) {\n\t\tif (chrlst.includes(n)) {\n\t\t\thaschrcount++\n\t\t} else if (chrlst.includes(n.replace('chr', ''))) {\n\t\t\tnochrcount++\n\t\t}\n\t}\n\tif (genome.minorchr) {\n\t\tfor (const n in genome.minorchr) {\n\t\t\tif (chrlst.includes(n)) {\n\t\t\t\thaschrcount++\n\t\t\t} else if (chrlst.includes(n.replace('chr', ''))) {\n\t\t\t\tnochrcount++\n\t\t\t}\n\t\t}\n\t}\n\treturn [nochrcount, haschrcount]\n}\n\nexport function getMax_byiqr(lst, novaluemax) {\n\t/*\n\tlst: array of numbers\n\tnovaluemax: when lst is empty, return this value\n\tcutoff value based on IQR to exclude outlier values\n\t*/\n\tif (lst.length == 0) return novaluemax\n\tlst.sort((i, j) => i - j)\n\tconst max = lst[lst.length - 1]\n\tif (lst.length <= 5) return max\n\tconst q1 = lst[Math.floor(lst.length / 4)]\n\tconst q2 = lst[Math.floor((lst.length * 3) / 4)]\n\treturn Math.min(q2 + (q2 - q1) * 1.5, max)\n}\n\nexport function alleleInGenotypeStr(genotype, allele) {\n\tif (!genotype) return false\n\tif (genotype.indexOf('/') != -1) {\n\t\treturn genotype.split('/').indexOf(allele) != -1\n\t}\n\treturn genotype.split('|').indexOf(allele) != -1\n}\n\nexport const gmmode = {\n\tgenomic: 'genomic',\n\tsplicingrna: 'splicing RNA', // if just 1 exon, use \"RNA\" as label\n\texononly: 'exon only',\n\tprotein: 'protein',\n\tgmsum: 'aggregated exons'\n}\n\n/*\ninput:\n\nm={}\n\tm.csq=[]\n\t\telement: {\n\t\t\tAllele: str,\n\t\t\tConsequence: str,\n\t\t\tCANONICAL: str, // true if _isoform is canonical\n\t\t\t...\n\t\t\t_isoform: str,\n\t\t\t_class: str,\n\t\t\t_csqrank: int\n\t\t}\n\tm.ann=[]\n\t\tannovar output. may be derelict\nblock={}\n\tblock.usegm={ isoform }\n\tcan be a mock object when running this function in node!\n\ndoes:\n\tfind an annotation from m.csq[] that's fitting the circumstance\n\t- current gm isoform displayed in block gene mode\n\t- any canonical isoform from m.csq[] (can be missing if vep is not instructed to do it)\n\t- one with highest _csqrank\n\tthen, copy its class/mname to m{}\n\thas many fall-back and always try to assign class/mname\n\nno return\n*/\nexport function vcfcopymclass(m, block) {\n\tif (m.csq) {\n\t\tlet useone // point to the element of m.csq[], from this class/mname is copied to m{}\n\n\t\tif (block.usegm) {\n\t\t\t// block is in gm mode, find a csq matching with the genemodel isoform\n\t\t\tuseone = m.csq.find(i => i._isoform == block.usegm.isoform)\n\t\t\tif (!useone) {\n\t\t\t\t// no match to usegm isoform\n\t\t\t\tif (block.gmmode == 'genomic') {\n\t\t\t\t\t// in genomic mode and zoomed out, where this variant is from a neighboring gene near block.usegm and is expected not to match\n\t\t\t\t} else {\n\t\t\t\t\t// not in genomic mode and all variants must be within range of this isoform, the csq may mismatch with the isoform. set this flag to alert on client\n\t\t\t\t\tm.__cim = true\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (!useone) {\n\t\t\t// find one using canonical isoform\n\t\t\tuseone = m.csq.find(i => i.CANONICAL)\n\n\t\t\tif (!useone) {\n\t\t\t\t// none of the elements in m.csq[] is using a canonical isoform, as that's a vep optional output\n\t\t\t\t// last method: choose *colorful* annotation based on if is canonical, _csqrank\n\t\t\t\tuseone = m.csq[0]\n\t\t\t\tfor (const q of m.csq) {\n\t\t\t\t\tif (q._csqrank < useone._csqrank) {\n\t\t\t\t\t\tuseone = q\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (useone) {\n\t\t\tm.gene = useone._gene\n\t\t\tm.isoform = useone._isoform\n\t\t\tm.class = useone._class\n\t\t\tm.dt = useone._dt\n\t\t\tm.mname = useone._mname\n\n\t\t\tif (m.class == mclassnoncoding) {\n\t\t\t\t// noncoding converted from csq is not a meaningful, drab color, has no mname label, delete so later will be converted to non-protein class\n\t\t\t\tdelete m.class\n\t\t\t}\n\t\t}\n\t} else if (m.ann) {\n\t\t// there could be many applicable annotations, the first one not always desirable\n\t\t// choose *colorful* annotation based on _csqrank\n\t\tlet useone: any = null\n\t\tif (block.usegm) {\n\t\t\tfor (const q of m.ann) {\n\t\t\t\tif (q._isoform != block.usegm.isoform) continue\n\t\t\t\tif (useone) {\n\t\t\t\t\tif (q._csqrank < useone._csqrank) {\n\t\t\t\t\t\tuseone = q\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tuseone = q\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!useone && block.gmmode == gmmode.genomic) {\n\t\t\t\t// no match to this gene, but in genomic mode, maybe from other genes?\n\t\t\t\tuseone = m.ann[0]\n\t\t\t}\n\t\t} else {\n\t\t\tuseone = m.ann[0]\n\t\t\tfor (const q of m.ann) {\n\t\t\t\tif (q._csqrank < useone._csqrank) {\n\t\t\t\t\tuseone = q\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (useone) {\n\t\t\tm.gene = useone._gene\n\t\t\tm.isoform = useone._isoform\n\t\t\tm.class = useone._class\n\t\t\tm.dt = useone._dt\n\t\t\tm.mname = useone._mname\n\n\t\t\tif (m.class == mclassnoncoding) {\n\t\t\t\tdelete m.class\n\t\t\t}\n\t\t}\n\t}\n\n\tif (m.class == undefined) {\n\t\t// infer class from m.type, which was assigned by vcf.js\n\t\tif (mclass[m.type]) {\n\t\t\tm.class = m.type\n\t\t\tm.dt = mclass[m.type].dt\n\t\t\tm.mname = m.id && m.id != '.' ? m.id : m.ref + '>' + m.alt\n\t\t\tif (m.mname.length > 15) {\n\t\t\t\t// avoid long indel\n\t\t\t\tm.mname = m.type\n\t\t\t}\n\t\t} else {\n\t\t\tm.class = mclassnonstandard\n\t\t\tm.dt = dtsnvindel\n\t\t\tm.mname = m.type\n\t\t}\n\t}\n\n\tdelete m.type\n}\n\n/*\nused in:\n\tmdssvcnv track, mutation attributes, items that are not annotated by an attribute for showing in legend, and server-side filtering\n*/\nexport const not_annotated = 'Unannotated'\n\n// kernal density estimator as from https://www.d3-graph-gallery.com/graph/density_basic.html\n\nexport function kernelDensityEstimator(kernel, X) {\n\treturn function (V) {\n\t\treturn X.map(x => {\n\t\t\treturn [x, V.map(v => kernel(x - v)).reduce((i, j) => i + j, 0) / V.length]\n\t\t})\n\t}\n}\n\nexport function kernelEpanechnikov(k) {\n\treturn function (v) {\n\t\treturn Math.abs((v /= k)) <= 1 ? (0.75 * (1 - v * v)) / k : 0\n\t}\n}\n\n/////////////////////// color sets /////////////////////////\n\nexport const schemeCategory20 = [\n\t'#1f77b4',\n\t'#aec7e8',\n\t'#ff7f0e',\n\t'#ffbb78',\n\t'#2ca02c',\n\t'#98df8a',\n\t'#d62728',\n\t'#ff9896',\n\t'#9467bd',\n\t'#c5b0d5',\n\t'#8c564b',\n\t'#c49c94',\n\t'#e377c2',\n\t'#f7b6d2',\n\t'#7f7f7f',\n\t'#c7c7c7',\n\t'#bcbd22',\n\t'#dbdb8d',\n\t'#17becf',\n\t'#9edae5'\n]\nexport const schemeCategory2 = ['#e75480', 'blue']\n\nexport function getColorScheme(number) {\n\tif (number > 20) {\n\t\tconst scheme: string[] = []\n\t\tfor (let i = 0; i < number; i++) scheme.push(d3.interpolateRainbow(i / number))\n\t\treturn scheme\n\t}\n\tif (number > 12) return schemeCategory20\n\telse if (number > 8) return d3.schemePaired\n\telse if (number > 2) return d3.schemeDark2\n\telse return schemeCategory2\n}\nexport function getColors(number) {\n\tconst scheme = getColorScheme(number)\n\treturn d3scale.scaleOrdinal(scheme)\n}\n\n// for now not using getColorScheme() for protein domains, because this color list have been in use since 2015...\nconst proteinDomainColors = [\n\t'#8dd3c7',\n\t'#bebada',\n\t'#fb8072',\n\t'#80b1d3',\n\t'#E8E89E',\n\t'#a6d854',\n\t'#fdb462',\n\t'#ffd92f',\n\t'#e5c494',\n\t'#b3b3b3'\n]\nexport function proteinDomainColorScale() {\n\treturn d3scale.scaleOrdinal().range(proteinDomainColors)\n}\n\n/////////////////////// end of color sets /////////////////////////\n\nexport const truncatingMutations = ['F', 'N', 'L', 'P']\nexport const proteinChangingMutations = ['F', 'N', 'L', 'P', 'D', 'I', 'ProteinAltering', 'M']\nexport const synonymousMutations = ['S', 'Intron', 'Utr3', 'Utr5', 'noncoding', 'E']\nexport const mutationClasses = Object.values(mclass)\n\t.filter(m => m.dt == dtsnvindel)\n\t.map(m => m.key)\nexport const CNVClasses = Object.values(mclass)\n\t.filter(m => m.dt == dtcnv)\n\t.map(m => m.key)\n\n// dt terms used for filtering variants for geneVariant term\nconst dtTerms_temp = [\n\t{\n\t\tid: 'snvindel',\n\t\tquery: 'snvindel',\n\t\tname: dt2label[dtsnvindel],\n\t\tparent_id: null,\n\t\tisleaf: true,\n\t\ttype: DTSNVINDEL,\n\t\tdt: dtsnvindel,\n\t\tvalues: {}\n\t},\n\t{\n\t\tid: 'cnv',\n\t\tquery: 'cnv',\n\t\tname: dt2label[dtcnv],\n\t\tparent_id: null,\n\t\tisleaf: true,\n\t\ttype: DTCNV,\n\t\tdt: dtcnv,\n\t\tvalues: {}\n\t},\n\t{\n\t\tid: 'fusion',\n\t\tquery: 'svfusion',\n\t\tname: dt2label[dtfusionrna],\n\t\tparent_id: null,\n\t\tisleaf: true,\n\t\ttype: DTFUSION,\n\t\tdt: dtfusionrna,\n\t\tvalues: {}\n\t},\n\t{\n\t\tid: 'sv',\n\t\tquery: 'svfusion',\n\t\tname: dt2label[dtsv],\n\t\tparent_id: null,\n\t\tisleaf: true,\n\t\ttype: DTSV,\n\t\tdt: dtsv,\n\t\tvalues: {}\n\t},\n\t{\n\t\tid: 'itd',\n\t\tquery: 'itd',\n\t\tname: dt2label[dtitd],\n\t\tparent_id: null,\n\t\tisleaf: true,\n\t\ttype: DTITD,\n\t\tdt: dtitd,\n\t\tvalues: {}\n\t}\n]\n// add origin annotations to dt terms\nconst dtTerms_temp2: any[] = []\nfor (const dtTerm of dtTerms_temp as any[]) {\n\tdtTerm.name_noOrigin = dtTerm.name // for labeling groups in groupsetting\n\tdtTerms_temp2.push(dtTerm) // no origin\n\tfor (const origin of ['somatic', 'germline']) {\n\t\t// add origins\n\t\tconst addOrigin = {\n\t\t\tid: `${dtTerm.id}_${origin}`,\n\t\t\tname: `${dtTerm.name} (${origin})`,\n\t\t\torigin\n\t\t}\n\t\tdtTerms_temp2.push(Object.assign({}, dtTerm, addOrigin))\n\t}\n}\nexport const dtTerms = dtTerms_temp2\n\nexport const colorScaleMap = {\n\tblueWhiteRed: { domain: [0, 0.5, 1], range: ['blue', 'white', 'red'] },\n\tgreenWhiteRed: { domain: [0, 0.5, 1], range: ['green', 'white', 'red'] },\n\tblueYellowRed: {\n\t\tdomain: [0, 0.17, 0.33, 0.5, 0.67, 0.83, 1],\n\t\trange: ['#313695', '#649AC7', '#BCE1ED', '#FFFFBF', '#FDBE70', '#EA5839', '#A50026']\n\t},\n\tgreenBlackRed: {\n\t\tdomain: [0, 0.17, 0.33, 0.5, 0.67, 0.83, 1],\n\t\trange: ['#00FF00', '#14E10C', '#1AAF10', '#000000', '#B01205', '#E20E03', '#FF0000']\n\t},\n\tblueBlackYellow: {\n\t\tdomain: [0, 0.17, 0.33, 0.5, 0.67, 0.83, 1],\n\t\trange: ['#0000FF', '#0000CC', '#000099', '#202020', '#999900', '#CCCC00', '#FFFF00']\n\t},\n\t// when hierCluster z-score transformation is not performed, should use two-color scale\n\twhiteRed: { domain: [0, 1], range: ['white', 'red'] }\n}\n\nexport function invalidcoord(thisgenome, chrom, start, stop) {\n\tif (!thisgenome) return 'no genome'\n\tif (!chrom) return 'no chr name'\n\tconst chr = thisgenome.chrlookup[chrom.toUpperCase()]\n\tif (!chr) return 'Invalid chromosome name: ' + chr\n\tif (!Number.isInteger(start)) return 'Non-numerical position: ' + start\n\tif (start < 0 || start >= chr.len) return 'Position out of range: ' + start\n\tif (!Number.isInteger(stop)) return 'Non-numerical position: ' + stop\n\tif (stop < 0 || stop > chr.len) return 'Position out of range: ' + stop\n\tif (start > stop) return 'Start position is greater than stop'\n\treturn false\n}\n\nexport function string2pos(s, genome, donotextend) {\n\ts = s.replace(/,/g, '')\n\tconst chr = genome.chrlookup[s.toUpperCase()]\n\tif (chr) {\n\t\t// chr name only, to middle\n\t\treturn {\n\t\t\tchr: chr.name,\n\t\t\tchrlen: chr.len,\n\t\t\tstart: Math.max(0, Math.ceil(chr.len / 2) - 10000),\n\t\t\tstop: Math.min(chr.len, Math.ceil(chr.len / 2) + 10000)\n\t\t}\n\t}\n\t{\n\t\t// special handling for snv4\n\t\tconst tmp = s.split('.')\n\t\tif (tmp.length >= 2) {\n\t\t\tconst chr = genome.chrlookup[tmp[0].toUpperCase()]\n\t\t\tconst pos = Number.parseInt(tmp[1])\n\t\t\tconst e = invalidcoord(genome, tmp[0], pos, pos + 1)\n\t\t\tif (!e) {\n\t\t\t\t// valid snv4\n\t\t\t\tconst bpspan = 400\n\t\t\t\treturn {\n\t\t\t\t\tchr: chr.name,\n\t\t\t\t\tchrlen: chr.len,\n\t\t\t\t\tstart: Math.max(0, pos - Math.ceil(bpspan / 2)),\n\t\t\t\t\tstop: Math.min(chr.len, pos + Math.ceil(bpspan / 2)),\n\t\t\t\t\tactualposition: { position: pos, len: 1 }\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tconst tmp = s.split(/[-:\\s]+/)\n\tif (tmp.length == 2) {\n\t\t// must be chr - pos\n\t\tconst pos = Number.parseInt(tmp[1])\n\t\tconst e = invalidcoord(genome, tmp[0], pos, pos + 1)\n\t\tif (e) {\n\t\t\treturn null\n\t\t}\n\t\tconst chr = genome.chrlookup[tmp[0].toUpperCase()]\n\t\tconst bpspan = 400\n\t\treturn {\n\t\t\tchr: chr.name,\n\t\t\tchrlen: chr.len,\n\t\t\tstart: Math.max(0, pos - Math.ceil(bpspan / 2)),\n\t\t\tstop: Math.min(chr.len, pos + Math.ceil(bpspan / 2)),\n\t\t\tactualposition: { position: pos, len: 1 }\n\t\t}\n\t}\n\tif (tmp.length == 3) {\n\t\t// must be chr - start - stop\n\t\tlet start = Number.parseInt(tmp[1]),\n\t\t\tstop = Number.parseInt(tmp[2])\n\t\tconst e = invalidcoord(genome, tmp[0], start, stop)\n\t\tif (e) {\n\t\t\treturn null\n\t\t}\n\t\tconst actualposition = { position: start, len: stop - start }\n\t\tconst chr = genome.chrlookup[tmp[0].toUpperCase()]\n\n\t\tif (!donotextend) {\n\t\t\tconst minspan = 400\n\t\t\tif (stop - start < minspan) {\n\t\t\t\tlet center = Math.ceil((start + stop) / 2)\n\t\t\t\tif (center + minspan / 2 >= chr.len) {\n\t\t\t\t\tcenter = chr.len - Math.ceil(minspan / 2)\n\t\t\t\t}\n\t\t\t\tstart = Math.max(0, center - Math.ceil(minspan / 2))\n\t\t\t\tstop = start + minspan\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tchr: chr.name,\n\t\t\tchrlen: chr.len,\n\t\t\tstart,\n\t\t\tstop,\n\t\t\tactualposition\n\t\t}\n\t}\n\treturn null\n}\n\n/////////////// splice junction event types\nexport const JT_na = 'na'\nexport const JT_canonical = 'canonical'\nexport const JT_exonskip = 'exonskip'\nexport const JT_exonaltuse = 'exonaltuse'\nexport const JT_a5ss = 'a5ss'\nexport const JT_a3ss = 'a3ss'\nexport const JTypes = {\n\t[JT_canonical]: {\n\t\tcolor: '#0C72A8',\n\t\tname: 'Canonical'\n\t},\n\t[JT_exonskip]: {\n\t\tcolor: '#D14747',\n\t\tname: 'ExonSkip'\n\t},\n\t[JT_a5ss]: {\n\t\tcolor: '#476CD1',\n\t\tname: \"Alt 5'SS\"\n\t},\n\t[JT_a3ss]: {\n\t\tcolor: '#47B582',\n\t\tname: \"Alt 3'SS\"\n\t},\n\t[JT_exonaltuse]: {\n\t\tcolor: '#E69525',\n\t\tname: 'Alternative exon'\n\t},\n\t[JT_na]: {\n\t\tcolor: '#787854',\n\t\tname: 'Unannotated'\n\t}\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["tmp", "chr"]
7
+ }
@@ -0,0 +1,302 @@
1
+ import {
2
+ appear2 as appear,
3
+ axisstyle,
4
+ bwSetting,
5
+ disappear2 as disappear,
6
+ makeNumericAxisConfig,
7
+ rgb2hex
8
+ } from "./chunk-K6OVOHIZ.js";
9
+ import {
10
+ dofetch3
11
+ } from "./chunk-4USLEUNR.js";
12
+ import {
13
+ axisLeft
14
+ } from "./chunk-LOZEKOES.js";
15
+ import {
16
+ format,
17
+ linear
18
+ } from "./chunk-UJELJXJG.js";
19
+
20
+ // src/block.tk.bigwig.js
21
+ function bigwigfromtemplate(tk, template) {
22
+ tk.scale = {};
23
+ if (template.scale) {
24
+ for (const k in template.scale) {
25
+ tk.scale[k] = template.scale[k];
26
+ }
27
+ } else {
28
+ tk.scale.auto = 1;
29
+ }
30
+ if (tk.normalize) {
31
+ } else {
32
+ tk.normalize = {
33
+ dividefactor: 1,
34
+ disable: 1
35
+ };
36
+ }
37
+ tk.barheight = template.height || 50;
38
+ tk.height_main = tk.toppad + tk.barheight + tk.bottompad;
39
+ if (!tk.ncolor) tk.ncolor = "#BD005E";
40
+ if (!tk.ncolor2) tk.ncolor2 = "#5E00BD";
41
+ if (!tk.pcolor) tk.pcolor = "#005EBD";
42
+ if (!tk.pcolor2) tk.pcolor2 = "#FA7D00";
43
+ }
44
+ function bigwigmaketk(tk, block) {
45
+ tk.img = tk.glider.append("image");
46
+ tk.tklabel.attr("y", tk.barheight / 2);
47
+ tk.leftaxis = tk.gleft.append("g");
48
+ tk.config_handle = block.maketkconfighandle(tk).on("click", () => {
49
+ tk.tkconfigtip.clear().showunder(tk.config_handle.node());
50
+ bigwigconfigpanel(tk, block, tk.tkconfigtip.d, () => bigwigload(tk, block));
51
+ });
52
+ }
53
+ async function bigwigload(tk, block) {
54
+ block.tkcloakon(tk);
55
+ const par = block.tkarg_q(tk);
56
+ if (tk.dotplotfactor) par.dotplotfactor = tk.dotplotfactor;
57
+ if (tk.bgcolor) par.bgcolor = tk.bgcolor;
58
+ tk.height_main = tk.toppad + tk.barheight + tk.bottompad;
59
+ tk.img.attr("width", block.width).attr("height", tk.barheight);
60
+ let errtext;
61
+ try {
62
+ let data;
63
+ if (tk.imgData) {
64
+ data = tk.imgData;
65
+ } else {
66
+ data = await dofetch3("tkbigwig", { method: "POST", body: JSON.stringify(par) });
67
+ }
68
+ if (data.error) throw data.error;
69
+ if (!data.src) throw "data.src missing";
70
+ tk.tklabel.transition().attr("y", tk.barheight / 2);
71
+ tk.img.attr("xlink:href", data.src);
72
+ if (data.minv != void 0) {
73
+ tk.scale.min = data.minv;
74
+ }
75
+ if (data.maxv != void 0) {
76
+ tk.scale.max = data.maxv;
77
+ }
78
+ tk.leftaxis.selectAll("*").remove();
79
+ if (data.nodata) {
80
+ throw "No data in view range";
81
+ }
82
+ const scale = linear().domain([tk.scale.min, tk.scale.max]).range([tk.barheight, 0]);
83
+ const axis = axisLeft().scale(scale).tickValues([tk.scale.min, tk.scale.max]);
84
+ if (tk.integer4axis) {
85
+ axis.tickFormat(format("d"));
86
+ }
87
+ axisstyle({
88
+ axis: tk.leftaxis.call(axis),
89
+ color: "black",
90
+ showline: true
91
+ });
92
+ } catch (err) {
93
+ tk.img.attr("width", 0).attr("height", 0);
94
+ if (err.stack) {
95
+ console.log(err.stack);
96
+ }
97
+ errtext = typeof err == "string" ? err : err.message;
98
+ } finally {
99
+ block.tkcloakoff(tk, { error: errtext });
100
+ block.block_setheight();
101
+ for (const panel of tk.subpanels) {
102
+ bigwigloadsubpanel(tk, block, panel);
103
+ }
104
+ }
105
+ }
106
+ async function bigwigloadsubpanel(tk, block, panel) {
107
+ block.tkcloakon_subpanel(panel);
108
+ const par = block.tkarg_q(tk);
109
+ if (tk.dotplotfactor) {
110
+ par.dotplotfactor = tk.dotplotfactor;
111
+ }
112
+ par.width = panel.width;
113
+ par.rglst = [
114
+ {
115
+ chr: panel.chr,
116
+ start: panel.start,
117
+ stop: panel.stop,
118
+ width: panel.width
119
+ }
120
+ ];
121
+ delete par.percentile;
122
+ delete par.autoscale;
123
+ panel.img.attr("width", panel.width).attr("height", tk.barheight);
124
+ let errtext;
125
+ try {
126
+ if (tk.imgData) throw "subpanel not supported by imgData yet";
127
+ const data = await dofetch3("tkbigwig", { method: "POST", body: JSON.stringify(par) });
128
+ if (data.error) throw data.error;
129
+ panel.img.attr("xlink:href", data.src);
130
+ } catch (err) {
131
+ panel.img.attr("width", 0).attr("height", 0);
132
+ if (err.stack) {
133
+ console.log(err.stack);
134
+ }
135
+ errtext = typeof err == "string" ? err : err.message;
136
+ } finally {
137
+ block.tkcloakoff_subpanel(panel, { error: errtext });
138
+ }
139
+ }
140
+ function bigwigconfigpanel(tk, block, holder, loader) {
141
+ const config = {
142
+ pcolor: {},
143
+ ncolor: {},
144
+ pcolor2: {},
145
+ ncolor2: {},
146
+ // .row
147
+ // .lab
148
+ dotplot: {},
149
+ // .row
150
+ dividefactor: {}
151
+ };
152
+ {
153
+ const row = holder.append("div").style("margin-bottom", "15px");
154
+ row.append("span").html("Height&nbsp;&nbsp;");
155
+ row.append("input").attr("size", 5).property("value", tk.barheight).on("keyup", (event) => {
156
+ if (event.code != "Enter") return;
157
+ const s = event.target.value;
158
+ if (s == "") return;
159
+ const v = Number.parseInt(s);
160
+ if (Number.isNaN(v) || v <= 1) {
161
+ alert("track height must be positive integer");
162
+ return;
163
+ }
164
+ tk.barheight = v;
165
+ loader(bwSetting.height);
166
+ });
167
+ }
168
+ config.pcolor.row = holder.append("div").style("margin-bottom", "15px");
169
+ config.pcolor.lab = config.pcolor.row.append("span").text("Positive value color").style("padding-right", "10px");
170
+ config.pcolor.row.append("input").attr("type", "color").property("value", rgb2hex(tk.pcolor)).on("change", (event) => {
171
+ tk.pcolor = event.target.value;
172
+ loader(bwSetting.pcolor);
173
+ });
174
+ config.ncolor.row = holder.append("div").style("margin-bottom", "15px");
175
+ config.ncolor.lab = config.ncolor.row.append("span").text("Negative value color").style("padding-right", "10px");
176
+ config.ncolor.row.append("input").attr("type", "color").property("value", rgb2hex(tk.ncolor)).on("change", (event) => {
177
+ tk.ncolor = event.target.value;
178
+ loader(bwSetting.ncolor);
179
+ });
180
+ if (!tk.scale.auto) {
181
+ config.pcolor2.row = holder.append("div").style("margin-bottom", "15px");
182
+ config.pcolor2.lab = config.pcolor2.row.append("span").html("&ge;Max color").style("padding-right", "10px");
183
+ config.pcolor2.row.append("input").attr("type", "color").property("value", rgb2hex(tk.pcolor2)).on("change", (event) => {
184
+ tk.pcolor2 = event.target.value;
185
+ loader(bwSetting.pcolor2);
186
+ });
187
+ config.ncolor2.row = holder.append("div").style("margin-bottom", "15px");
188
+ config.ncolor2.lab = config.ncolor2.row.append("span").html("&le;Min color").style("padding-right", "10px");
189
+ config.ncolor2.row.append("input").attr("type", "color").property("value", rgb2hex(tk.ncolor2)).on("change", (event) => {
190
+ tk.ncolor2 = event.target.value;
191
+ loader(bwSetting.ncolor2);
192
+ });
193
+ }
194
+ {
195
+ const setting = {};
196
+ if (tk.scale.auto) {
197
+ setting.auto = 1;
198
+ } else if (tk.scale.percentile) {
199
+ setting.percentile = tk.scale.percentile;
200
+ } else {
201
+ setting.fixed = { min: tk.scale.min, max: tk.scale.max };
202
+ }
203
+ makeNumericAxisConfig({
204
+ holder: holder.append("div").style("margin-bottom", "15px"),
205
+ setting,
206
+ callback: (s) => {
207
+ if (s.auto) {
208
+ tk.scale.auto = 1;
209
+ loader(bwSetting.autoscale);
210
+ return;
211
+ }
212
+ if (s.fixed) {
213
+ delete tk.scale.auto;
214
+ delete tk.scale.percentile;
215
+ tk.scale.max = s.fixed.max;
216
+ tk.scale.min = s.fixed.min;
217
+ loader(bwSetting.fixedscale);
218
+ return;
219
+ }
220
+ delete tk.scale.auto;
221
+ tk.scale.percentile = s.percentile;
222
+ loader(bwSetting.percentilescale);
223
+ }
224
+ });
225
+ }
226
+ {
227
+ config.dotplot.row = holder.append("div").style("margin-bottom", "15px");
228
+ config.dotplot.row.append("span").html("Dot plot&nbsp;&nbsp;");
229
+ const s = config.dotplot.row.append("select").on("change", (event) => {
230
+ const i = event.target.selectedIndex;
231
+ if (i == 0) {
232
+ delete tk.dotplotfactor;
233
+ } else {
234
+ tk.dotplotfactor = Number.parseInt(event.target.options[i].innerHTML);
235
+ }
236
+ loader(i == 0 ? bwSetting.nodotplot : bwSetting.usedotplot);
237
+ });
238
+ let o = s.append("option").text("no");
239
+ if (!tk.dotplotfactor) {
240
+ o.property("selected", 1);
241
+ }
242
+ o = s.append("option").text("5");
243
+ if (tk.dotplotfactor == 5) {
244
+ o.property("selected", 1);
245
+ }
246
+ o = s.append("option").text("10");
247
+ if (tk.dotplotfactor == 10) {
248
+ o.property("selected", 1);
249
+ }
250
+ o = s.append("option").text("15");
251
+ if (tk.dotplotfactor == 15) {
252
+ o.property("selected", 1);
253
+ }
254
+ o = s.append("option").text("20");
255
+ if (tk.dotplotfactor == 20) {
256
+ o.property("selected", 1);
257
+ }
258
+ }
259
+ config.dividefactor.row = holder.append("div");
260
+ {
261
+ const id = Math.random().toString();
262
+ const input = config.dividefactor.row.append("input").attr("type", "checkbox").attr("id", id);
263
+ if (!tk.normalize.disable) {
264
+ input.property("checked", 1);
265
+ }
266
+ config.dividefactor.row.append("label").html("&nbsp;Apply normalization").attr("for", id);
267
+ const folder = config.dividefactor.row.append("div").style("margin", "5px 10px 0px 20px").style("display", tk.normalize.disable ? "none" : "block");
268
+ folder.append("span").html("Divide raw value by&nbsp;");
269
+ const factorinput = folder.append("input").attr("type", "number").style("width", "60px").property("value", tk.normalize.dividefactor).on("keyup", (event) => {
270
+ if (event.code != "Enter" && event.code != "NumpadEnter") return;
271
+ const v = event.target.value;
272
+ if (v <= 0) {
273
+ return;
274
+ }
275
+ tk.normalize.dividefactor = v;
276
+ loader(bwSetting.usedividefactor);
277
+ });
278
+ folder.append("div").text("Enter a value above zero").style("font-size", ".7em").style("color", "#858585");
279
+ input.on("change", (event) => {
280
+ if (event.target.checked) {
281
+ appear(folder);
282
+ delete tk.normalize.disable;
283
+ factorinput.property("value", tk.normalize.dividefactor);
284
+ loader(bwSetting.usedividefactor);
285
+ return;
286
+ }
287
+ disappear(folder);
288
+ tk.normalize.disable = 1;
289
+ loader(bwSetting.nodividefactor);
290
+ });
291
+ }
292
+ return config;
293
+ }
294
+
295
+ export {
296
+ bigwigfromtemplate,
297
+ bigwigmaketk,
298
+ bigwigload,
299
+ bigwigloadsubpanel,
300
+ bigwigconfigpanel
301
+ };
302
+ //# sourceMappingURL=chunk-GL44X7JY.js.map