@sjcrh/proteinpaint-client 2.217.0 → 2.218.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 (977) hide show
  1. package/dist/2dmaf-BZWQ4YZF.js +1362 -0
  2. package/dist/AggMatrixInput-OXUENYYF.js +402 -0
  3. package/dist/AggregateMatrix-7PYLWY3X.js +37 -0
  4. package/dist/AppHeader-QOLLABH4.js +826 -0
  5. package/dist/BoxPlot-PDRYKWXF.js +1233 -0
  6. package/dist/CorrelationVolcano-Z3ABRHL6.js +613 -0
  7. package/dist/Cuminc-ATQT3KDO.js +1217 -0
  8. package/dist/DE-5LMMF5QB.js +85 -0
  9. package/dist/DEinput-Y2VXYH54.js +497 -0
  10. package/dist/DM-ACIWRZS2.js +86 -0
  11. package/dist/DifferentialAnalysis-23WQKT6I.js +235 -0
  12. package/dist/Disco-5UBCTVTY.js +3384 -0
  13. package/dist/Disco.UI-6YCIW3QK.js +239 -0
  14. package/dist/DmrPlot-R7UOGAVY.js +361 -0
  15. package/dist/DmrPlot-R7UOGAVY.js.map +7 -0
  16. package/dist/GB-QZZG4DHJ.js +1388 -0
  17. package/dist/GSEA-3WW4GEXE.js +870 -0
  18. package/dist/GeneExpInput-PW6HP5LO.js +38 -0
  19. package/dist/Geomap-YDUXJ65P.js +80 -0
  20. package/dist/HicApp-CXHLK5UM.js +2240 -0
  21. package/dist/IDCViewer-ID46XKWW.js +10808 -0
  22. package/dist/NumBinaryEditor-7HEQD3UO.js +274 -0
  23. package/dist/NumBinaryEditor.unit.spec-CE5FZMLZ.js +308 -0
  24. package/dist/NumContEditor-7J4IODVT.js +100 -0
  25. package/dist/NumContEditor.unit.spec-H3DEDHGO.js +160 -0
  26. package/dist/NumCustomBinEditor-URE4NOZI.js +29 -0
  27. package/dist/NumCustomBinEditor.unit.spec-XE5AUM45.js +393 -0
  28. package/dist/NumDiscreteEditor-PBV2QXRU.js +165 -0
  29. package/dist/NumDiscreteEditor.unit.spec-2TWQ7DAZ.js +229 -0
  30. package/dist/NumRegularBinEditor-MG27BRWO.js +29 -0
  31. package/dist/NumRegularBinEditor.unit.spec-6NJLP3BX.js +274 -0
  32. package/dist/NumSplineEditor-ZZKMWU2V.js +205 -0
  33. package/dist/NumSplineEditor.unit.spec-T3C2YPU5.js +220 -0
  34. package/dist/NumericDensity-BUEAEQZD.js +29 -0
  35. package/dist/NumericDensity.unit.spec-XZ77VRO7.js +414 -0
  36. package/dist/NumericHandler-RW2NAEBZ.js +30 -0
  37. package/dist/NumericHandler.unit.spec-BQGTQBV6.js +210 -0
  38. package/dist/ProteomeInput-RL6IDTOA.js +610 -0
  39. package/dist/Regression-EVGHTLUT.js +1412 -0
  40. package/dist/RunChart2-NK2KWOZ7.js +744 -0
  41. package/dist/SC-QWJ72SI3.js +1290 -0
  42. package/dist/SC-QWJ72SI3.js.map +7 -0
  43. package/dist/Violin-2HIRC6A2.js +1095 -0
  44. package/dist/Volcano-H55O7GBI.js +2453 -0
  45. package/dist/Volcano-H55O7GBI.js.map +7 -0
  46. package/dist/Wsi-M2XRJBGL.js +636 -0
  47. package/dist/Wsi-M2XRJBGL.js.map +7 -0
  48. package/dist/adSandbox-T2HORPLC.js +29 -0
  49. package/dist/animatedBubbleChart-PS7KMVSY.js +542 -0
  50. package/dist/app-FKPGNJDN.js +38 -0
  51. package/dist/app-NPGVS6X4.js +28 -0
  52. package/dist/app.js +14 -14
  53. package/dist/bam-QQ54FE3A.js +872 -0
  54. package/dist/barchart-4DLCN7NL.js +38 -0
  55. package/dist/barchart2-H65GFNNQ.js +305 -0
  56. package/dist/block-RAYA73ZN.js +6232 -0
  57. package/dist/block.init-VE3TQWH4.js +29 -0
  58. package/dist/block.mds.expressionrank-YLFQQHZJ.js +350 -0
  59. package/dist/block.mds.geneboxplot-6V44H7EC.js +819 -0
  60. package/dist/block.mds.junction-DEIUZOQK.js +1534 -0
  61. package/dist/block.mds.svcnv-PTP7JYS2.js +6408 -0
  62. package/dist/block.svg-RGDXDKV6.js +155 -0
  63. package/dist/block.tk.aicheck-MFXHYAIN.js +274 -0
  64. package/dist/block.tk.bam-ICTVSRQ6.js +1897 -0
  65. package/dist/block.tk.bedgraphdot-X5AYHRUJ.js +375 -0
  66. package/dist/block.tk.bigwig.ui-FS3DA5JQ.js +202 -0
  67. package/dist/block.tk.hicstraw-MBBA3H4E.js +814 -0
  68. package/dist/block.tk.junction-L3YVWWOR.js +2353 -0
  69. package/dist/block.tk.junction.textmatrixui-PU3C7W6B.js +190 -0
  70. package/dist/block.tk.ld-SNKUZDPW.js +90 -0
  71. package/dist/block.tk.menu-NARHQW7Y.js +1050 -0
  72. package/dist/block.tk.pgv-NVNFNJZ6.js +934 -0
  73. package/dist/brainImaging-KHFLAPHC.js +550 -0
  74. package/dist/brainRegions-MQL2KZOQ.js +213 -0
  75. package/dist/bubbleHeatmap-U3GAF5AV.js +374 -0
  76. package/dist/cellTypeBubbleHeatmap-5ENEMDCZ.js +274 -0
  77. package/dist/chunk-25Q4AX4L.js +102 -0
  78. package/dist/chunk-2GQSPQ3U.js +1273 -0
  79. package/dist/chunk-2GQSPQ3U.js.map +7 -0
  80. package/dist/chunk-2RILGMXS.js +22873 -0
  81. package/dist/chunk-2RILGMXS.js.map +7 -0
  82. package/dist/chunk-2WWCHIXZ.js +194 -0
  83. package/dist/chunk-3AO7OZLF.js +294 -0
  84. package/dist/chunk-3DZJ64RQ.js +56 -0
  85. package/dist/chunk-3QZHRQ55.js +26 -0
  86. package/dist/chunk-3ZM5PZXA.js +240 -0
  87. package/dist/chunk-43FVCJXV.js +2685 -0
  88. package/dist/chunk-43WVK5KI.js +96 -0
  89. package/dist/chunk-4ZOKEHK4.js +516 -0
  90. package/dist/chunk-5M4U6S3E.js +103 -0
  91. package/dist/chunk-5O4GAKJT.js +49 -0
  92. package/dist/chunk-5Q6TANNH.js +274 -0
  93. package/dist/chunk-5WBIVXMG.js +134 -0
  94. package/dist/chunk-65FN7LIA.js +255 -0
  95. package/dist/chunk-6HVJJT3Y.js +6360 -0
  96. package/dist/chunk-6HVJJT3Y.js.map +7 -0
  97. package/dist/chunk-7HTMIFVR.js +170 -0
  98. package/dist/chunk-AOKINHUU.js +2799 -0
  99. package/dist/chunk-APXULA6M.js +182 -0
  100. package/dist/chunk-C7O67FZJ.js +1844 -0
  101. package/dist/chunk-CCNV3WJO.js +281 -0
  102. package/dist/chunk-DAKRDL76.js +156 -0
  103. package/dist/chunk-EGQVMN6S.js +397 -0
  104. package/dist/chunk-ERCLZ433.js +217 -0
  105. package/dist/chunk-ESLXHJ7W.js +31 -0
  106. package/dist/chunk-ET2KFCXK.js +424 -0
  107. package/dist/chunk-EYIZTX33.js +263 -0
  108. package/dist/chunk-F2PHTKCI.js +243 -0
  109. package/dist/chunk-FJXUMOVQ.js +176 -0
  110. package/dist/chunk-HJCI33L4.js +140 -0
  111. package/dist/chunk-HKXBGMUT.js +80 -0
  112. package/dist/chunk-HNMKK33Y.js +38 -0
  113. package/dist/chunk-IKZAWD7P.js +480 -0
  114. package/dist/chunk-ILPJAASI.js +203 -0
  115. package/dist/chunk-JFZECJY2.js +562 -0
  116. package/dist/chunk-K6CZAEBF.js +119 -0
  117. package/dist/chunk-KXDK6ZOJ.js +13624 -0
  118. package/dist/chunk-L7LRBRUN.js +2960 -0
  119. package/dist/chunk-LMG7Y5IN.js +5799 -0
  120. package/dist/chunk-LMG7Y5IN.js.map +7 -0
  121. package/dist/chunk-LO624OGK.js +102 -0
  122. package/dist/chunk-LPDQ26OP.js +550 -0
  123. package/dist/chunk-M2XWAAIZ.js +340 -0
  124. package/dist/chunk-M37J6Z5U.js +1988 -0
  125. package/dist/chunk-M5SJ42E2.js +468 -0
  126. package/dist/chunk-MJREV2KW.js +692 -0
  127. package/dist/chunk-MRR5GPPP.js +466 -0
  128. package/dist/chunk-NSCNNQOY.js +56 -0
  129. package/dist/chunk-OAQLBII5.js +54 -0
  130. package/dist/chunk-OKHU7EJW.js +194 -0
  131. package/dist/chunk-OXVB4OZC.js +4373 -0
  132. package/dist/chunk-PDZED3RR.js +382 -0
  133. package/dist/chunk-PITPUAWX.js +182 -0
  134. package/dist/chunk-PVXG2BRT.js +59 -0
  135. package/dist/chunk-PX6MHRAN.js +141 -0
  136. package/dist/chunk-REIPTX7J.js +626 -0
  137. package/dist/chunk-RFE2VG6T.js +55 -0
  138. package/dist/chunk-RPFQOIYX.js +418 -0
  139. package/dist/chunk-S2NAGL4V.js +839 -0
  140. package/dist/chunk-T24YYODE.js +217 -0
  141. package/dist/chunk-TDP4PX2S.js +123 -0
  142. package/dist/chunk-TUPJEZSL.js +299 -0
  143. package/dist/chunk-UNXVW5OT.js +379 -0
  144. package/dist/chunk-UOWUMUAX.js +444 -0
  145. package/dist/chunk-V6EIPPMT.js +1339 -0
  146. package/dist/chunk-VGUO2BQ7.js +276 -0
  147. package/dist/chunk-VKWZPC73.js +37 -0
  148. package/dist/chunk-VQ5PDCAJ.js +5213 -0
  149. package/dist/chunk-VQK3UKNA.js +54 -0
  150. package/dist/chunk-WB5MHFHB.js +237 -0
  151. package/dist/chunk-WK6CPMXR.js +302 -0
  152. package/dist/chunk-WNUCR3UF.js +2334 -0
  153. package/dist/chunk-WNUCR3UF.js.map +7 -0
  154. package/dist/chunk-WRYNE3Q4.js +1219 -0
  155. package/dist/chunk-XA6LI63Y.js +54 -0
  156. package/dist/chunk-XJYVMXMZ.js +2279 -0
  157. package/dist/chunk-XJYVMXMZ.js.map +7 -0
  158. package/dist/chunk-Y7Y6X6E5.js +70 -0
  159. package/dist/chunk-YG57X4VD.js +257 -0
  160. package/dist/chunk-YPOIMSJR.js +34 -0
  161. package/dist/chunk-YS7Y257H.js +26152 -0
  162. package/dist/chunk-YS7Y257H.js.map +7 -0
  163. package/dist/chunk-ZRLON6PP.js +14 -0
  164. package/dist/chunk-ZSNZPH6G.js +339 -0
  165. package/dist/cohort-TPMJZ4OH.js +66 -0
  166. package/dist/cohortSunburst-SL5F36RM.js +684 -0
  167. package/dist/cohortSunburst-SL5F36RM.js.map +7 -0
  168. package/dist/condition-QROUALBG.js +323 -0
  169. package/dist/controls-GH37YWOP.js +30 -0
  170. package/dist/controls.config-ZYCDICYF.js +30 -0
  171. package/dist/correlation-JESMUFS6.js +91 -0
  172. package/dist/customdata.inputui-T2DLAZYJ.js +280 -0
  173. package/dist/dataDownload-Z7A6ZEH7.js +325 -0
  174. package/dist/databrowser.ui-ZVMGFYJ2.js +421 -0
  175. package/dist/dictionary-KXFUR3NL.js +109 -0
  176. package/dist/dnaMethylation-2YU2HDD4.js +29 -0
  177. package/dist/dnaMethylation.integration.spec-75Y5RSDO.js +194 -0
  178. package/dist/dofetch-G5ULIRMG.js +47 -0
  179. package/dist/e2pca-75VDPO7P.js +340 -0
  180. package/dist/ep-F2Z7TNAG.js +1247 -0
  181. package/dist/ep-F2Z7TNAG.js.map +7 -0
  182. package/dist/expclust.gdc.spec-PB66FFWD.js +298 -0
  183. package/dist/facet-2RY37EFR.js +515 -0
  184. package/dist/gb-WQQFYFGF.js +77 -0
  185. package/dist/geneExpClustering-ARVZDF6G.js +240 -0
  186. package/dist/geneExpression-FR33PKJW.js +309 -0
  187. package/dist/geneExpression-O7DR5SMR.js +29 -0
  188. package/dist/geneExpression.unit.spec-HGNDSTAI.js +124 -0
  189. package/dist/geneORA-RXXQT44V.js +269 -0
  190. package/dist/geneRanking-WDQZ7TI3.js +544 -0
  191. package/dist/geneVariant-6JYBWFEJ.js +32 -0
  192. package/dist/geneVariant-TKRG5VQN.js +285 -0
  193. package/dist/geneVariant.integration.spec-L2Q2DY67.js +499 -0
  194. package/dist/genefusion.ui-DBLMBU2D.js +299 -0
  195. package/dist/geneset-2ZQF7FET.js +199 -0
  196. package/dist/genomeBrowser.spec-E5RJD53Z.js +272 -0
  197. package/dist/grin2-MJ4SYAFO.js +66 -0
  198. package/dist/grin2-VXRMV7VA.js +945 -0
  199. package/dist/hierCluster-44FPBMNL.js +55 -0
  200. package/dist/hierCluster-SU4BDK6I.js +51 -0
  201. package/dist/hierCluster.config-4OZ65GKH.js +32 -0
  202. package/dist/hierCluster.integration.spec-CHNSKZD4.js +479 -0
  203. package/dist/hierCluster.interactivity-M72CEGCW.js +45 -0
  204. package/dist/hierCluster.renderers-RM43G7ZR.js +18 -0
  205. package/dist/imagePlot-UYMWFNI4.js +152 -0
  206. package/dist/importPlot-W3HPE4LZ.js +8 -0
  207. package/dist/isoformExpression-JEMJE5WY.js +31 -0
  208. package/dist/isoformExpression.unit.spec-GOK5LFME.js +233 -0
  209. package/dist/jspdf.es.min-KB3HW45U.js +40 -0
  210. package/dist/junction-2X4AS47T.js +32 -0
  211. package/dist/junction.customTerm-MVSIUY66.js +15 -0
  212. package/dist/junction.unit.spec-HA74XQYV.js +178 -0
  213. package/dist/launch.adhoc-PZAJ6J2S.js +33 -0
  214. package/dist/leftlabel.sample-7BZKFB3I.js +253 -0
  215. package/dist/lollipop-URSFH4ZE.js +162 -0
  216. package/dist/maf-CM3ETF4N.js +451 -0
  217. package/dist/maftimeline-CRQEUTRY.js +583 -0
  218. package/dist/matrix-IBWB4A3Z.js +50 -0
  219. package/dist/matrix-SOBGWBTY.js +55 -0
  220. package/dist/matrix.cells-GSKC6FXI.js +25 -0
  221. package/dist/matrix.config-4KU5X3LQ.js +33 -0
  222. package/dist/matrix.data-XC2OTBTR.js +22 -0
  223. package/dist/matrix.groups-THXKRQSD.js +25 -0
  224. package/dist/matrix.integration.spec-GKHH4RSR.js +3156 -0
  225. package/dist/matrix.interactivity-ITXMM2ZP.js +33 -0
  226. package/dist/matrix.layout-D6SRLAXS.js +35 -0
  227. package/dist/matrix.legend-OWQAMHI2.js +19 -0
  228. package/dist/matrix.renderers-J66OAQUZ.js +30 -0
  229. package/dist/matrix.serieses-P5I4E2NB.js +18 -0
  230. package/dist/matrix.sort-CXBXF75N.js +25 -0
  231. package/dist/matrix.sort.unit.spec-RSXBKXC5.js +464 -0
  232. package/dist/matrix.sorterUi-WEZRKU63.js +15 -0
  233. package/dist/matrix.sorterUi.unit.spec-6EULDV43.js +334 -0
  234. package/dist/matrix.unit.spec-D4ZLDVDT.js +146 -0
  235. package/dist/mavb-5JAD6CPN.js +726 -0
  236. package/dist/mavb-5JAD6CPN.js.map +7 -0
  237. package/dist/mds.fimo-CQFREH3A.js +509 -0
  238. package/dist/mds.samplescatterplot-XLJITURG.js +1545 -0
  239. package/dist/mds.survivalplot-MLRD27QP.js +472 -0
  240. package/dist/multivalue-KJQCYBHA.js +79 -0
  241. package/dist/numericDictTermCluster-ZOU6R4XP.js +62 -0
  242. package/dist/oncomatrix-4RHDDJDC.js +286 -0
  243. package/dist/oncomatrix.spec-JA6DT4PP.js +439 -0
  244. package/dist/plot.2dvaf-VJWPWCOY.js +368 -0
  245. package/dist/plot.app-JNEOGNVW.js +32 -0
  246. package/dist/plot.barplot-YELRBXUB.js +93 -0
  247. package/dist/plot.boxplot-HNFOB3TV.js +142 -0
  248. package/dist/plot.brainImaging-AZYEGF3U.js +51 -0
  249. package/dist/plot.disco-L6PGGZJI.js +98 -0
  250. package/dist/plot.ssgq-UM64SSXW.js +130 -0
  251. package/dist/plot.vaf2cov-DKUKJRUP.js +249 -0
  252. package/dist/polar2-4YHPENAV.js +228 -0
  253. package/dist/profileForms-KMECFO3K.js +937 -0
  254. package/dist/profilePlot-3AXSIXCK.js +45 -0
  255. package/dist/proteinView-QWHOTL35.js +1346 -0
  256. package/dist/proteomeCohortCompare-DL2QLFL3.js +866 -0
  257. package/dist/pseudbulk.unit.spec-IWR7EZ7O.js +82 -0
  258. package/dist/pseudobulk-IC525IZ2.js +31 -0
  259. package/dist/purify.es-34NJ2D5A.js +1986 -0
  260. package/dist/purify.es-34NJ2D5A.js.map +7 -0
  261. package/dist/qualitative-LK2QEYHU.js +34 -0
  262. package/dist/qualitative-YY4NQGO5.js +241 -0
  263. package/dist/radar2-TJUPENQF.js +323 -0
  264. package/dist/radarFacility2-Q7LBWLCV.js +331 -0
  265. package/dist/rememberedGvQ.unit.spec-2GBLM5AO.js +210 -0
  266. package/dist/render-AHR6SCQX.js +29 -0
  267. package/dist/report-BPHJTRTO.js +213 -0
  268. package/dist/sampleView-CS2FB3K3.js +39 -0
  269. package/dist/samplelst-A3DHKP6U.js +102 -0
  270. package/dist/samplematrix-5X7MFT3G.js +2188 -0
  271. package/dist/sc-RCYXZMN6.js +77 -0
  272. package/dist/scatter-2ITGMX5N.js +921 -0
  273. package/dist/scatter-OAL4YOCA.js +84 -0
  274. package/dist/selectGenomeWithTklst-PB5KDW2N.js +125 -0
  275. package/dist/singleCellCellType-FEFNOHOP.js +29 -0
  276. package/dist/singleCellCellType.unit.spec-V2I32V23.js +150 -0
  277. package/dist/singleCellGeneExpression-RUQQMKDE.js +29 -0
  278. package/dist/singleCellGeneExpression.unit.spec-VCMJRMT7.js +144 -0
  279. package/dist/singleCellNumericValue-JLXZQWNT.js +29 -0
  280. package/dist/singleCellNumericValue.unit.spec-XVCZEN5K.js +412 -0
  281. package/dist/singleCellPlot-4EBYWOJ2.js +44 -0
  282. package/dist/singlecell-UKZJAYVH.js +1562 -0
  283. package/dist/singlecell-VNRWPXGV.js +77 -0
  284. package/dist/snp-2RJDJQZC.js +29 -0
  285. package/dist/snp.unit.spec-Z4DNBFAH.js +167 -0
  286. package/dist/snplocus-OZLIZ7R7.js +200 -0
  287. package/dist/snplst-EVRJ4OCL.js +36 -0
  288. package/dist/spliceevent.a53ss.diagram-N5UXX4OX.js +142 -0
  289. package/dist/spliceevent.exonskip.diagram-WBNFLW4V.js +274 -0
  290. package/dist/spliceevent.noeventdiagram-EI72A6L3.js +451 -0
  291. package/dist/ssGSEA-NONMMNF7.js +29 -0
  292. package/dist/ssGSEA.unit.spec-7JDPNLZA.js +79 -0
  293. package/dist/stattable-NNUHKPF4.js +112 -0
  294. package/dist/studyCatalog-KMLE7Q55.js +457 -0
  295. package/dist/summarizeCnvGeneexp-AHCGPQLE.js +154 -0
  296. package/dist/summarizeGeneexpSurvival-NCST7HDQ.js +101 -0
  297. package/dist/summarizeMutationCnv-VUTQYXO6.js +155 -0
  298. package/dist/summarizeMutationDiagnosis-TFU2HUHQ.js +31 -0
  299. package/dist/summarizeMutationSurvival-F4CJILS3.js +95 -0
  300. package/dist/summary-QQZW7BEE.js +40 -0
  301. package/dist/summary.integration.spec-FILIPD3W.js +405 -0
  302. package/dist/summaryInput-RMY226Y3.js +238 -0
  303. package/dist/sunburst-Y4LNCKMR.js +274 -0
  304. package/dist/survival-4FYQHQHX.js +49 -0
  305. package/dist/survival-6GC267GY.js +1246 -0
  306. package/dist/survival.integration.spec-5ERXR6MG.js +609 -0
  307. package/dist/svg2pdf.es.min-KKHWPFWG.js +3157 -0
  308. package/dist/svgraph-XIQIA7OJ.js +1377 -0
  309. package/dist/svmr-45YJKRQP.js +3834 -0
  310. package/dist/svmr-45YJKRQP.js.map +7 -0
  311. package/dist/swimmer-643B5Q6F.js +741 -0
  312. package/dist/table-JQIBRXTJ.js +192 -0
  313. package/dist/termCollection-LU5NW6KT.js +247 -0
  314. package/dist/termCollection-XZCPBXRV.js +29 -0
  315. package/dist/termCollection.unit.spec-H5LBV3N4.js +295 -0
  316. package/dist/termCollectionFractionSelection-3YHOFXEL.js +38 -0
  317. package/dist/termCollectionFractionSelection.unit.spec-G5X3Y5YI.js +184 -0
  318. package/dist/tk-NPWNBXLB.js +37 -0
  319. package/dist/tk-YSW5NPW2.js +1116 -0
  320. package/dist/tp.ui-W6RG7V2A.js +1453 -0
  321. package/dist/tp.ui-W6RG7V2A.js.map +7 -0
  322. package/dist/tvs.categorical-TUX6KRZI.js +28 -0
  323. package/dist/tvs.condition-2CH25PLO.js +160 -0
  324. package/dist/tvs.dt-YKP3F75O.js +30 -0
  325. package/dist/tvs.dtcnv.categorical-QBJWJNHZ.js +31 -0
  326. package/dist/tvs.dtcnv.continuous-MV25OLBD.js +63 -0
  327. package/dist/tvs.dtfusion-SJ64HNKE.js +31 -0
  328. package/dist/tvs.dtitd-WQLHZK2P.js +31 -0
  329. package/dist/tvs.dtsnvindel-WMFJ7W7U.js +31 -0
  330. package/dist/tvs.dtsv-GKEC5OGA.js +31 -0
  331. package/dist/tvs.multivalue-LFWMQETN.js +84 -0
  332. package/dist/tvs.numeric-63NVZG7U.js +32 -0
  333. package/dist/tvs.samplelst-DEMMYRKK.js +95 -0
  334. package/dist/tvs.survival-M4QUVP5L.js +110 -0
  335. package/dist/tvs.termCollection-J367GZY3.js +118 -0
  336. package/dist/vocabulary-RAVWS5IS.js +32 -0
  337. package/dist/wsi.direct-UY3SIIAD.js +11514 -0
  338. package/dist/wsi.direct-UY3SIIAD.js.map +7 -0
  339. package/package.json +3 -3
  340. package/dist/2dmaf-RRHATFHO.js +0 -1362
  341. package/dist/AggMatrixInput-4UHBCXYH.js +0 -402
  342. package/dist/AggregateMatrix-IJE5CM5Y.js +0 -37
  343. package/dist/AppHeader-UXGLRW6C.js +0 -826
  344. package/dist/BoxPlot-GQYC22KY.js +0 -1233
  345. package/dist/CorrelationVolcano-5CWRWZTI.js +0 -613
  346. package/dist/Cuminc-TYHKAPRK.js +0 -1217
  347. package/dist/DE-UUFQGSOI.js +0 -85
  348. package/dist/DEinput-DU7MF4YY.js +0 -497
  349. package/dist/DM-SSI5KUBC.js +0 -86
  350. package/dist/DifferentialAnalysis-G6FE2MXY.js +0 -235
  351. package/dist/Disco-B3KGNEAW.js +0 -3384
  352. package/dist/Disco.UI-UNPUBQCN.js +0 -239
  353. package/dist/DmrPlot-27NGDMT4.js +0 -358
  354. package/dist/DmrPlot-27NGDMT4.js.map +0 -7
  355. package/dist/GB-SXACUA4V.js +0 -1388
  356. package/dist/GSEA-EHMBA3TF.js +0 -870
  357. package/dist/GeneExpInput-NDXISF2U.js +0 -38
  358. package/dist/Geomap-3CNT227W.js +0 -80
  359. package/dist/HicApp-VQBUB6EZ.js +0 -2240
  360. package/dist/IDCViewer-DTOE7KDX.js +0 -10808
  361. package/dist/NumBinaryEditor-IVZ4MMQT.js +0 -274
  362. package/dist/NumBinaryEditor.unit.spec-3BSQ6FM4.js +0 -308
  363. package/dist/NumContEditor-CUZHU3IO.js +0 -100
  364. package/dist/NumContEditor.unit.spec-SCQFD2Y7.js +0 -160
  365. package/dist/NumCustomBinEditor-UEEYZ4ZO.js +0 -29
  366. package/dist/NumCustomBinEditor.unit.spec-GYS35OQV.js +0 -393
  367. package/dist/NumDiscreteEditor-IT7NIXTV.js +0 -165
  368. package/dist/NumDiscreteEditor.unit.spec-LB6VLAWO.js +0 -229
  369. package/dist/NumRegularBinEditor-FF6UXZWN.js +0 -29
  370. package/dist/NumRegularBinEditor.unit.spec-Z4S5LH2C.js +0 -274
  371. package/dist/NumSplineEditor-IW5WEN3P.js +0 -205
  372. package/dist/NumSplineEditor.unit.spec-PAEN3SAD.js +0 -220
  373. package/dist/NumericDensity-CPJIQLYT.js +0 -29
  374. package/dist/NumericDensity.unit.spec-4KHECHVU.js +0 -414
  375. package/dist/NumericHandler-SEFTQJDM.js +0 -30
  376. package/dist/NumericHandler.unit.spec-UGDR3476.js +0 -210
  377. package/dist/ProteomeInput-NYPUYVN5.js +0 -610
  378. package/dist/Regression-WDSISHYL.js +0 -1412
  379. package/dist/RunChart2-2NPADXUR.js +0 -744
  380. package/dist/SC-EWDBPHEL.js +0 -1344
  381. package/dist/SC-EWDBPHEL.js.map +0 -7
  382. package/dist/Violin-POGGPCZY.js +0 -1095
  383. package/dist/Volcano-U2B4KEUL.js +0 -2452
  384. package/dist/Volcano-U2B4KEUL.js.map +0 -7
  385. package/dist/Wsi-G7OCAJ3R.js +0 -625
  386. package/dist/Wsi-G7OCAJ3R.js.map +0 -7
  387. package/dist/adSandbox-SUCX6DAQ.js +0 -29
  388. package/dist/animatedBubbleChart-SDBWJELZ.js +0 -542
  389. package/dist/app-ATQM5PKI.js +0 -28
  390. package/dist/app-BCKEWJCY.js +0 -38
  391. package/dist/bam-QK2ZLZDI.js +0 -872
  392. package/dist/barchart-RHDKI3NZ.js +0 -38
  393. package/dist/barchart2-CS3E6FOY.js +0 -305
  394. package/dist/block-RQ3HTJVP.js +0 -6232
  395. package/dist/block.init-T33F47DO.js +0 -29
  396. package/dist/block.mds.expressionrank-LQD6MN6Z.js +0 -350
  397. package/dist/block.mds.geneboxplot-N5XHHVR7.js +0 -819
  398. package/dist/block.mds.junction-JD4WQUSH.js +0 -1534
  399. package/dist/block.mds.svcnv-LCTYWXL2.js +0 -6408
  400. package/dist/block.svg-2F3RGTI3.js +0 -155
  401. package/dist/block.tk.aicheck-BOF6WZ5E.js +0 -274
  402. package/dist/block.tk.bam-5GBYEQBM.js +0 -1897
  403. package/dist/block.tk.bedgraphdot-LVQEP4RS.js +0 -375
  404. package/dist/block.tk.bigwig.ui-HHBO4JAC.js +0 -202
  405. package/dist/block.tk.hicstraw-JBO4UEOA.js +0 -814
  406. package/dist/block.tk.junction-S5S2N7FK.js +0 -2353
  407. package/dist/block.tk.junction.textmatrixui-DNQL7WB5.js +0 -190
  408. package/dist/block.tk.ld-JHQNR67E.js +0 -90
  409. package/dist/block.tk.menu-7JBJOY2O.js +0 -1050
  410. package/dist/block.tk.pgv-FQPREV6P.js +0 -934
  411. package/dist/brainImaging-HEWGZZNY.js +0 -550
  412. package/dist/brainRegions-QUGB7YUW.js +0 -213
  413. package/dist/bubbleHeatmap-OZRONGAX.js +0 -374
  414. package/dist/cellTypeBubbleHeatmap-N7NDE325.js +0 -274
  415. package/dist/chunk-2FWSNJEN.js +0 -54
  416. package/dist/chunk-2JIKMCJR.js +0 -34
  417. package/dist/chunk-3SPEW6R6.js +0 -102
  418. package/dist/chunk-5G6O5RYM.js +0 -123
  419. package/dist/chunk-65DO5IKM.js +0 -299
  420. package/dist/chunk-6D4HOTG7.js +0 -1844
  421. package/dist/chunk-6Q5SOSSU.js +0 -2685
  422. package/dist/chunk-7JHIUS54.js +0 -626
  423. package/dist/chunk-7X347XMF.js +0 -397
  424. package/dist/chunk-ABLG7GUS.js +0 -55
  425. package/dist/chunk-AFEFZ74T.js +0 -276
  426. package/dist/chunk-AIC43DTG.js +0 -243
  427. package/dist/chunk-AJXP4AV7.js +0 -182
  428. package/dist/chunk-AMW5LCUB.js +0 -424
  429. package/dist/chunk-AV2IH5K2.js +0 -156
  430. package/dist/chunk-B3WLXXGY.js +0 -263
  431. package/dist/chunk-BG6GAROI.js +0 -302
  432. package/dist/chunk-BIJOXCLN.js +0 -2277
  433. package/dist/chunk-BIJOXCLN.js.map +0 -7
  434. package/dist/chunk-BU6PAOGA.js +0 -103
  435. package/dist/chunk-BZV2BJDU.js +0 -13624
  436. package/dist/chunk-C2TII2FF.js +0 -96
  437. package/dist/chunk-CTFHEDG2.js +0 -550
  438. package/dist/chunk-CXEECHP5.js +0 -37
  439. package/dist/chunk-CZK4EV3Y.js +0 -1339
  440. package/dist/chunk-D35GNF3Y.js +0 -2325
  441. package/dist/chunk-D35GNF3Y.js.map +0 -7
  442. package/dist/chunk-DFZWE3TR.js +0 -170
  443. package/dist/chunk-DX23HAW7.js +0 -1219
  444. package/dist/chunk-E7XHA4YL.js +0 -1988
  445. package/dist/chunk-EDFBRXX2.js +0 -54
  446. package/dist/chunk-F23EQSGU.js +0 -26
  447. package/dist/chunk-F2EEQ7KG.js +0 -379
  448. package/dist/chunk-F5FFI7Z7.js +0 -468
  449. package/dist/chunk-FK5NL2DF.js +0 -141
  450. package/dist/chunk-FVZTRWAO.js +0 -692
  451. package/dist/chunk-GDHQVEIO.js +0 -217
  452. package/dist/chunk-GSVB4XNS.js +0 -2799
  453. package/dist/chunk-GVAV4VRI.js +0 -418
  454. package/dist/chunk-H2FELGYK.js +0 -140
  455. package/dist/chunk-HFKZGMVV.js +0 -839
  456. package/dist/chunk-HJARHSDC.js +0 -274
  457. package/dist/chunk-HWNQOADC.js +0 -182
  458. package/dist/chunk-HXRG7XYB.js +0 -54
  459. package/dist/chunk-J5KCTRJC.js +0 -80
  460. package/dist/chunk-JMFVXWDX.js +0 -59
  461. package/dist/chunk-KGX2OIR4.js +0 -203
  462. package/dist/chunk-L2NPLA43.js +0 -257
  463. package/dist/chunk-L2WOLNZK.js +0 -339
  464. package/dist/chunk-LQKMDIRB.js +0 -466
  465. package/dist/chunk-LSQ5AQ6Q.js +0 -562
  466. package/dist/chunk-MBQIHLGI.js +0 -1269
  467. package/dist/chunk-MBQIHLGI.js.map +0 -7
  468. package/dist/chunk-MFR4WWDM.js +0 -14
  469. package/dist/chunk-MU4Z2MX2.js +0 -340
  470. package/dist/chunk-NHMIMTJA.js +0 -281
  471. package/dist/chunk-NNDKYTUV.js +0 -25353
  472. package/dist/chunk-NNDKYTUV.js.map +0 -7
  473. package/dist/chunk-NPBN3PPZ.js +0 -6358
  474. package/dist/chunk-NPBN3PPZ.js.map +0 -7
  475. package/dist/chunk-NULQJF73.js +0 -56
  476. package/dist/chunk-NYO7YANQ.js +0 -294
  477. package/dist/chunk-OBNHXAYG.js +0 -194
  478. package/dist/chunk-PETYR7LC.js +0 -134
  479. package/dist/chunk-PLFPXOGX.js +0 -119
  480. package/dist/chunk-PQVHRM4L.js +0 -5213
  481. package/dist/chunk-QLUTQPZE.js +0 -240
  482. package/dist/chunk-QNQ2ZYT7.js +0 -38
  483. package/dist/chunk-QYCPIVCX.js +0 -255
  484. package/dist/chunk-RZ2THVK4.js +0 -516
  485. package/dist/chunk-S4IZ4VM7.js +0 -31
  486. package/dist/chunk-SFUDTUXF.js +0 -382
  487. package/dist/chunk-SUT75MRI.js +0 -102
  488. package/dist/chunk-SYLYLOHK.js +0 -56
  489. package/dist/chunk-TEFWF3SK.js +0 -176
  490. package/dist/chunk-TPSVPMAN.js +0 -70
  491. package/dist/chunk-V4ZKHM6D.js +0 -2960
  492. package/dist/chunk-V7DNHPZD.js +0 -4373
  493. package/dist/chunk-VPMQDTYR.js +0 -194
  494. package/dist/chunk-VV6JIG4D.js +0 -444
  495. package/dist/chunk-WTAPOH2W.js +0 -22699
  496. package/dist/chunk-WTAPOH2W.js.map +0 -7
  497. package/dist/chunk-WU3YXPRE.js +0 -217
  498. package/dist/chunk-X2HWRISK.js +0 -480
  499. package/dist/chunk-X77QVINS.js +0 -49
  500. package/dist/chunk-XXFLJWTQ.js +0 -237
  501. package/dist/chunk-ZPWBYHNE.js +0 -5799
  502. package/dist/chunk-ZPWBYHNE.js.map +0 -7
  503. package/dist/cohort-ATIZW34H.js +0 -66
  504. package/dist/cohortSunburst-WQK2UV25.js +0 -686
  505. package/dist/cohortSunburst-WQK2UV25.js.map +0 -7
  506. package/dist/condition-SGJIDZNB.js +0 -323
  507. package/dist/controls-JQCMGPXP.js +0 -30
  508. package/dist/controls.config-WQHVQAIJ.js +0 -30
  509. package/dist/correlation-S3MN3L5Q.js +0 -91
  510. package/dist/customdata.inputui-LGTGMJBZ.js +0 -280
  511. package/dist/dataDownload-FAWN2WKE.js +0 -325
  512. package/dist/databrowser.ui-KF3LWQXG.js +0 -421
  513. package/dist/dictionary-EVLEOT72.js +0 -109
  514. package/dist/dnaMethylation-J3SPEM4S.js +0 -29
  515. package/dist/dnaMethylation.integration.spec-CTA53YCT.js +0 -194
  516. package/dist/dofetch-3C3MI5NR.js +0 -47
  517. package/dist/e2pca-PTWPY5WP.js +0 -340
  518. package/dist/ep-MS4LQQDR.js +0 -1245
  519. package/dist/ep-MS4LQQDR.js.map +0 -7
  520. package/dist/expclust.gdc.spec-S5FE4MMD.js +0 -298
  521. package/dist/facet-FSOIZJCA.js +0 -515
  522. package/dist/gb-YDEOK7NW.js +0 -77
  523. package/dist/geneExpClustering-37JKKFW3.js +0 -240
  524. package/dist/geneExpression-G6ODP3VY.js +0 -29
  525. package/dist/geneExpression-VQPRFNKE.js +0 -309
  526. package/dist/geneExpression.unit.spec-ZHXCUG6Q.js +0 -124
  527. package/dist/geneORA-E3PSS3CI.js +0 -269
  528. package/dist/geneRanking-MK3YYINC.js +0 -544
  529. package/dist/geneVariant-LEMAVFOY.js +0 -32
  530. package/dist/geneVariant-NNSB7JLS.js +0 -285
  531. package/dist/geneVariant.integration.spec-6CC5UAOP.js +0 -499
  532. package/dist/genefusion.ui-5NCQIQPN.js +0 -299
  533. package/dist/geneset-ZX4V3CFB.js +0 -199
  534. package/dist/genomeBrowser.spec-J7ISXY6H.js +0 -272
  535. package/dist/grin2-GN3DQNON.js +0 -945
  536. package/dist/grin2-LBGBBB4L.js +0 -66
  537. package/dist/hierCluster-5JURTKAZ.js +0 -55
  538. package/dist/hierCluster-BJ5VBPXR.js +0 -51
  539. package/dist/hierCluster.config-4EERP4KK.js +0 -32
  540. package/dist/hierCluster.integration.spec-VR4GULRV.js +0 -479
  541. package/dist/hierCluster.interactivity-SMTQOKUY.js +0 -45
  542. package/dist/hierCluster.renderers-PAME7BWU.js +0 -18
  543. package/dist/imagePlot-4LMIKBVE.js +0 -152
  544. package/dist/importPlot-3CG6ASNH.js +0 -8
  545. package/dist/isoformExpression-VCDNKTZ6.js +0 -31
  546. package/dist/isoformExpression.unit.spec-ZXYY37TA.js +0 -233
  547. package/dist/jspdf.es.min-V7ONHJJV.js +0 -40
  548. package/dist/junction-5DXJO4PS.js +0 -32
  549. package/dist/junction.customTerm-UOPUSEOE.js +0 -15
  550. package/dist/junction.unit.spec-F35E3GJW.js +0 -178
  551. package/dist/launch.adhoc-V2HTCQGD.js +0 -33
  552. package/dist/leftlabel.sample-V7O2EC36.js +0 -253
  553. package/dist/lollipop-RNRZLG64.js +0 -162
  554. package/dist/maf-W6SF6BJS.js +0 -451
  555. package/dist/maftimeline-NABCAMHG.js +0 -583
  556. package/dist/matrix-JC6AJT2N.js +0 -55
  557. package/dist/matrix-UCHESWVK.js +0 -50
  558. package/dist/matrix.cells-B4L42TBM.js +0 -25
  559. package/dist/matrix.config-6US3AAH7.js +0 -33
  560. package/dist/matrix.data-FYFXYDA3.js +0 -22
  561. package/dist/matrix.groups-Y7DEG3GS.js +0 -25
  562. package/dist/matrix.integration.spec-KXX7SFX5.js +0 -3156
  563. package/dist/matrix.interactivity-NHWG4WCC.js +0 -33
  564. package/dist/matrix.layout-5DQNT7DD.js +0 -35
  565. package/dist/matrix.legend-OY7IF6AS.js +0 -19
  566. package/dist/matrix.renderers-GYOXGHPU.js +0 -30
  567. package/dist/matrix.serieses-657TLDAV.js +0 -18
  568. package/dist/matrix.sort-IMA2ES3T.js +0 -25
  569. package/dist/matrix.sort.unit.spec-S6BAFYPR.js +0 -464
  570. package/dist/matrix.sorterUi-77F36Q5H.js +0 -15
  571. package/dist/matrix.sorterUi.unit.spec-V5NVQGD5.js +0 -334
  572. package/dist/matrix.unit.spec-R4NMTZYQ.js +0 -146
  573. package/dist/mavb-MRCVMBPD.js +0 -723
  574. package/dist/mavb-MRCVMBPD.js.map +0 -7
  575. package/dist/mds.fimo-5DCH5BEM.js +0 -509
  576. package/dist/mds.samplescatterplot-VIBCS5M6.js +0 -1545
  577. package/dist/mds.survivalplot-AZ7LJDZZ.js +0 -472
  578. package/dist/multivalue-4QKGYYW2.js +0 -79
  579. package/dist/numericDictTermCluster-GLLG6IK2.js +0 -62
  580. package/dist/oncomatrix-R32ZPMX7.js +0 -286
  581. package/dist/oncomatrix.spec-BMK6LMBS.js +0 -439
  582. package/dist/plot.2dvaf-46FT53MF.js +0 -368
  583. package/dist/plot.app-7EE4YCV4.js +0 -32
  584. package/dist/plot.barplot-FK4J2G7K.js +0 -93
  585. package/dist/plot.boxplot-ATY4LK3X.js +0 -142
  586. package/dist/plot.brainImaging-S7B547V4.js +0 -51
  587. package/dist/plot.disco-K5MMC2GD.js +0 -98
  588. package/dist/plot.ssgq-B3OVMZFD.js +0 -130
  589. package/dist/plot.vaf2cov-RBHDQULW.js +0 -249
  590. package/dist/polar2-GECELCTG.js +0 -228
  591. package/dist/profileForms-2USYOA34.js +0 -937
  592. package/dist/profilePlot-YGD2CF6P.js +0 -45
  593. package/dist/proteinView-FCPWJLGU.js +0 -1346
  594. package/dist/proteomeCohortCompare-TYYUF5A5.js +0 -866
  595. package/dist/pseudbulk.unit.spec-UVVRP6NR.js +0 -82
  596. package/dist/pseudobulk-ZIN5VJGB.js +0 -31
  597. package/dist/purify.es-3S3RVH5Y.js +0 -1594
  598. package/dist/purify.es-3S3RVH5Y.js.map +0 -7
  599. package/dist/qualitative-27BZGASV.js +0 -34
  600. package/dist/qualitative-N4F6NITI.js +0 -241
  601. package/dist/radar2-X465RPJX.js +0 -323
  602. package/dist/radarFacility2-AE7BA62N.js +0 -331
  603. package/dist/rememberedGvQ.unit.spec-4PDIU5RY.js +0 -210
  604. package/dist/render-TD2QWOHT.js +0 -29
  605. package/dist/report-3Y2OWDF7.js +0 -213
  606. package/dist/sampleView-BUMMYRHJ.js +0 -39
  607. package/dist/samplelst-BWK53BLI.js +0 -102
  608. package/dist/samplematrix-RQU43UYR.js +0 -2188
  609. package/dist/sc-LCBFWCZZ.js +0 -77
  610. package/dist/scatter-6S5I7OW3.js +0 -921
  611. package/dist/scatter-MJELX75N.js +0 -84
  612. package/dist/selectGenomeWithTklst-WAVXHXR5.js +0 -125
  613. package/dist/singleCellCellType-WMCAJ7JF.js +0 -29
  614. package/dist/singleCellCellType.unit.spec-4Z46ZT5Q.js +0 -150
  615. package/dist/singleCellGeneExpression-7Q5ZJT4R.js +0 -29
  616. package/dist/singleCellGeneExpression.unit.spec-6C7PDGRH.js +0 -144
  617. package/dist/singleCellNumericValue-QGYITZRC.js +0 -29
  618. package/dist/singleCellNumericValue.unit.spec-MQUKPEZJ.js +0 -412
  619. package/dist/singleCellPlot-JJMFJ2KQ.js +0 -44
  620. package/dist/singlecell-J23S3JR2.js +0 -1562
  621. package/dist/singlecell-Y4OGUWEC.js +0 -77
  622. package/dist/snp-IO6TKWGD.js +0 -29
  623. package/dist/snp.unit.spec-X7ILEEPO.js +0 -167
  624. package/dist/snplocus-Z2NGIKMO.js +0 -200
  625. package/dist/snplst-XCS2FCQV.js +0 -36
  626. package/dist/spliceevent.a53ss.diagram-F3S4BRVG.js +0 -142
  627. package/dist/spliceevent.exonskip.diagram-AXCDJKH4.js +0 -274
  628. package/dist/spliceevent.noeventdiagram-UK3X667E.js +0 -451
  629. package/dist/ssGSEA-ZRPNQKJ5.js +0 -29
  630. package/dist/ssGSEA.unit.spec-DG5ZHLC7.js +0 -79
  631. package/dist/stattable-XYSC3CYU.js +0 -112
  632. package/dist/studyCatalog-Y75LMI62.js +0 -457
  633. package/dist/summarizeCnvGeneexp-H2NP7VLU.js +0 -154
  634. package/dist/summarizeGeneexpSurvival-HTCD3VQQ.js +0 -101
  635. package/dist/summarizeMutationCnv-UEGXWK2P.js +0 -155
  636. package/dist/summarizeMutationDiagnosis-MJGWP7IT.js +0 -31
  637. package/dist/summarizeMutationSurvival-55JW5LA6.js +0 -95
  638. package/dist/summary-HJO23RGB.js +0 -40
  639. package/dist/summary.integration.spec-OWI2C2N5.js +0 -405
  640. package/dist/summaryInput-RL2JXRDE.js +0 -238
  641. package/dist/sunburst-JFY6V5E2.js +0 -274
  642. package/dist/survival-6FLR4YCJ.js +0 -1246
  643. package/dist/survival-PBBU6PA5.js +0 -49
  644. package/dist/survival.integration.spec-WAKTGYGP.js +0 -609
  645. package/dist/svg2pdf.es.min-NIFE2BIE.js +0 -3157
  646. package/dist/svgraph-WD3DUZV7.js +0 -1377
  647. package/dist/svmr-AP6ZFO7S.js +0 -3832
  648. package/dist/svmr-AP6ZFO7S.js.map +0 -7
  649. package/dist/swimmer-VPKSBV6V.js +0 -741
  650. package/dist/table-GX3VJLPZ.js +0 -192
  651. package/dist/termCollection-QE7U5QBD.js +0 -29
  652. package/dist/termCollection-YQ332WKB.js +0 -247
  653. package/dist/termCollection.unit.spec-ELLN7VRA.js +0 -295
  654. package/dist/termCollectionFractionSelection-V3RP5KAT.js +0 -38
  655. package/dist/termCollectionFractionSelection.unit.spec-JR7Q7TJI.js +0 -184
  656. package/dist/tk-GD2KJM5W.js +0 -1116
  657. package/dist/tk-J5VPFEX6.js +0 -37
  658. package/dist/tp.ui-5K3AAXDW.js +0 -1449
  659. package/dist/tp.ui-5K3AAXDW.js.map +0 -7
  660. package/dist/tvs.categorical-RPACB4VU.js +0 -28
  661. package/dist/tvs.condition-O6JBUM6D.js +0 -160
  662. package/dist/tvs.dt-5EVBSRX3.js +0 -30
  663. package/dist/tvs.dtcnv.categorical-Y5YHBZNC.js +0 -31
  664. package/dist/tvs.dtcnv.continuous-WP322QUP.js +0 -63
  665. package/dist/tvs.dtfusion-CCMUFDMQ.js +0 -31
  666. package/dist/tvs.dtitd-P3ED3MWA.js +0 -31
  667. package/dist/tvs.dtsnvindel-X2MXPLC6.js +0 -31
  668. package/dist/tvs.dtsv-4FOWFNVV.js +0 -31
  669. package/dist/tvs.multivalue-IRF467ZK.js +0 -84
  670. package/dist/tvs.numeric-C7FDCGCS.js +0 -32
  671. package/dist/tvs.samplelst-CBU6ATI5.js +0 -95
  672. package/dist/tvs.survival-3K5ASAXV.js +0 -110
  673. package/dist/tvs.termCollection-MXEWO6KJ.js +0 -118
  674. package/dist/vocabulary-GQBHDP3K.js +0 -32
  675. package/dist/wsi.direct-25JUHWEF.js +0 -8339
  676. package/dist/wsi.direct-25JUHWEF.js.map +0 -7
  677. /package/dist/{2dmaf-RRHATFHO.js.map → 2dmaf-BZWQ4YZF.js.map} +0 -0
  678. /package/dist/{AggMatrixInput-4UHBCXYH.js.map → AggMatrixInput-OXUENYYF.js.map} +0 -0
  679. /package/dist/{AggregateMatrix-IJE5CM5Y.js.map → AggregateMatrix-7PYLWY3X.js.map} +0 -0
  680. /package/dist/{AppHeader-UXGLRW6C.js.map → AppHeader-QOLLABH4.js.map} +0 -0
  681. /package/dist/{BoxPlot-GQYC22KY.js.map → BoxPlot-PDRYKWXF.js.map} +0 -0
  682. /package/dist/{CorrelationVolcano-5CWRWZTI.js.map → CorrelationVolcano-Z3ABRHL6.js.map} +0 -0
  683. /package/dist/{Cuminc-TYHKAPRK.js.map → Cuminc-ATQT3KDO.js.map} +0 -0
  684. /package/dist/{DE-UUFQGSOI.js.map → DE-5LMMF5QB.js.map} +0 -0
  685. /package/dist/{DEinput-DU7MF4YY.js.map → DEinput-Y2VXYH54.js.map} +0 -0
  686. /package/dist/{DM-SSI5KUBC.js.map → DM-ACIWRZS2.js.map} +0 -0
  687. /package/dist/{DifferentialAnalysis-G6FE2MXY.js.map → DifferentialAnalysis-23WQKT6I.js.map} +0 -0
  688. /package/dist/{Disco-B3KGNEAW.js.map → Disco-5UBCTVTY.js.map} +0 -0
  689. /package/dist/{Disco.UI-UNPUBQCN.js.map → Disco.UI-6YCIW3QK.js.map} +0 -0
  690. /package/dist/{GB-SXACUA4V.js.map → GB-QZZG4DHJ.js.map} +0 -0
  691. /package/dist/{GSEA-EHMBA3TF.js.map → GSEA-3WW4GEXE.js.map} +0 -0
  692. /package/dist/{GeneExpInput-NDXISF2U.js.map → GeneExpInput-PW6HP5LO.js.map} +0 -0
  693. /package/dist/{Geomap-3CNT227W.js.map → Geomap-YDUXJ65P.js.map} +0 -0
  694. /package/dist/{HicApp-VQBUB6EZ.js.map → HicApp-CXHLK5UM.js.map} +0 -0
  695. /package/dist/{IDCViewer-DTOE7KDX.js.map → IDCViewer-ID46XKWW.js.map} +0 -0
  696. /package/dist/{NumBinaryEditor-IVZ4MMQT.js.map → NumBinaryEditor-7HEQD3UO.js.map} +0 -0
  697. /package/dist/{NumBinaryEditor.unit.spec-3BSQ6FM4.js.map → NumBinaryEditor.unit.spec-CE5FZMLZ.js.map} +0 -0
  698. /package/dist/{NumContEditor-CUZHU3IO.js.map → NumContEditor-7J4IODVT.js.map} +0 -0
  699. /package/dist/{NumContEditor.unit.spec-SCQFD2Y7.js.map → NumContEditor.unit.spec-H3DEDHGO.js.map} +0 -0
  700. /package/dist/{NumCustomBinEditor-UEEYZ4ZO.js.map → NumCustomBinEditor-URE4NOZI.js.map} +0 -0
  701. /package/dist/{NumCustomBinEditor.unit.spec-GYS35OQV.js.map → NumCustomBinEditor.unit.spec-XE5AUM45.js.map} +0 -0
  702. /package/dist/{NumDiscreteEditor-IT7NIXTV.js.map → NumDiscreteEditor-PBV2QXRU.js.map} +0 -0
  703. /package/dist/{NumDiscreteEditor.unit.spec-LB6VLAWO.js.map → NumDiscreteEditor.unit.spec-2TWQ7DAZ.js.map} +0 -0
  704. /package/dist/{NumRegularBinEditor-FF6UXZWN.js.map → NumRegularBinEditor-MG27BRWO.js.map} +0 -0
  705. /package/dist/{NumRegularBinEditor.unit.spec-Z4S5LH2C.js.map → NumRegularBinEditor.unit.spec-6NJLP3BX.js.map} +0 -0
  706. /package/dist/{NumSplineEditor-IW5WEN3P.js.map → NumSplineEditor-ZZKMWU2V.js.map} +0 -0
  707. /package/dist/{NumSplineEditor.unit.spec-PAEN3SAD.js.map → NumSplineEditor.unit.spec-T3C2YPU5.js.map} +0 -0
  708. /package/dist/{NumericDensity-CPJIQLYT.js.map → NumericDensity-BUEAEQZD.js.map} +0 -0
  709. /package/dist/{NumericDensity.unit.spec-4KHECHVU.js.map → NumericDensity.unit.spec-XZ77VRO7.js.map} +0 -0
  710. /package/dist/{NumericHandler-SEFTQJDM.js.map → NumericHandler-RW2NAEBZ.js.map} +0 -0
  711. /package/dist/{NumericHandler.unit.spec-UGDR3476.js.map → NumericHandler.unit.spec-BQGTQBV6.js.map} +0 -0
  712. /package/dist/{ProteomeInput-NYPUYVN5.js.map → ProteomeInput-RL6IDTOA.js.map} +0 -0
  713. /package/dist/{Regression-WDSISHYL.js.map → Regression-EVGHTLUT.js.map} +0 -0
  714. /package/dist/{RunChart2-2NPADXUR.js.map → RunChart2-NK2KWOZ7.js.map} +0 -0
  715. /package/dist/{Violin-POGGPCZY.js.map → Violin-2HIRC6A2.js.map} +0 -0
  716. /package/dist/{adSandbox-SUCX6DAQ.js.map → adSandbox-T2HORPLC.js.map} +0 -0
  717. /package/dist/{animatedBubbleChart-SDBWJELZ.js.map → animatedBubbleChart-PS7KMVSY.js.map} +0 -0
  718. /package/dist/{app-ATQM5PKI.js.map → app-FKPGNJDN.js.map} +0 -0
  719. /package/dist/{app-BCKEWJCY.js.map → app-NPGVS6X4.js.map} +0 -0
  720. /package/dist/{bam-QK2ZLZDI.js.map → bam-QQ54FE3A.js.map} +0 -0
  721. /package/dist/{barchart-RHDKI3NZ.js.map → barchart-4DLCN7NL.js.map} +0 -0
  722. /package/dist/{barchart2-CS3E6FOY.js.map → barchart2-H65GFNNQ.js.map} +0 -0
  723. /package/dist/{block-RQ3HTJVP.js.map → block-RAYA73ZN.js.map} +0 -0
  724. /package/dist/{block.init-T33F47DO.js.map → block.init-VE3TQWH4.js.map} +0 -0
  725. /package/dist/{block.mds.expressionrank-LQD6MN6Z.js.map → block.mds.expressionrank-YLFQQHZJ.js.map} +0 -0
  726. /package/dist/{block.mds.geneboxplot-N5XHHVR7.js.map → block.mds.geneboxplot-6V44H7EC.js.map} +0 -0
  727. /package/dist/{block.mds.junction-JD4WQUSH.js.map → block.mds.junction-DEIUZOQK.js.map} +0 -0
  728. /package/dist/{block.mds.svcnv-LCTYWXL2.js.map → block.mds.svcnv-PTP7JYS2.js.map} +0 -0
  729. /package/dist/{block.svg-2F3RGTI3.js.map → block.svg-RGDXDKV6.js.map} +0 -0
  730. /package/dist/{block.tk.aicheck-BOF6WZ5E.js.map → block.tk.aicheck-MFXHYAIN.js.map} +0 -0
  731. /package/dist/{block.tk.bam-5GBYEQBM.js.map → block.tk.bam-ICTVSRQ6.js.map} +0 -0
  732. /package/dist/{block.tk.bedgraphdot-LVQEP4RS.js.map → block.tk.bedgraphdot-X5AYHRUJ.js.map} +0 -0
  733. /package/dist/{block.tk.bigwig.ui-HHBO4JAC.js.map → block.tk.bigwig.ui-FS3DA5JQ.js.map} +0 -0
  734. /package/dist/{block.tk.hicstraw-JBO4UEOA.js.map → block.tk.hicstraw-MBBA3H4E.js.map} +0 -0
  735. /package/dist/{block.tk.junction-S5S2N7FK.js.map → block.tk.junction-L3YVWWOR.js.map} +0 -0
  736. /package/dist/{block.tk.junction.textmatrixui-DNQL7WB5.js.map → block.tk.junction.textmatrixui-PU3C7W6B.js.map} +0 -0
  737. /package/dist/{block.tk.ld-JHQNR67E.js.map → block.tk.ld-SNKUZDPW.js.map} +0 -0
  738. /package/dist/{block.tk.menu-7JBJOY2O.js.map → block.tk.menu-NARHQW7Y.js.map} +0 -0
  739. /package/dist/{block.tk.pgv-FQPREV6P.js.map → block.tk.pgv-NVNFNJZ6.js.map} +0 -0
  740. /package/dist/{brainImaging-HEWGZZNY.js.map → brainImaging-KHFLAPHC.js.map} +0 -0
  741. /package/dist/{brainRegions-QUGB7YUW.js.map → brainRegions-MQL2KZOQ.js.map} +0 -0
  742. /package/dist/{bubbleHeatmap-OZRONGAX.js.map → bubbleHeatmap-U3GAF5AV.js.map} +0 -0
  743. /package/dist/{cellTypeBubbleHeatmap-N7NDE325.js.map → cellTypeBubbleHeatmap-5ENEMDCZ.js.map} +0 -0
  744. /package/dist/{chunk-3SPEW6R6.js.map → chunk-25Q4AX4L.js.map} +0 -0
  745. /package/dist/{chunk-VPMQDTYR.js.map → chunk-2WWCHIXZ.js.map} +0 -0
  746. /package/dist/{chunk-NYO7YANQ.js.map → chunk-3AO7OZLF.js.map} +0 -0
  747. /package/dist/{chunk-NULQJF73.js.map → chunk-3DZJ64RQ.js.map} +0 -0
  748. /package/dist/{chunk-F23EQSGU.js.map → chunk-3QZHRQ55.js.map} +0 -0
  749. /package/dist/{chunk-QLUTQPZE.js.map → chunk-3ZM5PZXA.js.map} +0 -0
  750. /package/dist/{chunk-6Q5SOSSU.js.map → chunk-43FVCJXV.js.map} +0 -0
  751. /package/dist/{chunk-C2TII2FF.js.map → chunk-43WVK5KI.js.map} +0 -0
  752. /package/dist/{chunk-RZ2THVK4.js.map → chunk-4ZOKEHK4.js.map} +0 -0
  753. /package/dist/{chunk-BU6PAOGA.js.map → chunk-5M4U6S3E.js.map} +0 -0
  754. /package/dist/{chunk-X77QVINS.js.map → chunk-5O4GAKJT.js.map} +0 -0
  755. /package/dist/{chunk-HJARHSDC.js.map → chunk-5Q6TANNH.js.map} +0 -0
  756. /package/dist/{chunk-PETYR7LC.js.map → chunk-5WBIVXMG.js.map} +0 -0
  757. /package/dist/{chunk-QYCPIVCX.js.map → chunk-65FN7LIA.js.map} +0 -0
  758. /package/dist/{chunk-DFZWE3TR.js.map → chunk-7HTMIFVR.js.map} +0 -0
  759. /package/dist/{chunk-GSVB4XNS.js.map → chunk-AOKINHUU.js.map} +0 -0
  760. /package/dist/{chunk-AJXP4AV7.js.map → chunk-APXULA6M.js.map} +0 -0
  761. /package/dist/{chunk-6D4HOTG7.js.map → chunk-C7O67FZJ.js.map} +0 -0
  762. /package/dist/{chunk-NHMIMTJA.js.map → chunk-CCNV3WJO.js.map} +0 -0
  763. /package/dist/{chunk-AV2IH5K2.js.map → chunk-DAKRDL76.js.map} +0 -0
  764. /package/dist/{chunk-7X347XMF.js.map → chunk-EGQVMN6S.js.map} +0 -0
  765. /package/dist/{chunk-WU3YXPRE.js.map → chunk-ERCLZ433.js.map} +0 -0
  766. /package/dist/{chunk-S4IZ4VM7.js.map → chunk-ESLXHJ7W.js.map} +0 -0
  767. /package/dist/{chunk-AMW5LCUB.js.map → chunk-ET2KFCXK.js.map} +0 -0
  768. /package/dist/{chunk-B3WLXXGY.js.map → chunk-EYIZTX33.js.map} +0 -0
  769. /package/dist/{chunk-AIC43DTG.js.map → chunk-F2PHTKCI.js.map} +0 -0
  770. /package/dist/{chunk-TEFWF3SK.js.map → chunk-FJXUMOVQ.js.map} +0 -0
  771. /package/dist/{chunk-H2FELGYK.js.map → chunk-HJCI33L4.js.map} +0 -0
  772. /package/dist/{chunk-J5KCTRJC.js.map → chunk-HKXBGMUT.js.map} +0 -0
  773. /package/dist/{chunk-QNQ2ZYT7.js.map → chunk-HNMKK33Y.js.map} +0 -0
  774. /package/dist/{chunk-X2HWRISK.js.map → chunk-IKZAWD7P.js.map} +0 -0
  775. /package/dist/{chunk-KGX2OIR4.js.map → chunk-ILPJAASI.js.map} +0 -0
  776. /package/dist/{chunk-LSQ5AQ6Q.js.map → chunk-JFZECJY2.js.map} +0 -0
  777. /package/dist/{chunk-PLFPXOGX.js.map → chunk-K6CZAEBF.js.map} +0 -0
  778. /package/dist/{chunk-BZV2BJDU.js.map → chunk-KXDK6ZOJ.js.map} +0 -0
  779. /package/dist/{chunk-V4ZKHM6D.js.map → chunk-L7LRBRUN.js.map} +0 -0
  780. /package/dist/{chunk-SUT75MRI.js.map → chunk-LO624OGK.js.map} +0 -0
  781. /package/dist/{chunk-CTFHEDG2.js.map → chunk-LPDQ26OP.js.map} +0 -0
  782. /package/dist/{chunk-MU4Z2MX2.js.map → chunk-M2XWAAIZ.js.map} +0 -0
  783. /package/dist/{chunk-E7XHA4YL.js.map → chunk-M37J6Z5U.js.map} +0 -0
  784. /package/dist/{chunk-F5FFI7Z7.js.map → chunk-M5SJ42E2.js.map} +0 -0
  785. /package/dist/{chunk-FVZTRWAO.js.map → chunk-MJREV2KW.js.map} +0 -0
  786. /package/dist/{chunk-LQKMDIRB.js.map → chunk-MRR5GPPP.js.map} +0 -0
  787. /package/dist/{chunk-SYLYLOHK.js.map → chunk-NSCNNQOY.js.map} +0 -0
  788. /package/dist/{chunk-EDFBRXX2.js.map → chunk-OAQLBII5.js.map} +0 -0
  789. /package/dist/{chunk-OBNHXAYG.js.map → chunk-OKHU7EJW.js.map} +0 -0
  790. /package/dist/{chunk-V7DNHPZD.js.map → chunk-OXVB4OZC.js.map} +0 -0
  791. /package/dist/{chunk-SFUDTUXF.js.map → chunk-PDZED3RR.js.map} +0 -0
  792. /package/dist/{chunk-HWNQOADC.js.map → chunk-PITPUAWX.js.map} +0 -0
  793. /package/dist/{chunk-JMFVXWDX.js.map → chunk-PVXG2BRT.js.map} +0 -0
  794. /package/dist/{chunk-FK5NL2DF.js.map → chunk-PX6MHRAN.js.map} +0 -0
  795. /package/dist/{chunk-7JHIUS54.js.map → chunk-REIPTX7J.js.map} +0 -0
  796. /package/dist/{chunk-ABLG7GUS.js.map → chunk-RFE2VG6T.js.map} +0 -0
  797. /package/dist/{chunk-GVAV4VRI.js.map → chunk-RPFQOIYX.js.map} +0 -0
  798. /package/dist/{chunk-HFKZGMVV.js.map → chunk-S2NAGL4V.js.map} +0 -0
  799. /package/dist/{chunk-GDHQVEIO.js.map → chunk-T24YYODE.js.map} +0 -0
  800. /package/dist/{chunk-5G6O5RYM.js.map → chunk-TDP4PX2S.js.map} +0 -0
  801. /package/dist/{chunk-65DO5IKM.js.map → chunk-TUPJEZSL.js.map} +0 -0
  802. /package/dist/{chunk-F2EEQ7KG.js.map → chunk-UNXVW5OT.js.map} +0 -0
  803. /package/dist/{chunk-VV6JIG4D.js.map → chunk-UOWUMUAX.js.map} +0 -0
  804. /package/dist/{chunk-CZK4EV3Y.js.map → chunk-V6EIPPMT.js.map} +0 -0
  805. /package/dist/{chunk-AFEFZ74T.js.map → chunk-VGUO2BQ7.js.map} +0 -0
  806. /package/dist/{chunk-CXEECHP5.js.map → chunk-VKWZPC73.js.map} +0 -0
  807. /package/dist/{chunk-PQVHRM4L.js.map → chunk-VQ5PDCAJ.js.map} +0 -0
  808. /package/dist/{chunk-HXRG7XYB.js.map → chunk-VQK3UKNA.js.map} +0 -0
  809. /package/dist/{chunk-XXFLJWTQ.js.map → chunk-WB5MHFHB.js.map} +0 -0
  810. /package/dist/{chunk-BG6GAROI.js.map → chunk-WK6CPMXR.js.map} +0 -0
  811. /package/dist/{chunk-DX23HAW7.js.map → chunk-WRYNE3Q4.js.map} +0 -0
  812. /package/dist/{chunk-2FWSNJEN.js.map → chunk-XA6LI63Y.js.map} +0 -0
  813. /package/dist/{chunk-TPSVPMAN.js.map → chunk-Y7Y6X6E5.js.map} +0 -0
  814. /package/dist/{chunk-L2NPLA43.js.map → chunk-YG57X4VD.js.map} +0 -0
  815. /package/dist/{chunk-2JIKMCJR.js.map → chunk-YPOIMSJR.js.map} +0 -0
  816. /package/dist/{chunk-MFR4WWDM.js.map → chunk-ZRLON6PP.js.map} +0 -0
  817. /package/dist/{chunk-L2WOLNZK.js.map → chunk-ZSNZPH6G.js.map} +0 -0
  818. /package/dist/{cohort-ATIZW34H.js.map → cohort-TPMJZ4OH.js.map} +0 -0
  819. /package/dist/{condition-SGJIDZNB.js.map → condition-QROUALBG.js.map} +0 -0
  820. /package/dist/{controls-JQCMGPXP.js.map → controls-GH37YWOP.js.map} +0 -0
  821. /package/dist/{controls.config-WQHVQAIJ.js.map → controls.config-ZYCDICYF.js.map} +0 -0
  822. /package/dist/{correlation-S3MN3L5Q.js.map → correlation-JESMUFS6.js.map} +0 -0
  823. /package/dist/{customdata.inputui-LGTGMJBZ.js.map → customdata.inputui-T2DLAZYJ.js.map} +0 -0
  824. /package/dist/{dataDownload-FAWN2WKE.js.map → dataDownload-Z7A6ZEH7.js.map} +0 -0
  825. /package/dist/{databrowser.ui-KF3LWQXG.js.map → databrowser.ui-ZVMGFYJ2.js.map} +0 -0
  826. /package/dist/{dictionary-EVLEOT72.js.map → dictionary-KXFUR3NL.js.map} +0 -0
  827. /package/dist/{dnaMethylation-J3SPEM4S.js.map → dnaMethylation-2YU2HDD4.js.map} +0 -0
  828. /package/dist/{dnaMethylation.integration.spec-CTA53YCT.js.map → dnaMethylation.integration.spec-75Y5RSDO.js.map} +0 -0
  829. /package/dist/{dofetch-3C3MI5NR.js.map → dofetch-G5ULIRMG.js.map} +0 -0
  830. /package/dist/{e2pca-PTWPY5WP.js.map → e2pca-75VDPO7P.js.map} +0 -0
  831. /package/dist/{expclust.gdc.spec-S5FE4MMD.js.map → expclust.gdc.spec-PB66FFWD.js.map} +0 -0
  832. /package/dist/{facet-FSOIZJCA.js.map → facet-2RY37EFR.js.map} +0 -0
  833. /package/dist/{gb-YDEOK7NW.js.map → gb-WQQFYFGF.js.map} +0 -0
  834. /package/dist/{geneExpClustering-37JKKFW3.js.map → geneExpClustering-ARVZDF6G.js.map} +0 -0
  835. /package/dist/{geneExpression-VQPRFNKE.js.map → geneExpression-FR33PKJW.js.map} +0 -0
  836. /package/dist/{geneExpression-G6ODP3VY.js.map → geneExpression-O7DR5SMR.js.map} +0 -0
  837. /package/dist/{geneExpression.unit.spec-ZHXCUG6Q.js.map → geneExpression.unit.spec-HGNDSTAI.js.map} +0 -0
  838. /package/dist/{geneORA-E3PSS3CI.js.map → geneORA-RXXQT44V.js.map} +0 -0
  839. /package/dist/{geneRanking-MK3YYINC.js.map → geneRanking-WDQZ7TI3.js.map} +0 -0
  840. /package/dist/{geneVariant-LEMAVFOY.js.map → geneVariant-6JYBWFEJ.js.map} +0 -0
  841. /package/dist/{geneVariant-NNSB7JLS.js.map → geneVariant-TKRG5VQN.js.map} +0 -0
  842. /package/dist/{geneVariant.integration.spec-6CC5UAOP.js.map → geneVariant.integration.spec-L2Q2DY67.js.map} +0 -0
  843. /package/dist/{genefusion.ui-5NCQIQPN.js.map → genefusion.ui-DBLMBU2D.js.map} +0 -0
  844. /package/dist/{geneset-ZX4V3CFB.js.map → geneset-2ZQF7FET.js.map} +0 -0
  845. /package/dist/{genomeBrowser.spec-J7ISXY6H.js.map → genomeBrowser.spec-E5RJD53Z.js.map} +0 -0
  846. /package/dist/{grin2-LBGBBB4L.js.map → grin2-MJ4SYAFO.js.map} +0 -0
  847. /package/dist/{grin2-GN3DQNON.js.map → grin2-VXRMV7VA.js.map} +0 -0
  848. /package/dist/{hierCluster-5JURTKAZ.js.map → hierCluster-44FPBMNL.js.map} +0 -0
  849. /package/dist/{hierCluster-BJ5VBPXR.js.map → hierCluster-SU4BDK6I.js.map} +0 -0
  850. /package/dist/{hierCluster.config-4EERP4KK.js.map → hierCluster.config-4OZ65GKH.js.map} +0 -0
  851. /package/dist/{hierCluster.integration.spec-VR4GULRV.js.map → hierCluster.integration.spec-CHNSKZD4.js.map} +0 -0
  852. /package/dist/{hierCluster.interactivity-SMTQOKUY.js.map → hierCluster.interactivity-M72CEGCW.js.map} +0 -0
  853. /package/dist/{hierCluster.renderers-PAME7BWU.js.map → hierCluster.renderers-RM43G7ZR.js.map} +0 -0
  854. /package/dist/{imagePlot-4LMIKBVE.js.map → imagePlot-UYMWFNI4.js.map} +0 -0
  855. /package/dist/{importPlot-3CG6ASNH.js.map → importPlot-W3HPE4LZ.js.map} +0 -0
  856. /package/dist/{isoformExpression-VCDNKTZ6.js.map → isoformExpression-JEMJE5WY.js.map} +0 -0
  857. /package/dist/{isoformExpression.unit.spec-ZXYY37TA.js.map → isoformExpression.unit.spec-GOK5LFME.js.map} +0 -0
  858. /package/dist/{jspdf.es.min-V7ONHJJV.js.map → jspdf.es.min-KB3HW45U.js.map} +0 -0
  859. /package/dist/{junction-5DXJO4PS.js.map → junction-2X4AS47T.js.map} +0 -0
  860. /package/dist/{junction.customTerm-UOPUSEOE.js.map → junction.customTerm-MVSIUY66.js.map} +0 -0
  861. /package/dist/{junction.unit.spec-F35E3GJW.js.map → junction.unit.spec-HA74XQYV.js.map} +0 -0
  862. /package/dist/{launch.adhoc-V2HTCQGD.js.map → launch.adhoc-PZAJ6J2S.js.map} +0 -0
  863. /package/dist/{leftlabel.sample-V7O2EC36.js.map → leftlabel.sample-7BZKFB3I.js.map} +0 -0
  864. /package/dist/{lollipop-RNRZLG64.js.map → lollipop-URSFH4ZE.js.map} +0 -0
  865. /package/dist/{maf-W6SF6BJS.js.map → maf-CM3ETF4N.js.map} +0 -0
  866. /package/dist/{maftimeline-NABCAMHG.js.map → maftimeline-CRQEUTRY.js.map} +0 -0
  867. /package/dist/{matrix-JC6AJT2N.js.map → matrix-IBWB4A3Z.js.map} +0 -0
  868. /package/dist/{matrix-UCHESWVK.js.map → matrix-SOBGWBTY.js.map} +0 -0
  869. /package/dist/{matrix.cells-B4L42TBM.js.map → matrix.cells-GSKC6FXI.js.map} +0 -0
  870. /package/dist/{matrix.config-6US3AAH7.js.map → matrix.config-4KU5X3LQ.js.map} +0 -0
  871. /package/dist/{matrix.data-FYFXYDA3.js.map → matrix.data-XC2OTBTR.js.map} +0 -0
  872. /package/dist/{matrix.groups-Y7DEG3GS.js.map → matrix.groups-THXKRQSD.js.map} +0 -0
  873. /package/dist/{matrix.integration.spec-KXX7SFX5.js.map → matrix.integration.spec-GKHH4RSR.js.map} +0 -0
  874. /package/dist/{matrix.interactivity-NHWG4WCC.js.map → matrix.interactivity-ITXMM2ZP.js.map} +0 -0
  875. /package/dist/{matrix.layout-5DQNT7DD.js.map → matrix.layout-D6SRLAXS.js.map} +0 -0
  876. /package/dist/{matrix.legend-OY7IF6AS.js.map → matrix.legend-OWQAMHI2.js.map} +0 -0
  877. /package/dist/{matrix.renderers-GYOXGHPU.js.map → matrix.renderers-J66OAQUZ.js.map} +0 -0
  878. /package/dist/{matrix.serieses-657TLDAV.js.map → matrix.serieses-P5I4E2NB.js.map} +0 -0
  879. /package/dist/{matrix.sort-IMA2ES3T.js.map → matrix.sort-CXBXF75N.js.map} +0 -0
  880. /package/dist/{matrix.sort.unit.spec-S6BAFYPR.js.map → matrix.sort.unit.spec-RSXBKXC5.js.map} +0 -0
  881. /package/dist/{matrix.sorterUi-77F36Q5H.js.map → matrix.sorterUi-WEZRKU63.js.map} +0 -0
  882. /package/dist/{matrix.sorterUi.unit.spec-V5NVQGD5.js.map → matrix.sorterUi.unit.spec-6EULDV43.js.map} +0 -0
  883. /package/dist/{matrix.unit.spec-R4NMTZYQ.js.map → matrix.unit.spec-D4ZLDVDT.js.map} +0 -0
  884. /package/dist/{mds.fimo-5DCH5BEM.js.map → mds.fimo-CQFREH3A.js.map} +0 -0
  885. /package/dist/{mds.samplescatterplot-VIBCS5M6.js.map → mds.samplescatterplot-XLJITURG.js.map} +0 -0
  886. /package/dist/{mds.survivalplot-AZ7LJDZZ.js.map → mds.survivalplot-MLRD27QP.js.map} +0 -0
  887. /package/dist/{multivalue-4QKGYYW2.js.map → multivalue-KJQCYBHA.js.map} +0 -0
  888. /package/dist/{numericDictTermCluster-GLLG6IK2.js.map → numericDictTermCluster-ZOU6R4XP.js.map} +0 -0
  889. /package/dist/{oncomatrix-R32ZPMX7.js.map → oncomatrix-4RHDDJDC.js.map} +0 -0
  890. /package/dist/{oncomatrix.spec-BMK6LMBS.js.map → oncomatrix.spec-JA6DT4PP.js.map} +0 -0
  891. /package/dist/{plot.2dvaf-46FT53MF.js.map → plot.2dvaf-VJWPWCOY.js.map} +0 -0
  892. /package/dist/{plot.app-7EE4YCV4.js.map → plot.app-JNEOGNVW.js.map} +0 -0
  893. /package/dist/{plot.barplot-FK4J2G7K.js.map → plot.barplot-YELRBXUB.js.map} +0 -0
  894. /package/dist/{plot.boxplot-ATY4LK3X.js.map → plot.boxplot-HNFOB3TV.js.map} +0 -0
  895. /package/dist/{plot.brainImaging-S7B547V4.js.map → plot.brainImaging-AZYEGF3U.js.map} +0 -0
  896. /package/dist/{plot.disco-K5MMC2GD.js.map → plot.disco-L6PGGZJI.js.map} +0 -0
  897. /package/dist/{plot.ssgq-B3OVMZFD.js.map → plot.ssgq-UM64SSXW.js.map} +0 -0
  898. /package/dist/{plot.vaf2cov-RBHDQULW.js.map → plot.vaf2cov-DKUKJRUP.js.map} +0 -0
  899. /package/dist/{polar2-GECELCTG.js.map → polar2-4YHPENAV.js.map} +0 -0
  900. /package/dist/{profileForms-2USYOA34.js.map → profileForms-KMECFO3K.js.map} +0 -0
  901. /package/dist/{profilePlot-YGD2CF6P.js.map → profilePlot-3AXSIXCK.js.map} +0 -0
  902. /package/dist/{proteinView-FCPWJLGU.js.map → proteinView-QWHOTL35.js.map} +0 -0
  903. /package/dist/{proteomeCohortCompare-TYYUF5A5.js.map → proteomeCohortCompare-DL2QLFL3.js.map} +0 -0
  904. /package/dist/{pseudbulk.unit.spec-UVVRP6NR.js.map → pseudbulk.unit.spec-IWR7EZ7O.js.map} +0 -0
  905. /package/dist/{pseudobulk-ZIN5VJGB.js.map → pseudobulk-IC525IZ2.js.map} +0 -0
  906. /package/dist/{qualitative-27BZGASV.js.map → qualitative-LK2QEYHU.js.map} +0 -0
  907. /package/dist/{qualitative-N4F6NITI.js.map → qualitative-YY4NQGO5.js.map} +0 -0
  908. /package/dist/{radar2-X465RPJX.js.map → radar2-TJUPENQF.js.map} +0 -0
  909. /package/dist/{radarFacility2-AE7BA62N.js.map → radarFacility2-Q7LBWLCV.js.map} +0 -0
  910. /package/dist/{rememberedGvQ.unit.spec-4PDIU5RY.js.map → rememberedGvQ.unit.spec-2GBLM5AO.js.map} +0 -0
  911. /package/dist/{render-TD2QWOHT.js.map → render-AHR6SCQX.js.map} +0 -0
  912. /package/dist/{report-3Y2OWDF7.js.map → report-BPHJTRTO.js.map} +0 -0
  913. /package/dist/{sampleView-BUMMYRHJ.js.map → sampleView-CS2FB3K3.js.map} +0 -0
  914. /package/dist/{samplelst-BWK53BLI.js.map → samplelst-A3DHKP6U.js.map} +0 -0
  915. /package/dist/{samplematrix-RQU43UYR.js.map → samplematrix-5X7MFT3G.js.map} +0 -0
  916. /package/dist/{sc-LCBFWCZZ.js.map → sc-RCYXZMN6.js.map} +0 -0
  917. /package/dist/{scatter-6S5I7OW3.js.map → scatter-2ITGMX5N.js.map} +0 -0
  918. /package/dist/{scatter-MJELX75N.js.map → scatter-OAL4YOCA.js.map} +0 -0
  919. /package/dist/{selectGenomeWithTklst-WAVXHXR5.js.map → selectGenomeWithTklst-PB5KDW2N.js.map} +0 -0
  920. /package/dist/{singleCellCellType-WMCAJ7JF.js.map → singleCellCellType-FEFNOHOP.js.map} +0 -0
  921. /package/dist/{singleCellCellType.unit.spec-4Z46ZT5Q.js.map → singleCellCellType.unit.spec-V2I32V23.js.map} +0 -0
  922. /package/dist/{singleCellGeneExpression-7Q5ZJT4R.js.map → singleCellGeneExpression-RUQQMKDE.js.map} +0 -0
  923. /package/dist/{singleCellGeneExpression.unit.spec-6C7PDGRH.js.map → singleCellGeneExpression.unit.spec-VCMJRMT7.js.map} +0 -0
  924. /package/dist/{singleCellNumericValue-QGYITZRC.js.map → singleCellNumericValue-JLXZQWNT.js.map} +0 -0
  925. /package/dist/{singleCellNumericValue.unit.spec-MQUKPEZJ.js.map → singleCellNumericValue.unit.spec-XVCZEN5K.js.map} +0 -0
  926. /package/dist/{singleCellPlot-JJMFJ2KQ.js.map → singleCellPlot-4EBYWOJ2.js.map} +0 -0
  927. /package/dist/{singlecell-J23S3JR2.js.map → singlecell-UKZJAYVH.js.map} +0 -0
  928. /package/dist/{singlecell-Y4OGUWEC.js.map → singlecell-VNRWPXGV.js.map} +0 -0
  929. /package/dist/{snp-IO6TKWGD.js.map → snp-2RJDJQZC.js.map} +0 -0
  930. /package/dist/{snp.unit.spec-X7ILEEPO.js.map → snp.unit.spec-Z4DNBFAH.js.map} +0 -0
  931. /package/dist/{snplocus-Z2NGIKMO.js.map → snplocus-OZLIZ7R7.js.map} +0 -0
  932. /package/dist/{snplst-XCS2FCQV.js.map → snplst-EVRJ4OCL.js.map} +0 -0
  933. /package/dist/{spliceevent.a53ss.diagram-F3S4BRVG.js.map → spliceevent.a53ss.diagram-N5UXX4OX.js.map} +0 -0
  934. /package/dist/{spliceevent.exonskip.diagram-AXCDJKH4.js.map → spliceevent.exonskip.diagram-WBNFLW4V.js.map} +0 -0
  935. /package/dist/{spliceevent.noeventdiagram-UK3X667E.js.map → spliceevent.noeventdiagram-EI72A6L3.js.map} +0 -0
  936. /package/dist/{ssGSEA-ZRPNQKJ5.js.map → ssGSEA-NONMMNF7.js.map} +0 -0
  937. /package/dist/{ssGSEA.unit.spec-DG5ZHLC7.js.map → ssGSEA.unit.spec-7JDPNLZA.js.map} +0 -0
  938. /package/dist/{stattable-XYSC3CYU.js.map → stattable-NNUHKPF4.js.map} +0 -0
  939. /package/dist/{studyCatalog-Y75LMI62.js.map → studyCatalog-KMLE7Q55.js.map} +0 -0
  940. /package/dist/{summarizeCnvGeneexp-H2NP7VLU.js.map → summarizeCnvGeneexp-AHCGPQLE.js.map} +0 -0
  941. /package/dist/{summarizeGeneexpSurvival-HTCD3VQQ.js.map → summarizeGeneexpSurvival-NCST7HDQ.js.map} +0 -0
  942. /package/dist/{summarizeMutationCnv-UEGXWK2P.js.map → summarizeMutationCnv-VUTQYXO6.js.map} +0 -0
  943. /package/dist/{summarizeMutationDiagnosis-MJGWP7IT.js.map → summarizeMutationDiagnosis-TFU2HUHQ.js.map} +0 -0
  944. /package/dist/{summarizeMutationSurvival-55JW5LA6.js.map → summarizeMutationSurvival-F4CJILS3.js.map} +0 -0
  945. /package/dist/{summary-HJO23RGB.js.map → summary-QQZW7BEE.js.map} +0 -0
  946. /package/dist/{summary.integration.spec-OWI2C2N5.js.map → summary.integration.spec-FILIPD3W.js.map} +0 -0
  947. /package/dist/{summaryInput-RL2JXRDE.js.map → summaryInput-RMY226Y3.js.map} +0 -0
  948. /package/dist/{sunburst-JFY6V5E2.js.map → sunburst-Y4LNCKMR.js.map} +0 -0
  949. /package/dist/{survival-PBBU6PA5.js.map → survival-4FYQHQHX.js.map} +0 -0
  950. /package/dist/{survival-6FLR4YCJ.js.map → survival-6GC267GY.js.map} +0 -0
  951. /package/dist/{survival.integration.spec-WAKTGYGP.js.map → survival.integration.spec-5ERXR6MG.js.map} +0 -0
  952. /package/dist/{svg2pdf.es.min-NIFE2BIE.js.map → svg2pdf.es.min-KKHWPFWG.js.map} +0 -0
  953. /package/dist/{svgraph-WD3DUZV7.js.map → svgraph-XIQIA7OJ.js.map} +0 -0
  954. /package/dist/{swimmer-VPKSBV6V.js.map → swimmer-643B5Q6F.js.map} +0 -0
  955. /package/dist/{table-GX3VJLPZ.js.map → table-JQIBRXTJ.js.map} +0 -0
  956. /package/dist/{termCollection-YQ332WKB.js.map → termCollection-LU5NW6KT.js.map} +0 -0
  957. /package/dist/{termCollection-QE7U5QBD.js.map → termCollection-XZCPBXRV.js.map} +0 -0
  958. /package/dist/{termCollection.unit.spec-ELLN7VRA.js.map → termCollection.unit.spec-H5LBV3N4.js.map} +0 -0
  959. /package/dist/{termCollectionFractionSelection-V3RP5KAT.js.map → termCollectionFractionSelection-3YHOFXEL.js.map} +0 -0
  960. /package/dist/{termCollectionFractionSelection.unit.spec-JR7Q7TJI.js.map → termCollectionFractionSelection.unit.spec-G5X3Y5YI.js.map} +0 -0
  961. /package/dist/{tk-J5VPFEX6.js.map → tk-NPWNBXLB.js.map} +0 -0
  962. /package/dist/{tk-GD2KJM5W.js.map → tk-YSW5NPW2.js.map} +0 -0
  963. /package/dist/{tvs.categorical-RPACB4VU.js.map → tvs.categorical-TUX6KRZI.js.map} +0 -0
  964. /package/dist/{tvs.condition-O6JBUM6D.js.map → tvs.condition-2CH25PLO.js.map} +0 -0
  965. /package/dist/{tvs.dt-5EVBSRX3.js.map → tvs.dt-YKP3F75O.js.map} +0 -0
  966. /package/dist/{tvs.dtcnv.categorical-Y5YHBZNC.js.map → tvs.dtcnv.categorical-QBJWJNHZ.js.map} +0 -0
  967. /package/dist/{tvs.dtcnv.continuous-WP322QUP.js.map → tvs.dtcnv.continuous-MV25OLBD.js.map} +0 -0
  968. /package/dist/{tvs.dtfusion-CCMUFDMQ.js.map → tvs.dtfusion-SJ64HNKE.js.map} +0 -0
  969. /package/dist/{tvs.dtitd-P3ED3MWA.js.map → tvs.dtitd-WQLHZK2P.js.map} +0 -0
  970. /package/dist/{tvs.dtsnvindel-X2MXPLC6.js.map → tvs.dtsnvindel-WMFJ7W7U.js.map} +0 -0
  971. /package/dist/{tvs.dtsv-4FOWFNVV.js.map → tvs.dtsv-GKEC5OGA.js.map} +0 -0
  972. /package/dist/{tvs.multivalue-IRF467ZK.js.map → tvs.multivalue-LFWMQETN.js.map} +0 -0
  973. /package/dist/{tvs.numeric-C7FDCGCS.js.map → tvs.numeric-63NVZG7U.js.map} +0 -0
  974. /package/dist/{tvs.samplelst-CBU6ATI5.js.map → tvs.samplelst-DEMMYRKK.js.map} +0 -0
  975. /package/dist/{tvs.survival-3K5ASAXV.js.map → tvs.survival-M4QUVP5L.js.map} +0 -0
  976. /package/dist/{tvs.termCollection-MXEWO6KJ.js.map → tvs.termCollection-J367GZY3.js.map} +0 -0
  977. /package/dist/{vocabulary-GQBHDP3K.js.map → vocabulary-RAVWS5IS.js.map} +0 -0
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/tp.classes.js", "../src/tp.gene.geneexpression.js", "../src/tp.gene.js", "../src/tp.pathway.js", "../src/hcmap.js", "../src/tp.e2pca.js", "../src/tp.ui.js"],
4
- "sourcesContent": ["import * as common from '#shared/common.js'\n\n/*\nlist mutation classes\n*/\n\nexport default function (cohort, button, folder) {\n\tlet nothing = true\n\tfor (const k in cohort.dsset) {\n\t\tnothing = false\n\t}\n\tif (nothing) {\n\t\tbutton.remove()\n\t\tfolder.remove()\n\t\treturn null\n\t}\n\n\tconst cbreakdown = new Map()\n\t/*\n\tmclass breakdown per ds\n\tk: dskey\n\tv: map\n\t k: mclass key\n\t v: case count\n\t*/\n\n\tlet totalcount = 0\n\t// sum of variants from all ds, to show on button\n\n\tfor (const dskey in cohort.dsset) {\n\t\tconst data = cohort.dsset[dskey].bulkdata\n\t\tif (!data) continue\n\n\t\tconst class2count = new Map()\n\t\t// class 2 count in this ds\n\t\t// k: class, v: count\n\n\t\t// need to count sv/fusion separately to avoid duplicating\n\t\tconst svstr = new Set()\n\t\tconst fusionstr = new Set()\n\n\t\tfor (const n in data) {\n\t\t\tfor (const m of data[n]) {\n\t\t\t\tconst c = m.class\n\t\t\t\tif (c == common.mclasssv) {\n\t\t\t\t\tsvstr.add((m.sample ? m.sample : '') + '.' + (m.sampletype ? m.sampletype : '') + JSON.stringify(m.pairlst))\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif (c == common.mclassfusionrna) {\n\t\t\t\t\tfusionstr.add(\n\t\t\t\t\t\t(m.sample ? m.sample : '') + '.' + (m.sampletype ? m.sampletype : '') + JSON.stringify(m.pairlst)\n\t\t\t\t\t)\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\t// not sv/fusion, add to total\n\t\t\t\ttotalcount++\n\n\t\t\t\tif (!class2count.has(c)) {\n\t\t\t\t\tclass2count.set(c, 0)\n\t\t\t\t}\n\t\t\t\tclass2count.set(c, class2count.get(c) + 1)\n\t\t\t}\n\t\t}\n\n\t\tif (svstr.size) {\n\t\t\tclass2count.set(common.mclasssv, svstr.size)\n\t\t\ttotalcount += svstr.size\n\t\t}\n\t\tif (fusionstr.size) {\n\t\t\tclass2count.set(common.mclassfusionrna, fusionstr.size)\n\t\t\ttotalcount += fusionstr.size\n\t\t}\n\t\tcbreakdown.set(dskey, class2count)\n\t}\n\n\tbutton\n\t\t.html(totalcount + ' <span style=\"font-size:.8em\">VARIANTS</span>')\n\t\t.attr('aria-label', 'A summary of variant hits from all genes, in descending order.')\n\tconst table = folder.append('table').style('margin-right', '20px')\n\tconst trup = table.append('tr')\n\tconst trdown = table.append('tr')\n\tconst showclst = (lst, holder, number) => {\n\t\tholder.selectAll('*').remove()\n\t\tfor (const i of lst) {\n\t\t\tconst d = holder.append('div').style('margin', '10px')\n\t\t\td.append('span')\n\t\t\t\t.attr('class', 'sja_mcdot')\n\t\t\t\t.style('background-color', i.color)\n\t\t\t\t.style('padding', '2px 5px')\n\t\t\t\t.style('margin-right', '5px')\n\t\t\t\t.html(number ? i.count : '&nbsp;&nbsp;')\n\t\t\td.append('span').style('color', i.color).text(i.label)\n\t\t}\n\t}\n\n\tconst ds2clst = {}\n\tfor (const [dskey, class2count] of cbreakdown) {\n\t\tconst lst = []\n\t\tfor (const [k, count] of class2count) {\n\t\t\tconst mc = common.mclass[k]\n\t\t\tif (\n\t\t\t\tmc.dt == common.dtsnvindel ||\n\t\t\t\tmc.dt == common.dtitd ||\n\t\t\t\tmc.dt == common.dtdel ||\n\t\t\t\tmc.dt == common.dtnloss ||\n\t\t\t\tmc.dt == common.dtcloss\n\t\t\t) {\n\t\t\t\tlst.push({\n\t\t\t\t\tkey: k,\n\t\t\t\t\tlabel: mc.label,\n\t\t\t\t\tcolor: mc.color,\n\t\t\t\t\tcount: count\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t\tlst.sort((a, b) => b.count - a.count)\n\n\t\t// hardcoded order for the following classes\n\t\tfor (const thisclass of [common.mclasscnvloss, common.mclasscnvgain, common.mclasssv, common.mclassfusionrna]) {\n\t\t\tif (class2count.has(thisclass)) {\n\t\t\t\tconst c = common.mclass[thisclass]\n\t\t\t\tlst.push({\n\t\t\t\t\tkey: thisclass,\n\t\t\t\t\tlabel: c.label,\n\t\t\t\t\tcolor: c.color,\n\t\t\t\t\tcount: class2count.get(thisclass)\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\n\t\tds2clst[dskey] = lst\n\n\t\tconst cholder = trdown.append('td').attr('valign', 'top').attr('shownumber', 0)\n\t\tshowclst(lst, cholder, true)\n\t\tconst td = trup\n\t\t\t.append('td')\n\t\t\t.style('border-bottom', 'solid 1px #ccc')\n\t\t\t.style('padding', '5px 10px')\n\t\t\t.style('color', '#858585')\n\t\t\t.style('font-size', '.8em')\n\t\t\t.text(cohort.dsset[dskey].label)\n\t\ttd.append('button')\n\t\t\t.style('margin', '5px')\n\t\t\t.text('Hide number')\n\t\t\t.on('click', event => {\n\t\t\t\tconst number = cholder.attr('shownumber') == '1'\n\t\t\t\tshowclst(lst, cholder, number)\n\t\t\t\tcholder.attr('shownumber', number ? '0' : '1')\n\t\t\t\tevent.target.innerHTML = number ? 'Hide number' : 'Show number'\n\t\t\t})\n\t}\n\treturn totalcount ? ds2clst : null\n}\n", "import * as client from './client'\n\n\n/*\nthis is only a quick fix\n\nplaces from tp that call blockinit()\n- tp.gene\n- tp.hm2.handlers\n\nin the context of pecan, when showing a study view for a disease cohort, blockinit() will show variants of a gene\nin this case, also need to show expression from Pediatric for this gene\n\nhowever: study view is not connected to the *Pediatric* official dataset, and the mutations from that cohort are stored on client\nthus need to explicitly indicate in the study config, that when launching blockinit() for a gene, need to query official ds to get gene data\n*/\n\n\n\n\nexport default function tp_getgeneexpression(arg) {\n\n/*\narg\n\t.x\n\t.y\n\t\tposition for pane\n\t.gene\n\t\tgene name\n\t.genome str\n\t.loadgeneexpressionfromofficialds\n\t.hostURL\n*/\n\n\nPromise.resolve()\n.then(()=>{\n\n\tif(!arg.gene) throw({message:'gene name missing'})\n\tif(!arg.genome) throw({message:'genome name missing'})\n\tif(arg.hostURL==undefined) throw({message:'no hostURL'})\n\tif(!arg.loadgeneexpressionfromofficialds) throw({message:'loadgeneexpressionfromofficialds missing'})\n\tif(!arg.loadgeneexpressionfromofficialds.dataset) throw({message:'dataset missing from loadgeneexpressionfromofficialds'})\n\tconst par={\n\t\tgenome:arg.genome,\n\t\tdsname:arg.loadgeneexpressionfromofficialds.dataset,\n\t\texpressiononly:1,\n\t\tgenename:arg.gene,\n\t\tjwt:arg.jwt\n\t}\n\treturn fetch( new Request(arg.hostURL+'/dsdata',{\n\t\tmethod:'POST',\n\t\tbody:JSON.stringify(par)\n\t}))\n\t.then(data=>{return data.json()})\n\t.then(data=>{\n\t\tif(data.error) throw({message:data.error})\n\t\tif(!data.data) throw({message:'cannot get data'})\n\t\treturn data.data\n\t})\n\n})\n\n.then(data=>{\n\n\tfor(let i=0; i<data.length; i++) {\n\t\tconst par={\n\t\t\tdata:data[i].lst,\n\t\t\texpp:data[i].config,\n\t\t\tgenename:arg.gene,\n\t\t\tpresize:{\n\t\t\t\tx:(arg.x+40*i),\n\t\t\t\ty:(arg.y+40*i),\n\t\t\t\twidth:350,\n\t\t\t\theight:650\n\t\t\t}\n\t\t}\n\t\timport('./ep').then(p=>{\n\t\t\tnew p.default(par)\n\t\t})\n\t}\n})\n\n.catch(err=>{\n\tconst pane = client.newpane({x:(arg.x || 600), y:(arg.y || 80)})\n\tpane.body.append('p').text('Error getting gene expression: '+err)\n})\n}\n", "import { select as d3select, selectAll as d3selectAll } from 'd3-selection'\nimport { json as d3json } from 'd3-fetch'\nimport * as client from './client'\nimport * as common from '#shared/common.js'\nimport blockinit from './block.init'\nimport tp_getgeneexpression from './tp.gene.geneexpression'\nimport { Menu } from '../dom/menu'\n\nconst tip = new Menu()\n\nexport default function (cohort, ds2clst, butt, folder, defaulthide, host) {\n\tif (!ds2clst) return null\n\tconst hostURL = host || ''\n\n\tconst union = {}\n\t// always contain all genes\n\t// k: gene name, v: { mcount:0, isoform:{} }\n\tlet genelst = []\n\t// mutable, build table according to its order\n\t// gene name only!\n\tfor (const k in cohort.dsset) {\n\t\tfor (const gn in cohort.dsset[k].bulkdata) {\n\t\t\tif (!(gn in union)) {\n\t\t\t\tunion[gn] = { mcount: 0, isoform: {} }\n\t\t\t\tgenelst.push(gn)\n\t\t\t}\n\t\t\tunion[gn].mcount += cohort.dsset[k].bulkdata[gn].length\n\t\t\tfor (const m of cohort.dsset[k].bulkdata[gn]) {\n\t\t\t\tconst i = m.isoform\n\t\t\t\tif (!i) continue\n\t\t\t\tunion[gn].isoform[i] = 1\n\t\t\t}\n\t\t}\n\t}\n\tlet genelimit = Math.min(100, genelst.length)\n\t// FIXME hardcoded\n\tconst noncodingclass = new Set(['Intron', 'P', 'S', 'E', common.mclassutr3, common.mclassutr5])\n\tconst gene2import = {}\n\tconst ds2import = {}\n\tlet usenoncoding = true,\n\t\t// k: isoform, v: {}\n\t\t// k: dsname, v: {stat}\n\t\t// k: dsname\n\t\timportsilent = false\n\n\tbutt\n\t\t.html(genelst.length + ' <span style=\"font-size:.8em\">GENES</span>')\n\t\t.attr('aria-label', 'A summary table of gene by variant type, order by number of hits in descending order.')\n\tconst errdiv = folder.append('div')\n\tconst sayerror = m => {\n\t\tclient.sayerror(errdiv, m)\n\t}\n\n\t// top row\n\tconst toprow = folder.append('div').style('margin-bottom', '8px')\n\ttoprow\n\t\t.append('button')\n\t\t.style('margin-right', '10px')\n\t\t.text('Configure')\n\t\t.on('click', () => {\n\t\t\tif (optiondiv.style('display') == 'block') {\n\t\t\t\tclient.disappear(optiondiv)\n\t\t\t} else {\n\t\t\t\tclient.appear(optiondiv)\n\t\t\t}\n\t\t})\n\n\ttoprow\n\t\t.append('button')\n\t\t.style('margin-right', '10px')\n\t\t.text('Download')\n\t\t.on('click', () => {\n\t\t\tconst txt = dotable()\n\t\t\tclient.export_data('Gene summary', [{ text: txt }])\n\t\t})\n\n\ttoprow\n\t\t.append('input')\n\t\t.attr('type', 'search')\n\t\t.attr('size', 10)\n\t\t.attr('placeholder', 'Find gene')\n\t\t.style('margin', '0px 20px 0px 5px')\n\t\t.on('keyup', event => {\n\t\t\tlet n = event.target.value\n\t\t\tif (n == '') {\n\t\t\t\ttip.hide()\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif (cohort.geneToUpper) {\n\t\t\t\tn = n.toUpperCase()\n\t\t\t}\n\t\t\tif (event.code == 'Enter') {\n\t\t\t\ttip.hide()\n\t\t\t\tevent.target.value = ''\n\t\t\t\tif (n in union) {\n\t\t\t\t\tpaintgene(n)\n\t\t\t\t}\n\t\t\t\treturn\n\t\t\t}\n\t\t\tconst hit = []\n\t\t\tfor (const gn in union) {\n\t\t\t\tif (gn.indexOf(n) == 0) {\n\t\t\t\t\thit.push({ name: gn, count: union[gn].mcount })\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (hit.length == 0) {\n\t\t\t\ttip.hide()\n\t\t\t\treturn\n\t\t\t}\n\t\t\thit.sort((a, b) => b.count - a.count)\n\t\t\ttip.clear().showunder(event.target)\n\t\t\tfor (let i = 0; i < Math.min(30, hit.length); i++) {\n\t\t\t\tconst n = hit[i].name\n\t\t\t\tconst row = tip.d\n\t\t\t\t\t.append('div')\n\t\t\t\t\t.attr('class', 'sja_menuoption_y')\n\t\t\t\t\t.on('click', () => {\n\t\t\t\t\t\tpaintgene(n)\n\t\t\t\t\t})\n\t\t\t\trow.append('span').text(n)\n\t\t\t\trow.append('span').style('font-size', '.7em').text(hit[i].count)\n\t\t\t}\n\t\t})\n\ttoprow\n\t\t.append('a')\n\t\t.attr('href', 'https://docs.google.com/document/d/1NrH1H-FUWJtEKLk69V-k8uaYHOr9YO2obM9ZLZslEQ0/edit?usp=sharing')\n\t\t.attr('target', '_blank')\n\t\t.text('Help')\n\tconst secondrow = folder.append('div').style('border', 'solid 1px #ccc').style('margin', '10px 0px')\n\tconst optiondiv = secondrow.append('div').style('display', 'none').style('background-color', '#f1f1f1')\n\tconst scrolltoppad = 140\n\tconst scrollholder = secondrow\n\t\t.append('div')\n\t\t.style('padding-top', scrolltoppad + 'px')\n\t\t.style('position', 'relative')\n\tconst scrolldiv = scrollholder\n\t\t.append('div')\n\t\t.style('overflow-y', 'scroll')\n\t\t.style('height', '400px')\n\t\t.style('resize', 'vertical')\n\tconst table = scrolldiv.append('table').style('border-spacing', '1px').style('border-collapse', 'separate')\n\n\t// options\n\tconst oprow1 = optiondiv.append('div').style('padding', '10px').style('border-bottom', 'dashed 1px #ccc')\n\tconst oprow2 = optiondiv.append('div').style('padding', '10px').style('border-bottom', 'dashed 1px #ccc')\n\tconst oprow3 = optiondiv.append('div').style('padding', '10px').style('border-bottom', 'dashed 1px #ccc')\n\t// option row1\n\tconst gcsays = oprow1\n\t\t.append('span')\n\t\t.style('padding-right', '10px')\n\t\t.text('Showing ' + (genelimit < genelst.length ? 'top ' + genelimit + ' genes' : 'all genes'))\n\toprow1\n\t\t.append('button')\n\t\t.text('more')\n\t\t.on('click', () => {\n\t\t\tgenelimit = Math.min(genelst.length, genelimit + 10)\n\t\t\tgcsays.text('Showing ' + (genelimit < genelst.length ? 'top ' + genelimit : 'all genes'))\n\t\t\tdotable()\n\t\t})\n\toprow1\n\t\t.append('button')\n\t\t.text('less')\n\t\t.on('click', () => {\n\t\t\tgenelimit = Math.max(1, genelimit - 10)\n\t\t\tgcsays.text('Showing ' + (genelimit < genelst.length ? 'top ' + genelimit : 'all genes'))\n\t\t\tdotable()\n\t\t})\n\t// option row2\n\toprow2.append('span').text('Show subset').style('padding-right', '10px')\n\tconst genesetta = oprow2\n\t\t.append('textarea')\n\t\t.attr('rows', 1)\n\t\t.attr('cols', 20)\n\t\t.attr('placeholder', 'enter gene names')\n\t\t.style('margin-right', '10px')\n\toprow2\n\t\t.append('button')\n\t\t.text('Submit')\n\t\t.on('click', () => {\n\t\t\tconst v = genesetta.property('value').trim()\n\t\t\tif (v == '') return\n\t\t\tconst lst = v.split(/[\\s\\t\\n]+/),\n\t\t\t\tgood = [],\n\t\t\t\tnomatch = []\n\t\t\tfor (const s of lst) {\n\t\t\t\tif (s == '') continue\n\t\t\t\tconst n = cohort.geneToUpper ? s.trim().toUpperCase() : s.trim()\n\t\t\t\tif (n in union) {\n\t\t\t\t\tgood.push(n)\n\t\t\t\t} else {\n\t\t\t\t\tnomatch.push(s)\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (nomatch.length) {\n\t\t\t\tsayerror('No match found for ' + nomatch.join(', '))\n\t\t\t}\n\t\t\tif (good.length == 0) return\n\t\t\tgenelst = good\n\t\t\tgenelimit = good.length\n\t\t\tdotable()\n\t\t})\n\toprow2\n\t\t.append('button')\n\t\t.text('Use default')\n\t\t.on('click', () => {\n\t\t\t// to default gene list\n\t\t\tgenelst = []\n\t\t\tfor (const n in union) {\n\t\t\t\tgenelst.push(n)\n\t\t\t}\n\t\t\tgenelimit = Math.min(100, genelst.length)\n\t\t\tdotable()\n\t\t})\n\t// option row3\n\toprow3.append('span').html('Noncoding mutation visibility:&nbsp;')\n\tconst oprow3select = oprow3.append('select').on('change', () => {\n\t\tusenoncoding = !usenoncoding\n\t\tfor (const dat of attrlst) {\n\t\t\tif (!dat.atlst) {\n\t\t\t\t// mutation class only in dataset\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tfor (const at of dat.atlst) {\n\t\t\t\tif (!at.ismclass) continue\n\t\t\t\tif (usenoncoding) {\n\t\t\t\t\tat.hide = false\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tat.hide = noncodingclass.has(at.key)\n\t\t\t}\n\t\t}\n\t\tdotable()\n\t})\n\toprow3select.append('option').text('show').attr('value', 'y')\n\toprow3select.append('option').text('hide').attr('value', 'n')\n\toprow3\n\t\t.append('p')\n\t\t.style('font-size', '.8em')\n\t\t.style('color', '#858585')\n\t\t.text('Including: silent, splice_region, exon, UTR, and intron.')\n\n\tconst hassamplelst = []\n\tfor (const k in cohort.dsset) {\n\t\tconst d = cohort.dsset[k]\n\t\tif (d.hassample) {\n\t\t\thassamplelst.push(d)\n\t\t}\n\t}\n\t// option row5\n\tif (hassamplelst.length) {\n\t\tconst oprow5 = optiondiv.append('div').style('padding', '10px').style('border-bottom', 'dashed 1px #ccc')\n\t\toprow5.append('span').html('Gene recurrence (# of samples for each gene):&nbsp;')\n\t\tfor (const ds of hassamplelst) {\n\t\t\toprow5\n\t\t\t\t.append('button')\n\t\t\t\t.text(hassamplelst.length == 1 ? 'show' : ds.label)\n\t\t\t\t.on('click', event => {\n\t\t\t\t\tconst bars = []\n\t\t\t\t\tfor (const gene of genelst) {\n\t\t\t\t\t\tconst hash = {}\n\t\t\t\t\t\tlet samplecount = 0\n\t\t\t\t\t\tif (gene in ds.bulkdata) {\n\t\t\t\t\t\t\tfor (const m of ds.bulkdata[gene]) {\n\t\t\t\t\t\t\t\tif (!usenoncoding && noncodingclass.has(m.class)) return\n\t\t\t\t\t\t\t\tif (!(m.sample in hash)) {\n\t\t\t\t\t\t\t\t\thash[m.sample] = 1\n\t\t\t\t\t\t\t\t\tsamplecount++\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\tbars.push({\n\t\t\t\t\t\t\tname: gene,\n\t\t\t\t\t\t\tsize: samplecount\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t\tconst pos = event.target.getBoundingClientRect()\n\t\t\t\t\tbarplot(bars, '#76B38C', 'Number of samples' + (usenoncoding ? '' : ', excluding noncoding mutations'), pos)\n\t\t\t\t})\n\t\t}\n\t\t// option row6\n\t\tconst oprow6 = optiondiv.append('div').style('padding', '10px').style('border-bottom', 'dashed 1px #ccc')\n\t\toprow6.append('span').html('Mutation burden (# mutations for each sample):&nbsp;')\n\t\tfor (const ds of hassamplelst) {\n\t\t\toprow6\n\t\t\t\t.append('button')\n\t\t\t\t.text(hassamplelst.length == 1 ? 'show' : ds.label)\n\t\t\t\t.on('click', event => {\n\t\t\t\t\tconst samplehash = {}\n\t\t\t\t\tfor (const g in ds.bulkdata) {\n\t\t\t\t\t\tfor (const m of ds.bulkdata[g]) {\n\t\t\t\t\t\t\tconst n = m.sample\n\t\t\t\t\t\t\tif (n) {\n\t\t\t\t\t\t\t\tif (!usenoncoding && noncodingclass.has(m.class)) continue\n\t\t\t\t\t\t\t\tif (!(n in samplehash)) {\n\t\t\t\t\t\t\t\t\tsamplehash[n] = 0\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tsamplehash[n]++\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\tconst bars = []\n\t\t\t\t\tfor (const n in samplehash) {\n\t\t\t\t\t\tbars.push({\n\t\t\t\t\t\t\tname: n,\n\t\t\t\t\t\t\tsize: samplehash[n]\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t\tconst pos = event.target.getBoundingClientRect()\n\t\t\t\t\tbarplot(bars, '#76B38C', 'Mutation burden' + (usenoncoding ? '' : ', excluding noncoding mutations'), pos)\n\t\t\t\t})\n\t\t}\n\t}\n\t// option row7\n\tconst oprow7 = optiondiv\n\t\t.append('div')\n\t\t.style('padding', '10px')\n\t\t.style('border-bottom', 'dashed 1px #ccc')\n\t\t.text('Click on a column header to rank genes.')\n\t// table columns\n\tconst attrlst = [\n\t\t{\n\t\t\tlabel: 'Name',\n\t\t\tisgenename: true\n\t\t}\n\t]\n\tlet firstsort = true\n\tlet dscount = 0\n\tfor (const dsname in cohort.dsset) {\n\t\tdscount++\n\t\tconst thisds = {\n\t\t\tname: cohort.dsset[dsname].label,\n\t\t\tatlst: [\n\t\t\t\t{\n\t\t\t\t\tlabel: '# mutation',\n\t\t\t\t\tget: gn => {\n\t\t\t\t\t\tif (!(gn in cohort.dsset[dsname].bulkdata)) return 0\n\t\t\t\t\t\tif (usenoncoding) {\n\t\t\t\t\t\t\treturn cohort.dsset[dsname].bulkdata[gn].length\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlet c = 0\n\t\t\t\t\t\tfor (const i of cohort.dsset[dsname].bulkdata[gn]) {\n\t\t\t\t\t\t\tif (!noncodingclass.has(i.class)) c++\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn c\n\t\t\t\t\t},\n\t\t\t\t\trotate: true,\n\t\t\t\t\tdescend: true,\n\t\t\t\t\tsort: firstsort\n\t\t\t\t\t//secondsort:true, // secondary, so to keep order persistant when sorting on classes with many genes having same number in sorted class\n\t\t\t\t}\n\t\t\t]\n\t\t}\n\t\tfirstsort = false\n\t\tif (cohort.dsset[dsname].hassample) {\n\t\t\tthisds.atlst.push({\n\t\t\t\tlabel: '# sample',\n\t\t\t\tget: gn => {\n\t\t\t\t\tif (!(gn in cohort.dsset[dsname].bulkdata)) return 0\n\t\t\t\t\tconst set = new Set()\n\t\t\t\t\tfor (const m of cohort.dsset[dsname].bulkdata[gn]) {\n\t\t\t\t\t\tif (!usenoncoding && noncodingclass.has(m.class)) continue\n\t\t\t\t\t\tif (!m.sample) continue\n\t\t\t\t\t\tset.add(m.sample)\n\t\t\t\t\t}\n\t\t\t\t\treturn set.size\n\t\t\t\t},\n\t\t\t\trotate: true,\n\t\t\t\tdescend: true\n\t\t\t})\n\t\t}\n\t\tfor (const c of ds2clst[dsname]) {\n\t\t\tc.ismclass = true\n\t\t\tc.get = gn => {\n\t\t\t\tif (!(gn in cohort.dsset[dsname].bulkdata)) return 0\n\t\t\t\tlet total = 0\n\t\t\t\tfor (const m of cohort.dsset[dsname].bulkdata[gn]) {\n\t\t\t\t\tif (m.class == c.key) total++\n\t\t\t\t}\n\t\t\t\treturn total\n\t\t\t}\n\t\t\tc.rotate = true\n\t\t\tc.descend = true\n\t\t\tthisds.atlst.push(c)\n\t\t}\n\t\tattrlst.push(thisds)\n\t}\n\n\tconst dotable = () => {\n\t\t// imported data won't be reflected in attrlst\n\t\tlet sortkey = null,\n\t\t\tsortkey2 = null\n\t\tfor (const a of attrlst) {\n\t\t\tif (a.hide) continue\n\t\t\tif (a.atlst) {\n\t\t\t\tfor (const b of a.atlst) {\n\t\t\t\t\tif (b.hide) continue\n\t\t\t\t\tif (b.sort) {\n\t\t\t\t\t\tsortkey = b\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\t\t\t\t\tif (b.secondsort) {\n\t\t\t\t\t\tsortkey2 = b\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif (a.sort) {\n\t\t\t\tsortkey = a\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif (a.secondsort) {\n\t\t\t\tsortkey2 = a\n\t\t\t}\n\t\t}\n\t\tif (sortkey) {\n\t\t\tgenelst.sort((a, b) => {\n\t\t\t\t// a/b is gene name\n\t\t\t\tif (sortkey.isgenename) {\n\t\t\t\t\t// no getter, directly sort on gene name\n\t\t\t\t\tif (a < b) {\n\t\t\t\t\t\treturn sortkey.descend ? 1 : -1\n\t\t\t\t\t}\n\t\t\t\t\treturn sortkey.descend ? -1 : 1\n\t\t\t\t}\n\t\t\t\tconst i = sortkey.get(a),\n\t\t\t\t\tj = sortkey.get(b)\n\t\t\t\tif (typeof i == 'string') {\n\t\t\t\t\tif (i < j) {\n\t\t\t\t\t\treturn sortkey.descend ? 1 : -1\n\t\t\t\t\t}\n\t\t\t\t\treturn sortkey.descend ? -1 : 1\n\t\t\t\t}\n\t\t\t\t// numeric\n\t\t\t\tif (i == j) {\n\t\t\t\t\tif (sortkey2) {\n\t\t\t\t\t\t// second sort is currently numerical only\n\t\t\t\t\t\tconst i2 = sortkey2.get(a),\n\t\t\t\t\t\t\tj2 = sortkey2.get(b)\n\t\t\t\t\t\tif (i2 == j2) {\n\t\t\t\t\t\t\t// get isoform for a and b so to look into import\n\t\t\t\t\t\t\tif (a in gene2import) {\n\t\t\t\t\t\t\t\tif (!(b in gene2import)) return -1\n\t\t\t\t\t\t\t} else if (b in gene2import) {\n\t\t\t\t\t\t\t\treturn 1\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn j2 - i2\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// get isoform for a and b so to look into import\n\t\t\t\t\t\tif (a in gene2import) {\n\t\t\t\t\t\t\tif (!(b in gene2import)) return -1\n\t\t\t\t\t\t} else if (b in gene2import) {\n\t\t\t\t\t\t\treturn 1\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t// last resort, alphabetic order\n\t\t\t\t\treturn a < b ? -1 : 1\n\t\t\t\t}\n\t\t\t\treturn sortkey.descend ? j - i : i - j\n\t\t\t})\n\t\t}\n\t\t// count how many classes at total in each imported\n\t\tconst importclass = {}\n\t\tlet hasimport = false\n\t\tfor (const dsname in ds2import) {\n\t\t\thasimport = true\n\t\t\tconst classcount = {}\n\t\t\tfor (let i = 0; i < genelimit; i++) {\n\t\t\t\tconst gene = genelst[i]\n\t\t\t\tif (gene in gene2import && dsname in gene2import[gene]) {\n\t\t\t\t\tfor (const c in gene2import[gene][dsname].class) {\n\t\t\t\t\t\tif (!(c in classcount)) {\n\t\t\t\t\t\t\tclasscount[c] = 0\n\t\t\t\t\t\t}\n\t\t\t\t\t\tclasscount[c] += gene2import[gene][dsname].class[c]\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst clst = []\n\t\t\tfor (const c in classcount) {\n\t\t\t\tclst.push({\n\t\t\t\t\tclass: c,\n\t\t\t\t\tn: classcount[c]\n\t\t\t\t})\n\t\t\t}\n\t\t\tclst.sort((a, b) => b.n - a.n)\n\t\t\timportclass[dsname] = clst\n\t\t}\n\t\tconst impspace = 'solid 10px white'\n\t\ttable.selectAll('*').remove()\n\t\t// tr 1, overspanning header\n\t\tconst tr1 = table.append('tr')\n\t\ttr1\n\t\t\t.append('td') // numeritor\n\t\t\t.style('height', '0px')\n\t\t\t.style('padding', '0px')\n\t\ttr1\n\t\t\t.append('td') // gene name\n\t\t\t.style('height', '0px')\n\t\t\t.style('padding', '0px')\n\t\tfor (const ds of attrlst) {\n\t\t\tif (!ds.atlst) continue\n\t\t\tlet spannum = 0\n\t\t\tfor (const a of ds.atlst) {\n\t\t\t\tif (!a.hide) spannum++\n\t\t\t}\n\t\t\ttr1\n\t\t\t\t.append('td')\n\t\t\t\t.attr('colspan', spannum)\n\t\t\t\t.style('text-align', 'center')\n\t\t\t\t.style('border-right', impspace)\n\t\t\t\t.append('div')\n\t\t\t\t.style('position', 'absolute')\n\t\t\t\t.style('top', '1px')\n\t\t\t\t.style('border-bottom', dscount > 1 ? 'solid 1px black' : '')\n\t\t\t\t.text(dscount > 1 ? ds.name : '')\n\t\t}\n\t\tfor (const dsname in ds2import) {\n\t\t\t// 2 stands for #m, and #sample\n\t\t\tconst td = tr1\n\t\t\t\t.append('td')\n\t\t\t\t.attr('colspan', 2 + importclass[dsname].length)\n\t\t\t\t.style('border-right', impspace)\n\t\t\t\t.append('div')\n\t\t\t\t.style('top', '2px')\n\t\t\t\t.style('position', 'absolute')\n\t\t\t\t.style('color', cohort.genome.datasets[dsname].color)\n\t\t\t\t.style('border-bottom', 'solid 1px ' + cohort.genome.datasets[dsname].color)\n\t\t\ttd.append('span').text(\n\t\t\t\tcohort.genome.datasets[dsname].label +\n\t\t\t\t\t(ds2import[dsname].totalsample ? ', ' + ds2import[dsname].totalsample + ' total samples' : '')\n\t\t\t)\n\t\t\ttd.append('div')\n\t\t\t\t.style('position', 'absolute')\n\t\t\t\t.style('right', '0px')\n\t\t\t\t.style('top', '-5px')\n\t\t\t\t.attr('class', 'sja_clb')\n\t\t\t\t.html('&#10005;')\n\t\t\t\t.on('click', () => {\n\t\t\t\t\tdelete ds2import[dsname]\n\t\t\t\t\tfor (const n in gene2import) {\n\t\t\t\t\t\tdelete gene2import[n][dsname]\n\t\t\t\t\t}\n\t\t\t\t\tdotable()\n\t\t\t\t})\n\t\t}\n\n\t\t// collect table matrix for export\n\t\tconst exportlines = []\n\n\t\tconst exportheader = []\n\n\t\t// tr 2, header\n\t\tconst tr2 = table.append('tr')\n\t\ttr2.append('td').style('height', '0px').style('padding', '0px')\n\n\t\t//exportheader.push('')\n\n\t\tfor (const a of attrlst) {\n\t\t\tif (a.hide) continue\n\t\t\tlet lst = []\n\t\t\tif (a.atlst) {\n\t\t\t\tlst = a.atlst\n\t\t\t} else {\n\t\t\t\tlst = [a]\n\t\t\t}\n\t\t\tlet td\n\t\t\tfor (const at of lst) {\n\t\t\t\tif (at.hide) continue\n\t\t\t\ttd = tr2\n\t\t\t\t\t.append('td')\n\t\t\t\t\t.attr('class', 'sja_clbtext')\n\t\t\t\t\t.style('font-size', '.8em')\n\t\t\t\t\t.style('height', '0px')\n\t\t\t\t\t.style('padding', '0px')\n\t\t\t\t\t.style('color', at.color ? at.color : 'black')\n\t\t\t\t\t.style('white-space', 'nowrap')\n\t\t\t\ttd.append('div')\n\t\t\t\t\t.html(\n\t\t\t\t\t\tat.rotate\n\t\t\t\t\t\t\t? at.sort\n\t\t\t\t\t\t\t\t? (at.descend ? '&#9664;' : '&#9654;') + ' ' + at.label\n\t\t\t\t\t\t\t\t: at.label\n\t\t\t\t\t\t\t: at.label + (at.sort ? ' ' + (at.descend ? '&#9662;' : '&#9652;') : '')\n\t\t\t\t\t)\n\t\t\t\t\t.style('position', 'absolute')\n\t\t\t\t\t.style('top', scrolltoppad - 25 + 'px')\n\t\t\t\t\t.style('transform', at.rotate ? 'translate(-3px,0px) rotate(-90deg)' : '')\n\t\t\t\t\t.style('width', at.rotate ? '25px' : 'auto')\n\t\t\t\t\t.on('click', () => {\n\t\t\t\t\t\tconst ps = at.sort\n\t\t\t\t\t\tfor (const a of attrlst) {\n\t\t\t\t\t\t\tif (a.atlst) {\n\t\t\t\t\t\t\t\tfor (const b of a.atlst) {\n\t\t\t\t\t\t\t\t\tb.sort = false\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\ta.sort = false\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tat.sort = true\n\t\t\t\t\t\tif (ps) {\n\t\t\t\t\t\t\tat.descend = !at.descend\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdotable()\n\t\t\t\t\t})\n\n\t\t\t\texportheader.push(at.label + (a.name ? '.' + a.name : ''))\n\t\t\t}\n\t\t\ttd.style('border-right', impspace)\n\t\t}\n\t\t// imported ds header items\n\t\tfor (const dsname in ds2import) {\n\t\t\t// # m count\n\t\t\ttr2\n\t\t\t\t.append('td')\n\t\t\t\t.style('font-size', '.8em')\n\t\t\t\t.style('height', '0px')\n\t\t\t\t.style('padding', '0px')\n\t\t\t\t.style('white-space', 'nowrap')\n\t\t\t\t.append('div')\n\t\t\t\t.html('# mutation')\n\t\t\t\t.style('position', 'absolute')\n\t\t\t\t.style('top', scrolltoppad - 25 + 'px')\n\t\t\t\t.style('transform', 'translate(-3px,0px) rotate(-90deg)')\n\t\t\t\t.style('width', '25px')\n\n\t\t\texportheader.push(dsname + '.#mutation')\n\n\t\t\t// # sample\n\t\t\ttr2\n\t\t\t\t.append('td')\n\t\t\t\t.style('font-size', '.8em')\n\t\t\t\t.style('height', '0px')\n\t\t\t\t.style('padding', '0px')\n\t\t\t\t.style('white-space', 'nowrap')\n\t\t\t\t.append('div')\n\t\t\t\t.html('# sample')\n\t\t\t\t.style('position', 'absolute')\n\t\t\t\t.style('top', scrolltoppad - 25 + 'px')\n\t\t\t\t.style('transform', 'translate(-3px,0px) rotate(-90deg)')\n\t\t\t\t.style('width', '25px')\n\n\t\t\texportheader.push(dsname + '.#sample')\n\n\t\t\tlet td\n\t\t\tfor (const cls of importclass[dsname]) {\n\t\t\t\ttd = tr2\n\t\t\t\t\t.append('td')\n\t\t\t\t\t.style('font-size', '80%')\n\t\t\t\t\t.style('overflow-y', 'hidden')\n\t\t\t\t\t.style('height', '0px')\n\t\t\t\t\t.style('padding', '0px')\n\t\t\t\t\t.style('color', common.mclass[cls.class].color)\n\t\t\t\t\t.style('white-space', 'nowrap')\n\t\t\t\ttd.append('div')\n\t\t\t\t\t.html(common.mclass[cls.class].label)\n\t\t\t\t\t.style('position', 'absolute')\n\t\t\t\t\t.style('top', scrolltoppad - 25 + 'px')\n\t\t\t\t\t.style('transform', 'translate(-3px,0px) rotate(-90deg)')\n\t\t\t\t\t.style('width', '25px')\n\n\t\t\t\texportheader.push(dsname + '.' + common.mclass[cls.class].label)\n\t\t\t}\n\t\t\tif (td) {\n\t\t\t\ttd.style('border-right', impspace)\n\t\t\t}\n\t\t}\n\n\t\texportlines.push(exportheader.join('\\t'))\n\n\t\tfor (let i = 0; i < genelimit; i++) {\n\t\t\tconst gene = genelst[i]\n\n\t\t\tconst exportline = [gene]\n\n\t\t\tconst tr = table.append('tr')\n\t\t\ttr.append('td')\n\t\t\t\t.text(i + 1)\n\t\t\t\t.style('font-size', '.7em')\n\t\t\t\t.style('text-align', 'right')\n\t\t\tfor (const at of attrlst) {\n\t\t\t\tif (at.hide) continue\n\t\t\t\tif (at.isgenename) {\n\t\t\t\t\ttr.append('td')\n\t\t\t\t\t\t.text(genelst[i])\n\t\t\t\t\t\t.attr('class', 'sja_menuoption_y')\n\t\t\t\t\t\t.style('color', 'black')\n\t\t\t\t\t\t.style('display', 'table-cell')\n\t\t\t\t\t\t.on('click', () => {\n\t\t\t\t\t\t\tpaintgene(genelst[i])\n\t\t\t\t\t\t})\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\t// no testing?\n\t\t\t\tlet td\n\t\t\t\tfor (const bt of at.atlst) {\n\t\t\t\t\tif (bt.hide) continue\n\t\t\t\t\ttd = tr.append('td').style('color', 'black').style('background-color', '#f1f1f1')\n\t\t\t\t\tconst m = bt.get(gene)\n\t\t\t\t\tif (typeof m == 'number') {\n\t\t\t\t\t\tif (bt.color) {\n\t\t\t\t\t\t\tif (m > 0) {\n\t\t\t\t\t\t\t\ttd.style('text-align', 'center')\n\t\t\t\t\t\t\t\t\t.append('span')\n\t\t\t\t\t\t\t\t\t.attr('class', 'sja_mcdot')\n\t\t\t\t\t\t\t\t\t.style('background-color', bt.color)\n\t\t\t\t\t\t\t\t\t.html(m > 1 ? m : '&nbsp;')\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\ttd.append('span').attr('class', 'sja_mcdot').style('margin', '0px 4px').html('&nbsp;')\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ttd.text(m)\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttd.text(m)\n\t\t\t\t\t}\n\n\t\t\t\t\texportline.push(m)\n\t\t\t\t}\n\t\t\t\ttd.style('border-right', impspace)\n\t\t\t}\n\t\t\tfor (const dsname in ds2import) {\n\t\t\t\tlet sample = 0,\n\t\t\t\t\ttotal = 0,\n\t\t\t\t\tclasssum = {},\n\t\t\t\t\tnotexist = true,\n\t\t\t\t\tpending = false\n\t\t\t\tif (gene in gene2import) {\n\t\t\t\t\tconst ipd = gene2import[gene][dsname]\n\t\t\t\t\tif (!ipd) continue\n\t\t\t\t\tnotexist = false\n\t\t\t\t\tif (ipd.pending) {\n\t\t\t\t\t\tpending = true\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\t\t\t\t\tsample += ipd.sample\n\t\t\t\t\ttotal += ipd.total\n\t\t\t\t\tfor (const c in ipd.class) {\n\t\t\t\t\t\tif (!(c in classsum)) {\n\t\t\t\t\t\t\tclasssum[c] = 0\n\t\t\t\t\t\t}\n\t\t\t\t\t\tclasssum[c] += ipd.class[c]\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (notexist) {\n\t\t\t\t\ttr.append('td').attr('colspan', 2 + importclass[dsname].length)\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif (pending) {\n\t\t\t\t\ttr.append('td')\n\t\t\t\t\t\t.attr('colspan', 2 + importclass[dsname].length)\n\t\t\t\t\t\t.text('loading ...')\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\ttr.append('td').text(total).style('background-color', '#f1f1f1')\n\n\t\t\t\texportline.push(total)\n\n\t\t\t\ttr.append('td').text(sample).style('background-color', '#f1f1f1')\n\n\t\t\t\texportline.push(sample)\n\n\t\t\t\tlet td\n\t\t\t\tfor (const cls of importclass[dsname]) {\n\t\t\t\t\ttd = tr.append('td').style('text-align', 'center').style('background-color', '#f1f1f1')\n\t\t\t\t\tconst _count = classsum[cls.class]\n\t\t\t\t\tif (_count) {\n\t\t\t\t\t\ttd.append('span')\n\t\t\t\t\t\t\t.attr('class', 'sja_mcdot')\n\t\t\t\t\t\t\t.style('background-color', common.mclass[cls.class].color)\n\t\t\t\t\t\t\t.html(_count > 1 ? _count : '&nbsp;')\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttd.append('span').attr('class', 'sja_mcdot').style('margin', '0px 4px').html('&nbsp;')\n\t\t\t\t\t}\n\n\t\t\t\t\texportline.push(_count)\n\t\t\t\t}\n\t\t\t\ttd.style('border-right', impspace)\n\t\t\t}\n\n\t\t\texportlines.push(exportline.join('\\t'))\n\t\t}\n\t\treturn exportlines.join('\\n')\n\t}\n\n\tdotable()\n\tfunction paintgene(gene) {\n\t\tif (!(gene in union)) return\n\t\ttip.hide()\n\t\tconst dslst = []\n\t\tfor (const k in cohort.dsset) {\n\t\t\tdslst.push(k)\n\t\t}\n\t\tlet pane\n\t\tfor (const isoform in union[gene].isoform) {\n\t\t\tif (!pane) {\n\t\t\t\tpane = client.newpane({ x: 100, y: 100 })\n\t\t\t}\n\t\t\tblockinit({\n\t\t\t\thostURL: hostURL,\n\t\t\t\tjwt: cohort.jwt,\n\t\t\t\tholder: pane.body,\n\t\t\t\tgenome: cohort.genome,\n\t\t\t\tquery: isoform,\n\t\t\t\tnopopup: true,\n\t\t\t\tdataset: dslst\n\t\t\t})\n\t\t}\n\n\t\tif (cohort.loadgeneexpressionfromofficialds) {\n\t\t\ttp_getgeneexpression({\n\t\t\t\tgene: gene,\n\t\t\t\tgenome: cohort.genome.name,\n\t\t\t\tloadgeneexpressionfromofficialds: cohort.loadgeneexpressionfromofficialds,\n\t\t\t\thostURL: cohort.hostURL,\n\t\t\t\tjwt: cohort.jwt,\n\t\t\t\tx: 1000,\n\t\t\t\ty: 80\n\t\t\t})\n\t\t}\n\t}\n}\n\nasync function barplot(bars, color, label, pos) {\n\tconst barplot = await import('./old/plot.barplot')\n\treturn barplot.default(bars, color, label, pos)\n}\n", "import { select as d3select, selectAll as d3selectAll, pointer } from 'd3-selection'\nimport { pie as d3pie, arc as d3arc } from 'd3-shape'\nimport { scaleLinear, scaleOrdinal } from 'd3-scale'\nimport { pack as d3pack, hierarchy as d3hierarchy } from 'd3-hierarchy'\nimport * as d3drag from 'd3-drag'\nimport * as d3force from 'd3-force'\nimport * as common from '#shared/common.js'\nimport * as client from './client'\nimport { Menu } from '../dom/menu'\n\nconst tip = new Menu()\n\nexport default function (cohort, folder) {\n\tconst dslst = []\n\tfor (const n in cohort.dsset) {\n\t\tconst ds = cohort.genome.datasets[n]\n\t\tif (!ds) {\n\t\t\tfolder.text('error: dataset not found by name ' + n)\n\t\t\treturn\n\t\t}\n\t\tdslst.push(ds)\n\t}\n\tconst config = {\n\t\tgeneToUpper: cohort.geneToUpper\n\t}\n\tif (cohort.diseasecolor) {\n\t\tconfig.diseasecolor = cohort.diseasecolor\n\t}\n\n\tif (cohort.genenetwork && cohort.genenetwork.list) {\n\t\t// pre-configured network\n\t\t// use only first dataset FIXME\n\t\tconst ds = dslst[0]\n\t\tfor (const network of cohort.genenetwork.list) {\n\t\t\tconst holder = folder\n\t\t\t\t.append('div')\n\t\t\t\t.style('display', 'inline-block')\n\t\t\t\t.style('margin', '10px')\n\t\t\t\t.style('border', 'solid 1px #ccc')\n\t\t\tholder\n\t\t\t\t.append('div')\n\t\t\t\t.style('background-color', '#f1f1f1')\n\t\t\t\t.style('padding', '5px 10px')\n\t\t\t\t.text(network.name || 'network.name is undefined')\n\t\t\tconst div = holder.append('div').style('margin', '10px')\n\t\t\tprepdata(ds, network, div, cohort)\n\t\t}\n\t\treturn\n\t}\n\tfor (const ds of dslst) {\n\t\tconst holder = folder.append('div').style('margin', '10px')\n\t\tif (dslst.length > 1) {\n\t\t\tholder.style('border', 'solid 1px #ccc')\n\t\t\tholder.append('div').style('padding', '5px').style('background-color', '#ededed').text(ds.label)\n\t\t}\n\t\tconst table = holder.append('table')\n\t\tconst tr = table.append('tr')\n\t\tconst td1 = tr.append('td').style('vertical-align', 'top')\n\t\tconst td2 = tr.append('td').style('vertical-align', 'top')\n\t\tconst row1 = td1.append('div').style('margin-bottom', '5px')\n\t\trow1\n\t\t\t.append('button')\n\t\t\t.text('Submit')\n\t\t\t.style('margin-right', '3px')\n\t\t\t.on('click', () => {\n\t\t\t\tprepdata_input(ds, input, td2, config)\n\t\t\t})\n\t\trow1\n\t\t\t.append('button')\n\t\t\t.text('Clear')\n\t\t\t.style('margin-right', '10px')\n\t\t\t.on('click', () => {\n\t\t\t\tinput.node().value = ''\n\t\t\t})\n\t\trow1\n\t\t\t.append('a')\n\t\t\t.text('Help')\n\t\t\t.attr('href', 'https://docs.google.com/document/d/1PAlu-bJMBuHRVpGhB_eVaOmlhhbWneC_94_7RRItuA8/edit?usp=sharing')\n\t\t\t.attr('target', '_blank')\n\t\tconst input = td1.append('textarea').attr('rows', 10).attr('cols', 20).attr('placeholder', 'enter pathway schema')\n\t}\n}\n\nfunction prepdata_input(ds, input, holder, config) {\n\tconst text = input.node().value\n\tif (text == '') return\n\tlet json\n\ttry {\n\t\tjson = JSON.parse(text)\n\t} catch (e) {\n\t\tholder.text('Invalid JSON')\n\t\tconsole.log(e)\n\t\treturn\n\t}\n\tprepdata(ds, json, holder, config)\n}\n\nfunction prepdata(ds, json, holder, config) {\n\tconst err = m => holder.html('<span style=\"color:red\">' + m + '</span>')\n\tif (!json.nodes) return err('.nodes missing')\n\tif (!Array.isArray(json.nodes)) return err('.nodes should be an array')\n\tif (json.nodes.length == 0) return err('no nodes')\n\tconst nodeid = new Map()\n\tfor (const node of json.nodes) {\n\t\tif (!node.id) return err('.id missing for node ' + JSON.stringify(node))\n\t\tif (nodeid.has(node.id)) return err('duplicating node id: ' + node.id)\n\t\tnodeid.set(node.id, 1)\n\t\tconst root = {\n\t\t\tname: node.name || 'nameless',\n\t\t\tchildren: [],\n\t\t\tnode: node // refer to force-laying node\n\t\t}\n\t\tif (node.gene) {\n\t\t\troot.children.push({\n\t\t\t\tgene: node.gene\n\t\t\t})\n\t\t} else if (node.geneset) {\n\t\t\t// recursive structure\n\t\t\troot.children = node.geneset\n\t\t}\n\t\tconst root2 = d3hierarchy(root)\n\t\tlet genecount = 0\n\t\tfor (const gene of root2.leaves()) {\n\t\t\tif (!gene.data.gene) return err('a gene has no gene name in node ' + JSON.stringify(node))\n\t\t\tgenecount++\n\t\t}\n\t\tif (genecount == 0) return err('no gene in node ' + JSON.stringify(node))\n\t\tdelete node.gene\n\t\tdelete node.geneset\n\t\tnode.root = root2\n\t}\n\tif (!json.links) return err('.links missing')\n\tif (!Array.isArray(json.links)) return err('.links should be an array')\n\tfor (const link of json.links) {\n\t\tif (!link.source) return err('.source missing from a link ' + JSON.stringify(link))\n\t\tif (!nodeid.has(link.source)) return err('invalid \"source\" node in link ' + JSON.stringify(link))\n\t\tif (!link.target) return err('.target missing from a link ' + JSON.stringify(link))\n\t\tif (!nodeid.has(link.target)) return err('invalid \"target\" node in link ' + JSON.stringify(link))\n\t}\n\tholder.text('')\n\tmakegraph(ds, json, holder, config)\n}\n\nfunction makegraph(ds, json, holder, config) {\n\tlet diseasecolor\n\tif (config.diseasecolor) {\n\t\tconst lst1 = [],\n\t\t\tlst2 = []\n\t\tfor (const n in config.diseasecolor) {\n\t\t\tlst1.push(n)\n\t\t\tlst2.push(config.diseasecolor[n])\n\t\t}\n\t\tdiseasecolor = scaleOrdinal().domain(lst1).range(lst2)\n\t} else {\n\t\tconsole.log('using hardcoded target color') //////////////////\n\t\t////////////////////\n\t\t/* hard coded diseases for pan-target study\n\n\t\t\t\"AML\":\"#dc5ce2\",\n\t\t\t\"NBL\":\"#ff1111\",\n\t\t\t\"TALL\":\"#ffa500\",\n\t\t\t\"BALL\":\"#1f78b4\",\n\t\t\t\"WT\":\"#3e8320\",\n\t\t\t\"OS\":\"#6a3d9a\"\n\t\t*/ diseasecolor = scaleOrdinal()\n\t\t\t.domain(['AML', 'NBL', 'TALL', 'BALL', 'WT', 'OS'])\n\t\t\t.range(['#dc5ce2', '#ff1111', '#ffa500', '#1f78b4', '#3e8320', '#6a3d9a'])\n\t}\n\t// getting data, mlst\n\tfor (const node of json.nodes) {\n\t\tfor (const gene of node.root.leaves()) {\n\t\t\tgene.datasize = 0\n\t\t\tconst genename = config.geneToUpper ? gene.data.gene.toUpperCase() : gene.data.gene\n\t\t\tconst mlst = ds.bulkdata[genename]\n\t\t\tif (mlst) {\n\t\t\t\tif (ds.hasdisease && ds.hassample) {\n\t\t\t\t\t// disease as pie\n\t\t\t\t\t// sample # as pie size\n\t\t\t\t\tconst sampleset = new Set()\n\t\t\t\t\tconst disease2sset = new Map()\n\t\t\t\t\tfor (const m of mlst) {\n\t\t\t\t\t\tif (!m.disease) continue\n\t\t\t\t\t\tif (!m.sample) continue\n\t\t\t\t\t\tsampleset.add(m.sample)\n\t\t\t\t\t\tif (!disease2sset.has(m.disease)) {\n\t\t\t\t\t\t\tdisease2sset.set(m.disease, new Set())\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdisease2sset.get(m.disease).add(m.sample)\n\t\t\t\t\t}\n\t\t\t\t\tconst piedata = []\n\t\t\t\t\tfor (const [diseasename, sset] of disease2sset) {\n\t\t\t\t\t\tpiedata.push({\n\t\t\t\t\t\t\tname: diseasename,\n\t\t\t\t\t\t\tcolor: diseasecolor(diseasename),\n\t\t\t\t\t\t\tsize: sset.size\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t\tgene.pie = d3pie().value(d => d.size)(piedata)\n\t\t\t\t\t// !!!! somehow the value must be set to gene.data\n\t\t\t\t\t// won't work if set to gene.value\n\t\t\t\t\tgene.datasize = sampleset.size\n\t\t\t\t} else if (ds.hassample) {\n\t\t\t\t\t// mclass as pie\n\t\t\t\t\t// sample # as pie size\n\t\t\t\t\tconst sampleset = new Map()\n\t\t\t\t\tconst mclass2sset = new Map()\n\t\t\t\t\tfor (const m of mlst) {\n\t\t\t\t\t\tif (!m.sample) continue\n\t\t\t\t\t\tif (!m.class) continue\n\t\t\t\t\t\tsampleset.set(m.sample, 1)\n\t\t\t\t\t\tif (!mclass2sset.has(m.class)) {\n\t\t\t\t\t\t\tmclass2sset.set(m.class, new Map())\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmclass2sset.get(m.class).set(m.sample, 1)\n\t\t\t\t\t}\n\t\t\t\t\tconst piedata = []\n\t\t\t\t\tfor (const [cls, sset] of mclass2sset.entries()) {\n\t\t\t\t\t\tpiedata.push({\n\t\t\t\t\t\t\tname: common.mclass[cls].label,\n\t\t\t\t\t\t\tcolor: common.mclass[cls].color,\n\t\t\t\t\t\t\tsize: sset.size\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t\tgene.pie = d3pie().value(d => d.size)(piedata)\n\t\t\t\t\t// !!!! somehow the value must be set to gene.data\n\t\t\t\t\t// won't work if set to gene.value\n\t\t\t\t\tgene.datasize = sampleset.size\n\t\t\t\t} else {\n\t\t\t\t\t// mclass as pie\n\t\t\t\t\tconst mclass2count = new Map()\n\t\t\t\t\tfor (const m of mlst) {\n\t\t\t\t\t\tif (!m.class) continue\n\t\t\t\t\t\tif (!mclas2count.has(m.class)) {\n\t\t\t\t\t\t\tmclass2count.set(m.class, 0)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmclass2count.set(m.class, mclass2count.get(m.class) + 1)\n\t\t\t\t\t}\n\t\t\t\t\tconst piedata = []\n\t\t\t\t\tfor (const [cls, size] of mclass2count.entries()) {\n\t\t\t\t\t\tpiedata.push({\n\t\t\t\t\t\t\tname: common.mclass[cls].label,\n\t\t\t\t\t\t\tcolor: common.mclass[cls].color,\n\t\t\t\t\t\t\tsize: size\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t\tgene.pie = d3pie().value(d => d.size)(piedata)\n\t\t\t\t\tgene.datasize = mlst.length\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t// gene value for deciding pie radius\n\tlet minvalue = 9999,\n\t\tmaxvalue = 0\n\tfor (const node of json.nodes) {\n\t\tfor (const d of node.root.leaves()) {\n\t\t\tif (d.datasize) {\n\t\t\t\tminvalue = Math.min(minvalue, d.datasize)\n\t\t\t\tmaxvalue = Math.max(maxvalue, d.datasize)\n\t\t\t}\n\t\t}\n\t}\n\tconst value2pieradius = scaleLinear().domain([minvalue, maxvalue])\n\n\tholder\n\t\t.append('div')\n\t\t.append('button')\n\t\t.text('Snapshot')\n\t\t.on('click', () => {\n\t\t\tclient.to_svg(svg.node(), 'pathway')\n\t\t})\n\tconst svg = holder.append('svg')\n\t/*\n\tconst resize=svg.append('text')\n\t\t.text('drag to resize')\n\t\t.attr('class','sja_clbtext')\n\t\t.attr('text-anchor','end')\n\t\t.attr('font-size',12)\n\t\t.attr('font-family',client.font)\n\t\t.attr('fill','black')\n\t\t.on('mousedown',(event)=>{\n\t\t\tevent.preventDefault()\n\t\t\tconst x0=event.clientX\n\t\t\tconst y0=event.clientY\n\t\t\tconst body=d3select(document.body)\n\t\t\tconst width0=width, height0=height\n\t\t\tbody.on('mousemove',()=>{\n\t\t\t\twidth=width0+event.clientX-x0\n\t\t\t\theight=height0+event.clientY-y0\n\t\t\t\trender(true)\n\t\t\t})\n\t\t\tbody.on('mouseup',()=>{\n\t\t\t\tbody.on('mousemove',null).on('mouseup',null)\n\t\t\t})\n\t\t})\n\t\t*/\n\n\tconst defs = svg.append('svg:defs')\n\tdefs\n\t\t.append('svg:marker')\n\t\t.attr('id', 'arrowactivate')\n\t\t.attr('viewBox', '0 -5 10 10')\n\t\t.attr('refX', 9)\n\t\t.attr('refY', 0)\n\t\t.attr('markerWidth', 6)\n\t\t.attr('markerHeight', 6)\n\t\t.attr('orient', 'auto')\n\t\t.append('svg:path')\n\t\t.attr('d', 'M0,-5L10,0L0,5')\n\tdefs\n\t\t.append('svg:marker')\n\t\t.attr('id', 'arrowinhibit')\n\t\t.attr('viewBox', '0 -5 10 10')\n\t\t.attr('refX', 2)\n\t\t.attr('refY', 0)\n\t\t.attr('markerWidth', 6)\n\t\t.attr('markerHeight', 6)\n\t\t.attr('orient', 'auto')\n\t\t.append('rect')\n\t\t.attr('y', -5)\n\t\t.attr('width', 2)\n\t\t.attr('height', 10)\n\t\t.attr('fill', 'red')\n\n\tconst legend = svg.append('g')\n\n\t// link lines\n\tconst linkg = svg.selectAll().data(json.links).enter().append('line')\n\tlinkg\n\t\t.attr('stroke', d => (d.inhibit ? 'red' : 'black'))\n\t\t.attr('stroke-width', '2')\n\t\t.attr('marker-end', d => (d.inhibit ? 'url(#arrowinhibit)' : 'url(#arrowactivate)'))\n\n\t// force nodes\n\tconst node1g = svg\n\t\t.selectAll()\n\t\t.data(json.nodes)\n\t\t.enter()\n\t\t.append('g')\n\t\t.each(function (d) {\n\t\t\td.nodeg = this\n\t\t})\n\n\t// pack nodes\n\tfor (const node of json.nodes) {\n\t\t// all elements are relative to node1g, position defined by render(packing())\n\t\tnode.pack = {}\n\t\tnode.pack.gs = d3select(node.nodeg).selectAll().data(node.root.descendants()).enter().append('g')\n\t\tnode.pack.circle = node.pack.gs.append('circle').attr('fill', d => {\n\t\t\tif (!d.parent) {\n\t\t\t\t// root\n\t\t\t\tif (d.children.length == 1) {\n\t\t\t\t\t// this removes gray circle background for nodes with a single gene\n\t\t\t\t\treturn 'none'\n\t\t\t\t}\n\t\t\t\treturn '#ededed'\n\t\t\t}\n\t\t\tif (!d.children) {\n\t\t\t\t// leaf\n\t\t\t\treturn 'none'\n\t\t\t}\n\t\t\treturn 'none'\n\t\t})\n\t\t/*\n\t\t\tno border\n\n\t\t\t.attr('stroke',d=>{\n\t\t\t\tif(!d.parent) {\n\t\t\t\t\treturn 'none'\n\t\t\t\t}\n\t\t\t\treturn '#ccc'\n\t\t\t})\n\t\t\t*/\n\n\t\tnode.pack.pie = node.pack.gs\n\t\t\t.filter(d => !d.children && d.pie)\n\t\t\t.selectAll()\n\t\t\t.data(d => d.pie)\n\t\t\t.enter()\n\t\t\t.append('path')\n\t\t\t.attr('fill', d => d.data.color)\n\t}\n\tfor (const node of json.nodes) {\n\t\t// put label on top of all circles and pies\n\t\tnode.pack.gs\n\t\t\t.filter(d => !d.children)\n\t\t\t.each(d => {\n\t\t\t\td.textlabel = d3select(node.nodeg)\n\t\t\t\t\t.append('text')\n\t\t\t\t\t.attr('class', 'sja_clbtext')\n\t\t\t\t\t.text(d.data.gene)\n\t\t\t\t\t.attr('font-family', client.font)\n\t\t\t\t\t.attr('text-anchor', 'middle')\n\t\t\t\t\t//.attr('dominant-baseline','central')\n\t\t\t\t\t.attr('fill', 'black')\n\t\t\t\t\t.call(d3drag.drag().on('start', dragstarted).on('drag', dragged).on('end', dragended))\n\t\t\t\t\t.on('mouseover', event => {\n\t\t\t\t\t\ttip.clear().show(event.clientX + 20, event.clientY + 20)\n\t\t\t\t\t\tconst div = tip.d\n\t\t\t\t\t\tdiv.append('div').text(d.data.gene).style('font-weight', 'bold').style('margin', '10px')\n\t\t\t\t\t\tconst p = div.append('div').style('margin', '10px')\n\t\t\t\t\t\tif (d.datasize) {\n\t\t\t\t\t\t\tp.text('In ' + d.datasize + ' sample' + (d.datasize > 1 ? 's' : ''))\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tp.text('No sample')\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (d.pie) {\n\t\t\t\t\t\t\tconst p = div.append('div').style('margin', '10px')\n\t\t\t\t\t\t\td.pie.sort((a, b) => b.data.size - a.data.size)\n\t\t\t\t\t\t\tfor (const pie of d.pie) {\n\t\t\t\t\t\t\t\tp.append('div')\n\t\t\t\t\t\t\t\t\t.style('margin', '3px 0px')\n\t\t\t\t\t\t\t\t\t.html(\n\t\t\t\t\t\t\t\t\t\t'<span style=\"background-color:' +\n\t\t\t\t\t\t\t\t\t\t\tpie.data.color +\n\t\t\t\t\t\t\t\t\t\t\t'\">&nbsp;&nbsp;&nbsp;</span> ' +\n\t\t\t\t\t\t\t\t\t\t\tpie.data.name +\n\t\t\t\t\t\t\t\t\t\t\t' ' +\n\t\t\t\t\t\t\t\t\t\t\tpie.data.size\n\t\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\t.on('mouseout', () => {\n\t\t\t\t\t\ttip.hide()\n\t\t\t\t\t})\n\t\t\t})\n\t}\n\n\tlet width = 800,\n\t\theight = 800\n\n\tconst simulation = d3force\n\t\t.forceSimulation(json.nodes)\n\t\t.force(\n\t\t\t'link',\n\t\t\td3force\n\t\t\t\t.forceLink()\n\t\t\t\t.id(d => d.id)\n\t\t\t\t.links(json.links)\n\t\t\t//.distance(50)\n\t\t\t//.strength(1)\n\t\t)\n\t\t.force(\n\t\t\t'charge',\n\t\t\td3force.forceManyBody().strength(() => -1000)\n\t\t\t//.distanceMax(100)\n\t\t)\n\t\t.force('x', d3force.forceX())\n\t\t.force('y', d3force.forceY())\n\t\t.alphaDecay(0.1)\n\t//.velocityDecay(.8)\n\t//.on('end',()=>simuend())\n\n\trender()\n\t//window.json=json\n\n\tfunction render(restart) {\n\t\tconst wh = Math.min(width, height)\n\t\tconst pieminr = Math.min(5, wh / 50)\n\t\tconst piemaxr = Math.min(50, wh / 20)\n\n\t\tvalue2pieradius.range([Math.pow(pieminr, 2), Math.pow(piemaxr, 2)])\n\t\tfor (const node of json.nodes) {\n\t\t\tfor (const gene of node.root.leaves()) {\n\t\t\t\tif (gene.datasize) {\n\t\t\t\t\tgene.pieradius = Math.sqrt(value2pieradius(gene.datasize))\n\t\t\t\t} else {\n\t\t\t\t\tgene.pieradius = 0\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst fontsize = Math.min(20, wh / 40)\n\t\tconst maxtextwidth = piemaxr * 1.5\n\n\t\t// leaf labels\n\t\tfor (const node of json.nodes) {\n\t\t\tnode.pack.gs\n\t\t\t\t.filter(d => !d.children)\n\t\t\t\t.each(d => {\n\t\t\t\t\td.textlabel\n\t\t\t\t\t\t.attr('font-size', fontsize)\n\t\t\t\t\t\t.each(function () {\n\t\t\t\t\t\t\tlet labelwidth = this.getBBox().width\n\t\t\t\t\t\t\tif (labelwidth > maxtextwidth) {\n\t\t\t\t\t\t\t\tlabelwidth = maxtextwidth\n\t\t\t\t\t\t\t\t//this.setAttribute('font-size',1)\n\t\t\t\t\t\t\t\tthis.setAttribute('font-size', maxtextwidth / this.getBBox().width)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tthis.setAttribute('font-size', 17) // XXX\n\t\t\t\t\t\t\td.data.value = Math.max(labelwidth / 2, d.pieradius)\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.attr('dominant-baseline', () => {\n\t\t\t\t\t\t\tif (d.pieradius == 0) {\n\t\t\t\t\t\t\t\t// empty, no pie\n\t\t\t\t\t\t\t\treturn 'central'\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn 'hanging'\n\t\t\t\t\t\t})\n\t\t\t\t\t// will set text y position in ticked()\n\t\t\t\t})\n\t\t}\n\n\t\tfor (const node of json.nodes) {\n\t\t\tnode.root.sum(d => d.value)\n\t\t\td3pack().radius(d => d.data.value)(node.root)\n\t\t\tnode.pack.circle\n\t\t\t\t.attr('r', d => d.r)\n\t\t\t\t.filter(d => !d.children && d.pie)\n\t\t\t\t.each(d => {\n\t\t\t\t\tfor (const pie of d.pie) pie.data.r = d.pieradius\n\t\t\t\t})\n\t\t\tnode.pack.pie.attr('d', d => {\n\t\t\t\treturn d3arc()({ innerRadius: 0, outerRadius: d.data.r, startAngle: d.startAngle, endAngle: d.endAngle })\n\t\t\t})\n\t\t}\n\t\tsimulation.force('center', d3force.forceCenter(width / 2, height / 2)).force(\n\t\t\t'collision',\n\t\t\td3force\n\t\t\t\t.forceCollide()\n\t\t\t\t.radius(d => {\n\t\t\t\t\treturn d.root.r + Math.max(20, d.root.r * 0.3)\n\t\t\t\t})\n\t\t\t\t.strength(0.9)\n\t\t)\n\t\tsimulation.on('tick', simuend)\n\t\tsvg.attr('width', width).attr('height', height)\n\t\t//resize.attr('x',width-2).attr('y',height-4)\n\t\tlegend.selectAll('*').remove()\n\t\tlet y = 0,\n\t\t\tpad = 3\n\t\tlegend\n\t\t\t.append('text')\n\t\t\t.attr('font-size', fontsize)\n\t\t\t.attr('font-family', client.font)\n\t\t\t.attr('y', fontsize)\n\t\t\t.text('Sample number')\n\t\ty += fontsize + pad\n\t\tlegend\n\t\t\t.append('circle')\n\t\t\t.attr('cx', pieminr)\n\t\t\t.attr('cy', y + pieminr)\n\t\t\t.attr('r', pieminr)\n\t\t\t.attr('fill', '#ccc')\n\t\tlegend\n\t\t\t.append('text')\n\t\t\t.attr('x', pieminr * 2 + pad)\n\t\t\t.attr('font-size', fontsize)\n\t\t\t.attr('font-family', client.font)\n\t\t\t.attr('y', y + pieminr)\n\t\t\t.attr('dominant-baseline', 'central')\n\t\t\t.text(minvalue)\n\t\ty += Math.max(fontsize, pieminr * 2) + pad\n\t\tlegend\n\t\t\t.append('circle')\n\t\t\t.attr('cx', piemaxr)\n\t\t\t.attr('cy', y + piemaxr)\n\t\t\t.attr('r', piemaxr)\n\t\t\t.attr('fill', '#ccc')\n\t\tlegend\n\t\t\t.append('text')\n\t\t\t.attr('x', piemaxr * 2 + pad)\n\t\t\t.attr('font-size', fontsize)\n\t\t\t.attr('font-family', client.font)\n\t\t\t.attr('y', y + piemaxr)\n\t\t\t.attr('dominant-baseline', 'central')\n\t\t\t.text(maxvalue)\n\t\ty += Math.max(fontsize, piemaxr * 2) + pad\n\t\tif (ds.hasdisease) {\n\t\t\tfor (const diseasename of diseasecolor.domain()) {\n\t\t\t\tlegend\n\t\t\t\t\t.append('circle')\n\t\t\t\t\t.attr('cx', fontsize)\n\t\t\t\t\t.attr('cy', y + fontsize / 2)\n\t\t\t\t\t.attr('r', fontsize / 2)\n\t\t\t\t\t.attr('fill', diseasecolor(diseasename))\n\t\t\t\tlegend\n\t\t\t\t\t.append('text')\n\t\t\t\t\t.attr('x', fontsize * 2 + pad)\n\t\t\t\t\t.attr('font-size', fontsize)\n\t\t\t\t\t.attr('font-family', client.font)\n\t\t\t\t\t.attr('y', y + fontsize / 2)\n\t\t\t\t\t.attr('dominant-baseline', 'central')\n\t\t\t\t\t.text(diseasename)\n\t\t\t\ty += fontsize + pad\n\t\t\t}\n\t\t}\n\n\t\tif (restart) {\n\t\t\tsimulation.restart()\n\t\t}\n\t}\n\n\tfunction ticked() {\n\t\tlinkg\n\t\t\t.each(d => (d.linelen = Math.sqrt(Math.pow(d.source.x - d.target.x, 2) + Math.pow(d.source.y - d.target.y, 2))))\n\t\t\t.attr('x1', d => {\n\t\t\t\tconst r = d.source.root.r\n\t\t\t\treturn d.source.x + ((d.target.x - d.source.x) * r) / d.linelen\n\t\t\t})\n\t\t\t.attr('y1', d => {\n\t\t\t\tconst r = d.source.root.r\n\t\t\t\treturn d.source.y + ((d.target.y - d.source.y) * r) / d.linelen\n\t\t\t})\n\t\t\t.attr('x2', d => {\n\t\t\t\tconst r = d.target.root.r\n\t\t\t\treturn d.source.x + ((d.target.x - d.source.x) * (d.linelen - r - 5)) / d.linelen\n\t\t\t})\n\t\t\t.attr('y2', d => {\n\t\t\t\tconst r = d.target.root.r\n\t\t\t\treturn d.source.y + ((d.target.y - d.source.y) * (d.linelen - r - 5)) / d.linelen\n\t\t\t})\n\t\t//node1g.attr('transform',d=>'translate('+(d.x-d.root.r)+','+(d.y-d.root.r)+')')\n\t\tnode1g.attr('transform', d => 'translate(' + d.x + ',' + d.y + ')')\n\t\tfor (const node of json.nodes) {\n\t\t\tnode.pack.gs.attr('transform', d => 'translate(' + d.x + ',' + d.y + ')')\n\t\t\t// adjust gene label position\n\t\t\t// gene labels were attached to node.pack.gs\n\t\t\t// must be shifted by d.x d.y\n\t\t\tnode.pack.gs\n\t\t\t\t.filter(d => !d.children)\n\t\t\t\t.each(d => {\n\t\t\t\t\td.textlabel.attr('x', d.x).attr('y', d.y + d.pieradius)\n\t\t\t\t})\n\t\t}\n\t}\n\n\tfunction dragstarted(event, d) {\n\t\t/*\n\t\tconst lst=d.ancestors()\n\t\td=lst[lst.length-1].data.node\n\t\t*/\n\t\tif (!event.active) simulation.alphaTarget(0.1).restart()\n\t\td.fx = d.x\n\t\td.fy = d.y\n\t}\n\tfunction dragged(event, d) {\n\t\t/*\n\t\tconst lst=d.ancestors()\n\t\td=lst[lst.length-1].data.node\n\t\t*/\n\t\tconst p = pointer(event, this)\n\t\td.fx = p[0]\n\t\td.fy = p[1]\n\t}\n\tfunction dragended(event, d) {\n\t\tif (!event.active) simulation.alphaTarget(0)\n\t\t/*\n\t\tconst lst=d.ancestors()\n\t\td=lst[lst.length-1].data.node\n\t\t*/\n\t\td.fx = null\n\t\td.fy = null\n\t}\n\tfunction simuend() {\n\t\tlet x1 = 0,\n\t\t\ty1 = 0,\n\t\t\tx2 = 0,\n\t\t\ty2 = 0\n\t\tfor (const node of json.nodes) {\n\t\t\tx1 = Math.min(x1, node.x - node.root.r)\n\t\t\ty1 = Math.min(y1, node.y - node.root.r)\n\t\t\tx2 = Math.max(x2, node.x + node.root.r - width)\n\t\t\ty2 = Math.max(y2, node.y + node.root.r - height)\n\t\t}\n\t\twidth = width - x1 + x2\n\t\theight = height - y1 + y2\n\t\tfor (const node of json.nodes) {\n\t\t\tnode.x -= x1\n\t\t\tnode.y -= y1\n\t\t}\n\t\tsimulation\n\t\t\t.force('center')\n\t\t\t.x(width / 2)\n\t\t\t.y(height / 2)\n\t\tsvg.attr('width', width).attr('height', height)\n\t\tticked()\n\t}\n}\n", "import * as client from './client'\n\n\n\n\nexport default function inithcmap(hm,holder)\n{\nconst err=m=>{\n\tclient.sayerror(holder,m)\n}\nif(!hm.metadata) return err('no metadata')\nconst mdh=hm.metadata\nconst legendholder=holder.append('div').style('display','inline-block').style('border','solid 1px #ccc').style('margin','20px').style('padding','20px')\nconst svg=holder.append('svg')\nif(!hm.text) return err('text missing')\nconst lines=hm.text.trim().split('\\n')\n// samples\nhm.samples=[]\nconst l=lines[0].split('\\t')\nfor(let i=2; i<l.length; i++) {\n\thm.samples.push(l[i])\n}\nif(hm.samples.length==0) return err('no column names')\nhm.items=[]\nfor(let i=1; i<lines.length; i++) {\n\tconst l=lines[i].split('\\t')\n\tconst type=l[0]\n\tconst md=mdh[type]\n\tif(!md) return err('invalid data type '+type)\n\tconst name=l[1]\n\tconst lst=[]\n\tfor(let j=2; j<l.length; j++) {\n\t\tconst vlst=l[j].split(';')\n\t\tconst colorlst=[]\n\t\tfor(const v of vlst) {\n\t\t\tif(!md[v]) {\n\t\t\t\treturn err('invalid value '+v+' at '+name+' and '+hm.samples[j-2])\n\t\t\t}\n\t\t\tcolorlst.push(md[v].color)\n\t\t}\n\t\tlst.push(colorlst)\n\t}\n\thm.items.push({\n\t\tname:name,\n\t\ttype:type,\n\t\tlst:lst\n\t})\n}\nhm.geneonrow=true\nif(!hm.rowh) {\n\thm.rowh=20\n}\nif(!hm.colw) {\n\thm.colw=20\n}\nif(!hm.rowspace) {\n\thm.rowspace=2\n}\nif(!hm.colspace) {\n\thm.colspace=2\n}\nif(!hm.rowlabtickspace) {\n\thm.rowlabtickspace=4\n}\nif(!hm.collabtickspace) {\n\thm.collabtickspace=4\n}\nif(!hm.rowtick) {\n\thm.rowtick=5\n}\nif(!hm.coltick) {\n\thm.coltick=5\n}\nrender(hm,svg,legendholder,err)\n}\n\n\n\n\n\nfunction render(hm,svg,legendholder,err)\n{\nconst mdh=hm.metadata\nfor(const key in mdh) {\n\tfor(const value in mdh[key]) {\n\t\tconst o=mdh[key][value]\n\t\tif(!o.label) return err('.label missing for metadata '+key+'['+value+']')\n\t\tif(!o.color) return err('.color missing for metadata '+key+'['+value+']')\n\t}\n}\nfor(const key in mdh) {\n\tconst d1=legendholder.append('div').style('display','inline-block').style('margin','20px').style('vertical-align','top')\n\td1.append('div').text(key).style('margin','5px 3px').style('font-weight','bold')\n\tconst d2=d1.append('div').style('margin','3px')\n\tfor(const v in mdh[key]) {\n\t\tconst o=mdh[key][v]\n\t\tconst row=d2.append('div').style('margin','3px')\n\t\trow.append('div').style('display','inline-block').style('background-color',o.color).style('width','14px').style('height','14px').style('margin-right','10px')\n\t\trow.append('span').text(o.label)\n\t}\n}\n\n\nconst rowlabfontsize=hm.rowh-3,\t\n\tcollabfontsize=hm.colw-3\n\n\n// max label width\n// label for gene and md are always shown\nlet labels=[]\nfor(const i of hm.items) {\n\tlabels.push(i.name)\n}\nlet genenamewidth=0\nfor(const n of labels) {\n\tsvg.append('text').text(n)\n\t.attr('font-size', hm.geneonrow ? rowlabfontsize : collabfontsize)\n\t.attr('font-family',client.font)\n\t.each(function(){genenamewidth=Math.max(genenamewidth,this.getBBox().width)})\n\t.remove()\n}\nlet samplenamewidth=0\nfor(const n of hm.samples) {\n\tsvg.append('text').text(n)\n\t.attr('font-size', hm.geneonrow ? collabfontsize : rowlabfontsize)\n\t.attr('font-family',client.font)\n\t.each(function(){samplenamewidth=Math.max(samplenamewidth,this.getBBox().width)})\n\t.remove()\n}\nconst rowlabw=hm.geneonrow ? genenamewidth : samplenamewidth\nconst collabh=hm.geneonrow ? samplenamewidth : genenamewidth\n\nconst mapwidth=hm.samples.length*(hm.colw+hm.colspace)-hm.colspace\nconst mapheight=hm.items.length*(hm.rowh+hm.rowspace)-hm.rowspace\nsvg.attr('width',rowlabw+hm.rowlabtickspace+hm.rowtick+mapwidth+100)\n\t.attr('height',collabh+hm.collabtickspace+hm.coltick+mapheight)\nconst originx= rowlabw+hm.rowlabtickspace+hm.rowtick \nconst originy= collabh+hm.collabtickspace+hm.coltick\n\n// row label, item\nlet y=originy\nfor(const item of hm.items) {\n\tconst g=svg.append('g').attr('transform','translate('+(originx-hm.rowlabtickspace-hm.rowtick)+','+(y+hm.rowh/2)+')')\n\tg.append('text').text(item.name)\n\t.attr('font-size',rowlabfontsize)\n\t.attr('font-family',client.font)\n\t.attr('fill', 'black')\n\t.attr('text-anchor', 'end')\n\t.attr('dominant-baseline','central')\n\t// tick\n\tg.append('line')\n\t.attr('stroke','black')\n\t.attr('shape-rendering','crispEdges')\n\t.attr('x1', hm.rowlabtickspace)\n\t.attr('x2', hm.rowlabtickspace+hm.rowtick)\n\ty+=hm.rowh+hm.rowspace\n}\n// col label, samples\nlet x= originx\nfor(const sample of hm.samples) {\n\tconst g=svg.append('g').attr('transform','translate('+(x+hm.colw/2)+','+collabh+')')\n\tg.append('text').text(sample)\n\t\t.attr('font-size',collabfontsize)\n\t\t.attr('font-family',client.font)\n\t\t.attr('fill', 'black')\n\t\t.attr('dominant-baseline','central')\n\t\t.attr('transform','rotate(-90)')\n\t// tick\n\tg.append('line')\n\t\t.attr('stroke','black')\n\t\t.attr('shape-rendering','crispEdges')\n\t\t.attr('y1', hm.collabtickspace)\n\t\t.attr('y2', hm.collabtickspace+hm.coltick)\n\tx+=hm.colw+hm.colspace\n}\n// cells\ny=originy\nfor(const item of hm.items) {\n\tlet x=originx\n\tfor(let i=0; i<hm.samples.length; i++) {\n\t\tconst sample=hm.samples[i]\n\t\tconst g=svg.append('g').attr('transform','translate('+(x+hm.colw/2)+','+(y+hm.rowh/2)+')')\n\t\tconst pieceh=hm.rowh/item.lst[i].length\n\t\tconst colorlst=item.lst[i]\n\t\tfor(let j=0; j<colorlst.length; j++) {\n\t\t\tconst v=colorlst[j]\n\t\t\tg.append('rect')\n\t\t\t\t.attr('x',-hm.colw/2)\n\t\t\t\t.attr('y',-hm.rowh/2+j*pieceh)\n\t\t\t\t.attr('width',hm.colw)\n\t\t\t\t.attr('height',pieceh)\n\t\t\t\t.attr('fill',v)\n\t\t\t\t.attr('shape-rendering','crispEdges')\n\t\t}\n\t\tx+=hm.colw+hm.colspace\n\t}\n\ty+=hm.rowh+hm.rowspace\n}\nsvg.append('rect')\n\t.attr('x',originx)\n\t.attr('y',originy)\n\t.attr('width',hm.samples.length*(hm.colw+hm.colspace)-hm.colspace)\n\t.attr('height',hm.items.length*(hm.rowh+hm.rowspace)-hm.rowspace)\n\t.attr('stroke','black')\n\t.attr('fill','none')\n\t.attr('shape-rendering','crispEdges')\n}\n", "import { json as d3json } from 'd3-fetch'\nimport * as client from './client'\n\n/*\nto call e2pca plots from study view\n\nmay apply patientannotation for sample color overlay\n\nand gene expression boxplot for categorized samples\n\n*/\n\nexport default function(cohort, folder) {\n\tfor (const obj of cohort.e2pca.list) {\n\t\tconst holder = folder\n\t\t\t.append('div')\n\t\t\t.style('display', 'inline-block')\n\t\t\t.style('margin', '20px')\n\t\t\t.style('vertical-align', 'top')\n\t\tif (cohort.e2pca.list.length > 1) {\n\t\t\tholder.style('border', 'solid 1px #ededed')\n\t\t}\n\t\tif (obj.name) {\n\t\t\tholder\n\t\t\t\t.append('div')\n\t\t\t\t.text(obj.name)\n\t\t\t\t.style('background-color', '#f1f1f1')\n\t\t\t\t.style('padding', '5px 10px')\n\t\t}\n\n\t\t/*\n\ttop row contains\n\t- svg button\n\t- gene search box\n\t- sample metadata dropdown\n\t*/\n\t\tconst toprow = holder.append('div').style('margin', '20px')\n\n\t\td3json(cohort.hostURL + '/textfile').post(JSON.stringify({ file: obj.vectorfile, jwt: cohort.jwt }), data => {\n\t\t\tif (data.error) {\n\t\t\t\tclient.sayerror(holder, 'Error getting vector file: ' + data.error)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\timport('./e2pca').then(p => {\n\t\t\t\tconst [err, numdata2plot] = p.e2pca_plot({\n\t\t\t\t\tholder: holder,\n\t\t\t\t\ttoprow: toprow,\n\t\t\t\t\ttext: data.text,\n\t\t\t\t\tmdanno: cohort.patientannotation,\n\t\t\t\t\tobj: obj\n\t\t\t\t})\n\t\t\t\tif (err) {\n\t\t\t\t\tclient.sayerror(holder, 'Error: ' + err)\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\t// pca plot made\n\n\t\t\t\tp.e2pca_genesearchui({\n\t\t\t\t\tholder: toprow,\n\t\t\t\t\tnumdata2plot: numdata2plot,\n\t\t\t\t\thostURL: cohort.hostURL,\n\t\t\t\t\tjwt: cohort.jwt,\n\t\t\t\t\tobj: obj,\n\t\t\t\t\tcallback: () => {\n\t\t\t\t\t\tboxplot4sampleannotation(cohort, obj)\n\t\t\t\t\t}\n\t\t\t\t})\n\n\t\t\t\tif (cohort.patientannotation) {\n\t\t\t\t\t/*\n\t\t\t\thas sample metadata\n\t\t\t\t- will draw expression boxplot for samples stratified by annotation, using gene expression\n\t\t\t\t- will color samples by annotation\n\t\t\t\t*/\n\t\t\t\t\tobj.boxplotdiv = holder.append('div')\n\n\t\t\t\t\tconst div = toprow\n\t\t\t\t\t\t.append('div')\n\t\t\t\t\t\t.style('display', 'inline-block')\n\t\t\t\t\t\t.style('margin-left', '10px')\n\t\t\t\t\tmetadataselector4pca(cohort, obj, div)\n\t\t\t\t}\n\t\t\t})\n\t\t})\n\t}\n}\n\nfunction boxplot4sampleannotation(cohort, obj) {\n\t/*\n\tafter searching for expression data for a gene from a db\n\tmay make boxplots showing expression distribution of samples\n\tby different annotation\n\tonly do when cohort.patientannotation is available\n\n\tobj\n\t\tthe e2pca object from cohort.e2pca\n\t\t.expressiondata[]\n\t\t.usetermkey\n\t*/\n\tif (!cohort.patientannotation) {\n\t\treturn\n\t}\n\tif (!obj.expressiondata) {\n\t\t/*\n\t\texpression data is avaiable after searching for a gene in pca plot\n\t\t*/\n\t\treturn\n\t}\n\n\tif (!obj.usetermkey) {\n\t\t// use first term\n\t\tobj.usetermkey = cohort.patientannotation.metadata[0].key\n\t}\n\n\tlet term = null\n\tfor (const t of cohort.patientannotation.metadata) {\n\t\tif (t.key == obj.usetermkey) {\n\t\t\tterm = t\n\t\t\tbreak\n\t\t}\n\t}\n\tif (!term) {\n\t\tclient.sayerror(obj.boxplotdiv, 'invalid term key ' + obj.usetermkey)\n\t\treturn\n\t}\n\n\tconst samplegroups = []\n\t// by obj.usetermkey, devide samples into groups\n\tfor (const v of term.values) {\n\t\tsamplegroups.push({\n\t\t\tvaluekey: v.key,\n\t\t\tlabel: v.label,\n\t\t\tcolor: v.color,\n\t\t\tsamples: []\n\t\t})\n\t}\n\n\tlet minv = obj.expressiondata[0].value\n\tlet maxv = obj.expressiondata[0].value\n\n\tconst noattrsamples = []\n\t// collect those that are not annotated by obj.usetermkey, make last group\n\n\t// assign samples (with values) to groups\n\tfor (const s of obj.expressiondata) {\n\t\tminv = Math.min(minv, s.value)\n\t\tmaxv = Math.max(maxv, s.value)\n\n\t\tif (!cohort.patientannotation.annotation[s.sample]) {\n\t\t\t// unknown sample name\n\t\t\tnoattrsamples.push(s)\n\t\t\tcontinue\n\t\t}\n\t\tconst valuekey = cohort.patientannotation.annotation[s.sample][obj.usetermkey]\n\t\tif (valuekey == undefined) {\n\t\t\tnoattrsamples.push(s)\n\t\t\tcontinue\n\t\t}\n\t\tfor (const sg of samplegroups) {\n\t\t\tif (sg.valuekey == valuekey) {\n\t\t\t\tsg.samples.push(s)\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n\n\tif (noattrsamples.length) {\n\t\tsamplegroups.push({\n\t\t\tlabel: 'unannotated',\n\t\t\tcolor: '#858585',\n\t\t\tsamples: noattrsamples\n\t\t})\n\t}\n\n\tobj.boxplotdiv.selectAll('*').remove()\n\n\timport('./old/plot.boxplot').then(p => {\n\t\tconst err = p.default({\n\t\t\tlist: samplegroups,\n\t\t\tholder: obj.boxplotdiv,\n\t\t\taxislabel: obj.searchedgene\n\t\t})\n\t\tif (err) {\n\t\t\tclient.sayerror(obj.boxplotdiv, 'Boxplot: ' + err)\n\t\t}\n\t})\n}\n\nfunction metadataselector4pca(cohort, obj, holder) {\n\t/*\n\tlist all metadata terms for selection\n\tonce selected,\n\tuse to color samples in pca\n\tand update boxplot if any\n\t*/\n\tconst tip = new client.Menu({ border: '', padding: '' })\n\tconst noannocolor = '#858585'\n\n\tholder\n\t\t.append('span')\n\t\t.text('Choose metadata')\n\t\t.attr('class', 'sja_clbtext')\n\t\t.on('click', event => {\n\t\t\t/*\n\t\tlist all terms\n\t\t*/\n\t\t\ttip.clear()\n\t\t\ttip.showunder(event.target)\n\t\t\tfor (const term of cohort.patientannotation.metadata) {\n\t\t\t\ttip.d\n\t\t\t\t\t.append('div')\n\t\t\t\t\t.attr('class', 'sja_menuoption')\n\t\t\t\t\t.text(term.label)\n\t\t\t\t\t.on('click', () => {\n\t\t\t\t\t\t/*\n\t\t\t\ta term has been selected\n\t\t\t\t*/\n\t\t\t\t\t\tobj.usetermkey = term.key\n\n\t\t\t\t\t\ttip.hide()\n\t\t\t\t\t\tobj.circles.attr('fill', d => {\n\t\t\t\t\t\t\t/*\n\t\t\t\t\teach d is a sample\n\t\t\t\t\t.sample\n\t\t\t\t\t*/\n\t\t\t\t\t\t\tconst a = cohort.patientannotation.annotation[d.sample]\n\t\t\t\t\t\t\tif (!a) return noannocolor\n\t\t\t\t\t\t\tconst valuekey = a[term.key]\n\t\t\t\t\t\t\tif (!valuekey) return noannocolor\n\t\t\t\t\t\t\tconst b = cohort.patientannotation.mdh[term.key].values[valuekey]\n\t\t\t\t\t\t\tif (!b) {\n\t\t\t\t\t\t\t\tconsole.error('invalid value key: ' + valuekey + ' at term: ' + term.key)\n\t\t\t\t\t\t\t\treturn noannocolor\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn b.color\n\t\t\t\t\t\t})\n\n\t\t\t\t\t\t// legend\n\t\t\t\t\t\tobj.legendholder.selectAll('*').remove()\n\t\t\t\t\t\tobj.legendholder\n\t\t\t\t\t\t\t.append('div')\n\t\t\t\t\t\t\t.style('margin-bottom', '5px')\n\t\t\t\t\t\t\t.text(term.label)\n\t\t\t\t\t\t\t.style('font-weight', 'bold')\n\t\t\t\t\t\tfor (const v of term.values) {\n\t\t\t\t\t\t\tconst row = obj.legendholder.append('div').style('margin-bottom', '3px')\n\t\t\t\t\t\t\trow\n\t\t\t\t\t\t\t\t.append('span')\n\t\t\t\t\t\t\t\t.attr('class', 'sja_mcdot')\n\t\t\t\t\t\t\t\t.style('background-color', v.color)\n\t\t\t\t\t\t\t\t.style('margin-right', '5px')\n\t\t\t\t\t\t\t\t.html('&nbsp;')\n\t\t\t\t\t\t\trow.append('span').text(v.label)\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (obj.expressiondata) {\n\t\t\t\t\t\t\t/*\n\t\t\t\t\tgene expression data already loaded and boxplot must have already been shown\n\t\t\t\t\tupdate boxplot\n\t\t\t\t\t*/\n\t\t\t\t\t\t\tboxplot4sampleannotation(cohort, obj)\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t}\n\t\t})\n}\n", "import * as client from './client'\nimport { init_bulk_flag } from '#shared/bulk.js'\nimport * as bulkui from './bulk.ui'\nimport * as common from '#shared/common.js'\nimport blocklazyload from './block.lazyload'\nimport blockinit from './block.init'\n\nimport tp_class from './tp.classes'\nimport tp_gene from './tp.gene'\nimport tp_sample from './tp.sample'\nimport tp_pathway from './tp.pathway'\nimport inithcmap from './hcmap'\nimport tp_e2pca from './tp.e2pca'\nimport tp_getgeneexpression from './tp.gene.geneexpression'\nimport { getsjcharts } from './getsjcharts'\n\n/*\n\nfor generating the study HTML container\nwhich has 2 pillars, left for trigger buttons (also shows stats about the dataset), right for actual apps\nand show various apps depending on the data attributes\n\n*/\n\nexport default async function tpui(cohort, holder, hostURL, app = { callbacks: { sjcharts: {} } }) {\n\tconst debugmode = app.debugmode\n\n\tif (debugmode) {\n\t\twindow.cohort = cohort\n\t}\n\n\tif (!('hostURL' in cohort)) cohort.hostURL = hostURL\n\n\t// cohort already has jwt\n\n\t// all data parsed\n\tif (cohort.headerhtml) {\n\t\tholder.append('div').html(cohort.headerhtml)\n\t}\n\tlet personcount = 0\n\tfor (const pn in cohort.p2st) {\n\t\tpersoncount++\n\t\tfor (const st in cohort.p2st[pn]) {\n\t\t\tconst s = cohort.p2st[pn][st]\n\t\t\ts.sampletype = st\n\t\t\ts.patientname = pn\n\t\t\ts.cohort = cohort\n\t\t}\n\t}\n\tconst table = holder.append('table').style('margin-top', '20px')\n\tconst tr0 = table.append('tr')\n\n\t// two pillar container, only used by makefolder\n\tcohort.__tdleft = tr0.append('td').style('vertical-align', 'top').style('padding-right', '20px')\n\tcohort.__tdright = tr0.append('td').style('vertical-align', 'top')\n\n\tif (cohort.hide_navigation) {\n\t\tcohort.__tdleft.style('display', 'none')\n\t}\n\n\t/*\n// TODO from old pp, yet to be ported over\nif(cohort.render) {\n\tsja.f.tpui_render(cohort,tdleft,tdright)\n}\n*/\n\n\tif (!cohort.hide_addnewfile) {\n\t\t// add new files\n\t\t// only allow adding new files when there is just one dataset??\n\t\tconst [butt1, folder1] = makefolder(cohort)\n\t\tfolder1.style('background-color', '#f4f4f4').style('margin', '0px 20px 20px 0px').style('padding', '20px')\n\t\tbutt1.html('&#43; <span style=\"font-size:.8em\">NEW FILE</span>')\n\t\tconst saydiv = folder1.append('p')\n\t\tconst filediv = folder1.append('div')\n\t\tconst fileui = () => {\n\t\t\tfilediv.selectAll('*').remove()\n\t\t\tfilediv.append('span').html('Select data type&nbsp;')\n\t\t\tconst typeselect = client.filetypeselect(filediv).style('margin-right', '20px')\n\t\t\tconst butt = filediv\n\t\t\t\t.append('input')\n\t\t\t\t.attr('type', 'file')\n\t\t\t\t.on('change', event => {\n\t\t\t\t\tsaydiv.text('')\n\t\t\t\t\tconst file = event.target.files[0]\n\t\t\t\t\tif (!file) {\n\t\t\t\t\t\tfileui()\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t\tif (file.size == 0) {\n\t\t\t\t\t\tsaydiv.text('Wrong file: ' + file.name)\n\t\t\t\t\t\tfileui()\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t\tconst reader = new FileReader()\n\t\t\t\t\treader.onload = event => {\n\t\t\t\t\t\tsaydiv.text(file.name + ' loaded.')\n\t\t\t\t\t\tconst flag = init_bulk_flag(cohort.genome.name)\n\t\t\t\t\t\tif (!flag) {\n\t\t\t\t\t\t\tsaydiv.text('should not happen')\n\t\t\t\t\t\t\tfileui()\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst error0 = bulkui.content2flag(event.target.result, typeselect.node().selectedIndex, flag)\n\n\t\t\t\t\t\tif (error0) {\n\t\t\t\t\t\t\tsaydiv.text('Error with ' + file.name + ': ' + error0)\n\t\t\t\t\t\t\tfileui()\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// new data goes to first dataset\n\t\t\t\t\t\tlet ds = null\n\t\t\t\t\t\tfor (const k in cohort.dsset) {\n\t\t\t\t\t\t\tds = cohort.dsset[k]\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!ds) {\n\t\t\t\t\t\t\tsaydiv.text('no dataset in cohort, this should not happen')\n\t\t\t\t\t\t\tfileui()\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// flag2thisds tells the data in flag will be appended to the given ds\n\t\t\t\t\t\tconst error1 = bulkui.bulkin({\n\t\t\t\t\t\t\tflag: flag,\n\t\t\t\t\t\t\tcohort: cohort,\n\t\t\t\t\t\t\tflag2thisds: ds\n\t\t\t\t\t\t})\n\t\t\t\t\t\tif (error1) {\n\t\t\t\t\t\t\tsaydiv.text('Error with ' + file.name + ': ' + error1)\n\t\t\t\t\t\t\tfileui()\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (flag.good == 0) {\n\t\t\t\t\t\t\tsaydiv.text(file.name + ': no data loaded')\n\t\t\t\t\t\t\tfileui()\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t}\n\t\t\t\t\t\tsaydiv.text('')\n\t\t\t\t\t\tfileui()\n\t\t\t\t\t\t// good data ready\n\t\t\t\t\t\tholder.selectAll('*').remove()\n\t\t\t\t\t\ttpui(cohort, holder, hostURL)\n\t\t\t\t\t}\n\t\t\t\t\treader.onerror = function () {\n\t\t\t\t\t\tsaydiv.text('Error reading file ' + file.name)\n\t\t\t\t\t\tfileui()\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t\tsaydiv.text('Parsing file ' + file.name + ' ...')\n\t\t\t\t\treader.readAsText(file, 'utf8')\n\t\t\t\t})\n\t\t}\n\t\tfileui()\n\t}\n\n\tconst [butt2, folder2] = makefolder(cohort)\n\tconst ds2clst = tp_class(cohort, butt2, folder2)\n\n\tconst hassamplelst = []\n\tconst hasdiseaselst = []\n\tfor (const k in cohort.dsset) {\n\t\tconst ds = cohort.genome.datasets[k]\n\t\tif (ds.hassample) {\n\t\t\thassamplelst.push(k)\n\t\t}\n\t\tif (ds.hasdisease) {\n\t\t\thasdiseaselst.push(k)\n\t\t}\n\t}\n\n\tif (ds2clst) {\n\t\t// has mlst from text files\n\t\tconst [butt3, folder3] = makefolder(cohort, cohort.show_genetable)\n\t\ttp_gene(cohort, ds2clst, butt3, folder3, personcount > 0, hostURL)\n\t}\n\n\tlet showheatmap = false\n\n\tif (hassamplelst.length || personcount > 0) {\n\t\t/*\n\thas samples\n\tmigrate .p2st to .patientset\n\t*/\n\t\tcohort.patientset = {}\n\t\tfor (const patient in cohort.p2st) {\n\t\t\tcohort.patientset[patient] = {\n\t\t\t\ttrlst: [],\n\t\t\t\tsamples: cohort.p2st[patient]\n\t\t\t}\n\t\t}\n\n\t\t/*if (!cohort.disable_sampletable) {\n\t\t\t// show sample table\n\t\t\tconst [butt, folder] = makefolder(cohort, cohort.show_sampletable)\n\t\t\ttp_sample(cohort, ds2clst, butt, folder, hostURL)\n\t\t}*/\n\n\t\t// hm\n\t\tif (hassamplelst.length > 0 && !cohort.hardcodemap) {\n\t\t\tshowheatmap = true\n\t\t}\n\t}\n\n\tif (cohort.show_heatmap) {\n\t\tshowheatmap = true\n\t}\n\tlet hm_main\n\tif (showheatmap) {\n\t\tconst [hmbtn, hmdiv] = makefolder(cohort)\n\t\thmbtn.text('HEATMAP').style('font-size', '.8em')\n\t\tconst sjcharts = await getsjcharts()\n\t\tconst appname = (cohort.name ? cohort.name + '.' : '') + 'hm'\n\t\tsjcharts.heatmap({\n\t\t\tcohort,\n\t\t\thassamplelst,\n\t\t\tblockinit,\n\t\t\tdebugmode,\n\t\t\t// sjcharts has its own d3 instance so it has to\n\t\t\t// re-select to bind the d3 'event' properly\n\t\t\tdom: {\n\t\t\t\tbutt: hmbtn.node(),\n\t\t\t\tholder: hmdiv.node()\n\t\t\t},\n\t\t\ttp_getgeneexpression,\n\t\t\tshow_heatmap: cohort.show_heatmap,\n\t\t\t// use a subnested sjcharts object to namespace its instances\n\t\t\tinstanceTracker: app.instanceTracker && app.instanceTracker.sjcharts,\n\t\t\tcallbacks:\n\t\t\t\tapp.callbacks && app.callbacks.sjcharts && (app.callbacks.sjcharts[appname] || app.callbacks.sjcharts.hm)\n\t\t})\n\t}\n\n\t/*\nif(cohort.variantgene) {\n\tsja.f.tpui_variantgene(cohort,cohort.variantgene,d3.select(tdleft[0]),d3.select(tdright[0]))\n}\n*/\n\n\tif (cohort.hardcodemap) {\n\t\tconst [hmbut, hmdiv] = makefolder(cohort, cohort.show_hardcodemap)\n\t\thmbut.text('HEATMAP').style('font-size', '.8em')\n\t\tfor (const hcmap of cohort.hardcodemap) {\n\t\t\tconst div = hmdiv.append('div').style('display', 'inline-block').style('margin-bottom', '20px')\n\t\t\tif (hcmap.name) {\n\t\t\t\tdiv.append('h3').text(hcmap.name)\n\t\t\t}\n\t\t\tinithcmap(hcmap, div)\n\t\t}\n\t}\n\n\tif (cohort.survivalJSON) {\n\t\tconst [srvbut, srvdiv] = makefolder(cohort, cohort.show_hardcodemap)\n\t\tsrvbut.text('SURVIVAL CURVE').style('font-size', '.8em').style('border-color', 'transparent')\n\t\tconst sjcharts = await getsjcharts()\n\t\tsjcharts.survival({\n\t\t\tcohort,\n\t\t\tdom: {\n\t\t\t\tbutt: srvbut.node(),\n\t\t\t\tholder: srvdiv.node()\n\t\t\t},\n\t\t\t// use a subnested sjcharts object to namespace its instances\n\t\t\tinstanceTracker: app.instanceTracker && app.instanceTracker.sjcharts,\n\t\t\tcallbacks: app.callbacks && app.callbacks.sjcharts && app.callbacks.sjcharts.sv\n\t\t})\n\t}\n\n\t/*if (ds2clst && !cohort.disable_genenetwork) {\n\t\t// has mlst\n\t\tconst [butt, folder] = makefolder(cohort)\n\t\tbutt\n\t\t\t.style('font-size', '.8em')\n\t\t\t.text('GENE NETWORK')\n\t\t\t.attr('aria-label', 'A force-directed graph of gene groups, shown with proportion of hits by diagnosis.')\n\t\tlet loaded = false\n\t\tbutt.on('click', () => {\n\t\t\tif (folder.style('display') == 'none') {\n\t\t\t\tbutt.style('border-color', 'black')\n\t\t\t\tclient.appear(folder)\n\t\t\t} else {\n\t\t\t\tbutt.style('border-color', 'transparent')\n\t\t\t\tclient.disappear(folder)\n\t\t\t}\n\t\t\tif (loaded) return\n\t\t\tloaded = true\n\t\t\ttp_pathway(cohort, folder)\n\t\t})\n\t}*/\n\n\t/*if (hasdiseaselst.length) {\n\t\tconst [skbtn, skdiv] = makefolder(cohort)\n\t\tskbtn\n\t\t\t.style('font-size', '.8em')\n\t\t\t.text('RIBBON GRAPH')\n\t\t\t.attr('aria-label', 'A flow or Sankey diagram showing associated quantities by proportional ribbon widths.')\n\t\tconst sjcharts = await getsjcharts()\n\t\tsjcharts.sankey({\n\t\t\tcohort,\n\t\t\tdom: {\n\t\t\t\tbutt: skbtn.node(),\n\t\t\t\tholder: skdiv.node()\n\t\t\t},\n\t\t\t// use a subnested sjcharts object to namespace its instances\n\t\t\tinstanceTracker: app.instanceTracker && app.instanceTracker.sjcharts,\n\t\t\tcallbacks: app.callbacks && app.callbacks.sjcharts && app.callbacks.sjcharts.sk\n\t\t})\n\t}*/\n\n\t/*if (\n\t\thasdiseaselst.length ||\n\t\tcohort.piebarJSON ||\n\t\t(cohort.heatmapJSON && cohort.heatmapJSON.samplegroup && cohort.heatmapJSON.samplegroup.length)\n\t) {\n\t\tconst [piebtn, piediv] = makefolder(cohort)\n\t\tpiebtn\n\t\t\t.style('font-size', '.8em')\n\t\t\t.text('PIE CHARTS')\n\t\t\t.attr(\n\t\t\t\t'title',\n\t\t\t\t'A sample group by gene group matrix of piecharts, with each pie wedge representing the number of hits by variant class.'\n\t\t\t)\n\t\tconst sjcharts = await getsjcharts()\n\t\tsjcharts.piebar({\n\t\t\tcohort,\n\t\t\tdom: {\n\t\t\t\tbutt: piebtn.node(),\n\t\t\t\tholder: piediv.node()\n\t\t\t},\n\t\t\t// use a subnested sjcharts object to namespace its instances\n\t\t\tinstanceTracker: app.instanceTracker && app.instanceTracker.sjcharts,\n\t\t\tcallbacks: app.callbacks && app.callbacks.sjcharts && app.callbacks.sjcharts.pb\n\t\t})\n\t}*/\n\n\tif (cohort.browserview) {\n\t\tconst [butt, folder] = makefolder(cohort)\n\t\tbutt.style('font-size', '.8em').text('BROWSER')\n\t\tlet loaded = false\n\t\tbutt.on('click', () => {\n\t\t\tif (folder.style('display') == 'none') {\n\t\t\t\tbutt.style('border-color', 'black')\n\t\t\t\tclient.appear(folder)\n\t\t\t} else {\n\t\t\t\tbutt.style('border-color', 'transparent')\n\t\t\t\tclient.disappear(folder)\n\t\t\t}\n\t\t\tif (loaded) return\n\t\t\tloaded = true\n\t\t\tconst arg = {\n\t\t\t\tholder: folder,\n\t\t\t\tgenome: cohort.genome,\n\t\t\t\tdebugmode: debugmode,\n\t\t\t\tdogtag: cohort.genome.name,\n\t\t\t\thostURL: hostURL,\n\t\t\t\tjwt: cohort.jwt,\n\t\t\t\tcohort: cohort,\n\t\t\t\tnobox: cohort.browserview.nobox,\n\t\t\t\tdatasetqueries: cohort.browserview.datasetqueries,\n\t\t\t\ttklst: []\n\t\t\t}\n\t\t\tif (cohort.browserview.position) {\n\t\t\t\t// always true\n\t\t\t\targ.chr = cohort.browserview.position.chr\n\t\t\t\targ.start = cohort.browserview.position.start\n\t\t\t\targ.stop = cohort.browserview.position.stop\n\t\t\t}\n\t\t\t// native track\n\t\t\tif (cohort.browserview.nativetracks) {\n\t\t\t\targ.nativetracks = cohort.browserview.nativetracks\n\t\t\t}\n\t\t\t// custom track\n\t\t\tif (cohort.browserview.tracks) {\n\t\t\t\tfor (const t of cohort.browserview.tracks) {\n\t\t\t\t\targ.tklst.push(t)\n\t\t\t\t}\n\t\t\t}\n\t\t\t// assay track\n\t\t\tif (cohort.browserview.assays) {\n\t\t\t\tif (!cohort.assaylst) {\n\t\t\t\t\tconsole.error('assaylst not set!')\n\t\t\t\t\tcohort.assaylst = []\n\t\t\t\t}\n\t\t\t\tfor (const assayname in cohort.browserview.assays) {\n\t\t\t\t\tconst assayview = cohort.browserview.assays[assayname]\n\t\t\t\t\tif (!assayview.assayobj) {\n\t\t\t\t\t\t// assayobj should be defined\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\t\t\t\t\tif (assayview.combined) {\n\t\t\t\t\t\tif (assayview.combinetk) {\n\t\t\t\t\t\t\targ.tklst.push(assayview.combinetk)\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfor (const pn in cohort.patientset) {\n\t\t\t\t\t\t\tfor (const st in cohort.patientset[pn].samples) {\n\t\t\t\t\t\t\t\tfor (const t of cohort.patientset[pn].samples[st].tktemplate) {\n\t\t\t\t\t\t\t\t\tif (t.id == assayview.assayobj.id) {\n\t\t\t\t\t\t\t\t\t\targ.tklst.push(t)\n\t\t\t\t\t\t\t\t\t}\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}\n\t\t\t}\n\t\t\tif (cohort.browserview.defaultassaytracks) {\n\t\t\t\tconst [err, lst] = cohort2assaytracks(cohort)\n\t\t\t\tif (err) {\n\t\t\t\t\tclient.sayerror(holder, 'error with .defaultassaytracks: ' + err)\n\t\t\t\t} else {\n\t\t\t\t\tfor (const t of lst) arg.tklst.push(t)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (const t of arg.tklst) {\n\t\t\t\tt.iscustom = true // important\n\t\t\t}\n\n\t\t\tblocklazyload(arg)\n\t\t})\n\t\tif (cohort.show_browser) {\n\t\t\tbutt.node().click()\n\t\t}\n\t}\n\n\tif (cohort.e2pca) {\n\t\tconst [butt, folder] = makefolder(cohort)\n\t\tbutt.text(cohort.e2pca.label).style('font-size', '.8em')\n\n\t\tlet loaded = false\n\t\tbutt.on('click', () => {\n\t\t\tif (folder.style('display') == 'none') {\n\t\t\t\tbutt.style('border-color', 'black')\n\t\t\t\tclient.appear(folder)\n\t\t\t} else {\n\t\t\t\tbutt.style('border-color', 'transparent')\n\t\t\t\tclient.disappear(folder)\n\t\t\t}\n\t\t\tif (loaded) return\n\t\t\tloaded = true\n\t\t\ttp_e2pca(cohort, folder)\n\t\t})\n\t\tif (cohort.show_e2pca) {\n\t\t\tbutt.node().click()\n\t\t}\n\t}\n\n\t/***** end of tpui *****/\n}\n\nfunction makefolder(cohort, show) {\n\tconst butt = cohort.__tdleft\n\t\t.append('div')\n\t\t.attr('class', 'sja_menuoption')\n\t\t.style('margin-top', '10px')\n\t\t.style('white-space', 'nowrap')\n\tconst folder = cohort.__tdright.append('div').style('padding-bottom', '20px')\n\tbutt.on('click', () => {\n\t\tif (folder.style('display') == 'block') {\n\t\t\tclient.disappear(folder)\n\t\t\tbutt.style('border', 'solid 1px transparent')\n\t\t} else {\n\t\t\tbutt.style('border', 'solid 1px #545454')\n\t\t\tclient.appear(folder)\n\t\t}\n\t})\n\tif (show) {\n\t\tbutt.style('border', 'solid 1px #545454')\n\t\tfolder.style('display', 'block')\n\t} else {\n\t\tbutt.style('border', 'solid 1px transparent')\n\t\tfolder.style('display', 'none')\n\t}\n\treturn [butt, folder]\n}\n\nfunction cohort2assaytracks(ct) {\n\t/*\n\tcohort.browserview.defaultassaytracks[]\n\n\tget the tklst from cohort.p2st\n\t*/\n\n\tif (!ct.browserview) return [null, []]\n\tif (!ct.browserview.defaultassaytracks) return [null, []]\n\n\tconst tklst = []\n\tfor (const t of ct.browserview.defaultassaytracks) {\n\t\tconst p = ct.p2st[t.level1]\n\t\tif (!p) continue\n\t\tif (t.level2) {\n\t\t\tconst p2 = p[t.level2]\n\t\t\tif (!p2) continue\n\t\t\tif (!p2.tktemplate) continue\n\t\t\tfor (const tt of p2.tktemplate) {\n\t\t\t\tif (tt.assayname == t.assay) {\n\t\t\t\t\ttklst.push(tt)\n\t\t\t\t\tif (t.justone) {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\t// no level2, use all tk from p\n\t\t\tfor (const st in p) {\n\t\t\t\tconst p2 = p[st]\n\t\t\t\tif (p2.tktemplate) {\n\t\t\t\t\tfor (const tt of p2.tktemplate) {\n\t\t\t\t\t\tif (tt.assayname == t.assay) {\n\t\t\t\t\t\t\ttklst.push(tt)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn [null, tklst]\n}\n"],
5
- "mappings": "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",
6
- "names": ["sayerror", "n", "a", "barplot", "tip", "l", "x", "tip", "event"]
7
- }
@@ -1,28 +0,0 @@
1
- import {
2
- handler
3
- } from "./chunk-NNDKYTUV.js";
4
- import "./chunk-HJ6L54YS.js";
5
- import "./chunk-HWNQOADC.js";
6
- import "./chunk-CNFTQSNE.js";
7
- import "./chunk-PLFPXOGX.js";
8
- import "./chunk-EEB5VE2A.js";
9
- import "./chunk-3CIL7KH7.js";
10
- import "./chunk-T4XPCSLP.js";
11
- import "./chunk-BIJOXCLN.js";
12
- import "./chunk-W5J3LTYS.js";
13
- import "./chunk-L2WOLNZK.js";
14
- import "./chunk-AMW5LCUB.js";
15
- import "./chunk-ZPWBYHNE.js";
16
- import "./chunk-HBNB5TRH.js";
17
- import "./chunk-PF4DSFDR.js";
18
- import "./chunk-4OLM3KSB.js";
19
- import "./chunk-6XKAOSQE.js";
20
- import "./chunk-TLT4YIG3.js";
21
- import "./chunk-5R63Q5KH.js";
22
- import "./chunk-I6Y4O3RR.js";
23
- import "./chunk-Q5RDQNIT.js";
24
- import "./chunk-HS5PO5ZQ.js";
25
- export {
26
- handler
27
- };
28
- //# sourceMappingURL=tvs.categorical-RPACB4VU.js.map
@@ -1,160 +0,0 @@
1
- import {
2
- escapeHtml
3
- } from "./chunk-NNDKYTUV.js";
4
- import "./chunk-HJ6L54YS.js";
5
- import "./chunk-HWNQOADC.js";
6
- import "./chunk-CNFTQSNE.js";
7
- import "./chunk-PLFPXOGX.js";
8
- import "./chunk-EEB5VE2A.js";
9
- import "./chunk-3CIL7KH7.js";
10
- import "./chunk-T4XPCSLP.js";
11
- import "./chunk-BIJOXCLN.js";
12
- import "./chunk-W5J3LTYS.js";
13
- import "./chunk-L2WOLNZK.js";
14
- import "./chunk-AMW5LCUB.js";
15
- import "./chunk-ZPWBYHNE.js";
16
- import "./chunk-HBNB5TRH.js";
17
- import "./chunk-PF4DSFDR.js";
18
- import "./chunk-4OLM3KSB.js";
19
- import "./chunk-6XKAOSQE.js";
20
- import "./chunk-TLT4YIG3.js";
21
- import "./chunk-5R63Q5KH.js";
22
- import "./chunk-I6Y4O3RR.js";
23
- import "./chunk-Q5RDQNIT.js";
24
- import "./chunk-HS5PO5ZQ.js";
25
-
26
- // filter/tvs.condition.js
27
- var handler = {
28
- type: "condition",
29
- term_name_gen,
30
- get_pill_label,
31
- getSelectRemovePos,
32
- fillMenu,
33
- setTvsDefaults
34
- };
35
- async function fillMenu(self, div, tvs) {
36
- const bar_by_select = div.append("select").attr("class", "value_select").style("display", "block").style("margin", "5px 10px").style("padding", "3px").on("change", () => {
37
- const new_tvs = JSON.parse(JSON.stringify(tvs));
38
- const value = bar_by_select.node().value;
39
- new_tvs.bar_by_grade = value === "grade";
40
- new_tvs.bar_by_children = value === "sub";
41
- if (value === "grade") {
42
- new_tvs.value_by_max_grade = true;
43
- delete new_tvs.value_by_most_recent;
44
- delete new_tvs.value_by_computable_grade;
45
- }
46
- div.selectAll("*").remove();
47
- fillMenu(self, div, new_tvs);
48
- });
49
- bar_by_select.append("option").attr("value", "grade").text("By Grade").property("selected", tvs.bar_by_grade);
50
- bar_by_select.append("option").attr("value", "sub").text("By Subcondition").property("selected", tvs.bar_by_children);
51
- const grade_type_select = div.append("select").attr("class", "grade_select").style("margin", "5px 10px").style("padding", "3px").style("display", tvs.bar_by_grade ? "block" : "none").on("change", () => {
52
- const new_tvs = JSON.parse(JSON.stringify(tvs));
53
- update_value_by(new_tvs);
54
- div.selectAll("*").remove();
55
- fillMenu(self, div, new_tvs);
56
- });
57
- grade_type_select.append("option").attr("value", "max").text("Max grade per patient").property("selected", tvs.value_by_max_grade);
58
- grade_type_select.append("option").attr("value", "recent").text("Most recent grade per patient").property("selected", tvs.value_by_most_recent);
59
- grade_type_select.append("option").attr("value", "computable").text("Any grade per patient").property("selected", tvs.value_by_computable_grade);
60
- div.append("span").style("margin", "5px 10px").style("padding", "3px").style("display", tvs.bar_by_children ? "block" : "none").style("color", "#888").html("Using any grade per patient");
61
- const body = { term1_q: {} };
62
- for (const key in tvs) {
63
- if (key.includes("_by_")) body.term1_q[key] = tvs[key];
64
- }
65
- const data = await self.opts.vocabApi.getCategories(tvs.term, self.filter, body);
66
- const callback = (indexes) => {
67
- const new_tvs = JSON.parse(JSON.stringify(tvs));
68
- delete new_tvs.groupset_label;
69
- new_tvs.values = data.lst.filter((v, i, array) => indexes.includes(i));
70
- const bar_by_value = bar_by_select.node().value;
71
- new_tvs.bar_by_grade = bar_by_value !== "sub";
72
- new_tvs.bar_by_children = bar_by_value === "sub";
73
- update_value_by(new_tvs);
74
- try {
75
- validateConditionTvs(new_tvs);
76
- } catch (e) {
77
- window.alert(e);
78
- return;
79
- }
80
- self.dom.tip.hide();
81
- self.opts.callback(new_tvs);
82
- };
83
- self.values_table = self.makeValueTable(div, tvs, data.lst, callback).node();
84
- function update_value_by(new_tvs) {
85
- const bar_by_value = bar_by_select.property("value");
86
- const grade_type_value = grade_type_select.property("value");
87
- if (bar_by_value === "sub") {
88
- new_tvs.value_by_computable_grade = true;
89
- delete new_tvs.value_by_max_grade;
90
- delete new_tvs.value_by_most_recent;
91
- } else {
92
- new_tvs.value_by_max_grade = grade_type_value === "max";
93
- new_tvs.value_by_most_recent = grade_type_value === "recent";
94
- new_tvs.value_by_computable_grade = grade_type_value === "computable";
95
- }
96
- }
97
- }
98
- function term_name_gen(d) {
99
- const name = d.term.name;
100
- return name.length < 21 ? escapeHtml(name) : '<label title="' + escapeHtml(name) + '">' + escapeHtml(name.substring(0, 18)) + "...</label>";
101
- }
102
- function get_pill_label(tvs) {
103
- return {
104
- txt: escapeHtml(get_value_text(tvs)),
105
- grade_type: tvs.bar_by_children ? "" : tvs.value_by_max_grade ? "[Max Grade]" : tvs.value_by_most_recent ? "[Most Recent Grade]" : tvs.value_by_computable_grade ? "[Any Grade]" : ""
106
- };
107
- }
108
- function get_value_text(tvs) {
109
- if (tvs.bar_by_grade || tvs.bar_by_children) {
110
- if (tvs.values.length == 1) {
111
- return tvs.values[0].label;
112
- }
113
- if (tvs.groupset_label) return tvs.groupset_label;
114
- return tvs.values.length + (tvs.bar_by_grade ? " Grades" : "Subconditions");
115
- }
116
- if (tvs.grade_and_child) {
117
- console.error(term);
118
- return "todo";
119
- }
120
- throw "unknown tvs setting for a condition term";
121
- }
122
- function getSelectRemovePos(j) {
123
- return j;
124
- }
125
- function setTvsDefaults(tvs) {
126
- if (!tvs.values) tvs.values = [];
127
- if (!tvs.bar_by_grade && !tvs.bar_by_children_) {
128
- tvs.bar_by_grade = true;
129
- }
130
- if (!tvs.value_by_max_grade && !tvs.value_by_most_recent && !tvs.value_by_computable_grade) {
131
- tvs.value_by_max_grade = true;
132
- }
133
- }
134
- function validateConditionTvs(tvs) {
135
- if (!tvs.term) throw "tvs.term is not defined";
136
- if (!tvs.values) throw `.values[] missing for a term ${tvs.term.name}`;
137
- if (!Array.isArray(tvs.values)) throw `.values[] is not an array for a term ${tvs.term.name}`;
138
- if (!tvs.values.length) throw `no categories selected for ${tvs.term.name}`;
139
- if (!tvs.values.every((v) => v.key !== void 0))
140
- throw `every value in tvs.values[] must have 'key' defined for ${tvs.term.name}`;
141
- if (tvs.term.isleaf == true) {
142
- if (!tvs.bar_by_grade) throw `tvs.bar_by_grade must be true for leaf term ${tvs.term.name}`;
143
- if (!tvs.value_by_max_grade && !tvs.value_by_most_recent && !tvs.value_by_computable_grade)
144
- throw `unknown value_type for a bar_by_grade for condition term ${tvs.term.name}`;
145
- } else {
146
- if (tvs.bar_by_grade) {
147
- if (!tvs.value_by_max_grade && !tvs.value_by_most_recent && !tvs.value_by_computable_grade)
148
- throw `unknown value_type for a bar_by_grade for condition term ${tvs.term.name}`;
149
- } else if (tvs.bar_by_children) {
150
- if (!tvs.value_by_computable_grade)
151
- throw `value_type must be value_by_computable_grade for bar_by_children for condition term ${tvs.term.name}`;
152
- } else {
153
- throw `neither bar_by_grade or bar_by_children is set for a condition term ${tvs.term.name}`;
154
- }
155
- }
156
- }
157
- export {
158
- handler
159
- };
160
- //# sourceMappingURL=tvs.condition-O6JBUM6D.js.map
@@ -1,30 +0,0 @@
1
- import {
2
- getDtTermValues,
3
- handler2 as handler
4
- } from "./chunk-NNDKYTUV.js";
5
- import "./chunk-HJ6L54YS.js";
6
- import "./chunk-HWNQOADC.js";
7
- import "./chunk-CNFTQSNE.js";
8
- import "./chunk-PLFPXOGX.js";
9
- import "./chunk-EEB5VE2A.js";
10
- import "./chunk-3CIL7KH7.js";
11
- import "./chunk-T4XPCSLP.js";
12
- import "./chunk-BIJOXCLN.js";
13
- import "./chunk-W5J3LTYS.js";
14
- import "./chunk-L2WOLNZK.js";
15
- import "./chunk-AMW5LCUB.js";
16
- import "./chunk-ZPWBYHNE.js";
17
- import "./chunk-HBNB5TRH.js";
18
- import "./chunk-PF4DSFDR.js";
19
- import "./chunk-4OLM3KSB.js";
20
- import "./chunk-6XKAOSQE.js";
21
- import "./chunk-TLT4YIG3.js";
22
- import "./chunk-5R63Q5KH.js";
23
- import "./chunk-I6Y4O3RR.js";
24
- import "./chunk-Q5RDQNIT.js";
25
- import "./chunk-HS5PO5ZQ.js";
26
- export {
27
- getDtTermValues,
28
- handler
29
- };
30
- //# sourceMappingURL=tvs.dt-5EVBSRX3.js.map
@@ -1,31 +0,0 @@
1
- import {
2
- handler2 as handler
3
- } from "./chunk-NNDKYTUV.js";
4
- import "./chunk-HJ6L54YS.js";
5
- import "./chunk-HWNQOADC.js";
6
- import "./chunk-CNFTQSNE.js";
7
- import "./chunk-PLFPXOGX.js";
8
- import "./chunk-EEB5VE2A.js";
9
- import "./chunk-3CIL7KH7.js";
10
- import "./chunk-T4XPCSLP.js";
11
- import "./chunk-BIJOXCLN.js";
12
- import "./chunk-W5J3LTYS.js";
13
- import "./chunk-L2WOLNZK.js";
14
- import "./chunk-AMW5LCUB.js";
15
- import "./chunk-ZPWBYHNE.js";
16
- import "./chunk-HBNB5TRH.js";
17
- import "./chunk-PF4DSFDR.js";
18
- import "./chunk-4OLM3KSB.js";
19
- import "./chunk-6XKAOSQE.js";
20
- import "./chunk-TLT4YIG3.js";
21
- import "./chunk-5R63Q5KH.js";
22
- import "./chunk-I6Y4O3RR.js";
23
- import "./chunk-Q5RDQNIT.js";
24
- import "./chunk-HS5PO5ZQ.js";
25
-
26
- // filter/tvs.dtcnv.categorical.js
27
- var handler2 = Object.assign({}, handler, { type: "dtcnv" });
28
- export {
29
- handler2 as handler
30
- };
31
- //# sourceMappingURL=tvs.dtcnv.categorical-Y5YHBZNC.js.map
@@ -1,63 +0,0 @@
1
- import {
2
- handler2 as handler,
3
- renderCnvConfig
4
- } from "./chunk-NNDKYTUV.js";
5
- import "./chunk-HJ6L54YS.js";
6
- import "./chunk-HWNQOADC.js";
7
- import "./chunk-CNFTQSNE.js";
8
- import "./chunk-PLFPXOGX.js";
9
- import "./chunk-EEB5VE2A.js";
10
- import "./chunk-3CIL7KH7.js";
11
- import "./chunk-T4XPCSLP.js";
12
- import "./chunk-BIJOXCLN.js";
13
- import "./chunk-W5J3LTYS.js";
14
- import "./chunk-L2WOLNZK.js";
15
- import "./chunk-AMW5LCUB.js";
16
- import "./chunk-ZPWBYHNE.js";
17
- import "./chunk-HBNB5TRH.js";
18
- import "./chunk-PF4DSFDR.js";
19
- import "./chunk-4OLM3KSB.js";
20
- import "./chunk-6XKAOSQE.js";
21
- import "./chunk-TLT4YIG3.js";
22
- import "./chunk-5R63Q5KH.js";
23
- import "./chunk-I6Y4O3RR.js";
24
- import "./chunk-Q5RDQNIT.js";
25
- import "./chunk-HS5PO5ZQ.js";
26
-
27
- // filter/tvs.dtcnv.continuous.js
28
- var handler2 = Object.assign({}, handler, { type: "dtcnv", fillMenu, get_pill_label });
29
- function fillMenu(self, div, tvs) {
30
- const dscnv = self.opts.vocabApi.termdbConfig.queries?.cnv;
31
- if (!dscnv) throw "cnv query is missing";
32
- const cnvDefault = dscnv.cnvCutoffsByGene?.[tvs.term.parentTerm.name] || {
33
- cnvMaxLength: dscnv.cnvMaxLength,
34
- cnvGainCutoff: dscnv.cnvGainCutoff,
35
- cnvLossCutoff: dscnv.cnvLossCutoff
36
- };
37
- const cnv = Object.assign({}, cnvDefault, tvs);
38
- const arg = {
39
- holder: div,
40
- cnvGainCutoff: cnv.cnvGainCutoff,
41
- cnvLossCutoff: cnv.cnvLossCutoff,
42
- cnvMaxLength: cnv.cnvMaxLength,
43
- cnvWT: cnv.cnvWT,
44
- genotypeToggle: true,
45
- fractionOverlap: cnv.fractionOverlap,
46
- showOverlap: true,
47
- callback: (config) => {
48
- const new_tvs = structuredClone(tvs);
49
- Object.assign(new_tvs, config);
50
- new_tvs.continuousCnv = true;
51
- self.dom.tip.hide();
52
- self.opts.callback(new_tvs);
53
- }
54
- };
55
- renderCnvConfig(arg);
56
- }
57
- function get_pill_label(tvs) {
58
- return { txt: tvs.cnvWT ? "Wildtype" : "Altered" };
59
- }
60
- export {
61
- handler2 as handler
62
- };
63
- //# sourceMappingURL=tvs.dtcnv.continuous-WP322QUP.js.map