@sjcrh/proteinpaint-client 2.200.0 → 2.201.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/2dmaf-6MNHNHWX.js +1373 -0
- package/dist/AIProjectAdmin-W36NGUX2.js +958 -0
- package/dist/AggregateMatrix-YH2SN6VN.js +671 -0
- package/dist/AggregateMatrix-YH2SN6VN.js.map +7 -0
- package/dist/AppHeader-I5CFECIL.js +835 -0
- package/dist/BoxPlot-4SXDAOBP.js +1218 -0
- package/dist/CorrelationVolcano-NAWMGG4Q.js +619 -0
- package/dist/DE-VZMT7KEM.js +95 -0
- package/dist/DEinput-TKERM2YD.js +409 -0
- package/dist/DifferentialAnalysis-Y4SU4BVP.js +243 -0
- package/dist/Disco-DLK3BYPV.js +3392 -0
- package/dist/Disco.UI-IKGMFG36.js +248 -0
- package/dist/DmrPlot-JWBZJFS6.js +642 -0
- package/dist/GB-3UZSSIBW.js +1396 -0
- package/dist/GSEA-YLHBZY55.js +846 -0
- package/dist/GeneExpInput-KX5I63YV.js +367 -0
- package/dist/Geomap-QTUHM4VH.js +89 -0
- package/dist/HicApp-M2OCHGRT.js +2250 -0
- package/dist/IDCViewer-SWFBLBZH.js +10817 -0
- package/dist/NumBinaryEditor-ILFP6DR7.js +284 -0
- package/dist/NumBinaryEditor-ILFP6DR7.js.map +7 -0
- package/dist/NumBinaryEditor.unit.spec-TNIH7GQB.js +317 -0
- package/dist/NumBinaryEditor.unit.spec-TNIH7GQB.js.map +7 -0
- package/dist/NumContEditor-7UR3QMO6.js +110 -0
- package/dist/NumContEditor-7UR3QMO6.js.map +7 -0
- package/dist/NumContEditor.unit.spec-P67AFEHM.js +169 -0
- package/dist/NumCustomBinEditor-H22J4K47.js +38 -0
- package/dist/NumCustomBinEditor.unit.spec-CO76BQPZ.js +402 -0
- package/dist/NumCustomBinEditor.unit.spec-CO76BQPZ.js.map +7 -0
- package/dist/NumDiscreteEditor-TSUHVX77.js +175 -0
- package/dist/NumDiscreteEditor-TSUHVX77.js.map +7 -0
- package/dist/NumDiscreteEditor.unit.spec-RGC3GT22.js +238 -0
- package/dist/NumDiscreteEditor.unit.spec-RGC3GT22.js.map +7 -0
- package/dist/NumRegularBinEditor-IRD27CE2.js +38 -0
- package/dist/NumRegularBinEditor.unit.spec-MUHVOK5P.js +283 -0
- package/dist/NumRegularBinEditor.unit.spec-MUHVOK5P.js.map +7 -0
- package/dist/NumSplineEditor-3V7RWHE2.js +215 -0
- package/dist/NumSplineEditor-3V7RWHE2.js.map +7 -0
- package/dist/NumSplineEditor.unit.spec-BUI7NPN4.js +229 -0
- package/dist/NumSplineEditor.unit.spec-BUI7NPN4.js.map +7 -0
- package/dist/NumericDensity-53KMCTDL.js +38 -0
- package/dist/NumericDensity.unit.spec-OKAQPQHR.js +423 -0
- package/dist/NumericDensity.unit.spec-OKAQPQHR.js.map +7 -0
- package/dist/NumericHandler-5QFNXVBA.js +39 -0
- package/dist/NumericHandler.unit.spec-OBITSUU3.js +219 -0
- package/dist/ProteomeInput-MM373EL3.js +394 -0
- package/dist/RunChart2-2L6T3ITZ.js +758 -0
- package/dist/SC-JKD3Z2X5.js +1112 -0
- package/dist/Volcano-STGBS7IJ.js +1404 -0
- package/dist/WSIViewer-LOBVUTOD.js +48562 -0
- package/dist/WsiSamplesPlot-D3L3AILR.js +165 -0
- package/dist/adSandbox-XO5HDSFW.js +38 -0
- package/dist/animatedBubbleChart-XKW6TCZP.js +553 -0
- package/dist/app-H7ABTG6X.js +49 -0
- package/dist/app-HJSPIKRQ.js +37 -0
- package/dist/app.js +19 -19
- package/dist/bam-R5QVHWGY.js +859 -0
- package/dist/barchart-OGCLBPQ2.js +47 -0
- package/dist/barchart.data-VBSWS5N7.js +21 -0
- package/dist/barchart.events-GZTY4IC3.js +47 -0
- package/dist/barchart.integration.spec-Z6ECNFSM.js +2243 -0
- package/dist/barchart2-DT42I747.js +314 -0
- package/dist/block-UYYJXSCM.js +6255 -0
- package/dist/block.init-43M53IMA.js +38 -0
- package/dist/block.mds.expressionrank-YH3IWMKM.js +359 -0
- package/dist/block.mds.geneboxplot-QS2IK37X.js +828 -0
- package/dist/block.mds.junction-7FF5BFEX.js +1545 -0
- package/dist/block.mds.svcnv-MMJYLL2W.js +6801 -0
- package/dist/block.svg-SA6DSUM2.js +164 -0
- package/dist/block.tk.aicheck-ZX5LZ2QO.js +283 -0
- package/dist/block.tk.ase-YXT4BOXK.js +365 -0
- package/dist/block.tk.bam-IMLRIOOV.js +1906 -0
- package/dist/block.tk.bedgraphdot-UYQLL7HM.js +384 -0
- package/dist/block.tk.bigwig.ui-WUVLVRSM.js +211 -0
- package/dist/block.tk.hicstraw-N4SJGF7H.js +823 -0
- package/dist/block.tk.junction-LZWHFKWJ.js +2364 -0
- package/dist/block.tk.junction.textmatrixui-B626NYPA.js +199 -0
- package/dist/block.tk.ld-6VWUMAP6.js +99 -0
- package/dist/block.tk.menu-RRN2UPQX.js +1029 -0
- package/dist/block.tk.pgv-GYG3EI6P.js +944 -0
- package/dist/brainImaging-VIMLETC5.js +423 -0
- package/dist/brainRegions-DRYZT5K5.js +221 -0
- package/dist/bubbleHeatmap-Y4SGMVJY.js +383 -0
- package/dist/cellTypeBubbleHeatmap-QW37ZT5W.js +283 -0
- package/dist/chunk-2Y5C7GJS.js +299 -0
- package/dist/chunk-2ZTCRUOL.js +2899 -0
- package/dist/chunk-3O6XFPUB.js +243 -0
- package/dist/chunk-3O6XFPUB.js.map +7 -0
- package/dist/chunk-3P74DH6P.js +236 -0
- package/dist/chunk-3PPCZPLN.js +98 -0
- package/dist/chunk-4H4WJJ2G.js +54 -0
- package/dist/chunk-4L2OSDQ6.js +626 -0
- package/dist/chunk-4USLEUNR.js +1812 -0
- package/dist/chunk-5ITKSTJX.js +34 -0
- package/dist/chunk-5VMYXVZG.js +272 -0
- package/dist/chunk-75T7ESEO.js +61 -0
- package/dist/chunk-75T7ESEO.js.map +7 -0
- package/dist/chunk-7ZVFLC2V.js +134 -0
- package/dist/chunk-A7OWXDYA.js +129 -0
- package/dist/chunk-A7OWXDYA.js.map +7 -0
- package/dist/chunk-C2JHLAKV.js +222 -0
- package/dist/chunk-C2JHLAKV.js.map +7 -0
- package/dist/chunk-C5IAIOCA.js +102 -0
- package/dist/chunk-CIRCVMWE.js +102 -0
- package/dist/chunk-CLTRQZGJ.js +170 -0
- package/dist/chunk-CRH37PEV.js +203 -0
- package/dist/chunk-DCNDZOI3.js +6364 -0
- package/dist/chunk-DCR4QQ5Y.js +194 -0
- package/dist/chunk-DKAHHMKN.js +5070 -0
- package/dist/chunk-E2GHT7RH.js +39 -0
- package/dist/chunk-EQCVSUAF.js +37 -0
- package/dist/chunk-ETK36FXN.js +384 -0
- package/dist/chunk-FCOX5Q4Q.js +58 -0
- package/dist/chunk-FVL37XFU.js +834 -0
- package/dist/chunk-FXQXCOII.js +101 -0
- package/dist/chunk-FXQXCOII.js.map +7 -0
- package/dist/chunk-FXS4I3Z3.js +176 -0
- package/dist/chunk-FYAY6D3O.js +123 -0
- package/dist/chunk-GEQUQ3GG.js +1652 -0
- package/dist/chunk-GEQUQ3GG.js.map +7 -0
- package/dist/chunk-GL44X7JY.js +302 -0
- package/dist/chunk-HQAJVJCQ.js +195 -0
- package/dist/chunk-HQAJVJCQ.js.map +7 -0
- package/dist/chunk-IQVBMLFI.js +446 -0
- package/dist/chunk-IYT5PNYJ.js +148 -0
- package/dist/chunk-J6EP7JPJ.js +1245 -0
- package/dist/chunk-JKMN7XOP.js +1114 -0
- package/dist/chunk-JKMN7XOP.js.map +7 -0
- package/dist/chunk-JLGCQ2F4.js +480 -0
- package/dist/chunk-JQT67SWE.js +263 -0
- package/dist/chunk-JQYPRW42.js +217 -0
- package/dist/chunk-K4IGOJPT.js +160 -0
- package/dist/chunk-K6OVOHIZ.js +21483 -0
- package/dist/chunk-K6OVOHIZ.js.map +7 -0
- package/dist/chunk-KPTPDZX2.js +56 -0
- package/dist/chunk-KTB7KXC2.js +187 -0
- package/dist/chunk-KW7MKBGF.js +2681 -0
- package/dist/chunk-KZFVYDVK.js +448 -0
- package/dist/chunk-L44P5N4U.js +314 -0
- package/dist/chunk-L44P5N4U.js.map +7 -0
- package/dist/chunk-M77DCLJX.js +100 -0
- package/dist/chunk-MFEYO6FB.js +4306 -0
- package/dist/chunk-MFEYO6FB.js.map +7 -0
- package/dist/chunk-MGGAWPTR.js +54 -0
- package/dist/chunk-MKPU5TWN.js +194 -0
- package/dist/chunk-MKPU5TWN.js.map +7 -0
- package/dist/chunk-MUJMZ6W6.js +129 -0
- package/dist/chunk-NRP55BOF.js +50 -0
- package/dist/chunk-O5KFJBU3.js +1942 -0
- package/dist/chunk-Q4AP5L7R.js +1311 -0
- package/dist/chunk-Q4AP5L7R.js.map +7 -0
- package/dist/chunk-QHPN3JJZ.js +55 -0
- package/dist/chunk-QSGXZEUU.js +465 -0
- package/dist/chunk-R3ARQMM4.js +119 -0
- package/dist/chunk-RIQT2LSR.js +479 -0
- package/dist/chunk-RVRRHEUG.js +26 -0
- package/dist/chunk-SOCGXVIL.js +2327 -0
- package/dist/chunk-SZHFBRRT.js +514 -0
- package/dist/chunk-TOYMIFHN.js +381 -0
- package/dist/chunk-TPVHGI7Q.js +368 -0
- package/dist/chunk-TRQUMV4T.js +254 -0
- package/dist/chunk-UFLJ6PRI.js +387 -0
- package/dist/chunk-UFLJ6PRI.js.map +7 -0
- package/dist/chunk-UJN2RH5R.js +411 -0
- package/dist/chunk-UJN2RH5R.js.map +7 -0
- package/dist/chunk-UO7MD3XA.js +556 -0
- package/dist/chunk-UONOFG2J.js +274 -0
- package/dist/chunk-V2DU2OXH.js +1710 -0
- package/dist/chunk-WWXXSQ2M.js +31 -0
- package/dist/chunk-X6VTVZY7.js +263 -0
- package/dist/chunk-X7KRSZQT.js +2784 -0
- package/dist/chunk-XFAL46LZ.js +102 -0
- package/dist/chunk-XFAL46LZ.js.map +7 -0
- package/dist/chunk-XIBY5I6F.js +240 -0
- package/dist/chunk-XIBY5I6F.js.map +7 -0
- package/dist/chunk-XJBSBIZ4.js +70 -0
- package/dist/chunk-XRQWZJJ3.js +347 -0
- package/dist/chunk-XZ4M3QAV.js +158 -0
- package/dist/chunk-YMP4YKBN.js +142 -0
- package/dist/chunk-YUURGVV3.js +275 -0
- package/dist/chunk-Z7VK2AMA.js +292 -0
- package/dist/chunk-ZFJUVP2N.js +787 -0
- package/dist/chunk-ZH7JPYQE.js +14 -0
- package/dist/chunk-ZVDOSFWU.js +276 -0
- package/dist/cohort-CEYVJJ7E.js +75 -0
- package/dist/condition-QSOFP4MY.js +332 -0
- package/dist/controls-QYHARIEY.js +39 -0
- package/dist/controls.config-3OO3JK6E.js +39 -0
- package/dist/correlation-TOI3TMYL.js +102 -0
- package/dist/cuminc-L7OJTYXC.js +1148 -0
- package/dist/cuminc.integration.spec-LSWV3KOF.js +678 -0
- package/dist/customdata.inputui-VMB3HSSC.js +289 -0
- package/dist/dataDownload-NPSWNOAG.js +330 -0
- package/dist/dataDownload.integration.spec-J6FRFLBK.js +193 -0
- package/dist/databrowser.ui-GVYWG6YI.js +432 -0
- package/dist/dictionary-GD67R72W.js +118 -0
- package/dist/dnaMethylation-S7OSGLAF.js +38 -0
- package/dist/dnaMethylation.integration.spec-ETMMJNDE.js +203 -0
- package/dist/dofetch-7GURQS65.js +51 -0
- package/dist/e2pca-ZIIPBJFN.js +350 -0
- package/dist/ep-A2HAL5WA.js +1256 -0
- package/dist/expclust.gdc.spec-ZSILLYNI.js +307 -0
- package/dist/facet-74LKIPTA.js +521 -0
- package/dist/gb-C3MPQXKN.js +88 -0
- package/dist/geneExpClustering-HYCFUUTU.js +249 -0
- package/dist/geneExpression-GATKMJJ5.js +313 -0
- package/dist/geneExpression-JXSAP2H7.js +38 -0
- package/dist/geneExpression.unit.spec-CODZYFHZ.js +102 -0
- package/dist/geneORA-LJRIR4VV.js +278 -0
- package/dist/geneRanking-TWLBKQZG.js +553 -0
- package/dist/geneVariant-35RQHTCK.js +41 -0
- package/dist/geneVariant-TMJJIMUF.js +39 -0
- package/dist/geneVariant.integration.spec-FIQ7IBSD.js +198 -0
- package/dist/genefusion.ui-SOBESSNO.js +308 -0
- package/dist/geneset-JXEJFEK2.js +208 -0
- package/dist/genomeBrowser.spec-25ZO5S2X.js +281 -0
- package/dist/grin2-CW4RPVPI.js +75 -0
- package/dist/grin2-EI5BVP4E.js +1143 -0
- package/dist/hierCluster-OBBPQH24.js +59 -0
- package/dist/hierCluster-SDH3TJQY.js +63 -0
- package/dist/hierCluster.config-DO67TCXI.js +40 -0
- package/dist/hierCluster.integration.spec-EB24C4VZ.js +488 -0
- package/dist/hierCluster.interactivity-LGEAFT5T.js +54 -0
- package/dist/hierCluster.renderers-FXDCU3PN.js +21 -0
- package/dist/imagePlot-LGLFG2QZ.js +163 -0
- package/dist/importPlot-R2WRZGZU.js +8 -0
- package/dist/isoformExpression-KI3WY5M3.js +40 -0
- package/dist/isoformExpression.unit.spec-OQRG2DDU.js +242 -0
- package/dist/junction-6SWFPNM5.js +41 -0
- package/dist/junction.customTerm-MDBOU6I7.js +18 -0
- package/dist/junction.unit.spec-5TZFITSU.js +187 -0
- package/dist/launch.adhoc-HCX2RQLB.js +42 -0
- package/dist/leftlabel.sample-OI6XCXTQ.js +263 -0
- package/dist/lollipop-SOSOYHYL.js +171 -0
- package/dist/maf-73RLOEVN.js +459 -0
- package/dist/maftimeline-UOMLYUNI.js +593 -0
- package/dist/matrix-5QWDN6SI.js +63 -0
- package/dist/matrix-SKPVVDVR.js +58 -0
- package/dist/matrix.cells-CFSI2NWU.js +28 -0
- package/dist/matrix.config-HE64MAL4.js +41 -0
- package/dist/matrix.data-HTUZXQAM.js +25 -0
- package/dist/matrix.groups-ZFKWVNMX.js +27 -0
- package/dist/matrix.integration.spec-YKJ4LZFY.js +3072 -0
- package/dist/matrix.interactivity-YB5G5W5T.js +42 -0
- package/dist/matrix.layout-MFG65V7K.js +44 -0
- package/dist/matrix.legend-7MIZZJVB.js +22 -0
- package/dist/matrix.renderers-PCZFHDDZ.js +38 -0
- package/dist/matrix.serieses-7KYX3KAY.js +21 -0
- package/dist/matrix.sort-CR3J45MQ.js +27 -0
- package/dist/matrix.sort.unit.spec-GEAM5DSU.js +472 -0
- package/dist/matrix.sorterUi-YSKIX6B6.js +18 -0
- package/dist/matrix.sorterUi.unit.spec-2MW64QS5.js +342 -0
- package/dist/mavb-YMHJXCGA.js +732 -0
- package/dist/mds.fimo-PTEDRMLQ.js +518 -0
- package/dist/mds.samplescatterplot-7R7PLVQJ.js +1550 -0
- package/dist/mds.survivalplot-F3EENMFQ.js +483 -0
- package/dist/numericDictTermCluster-3HXLMURH.js +65 -0
- package/dist/oncomatrix-27VVSMZB.js +295 -0
- package/dist/oncomatrix.spec-F43Y7CWN.js +448 -0
- package/dist/plot.2dvaf-MYFQSWIA.js +377 -0
- package/dist/plot.app-36QWCKXR.js +41 -0
- package/dist/plot.barplot-535EP7XT.js +102 -0
- package/dist/plot.boxplot-6IBP7VEB.js +152 -0
- package/dist/plot.brainImaging-M4HPNXZH.js +51 -0
- package/dist/plot.disco-HIT6GR44.js +102 -0
- package/dist/plot.dzi-W66SBKTH.js +33 -0
- package/dist/plot.ssgq-MI2OMCUY.js +139 -0
- package/dist/plot.vaf2cov-F4CBMLRA.js +259 -0
- package/dist/plot.wsi-7M5KTNFC.js +36 -0
- package/dist/polar2-7VSWGT4U.js +237 -0
- package/dist/profileForms-DFPCNJW2.js +940 -0
- package/dist/profilePlot-ECTPPVB2.js +54 -0
- package/dist/proteinView-6ELOLOIU.js +1568 -0
- package/dist/proteomeCohortCompare-V2FMWI62.js +799 -0
- package/dist/pseudbulk.unit.spec-KV6URTXC.js +91 -0
- package/dist/pseudobulk-6ZRFCE65.js +40 -0
- package/dist/qualitative-3B62RUOB.js +43 -0
- package/dist/qualitative-GJDQBD7L.js +220 -0
- package/dist/radar2-4QQER64E.js +332 -0
- package/dist/radarFacility2-MZKORRDY.js +340 -0
- package/dist/regression-GZ2YNX6Y.js +56 -0
- package/dist/regression.inputs-ZEFDNSVT.js +48 -0
- package/dist/regression.inputs.term-O2FQBX7L.js +48 -0
- package/dist/regression.inputs.values.table-63BQKSZP.js +45 -0
- package/dist/regression.integration.spec-KDHC3KDU.js +838 -0
- package/dist/regression.integration.spec-KDHC3KDU.js.map +7 -0
- package/dist/regression.results-5J3QM4RX.js +40 -0
- package/dist/regression.spec-WZAZTDDA.js +708 -0
- package/dist/render-MZTEXVU5.js +38 -0
- package/dist/report-M5TYHH2W.js +222 -0
- package/dist/sampleView-QYTLYJEW.js +48 -0
- package/dist/samplelst-FN3Q7M7A.js +111 -0
- package/dist/samplematrix-Z5FVODO7.js +2198 -0
- package/dist/sc-4CHP5SYP.js +86 -0
- package/dist/scatter-UOPJYXL3.js +890 -0
- package/dist/scatter-UOPJYXL3.js.map +7 -0
- package/dist/selectGenomeWithTklst-WMAHGT4F.js +134 -0
- package/dist/singleCellCellType-XPWENB6V.js +38 -0
- package/dist/singleCellCellType.unit.spec-QK56PHKW.js +159 -0
- package/dist/singleCellGeneExpression-4CEVDVYF.js +38 -0
- package/dist/singleCellGeneExpression.unit.spec-ZYRLBVF5.js +153 -0
- package/dist/singleCellPlot-JS74VUGC.js +54 -0
- package/dist/singlecell-5XYOHMWJ.js +1572 -0
- package/dist/singlecell-OO77XBDD.js +86 -0
- package/dist/snp-X5ZILM5J.js +38 -0
- package/dist/snp.unit.spec-V23G3JLJ.js +176 -0
- package/dist/snplocus-U5UIIUWR.js +208 -0
- package/dist/spliceevent.a53ss.diagram-YDFVSDMT.js +151 -0
- package/dist/spliceevent.exonskip.diagram-VDKN5JBE.js +283 -0
- package/dist/spliceevent.noeventdiagram-EFPFRUFI.js +460 -0
- package/dist/ssGSEA-LKJW5OQK.js +38 -0
- package/dist/ssGSEA.unit.spec-7WCZVEP2.js +88 -0
- package/dist/studyCatalog-EU33KE5H.js +358 -0
- package/dist/summarizeCnvGeneexp-QL25OQNB.js +163 -0
- package/dist/summarizeGeneexpSurvival-B7HTCH7L.js +110 -0
- package/dist/summarizeMutationCnv-DFAPX2JE.js +164 -0
- package/dist/summarizeMutationDiagnosis-HCSDSVII.js +40 -0
- package/dist/summarizeMutationSurvival-6WEASSA2.js +99 -0
- package/dist/summary-BWYXE77G.js +49 -0
- package/dist/summary.integration.spec-AVGSW5MF.js +414 -0
- package/dist/summaryInput-MOQ6HUCX.js +231 -0
- package/dist/sunburst-EZDHVJCL.js +284 -0
- package/dist/survival-5TFMM7NP.js +1239 -0
- package/dist/survival-IEVELTC4.js +58 -0
- package/dist/survival.integration.spec-HHWP3R4H.js +958 -0
- package/dist/svgraph-55XRIYJW.js +1387 -0
- package/dist/svmr-CMEBFSRO.js +3842 -0
- package/dist/table-LTWQ3TLQ.js +200 -0
- package/dist/termCollection-CPQXYBFA.js +38 -0
- package/dist/termCollection-ZWOH273K.js +257 -0
- package/dist/termCollection.unit.spec-RK7VATLU.js +304 -0
- package/dist/termCollectionFractionSelection-Z4ZRW63R.js +47 -0
- package/dist/termCollectionFractionSelection.unit.spec-3CS7DPNU.js +193 -0
- package/dist/tk-4NNTWWLK.js +46 -0
- package/dist/tk-RHWJJXH2.js +1127 -0
- package/dist/tp.ui-DPN5UN6U.js +1459 -0
- package/dist/tvs.density-LMRZZO4D.js +19 -0
- package/dist/tvs.dt-ARPDFRVM.js +39 -0
- package/dist/tvs.dtcnv.categorical-POS6WQK6.js +40 -0
- package/dist/tvs.dtcnv.continuous-5OETJ7JU.js +72 -0
- package/dist/tvs.dtfusion-ERYVI3DW.js +40 -0
- package/dist/tvs.dtitd-KTZZYEWU.js +40 -0
- package/dist/tvs.dtsnvindel-TGUAX3RN.js +40 -0
- package/dist/tvs.dtsv-AM63OIL6.js +40 -0
- package/dist/tvs.numeric-MQPO5XUQ.js +22 -0
- package/dist/tvs.samplelst-VW2NOQ2C.js +104 -0
- package/dist/tvs.termCollection-O4ZSWJFA.js +129 -0
- package/dist/violin-ZQ3DEYGR.js +46 -0
- package/dist/violin.integration.spec-PVEF77HB.js +1425 -0
- package/dist/violin.interactivity-FYU4TCFO.js +38 -0
- package/dist/violin.renderer-XAERGBMV.js +40 -0
- package/dist/vocabulary-ECJX27W2.js +41 -0
- package/package.json +3 -3
- package/dist/2dmaf-RRV3ORZR.js +0 -1373
- package/dist/AIProjectAdmin-DKLEFCGX.js +0 -958
- package/dist/AppHeader-WQ2F7HZY.js +0 -835
- package/dist/BoxPlot-5JQCYENZ.js +0 -1218
- package/dist/CorrelationVolcano-HR6IP2SZ.js +0 -619
- package/dist/DE-DAW6ZKM7.js +0 -95
- package/dist/DEinput-XCR4VMR3.js +0 -409
- package/dist/DifferentialAnalysis-SETJAZEN.js +0 -243
- package/dist/Disco-QEBEVQS2.js +0 -3392
- package/dist/Disco.UI-OYVL7UBI.js +0 -248
- package/dist/DmrPlot-CWBQDZL7.js +0 -642
- package/dist/GB-5PYCR4SV.js +0 -1396
- package/dist/GSEA-6UKMI6GY.js +0 -846
- package/dist/GeneExpInput-2N62XM7Z.js +0 -367
- package/dist/Geomap-ANMR32HE.js +0 -89
- package/dist/HicApp-WHPUPHEM.js +0 -2250
- package/dist/IDCViewer-FWXRE4AX.js +0 -10817
- package/dist/NumBinaryEditor-VG5KOGDA.js +0 -271
- package/dist/NumBinaryEditor-VG5KOGDA.js.map +0 -7
- package/dist/NumBinaryEditor.unit.spec-UCGFZS3P.js +0 -286
- package/dist/NumBinaryEditor.unit.spec-UCGFZS3P.js.map +0 -7
- package/dist/NumContEditor-J52RON3G.js +0 -109
- package/dist/NumContEditor-J52RON3G.js.map +0 -7
- package/dist/NumContEditor.unit.spec-5GTWUJEL.js +0 -169
- package/dist/NumCustomBinEditor-GM2OJMOX.js +0 -38
- package/dist/NumCustomBinEditor.unit.spec-3PGJ25J4.js +0 -284
- package/dist/NumCustomBinEditor.unit.spec-3PGJ25J4.js.map +0 -7
- package/dist/NumDiscreteEditor-2CAKT3Y4.js +0 -179
- package/dist/NumDiscreteEditor-2CAKT3Y4.js.map +0 -7
- package/dist/NumDiscreteEditor.unit.spec-XCWSJTRT.js +0 -202
- package/dist/NumDiscreteEditor.unit.spec-XCWSJTRT.js.map +0 -7
- package/dist/NumRegularBinEditor-CZYITY5L.js +0 -38
- package/dist/NumRegularBinEditor.unit.spec-OUBZ5XB3.js +0 -227
- package/dist/NumRegularBinEditor.unit.spec-OUBZ5XB3.js.map +0 -7
- package/dist/NumSplineEditor-TWRL5AQQ.js +0 -198
- package/dist/NumSplineEditor-TWRL5AQQ.js.map +0 -7
- package/dist/NumSplineEditor.unit.spec-5P6NQZ3N.js +0 -199
- package/dist/NumSplineEditor.unit.spec-5P6NQZ3N.js.map +0 -7
- package/dist/NumericDensity-JSOFOEH2.js +0 -38
- package/dist/NumericDensity.unit.spec-REUKHMKK.js +0 -221
- package/dist/NumericDensity.unit.spec-REUKHMKK.js.map +0 -7
- package/dist/NumericHandler-UZOGKPKB.js +0 -39
- package/dist/NumericHandler.unit.spec-X2DAED4O.js +0 -219
- package/dist/ProteomeInput-GBVCLNS7.js +0 -394
- package/dist/RunChart2-N4JPWNVV.js +0 -758
- package/dist/SC-RCZT5BRP.js +0 -1112
- package/dist/Volcano-2BQ6SYHO.js +0 -1404
- package/dist/WSIViewer-UDA4WIRT.js +0 -48562
- package/dist/WsiSamplesPlot-DYSFMD22.js +0 -165
- package/dist/adSandbox-5BUDCAER.js +0 -38
- package/dist/animatedBubbleChart-N6MBJ4X3.js +0 -553
- package/dist/app-O64TGDFH.js +0 -37
- package/dist/app-Y2STUISK.js +0 -49
- package/dist/bam-2EOABVGT.js +0 -859
- package/dist/barchart-UHCTYRMJ.js +0 -47
- package/dist/barchart.data-LSK2P2PR.js +0 -21
- package/dist/barchart.events-Y4H2GADS.js +0 -47
- package/dist/barchart.integration.spec-BFGZFECA.js +0 -2243
- package/dist/barchart2-VIZKZRMP.js +0 -314
- package/dist/block-BGSSF6XP.js +0 -6255
- package/dist/block.init-H7RKUIHG.js +0 -38
- package/dist/block.mds.expressionrank-MA3HGT7S.js +0 -359
- package/dist/block.mds.geneboxplot-CWT5DM5T.js +0 -828
- package/dist/block.mds.junction-P4I7O73X.js +0 -1545
- package/dist/block.mds.svcnv-NSPEY43S.js +0 -6801
- package/dist/block.svg-DP4G3LNQ.js +0 -164
- package/dist/block.tk.aicheck-EBLTOWKZ.js +0 -283
- package/dist/block.tk.ase-X7WKQOFS.js +0 -365
- package/dist/block.tk.bam-OIP3TS3N.js +0 -1906
- package/dist/block.tk.bedgraphdot-2DDF55J3.js +0 -384
- package/dist/block.tk.bigwig.ui-S2SMAEXM.js +0 -211
- package/dist/block.tk.hicstraw-4OIG4TBZ.js +0 -823
- package/dist/block.tk.junction-52OWEQUN.js +0 -2364
- package/dist/block.tk.junction.textmatrixui-64YOSZLW.js +0 -199
- package/dist/block.tk.ld-3AMNHBDY.js +0 -99
- package/dist/block.tk.menu-4724DJXL.js +0 -1029
- package/dist/block.tk.pgv-2SIOPWYI.js +0 -944
- package/dist/brainImaging-D43CQQN6.js +0 -423
- package/dist/brainRegions-HJ2VGL3L.js +0 -221
- package/dist/bubbleHeatmap-IL44M4QZ.js +0 -383
- package/dist/cellTypeBubbleHeatmap-NQP7RCZO.js +0 -283
- package/dist/chunk-26APRXD3.js +0 -254
- package/dist/chunk-2GLA2SWU.js +0 -160
- package/dist/chunk-3BGFM7Q4.js +0 -1275
- package/dist/chunk-3BGFM7Q4.js.map +0 -7
- package/dist/chunk-3SHZTAGF.js +0 -193
- package/dist/chunk-3SHZTAGF.js.map +0 -7
- package/dist/chunk-46X6AQ7Z.js +0 -123
- package/dist/chunk-4HZN6PMU.js +0 -129
- package/dist/chunk-4KRGCOTL.js +0 -479
- package/dist/chunk-5DMVORBB.js +0 -98
- package/dist/chunk-5QMBB4SK.js +0 -1245
- package/dist/chunk-5RVA43MN.js +0 -274
- package/dist/chunk-5T3MOOEJ.js +0 -379
- package/dist/chunk-5T3MOOEJ.js.map +0 -7
- package/dist/chunk-5T3ZDRTS.js +0 -70
- package/dist/chunk-5ZTVJSYI.js +0 -834
- package/dist/chunk-6JYQGZ3Y.js +0 -446
- package/dist/chunk-6OUBUUC2.js +0 -626
- package/dist/chunk-6PNPHACF.js +0 -1652
- package/dist/chunk-6PNPHACF.js.map +0 -7
- package/dist/chunk-7JRDJNLR.js +0 -263
- package/dist/chunk-7PIHRWGG.js +0 -102
- package/dist/chunk-7PJNKPQB.js +0 -275
- package/dist/chunk-AGLAYNXP.js +0 -170
- package/dist/chunk-B7VDZ6VF.js +0 -399
- package/dist/chunk-B7VDZ6VF.js.map +0 -7
- package/dist/chunk-BGTBRAJ6.js +0 -50
- package/dist/chunk-BNAO6N5X.js +0 -2899
- package/dist/chunk-BQHPJY2M.js +0 -347
- package/dist/chunk-BZTWTH4Y.js +0 -87
- package/dist/chunk-BZTWTH4Y.js.map +0 -7
- package/dist/chunk-CY4RQ5L6.js +0 -1710
- package/dist/chunk-D565DNJD.js +0 -236
- package/dist/chunk-DH3LAQKT.js +0 -384
- package/dist/chunk-E3VF4RHJ.js +0 -381
- package/dist/chunk-EGPNRSPF.js +0 -292
- package/dist/chunk-FACITNG5.js +0 -142
- package/dist/chunk-GNS6CQMA.js +0 -119
- package/dist/chunk-H3N4KYKL.js +0 -2327
- package/dist/chunk-H3VWJH4U.js +0 -14
- package/dist/chunk-HEVKBSN6.js +0 -222
- package/dist/chunk-HEVKBSN6.js.map +0 -7
- package/dist/chunk-HQUYAZQY.js +0 -514
- package/dist/chunk-IUBBQPO2.js +0 -146
- package/dist/chunk-IUBBQPO2.js.map +0 -7
- package/dist/chunk-J4USU73L.js +0 -26
- package/dist/chunk-JNITUVXP.js +0 -41
- package/dist/chunk-JNITUVXP.js.map +0 -7
- package/dist/chunk-JVPWIVDT.js +0 -1812
- package/dist/chunk-KU7YH7MV.js +0 -217
- package/dist/chunk-KZILNGAV.js +0 -187
- package/dist/chunk-LSEFWW72.js +0 -94
- package/dist/chunk-LSEFWW72.js.map +0 -7
- package/dist/chunk-M66VDGSH.js +0 -272
- package/dist/chunk-MJN6RDXB.js +0 -302
- package/dist/chunk-MPNEZ6EL.js +0 -31
- package/dist/chunk-MPSLUEI4.js +0 -314
- package/dist/chunk-MPSLUEI4.js.map +0 -7
- package/dist/chunk-NIXFCC7X.js +0 -368
- package/dist/chunk-NODQZTWK.js +0 -276
- package/dist/chunk-NRYHIWBS.js +0 -1942
- package/dist/chunk-NUWJ4RN7.js +0 -465
- package/dist/chunk-NVTJ5AUT.js +0 -1102
- package/dist/chunk-NVTJ5AUT.js.map +0 -7
- package/dist/chunk-NZRMHM76.js +0 -158
- package/dist/chunk-OOWXMY7U.js +0 -55
- package/dist/chunk-OTTMHVYH.js +0 -787
- package/dist/chunk-QDX2XUNF.js +0 -58
- package/dist/chunk-QYXCHZ6U.js +0 -4282
- package/dist/chunk-QYXCHZ6U.js.map +0 -7
- package/dist/chunk-R6NM2HSH.js +0 -556
- package/dist/chunk-RJOY6A74.js +0 -56
- package/dist/chunk-ROMW4AK2.js +0 -102
- package/dist/chunk-RR5U35N7.js +0 -230
- package/dist/chunk-RR5U35N7.js.map +0 -7
- package/dist/chunk-RVKADD4L.js +0 -148
- package/dist/chunk-S5ZCK44Z.js +0 -54
- package/dist/chunk-SNRIVNQ3.js +0 -176
- package/dist/chunk-STI7BO3P.js +0 -2681
- package/dist/chunk-TAM7UCAI.js +0 -263
- package/dist/chunk-TDKMBQSM.js +0 -5070
- package/dist/chunk-TKW5TW4Z.js +0 -21449
- package/dist/chunk-TKW5TW4Z.js.map +0 -7
- package/dist/chunk-TQTYW66I.js +0 -2784
- package/dist/chunk-U3NTH4CS.js +0 -54
- package/dist/chunk-UEGQVQD6.js +0 -34
- package/dist/chunk-ULESDMUT.js +0 -480
- package/dist/chunk-UUKSL7QC.js +0 -134
- package/dist/chunk-VUPWQCDR.js +0 -194
- package/dist/chunk-W76X6W73.js +0 -100
- package/dist/chunk-W7OS7BNM.js +0 -203
- package/dist/chunk-WKNI3HRQ.js +0 -39
- package/dist/chunk-WTTD6DUL.js +0 -6364
- package/dist/chunk-WXPFMVU6.js +0 -299
- package/dist/chunk-XNWUI5VL.js +0 -37
- package/dist/chunk-YBLTSYQV.js +0 -216
- package/dist/chunk-YBLTSYQV.js.map +0 -7
- package/dist/chunk-Z7VDFWIP.js +0 -126
- package/dist/chunk-Z7VDFWIP.js.map +0 -7
- package/dist/chunk-ZEKIUYN3.js +0 -448
- package/dist/cohort-OWLNJZVH.js +0 -75
- package/dist/condition-L2IXP6WH.js +0 -332
- package/dist/controls-2S5QVWUC.js +0 -39
- package/dist/controls.config-3AJKR4ZZ.js +0 -39
- package/dist/correlation-DXTAWSLU.js +0 -102
- package/dist/cuminc-WQB6FHVS.js +0 -1148
- package/dist/cuminc.integration.spec-WAYRLHUH.js +0 -678
- package/dist/customdata.inputui-7WH2NJGB.js +0 -289
- package/dist/dataDownload-HM4UYOBO.js +0 -330
- package/dist/dataDownload.integration.spec-F5CO4BWA.js +0 -193
- package/dist/databrowser.ui-E2YOG3L4.js +0 -432
- package/dist/dictionary-EEPTFDYD.js +0 -118
- package/dist/dnaMethylation-N3WNK6XA.js +0 -38
- package/dist/dnaMethylation.integration.spec-AIYRTFMR.js +0 -203
- package/dist/dofetch-YKYPEJTQ.js +0 -51
- package/dist/e2pca-JEZIGVB2.js +0 -350
- package/dist/ep-5FMH2MLV.js +0 -1256
- package/dist/expclust.gdc.spec-FR26VSUA.js +0 -307
- package/dist/facet-5YYY3MUN.js +0 -521
- package/dist/gb-WGEVO7L2.js +0 -88
- package/dist/geneExpClustering-DHE6XJHV.js +0 -249
- package/dist/geneExpression-5NWQXMJ3.js +0 -313
- package/dist/geneExpression-VWUMM2LU.js +0 -38
- package/dist/geneExpression.unit.spec-HBU3WTZ4.js +0 -102
- package/dist/geneORA-3VWFWDYI.js +0 -278
- package/dist/geneRanking-PKDVD5OD.js +0 -553
- package/dist/geneVariant-IFIJQXH4.js +0 -39
- package/dist/geneVariant-WZSOG4GI.js +0 -41
- package/dist/geneVariant.integration.spec-6KQMWVHR.js +0 -198
- package/dist/genefusion.ui-C4NTALL3.js +0 -308
- package/dist/geneset-RJAULSKC.js +0 -208
- package/dist/genomeBrowser.spec-42OTTMGO.js +0 -281
- package/dist/grin2-26O6YDDY.js +0 -75
- package/dist/grin2-FT5BQJMB.js +0 -1143
- package/dist/hierCluster-GJPPMFNR.js +0 -59
- package/dist/hierCluster-HMJF3PBE.js +0 -63
- package/dist/hierCluster.config-TAS7XKTU.js +0 -40
- package/dist/hierCluster.integration.spec-RLHQKX65.js +0 -488
- package/dist/hierCluster.interactivity-IKTAJ6CU.js +0 -54
- package/dist/hierCluster.renderers-I6WFZRNW.js +0 -21
- package/dist/imagePlot-N4OXNMVA.js +0 -163
- package/dist/importPlot-VMYXDP66.js +0 -8
- package/dist/isoformExpression-2KV64KMN.js +0 -40
- package/dist/isoformExpression.unit.spec-RG2VWEMG.js +0 -242
- package/dist/junction-VO4IGMW2.js +0 -41
- package/dist/junction.customTerm-EFMHHVWA.js +0 -18
- package/dist/junction.unit.spec-NB24MR2B.js +0 -187
- package/dist/launch.adhoc-R3MO3VXK.js +0 -42
- package/dist/leftlabel.sample-SI6KMULD.js +0 -263
- package/dist/lollipop-XIVE4ANX.js +0 -171
- package/dist/maf-WRHD4OJF.js +0 -459
- package/dist/maftimeline-IE6YKV7Y.js +0 -593
- package/dist/matrix-ALBCAZP5.js +0 -58
- package/dist/matrix-W72XRUZD.js +0 -63
- package/dist/matrix.cells-DEEUWC74.js +0 -28
- package/dist/matrix.config-JYXQOXDT.js +0 -41
- package/dist/matrix.data-ENXNM6RP.js +0 -25
- package/dist/matrix.groups-EXSNNESB.js +0 -27
- package/dist/matrix.integration.spec-BW6U6PIW.js +0 -3072
- package/dist/matrix.interactivity-G6AL566T.js +0 -42
- package/dist/matrix.layout-UBUPIJ3R.js +0 -44
- package/dist/matrix.legend-S3P4F2DG.js +0 -22
- package/dist/matrix.renderers-IXFGXHJQ.js +0 -38
- package/dist/matrix.serieses-THHXUAPM.js +0 -21
- package/dist/matrix.sort-WJV6LIZI.js +0 -27
- package/dist/matrix.sort.unit.spec-LGMIL2LR.js +0 -472
- package/dist/matrix.sorterUi-VXVCOKEZ.js +0 -18
- package/dist/matrix.sorterUi.unit.spec-CWSEJ62U.js +0 -342
- package/dist/mavb-SXGKASQ5.js +0 -732
- package/dist/mds.fimo-EDOT3TDN.js +0 -518
- package/dist/mds.samplescatterplot-IXHNABKB.js +0 -1550
- package/dist/mds.survivalplot-KTTMHHII.js +0 -483
- package/dist/numericDictTermCluster-H4JSPW22.js +0 -65
- package/dist/oncomatrix-O4EMNUOT.js +0 -295
- package/dist/oncomatrix.spec-BME6CQWF.js +0 -448
- package/dist/plot.2dvaf-FDM4KXGT.js +0 -377
- package/dist/plot.app-UNUXG7ND.js +0 -41
- package/dist/plot.barplot-R333TMG2.js +0 -102
- package/dist/plot.boxplot-KQTYGUN3.js +0 -152
- package/dist/plot.brainImaging-YBYMHCEG.js +0 -51
- package/dist/plot.disco-CMDKRSOM.js +0 -102
- package/dist/plot.dzi-YAZA6RQS.js +0 -33
- package/dist/plot.ssgq-YKCOEXZP.js +0 -139
- package/dist/plot.vaf2cov-3TLMTFZS.js +0 -259
- package/dist/plot.wsi-7ADVYTQS.js +0 -36
- package/dist/polar2-O5SHVLP4.js +0 -237
- package/dist/profileForms-RLB6SMPQ.js +0 -940
- package/dist/profilePlot-AP52VLLO.js +0 -54
- package/dist/proteinView-S7WDBMQU.js +0 -1568
- package/dist/proteomeCohortCompare-ERVUM7RO.js +0 -799
- package/dist/pseudbulk.unit.spec-VSH7IM3R.js +0 -91
- package/dist/pseudobulk-7UKRLKQI.js +0 -40
- package/dist/qualitative-2D7MC4V5.js +0 -43
- package/dist/qualitative-2INAKDTJ.js +0 -220
- package/dist/radar2-ELVGQFZE.js +0 -332
- package/dist/radarFacility2-SDAZHGNG.js +0 -340
- package/dist/regression-CE54AQMY.js +0 -56
- package/dist/regression.inputs-SMC5CNPY.js +0 -48
- package/dist/regression.inputs.term-XS54IQC2.js +0 -48
- package/dist/regression.inputs.values.table-LNPM3MX5.js +0 -45
- package/dist/regression.integration.spec-6QSMYPWJ.js +0 -784
- package/dist/regression.integration.spec-6QSMYPWJ.js.map +0 -7
- package/dist/regression.results-25ZRRDEE.js +0 -40
- package/dist/regression.spec-EDWHFRPY.js +0 -708
- package/dist/render-SEB6GFXQ.js +0 -38
- package/dist/report-U6L3KBYG.js +0 -222
- package/dist/sampleView-QAAJ26KT.js +0 -48
- package/dist/samplelst-KYRXJSZN.js +0 -111
- package/dist/samplematrix-STLF2QA5.js +0 -2198
- package/dist/sc-HL6YSMDX.js +0 -86
- package/dist/scatter-BSGDMOC2.js +0 -851
- package/dist/scatter-BSGDMOC2.js.map +0 -7
- package/dist/selectGenomeWithTklst-4NHQDTE6.js +0 -134
- package/dist/singleCellCellType-3E2IU42J.js +0 -38
- package/dist/singleCellCellType.unit.spec-MC7ZRSMW.js +0 -159
- package/dist/singleCellGeneExpression-53UUGYTK.js +0 -38
- package/dist/singleCellGeneExpression.unit.spec-QSLTXHFE.js +0 -153
- package/dist/singleCellPlot-JDSARDRV.js +0 -54
- package/dist/singlecell-IJR7BJYT.js +0 -1572
- package/dist/singlecell-OK6GJFWL.js +0 -86
- package/dist/snp-H4KJEEOE.js +0 -38
- package/dist/snp.unit.spec-2Y4A3XYI.js +0 -176
- package/dist/snplocus-4GG6VTWX.js +0 -208
- package/dist/spliceevent.a53ss.diagram-JZNRC5UC.js +0 -151
- package/dist/spliceevent.exonskip.diagram-H54N7ZKY.js +0 -283
- package/dist/spliceevent.noeventdiagram-II753XAK.js +0 -460
- package/dist/ssGSEA-JPJ3C4JI.js +0 -38
- package/dist/ssGSEA.unit.spec-45F5OCDK.js +0 -88
- package/dist/studyCatalog-O3VGIKDM.js +0 -358
- package/dist/summarizeCnvGeneexp-55DNXHXA.js +0 -163
- package/dist/summarizeGeneexpSurvival-VLO4DC5M.js +0 -110
- package/dist/summarizeMutationCnv-QX7BADYL.js +0 -164
- package/dist/summarizeMutationDiagnosis-MHFM7RX6.js +0 -40
- package/dist/summarizeMutationSurvival-G4KHSUBN.js +0 -99
- package/dist/summary-PJYRCQNY.js +0 -49
- package/dist/summary.integration.spec-KPKROD6L.js +0 -414
- package/dist/summaryInput-TOAL53EP.js +0 -231
- package/dist/sunburst-IGIV2RBE.js +0 -284
- package/dist/survival-DINCIWW7.js +0 -58
- package/dist/survival-RKV5BPDK.js +0 -1239
- package/dist/survival.integration.spec-7ZYBBZKT.js +0 -958
- package/dist/svgraph-EUEZWGVR.js +0 -1387
- package/dist/svmr-B24LODSC.js +0 -3842
- package/dist/table-XSJJ3UZV.js +0 -200
- package/dist/termCollection-IAB3425K.js +0 -38
- package/dist/termCollection-LGEGHZSJ.js +0 -257
- package/dist/termCollection.unit.spec-4TIRHC44.js +0 -304
- package/dist/termCollectionFractionSelection-35YKAOUY.js +0 -47
- package/dist/termCollectionFractionSelection.unit.spec-SUFEIKJZ.js +0 -193
- package/dist/tk-25EJJDRK.js +0 -46
- package/dist/tk-4E3XJ7CO.js +0 -1127
- package/dist/tp.ui-VGA62NFM.js +0 -1459
- package/dist/tvs.density-G56327WY.js +0 -19
- package/dist/tvs.dt-DFW36WKO.js +0 -39
- package/dist/tvs.dtcnv.categorical-ZP33EO3A.js +0 -40
- package/dist/tvs.dtcnv.continuous-FJTMQF4J.js +0 -72
- package/dist/tvs.dtfusion-FTDQWNKM.js +0 -40
- package/dist/tvs.dtitd-W5VEECJ2.js +0 -40
- package/dist/tvs.dtsnvindel-UOXSLCDZ.js +0 -40
- package/dist/tvs.dtsv-HWCPRVBO.js +0 -40
- package/dist/tvs.numeric-7TGKWQYU.js +0 -22
- package/dist/tvs.samplelst-OWD22ITS.js +0 -104
- package/dist/tvs.termCollection-27BWABYK.js +0 -129
- package/dist/violin-2IAVZGFF.js +0 -46
- package/dist/violin.integration.spec-JVODKUCL.js +0 -1425
- package/dist/violin.interactivity-STOCZMVN.js +0 -38
- package/dist/violin.renderer-MKDTJ3EX.js +0 -40
- package/dist/vocabulary-4IHU6DNN.js +0 -41
- /package/dist/{2dmaf-RRV3ORZR.js.map → 2dmaf-6MNHNHWX.js.map} +0 -0
- /package/dist/{AIProjectAdmin-DKLEFCGX.js.map → AIProjectAdmin-W36NGUX2.js.map} +0 -0
- /package/dist/{AppHeader-WQ2F7HZY.js.map → AppHeader-I5CFECIL.js.map} +0 -0
- /package/dist/{BoxPlot-5JQCYENZ.js.map → BoxPlot-4SXDAOBP.js.map} +0 -0
- /package/dist/{CorrelationVolcano-HR6IP2SZ.js.map → CorrelationVolcano-NAWMGG4Q.js.map} +0 -0
- /package/dist/{DE-DAW6ZKM7.js.map → DE-VZMT7KEM.js.map} +0 -0
- /package/dist/{DEinput-XCR4VMR3.js.map → DEinput-TKERM2YD.js.map} +0 -0
- /package/dist/{DifferentialAnalysis-SETJAZEN.js.map → DifferentialAnalysis-Y4SU4BVP.js.map} +0 -0
- /package/dist/{Disco-QEBEVQS2.js.map → Disco-DLK3BYPV.js.map} +0 -0
- /package/dist/{Disco.UI-OYVL7UBI.js.map → Disco.UI-IKGMFG36.js.map} +0 -0
- /package/dist/{DmrPlot-CWBQDZL7.js.map → DmrPlot-JWBZJFS6.js.map} +0 -0
- /package/dist/{GB-5PYCR4SV.js.map → GB-3UZSSIBW.js.map} +0 -0
- /package/dist/{GSEA-6UKMI6GY.js.map → GSEA-YLHBZY55.js.map} +0 -0
- /package/dist/{GeneExpInput-2N62XM7Z.js.map → GeneExpInput-KX5I63YV.js.map} +0 -0
- /package/dist/{Geomap-ANMR32HE.js.map → Geomap-QTUHM4VH.js.map} +0 -0
- /package/dist/{HicApp-WHPUPHEM.js.map → HicApp-M2OCHGRT.js.map} +0 -0
- /package/dist/{IDCViewer-FWXRE4AX.js.map → IDCViewer-SWFBLBZH.js.map} +0 -0
- /package/dist/{NumContEditor.unit.spec-5GTWUJEL.js.map → NumContEditor.unit.spec-P67AFEHM.js.map} +0 -0
- /package/dist/{NumCustomBinEditor-GM2OJMOX.js.map → NumCustomBinEditor-H22J4K47.js.map} +0 -0
- /package/dist/{NumRegularBinEditor-CZYITY5L.js.map → NumRegularBinEditor-IRD27CE2.js.map} +0 -0
- /package/dist/{NumericDensity-JSOFOEH2.js.map → NumericDensity-53KMCTDL.js.map} +0 -0
- /package/dist/{NumericHandler-UZOGKPKB.js.map → NumericHandler-5QFNXVBA.js.map} +0 -0
- /package/dist/{NumericHandler.unit.spec-X2DAED4O.js.map → NumericHandler.unit.spec-OBITSUU3.js.map} +0 -0
- /package/dist/{ProteomeInput-GBVCLNS7.js.map → ProteomeInput-MM373EL3.js.map} +0 -0
- /package/dist/{RunChart2-N4JPWNVV.js.map → RunChart2-2L6T3ITZ.js.map} +0 -0
- /package/dist/{SC-RCZT5BRP.js.map → SC-JKD3Z2X5.js.map} +0 -0
- /package/dist/{Volcano-2BQ6SYHO.js.map → Volcano-STGBS7IJ.js.map} +0 -0
- /package/dist/{WSIViewer-UDA4WIRT.js.map → WSIViewer-LOBVUTOD.js.map} +0 -0
- /package/dist/{WsiSamplesPlot-DYSFMD22.js.map → WsiSamplesPlot-D3L3AILR.js.map} +0 -0
- /package/dist/{adSandbox-5BUDCAER.js.map → adSandbox-XO5HDSFW.js.map} +0 -0
- /package/dist/{animatedBubbleChart-N6MBJ4X3.js.map → animatedBubbleChart-XKW6TCZP.js.map} +0 -0
- /package/dist/{app-O64TGDFH.js.map → app-H7ABTG6X.js.map} +0 -0
- /package/dist/{app-Y2STUISK.js.map → app-HJSPIKRQ.js.map} +0 -0
- /package/dist/{bam-2EOABVGT.js.map → bam-R5QVHWGY.js.map} +0 -0
- /package/dist/{barchart-UHCTYRMJ.js.map → barchart-OGCLBPQ2.js.map} +0 -0
- /package/dist/{barchart.data-LSK2P2PR.js.map → barchart.data-VBSWS5N7.js.map} +0 -0
- /package/dist/{barchart.events-Y4H2GADS.js.map → barchart.events-GZTY4IC3.js.map} +0 -0
- /package/dist/{barchart.integration.spec-BFGZFECA.js.map → barchart.integration.spec-Z6ECNFSM.js.map} +0 -0
- /package/dist/{barchart2-VIZKZRMP.js.map → barchart2-DT42I747.js.map} +0 -0
- /package/dist/{block-BGSSF6XP.js.map → block-UYYJXSCM.js.map} +0 -0
- /package/dist/{block.init-H7RKUIHG.js.map → block.init-43M53IMA.js.map} +0 -0
- /package/dist/{block.mds.expressionrank-MA3HGT7S.js.map → block.mds.expressionrank-YH3IWMKM.js.map} +0 -0
- /package/dist/{block.mds.geneboxplot-CWT5DM5T.js.map → block.mds.geneboxplot-QS2IK37X.js.map} +0 -0
- /package/dist/{block.mds.junction-P4I7O73X.js.map → block.mds.junction-7FF5BFEX.js.map} +0 -0
- /package/dist/{block.mds.svcnv-NSPEY43S.js.map → block.mds.svcnv-MMJYLL2W.js.map} +0 -0
- /package/dist/{block.svg-DP4G3LNQ.js.map → block.svg-SA6DSUM2.js.map} +0 -0
- /package/dist/{block.tk.aicheck-EBLTOWKZ.js.map → block.tk.aicheck-ZX5LZ2QO.js.map} +0 -0
- /package/dist/{block.tk.ase-X7WKQOFS.js.map → block.tk.ase-YXT4BOXK.js.map} +0 -0
- /package/dist/{block.tk.bam-OIP3TS3N.js.map → block.tk.bam-IMLRIOOV.js.map} +0 -0
- /package/dist/{block.tk.bedgraphdot-2DDF55J3.js.map → block.tk.bedgraphdot-UYQLL7HM.js.map} +0 -0
- /package/dist/{block.tk.bigwig.ui-S2SMAEXM.js.map → block.tk.bigwig.ui-WUVLVRSM.js.map} +0 -0
- /package/dist/{block.tk.hicstraw-4OIG4TBZ.js.map → block.tk.hicstraw-N4SJGF7H.js.map} +0 -0
- /package/dist/{block.tk.junction-52OWEQUN.js.map → block.tk.junction-LZWHFKWJ.js.map} +0 -0
- /package/dist/{block.tk.junction.textmatrixui-64YOSZLW.js.map → block.tk.junction.textmatrixui-B626NYPA.js.map} +0 -0
- /package/dist/{block.tk.ld-3AMNHBDY.js.map → block.tk.ld-6VWUMAP6.js.map} +0 -0
- /package/dist/{block.tk.menu-4724DJXL.js.map → block.tk.menu-RRN2UPQX.js.map} +0 -0
- /package/dist/{block.tk.pgv-2SIOPWYI.js.map → block.tk.pgv-GYG3EI6P.js.map} +0 -0
- /package/dist/{brainImaging-D43CQQN6.js.map → brainImaging-VIMLETC5.js.map} +0 -0
- /package/dist/{brainRegions-HJ2VGL3L.js.map → brainRegions-DRYZT5K5.js.map} +0 -0
- /package/dist/{bubbleHeatmap-IL44M4QZ.js.map → bubbleHeatmap-Y4SGMVJY.js.map} +0 -0
- /package/dist/{cellTypeBubbleHeatmap-NQP7RCZO.js.map → cellTypeBubbleHeatmap-QW37ZT5W.js.map} +0 -0
- /package/dist/{chunk-WXPFMVU6.js.map → chunk-2Y5C7GJS.js.map} +0 -0
- /package/dist/{chunk-BNAO6N5X.js.map → chunk-2ZTCRUOL.js.map} +0 -0
- /package/dist/{chunk-D565DNJD.js.map → chunk-3P74DH6P.js.map} +0 -0
- /package/dist/{chunk-5DMVORBB.js.map → chunk-3PPCZPLN.js.map} +0 -0
- /package/dist/{chunk-S5ZCK44Z.js.map → chunk-4H4WJJ2G.js.map} +0 -0
- /package/dist/{chunk-6OUBUUC2.js.map → chunk-4L2OSDQ6.js.map} +0 -0
- /package/dist/{chunk-JVPWIVDT.js.map → chunk-4USLEUNR.js.map} +0 -0
- /package/dist/{chunk-UEGQVQD6.js.map → chunk-5ITKSTJX.js.map} +0 -0
- /package/dist/{chunk-M66VDGSH.js.map → chunk-5VMYXVZG.js.map} +0 -0
- /package/dist/{chunk-UUKSL7QC.js.map → chunk-7ZVFLC2V.js.map} +0 -0
- /package/dist/{chunk-ROMW4AK2.js.map → chunk-C5IAIOCA.js.map} +0 -0
- /package/dist/{chunk-7PIHRWGG.js.map → chunk-CIRCVMWE.js.map} +0 -0
- /package/dist/{chunk-AGLAYNXP.js.map → chunk-CLTRQZGJ.js.map} +0 -0
- /package/dist/{chunk-W7OS7BNM.js.map → chunk-CRH37PEV.js.map} +0 -0
- /package/dist/{chunk-WTTD6DUL.js.map → chunk-DCNDZOI3.js.map} +0 -0
- /package/dist/{chunk-VUPWQCDR.js.map → chunk-DCR4QQ5Y.js.map} +0 -0
- /package/dist/{chunk-TDKMBQSM.js.map → chunk-DKAHHMKN.js.map} +0 -0
- /package/dist/{chunk-WKNI3HRQ.js.map → chunk-E2GHT7RH.js.map} +0 -0
- /package/dist/{chunk-XNWUI5VL.js.map → chunk-EQCVSUAF.js.map} +0 -0
- /package/dist/{chunk-DH3LAQKT.js.map → chunk-ETK36FXN.js.map} +0 -0
- /package/dist/{chunk-QDX2XUNF.js.map → chunk-FCOX5Q4Q.js.map} +0 -0
- /package/dist/{chunk-5ZTVJSYI.js.map → chunk-FVL37XFU.js.map} +0 -0
- /package/dist/{chunk-SNRIVNQ3.js.map → chunk-FXS4I3Z3.js.map} +0 -0
- /package/dist/{chunk-46X6AQ7Z.js.map → chunk-FYAY6D3O.js.map} +0 -0
- /package/dist/{chunk-MJN6RDXB.js.map → chunk-GL44X7JY.js.map} +0 -0
- /package/dist/{chunk-6JYQGZ3Y.js.map → chunk-IQVBMLFI.js.map} +0 -0
- /package/dist/{chunk-RVKADD4L.js.map → chunk-IYT5PNYJ.js.map} +0 -0
- /package/dist/{chunk-5QMBB4SK.js.map → chunk-J6EP7JPJ.js.map} +0 -0
- /package/dist/{chunk-ULESDMUT.js.map → chunk-JLGCQ2F4.js.map} +0 -0
- /package/dist/{chunk-TAM7UCAI.js.map → chunk-JQT67SWE.js.map} +0 -0
- /package/dist/{chunk-KU7YH7MV.js.map → chunk-JQYPRW42.js.map} +0 -0
- /package/dist/{chunk-2GLA2SWU.js.map → chunk-K4IGOJPT.js.map} +0 -0
- /package/dist/{chunk-RJOY6A74.js.map → chunk-KPTPDZX2.js.map} +0 -0
- /package/dist/{chunk-KZILNGAV.js.map → chunk-KTB7KXC2.js.map} +0 -0
- /package/dist/{chunk-STI7BO3P.js.map → chunk-KW7MKBGF.js.map} +0 -0
- /package/dist/{chunk-ZEKIUYN3.js.map → chunk-KZFVYDVK.js.map} +0 -0
- /package/dist/{chunk-W76X6W73.js.map → chunk-M77DCLJX.js.map} +0 -0
- /package/dist/{chunk-U3NTH4CS.js.map → chunk-MGGAWPTR.js.map} +0 -0
- /package/dist/{chunk-4HZN6PMU.js.map → chunk-MUJMZ6W6.js.map} +0 -0
- /package/dist/{chunk-BGTBRAJ6.js.map → chunk-NRP55BOF.js.map} +0 -0
- /package/dist/{chunk-NRYHIWBS.js.map → chunk-O5KFJBU3.js.map} +0 -0
- /package/dist/{chunk-OOWXMY7U.js.map → chunk-QHPN3JJZ.js.map} +0 -0
- /package/dist/{chunk-NUWJ4RN7.js.map → chunk-QSGXZEUU.js.map} +0 -0
- /package/dist/{chunk-GNS6CQMA.js.map → chunk-R3ARQMM4.js.map} +0 -0
- /package/dist/{chunk-4KRGCOTL.js.map → chunk-RIQT2LSR.js.map} +0 -0
- /package/dist/{chunk-J4USU73L.js.map → chunk-RVRRHEUG.js.map} +0 -0
- /package/dist/{chunk-H3N4KYKL.js.map → chunk-SOCGXVIL.js.map} +0 -0
- /package/dist/{chunk-HQUYAZQY.js.map → chunk-SZHFBRRT.js.map} +0 -0
- /package/dist/{chunk-E3VF4RHJ.js.map → chunk-TOYMIFHN.js.map} +0 -0
- /package/dist/{chunk-NIXFCC7X.js.map → chunk-TPVHGI7Q.js.map} +0 -0
- /package/dist/{chunk-26APRXD3.js.map → chunk-TRQUMV4T.js.map} +0 -0
- /package/dist/{chunk-R6NM2HSH.js.map → chunk-UO7MD3XA.js.map} +0 -0
- /package/dist/{chunk-5RVA43MN.js.map → chunk-UONOFG2J.js.map} +0 -0
- /package/dist/{chunk-CY4RQ5L6.js.map → chunk-V2DU2OXH.js.map} +0 -0
- /package/dist/{chunk-MPNEZ6EL.js.map → chunk-WWXXSQ2M.js.map} +0 -0
- /package/dist/{chunk-7JRDJNLR.js.map → chunk-X6VTVZY7.js.map} +0 -0
- /package/dist/{chunk-TQTYW66I.js.map → chunk-X7KRSZQT.js.map} +0 -0
- /package/dist/{chunk-5T3ZDRTS.js.map → chunk-XJBSBIZ4.js.map} +0 -0
- /package/dist/{chunk-BQHPJY2M.js.map → chunk-XRQWZJJ3.js.map} +0 -0
- /package/dist/{chunk-NZRMHM76.js.map → chunk-XZ4M3QAV.js.map} +0 -0
- /package/dist/{chunk-FACITNG5.js.map → chunk-YMP4YKBN.js.map} +0 -0
- /package/dist/{chunk-7PJNKPQB.js.map → chunk-YUURGVV3.js.map} +0 -0
- /package/dist/{chunk-EGPNRSPF.js.map → chunk-Z7VK2AMA.js.map} +0 -0
- /package/dist/{chunk-OTTMHVYH.js.map → chunk-ZFJUVP2N.js.map} +0 -0
- /package/dist/{chunk-H3VWJH4U.js.map → chunk-ZH7JPYQE.js.map} +0 -0
- /package/dist/{chunk-NODQZTWK.js.map → chunk-ZVDOSFWU.js.map} +0 -0
- /package/dist/{cohort-OWLNJZVH.js.map → cohort-CEYVJJ7E.js.map} +0 -0
- /package/dist/{condition-L2IXP6WH.js.map → condition-QSOFP4MY.js.map} +0 -0
- /package/dist/{controls-2S5QVWUC.js.map → controls-QYHARIEY.js.map} +0 -0
- /package/dist/{controls.config-3AJKR4ZZ.js.map → controls.config-3OO3JK6E.js.map} +0 -0
- /package/dist/{correlation-DXTAWSLU.js.map → correlation-TOI3TMYL.js.map} +0 -0
- /package/dist/{cuminc-WQB6FHVS.js.map → cuminc-L7OJTYXC.js.map} +0 -0
- /package/dist/{cuminc.integration.spec-WAYRLHUH.js.map → cuminc.integration.spec-LSWV3KOF.js.map} +0 -0
- /package/dist/{customdata.inputui-7WH2NJGB.js.map → customdata.inputui-VMB3HSSC.js.map} +0 -0
- /package/dist/{dataDownload-HM4UYOBO.js.map → dataDownload-NPSWNOAG.js.map} +0 -0
- /package/dist/{dataDownload.integration.spec-F5CO4BWA.js.map → dataDownload.integration.spec-J6FRFLBK.js.map} +0 -0
- /package/dist/{databrowser.ui-E2YOG3L4.js.map → databrowser.ui-GVYWG6YI.js.map} +0 -0
- /package/dist/{dictionary-EEPTFDYD.js.map → dictionary-GD67R72W.js.map} +0 -0
- /package/dist/{dnaMethylation-N3WNK6XA.js.map → dnaMethylation-S7OSGLAF.js.map} +0 -0
- /package/dist/{dnaMethylation.integration.spec-AIYRTFMR.js.map → dnaMethylation.integration.spec-ETMMJNDE.js.map} +0 -0
- /package/dist/{dofetch-YKYPEJTQ.js.map → dofetch-7GURQS65.js.map} +0 -0
- /package/dist/{e2pca-JEZIGVB2.js.map → e2pca-ZIIPBJFN.js.map} +0 -0
- /package/dist/{ep-5FMH2MLV.js.map → ep-A2HAL5WA.js.map} +0 -0
- /package/dist/{expclust.gdc.spec-FR26VSUA.js.map → expclust.gdc.spec-ZSILLYNI.js.map} +0 -0
- /package/dist/{facet-5YYY3MUN.js.map → facet-74LKIPTA.js.map} +0 -0
- /package/dist/{gb-WGEVO7L2.js.map → gb-C3MPQXKN.js.map} +0 -0
- /package/dist/{geneExpClustering-DHE6XJHV.js.map → geneExpClustering-HYCFUUTU.js.map} +0 -0
- /package/dist/{geneExpression-5NWQXMJ3.js.map → geneExpression-GATKMJJ5.js.map} +0 -0
- /package/dist/{geneExpression-VWUMM2LU.js.map → geneExpression-JXSAP2H7.js.map} +0 -0
- /package/dist/{geneExpression.unit.spec-HBU3WTZ4.js.map → geneExpression.unit.spec-CODZYFHZ.js.map} +0 -0
- /package/dist/{geneORA-3VWFWDYI.js.map → geneORA-LJRIR4VV.js.map} +0 -0
- /package/dist/{geneRanking-PKDVD5OD.js.map → geneRanking-TWLBKQZG.js.map} +0 -0
- /package/dist/{geneVariant-IFIJQXH4.js.map → geneVariant-35RQHTCK.js.map} +0 -0
- /package/dist/{geneVariant-WZSOG4GI.js.map → geneVariant-TMJJIMUF.js.map} +0 -0
- /package/dist/{geneVariant.integration.spec-6KQMWVHR.js.map → geneVariant.integration.spec-FIQ7IBSD.js.map} +0 -0
- /package/dist/{genefusion.ui-C4NTALL3.js.map → genefusion.ui-SOBESSNO.js.map} +0 -0
- /package/dist/{geneset-RJAULSKC.js.map → geneset-JXEJFEK2.js.map} +0 -0
- /package/dist/{genomeBrowser.spec-42OTTMGO.js.map → genomeBrowser.spec-25ZO5S2X.js.map} +0 -0
- /package/dist/{grin2-26O6YDDY.js.map → grin2-CW4RPVPI.js.map} +0 -0
- /package/dist/{grin2-FT5BQJMB.js.map → grin2-EI5BVP4E.js.map} +0 -0
- /package/dist/{hierCluster-GJPPMFNR.js.map → hierCluster-OBBPQH24.js.map} +0 -0
- /package/dist/{hierCluster-HMJF3PBE.js.map → hierCluster-SDH3TJQY.js.map} +0 -0
- /package/dist/{hierCluster.config-TAS7XKTU.js.map → hierCluster.config-DO67TCXI.js.map} +0 -0
- /package/dist/{hierCluster.integration.spec-RLHQKX65.js.map → hierCluster.integration.spec-EB24C4VZ.js.map} +0 -0
- /package/dist/{hierCluster.interactivity-IKTAJ6CU.js.map → hierCluster.interactivity-LGEAFT5T.js.map} +0 -0
- /package/dist/{hierCluster.renderers-I6WFZRNW.js.map → hierCluster.renderers-FXDCU3PN.js.map} +0 -0
- /package/dist/{imagePlot-N4OXNMVA.js.map → imagePlot-LGLFG2QZ.js.map} +0 -0
- /package/dist/{importPlot-VMYXDP66.js.map → importPlot-R2WRZGZU.js.map} +0 -0
- /package/dist/{isoformExpression-2KV64KMN.js.map → isoformExpression-KI3WY5M3.js.map} +0 -0
- /package/dist/{isoformExpression.unit.spec-RG2VWEMG.js.map → isoformExpression.unit.spec-OQRG2DDU.js.map} +0 -0
- /package/dist/{junction-VO4IGMW2.js.map → junction-6SWFPNM5.js.map} +0 -0
- /package/dist/{junction.customTerm-EFMHHVWA.js.map → junction.customTerm-MDBOU6I7.js.map} +0 -0
- /package/dist/{junction.unit.spec-NB24MR2B.js.map → junction.unit.spec-5TZFITSU.js.map} +0 -0
- /package/dist/{launch.adhoc-R3MO3VXK.js.map → launch.adhoc-HCX2RQLB.js.map} +0 -0
- /package/dist/{leftlabel.sample-SI6KMULD.js.map → leftlabel.sample-OI6XCXTQ.js.map} +0 -0
- /package/dist/{lollipop-XIVE4ANX.js.map → lollipop-SOSOYHYL.js.map} +0 -0
- /package/dist/{maf-WRHD4OJF.js.map → maf-73RLOEVN.js.map} +0 -0
- /package/dist/{maftimeline-IE6YKV7Y.js.map → maftimeline-UOMLYUNI.js.map} +0 -0
- /package/dist/{matrix-ALBCAZP5.js.map → matrix-5QWDN6SI.js.map} +0 -0
- /package/dist/{matrix-W72XRUZD.js.map → matrix-SKPVVDVR.js.map} +0 -0
- /package/dist/{matrix.cells-DEEUWC74.js.map → matrix.cells-CFSI2NWU.js.map} +0 -0
- /package/dist/{matrix.config-JYXQOXDT.js.map → matrix.config-HE64MAL4.js.map} +0 -0
- /package/dist/{matrix.data-ENXNM6RP.js.map → matrix.data-HTUZXQAM.js.map} +0 -0
- /package/dist/{matrix.groups-EXSNNESB.js.map → matrix.groups-ZFKWVNMX.js.map} +0 -0
- /package/dist/{matrix.integration.spec-BW6U6PIW.js.map → matrix.integration.spec-YKJ4LZFY.js.map} +0 -0
- /package/dist/{matrix.interactivity-G6AL566T.js.map → matrix.interactivity-YB5G5W5T.js.map} +0 -0
- /package/dist/{matrix.layout-UBUPIJ3R.js.map → matrix.layout-MFG65V7K.js.map} +0 -0
- /package/dist/{matrix.legend-S3P4F2DG.js.map → matrix.legend-7MIZZJVB.js.map} +0 -0
- /package/dist/{matrix.renderers-IXFGXHJQ.js.map → matrix.renderers-PCZFHDDZ.js.map} +0 -0
- /package/dist/{matrix.serieses-THHXUAPM.js.map → matrix.serieses-7KYX3KAY.js.map} +0 -0
- /package/dist/{matrix.sort-WJV6LIZI.js.map → matrix.sort-CR3J45MQ.js.map} +0 -0
- /package/dist/{matrix.sort.unit.spec-LGMIL2LR.js.map → matrix.sort.unit.spec-GEAM5DSU.js.map} +0 -0
- /package/dist/{matrix.sorterUi-VXVCOKEZ.js.map → matrix.sorterUi-YSKIX6B6.js.map} +0 -0
- /package/dist/{matrix.sorterUi.unit.spec-CWSEJ62U.js.map → matrix.sorterUi.unit.spec-2MW64QS5.js.map} +0 -0
- /package/dist/{mavb-SXGKASQ5.js.map → mavb-YMHJXCGA.js.map} +0 -0
- /package/dist/{mds.fimo-EDOT3TDN.js.map → mds.fimo-PTEDRMLQ.js.map} +0 -0
- /package/dist/{mds.samplescatterplot-IXHNABKB.js.map → mds.samplescatterplot-7R7PLVQJ.js.map} +0 -0
- /package/dist/{mds.survivalplot-KTTMHHII.js.map → mds.survivalplot-F3EENMFQ.js.map} +0 -0
- /package/dist/{numericDictTermCluster-H4JSPW22.js.map → numericDictTermCluster-3HXLMURH.js.map} +0 -0
- /package/dist/{oncomatrix-O4EMNUOT.js.map → oncomatrix-27VVSMZB.js.map} +0 -0
- /package/dist/{oncomatrix.spec-BME6CQWF.js.map → oncomatrix.spec-F43Y7CWN.js.map} +0 -0
- /package/dist/{plot.2dvaf-FDM4KXGT.js.map → plot.2dvaf-MYFQSWIA.js.map} +0 -0
- /package/dist/{plot.app-UNUXG7ND.js.map → plot.app-36QWCKXR.js.map} +0 -0
- /package/dist/{plot.barplot-R333TMG2.js.map → plot.barplot-535EP7XT.js.map} +0 -0
- /package/dist/{plot.boxplot-KQTYGUN3.js.map → plot.boxplot-6IBP7VEB.js.map} +0 -0
- /package/dist/{plot.brainImaging-YBYMHCEG.js.map → plot.brainImaging-M4HPNXZH.js.map} +0 -0
- /package/dist/{plot.disco-CMDKRSOM.js.map → plot.disco-HIT6GR44.js.map} +0 -0
- /package/dist/{plot.dzi-YAZA6RQS.js.map → plot.dzi-W66SBKTH.js.map} +0 -0
- /package/dist/{plot.ssgq-YKCOEXZP.js.map → plot.ssgq-MI2OMCUY.js.map} +0 -0
- /package/dist/{plot.vaf2cov-3TLMTFZS.js.map → plot.vaf2cov-F4CBMLRA.js.map} +0 -0
- /package/dist/{plot.wsi-7ADVYTQS.js.map → plot.wsi-7M5KTNFC.js.map} +0 -0
- /package/dist/{polar2-O5SHVLP4.js.map → polar2-7VSWGT4U.js.map} +0 -0
- /package/dist/{profileForms-RLB6SMPQ.js.map → profileForms-DFPCNJW2.js.map} +0 -0
- /package/dist/{profilePlot-AP52VLLO.js.map → profilePlot-ECTPPVB2.js.map} +0 -0
- /package/dist/{proteinView-S7WDBMQU.js.map → proteinView-6ELOLOIU.js.map} +0 -0
- /package/dist/{proteomeCohortCompare-ERVUM7RO.js.map → proteomeCohortCompare-V2FMWI62.js.map} +0 -0
- /package/dist/{pseudbulk.unit.spec-VSH7IM3R.js.map → pseudbulk.unit.spec-KV6URTXC.js.map} +0 -0
- /package/dist/{pseudobulk-7UKRLKQI.js.map → pseudobulk-6ZRFCE65.js.map} +0 -0
- /package/dist/{qualitative-2D7MC4V5.js.map → qualitative-3B62RUOB.js.map} +0 -0
- /package/dist/{qualitative-2INAKDTJ.js.map → qualitative-GJDQBD7L.js.map} +0 -0
- /package/dist/{radar2-ELVGQFZE.js.map → radar2-4QQER64E.js.map} +0 -0
- /package/dist/{radarFacility2-SDAZHGNG.js.map → radarFacility2-MZKORRDY.js.map} +0 -0
- /package/dist/{regression-CE54AQMY.js.map → regression-GZ2YNX6Y.js.map} +0 -0
- /package/dist/{regression.inputs-SMC5CNPY.js.map → regression.inputs-ZEFDNSVT.js.map} +0 -0
- /package/dist/{regression.inputs.term-XS54IQC2.js.map → regression.inputs.term-O2FQBX7L.js.map} +0 -0
- /package/dist/{regression.inputs.values.table-LNPM3MX5.js.map → regression.inputs.values.table-63BQKSZP.js.map} +0 -0
- /package/dist/{regression.results-25ZRRDEE.js.map → regression.results-5J3QM4RX.js.map} +0 -0
- /package/dist/{regression.spec-EDWHFRPY.js.map → regression.spec-WZAZTDDA.js.map} +0 -0
- /package/dist/{render-SEB6GFXQ.js.map → render-MZTEXVU5.js.map} +0 -0
- /package/dist/{report-U6L3KBYG.js.map → report-M5TYHH2W.js.map} +0 -0
- /package/dist/{sampleView-QAAJ26KT.js.map → sampleView-QYTLYJEW.js.map} +0 -0
- /package/dist/{samplelst-KYRXJSZN.js.map → samplelst-FN3Q7M7A.js.map} +0 -0
- /package/dist/{samplematrix-STLF2QA5.js.map → samplematrix-Z5FVODO7.js.map} +0 -0
- /package/dist/{sc-HL6YSMDX.js.map → sc-4CHP5SYP.js.map} +0 -0
- /package/dist/{selectGenomeWithTklst-4NHQDTE6.js.map → selectGenomeWithTklst-WMAHGT4F.js.map} +0 -0
- /package/dist/{singleCellCellType-3E2IU42J.js.map → singleCellCellType-XPWENB6V.js.map} +0 -0
- /package/dist/{singleCellCellType.unit.spec-MC7ZRSMW.js.map → singleCellCellType.unit.spec-QK56PHKW.js.map} +0 -0
- /package/dist/{singleCellGeneExpression-53UUGYTK.js.map → singleCellGeneExpression-4CEVDVYF.js.map} +0 -0
- /package/dist/{singleCellGeneExpression.unit.spec-QSLTXHFE.js.map → singleCellGeneExpression.unit.spec-ZYRLBVF5.js.map} +0 -0
- /package/dist/{singleCellPlot-JDSARDRV.js.map → singleCellPlot-JS74VUGC.js.map} +0 -0
- /package/dist/{singlecell-IJR7BJYT.js.map → singlecell-5XYOHMWJ.js.map} +0 -0
- /package/dist/{singlecell-OK6GJFWL.js.map → singlecell-OO77XBDD.js.map} +0 -0
- /package/dist/{snp-H4KJEEOE.js.map → snp-X5ZILM5J.js.map} +0 -0
- /package/dist/{snp.unit.spec-2Y4A3XYI.js.map → snp.unit.spec-V23G3JLJ.js.map} +0 -0
- /package/dist/{snplocus-4GG6VTWX.js.map → snplocus-U5UIIUWR.js.map} +0 -0
- /package/dist/{spliceevent.a53ss.diagram-JZNRC5UC.js.map → spliceevent.a53ss.diagram-YDFVSDMT.js.map} +0 -0
- /package/dist/{spliceevent.exonskip.diagram-H54N7ZKY.js.map → spliceevent.exonskip.diagram-VDKN5JBE.js.map} +0 -0
- /package/dist/{spliceevent.noeventdiagram-II753XAK.js.map → spliceevent.noeventdiagram-EFPFRUFI.js.map} +0 -0
- /package/dist/{ssGSEA-JPJ3C4JI.js.map → ssGSEA-LKJW5OQK.js.map} +0 -0
- /package/dist/{ssGSEA.unit.spec-45F5OCDK.js.map → ssGSEA.unit.spec-7WCZVEP2.js.map} +0 -0
- /package/dist/{studyCatalog-O3VGIKDM.js.map → studyCatalog-EU33KE5H.js.map} +0 -0
- /package/dist/{summarizeCnvGeneexp-55DNXHXA.js.map → summarizeCnvGeneexp-QL25OQNB.js.map} +0 -0
- /package/dist/{summarizeGeneexpSurvival-VLO4DC5M.js.map → summarizeGeneexpSurvival-B7HTCH7L.js.map} +0 -0
- /package/dist/{summarizeMutationCnv-QX7BADYL.js.map → summarizeMutationCnv-DFAPX2JE.js.map} +0 -0
- /package/dist/{summarizeMutationDiagnosis-MHFM7RX6.js.map → summarizeMutationDiagnosis-HCSDSVII.js.map} +0 -0
- /package/dist/{summarizeMutationSurvival-G4KHSUBN.js.map → summarizeMutationSurvival-6WEASSA2.js.map} +0 -0
- /package/dist/{summary-PJYRCQNY.js.map → summary-BWYXE77G.js.map} +0 -0
- /package/dist/{summary.integration.spec-KPKROD6L.js.map → summary.integration.spec-AVGSW5MF.js.map} +0 -0
- /package/dist/{summaryInput-TOAL53EP.js.map → summaryInput-MOQ6HUCX.js.map} +0 -0
- /package/dist/{sunburst-IGIV2RBE.js.map → sunburst-EZDHVJCL.js.map} +0 -0
- /package/dist/{survival-RKV5BPDK.js.map → survival-5TFMM7NP.js.map} +0 -0
- /package/dist/{survival-DINCIWW7.js.map → survival-IEVELTC4.js.map} +0 -0
- /package/dist/{survival.integration.spec-7ZYBBZKT.js.map → survival.integration.spec-HHWP3R4H.js.map} +0 -0
- /package/dist/{svgraph-EUEZWGVR.js.map → svgraph-55XRIYJW.js.map} +0 -0
- /package/dist/{svmr-B24LODSC.js.map → svmr-CMEBFSRO.js.map} +0 -0
- /package/dist/{table-XSJJ3UZV.js.map → table-LTWQ3TLQ.js.map} +0 -0
- /package/dist/{termCollection-IAB3425K.js.map → termCollection-CPQXYBFA.js.map} +0 -0
- /package/dist/{termCollection-LGEGHZSJ.js.map → termCollection-ZWOH273K.js.map} +0 -0
- /package/dist/{termCollection.unit.spec-4TIRHC44.js.map → termCollection.unit.spec-RK7VATLU.js.map} +0 -0
- /package/dist/{termCollectionFractionSelection-35YKAOUY.js.map → termCollectionFractionSelection-Z4ZRW63R.js.map} +0 -0
- /package/dist/{termCollectionFractionSelection.unit.spec-SUFEIKJZ.js.map → termCollectionFractionSelection.unit.spec-3CS7DPNU.js.map} +0 -0
- /package/dist/{tk-25EJJDRK.js.map → tk-4NNTWWLK.js.map} +0 -0
- /package/dist/{tk-4E3XJ7CO.js.map → tk-RHWJJXH2.js.map} +0 -0
- /package/dist/{tp.ui-VGA62NFM.js.map → tp.ui-DPN5UN6U.js.map} +0 -0
- /package/dist/{tvs.density-G56327WY.js.map → tvs.density-LMRZZO4D.js.map} +0 -0
- /package/dist/{tvs.dt-DFW36WKO.js.map → tvs.dt-ARPDFRVM.js.map} +0 -0
- /package/dist/{tvs.dtcnv.categorical-ZP33EO3A.js.map → tvs.dtcnv.categorical-POS6WQK6.js.map} +0 -0
- /package/dist/{tvs.dtcnv.continuous-FJTMQF4J.js.map → tvs.dtcnv.continuous-5OETJ7JU.js.map} +0 -0
- /package/dist/{tvs.dtfusion-FTDQWNKM.js.map → tvs.dtfusion-ERYVI3DW.js.map} +0 -0
- /package/dist/{tvs.dtitd-W5VEECJ2.js.map → tvs.dtitd-KTZZYEWU.js.map} +0 -0
- /package/dist/{tvs.dtsnvindel-UOXSLCDZ.js.map → tvs.dtsnvindel-TGUAX3RN.js.map} +0 -0
- /package/dist/{tvs.dtsv-HWCPRVBO.js.map → tvs.dtsv-AM63OIL6.js.map} +0 -0
- /package/dist/{tvs.numeric-7TGKWQYU.js.map → tvs.numeric-MQPO5XUQ.js.map} +0 -0
- /package/dist/{tvs.samplelst-OWD22ITS.js.map → tvs.samplelst-VW2NOQ2C.js.map} +0 -0
- /package/dist/{tvs.termCollection-27BWABYK.js.map → tvs.termCollection-O4ZSWJFA.js.map} +0 -0
- /package/dist/{violin-2IAVZGFF.js.map → violin-ZQ3DEYGR.js.map} +0 -0
- /package/dist/{violin.integration.spec-JVODKUCL.js.map → violin.integration.spec-PVEF77HB.js.map} +0 -0
- /package/dist/{violin.interactivity-STOCZMVN.js.map → violin.interactivity-FYU4TCFO.js.map} +0 -0
- /package/dist/{violin.renderer-MKDTJ3EX.js.map → violin.renderer-XAERGBMV.js.map} +0 -0
- /package/dist/{vocabulary-4IHU6DNN.js.map → vocabulary-ECJX27W2.js.map} +0 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../plots/regression.inputs.term.js", "../plots/regression.inputs.js", "../plots/regression.js"],
|
|
4
|
+
"sourcesContent": ["import { termsettingInit, get$id } from '#termsetting'\nimport { isDictionaryType, get_bin_label, isNumericTerm, getValueConversionFactor, roundValue } from '#shared'\nimport { InputValuesTable } from './regression.inputs.values.table'\nimport { Menu } from '#dom'\nimport { select } from 'd3-selection'\nimport { mayRunSnplstTask } from '../termsetting/handlers/snplst.sampleSum.ts'\nimport { get_defaultQ4fillTW } from './regression'\n\n/*\nclass instance is an input\n*/\n\nexport class InputTerm {\n\tconstructor(opts) {\n\t\t// opts { section, term, parent }\n\t\tthis.opts = opts\n\t\tthis.section = opts.section\n\t\tthis.term = opts.term // term wrapper {id, term, q}; will be missing for a blank input\n\t\tthis.parent = opts.parent // the inputs instance\n\t\tthis.vocabApi = this.parent.parent.vocabApi || this.parent.app.vocabApi\n\t}\n\n\tasync init(holder) {\n\t\t// only run once when a new input variable is added to the user interface via data/enter() in inputs.js\n\n\t\tconst termRow = holder.append('div')\n\t\t// the row contains two cells: left to show ts pill, right to show interaction\n\t\tconst pillDiv = termRow.append('span').style('display', 'inline-block')\n\t\tconst interactionDiv = termRow.append('span').style('margin-left', '20px')\n\n\t\tthis.dom = {\n\t\t\tholder,\n\t\t\ttermRow,\n\t\t\tpillDiv,\n\t\t\tinteractionDiv,\n\t\t\terr_div: holder\n\t\t\t\t.append('div')\n\t\t\t\t.style('display', 'none')\n\t\t\t\t.style('padding', '5px')\n\t\t\t\t.style('background-color', 'rgba(255,100,100,0.2)'),\n\t\t\tinfoDiv: holder.append('div'),\n\t\t\ttip: new Menu()\n\t\t}\n\n\t\ttry {\n\t\t\tconst { app, config, state, disable_terms } = this.parent\n\n\t\t\t// termsetting constructor option\n\t\t\tconst arg = {\n\t\t\t\tplaceholder: this.section.selectPrompt,\n\t\t\t\tplaceholderIcon: this.section.placeholderIcon,\n\t\t\t\tholder: this.dom.pillDiv,\n\t\t\t\tvocabApi: this.vocabApi,\n\t\t\t\tnoTermPromptOptions: this.opts.noTermPromptOptions,\n\t\t\t\tactiveCohort: state.activeCohort,\n\t\t\t\tdebug: app.opts.debug,\n\t\t\t\tmenuOptions: this.section.configKey == 'outcome' ? '{edit,reuse,replace}' : '{edit,reuse,remove}',\n\t\t\t\tusecase: { target: 'regression', detail: this.section.configKey, regressionType: config.regressionType },\n\t\t\t\tdisable_terms,\n\t\t\t\tabbrCutoff: 50,\n\t\t\t\tgenomeObj: this.parent.parent.genomeObj, // required for snplocus\n\t\t\t\tdefaultQ4fillTW: get_defaultQ4fillTW(config.regressionType, this.section.configKey),\n\t\t\t\tcallback: term => {\n\t\t\t\t\tthis.parent.editConfig(this, term)\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.furbishTsConstructorArg(arg)\n\t\t\t// use 'await' here because it is safer to assume that\n\t\t\t// termsettingInit() returns a promise, in case the Termsetting\n\t\t\t// class ever has an init() method as detected in rx/index.js\n\t\t\tthis.pill = await termsettingInit(arg)\n\n\t\t\tif (this.section.configKey == 'outcome') {\n\t\t\t\t// special treatment for terms selected for outcome\n\t\t\t\tthis.setQ = getQSetter4outcome(config.regressionType)\n\t\t\t}\n\n\t\t\tthis.valuesTable = new InputValuesTable({\n\t\t\t\tholder: this.dom.infoDiv,\n\t\t\t\tinput: this,\n\t\t\t\tcallback: term => {\n\t\t\t\t\tthis.parent.editConfig(this, term)\n\t\t\t\t}\n\t\t\t})\n\t\t} catch (e) {\n\t\t\tthis.displayError([e])\n\t\t}\n\t}\n\n\tfurbishTsConstructorArg(arg) {\n\t\t// furbish termsetting constructor argument, based on regression type and if term is outcome/input\n\t\tconst type = this.parent.config.regressionType\n\t\tif (this.section.configKey == 'outcome') {\n\t\t\t// this term is outcome\n\t\t\tif (type == 'logistic') {\n\t\t\t\targ.numericEditMenuVersion = ['binary']\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif (type == 'linear') {\n\t\t\t\targ.numericEditMenuVersion = ['continuous']\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif (type == 'cox') {\n\t\t\t\t//arg.showTimeScale = true\n\t\t\t\treturn\n\t\t\t}\n\t\t\tthrow 'unknown regressionType'\n\t\t}\n\t\tif (this.section.configKey == 'independent') {\n\t\t\t// this temr is independent\n\t\t\t// do not allow condition term\n\t\t\targ.numericEditMenuVersion = ['continuous', 'discrete', 'spline']\n\t\t\t// for geneVariant term, only allow groupsetting\n\t\t\targ.geneVariantEditMenuOnlyGrp = true\n\t\t\treturn\n\t\t}\n\t\tthrow 'unknown section.configKey: ' + this.section.configKey\n\t}\n\n\tdisplayError(errors) {\n\t\tthis.hasError = true\n\t\tthis.dom.err_div.selectAll('*').remove()\n\t\tthis.dom.err_div\n\t\t\t.style('display', 'block')\n\t\t\t.selectAll('div')\n\t\t\t.data(Array.isArray(errors) ? errors : [errors])\n\t\t\t.enter()\n\t\t\t.append('div')\n\t\t\t.text(e => e)\n\t\tthis.parent.handleError()\n\t\tconsole.error(errors)\n\t}\n\n\tasync main() {\n\t\t/* called in inputs.main()\n\t\twhen the regression component is notified of a change\n\t\t*/\n\n\t\tconst tw = this.term // term wrapper\n\n\t\t// clear previous errors\n\t\tif (tw) {\n\t\t\t// a term has been selected\n\t\t\tdelete tw.error\n\t\t}\n\n\t\tthis.dom.err_div.style('display', 'none').text('')\n\t\tthis.hasError = false\n\n\t\tconst errors = []\n\t\ttry {\n\t\t\tif (tw && this.setQ) {\n\t\t\t\tconst { app, state } = this.parent\n\t\t\t\tawait this.setQ[tw.term.type](tw, this.vocabApi, this.parent.parent.filter, state)\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tawait this.updateTerm()\n\t\t\t} catch (e) {\n\t\t\t\t// will allow pill to update to a new term as needed,\n\t\t\t\t// so that the rendered pill and values table match the error message\n\t\t\t\terrors.push(e)\n\t\t\t}\n\t\t\tawait this.pill.main(this.getPillArgs())\n\t\t\tthis.renderInteractionPrompt()\n\t\t\tawait this.valuesTable.main()\n\t\t\t// $id needs to be filled in here for non-dictionary terms\n\t\t\t// TODO: should have a centralized location for filling in\n\t\t\t// $id for non-dictionary terms\n\t\t\tif (tw && !tw.$id) tw.$id = await get$id(this.vocabApi.getTwMinCopy(tw))\n\t\t\tconst e = (tw && tw.error) || this.pill.error\n\t\t\tif (e) errors.push(e)\n\t\t\tif (errors.length) throw errors\n\t\t} catch (errors) {\n\t\t\tthis.displayError(errors)\n\t\t}\n\t}\n\n\tasync updateTerm() {\n\t\t/*\n\t\tonly used in this.main() above\n\t\tto derive bins/groups based on q{} setting of this term\n\t\tcreate following attributes:\n\n\t\tinput.orderedLabels\n\t\tinput.termStatus{ sampleCounts, excludeCounts }\n\t\tinput.term.refGrp\n\t\t*/\n\t\tconst tw = this.term\n\t\tif (!tw) return\n\n\t\tif (!tw.q) throw '.term.q missing on this input'\n\n\t\tif (!tw.q.mode && isDictionaryType(tw.term.type)) {\n\t\t\t// fill in q.mode for dictionary terms\n\t\t\tif (\n\t\t\t\ttw.term.type == 'categorical' ||\n\t\t\t\ttw.term.type == 'condition' ||\n\t\t\t\ttw.term.type == 'survival' ||\n\t\t\t\ttw.term.type == 'samplelst'\n\t\t\t)\n\t\t\t\ttw.q.mode = 'discrete'\n\t\t\telse tw.q.mode = 'continuous'\n\t\t}\n\n\t\t// need to supply tw.q in body, otherwise getCategories() will\n\t\t// generate a default .q for the term\n\t\tconst body = tw.term.type == 'snplst' || tw.term.type == 'snplocus' ? { cacheid: tw.q.cacheid } : { term1_q: tw.q }\n\n\t\t// get term categories\n\t\tconst wait = this.dom.holder.append('div').style('padding', '5px').text('Loading...') // getCategories may wait long time e.g. gdc. adding this to indicate its loading to avoid just showing a nopill prompt\n\t\tlet data\n\t\ttry {\n\t\t\tdata = await this.vocabApi.getCategories(tw.term, this.parent.parent.filter, body)\n\t\t\tif (!data) throw `no data for term.id='${tw.term.id}'`\n\t\t\tif (data.error) throw data.error\n\t\t} finally {\n\t\t\twait.remove()\n\t\t}\n\n\t\tmayRunSnplstTask(tw, data)\n\n\t\tthis.termStatus = {\n\t\t\ttopInfoStatus: [],\n\t\t\tbottomSummaryStatus: undefined,\n\t\t\tsampleCounts: undefined,\n\t\t\texcludeCounts: undefined,\n\t\t\tallowToSelectRefGrp: false\n\t\t}\n\n\t\t// update status based on special attr from snplst and snplocus terms\n\t\tif (tw.q.numOfSampleWithAnyValidGT) {\n\t\t\tconst invalid_snps_count = tw.term.snps.reduce((i, j) => i + (j.invalid ? 1 : 0), 0)\n\t\t\tthis.termStatus.topInfoStatus.push(\n\t\t\t\t`${tw.q.numOfSampleWithAnyValidGT} samples with valid genotypes` +\n\t\t\t\t\t(invalid_snps_count > 0 ? ` ${invalid_snps_count} invalid SNP${invalid_snps_count > 1 ? 's' : ''}.` : '')\n\t\t\t)\n\t\t}\n\t\tif ('geneticModel' in tw.q) {\n\t\t\tthis.termStatus.topInfoStatus.push(\n\t\t\t\t'Genetic model: ' +\n\t\t\t\t\t(tw.q.geneticModel == 0\n\t\t\t\t\t\t? 'Additive'\n\t\t\t\t\t\t: tw.q.geneticModel == 1\n\t\t\t\t\t\t? 'Dominant'\n\t\t\t\t\t\t: tw.q.geneticModel == 2\n\t\t\t\t\t\t? 'Recessive'\n\t\t\t\t\t\t: 'By genotype')\n\t\t\t)\n\t\t}\n\t\tif (tw.q.restrictAncestry) {\n\t\t\tthis.termStatus.topInfoStatus.push('Analyzing ' + tw.q.restrictAncestry.name)\n\t\t\tif (tw.q.restrictAncestry.PCcount) {\n\t\t\t\tthis.termStatus.topInfoStatus.push(\n\t\t\t\t\t`Adjusting for top ${tw.q.restrictAncestry.PCcount} ancestry principal components`\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\t\tif (tw.term.reachedVariantLimit) {\n\t\t\tthis.termStatus.topInfoStatus.push(\n\t\t\t\t`<span class=sja_mcdot style=\"background:#aaa;font-size:1em\">\n\t\t\t\t ⚠ Restricted to first ${tw.term.snps.length}\n\t\t\t\tvariants of this region. </span> Try zooming in.`\n\t\t\t)\n\t\t}\n\n\t\tthis.orderedLabels = data.orderedLabels\n\n\t\tif (data.lst) {\n\t\t\t// got sample counts for dictionary terms\n\n\t\t\tthis.summarizeSample(tw, data.lst)\n\n\t\t\tif (isNumericTerm(tw.term)) {\n\t\t\t\tif (tw.q.mode != 'continuous' && tw.q.mode != 'spline') {\n\t\t\t\t\tthis.termStatus.allowToSelectRefGrp = true\n\t\t\t\t}\n\t\t\t\tif (tw.q.scale && tw.q.scale != 1) this.termStatus.topInfoStatus.push(`Scale: Per ${tw.q.scale}`)\n\t\t\t\tif (tw.q.mode == 'discrete') {\n\t\t\t\t\tthis.termStatus.topInfoStatus.push(`Discrete variable with ${this.termStatus.sampleCounts.length} bins`)\n\t\t\t\t}\n\t\t\t\t/* continuous and spline modes are analyzed in the term's converted unit\n\t\t\t\t(see makeRinput() in server/src/routes/termdb.regression.ts), so report the unit\n\t\t\t\tand print the knots by it, rather than by the unit the values are stored in */\n\t\t\t\tconst vc = tw.term.valueConversion\n\t\t\t\tconst isConverted = vc && (tw.q.mode == 'continuous' || tw.q.mode == 'spline')\n\t\t\t\tif (isConverted) {\n\t\t\t\t\tthis.termStatus.topInfoStatus.push(`Analyzed by the unit of ${vc.toUnit}, converted from ${vc.fromUnit}`)\n\t\t\t\t}\n\t\t\t\tif (tw.q.mode == 'spline') {\n\t\t\t\t\tconst f = getValueConversionFactor(tw.term)\n\t\t\t\t\tthis.termStatus.topInfoStatus.push(\n\t\t\t\t\t\t`Cubic spline variable with ${tw.q.knots.length} knots: ${tw.q.knots\n\t\t\t\t\t\t\t.map(x => Number(x.value) * f)\n\t\t\t\t\t\t\t.sort((a, b) => a - b)\n\t\t\t\t\t\t\t.map(v => (f == 1 ? v : roundValue(v, 2)))\n\t\t\t\t\t\t\t.join(', ')}${isConverted ? ` ${vc.toUnit}s` : ''}`\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t} else if (tw.term.type == 'categorical' || tw.term.type == 'geneVariant' || tw.term.type == 'samplelst') {\n\t\t\t\tthis.termStatus.allowToSelectRefGrp = true\n\t\t\t} else if (tw.term.type == 'condition') {\n\t\t\t\tif (this.section.configKey == 'outcome' && this.parent.opts.regressionType == 'logistic') {\n\t\t\t\t\t// allow selecting refgrp\n\t\t\t\t\tthis.termStatus.allowToSelectRefGrp = true\n\t\t\t\t}\n\t\t\t\tif (this.section.configKey == 'outcome' && this.parent.opts.regressionType == 'cox') {\n\t\t\t\t\tif (!['age', 'time'].includes(tw.q.timeScale)) throw 'invalid q.timeScale'\n\t\t\t\t\tconst tdb = this.vocabApi.termdbConfig\n\n\t\t\t\t\tthis.termStatus.topInfoStatus.push(`Time axis: ${tw.q.timeScale == 'time' ? tdb.timeUnit : 'age'}`)\n\n\t\t\t\t\tthis.termStatus.topInfoStatus.push(\n\t\t\t\t\t\t`<span style=\"padding-left: 10px;\">-start: ${\n\t\t\t\t\t\t\ttw.q.timeScale == 'time' ? ' ' : 'age at '\n\t\t\t\t\t\t}entry into the cohort (i.e., ${tdb.cohortStartTimeMsg})</span>`\n\t\t\t\t\t)\n\n\t\t\t\t\tthis.termStatus.topInfoStatus.push(\n\t\t\t\t\t\t`<span style=\"padding-left: 10px;\">-end: ${\n\t\t\t\t\t\t\ttw.q.timeScale == 'time' ? ' ' : 'age at '\n\t\t\t\t\t\t}event or censoring/death</span>`\n\t\t\t\t\t)\n\n\t\t\t\t\tconst grades = Object.keys(tw.term.values).map(Number)\n\t\t\t\t\tconst maxgrade = Math.max(...grades)\n\t\t\t\t\tthis.termStatus.topInfoStatus.push(\n\t\t\t\t\t\t`<div style=\"padding-top: 8px;\">Event: first occurrence of grade ${\n\t\t\t\t\t\t\ttw.q.breaks[0] === maxgrade ? tw.q.breaks[0] : `${tw.q.breaks[0]}-${maxgrade}</div>`\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\tthis.maySet_refGrp(tw)\n\t\t\tif (this.section.configKey == 'outcome') {\n\t\t\t\tif (this.parent.config.regressionType == 'logistic') {\n\t\t\t\t\t// get non-ref group of logistic outcome variable\n\t\t\t\t\t// will be used in tooltip messages of coefficients table\n\t\t\t\t\t// and in Y axis of cubic spline plot\n\t\t\t\t\ttw.nonRefGrp = getLogisticOutcomeNonref(tw)\n\t\t\t\t} else if (this.parent.config.regressionType == 'cox') {\n\t\t\t\t\t// get event label of cox outcome variable\n\t\t\t\t\t// will be used in tooltip messages of coefficients table\n\t\t\t\t\ttw.eventLabel = getCoxOutcomeEventLabel(tw)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tsummarizeSample(tw, datalst) {\n\t\t// sepeate include and exclude categories based on term.values.uncomputable\n\t\tconst excluded_values = new Set()\n\t\tif (tw.term.values) {\n\t\t\tfor (const i in tw.term.values) {\n\t\t\t\tif (tw.term.values[i].uncomputable) excluded_values.add(tw.term.values[i].label)\n\t\t\t}\n\t\t}\n\t\tif (tw.q.mode == 'cox') {\n\t\t\tconst toExclude = datalst.find(x => x.key == -1)\n\t\t\tif (toExclude) excluded_values.add(toExclude.label)\n\t\t}\n\t\tconst sampleCounts = (this.termStatus.sampleCounts = datalst.filter(v => !excluded_values.has(v.label)))\n\t\tconst excludeCounts = (this.termStatus.excludeCounts = datalst.filter(v => excluded_values.has(v.label)))\n\n\t\t// get include, excluded and total sample count\n\t\tconst totalCount = { included: 0, excluded: 0, total: 0 }\n\t\tsampleCounts.forEach(v => (totalCount.included += v.samplecount))\n\t\texcludeCounts.forEach(v => (totalCount.excluded += v.samplecount))\n\t\ttotalCount.total = totalCount.included + totalCount.excluded\n\t\t// for condition term, subtract included count from totalCount.total to get excluded\n\t\tif (tw.term.type == 'condition' && totalCount.total) {\n\t\t\ttotalCount.excluded = totalCount.total - totalCount.included\n\t\t}\n\t\t// update bottomSummaryStatus\n\t\tthis.termStatus.bottomSummaryStatus =\n\t\t\t`${totalCount.included} samples included` +\n\t\t\t(totalCount.excluded ? `. ${totalCount.excluded} samples excluded:` : '')\n\t\tif (tw && tw.q.mode !== 'continuous' && sampleCounts.length < 2)\n\t\t\tthrow `there should be two or more discrete values with samples for variable='${tw.term.name}'`\n\t}\n\n\tmaySet_refGrp(tw) {\n\t\tif (this.section.configKey == 'outcome' && this.parent.config.regressionType == 'cox') {\n\t\t\t// no need to set refgrp\n\t\t\treturn\n\t\t}\n\t\tif (tw.q.mode == 'continuous') {\n\t\t\t// numeric term in continuous mode, refgrp NA is hardcoded in R\n\t\t\ttw.refGrp = 'NA'\n\t\t\treturn\n\t\t}\n\t\tconst sc = this.termStatus.sampleCounts\n\t\tif (!('refGrp' in tw) || !sc.find(i => i.key == tw.refGrp)) {\n\t\t\t// refGrp not defined or no longer exists according to sampleCounts[]\n\t\t\tconst o = this.orderedLabels\n\t\t\tif (o && o.length) sc.sort((a, b) => o.indexOf(a.key) - o.indexOf(b.key))\n\t\t\telse sc.sort((a, b) => (a.samplecount < b.samplecount ? 1 : -1))\n\t\t\ttw.refGrp = sc[0].key\n\t\t}\n\t}\n\n\tgetPillArgs() {\n\t\tconst section = this.section\n\t\tconst { config, state, disable_terms } = this.parent\n\t\tconst args = Object.assign(\n\t\t\t{\n\t\t\t\tactiveCohort: state.activeCohort,\n\t\t\t\tdisable_terms,\n\t\t\t\tusecase: {\n\t\t\t\t\ttarget: 'regression',\n\t\t\t\t\tdetail: section.configKey,\n\t\t\t\t\tregressionType: config.regressionType\n\t\t\t\t}\n\t\t\t},\n\t\t\tthis.term\n\t\t)\n\t\targs.filter = this.parent.parent.filter\n\t\treturn args\n\t}\n\n\tremove() {\n\t\tthis.dom.termRow.transition().duration(500).style('opacity', 0).remove()\n\n\t\tfor (const key in this.dom) {\n\t\t\tdelete this.dom[key]\n\t\t}\n\t}\n\n\trenderInteractionPrompt() {\n\t\t// set to hidden in the beginning; redisplay when interaction is enabled\n\t\tthis.dom.interactionDiv.style('display', 'none')\n\n\t\t// identify situations not eligible for showing prompt\n\t\tif (!this.term) return // missing term\n\t\tif (this.section.configKey != 'independent') return\n\t\tif (this.term.q.mode == 'spline') return // not on a spline term\n\t\tif (this.vocabApi.termdbConfig.regression?.settings?.disableInteractions) return\n\t\t{\n\t\t\t// require minimum of 2 independent terms eligible for interaction\n\t\t\tlet count = 0\n\t\t\tfor (const input of this.section.inputLst) {\n\t\t\t\tif (input.term && input.term.q.mode != 'spline') {\n\t\t\t\t\t// spline term cannot be used for interaction\n\t\t\t\t\tcount++\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (count < 2) return\n\t\t}\n\n\t\tconst n = this.term.interactions.length\n\t\tthis.dom.interactionDiv\n\t\t\t.style('display', 'inline')\n\t\t\t.html(n == 0 ? 'Add interactions' : `${n} interaction${n > 1 ? 's' : ''}`)\n\t\t\t.style('padding', '5px')\n\t\t\t.style('background-color', n == 0 ? null : '#ececec')\n\t\t\t.style('border-radius', n == 0 ? null : '6px')\n\t\t\t.style('color', n == 0 ? 'rgb(153, 153, 153)' : '#000')\n\t\t\t.style('font-size', n == 0 ? '0.8em' : '')\n\t\t\t.style('cursor', 'pointer')\n\t\t\t.on('click', () => this.renderInteractionOptions())\n\t}\n\n\trenderInteractionOptions() {\n\t\tconst self = this\n\t\tself.dom.tip.clear().showunder(self.dom.interactionDiv.node())\n\t\tif (self.parent.config.includeUnivariate) {\n\t\t\tconst label = self.parent.dom.univariateCheckboxDiv.select('label').text().trim()\n\t\t\tself.dom.tip.d.append('div').text(`Cannot add interactions. Please uncheck the \"${label}\" checkbox.`)\n\t\t\treturn\n\t\t}\n\t\tself.dom.tip.d\n\t\t\t.append('div')\n\t\t\t.style('padding', '5px')\n\t\t\t.style('font-size', '0.8em')\n\t\t\t.style('color', 'rgb(153, 153, 153)')\n\t\t\t.html(`Selected variables will each form pairwise interaction with ${this.term.term.name}`)\n\n\t\tself.dom.tip.d\n\t\t\t.append('div')\n\t\t\t.selectAll('div')\n\t\t\t.data(self.parent.config.independent.filter(tw => tw && tw.$id != self.term.$id && tw.q.mode != 'spline'))\n\t\t\t.enter()\n\t\t\t.append('div')\n\t\t\t.style('margin', '5px')\n\t\t\t.each(function (tw) {\n\t\t\t\tconst elem = select(this).append('label')\n\t\t\t\tconst checkbox = elem\n\t\t\t\t\t.append('input')\n\t\t\t\t\t.attr('type', 'checkbox')\n\t\t\t\t\t.property('checked', self.term.interactions.includes(tw.$id))\n\n\t\t\t\telem.append('span').text(' ' + tw.term.name)\n\t\t\t})\n\n\t\tself.dom.tip.d\n\t\t\t.append('button')\n\t\t\t.text('Apply')\n\t\t\t.style('margin', '5px')\n\t\t\t.on('click', () => {\n\t\t\t\tself.dom.tip.hide()\n\t\t\t\tself.term.interactions = []\n\t\t\t\tself.dom.tip.d.selectAll('input').each(function (tw) {\n\t\t\t\t\tif (select(this).property('checked')) self.term.interactions.push(tw.$id)\n\t\t\t\t})\n\t\t\t\tfor (const tw of self.parent.config.independent) {\n\t\t\t\t\tconst interactions = new Set(tw.interactions)\n\t\t\t\t\tself.term.interactions.includes(tw.$id) ? interactions.add(self.term.$id) : interactions.delete(self.term.$id)\n\t\t\t\t\ttw.interactions = [...interactions]\n\t\t\t\t}\n\t\t\t\tself.parent.editConfig(self, self.term)\n\t\t\t})\n\t}\n}\n\nfunction getQSetter4outcome(regressionType) {\n\t// only for outcome term\n\treturn {\n\t\tinteger: regressionType == 'logistic' ? maySetTwoBins : setContMode,\n\t\tfloat: regressionType == 'logistic' ? maySetTwoBins : setContMode,\n\t\tgeneExpression: regressionType == 'logistic' ? maySetTwoBins : setContMode, //Added geneExpression, but still breaks, need to fix\n\t\tcategorical: maySetTwoGroups,\n\t\tcondition: setQ4tteOutcome,\n\t\tsurvival: setQ4tteOutcome\n\t}\n}\n\n// query backend for median and create custom 2 bins with median and boundry\n// for logistic independet numeric terms\nasync function maySetTwoBins(tw, vocabApi, filter, state) {\n\t// if the bins are already binary, do not reset\n\tif (tw.q.mode == 'binary' && tw.q.lst && tw.q.lst.length == 2) {\n\t\ttw.q.mode = 'binary'\n\t\treturn\n\t}\n\n\tconst data = await vocabApi.getPercentile(tw.term, [50], state.termfilter)\n\tif (data.error || !data.values.length || !Number.isFinite(data.values[0]))\n\t\tthrow 'cannot get median value: ' + (data.error || 'no data')\n\tconst median = tw.term.type == 'integer' ? Math.round(data.values[0]) : Number(data.values[0].toFixed(2))\n\ttw.q = {\n\t\tmode: 'binary',\n\t\ttype: 'custom-bin',\n\t\tlst: [\n\t\t\t{\n\t\t\t\tstartunbounded: true,\n\t\t\t\tstopinclusive: true,\n\t\t\t\tstop: median\n\t\t\t},\n\t\t\t{\n\t\t\t\tstopunbounded: true,\n\t\t\t\tstartinclusive: false,\n\t\t\t\tstart: median\n\t\t\t}\n\t\t]\n\t}\n\n\ttw.q.lst.forEach(bin => {\n\t\tbin.label = get_bin_label(bin, tw.q)\n\t})\n\n\ttw.refGrp = tw.q.lst[0].label\n}\n\nfunction setQ4tteOutcome(tw, vocabApi, filter, state) {\n\t// set q for time-to-event outcome (i.e., condition or survival term)\n\tif (state.config.regressionType == 'logistic') {\n\t\t// if refGrp missing, set to be first group, guaranteed to be \"No event / Grade 0\"\n\t\tif (!tw.refGrp) tw.refGrp = tw.q.groups[0].name\n\t}\n\tif (state.config.regressionType == 'cox') {\n\t\tif (!tw.q.timeScale) tw.q.timeScale = 'time'\n\t}\n}\n\nasync function maySetTwoGroups(tw, vocabApi, filter, state) {\n\t// if the bins are already binary, do not reset\n\tconst { term, q } = tw\n\n\t// TODO clean up logic?\n\n\t// not condition, currently can only be categorical\n\tif (q.mode == 'binary') {\n\t\tif (q.type == 'values' && Object.keys(term.values).length == 2) return\n\t\tif (q.type == 'predefined-groupset') {\n\t\t\tconst idx = q.predefined_groupset_idx\n\t\t\tconst t_gs = term.groupsetting\n\t\t\tif (t_gs[idx] && Object.keys(t_gs[idx]).length == 2) return\n\t\t}\n\t\tif (q.type == 'custom-groupset') {\n\t\t\tconst gs = q.customset\n\t\t\tif (gs.groups.filter(g => !g.uncomputable).length == 2) return\n\t\t}\n\t}\n\n\t// step 1: check if term has only two computable categories/grades with >0 samples\n\t// if so, use the two categories as outcome and do not apply groupsetting\n\t// check the number of samples for computable categories, only use categories with >0 samples\n\tconst data = await vocabApi.getCategories(term, filter)\n\tif (data.error) throw 'cannot get categories: ' + data.error\n\tconst category2samplecount = new Map() // k: category/grade, v: number of samples\n\tconst computableCategories = [] // list of computable keys\n\tconst uncomputableCategories = [] // list of computable keys\n\tfor (const i of data.lst) {\n\t\tcategory2samplecount.set(i.key, i.samplecount)\n\t\tif (term.values && term.values[i.key] && term.values[i.key].uncomputable) uncomputableCategories.push(i.key)\n\t\telse computableCategories.push(i.key)\n\t}\n\tif (computableCategories.length < 2) {\n\t\t// TODO UI should reject this term and prompt user to select a different one\n\t\tq.type = 'values'\n\t\ttw.error = 'less than 2 categories/grades - cannot create separate groups'\n\t\treturn\n\t}\n\tif (computableCategories.length == 2) {\n\t\tq.type = 'values'\n\t\t// will use the categories from term.values{} and do not apply groupsetting\n\t\t// if the two grades happen to be \"normal\" and \"disease\" then it will make sense\n\t\t// but if the two grades are both diseaes then may not make sense\n\t\t// e.g. secondary breast cancer has just 3 and 4\n\t\treturn\n\t}\n\n\t// step 2: term has 3 or more categories/grades. must apply groupsetting\n\tconst t_gs = term.groupsetting\n\n\t// find if term already has a usable groupsetting\n\tif (\n\t\tq.customset &&\n\t\tq.customset.groups &&\n\t\tq.customset.groups.length == 2 &&\n\t\tgroupsetNoEmptyGroup(q.customset, category2samplecount)\n\t) {\n\t\tq.type = 'custom-groupset'\n\t\t// has a usable custom set\n\t\treturn\n\t}\n\n\t// step 3: check if the term has predefined groupsetting\n\tif (t_gs && t_gs.lst) {\n\t\t// has predefined groupsetting\n\t\t// note!!!! check on input.term.term but not input.term.q\n\n\t\tif (\n\t\t\tq.predefined_groupset_idx >= 0 &&\n\t\t\tt_gs.lst[q.predefined_groupset_idx] &&\n\t\t\tt_gs.lst[q.predefined_groupset_idx].groups.length == 2 &&\n\t\t\tgroupsetNoEmptyGroup(t_gs.lst[q.predefined_groupset_idx], category2samplecount)\n\t\t) {\n\t\t\t// has a usable predefined groupset\n\t\t\tq.type = 'predefined-groupset'\n\t\t\t// used for groupsetting if one of the group is filter (group.type) rahter than values,\n\t\t\t// Not in use rightnow, if used in future, uncomment following line\n\t\t\t// if (state.activeCohort != -1) q.groupsetting.activeCohort = state.activeCohort\n\t\t\treturn\n\t\t}\n\n\t\t// step 4: see if any predefined groupset has 2 groups. if so, use that\n\t\tconst i = t_gs.lst.findIndex(g => g.groups.length == 2)\n\t\tif (i != -1 && groupsetNoEmptyGroup(t_gs.lst[i], category2samplecount)) {\n\t\t\t// found a usable groupset\n\t\t\tq.predefined_groupset_idx = i\n\t\t\tq.type = 'predefined-groupset'\n\t\t\t// used for groupsetting if one of the group is filter (group.type) rahter than values,\n\t\t\t// Not in use rightnow, if used in future, uncomment following line\n\t\t\t// if (state.activeCohort != -1) q.groupsetting.activeCohort = state.activeCohort\n\t\t\treturn\n\t\t}\n\t}\n\n\t// step 5: last resort. divide values[] array into two groups\n\tconst customset = {\n\t\tactiveCohort: state.activeCohort,\n\t\t// creating 3 groups instead of 2 groups since current groupset UI expects first group to be excluded group\n\t\t// TODO: refactor client/termsetting/handlers/qualitative.ts to not consider the first group (i.e. group.currentIdx === 0) as the excluded group, but rather to consider group.excluded=true as the excluded group\n\t\tgroups: [\n\t\t\t{\n\t\t\t\tname: 'Excluded categories',\n\t\t\t\ttype: 'values',\n\t\t\t\tvalues: uncomputableCategories.map(v => {\n\t\t\t\t\treturn { key: v }\n\t\t\t\t})\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'Group 1',\n\t\t\t\ttype: 'values',\n\t\t\t\tvalues: []\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'Group 2',\n\t\t\t\ttype: 'values',\n\t\t\t\tvalues: []\n\t\t\t}\n\t\t]\n\t}\n\t// TODO use category2samplecount to evenlly divide samples\n\tconst group_i_cutoff = Math.round(computableCategories.length / 2)\n\tfor (const [i, v] of computableCategories.entries()) {\n\t\tif (i < group_i_cutoff) customset.groups[1].values.push({ key: v })\n\t\telse customset.groups[2].values.push({ key: v })\n\t}\n\tq.customset = customset\n\tq.type = 'custom-groupset'\n}\n\nfunction setContMode(tw) {\n\ttw.q.mode = 'continuous'\n}\n\nfunction groupsetNoEmptyGroup(gs, c2s) {\n\t// return true if a groupset does not have empty group\n\tfor (const g of gs.groups) {\n\t\tlet total = 0\n\t\tif (g.type == 'values') {\n\t\t\tfor (const i of g.values) total += c2s.get(i.key) || 0\n\t\t\tif (total == 0) return false\n\t\t}\n\t}\n\treturn true\n}\n\nfunction getLogisticOutcomeNonref(outcome) {\n\t// outcome is the outcome term-wrapper {q{}, refGrp, term{}}\n\tif (outcome.term.type == 'condition') {\n\t\t// condition term does not use q.type\n\t\t// from q.groups[], return the str name that's not refgrp\n\t\tfor (const i of outcome.q.groups) {\n\t\t\tif (i.name != outcome.refGrp) return i.name\n\t\t}\n\t\tthrow 'nonref group not found for logistic outcome'\n\t}\n\t// not condition term;\n\t// depending on q.type, find the non-ref group and return its name\n\tif (outcome.q.type == 'predefined-groupset') {\n\t\tif (!Number.isInteger(outcome.q.predefined_groupset_idx))\n\t\t\tthrow 'outcome.q.predefined_groupset_idx not integer when q.type is \"predefined-groupset\"'\n\t\tif (!outcome.term.groupsetting) throw 'outcome.term.groupsetting missing'\n\t\tconst grpset = outcome.term.groupsetting.lst[outcome.q.predefined_groupset_idx]\n\t\tif (!grpset) throw 'groupset not found by outcome.q.predefined_groupset_idx'\n\t\tconst nonrefgrp = grpset.groups.find(i => i.name != outcome.refGrp)\n\t\tif (!nonrefgrp) throw 'non-ref group not found for predefined-groupset'\n\t\treturn nonrefgrp.name\n\t}\n\tif (outcome.q.type == 'custom-groupset') {\n\t\tif (!outcome.q.customset) throw 'outcome.q.customset missing'\n\t\tconst nonrefgrp = outcome.q.customset.groups.find(i => i.name != outcome.refGrp)\n\t\tif (!nonrefgrp) throw 'non-ref group not found for custom-groupset'\n\t\treturn nonrefgrp.name\n\t}\n\tif (outcome.q.type == 'values') {\n\t\tif (!outcome.term.values) throw 'outcome.term.values{} missing'\n\t\tfor (const k in outcome.term.values) {\n\t\t\tconst v = outcome.term.values[k]\n\t\t\tif (v.label != outcome.refGrp) return v.label\n\t\t}\n\t\tthrow 'unknown nonref group from outcome.term.values'\n\t}\n\tif (outcome.q.type == 'custom-bin') {\n\t\tconst nonrefbin = outcome.q.lst.find(i => i.label != outcome.refGrp)\n\t\tif (!nonrefbin) throw 'non-ref bin is not found for custom-bin'\n\t\treturn nonrefbin.label\n\t}\n\tif (outcome.q.type == 'regular-bin') {\n\t\tthrow 'do not know a way to find computed bin list for type=regular-bin'\n\t}\n\tthrow 'unknown outcome.q.type'\n}\n\nfunction getCoxOutcomeEventLabel(tw) {\n\tlet eventLabel\n\tif (!tw.term.values) throw 'tw.term.values missing'\n\tif (tw.term.type == 'condition') {\n\t\tconst grades = Object.keys(tw.term.values).map(k => {\n\t\t\tconst grade = Number(k)\n\t\t\tif (!Number.isFinite(grade)) throw 'grade is not a number'\n\t\t\treturn grade\n\t\t})\n\t\tconst startGrade = tw.q.breaks[0]\n\t\tconst endGrade = Math.max(...grades)\n\t\teventLabel = `Grades ${startGrade}-${endGrade}`\n\t} else if (tw.term.type == 'survival') {\n\t\tconst exitCodes = Object.keys(tw.term.values).map(k => {\n\t\t\tconst code = Number(k)\n\t\t\tif (!Number.isFinite(code)) throw 'exit code is not a number'\n\t\t\treturn code\n\t\t})\n\t\t// exit codes can be 0=alive,1=dead; 1=alive,2=dead; etc. (see Surv() in R)\n\t\t// so using max exit code value as the exit code of the event\n\t\teventLabel = tw.term.values[Math.max(...exitCodes)].label\n\t} else {\n\t\tthrow 'unexpected tw.term.type'\n\t}\n\treturn eventLabel\n}\n", "import { select } from 'd3-selection'\nimport { InputTerm } from './regression.inputs.term'\nimport { make_one_checkbox, Menu } from '#dom'\n\n/*\noutcome and independent are two sections sharing same structure\n\"inputLst[]\" collect one or multiple variables for each section\n\"input\" tracks attributes from a variable\nblank input: a blank input is a termsetting instance. once a term is created for it, the term is filled to the same instance, and a new blank input may need to be created (for independent section)\n\n**** function cascade ****\n\nconstructor\n\tcreateSectionConfigs\n\tinitUI\n\t\taddSection\n\t\tsubmit (by clicking button)\n\t\teditConfig (by termsetting callback)\nmain\n\tmayUpdateSandboxHeader\n\tsetDisableTerms\n\trenderSection\n\t\tsyncInputsWithConfig\n\t\t\tInputTerm\n\t\t\tmayAddBlankInput\n\t\t\t\tInputTerm\n\t\tremoveInput\n\t\taddInput\n*/\n\n// non-dictionary term types to use as independent variable\n// check against allowedTermTypes from a dataset\nconst allNonDictionaryTerms = [\n\t{\n\t\ttermtype: 'snplst',\n\t\t//html: 'A list of SNPs <span style=\"font-size:.7em\">All SNPs are analyzed in one model</span>'\n\t\thtml: 'A list of variants'\n\t},\n\n\t{\n\t\ttermtype: 'snplocus',\n\t\t//html: 'Variants in a locus <span style=\"font-size:.7em\">Variants are analyzed individually</span>'\n\t\thtml: 'Variants in a locus'\n\t},\n\t{\n\t\ttermtype: 'prs',\n\t\ttext: 'Polygenic risk score'\n\t}\n]\n\nexport class RegressionInputs {\n\tconstructor(opts) {\n\t\tthis.opts = opts\n\t\tthis.app = opts.app\n\t\t// reference to the parent component's mutable instance (not its API)\n\t\tthis.parent = opts.parent\n\n\t\tsetInteractivity(this)\n\t\tsetRenderers(this)\n\n\t\tthis.createSectionConfigs()\n\t\tthis.initUI()\n\t}\n\n\tcreateSectionConfigs() {\n\t\t/* Create configuration data for each section of the input UI\n\t\tsee google doc \"Regression UI\"\n\t\t*/\n\t\t// configuration for the outcome variable section\n\t\tthis.outcome = {\n\t\t\t/*** static configuration ***/\n\t\t\theading: 'Outcome variable',\n\t\t\tselectPrompt:\n\t\t\t\tthis.opts.regressionType == 'linear' ? 'Select continuous outcome variable' : 'Select outcome variable',\n\t\t\tplaceholderIcon: '',\n\t\t\tconfigKey: 'outcome',\n\t\t\tlimit: 1,\n\t\t\tusecase: { target: 'regression', regressionType: this.opts.regressionType, detail: 'outcome' },\n\n\t\t\t/*** dynamic configuration ***/\n\t\t\tinputLst: [],\n\n\t\t\t/*** tracker for this section's DOM elements ***/\n\t\t\tdom: {}\n\t\t}\n\n\t\t// configuration for the independent variable section\n\t\tthis.independent = {\n\t\t\t/*** static configuration ***/\n\t\t\theading: 'Independent variable(s)',\n\t\t\tselectPrompt: 'Add independent variable',\n\t\t\tplaceholderIcon: '',\n\t\t\tconfigKey: 'independent',\n\t\t\tlimit: 10,\n\t\t\tusecase: { target: 'regression', regressionType: this.opts.regressionType, detail: 'independent' },\n\n\t\t\t/*** dynamic configuration ***/\n\t\t\tinputLst: [],\n\n\t\t\t/*** tracker for this section's DOM elements ***/\n\t\t\tdom: {}\n\t\t}\n\n\t\t// track sections in an array, for convenience in loops\n\t\t// but not for use in `d3.data()`\n\t\tthis.sections = [this.outcome, this.independent]\n\t}\n\n\tasync main() {\n\t\ttry {\n\t\t\tthis.config = this.parent.config\n\t\t\tthis.state = this.parent.state\n\t\t\tthis.hasError = false\n\t\t\tthis.setDisableTerms()\n\t\t\tconst updates = []\n\t\t\tfor (const section of this.sections) {\n\t\t\t\tawait this.renderSection(section)\n\t\t\t\tfor (const input of section.inputLst) {\n\t\t\t\t\tinput.dom.holder.style('border-left', input.term ? '1px solid #bbb' : '')\n\t\t\t\t\tupdates.push(input.main())\n\t\t\t\t}\n\t\t\t}\n\t\t\tawait Promise.all(updates)\n\t\t\tfor (const section of this.sections) {\n\t\t\t\tfor (const input of section.inputLst) {\n\t\t\t\t\tif ((input.term && input.term.error) || input.hasError) {\n\t\t\t\t\t\tthis.hasError = true\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tthis.hasError = true\n\t\t\tthrow e\n\t\t}\n\t}\n\n\tsetDisableTerms() {\n\t\tthis.disable_terms = []\n\t\tif (this.config.outcome && this.config.outcome.term) this.disable_terms.push(this.config.outcome.term)\n\t\tif (this.config.independent) {\n\t\t\tfor (const vb of this.config.independent) {\n\t\t\t\tthis.disable_terms.push(vb.term)\n\t\t\t}\n\t\t}\n\t}\n\n\thandleError() {\n\t\tthis.hasError = true\n\t\tthis.dom.submitBtn.property('disabled', true)\n\t}\n\n\tgetNoTermPromptOptions(section) {\n\t\t// only for independent section\n\t\tif (section.configKey != 'independent') return\n\t\t// return an array, each ele is an item in the mini menu at termsetting prompt\n\t\t// okay for the array to be empty\n\t\t// need to check if the dataset allows this\n\t\t// if so, add to this array, to be shown as mini menu\n\t\tconst lst = []\n\t\tfor (const item of structuredClone(allNonDictionaryTerms)) {\n\t\t\t// TODO do this via vocab api\n\t\t\tif (!this.state.allowedTermTypes.includes(item.termtype)) {\n\t\t\t\t// not allowed by this dataset\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif (section.inputLst.find(i => i.term && i.term.term.type == item.termtype)) {\n\t\t\t\t// same term is already present in this section, do not add a second\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif (item.termtype == 'snplocus') {\n\t\t\t\tif (this.config.includeUnivariate) {\n\t\t\t\t\t// snplocus is computationally intensive so it should not\n\t\t\t\t\t// be allowed when univariate results are included\n\t\t\t\t\titem.invalid = true\n\t\t\t\t\tconst label = this.dom.univariateCheckboxDiv.select('label').text().trim()\n\t\t\t\t\titem.invalidMsg = `Cannot add this variable. Please uncheck the \"${label}\" checkbox.`\n\t\t\t\t}\n\t\t\t}\n\t\t\tlst.push(item)\n\t\t}\n\t\tif (lst.length) {\n\t\t\t// added at least one non-dict term type\n\t\t\t// for the mini menu in termsetting prompt to show both dict- and non-dict-terms, add dict option\n\t\t\tlst.unshift({\n\t\t\t\tisDictionary: true,\n\t\t\t\ttext: 'Dictionary variable'\n\t\t\t})\n\t\t}\n\t\treturn lst\n\t}\n}\n\nfunction setRenderers(self) {\n\tself.initUI = () => {\n\t\tconst controls = self.opts.holder.append('div').style('display', 'block')\n\n\t\tself.dom = {\n\t\t\tdiv: self.opts.holder, //.style('margin', '10px 0px'),\n\t\t\tcontrols,\n\t\t\tbody: controls.append('div'),\n\t\t\tfoot: controls\n\t\t\t\t.append('div')\n\t\t\t\t.style('margin', '0px 20px')\n\t\t\t\t.style('display', 'flex')\n\t\t\t\t.style('align-items', 'center')\n\t\t\t\t.style('gap', '20px')\n\t\t}\n\n\t\tself.dom.submitBtn = self.dom.foot\n\t\t\t.append('div')\n\t\t\t.append('button')\n\t\t\t.style('display', 'none')\n\t\t\t.style('padding', '5px 15px')\n\t\t\t.style('border-radius', '15px')\n\t\t\t.style('cursor', 'pointer')\n\t\t\t.text('Run analysis')\n\t\t\t.on('click', self.submit)\n\n\t\t// checkbox for including univariate results\n\t\tself.dom.univariateCheckboxDiv = self.dom.foot.append('div').style('display', 'none')\n\t\tself.dom.univariateCheckbox = make_one_checkbox({\n\t\t\tlabeltext: 'Include univariate results',\n\t\t\tchecked: false,\n\t\t\tholder: self.dom.univariateCheckboxDiv,\n\t\t\tcallback: checked => {\n\t\t\t\tconst invalid = self.config.independent.find(v => v.interactions.length || v.term.type == 'snplocus')\n\t\t\t\tif (invalid) {\n\t\t\t\t\t// interactions or snplocus variable in use\n\t\t\t\t\t// disable univariate analysis\n\t\t\t\t\tself.dom.univariateCheckbox.property('checked', false)\n\t\t\t\t\tconst tip = new Menu()\n\t\t\t\t\ttip.showunder(self.dom.univariateCheckboxDiv.node())\n\t\t\t\t\tconst msg = `Cannot include univariate results. Please remove ${\n\t\t\t\t\t\tinvalid.interactions.length ? 'all interactions' : `the \"${invalid.term.name}\" variable`\n\t\t\t\t\t}.`\n\t\t\t\t\ttip.d.append('div').text(msg)\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tself.app.dispatch({\n\t\t\t\t\ttype: 'plot_edit',\n\t\t\t\t\tid: self.parent.id,\n\t\t\t\t\tchartType: 'regression',\n\t\t\t\t\tconfig: {\n\t\t\t\t\t\thasUnsubmittedEdits: true,\n\t\t\t\t\t\tincludeUnivariate: checked\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t}\n\t\t})\n\n\t\tself.dom.submitMsgs = self.dom.foot\n\t\t\t.append('div')\n\t\t\t.style('color', '#cc0000')\n\t\t\t.style('font-style', 'italic')\n\t\t\t.style('font-size', '0.8em')\n\n\t\tself.submitMsgs = {}\n\n\t\t/*\n\t\t\tnot using d3.data() here since each section may only\n\t\t\tbe added and re-rendered, but not removed\n\t\t*/\n\t\tfor (const section of self.sections) {\n\t\t\tconst div = self.dom.body.append('div')\n\t\t\tself.addSection(section, div)\n\t\t}\n\t}\n\n\tself.addSection = function (section, div) {\n\t\tdiv\n\t\t\t.style('display', 'none')\n\t\t\t.style('margin', '3px 5px')\n\t\t\t.style('padding', '3px 5px')\n\t\t\t.attr('data-testid', section.configKey)\n\n\t\tsection.dom = {\n\t\t\tholder: div,\n\t\t\theadingDiv: div\n\t\t\t\t.append('div')\n\t\t\t\t.style('margin', '3px 5px 20px 5px')\n\t\t\t\t.style('font-size', '17px')\n\t\t\t\t.style('color', '#bbb')\n\t\t\t\t.text(section.heading),\n\n\t\t\tinputsDiv: div.append('div')\n\t\t}\n\t}\n\n\t/* \n\t\tupdate each section's visibility,\n\t\tremove and add inputs as needed,\n\t\tand later may do more section restyling based on\n\t\tthe state of inputs that are being edited\n\t*/\n\tself.renderSection = function (section) {\n\t\t// decide to show/hide this section\n\t\t// only show when this section is for outcome,\n\t\t// or this is independent and only show it when the outcome has been selected\n\t\t// effect is to force user to first select outcome, then independent, but not to select independent first\n\t\tsection.dom.holder.style('display', section.configKey == 'outcome' || self.config.outcome ? 'block' : 'none')\n\n\t\tsyncInputsWithConfig(section)\n\t\t// section.inputLst[] is now synced with plot config\n\n\t\tconst inputs = section.dom.inputsDiv\n\t\t\t.selectAll(':scope > div')\n\t\t\t// key function (2nd arg) uses a function to determine how datum and element are joined by variable id\n\t\t\t.data(section.inputLst, input => input.term && (input.term.term.id || input.term.term.name))\n\n\t\tinputs.exit().each(removeInput)\n\n\t\tinputs.enter().append('div').each(addInput)\n\t}\n\n\tfunction syncInputsWithConfig(section) {\n\t\t// get the input variables from config.outcome or config.independent\n\t\tconst selected = self.config[section.configKey]\n\n\t\t// force the outcome variable into an array for ease of handling\n\t\t// the independent variables array will be used as-is\n\t\tconst selectedArray = Array.isArray(selected) ? selected : selected ? [selected] : []\n\n\t\tmayConvertInteractionIds(selectedArray, section)\n\n\t\t// process each selected variable\n\t\tfor (const variable of selectedArray) {\n\t\t\tif (section.configKey == 'independent') {\n\t\t\t\tif (!variable.interactions) variable.interactions = []\n\t\t\t\tfor (const id of variable.interactions) {\n\t\t\t\t\tconst tw = selectedArray.find(i => i.$id == id)\n\t\t\t\t\tif (!tw) throw 'interacting partner not found in independents: ' + id\n\t\t\t\t\tif (!tw.interactions) tw.interactions = []\n\t\t\t\t\tif (!tw.interactions.includes(variable.$id)) tw.interactions.push(variable.$id)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst input = section.inputLst.find(input => input.term?.$id == variable.$id)\n\t\t\tif (!input) {\n\t\t\t\tsection.inputLst.push(\n\t\t\t\t\tnew InputTerm({\n\t\t\t\t\t\tsection,\n\t\t\t\t\t\tterm: variable,\n\t\t\t\t\t\tparent: self\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t\t} else {\n\t\t\t\t// reassign the variable reference to the mutable variable copy\n\t\t\t\t// from state.config.outcome | .independent\n\t\t\t\tinput.term = variable\n\t\t\t}\n\t\t}\n\n\t\tmayAddBlankInput(section, self)\n\t}\n\n\t// interactions[] from url will contain term ids\n\t// convert these to $ids\n\tfunction mayConvertInteractionIds(selectedArray, section) {\n\t\tif (section.configKey != 'independent') return\n\t\tconst id2$id = new Map() // id => $id\n\t\t// first populate id2$id map\n\t\tfor (const v of selectedArray) {\n\t\t\tif (v.id) id2$id.set(v.id, v.$id)\n\t\t}\n\t\t// then convert all ids in interactions[] to $ids\n\t\tfor (const v of selectedArray) {\n\t\t\tif (v.interactions?.length) {\n\t\t\t\tfor (const [i, id] of v.interactions.entries()) {\n\t\t\t\t\tconst $id = id2$id.get(id)\n\t\t\t\t\tif ($id) v.interactions[i] = $id\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tasync function addInput(input) {\n\t\tawait input.init(\n\t\t\tselect(this).style('width', 'fit-content').style('margin', '0px 15px 35px 25px').style('padding', '0px 5px')\n\t\t)\n\t}\n\n\tfunction removeInput(input) {\n\t\t/* NOTE: editConfig deletes this input from the section.inputLst array */\n\t\tinput.remove()\n\t\tfor (const key in input.dom) {\n\t\t\t//input.dom[key].remove()\n\t\t\tdelete input.dom[key]\n\t\t}\n\t\tconst div = select(this)\n\t\tdiv.transition().duration(500).style('opacity', 0).remove()\n\t}\n\n\tself.resetSubmitButton = () => {\n\t\t// do not disable button upon ui error. only disable after clicking button and analysis is running\n\t\tself.dom.submitBtn\n\t\t\t.text('Run analysis')\n\t\t\t.style('display', self.config.outcome && self.config.independent.length ? 'block' : 'none')\n\t\t\t.property('disabled', self.hasError)\n\t}\n\n\tself.mayShowUnivariateCheckbox = () => {\n\t\tif (!self.config.outcome || self.config.independent.length < 2) {\n\t\t\t// hide univariate checkbox if analysis does not have\n\t\t\t// multiple covariates\n\t\t\tself.dom.univariateCheckboxDiv.style('display', 'none')\n\t\t\treturn\n\t\t}\n\t\tself.dom.univariateCheckboxDiv.style('display', 'block')\n\t\t// set checked status\n\t\tself.dom.univariateCheckbox.property('checked', self.config.includeUnivariate)\n\t}\n\n\tself.mayShowSubmitMsgs = () => {\n\t\tself.dom.submitMsgs\n\t\t\t.selectAll('div')\n\t\t\t.data(Object.values(self.submitMsgs))\n\t\t\t.join('div')\n\t\t\t.text(d => d)\n\t}\n}\n\nfunction setInteractivity(self) {\n\t/* this function is called when any change is made to a term of an input\n\te.g. by termsetting callback\n\t*/\n\tself.editConfig = async (input, variable) => {\n\t\tif (!variable) {\n\t\t\t// the variable has been deleted from this input; will delete this input from section\n\t\t\tconst i = input.section.inputLst.findIndex(d => d === input)\n\t\t\tif (i == -1) throw `deleting an unknown input`\n\t\t\t// delete this input\n\t\t\tinput.section.inputLst.splice(i, 1)\n\t\t\tif (input.term) {\n\t\t\t\t// if the input.term has interaction pairs, then\n\t\t\t\t// delete this term.id from those other input term.interactions\n\t\t\t\tfor (const other of input.section.inputLst) {\n\t\t\t\t\tif (!other.term || !other.term.interactions?.length) continue\n\t\t\t\t\tconst i = other.term.interactions.indexOf(input.term.$id)\n\t\t\t\t\tif (i != -1) other.term.interactions.splice(i, 1)\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\t// variable is selected for this input\n\n\t\t\tconst prevTerm = input.term\n\n\t\t\t/*\n\t\t\t\tFor a new term (replacing a blank input), the refGrp will be missing.\n\t\t\t\tIn that case, updateTerm() in regression.inputs.term.js will assign a\n\t\t\t\tdefault refGrp based on sample counts. \n\n\t\t\t\tFor a replacement term that happens to match the previous term's ID, \n\t\t\t\tfor example adjusting a group other than the refGrp, the refGrp may be \n\t\t\t\treused if there happen to be sample counts for it.\n\t\t\t*/\n\t\t\tif (prevTerm && variable.term.id === prevTerm.term.id) {\n\t\t\t\tfor (const k in prevTerm) {\n\t\t\t\t\t// reapply any unedited key-values to the variable, such as refGrp\n\t\t\t\t\tif (!(k in variable)) variable[k] = prevTerm[k]\n\t\t\t\t}\n\t\t\t}\n\t\t\tinput.term = variable\n\n\t\t\tif (variable.q.mode == 'spline' && variable.interactions) {\n\t\t\t\t// this is a spline term, delete existing interactions with this term\n\t\t\t\tfor (const other of input.section.inputLst) {\n\t\t\t\t\tif (!other.term || !other.term.interactions) continue\n\t\t\t\t\tconst i = other.term.interactions.indexOf(input.term.$id)\n\t\t\t\t\tif (i != -1) other.term.interactions.splice(i, 1)\n\t\t\t\t}\n\t\t\t\tvariable.interactions = []\n\t\t\t}\n\t\t}\n\n\t\tconst selected = []\n\t\tfor (const i of input.section.inputLst) {\n\t\t\tif (i.term) selected.push(i.term)\n\t\t}\n\t\tconst key = input.section.configKey\n\t\t// the target config to fill-in/replace/delete may hold one or more selected input variables\n\t\t// config.outcome is not an array (exactly one selected variable)\n\t\t// config.independent is an array (0 or more selected variables)\n\t\tconst configValue = Array.isArray(self.config[key]) ? selected : selected[0]\n\n\t\tself.app.dispatch({\n\t\t\ttype: 'plot_edit',\n\t\t\tid: self.parent.id,\n\t\t\tchartType: 'regression',\n\t\t\tconfig: {\n\t\t\t\thasUnsubmittedEdits: true,\n\t\t\t\t// replace config.outcome or config.independent\n\t\t\t\t[key]: JSON.parse(JSON.stringify(configValue))\n\t\t\t}\n\t\t})\n\t}\n\n\tself.submit = () => {\n\t\t// disable button upon clicking to prevent double-clicking\n\t\tself.dom.submitBtn.property('disabled', true)\n\t\tif (self.hasError) {\n\t\t\talert('Please fix the input variable errors (highlighted in red background).')\n\t\t\treturn\n\t\t}\n\n\t\tconst config = JSON.parse(JSON.stringify(self.config))\n\t\tconfig.hasUnsubmittedEdits = false\n\n\t\tself.app.dispatch({\n\t\t\ttype: 'plot_edit',\n\t\t\tid: self.parent.id,\n\t\t\tchartType: 'regression',\n\t\t\tconfig\n\t\t})\n\t}\n}\n\n/*\nsection is one of this.sections[]\ndecide if a blank input needs to be added to this section\nfor outcome section, there can just be one input, it's either blank or filled\nfor independent, there should always be one blank input, among other filled inputs\n*/\nfunction mayAddBlankInput(section, self) {\n\tif (section.inputLst.length >= section.limit) {\n\t\t// number of inputs in this section is beyond limit, do not create more\n\t\treturn\n\t}\n\tconst blankInput = section.inputLst.find(i => !i.term)\n\tif (blankInput) {\n\t\t// this section already have a blank input (without .term{})\n\t\t// as a section is limited to have only one blank input, do not add a new one\n\t\tconst noTermPromptOptions = self.getNoTermPromptOptions(section)\n\t\tif (noTermPromptOptions) {\n\t\t\t// will need to update noTermPromptOptions on this input\n\t\t\t// due to the fact that we don't want two snplst or snplocus terms in one model\n\t\t\tblankInput.pill.main({ noTermPromptOptions })\n\t\t}\n\t\treturn\n\t}\n\t// now add a blank input to this section\n\tsection.inputLst.push(\n\t\tnew InputTerm({\n\t\t\tsection,\n\t\t\tparent: self,\n\t\t\tnoTermPromptOptions: self.getNoTermPromptOptions(section)\n\t\t})\n\t)\n}\n", "import { RegressionInputs } from './regression.inputs'\nimport { RegressionResults } from './regression.results'\nimport { getCompInit, copyMerge } from '../rx'\nimport { sayerror } from '#dom'\nimport { fillTermWrapper } from '#termsetting'\nimport { getCombinedTermFilter } from '#filter'\nimport { PlotBase } from '#plots/PlotBase.js'\nimport { numericTypes, dictionaryNumericTypes } from '#shared'\n\n/*\nCode architecture:\n\nregression.js\n\tregression.inputs.js\n\t\tregression.inputs.term.js\n\t\t\tregression.inputs.values.table.js\n\tregression.results.js\n*/\n\nclass Regression extends PlotBase {\n\tstatic type = 'regression'\n\n\tconstructor(opts) {\n\t\tsuper(opts)\n\t\tthis.type = Regression.type\n\t\tthis.genomeObj = opts.app.opts.genome\n\t}\n\n\tasync init(appState) {\n\t\tthis.dom = {\n\t\t\theader: this.opts.header, // header is optional\n\t\t\terrordiv: this.opts.holder.append('div'),\n\t\t\tinputs: this.opts.holder.append('div').style('margin', '20px 10px'),\n\t\t\tresults: this.opts.holder.append('div').style('margin-left', '40px')\n\t\t}\n\n\t\t// this.id is from opts.id and assigned by rx\n\t\tconst config = appState.plots.find(p => p.id === this.id)\n\n\t\tthis.inputs = new RegressionInputs({\n\t\t\tapp: this.app,\n\t\t\tparent: this,\n\t\t\tid: this.id,\n\t\t\tholder: this.dom.inputs,\n\t\t\tregressionType: config.regressionType\n\t\t})\n\n\t\tthis.results = new RegressionResults({\n\t\t\tapp: this.app,\n\t\t\tparent: this,\n\t\t\tid: this.id,\n\t\t\tholder: this.dom.results,\n\t\t\tregressionType: config.regressionType\n\t\t})\n\t}\n\n\tgetState(appState, sub) {\n\t\tconst config = appState.plots.find(p => p.id === this.id)\n\t\tif (!config) {\n\t\t\tthrow `No plot with id='${this.id}' found. Did you set this.id before this.api = getComponentApi(this)?`\n\t\t}\n\t\tif (!config.regressionType) throw 'regressionType is required'\n\t\tconst parentConfig = this.parentId && appState.plots.find(p => p.id === this.parentId)\n\t\tconst termfilter = getCombinedTermFilter(appState, config.filter || parentConfig?.filter)\n\t\treturn {\n\t\t\tvocab: appState.vocab,\n\t\t\tformIsComplete: config.outcome && config.independent.length,\n\t\t\tactiveCohort: appState.activeCohort,\n\t\t\ttermfilter,\n\t\t\tconfig,\n\t\t\tallowedTermTypes: appState.termdbConfig.allowedTermTypes,\n\t\t\tminTimeSinceDx: appState.termdbConfig.minTimeSinceDx\n\t\t}\n\t}\n\n\t/* do not set reactsTo\n\tso it reacts to all actions matching with the plot id (controlled by store method)\n\tincluding filter/cohort change\n\t*/\n\n\tasync main() {\n\t\ttry {\n\t\t\tthis.config = JSON.parse(JSON.stringify(this.state.config))\n\t\t\tthis.mayUpdateSandboxHeader()\n\t\t\tthis.getFilter()\n\t\t\tawait this.inputs.main()\n\t\t\tawait this.results.main()\n\t\t\tthis.inputs.resetSubmitButton()\n\t\t\tthis.inputs.mayShowUnivariateCheckbox()\n\t\t\tthis.inputs.mayShowSubmitMsgs()\n\t\t} catch (e) {\n\t\t\tif (this.inputs.hasError) {\n\t\t\t\t// will hide the results ui\n\t\t\t\tthis.results.main()\n\t\t\t}\n\t\t\tsayerror(this.dom.errordiv, 'Error: ' + (e.error || e))\n\t\t\tif (e.stack) console.log(e.stack)\n\t\t}\n\t}\n\n\tmayUpdateSandboxHeader() {\n\t\tif (!this.dom.header) return\n\t\t// based on data in config state, but not section\n\t\tconst o = this.config.outcome\n\t\tthis.dom.header.html(\n\t\t\t(o ? o.term.name : '') +\n\t\t\t\t'<span style=\"opacity:.6;font-size:.7em;margin-left:10px;\">' +\n\t\t\t\tthis.config.regressionType.toUpperCase() +\n\t\t\t\t' REGRESSION</span>'\n\t\t)\n\t}\n\n\tgetFilter() {\n\t\t// regression analysis may have multiple\n\t\t// filters (e.g. term filter + restrict ancestry filter)\n\t\t// so track all filters here\n\t\tconst filters = []\n\n\t\t// term filter\n\t\tif (this.state.termfilter?.filter) filters.push(this.state.termfilter.filter)\n\n\t\t// restrict ancestry filter\n\t\tconst tws = [this.config.outcome, ...this.config.independent]\n\t\tconst tws_restrictAncestry = tws.filter(tw => tw?.q.restrictAncestry)\n\t\tif (tws_restrictAncestry.length) {\n\t\t\tif (tws_restrictAncestry.length > 1) {\n\t\t\t\tconst ancestries = new Set(tws_restrictAncestry.map(tw => tw.q.restrictAncestry.name))\n\t\t\t\tif (ancestries.size > 1) throw 'samples cannot be restricted to more than 1 ancestry'\n\t\t\t}\n\t\t\tconst tw = tws_restrictAncestry[0]\n\t\t\tfilters.push({ type: 'tvs', tvs: tw.q.restrictAncestry.tvs })\n\t\t\t// notify user that samples will be restricted by ancestry\n\t\t\tthis.inputs.submitMsgs.restrictAncestry = `Restricting analysis to samples of ${tw.q.restrictAncestry.name}`\n\t\t} else {\n\t\t\tdelete this.inputs.submitMsgs.restrictAncestry\n\t\t}\n\n\t\t// store filters\n\t\t// vocabApi will use getNormalFilter() to remove any empty filters and convert a single entry tvslst into a tvs\n\t\tthis.filter = { type: 'tvslst', join: 'and', lst: filters }\n\t}\n}\n\nexport const regressionInit = getCompInit(Regression)\n// this alias will allow abstracted dynamic imports\nexport const componentInit = regressionInit\n\nlet _ID_ = 1\n\nexport async function getPlotConfig(opts, app) {\n\t// TODO need to supply term filter of app to fillTermWrapper\n\tif (!opts.outcome) opts.outcome = {}\n\n\tawait fillTermWrapper(opts.outcome, app.vocabApi, get_defaultQ4fillTW(opts.regressionType, 'outcome'))\n\n\tconst id = 'id' in opts ? opts.id : `_REGRESSION_${_ID_++}`\n\tconst config = { id }\n\tconfig.outcome = opts.outcome\n\n\tif (opts.independent) {\n\t\tif (!Array.isArray(opts.independent)) throw '.independent[] is not array'\n\t\tfor (const t of opts.independent) {\n\t\t\tawait fillTermWrapper(\n\t\t\t\tt,\n\t\t\t\tapp.vocabApi,\n\t\t\t\tt.q?.mode ? undefined : get_defaultQ4fillTW(opts.regressionType, 'independent')\n\t\t\t)\n\t\t}\n\t\tconfig.independent = opts.independent\n\t} else {\n\t\tconfig.independent = []\n\t}\n\t// may apply term-specific changes to the default object\n\treturn copyMerge(config, opts)\n}\n\nexport function get_defaultQ4fillTW(regressionType, useCase = '') {\n\tconst defaultQ = {}\n\n\t// numeric term\n\tdefaultQ['numeric'] = regressionType == 'logistic' && useCase == 'outcome' ? { mode: 'binary' } : { mode: 'discrete' }\n\n\t// non-dictionary numeric terms will default to 2-bin using median cutoff\n\tfor (const t of numericTypes) {\n\t\tif (dictionaryNumericTypes.has(t)) continue // already covered by defaultQ['numeric']\n\t\tdefaultQ[t] =\n\t\t\tregressionType == 'logistic' && useCase == 'outcome'\n\t\t\t\t? { mode: 'binary' }\n\t\t\t\t: { mode: 'discrete', type: 'custom-bin', preferredBins: 'median' }\n\t}\n\n\t// categorical term\n\tdefaultQ['categorical'] =\n\t\tregressionType == 'logistic' && useCase == 'outcome' ? { mode: 'binary' } : { mode: 'discrete' }\n\n\t// condition term\n\tif (useCase == 'outcome') {\n\t\tif (regressionType == 'cox') {\n\t\t\t// do not preset timeScale to 'time' here because\n\t\t\t// that can cause copyMerge to overwrite saved setting\n\t\t\t// fillTW will auto fill missing value\n\t\t\tdefaultQ.condition = { mode: 'cox' }\n\t\t}\n\t\tif (regressionType == 'logistic') {\n\t\t\tdefaultQ.condition = { mode: 'binary' }\n\t\t}\n\t}\n\n\t// geneVariant term\n\tdefaultQ['geneVariant'] = { type: 'predefined-groupset' }\n\n\treturn defaultQ\n}\n\nexport function makeChartBtnMenu(holder, chartsInstance) {\n\t/*\n\tholder: the holder in the tooltip\n\tchartsInstance: MassCharts instance\n\t*/\n\tconst allMethods = [\n\t\t{ label: 'Linear', type: 'linear' },\n\t\t{ label: 'Logistic', type: 'logistic' },\n\t\t{ label: 'Cox', type: 'cox' }\n\t]\n\tconst useMethods = allMethods.filter(i => chartsInstance.state.currentCohortChartTypes.includes(i.type))\n\tif (useMethods.length == 0) return holder.append('div').text('Error: no methods available')\n\tif (useMethods.length == 1) {\n\t\t// only 1 method supported. directly show ui for this method but not menu\n\t\tchartsInstance.dom.tip.hide()\n\t\tchartsInstance.prepPlot({\n\t\t\tconfig: {\n\t\t\t\tchartType: 'regression',\n\t\t\t\tregressionType: useMethods[0].type,\n\t\t\t\tindependent: []\n\t\t\t}\n\t\t})\n\t\treturn\n\t}\n\t// multiple methods. show menu to list them\n\tfor (const { label, type } of useMethods) {\n\t\tholder\n\t\t\t.append('div')\n\t\t\t.attr('class', 'sja_menuoption sja_sharp_border')\n\t\t\t.text(label)\n\t\t\t.on('click', () => {\n\t\t\t\tchartsInstance.dom.tip.hide()\n\t\t\t\tchartsInstance.prepPlot({\n\t\t\t\t\tconfig: {\n\t\t\t\t\t\tchartType: 'regression',\n\t\t\t\t\t\tregressionType: type,\n\t\t\t\t\t\tindependent: []\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t})\n\t}\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["e", "errors", "t_gs", "input", "i", "tw"]
|
|
7
|
+
}
|