@sjcrh/proteinpaint-client 2.205.0 → 2.206.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-5OYM4MXA.js +1367 -0
- package/dist/AggMatrixInput-4VTI4Y6E.js +277 -0
- package/dist/AggregateMatrix-K7SGNO63.js +41 -0
- package/dist/AppHeader-WU6TO2OZ.js +830 -0
- package/dist/BoxPlot-OW7U3XTF.js +1211 -0
- package/dist/CorrelationVolcano-B3JTTZHF.js +614 -0
- package/dist/Cuminc-AJEXWRU2.js +1219 -0
- package/dist/DE-2J7DSRPC.js +89 -0
- package/dist/DEinput-I7JWNOSD.js +499 -0
- package/dist/DM-NQ46YPGF.js +90 -0
- package/dist/DifferentialAnalysis-BFCQBX5J.js +237 -0
- package/dist/Disco-ZJLVQRTC.js +3389 -0
- package/dist/Disco.UI-AEDACXW2.js +243 -0
- package/dist/DmrPlot-QMRXAOM3.js +637 -0
- package/dist/GB-MFU2UJ22.js +1391 -0
- package/dist/GSEA-E3NHU22A.js +851 -0
- package/dist/GeneExpInput-MIUNSOPY.js +362 -0
- package/dist/Geomap-HAJG3STN.js +84 -0
- package/dist/HicApp-ECFFIRWI.js +2245 -0
- package/dist/IDCViewer-TNSD3U2V.js +10812 -0
- package/dist/NumBinaryEditor-CNBGZ6WY.js +279 -0
- package/dist/NumBinaryEditor.unit.spec-SKFDALF3.js +312 -0
- package/dist/NumContEditor-7ID2U7JL.js +105 -0
- package/dist/NumContEditor.unit.spec-XHSQSAWK.js +164 -0
- package/dist/NumCustomBinEditor-PAIPRJPO.js +33 -0
- package/dist/NumCustomBinEditor.unit.spec-QYVZMMHV.js +397 -0
- package/dist/NumDiscreteEditor-K2NZZQTH.js +170 -0
- package/dist/NumDiscreteEditor.unit.spec-3CG5VEQL.js +233 -0
- package/dist/NumRegularBinEditor-EOVZ22TP.js +33 -0
- package/dist/NumRegularBinEditor.unit.spec-FHTVH5FH.js +278 -0
- package/dist/NumSplineEditor-N3REMJUC.js +210 -0
- package/dist/NumSplineEditor.unit.spec-DZCP35GL.js +224 -0
- package/dist/NumericDensity-42MWVI2S.js +33 -0
- package/dist/NumericDensity.unit.spec-T2HHSQON.js +418 -0
- package/dist/NumericHandler-5XU3SSPD.js +34 -0
- package/dist/NumericHandler.unit.spec-3F23KSAQ.js +214 -0
- package/dist/ProteomeInput-UN2BUNRO.js +388 -0
- package/dist/Regression-HWLJENA5.js +1416 -0
- package/dist/RunChart2-YO55WE4M.js +749 -0
- package/dist/SC-LEDJ4DQR.js +1107 -0
- package/dist/Violin-E6PDJZ2B.js +1082 -0
- package/dist/Volcano-XJTBWYUK.js +1649 -0
- package/dist/Wsi-S675CYTW.js +431 -0
- package/dist/adSandbox-ZJQ5ZW2T.js +33 -0
- package/dist/animatedBubbleChart-LRUS7W36.js +547 -0
- package/dist/app-7Q3QIBU4.js +32 -0
- package/dist/app-PKSI4MV5.js +42 -0
- package/dist/app.js +17 -17
- package/dist/bam-X5JH5ZT7.js +876 -0
- package/dist/barchart-UT6J4L2N.js +42 -0
- package/dist/barchart2-ZG5QJO3C.js +309 -0
- package/dist/block-TC466NGW.js +6249 -0
- package/dist/block.init-CIBNSYAC.js +33 -0
- package/dist/block.mds.expressionrank-EY5PCQCK.js +354 -0
- package/dist/block.mds.geneboxplot-R6AOMHO5.js +823 -0
- package/dist/block.mds.junction-JMV6FNYC.js +1539 -0
- package/dist/block.mds.svcnv-IHTV3QYG.js +6796 -0
- package/dist/block.svg-NTFLVQAQ.js +159 -0
- package/dist/block.tk.aicheck-FYPL32Y4.js +278 -0
- package/dist/block.tk.ase-FWCB6VBO.js +360 -0
- package/dist/block.tk.bam-Q5UFUABN.js +1901 -0
- package/dist/block.tk.bedgraphdot-KBI3GFDM.js +379 -0
- package/dist/block.tk.bigwig.ui-KXNFX7G7.js +206 -0
- package/dist/block.tk.hicstraw-MQBH3YAJ.js +818 -0
- package/dist/block.tk.junction-EBTVXLJH.js +2358 -0
- package/dist/block.tk.junction.textmatrixui-ETYLCP2O.js +194 -0
- package/dist/block.tk.ld-NLB6L6WQ.js +94 -0
- package/dist/block.tk.menu-PJLCOXVJ.js +1024 -0
- package/dist/block.tk.pgv-JOIQVWL2.js +938 -0
- package/dist/brainImaging-SPRC3QFB.js +515 -0
- package/dist/brainRegions-LGQGRWG7.js +217 -0
- package/dist/brainRegions-LGQGRWG7.js.map +7 -0
- package/dist/bubbleHeatmap-CFTZ5RXH.js +378 -0
- package/dist/cellTypeBubbleHeatmap-DXPLFT5U.js +278 -0
- package/dist/chunk-2BQ572SL.js +102 -0
- package/dist/chunk-2DQIQYY3.js +103 -0
- package/dist/chunk-2POQWEK6.js +134 -0
- package/dist/chunk-2SQEVMAL.js +446 -0
- package/dist/chunk-37HTZ6IG.js +158 -0
- package/dist/chunk-452765PG.js +2676 -0
- package/dist/chunk-4DXQJGJ7.js +31 -0
- package/dist/chunk-4OLM3KSB.js +2708 -0
- package/dist/chunk-4OLM3KSB.js.map +7 -0
- package/dist/chunk-54KC7DAB.js +178 -0
- package/dist/chunk-5D5YTFI2.js +783 -0
- package/dist/chunk-5DBW3WLK.js +129 -0
- package/dist/chunk-5ILEFNXJ.js +402 -0
- package/dist/chunk-5UO7MKCO.js +59 -0
- package/dist/chunk-7R7P6VMT.js +243 -0
- package/dist/chunk-7X6NF7NI.js +96 -0
- package/dist/chunk-ANGLZ4XR.js +26 -0
- package/dist/chunk-BMQDU7KN.js +38 -0
- package/dist/chunk-C5TU4AYP.js +281 -0
- package/dist/chunk-DBQA6QIJ.js +4311 -0
- package/dist/chunk-DHNET3P4.js +42 -0
- package/dist/chunk-EGKHDALO.js +382 -0
- package/dist/chunk-EPWGUWQP.js +34 -0
- package/dist/chunk-F3EYPES3.js +1339 -0
- package/dist/chunk-F4DM3WS4.js +194 -0
- package/dist/chunk-FTLCINDC.js +294 -0
- package/dist/chunk-GT6WJUJY.js +480 -0
- package/dist/chunk-GWCK5QGV.js +70 -0
- package/dist/chunk-HJSGHFJ6.js +464 -0
- package/dist/chunk-HS6BTSFX.js +49 -0
- package/dist/chunk-IB5TKNG5.js +5071 -0
- package/dist/chunk-IIMTOPH3.js +54 -0
- package/dist/chunk-ILEXRHF7.js +367 -0
- package/dist/chunk-ILEXRHF7.js.map +7 -0
- package/dist/chunk-IZUYLFOX.js +1608 -0
- package/dist/chunk-IZUYLFOX.js.map +7 -0
- package/dist/chunk-JAXN3Q3K.js +272 -0
- package/dist/chunk-K6PYTAXW.js +2853 -0
- package/dist/chunk-KIRZXPMB.js +141 -0
- package/dist/chunk-KT4OZVO3.js +1275 -0
- package/dist/chunk-L32KMIC3.js +54 -0
- package/dist/chunk-LB7NENEB.js +123 -0
- package/dist/chunk-LDWMVZYF.js +562 -0
- package/dist/chunk-M367Y7ML.js +140 -0
- package/dist/chunk-M4XXKTH2.js +339 -0
- package/dist/chunk-ME7OF3CS.js +176 -0
- package/dist/chunk-N2CXLMNX.js +626 -0
- package/dist/chunk-N7DVQTPC.js +119 -0
- package/dist/chunk-N7TD7N7D.js +518 -0
- package/dist/chunk-NBX6TT5C.js +299 -0
- package/dist/chunk-NLR7JIMM.js +1986 -0
- package/dist/chunk-NSRGYBDM.js +339 -0
- package/dist/chunk-NVS7KYYI.js +379 -0
- package/dist/chunk-OVPEMVXT.js +397 -0
- package/dist/chunk-OXWLQQXL.js +274 -0
- package/dist/chunk-Q5SK3U2T.js +24163 -0
- package/dist/chunk-Q5SK3U2T.js.map +7 -0
- package/dist/chunk-QGGSYEVJ.js +55 -0
- package/dist/chunk-QLEVONLD.js +50 -0
- package/dist/chunk-RFW5BRIZ.js +1233 -0
- package/dist/chunk-RFW5BRIZ.js.map +7 -0
- package/dist/chunk-RNWHB5DI.js +98 -0
- package/dist/chunk-RPDVFM7E.js +2133 -0
- package/dist/chunk-RUHLDUOT.js +203 -0
- package/dist/chunk-RV34WFGZ.js +197 -0
- package/dist/chunk-SDVE5ECI.js +6360 -0
- package/dist/chunk-SWO6DZTG.js +170 -0
- package/dist/chunk-SYPSS3JQ.js +387 -0
- package/dist/chunk-TDM3645O.js +2327 -0
- package/dist/chunk-VVO3R5JV.js +217 -0
- package/dist/chunk-VYEU6Y35.js +14 -0
- package/dist/chunk-WGXC6IEF.js +263 -0
- package/dist/chunk-WPDM57B5.js +1720 -0
- package/dist/chunk-WS7WKS2B.js +2784 -0
- package/dist/chunk-X63NSV33.js +276 -0
- package/dist/chunk-XXNRSSBR.js +56 -0
- package/dist/chunk-YD6UGDFI.js +102 -0
- package/dist/chunk-YRIYDFNU.js +160 -0
- package/dist/chunk-YY5WQQ3J.js +194 -0
- package/dist/chunk-Z2ZITHT4.js +4195 -0
- package/dist/chunk-Z4SM3FBK.js +302 -0
- package/dist/chunk-ZEYEIUEZ.js +240 -0
- package/dist/chunk-ZLYTDHQP.js +677 -0
- package/dist/chunk-ZWCVRVV4.js +550 -0
- package/dist/cohort-FZNMFWOX.js +70 -0
- package/dist/condition-AJJLFCBQ.js +327 -0
- package/dist/controls-SZOLV37V.js +34 -0
- package/dist/controls.config-CVP75WFA.js +34 -0
- package/dist/correlation-UFJFQHQ3.js +95 -0
- package/dist/customdata.inputui-HOVA4A6O.js +284 -0
- package/dist/dataDownload-VTUG4IOK.js +329 -0
- package/dist/databrowser.ui-O5S4Y4EK.js +425 -0
- package/dist/dictionary-L2UNNNP7.js +113 -0
- package/dist/dnaMethylation-B4SWZI4O.js +33 -0
- package/dist/dnaMethylation.integration.spec-ANJAMNYJ.js +198 -0
- package/dist/dofetch-F5XSHQIS.js +48 -0
- package/dist/e2pca-66ARIMKL.js +344 -0
- package/dist/ep-OFGJYVUY.js +1249 -0
- package/dist/expclust.gdc.spec-22RXQTTP.js +302 -0
- package/dist/facet-GVZQ3RPN.js +519 -0
- package/dist/gb-HEPGVYEK.js +81 -0
- package/dist/geneExpClustering-3NU2U422.js +244 -0
- package/dist/geneExpression-FXQ4L2J2.js +310 -0
- package/dist/geneExpression-XYVYJJA5.js +33 -0
- package/dist/geneExpression.unit.spec-K3FIRSNK.js +99 -0
- package/dist/geneORA-5M2JSDMF.js +273 -0
- package/dist/geneRanking-TP3R3CS3.js +548 -0
- package/dist/geneVariant-232EYUFJ.js +36 -0
- package/dist/geneVariant-BHXTPUDC.js +286 -0
- package/dist/geneVariant.integration.spec-ICFHVFIR.js +388 -0
- package/dist/genefusion.ui-ABRCUQFC.js +303 -0
- package/dist/geneset-N42FIVA6.js +203 -0
- package/dist/genomeBrowser.spec-5HKQKLRU.js +276 -0
- package/dist/grin2-H2KJYLP6.js +1137 -0
- package/dist/grin2-NGMTEMXF.js +70 -0
- package/dist/hierCluster-JU5JPLM7.js +55 -0
- package/dist/hierCluster-LSSH275H.js +59 -0
- package/dist/hierCluster.config-ILOR7GBB.js +36 -0
- package/dist/hierCluster.integration.spec-CNR5OJOH.js +483 -0
- package/dist/hierCluster.interactivity-TLEIVTFK.js +49 -0
- package/dist/hierCluster.renderers-P7JNIT3N.js +19 -0
- package/dist/imagePlot-BF67SXQR.js +156 -0
- package/dist/importPlot-OHXSXNZN.js +8 -0
- package/dist/isoformExpression-4VKHE4HA.js +35 -0
- package/dist/isoformExpression.unit.spec-4TVSIFG4.js +237 -0
- package/dist/junction-VUHORV43.js +36 -0
- package/dist/junction.customTerm-FRYWSS4P.js +16 -0
- package/dist/junction.unit.spec-KKVLYT7Q.js +182 -0
- package/dist/launch.adhoc-UDYMFZTQ.js +37 -0
- package/dist/leftlabel.sample-R5FFBWG3.js +258 -0
- package/dist/legacyDataset-IEFWFVS6.js +117 -0
- package/dist/lollipop-3IX6ZYUN.js +166 -0
- package/dist/maf-42UFYSL4.js +455 -0
- package/dist/maftimeline-M5WYEN62.js +587 -0
- package/dist/matrix-CI76EDHU.js +54 -0
- package/dist/matrix-WJZKA6VR.js +59 -0
- package/dist/matrix.cells-ZFKVIPDC.js +26 -0
- package/dist/matrix.config-24TFHBEM.js +37 -0
- package/dist/matrix.data-NCGZPNWR.js +23 -0
- package/dist/matrix.groups-XQJTGM6M.js +26 -0
- package/dist/matrix.integration.spec-OGXZUDE6.js +3160 -0
- package/dist/matrix.interactivity-ZOOTPNSW.js +37 -0
- package/dist/matrix.layout-5J2YENK3.js +39 -0
- package/dist/matrix.legend-U36VCS46.js +20 -0
- package/dist/matrix.renderers-4KFE7ZVR.js +34 -0
- package/dist/matrix.serieses-AW7XBXLJ.js +19 -0
- package/dist/matrix.sort-7PMECLOE.js +26 -0
- package/dist/matrix.sort.unit.spec-GIA2YOTQ.js +468 -0
- package/dist/matrix.sorterUi-J6PRUT6J.js +16 -0
- package/dist/matrix.sorterUi.unit.spec-OPGKZZL6.js +338 -0
- package/dist/matrix.unit.spec-7UIVVR4T.js +150 -0
- package/dist/mavb-MSYUMT6W.js +727 -0
- package/dist/mds.fimo-OYEAQP37.js +513 -0
- package/dist/mds.samplescatterplot-EXISSRQQ.js +1545 -0
- package/dist/mds.survivalplot-SZST6BLN.js +477 -0
- package/dist/multivalue-YDE7L75Y.js +83 -0
- package/dist/numericDictTermCluster-5AKP6ICC.js +63 -0
- package/dist/oncomatrix-2OEIYWR6.js +290 -0
- package/dist/oncomatrix.spec-CXQW4JWU.js +443 -0
- package/dist/plot.2dvaf-LN7A3NNC.js +372 -0
- package/dist/plot.app-YIQOY2Z7.js +36 -0
- package/dist/plot.barplot-HF2J25XP.js +97 -0
- package/dist/plot.boxplot-YJH4L27U.js +146 -0
- package/dist/plot.brainImaging-PS4TRSPI.js +51 -0
- package/dist/plot.disco-BN5RNZ6Q.js +99 -0
- package/dist/plot.ssgq-N2HTOIY3.js +134 -0
- package/dist/plot.vaf2cov-6AOHRUQ2.js +253 -0
- package/dist/polar2-TC5OEJRE.js +232 -0
- package/dist/profileForms-5WV2TSBB.js +941 -0
- package/dist/profilePlot-OJLLW44P.js +49 -0
- package/dist/proteinView-CGNAJN4S.js +1357 -0
- package/dist/proteinView-CGNAJN4S.js.map +7 -0
- package/dist/proteomeCohortCompare-XXQGGVCF.js +912 -0
- package/dist/proteomeCohortCompare-XXQGGVCF.js.map +7 -0
- package/dist/pseudbulk.unit.spec-RAYRGN6C.js +86 -0
- package/dist/pseudobulk-ADHAYVSQ.js +35 -0
- package/dist/qualitative-JXEI3IYC.js +38 -0
- package/dist/radar2-BWTKSTT3.js +327 -0
- package/dist/radarFacility2-WIRSKTDG.js +335 -0
- package/dist/rememberedGvQ.unit.spec-N43O4YTF.js +211 -0
- package/dist/render-J7WOYBOL.js +33 -0
- package/dist/report-DRPCXX2B.js +217 -0
- package/dist/sampleView-BV6BQGGQ.js +43 -0
- package/dist/samplelst-ZD63EYO7.js +106 -0
- package/dist/samplematrix-ZZ3DVELU.js +2193 -0
- package/dist/sc-MUI43YTB.js +81 -0
- package/dist/scatter-7B44HTKN.js +88 -0
- package/dist/scatter-UEDVIE4Y.js +880 -0
- package/dist/selectGenomeWithTklst-WGOKGVZ5.js +129 -0
- package/dist/singleCellCellType-Z7OXK7PI.js +33 -0
- package/dist/singleCellCellType.unit.spec-IIOVCCJQ.js +154 -0
- package/dist/singleCellGeneExpression-LYZAIJ2Z.js +33 -0
- package/dist/singleCellGeneExpression.unit.spec-67AAWZTG.js +148 -0
- package/dist/singleCellPlot-TXPYQLSH.js +49 -0
- package/dist/singlecell-22OG6HNI.js +1566 -0
- package/dist/singlecell-7TBALI2S.js +81 -0
- package/dist/snp-3U2G3Z57.js +33 -0
- package/dist/snp.unit.spec-BMBBUBYD.js +171 -0
- package/dist/snplocus-SSVZDIQV.js +203 -0
- package/dist/spliceevent.a53ss.diagram-FK7CN4AU.js +146 -0
- package/dist/spliceevent.exonskip.diagram-EFLGV3O4.js +278 -0
- package/dist/spliceevent.noeventdiagram-2DYO7CCZ.js +455 -0
- package/dist/ssGSEA-52LWBQJP.js +33 -0
- package/dist/ssGSEA.unit.spec-3JV6WHUQ.js +83 -0
- package/dist/stattable-RLMYQ4G6.js +117 -0
- package/dist/studyCatalog-DKB3U7EV.js +414 -0
- package/dist/studyCatalog-DKB3U7EV.js.map +7 -0
- package/dist/summarizeCnvGeneexp-QPRYAKC2.js +158 -0
- package/dist/summarizeGeneexpSurvival-RWVQXEKB.js +105 -0
- package/dist/summarizeMutationCnv-DW5F6NUJ.js +159 -0
- package/dist/summarizeMutationDiagnosis-5FOQ7CHI.js +35 -0
- package/dist/summarizeMutationSurvival-4UKB4EVO.js +99 -0
- package/dist/summary-TYC6QNT4.js +42 -0
- package/dist/summary.integration.spec-5GLJJZNM.js +409 -0
- package/dist/summaryInput-4IJGKW4P.js +242 -0
- package/dist/sunburst-G7DGATWP.js +278 -0
- package/dist/survival-IHM6A7LL.js +1248 -0
- package/dist/survival-MKNABJPU.js +53 -0
- package/dist/survival.integration.spec-THOKI3DL.js +613 -0
- package/dist/survival.integration.spec-THOKI3DL.js.map +7 -0
- package/dist/svgraph-VB7JWWR5.js +1382 -0
- package/dist/svmr-VLQIO2U5.js +3837 -0
- package/dist/table-EAXMDWOY.js +197 -0
- package/dist/termCollection-5LG7ICQY.js +252 -0
- package/dist/termCollection-SB6MWLFK.js +33 -0
- package/dist/termCollection.unit.spec-H5ITGTR3.js +299 -0
- package/dist/termCollectionFractionSelection-2XZSTDCQ.js +42 -0
- package/dist/termCollectionFractionSelection.unit.spec-BIO7V6KA.js +188 -0
- package/dist/tk-TRWYZLQ2.js +1121 -0
- package/dist/tk-VZI5HNSX.js +41 -0
- package/dist/tp.ui-J5SNNAT3.js +1454 -0
- package/dist/tvs.dt-6YHFJPER.js +34 -0
- package/dist/tvs.dtcnv.categorical-WTIE63GM.js +35 -0
- package/dist/tvs.dtcnv.continuous-OCMKGTF5.js +67 -0
- package/dist/tvs.dtfusion-CA23UNM3.js +35 -0
- package/dist/tvs.dtitd-VSYMR3OD.js +35 -0
- package/dist/tvs.dtsnvindel-YBNO3CYF.js +35 -0
- package/dist/tvs.dtsv-S743GBB5.js +35 -0
- package/dist/tvs.numeric-22AHXO5K.js +20 -0
- package/dist/tvs.samplelst-XAJO4EM6.js +98 -0
- package/dist/tvs.termCollection-QOVJGAUC.js +124 -0
- package/dist/vocabulary-6EADTHP3.js +36 -0
- package/dist/wsi.direct-2WB2NGC5.js +8184 -0
- package/package.json +3 -3
- package/dist/2dmaf-ZQ7ACPAD.js +0 -1367
- package/dist/AggMatrixInput-EACGUIQA.js +0 -277
- package/dist/AggregateMatrix-TC5DTSYN.js +0 -41
- package/dist/AppHeader-PHI6US5B.js +0 -830
- package/dist/BoxPlot-QWKK3IJ7.js +0 -1211
- package/dist/CorrelationVolcano-QJJN7FVP.js +0 -614
- package/dist/Cuminc-6F2C5C4E.js +0 -1219
- package/dist/DE-HRJH6ZQL.js +0 -89
- package/dist/DEinput-T3MPAYPH.js +0 -499
- package/dist/DM-PEG4ED2X.js +0 -90
- package/dist/DifferentialAnalysis-XGXHWGPI.js +0 -237
- package/dist/Disco-7SRTTB3X.js +0 -3389
- package/dist/Disco.UI-CKKZ5MMK.js +0 -243
- package/dist/DmrPlot-N4CT4J2I.js +0 -637
- package/dist/GB-NVCLPRWN.js +0 -1391
- package/dist/GSEA-UZUNJG7Z.js +0 -851
- package/dist/GeneExpInput-3MDN2CAW.js +0 -362
- package/dist/Geomap-ZUF2PE5A.js +0 -84
- package/dist/HicApp-OIJT5TFU.js +0 -2245
- package/dist/IDCViewer-ZSH2E57L.js +0 -10812
- package/dist/NumBinaryEditor-74ZPGT7L.js +0 -279
- package/dist/NumBinaryEditor.unit.spec-T2I66SO5.js +0 -312
- package/dist/NumContEditor-M2GARZXM.js +0 -105
- package/dist/NumContEditor.unit.spec-G2QBBNH7.js +0 -164
- package/dist/NumCustomBinEditor-P44G67KS.js +0 -33
- package/dist/NumCustomBinEditor.unit.spec-AZHJN3V6.js +0 -397
- package/dist/NumDiscreteEditor-VOZ63LZY.js +0 -170
- package/dist/NumDiscreteEditor.unit.spec-CFSVPNBA.js +0 -233
- package/dist/NumRegularBinEditor-I6GJQR7W.js +0 -33
- package/dist/NumRegularBinEditor.unit.spec-IDJE7H6S.js +0 -278
- package/dist/NumSplineEditor-BCGWE52A.js +0 -210
- package/dist/NumSplineEditor.unit.spec-YQAL7L2E.js +0 -224
- package/dist/NumericDensity-P25W63RV.js +0 -33
- package/dist/NumericDensity.unit.spec-N7CQ5W5L.js +0 -418
- package/dist/NumericHandler-R7JWIFEO.js +0 -34
- package/dist/NumericHandler.unit.spec-LMGIAGZJ.js +0 -214
- package/dist/ProteomeInput-PRYKKF5E.js +0 -388
- package/dist/Regression-PSHH7ZXN.js +0 -1416
- package/dist/RunChart2-KJ2UWVCE.js +0 -749
- package/dist/SC-R6ZIJZ6F.js +0 -1107
- package/dist/Violin-GTQAUJ7B.js +0 -1082
- package/dist/Volcano-NER64J7W.js +0 -1649
- package/dist/Wsi-GXNGL7O6.js +0 -431
- package/dist/adSandbox-SXSHVG4P.js +0 -33
- package/dist/animatedBubbleChart-Q4NEETEH.js +0 -547
- package/dist/app-MX4PL2QO.js +0 -42
- package/dist/app-R5CTEVAC.js +0 -32
- package/dist/bam-45N3FEEM.js +0 -876
- package/dist/barchart-YCTKQJQX.js +0 -42
- package/dist/barchart2-252GS3CA.js +0 -309
- package/dist/block-CR75JHV3.js +0 -6249
- package/dist/block.init-U3JMED2E.js +0 -33
- package/dist/block.mds.expressionrank-TAN3BDPS.js +0 -354
- package/dist/block.mds.geneboxplot-EN344GEP.js +0 -823
- package/dist/block.mds.junction-RFVVJUTR.js +0 -1539
- package/dist/block.mds.svcnv-SSUMXEWD.js +0 -6796
- package/dist/block.svg-LRPGNFFI.js +0 -159
- package/dist/block.tk.aicheck-YY23FT2G.js +0 -278
- package/dist/block.tk.ase-JCGPFKFT.js +0 -360
- package/dist/block.tk.bam-NZDC4H7Y.js +0 -1901
- package/dist/block.tk.bedgraphdot-NCNZPZH6.js +0 -379
- package/dist/block.tk.bigwig.ui-Z7G6ZITU.js +0 -206
- package/dist/block.tk.hicstraw-VVDP4UF5.js +0 -818
- package/dist/block.tk.junction-L4YBPAHM.js +0 -2358
- package/dist/block.tk.junction.textmatrixui-6CMKKUB5.js +0 -194
- package/dist/block.tk.ld-VCP2R5UO.js +0 -94
- package/dist/block.tk.menu-ZJYGMEDX.js +0 -1024
- package/dist/block.tk.pgv-M5WNUIVS.js +0 -938
- package/dist/brainImaging-JGECJHZO.js +0 -515
- package/dist/brainRegions-NTEAXNZJ.js +0 -234
- package/dist/brainRegions-NTEAXNZJ.js.map +0 -7
- package/dist/bubbleHeatmap-7DQNWBQ2.js +0 -378
- package/dist/cellTypeBubbleHeatmap-LAE7U3RF.js +0 -278
- package/dist/chunk-2AQT3ZWL.js +0 -626
- package/dist/chunk-2GLNPB5J.js +0 -203
- package/dist/chunk-2O4CS3EZ.js +0 -274
- package/dist/chunk-2Z4ZSINZ.js +0 -323
- package/dist/chunk-2Z4ZSINZ.js.map +0 -7
- package/dist/chunk-3MFFZRH3.js +0 -6360
- package/dist/chunk-3PHXBY3Z.js +0 -1275
- package/dist/chunk-4AQQ3BXD.js +0 -70
- package/dist/chunk-4PPZYVWZ.js +0 -281
- package/dist/chunk-4WEA7HHH.js +0 -26
- package/dist/chunk-57NYHASA.js +0 -38
- package/dist/chunk-5AAAH4OZ.js +0 -141
- package/dist/chunk-5BCNVZIW.js +0 -480
- package/dist/chunk-6JBLNS4D.js +0 -387
- package/dist/chunk-6JBQLOJW.js +0 -1339
- package/dist/chunk-756KZF5Y.js +0 -158
- package/dist/chunk-ABTO5QSB.js +0 -276
- package/dist/chunk-ALEZQQOK.js +0 -299
- package/dist/chunk-APK7TUJX.js +0 -102
- package/dist/chunk-AQAFURQM.js +0 -59
- package/dist/chunk-BEJJS2HC.js +0 -194
- package/dist/chunk-CZ5QLVWK.js +0 -49
- package/dist/chunk-D2MZT7CC.js +0 -176
- package/dist/chunk-D6G64XPJ.js +0 -96
- package/dist/chunk-DE3F7FAP.js +0 -34
- package/dist/chunk-DF3IMIR2.js +0 -464
- package/dist/chunk-E4WIMTK4.js +0 -446
- package/dist/chunk-E7TJXNIL.js +0 -42
- package/dist/chunk-G3JNTWCX.js +0 -103
- package/dist/chunk-GN2IIC6U.js +0 -160
- package/dist/chunk-GRI74AXV.js +0 -294
- package/dist/chunk-HDTFYTEL.js +0 -2694
- package/dist/chunk-HDTFYTEL.js.map +0 -7
- package/dist/chunk-IAE3KWN5.js +0 -550
- package/dist/chunk-IB4NE4SI.js +0 -397
- package/dist/chunk-IK2BO37K.js +0 -1608
- package/dist/chunk-IK2BO37K.js.map +0 -7
- package/dist/chunk-IS4VLUEX.js +0 -382
- package/dist/chunk-J2DICGKC.js +0 -194
- package/dist/chunk-J7JDCNLU.js +0 -24141
- package/dist/chunk-J7JDCNLU.js.map +0 -7
- package/dist/chunk-JBUEQ4E6.js +0 -263
- package/dist/chunk-JIDJBM2R.js +0 -2676
- package/dist/chunk-JNVWSFNC.js +0 -54
- package/dist/chunk-JYOIO5UY.js +0 -2133
- package/dist/chunk-KAFDQKN7.js +0 -1720
- package/dist/chunk-L743GRJE.js +0 -783
- package/dist/chunk-LGOTIL62.js +0 -54
- package/dist/chunk-LHP7RXET.js +0 -243
- package/dist/chunk-LK2GHBUH.js +0 -123
- package/dist/chunk-MAVDQAZE.js +0 -518
- package/dist/chunk-MKT4OJ3G.js +0 -102
- package/dist/chunk-N635HDJ4.js +0 -178
- package/dist/chunk-NFAE6VNU.js +0 -2327
- package/dist/chunk-NG7K5KYO.js +0 -56
- package/dist/chunk-NXVUL3EY.js +0 -2853
- package/dist/chunk-ODMLC5FN.js +0 -55
- package/dist/chunk-OJ4TDGPQ.js +0 -339
- package/dist/chunk-OXLBPSJ6.js +0 -379
- package/dist/chunk-P5GRGXH4.js +0 -98
- package/dist/chunk-POWG4MPT.js +0 -31
- package/dist/chunk-Q25DABNW.js +0 -217
- package/dist/chunk-QHJGWCH3.js +0 -4311
- package/dist/chunk-R5OIIFSF.js +0 -197
- package/dist/chunk-RJFCT67B.js +0 -2784
- package/dist/chunk-RN4BOWRH.js +0 -402
- package/dist/chunk-RZFJ6K77.js +0 -302
- package/dist/chunk-S5UN4VIQ.js +0 -272
- package/dist/chunk-SDMNZJ7X.js +0 -50
- package/dist/chunk-SWZAHJYP.js +0 -170
- package/dist/chunk-SY63UUF7.js +0 -562
- package/dist/chunk-T46FA72N.js +0 -119
- package/dist/chunk-TBPVP3KZ.js +0 -1986
- package/dist/chunk-UM5NWVMA.js +0 -140
- package/dist/chunk-VIBK253J.js +0 -134
- package/dist/chunk-XKL2D2NN.js +0 -240
- package/dist/chunk-XXJT7DSL.js +0 -677
- package/dist/chunk-YHA3AYAM.js +0 -5071
- package/dist/chunk-YLJOZP4P.js +0 -4195
- package/dist/chunk-YN5NY3D3.js +0 -339
- package/dist/chunk-YX6FIREB.js +0 -14
- package/dist/chunk-ZXU4ALLZ.js +0 -129
- package/dist/cohort-75FUW3UO.js +0 -70
- package/dist/condition-VW43Q6ZE.js +0 -327
- package/dist/controls-HOP2AFHD.js +0 -34
- package/dist/controls.config-CMIFSKQE.js +0 -34
- package/dist/correlation-PN7BS5OR.js +0 -95
- package/dist/customdata.inputui-ZBZX63PS.js +0 -284
- package/dist/dataDownload-LGA4LAUF.js +0 -329
- package/dist/databrowser.ui-IQRDVL66.js +0 -425
- package/dist/dictionary-BPWD77LJ.js +0 -113
- package/dist/dnaMethylation-A3XPPBBB.js +0 -33
- package/dist/dnaMethylation.integration.spec-554ITDQC.js +0 -198
- package/dist/dofetch-FQ42AX7C.js +0 -48
- package/dist/e2pca-F3GWG7WZ.js +0 -344
- package/dist/ep-QAVN472H.js +0 -1249
- package/dist/expclust.gdc.spec-DQNX7FTL.js +0 -302
- package/dist/facet-DH7OOZTJ.js +0 -519
- package/dist/gb-OCXOLAMD.js +0 -81
- package/dist/geneExpClustering-DWYRZGTS.js +0 -244
- package/dist/geneExpression-2NKSKZR6.js +0 -33
- package/dist/geneExpression-BGFR3KQE.js +0 -310
- package/dist/geneExpression.unit.spec-63EKKMET.js +0 -99
- package/dist/geneORA-BED6XL4D.js +0 -273
- package/dist/geneRanking-UB5RCQNP.js +0 -548
- package/dist/geneVariant-WJEONTTY.js +0 -286
- package/dist/geneVariant-Y4C2FPJK.js +0 -36
- package/dist/geneVariant.integration.spec-VFYLC47N.js +0 -388
- package/dist/genefusion.ui-P3NBIMLE.js +0 -303
- package/dist/geneset-O22RQAED.js +0 -203
- package/dist/genomeBrowser.spec-MM7WZUGI.js +0 -276
- package/dist/grin2-3YBIRKUT.js +0 -70
- package/dist/grin2-O637DNDS.js +0 -1137
- package/dist/hierCluster-3X3BQVNE.js +0 -59
- package/dist/hierCluster-7P7M75TU.js +0 -55
- package/dist/hierCluster.config-XFUOLLDK.js +0 -36
- package/dist/hierCluster.integration.spec-HKYGSDDG.js +0 -483
- package/dist/hierCluster.interactivity-JUZSWCM7.js +0 -49
- package/dist/hierCluster.renderers-NGPPAYFM.js +0 -19
- package/dist/imagePlot-LKGAFJO7.js +0 -156
- package/dist/importPlot-SRWQA2FH.js +0 -8
- package/dist/isoformExpression-RYIZQIVX.js +0 -35
- package/dist/isoformExpression.unit.spec-DP4ECITF.js +0 -237
- package/dist/junction-D7QQ3YSG.js +0 -36
- package/dist/junction.customTerm-ZEVNCVU7.js +0 -16
- package/dist/junction.unit.spec-6MAKIB3R.js +0 -182
- package/dist/launch.adhoc-FAHRZFYG.js +0 -37
- package/dist/leftlabel.sample-PDZLWLJ4.js +0 -258
- package/dist/legacyDataset-27L4DMCL.js +0 -117
- package/dist/lollipop-VWGJUHNX.js +0 -166
- package/dist/maf-W52H44WK.js +0 -455
- package/dist/maftimeline-5JV3HZLE.js +0 -587
- package/dist/matrix-CEVGKXSK.js +0 -54
- package/dist/matrix-EXNYXYLK.js +0 -59
- package/dist/matrix.cells-DVPWSLJW.js +0 -26
- package/dist/matrix.config-RLSTWDXC.js +0 -37
- package/dist/matrix.data-Z6GUACVZ.js +0 -23
- package/dist/matrix.groups-3ZSTUWRK.js +0 -26
- package/dist/matrix.integration.spec-4U2R3UB2.js +0 -3160
- package/dist/matrix.interactivity-DJZFQ7DN.js +0 -37
- package/dist/matrix.layout-RQJ6VB4P.js +0 -39
- package/dist/matrix.legend-YQ36NWKW.js +0 -20
- package/dist/matrix.renderers-MWDFI6HW.js +0 -34
- package/dist/matrix.serieses-LTC4RLYD.js +0 -19
- package/dist/matrix.sort-5VFYLABY.js +0 -26
- package/dist/matrix.sort.unit.spec-2RUEKUT4.js +0 -468
- package/dist/matrix.sorterUi-EEMYZLPI.js +0 -16
- package/dist/matrix.sorterUi.unit.spec-ZXGSPRFZ.js +0 -338
- package/dist/matrix.unit.spec-HTF6UV4L.js +0 -150
- package/dist/mavb-GGQRDCO6.js +0 -727
- package/dist/mds.fimo-YKV5OIYV.js +0 -513
- package/dist/mds.samplescatterplot-RQOEW2AW.js +0 -1545
- package/dist/mds.survivalplot-TN636DED.js +0 -477
- package/dist/multivalue-MDQY64EH.js +0 -83
- package/dist/numericDictTermCluster-E73TJCLI.js +0 -63
- package/dist/oncomatrix-AENXQMLL.js +0 -290
- package/dist/oncomatrix.spec-UD6U462U.js +0 -443
- package/dist/plot.2dvaf-XMRV6KEG.js +0 -372
- package/dist/plot.app-A6JKLYQQ.js +0 -36
- package/dist/plot.barplot-UIX7LVWR.js +0 -97
- package/dist/plot.boxplot-DIFWVLMA.js +0 -146
- package/dist/plot.brainImaging-ZRPVE2UK.js +0 -51
- package/dist/plot.disco-I56MT3PC.js +0 -99
- package/dist/plot.ssgq-FCKFSZTV.js +0 -134
- package/dist/plot.vaf2cov-E5C7RJ7Z.js +0 -253
- package/dist/polar2-SKVBB4FD.js +0 -232
- package/dist/profileForms-5B3MTUNP.js +0 -941
- package/dist/profilePlot-MCYCGEWT.js +0 -49
- package/dist/proteinView-5X55JWVL.js +0 -1562
- package/dist/proteinView-5X55JWVL.js.map +0 -7
- package/dist/proteomeCohortCompare-WZBMBLFD.js +0 -780
- package/dist/proteomeCohortCompare-WZBMBLFD.js.map +0 -7
- package/dist/pseudbulk.unit.spec-Q4YTIPH7.js +0 -86
- package/dist/pseudobulk-3UIWCCCQ.js +0 -35
- package/dist/qualitative-6TJRXZFV.js +0 -38
- package/dist/radar2-6X4XW5IZ.js +0 -327
- package/dist/radarFacility2-UVPXWPV5.js +0 -335
- package/dist/rememberedGvQ.unit.spec-GVRFRVSO.js +0 -211
- package/dist/render-G7V6R4PV.js +0 -33
- package/dist/report-O7D46EKQ.js +0 -217
- package/dist/sampleView-6Y3OOOMW.js +0 -43
- package/dist/samplelst-JRVC4GYC.js +0 -106
- package/dist/samplematrix-VP5RQVRH.js +0 -2193
- package/dist/sc-BPHVEP6N.js +0 -81
- package/dist/scatter-2YYRZCSW.js +0 -88
- package/dist/scatter-Y4BIG2PW.js +0 -880
- package/dist/selectGenomeWithTklst-2BVZU5SW.js +0 -129
- package/dist/singleCellCellType-XBGCSIQT.js +0 -33
- package/dist/singleCellCellType.unit.spec-T4GFRLVZ.js +0 -154
- package/dist/singleCellGeneExpression-5ZPWLSVW.js +0 -33
- package/dist/singleCellGeneExpression.unit.spec-4O5UBUDU.js +0 -148
- package/dist/singleCellPlot-CZLQBGVU.js +0 -49
- package/dist/singlecell-IIUYX7OG.js +0 -1566
- package/dist/singlecell-O3P5BLWT.js +0 -81
- package/dist/snp-ZCYBF3ZQ.js +0 -33
- package/dist/snp.unit.spec-TAGD2DRL.js +0 -171
- package/dist/snplocus-TL25OOPE.js +0 -203
- package/dist/spliceevent.a53ss.diagram-I7J4PQZT.js +0 -146
- package/dist/spliceevent.exonskip.diagram-SB4454HB.js +0 -278
- package/dist/spliceevent.noeventdiagram-FOSDNYLH.js +0 -455
- package/dist/ssGSEA-WANB2X5L.js +0 -33
- package/dist/ssGSEA.unit.spec-4XXWU4XV.js +0 -83
- package/dist/stattable-FNTJLVNB.js +0 -117
- package/dist/studyCatalog-7KEOFLO2.js +0 -378
- package/dist/studyCatalog-7KEOFLO2.js.map +0 -7
- package/dist/summarizeCnvGeneexp-P4AFZMKD.js +0 -158
- package/dist/summarizeGeneexpSurvival-YL2J7F4R.js +0 -105
- package/dist/summarizeMutationCnv-BHBHST5F.js +0 -159
- package/dist/summarizeMutationDiagnosis-Z7ZHTV27.js +0 -35
- package/dist/summarizeMutationSurvival-PZ4TYHT7.js +0 -99
- package/dist/summary-ZMNPO65S.js +0 -42
- package/dist/summary.integration.spec-DPJR2ZBE.js +0 -409
- package/dist/summaryInput-6JUFJZ5P.js +0 -242
- package/dist/sunburst-OWAUI3HC.js +0 -278
- package/dist/survival-6JPKG3VA.js +0 -53
- package/dist/survival-7EXICNK7.js +0 -1248
- package/dist/survival.integration.spec-A6NUJLL6.js +0 -613
- package/dist/survival.integration.spec-A6NUJLL6.js.map +0 -7
- package/dist/svgraph-34IKFHUS.js +0 -1382
- package/dist/svmr-4XNPSVVQ.js +0 -3837
- package/dist/table-LPZATFLC.js +0 -197
- package/dist/termCollection-DYY5FXU5.js +0 -252
- package/dist/termCollection-WOAUFFIC.js +0 -33
- package/dist/termCollection.unit.spec-WTICTZ7H.js +0 -299
- package/dist/termCollectionFractionSelection-K5HPDEFP.js +0 -42
- package/dist/termCollectionFractionSelection.unit.spec-D7DG2HOI.js +0 -188
- package/dist/tk-DD2LWVGM.js +0 -1121
- package/dist/tk-NV7NBLT6.js +0 -41
- package/dist/tp.ui-B5J3UUVB.js +0 -1454
- package/dist/tvs.dt-XLKQT64T.js +0 -34
- package/dist/tvs.dtcnv.categorical-XIC3RH2D.js +0 -35
- package/dist/tvs.dtcnv.continuous-OA2K4LHF.js +0 -67
- package/dist/tvs.dtfusion-ZGNKALZB.js +0 -35
- package/dist/tvs.dtitd-6QSG4E34.js +0 -35
- package/dist/tvs.dtsnvindel-5CXXOGPH.js +0 -35
- package/dist/tvs.dtsv-QYYEYUD3.js +0 -35
- package/dist/tvs.numeric-3UXW4JHJ.js +0 -20
- package/dist/tvs.samplelst-X77ODFFR.js +0 -98
- package/dist/tvs.termCollection-VXROWAPS.js +0 -124
- package/dist/vocabulary-DKWYTZRC.js +0 -36
- package/dist/wsi.direct-C3HQEC2V.js +0 -8184
- /package/dist/{2dmaf-ZQ7ACPAD.js.map → 2dmaf-5OYM4MXA.js.map} +0 -0
- /package/dist/{AggMatrixInput-EACGUIQA.js.map → AggMatrixInput-4VTI4Y6E.js.map} +0 -0
- /package/dist/{AggregateMatrix-TC5DTSYN.js.map → AggregateMatrix-K7SGNO63.js.map} +0 -0
- /package/dist/{AppHeader-PHI6US5B.js.map → AppHeader-WU6TO2OZ.js.map} +0 -0
- /package/dist/{BoxPlot-QWKK3IJ7.js.map → BoxPlot-OW7U3XTF.js.map} +0 -0
- /package/dist/{CorrelationVolcano-QJJN7FVP.js.map → CorrelationVolcano-B3JTTZHF.js.map} +0 -0
- /package/dist/{Cuminc-6F2C5C4E.js.map → Cuminc-AJEXWRU2.js.map} +0 -0
- /package/dist/{DE-HRJH6ZQL.js.map → DE-2J7DSRPC.js.map} +0 -0
- /package/dist/{DEinput-T3MPAYPH.js.map → DEinput-I7JWNOSD.js.map} +0 -0
- /package/dist/{DM-PEG4ED2X.js.map → DM-NQ46YPGF.js.map} +0 -0
- /package/dist/{DifferentialAnalysis-XGXHWGPI.js.map → DifferentialAnalysis-BFCQBX5J.js.map} +0 -0
- /package/dist/{Disco-7SRTTB3X.js.map → Disco-ZJLVQRTC.js.map} +0 -0
- /package/dist/{Disco.UI-CKKZ5MMK.js.map → Disco.UI-AEDACXW2.js.map} +0 -0
- /package/dist/{DmrPlot-N4CT4J2I.js.map → DmrPlot-QMRXAOM3.js.map} +0 -0
- /package/dist/{GB-NVCLPRWN.js.map → GB-MFU2UJ22.js.map} +0 -0
- /package/dist/{GSEA-UZUNJG7Z.js.map → GSEA-E3NHU22A.js.map} +0 -0
- /package/dist/{GeneExpInput-3MDN2CAW.js.map → GeneExpInput-MIUNSOPY.js.map} +0 -0
- /package/dist/{Geomap-ZUF2PE5A.js.map → Geomap-HAJG3STN.js.map} +0 -0
- /package/dist/{HicApp-OIJT5TFU.js.map → HicApp-ECFFIRWI.js.map} +0 -0
- /package/dist/{IDCViewer-ZSH2E57L.js.map → IDCViewer-TNSD3U2V.js.map} +0 -0
- /package/dist/{NumBinaryEditor-74ZPGT7L.js.map → NumBinaryEditor-CNBGZ6WY.js.map} +0 -0
- /package/dist/{NumBinaryEditor.unit.spec-T2I66SO5.js.map → NumBinaryEditor.unit.spec-SKFDALF3.js.map} +0 -0
- /package/dist/{NumContEditor-M2GARZXM.js.map → NumContEditor-7ID2U7JL.js.map} +0 -0
- /package/dist/{NumContEditor.unit.spec-G2QBBNH7.js.map → NumContEditor.unit.spec-XHSQSAWK.js.map} +0 -0
- /package/dist/{NumCustomBinEditor-P44G67KS.js.map → NumCustomBinEditor-PAIPRJPO.js.map} +0 -0
- /package/dist/{NumCustomBinEditor.unit.spec-AZHJN3V6.js.map → NumCustomBinEditor.unit.spec-QYVZMMHV.js.map} +0 -0
- /package/dist/{NumDiscreteEditor-VOZ63LZY.js.map → NumDiscreteEditor-K2NZZQTH.js.map} +0 -0
- /package/dist/{NumDiscreteEditor.unit.spec-CFSVPNBA.js.map → NumDiscreteEditor.unit.spec-3CG5VEQL.js.map} +0 -0
- /package/dist/{NumRegularBinEditor-I6GJQR7W.js.map → NumRegularBinEditor-EOVZ22TP.js.map} +0 -0
- /package/dist/{NumRegularBinEditor.unit.spec-IDJE7H6S.js.map → NumRegularBinEditor.unit.spec-FHTVH5FH.js.map} +0 -0
- /package/dist/{NumSplineEditor-BCGWE52A.js.map → NumSplineEditor-N3REMJUC.js.map} +0 -0
- /package/dist/{NumSplineEditor.unit.spec-YQAL7L2E.js.map → NumSplineEditor.unit.spec-DZCP35GL.js.map} +0 -0
- /package/dist/{NumericDensity-P25W63RV.js.map → NumericDensity-42MWVI2S.js.map} +0 -0
- /package/dist/{NumericDensity.unit.spec-N7CQ5W5L.js.map → NumericDensity.unit.spec-T2HHSQON.js.map} +0 -0
- /package/dist/{NumericHandler-R7JWIFEO.js.map → NumericHandler-5XU3SSPD.js.map} +0 -0
- /package/dist/{NumericHandler.unit.spec-LMGIAGZJ.js.map → NumericHandler.unit.spec-3F23KSAQ.js.map} +0 -0
- /package/dist/{ProteomeInput-PRYKKF5E.js.map → ProteomeInput-UN2BUNRO.js.map} +0 -0
- /package/dist/{Regression-PSHH7ZXN.js.map → Regression-HWLJENA5.js.map} +0 -0
- /package/dist/{RunChart2-KJ2UWVCE.js.map → RunChart2-YO55WE4M.js.map} +0 -0
- /package/dist/{SC-R6ZIJZ6F.js.map → SC-LEDJ4DQR.js.map} +0 -0
- /package/dist/{Violin-GTQAUJ7B.js.map → Violin-E6PDJZ2B.js.map} +0 -0
- /package/dist/{Volcano-NER64J7W.js.map → Volcano-XJTBWYUK.js.map} +0 -0
- /package/dist/{Wsi-GXNGL7O6.js.map → Wsi-S675CYTW.js.map} +0 -0
- /package/dist/{adSandbox-SXSHVG4P.js.map → adSandbox-ZJQ5ZW2T.js.map} +0 -0
- /package/dist/{animatedBubbleChart-Q4NEETEH.js.map → animatedBubbleChart-LRUS7W36.js.map} +0 -0
- /package/dist/{app-MX4PL2QO.js.map → app-7Q3QIBU4.js.map} +0 -0
- /package/dist/{app-R5CTEVAC.js.map → app-PKSI4MV5.js.map} +0 -0
- /package/dist/{bam-45N3FEEM.js.map → bam-X5JH5ZT7.js.map} +0 -0
- /package/dist/{barchart-YCTKQJQX.js.map → barchart-UT6J4L2N.js.map} +0 -0
- /package/dist/{barchart2-252GS3CA.js.map → barchart2-ZG5QJO3C.js.map} +0 -0
- /package/dist/{block-CR75JHV3.js.map → block-TC466NGW.js.map} +0 -0
- /package/dist/{block.init-U3JMED2E.js.map → block.init-CIBNSYAC.js.map} +0 -0
- /package/dist/{block.mds.expressionrank-TAN3BDPS.js.map → block.mds.expressionrank-EY5PCQCK.js.map} +0 -0
- /package/dist/{block.mds.geneboxplot-EN344GEP.js.map → block.mds.geneboxplot-R6AOMHO5.js.map} +0 -0
- /package/dist/{block.mds.junction-RFVVJUTR.js.map → block.mds.junction-JMV6FNYC.js.map} +0 -0
- /package/dist/{block.mds.svcnv-SSUMXEWD.js.map → block.mds.svcnv-IHTV3QYG.js.map} +0 -0
- /package/dist/{block.svg-LRPGNFFI.js.map → block.svg-NTFLVQAQ.js.map} +0 -0
- /package/dist/{block.tk.aicheck-YY23FT2G.js.map → block.tk.aicheck-FYPL32Y4.js.map} +0 -0
- /package/dist/{block.tk.ase-JCGPFKFT.js.map → block.tk.ase-FWCB6VBO.js.map} +0 -0
- /package/dist/{block.tk.bam-NZDC4H7Y.js.map → block.tk.bam-Q5UFUABN.js.map} +0 -0
- /package/dist/{block.tk.bedgraphdot-NCNZPZH6.js.map → block.tk.bedgraphdot-KBI3GFDM.js.map} +0 -0
- /package/dist/{block.tk.bigwig.ui-Z7G6ZITU.js.map → block.tk.bigwig.ui-KXNFX7G7.js.map} +0 -0
- /package/dist/{block.tk.hicstraw-VVDP4UF5.js.map → block.tk.hicstraw-MQBH3YAJ.js.map} +0 -0
- /package/dist/{block.tk.junction-L4YBPAHM.js.map → block.tk.junction-EBTVXLJH.js.map} +0 -0
- /package/dist/{block.tk.junction.textmatrixui-6CMKKUB5.js.map → block.tk.junction.textmatrixui-ETYLCP2O.js.map} +0 -0
- /package/dist/{block.tk.ld-VCP2R5UO.js.map → block.tk.ld-NLB6L6WQ.js.map} +0 -0
- /package/dist/{block.tk.menu-ZJYGMEDX.js.map → block.tk.menu-PJLCOXVJ.js.map} +0 -0
- /package/dist/{block.tk.pgv-M5WNUIVS.js.map → block.tk.pgv-JOIQVWL2.js.map} +0 -0
- /package/dist/{brainImaging-JGECJHZO.js.map → brainImaging-SPRC3QFB.js.map} +0 -0
- /package/dist/{bubbleHeatmap-7DQNWBQ2.js.map → bubbleHeatmap-CFTZ5RXH.js.map} +0 -0
- /package/dist/{cellTypeBubbleHeatmap-LAE7U3RF.js.map → cellTypeBubbleHeatmap-DXPLFT5U.js.map} +0 -0
- /package/dist/{chunk-APK7TUJX.js.map → chunk-2BQ572SL.js.map} +0 -0
- /package/dist/{chunk-G3JNTWCX.js.map → chunk-2DQIQYY3.js.map} +0 -0
- /package/dist/{chunk-VIBK253J.js.map → chunk-2POQWEK6.js.map} +0 -0
- /package/dist/{chunk-E4WIMTK4.js.map → chunk-2SQEVMAL.js.map} +0 -0
- /package/dist/{chunk-756KZF5Y.js.map → chunk-37HTZ6IG.js.map} +0 -0
- /package/dist/{chunk-JIDJBM2R.js.map → chunk-452765PG.js.map} +0 -0
- /package/dist/{chunk-POWG4MPT.js.map → chunk-4DXQJGJ7.js.map} +0 -0
- /package/dist/{chunk-N635HDJ4.js.map → chunk-54KC7DAB.js.map} +0 -0
- /package/dist/{chunk-L743GRJE.js.map → chunk-5D5YTFI2.js.map} +0 -0
- /package/dist/{chunk-ZXU4ALLZ.js.map → chunk-5DBW3WLK.js.map} +0 -0
- /package/dist/{chunk-RN4BOWRH.js.map → chunk-5ILEFNXJ.js.map} +0 -0
- /package/dist/{chunk-AQAFURQM.js.map → chunk-5UO7MKCO.js.map} +0 -0
- /package/dist/{chunk-LHP7RXET.js.map → chunk-7R7P6VMT.js.map} +0 -0
- /package/dist/{chunk-D6G64XPJ.js.map → chunk-7X6NF7NI.js.map} +0 -0
- /package/dist/{chunk-4WEA7HHH.js.map → chunk-ANGLZ4XR.js.map} +0 -0
- /package/dist/{chunk-57NYHASA.js.map → chunk-BMQDU7KN.js.map} +0 -0
- /package/dist/{chunk-4PPZYVWZ.js.map → chunk-C5TU4AYP.js.map} +0 -0
- /package/dist/{chunk-QHJGWCH3.js.map → chunk-DBQA6QIJ.js.map} +0 -0
- /package/dist/{chunk-E7TJXNIL.js.map → chunk-DHNET3P4.js.map} +0 -0
- /package/dist/{chunk-IS4VLUEX.js.map → chunk-EGKHDALO.js.map} +0 -0
- /package/dist/{chunk-DE3F7FAP.js.map → chunk-EPWGUWQP.js.map} +0 -0
- /package/dist/{chunk-6JBQLOJW.js.map → chunk-F3EYPES3.js.map} +0 -0
- /package/dist/{chunk-BEJJS2HC.js.map → chunk-F4DM3WS4.js.map} +0 -0
- /package/dist/{chunk-GRI74AXV.js.map → chunk-FTLCINDC.js.map} +0 -0
- /package/dist/{chunk-5BCNVZIW.js.map → chunk-GT6WJUJY.js.map} +0 -0
- /package/dist/{chunk-4AQQ3BXD.js.map → chunk-GWCK5QGV.js.map} +0 -0
- /package/dist/{chunk-DF3IMIR2.js.map → chunk-HJSGHFJ6.js.map} +0 -0
- /package/dist/{chunk-CZ5QLVWK.js.map → chunk-HS6BTSFX.js.map} +0 -0
- /package/dist/{chunk-YHA3AYAM.js.map → chunk-IB5TKNG5.js.map} +0 -0
- /package/dist/{chunk-LGOTIL62.js.map → chunk-IIMTOPH3.js.map} +0 -0
- /package/dist/{chunk-S5UN4VIQ.js.map → chunk-JAXN3Q3K.js.map} +0 -0
- /package/dist/{chunk-NXVUL3EY.js.map → chunk-K6PYTAXW.js.map} +0 -0
- /package/dist/{chunk-5AAAH4OZ.js.map → chunk-KIRZXPMB.js.map} +0 -0
- /package/dist/{chunk-3PHXBY3Z.js.map → chunk-KT4OZVO3.js.map} +0 -0
- /package/dist/{chunk-JNVWSFNC.js.map → chunk-L32KMIC3.js.map} +0 -0
- /package/dist/{chunk-LK2GHBUH.js.map → chunk-LB7NENEB.js.map} +0 -0
- /package/dist/{chunk-SY63UUF7.js.map → chunk-LDWMVZYF.js.map} +0 -0
- /package/dist/{chunk-UM5NWVMA.js.map → chunk-M367Y7ML.js.map} +0 -0
- /package/dist/{chunk-YN5NY3D3.js.map → chunk-M4XXKTH2.js.map} +0 -0
- /package/dist/{chunk-D2MZT7CC.js.map → chunk-ME7OF3CS.js.map} +0 -0
- /package/dist/{chunk-2AQT3ZWL.js.map → chunk-N2CXLMNX.js.map} +0 -0
- /package/dist/{chunk-T46FA72N.js.map → chunk-N7DVQTPC.js.map} +0 -0
- /package/dist/{chunk-MAVDQAZE.js.map → chunk-N7TD7N7D.js.map} +0 -0
- /package/dist/{chunk-ALEZQQOK.js.map → chunk-NBX6TT5C.js.map} +0 -0
- /package/dist/{chunk-TBPVP3KZ.js.map → chunk-NLR7JIMM.js.map} +0 -0
- /package/dist/{chunk-OJ4TDGPQ.js.map → chunk-NSRGYBDM.js.map} +0 -0
- /package/dist/{chunk-OXLBPSJ6.js.map → chunk-NVS7KYYI.js.map} +0 -0
- /package/dist/{chunk-IB4NE4SI.js.map → chunk-OVPEMVXT.js.map} +0 -0
- /package/dist/{chunk-2O4CS3EZ.js.map → chunk-OXWLQQXL.js.map} +0 -0
- /package/dist/{chunk-ODMLC5FN.js.map → chunk-QGGSYEVJ.js.map} +0 -0
- /package/dist/{chunk-SDMNZJ7X.js.map → chunk-QLEVONLD.js.map} +0 -0
- /package/dist/{chunk-P5GRGXH4.js.map → chunk-RNWHB5DI.js.map} +0 -0
- /package/dist/{chunk-JYOIO5UY.js.map → chunk-RPDVFM7E.js.map} +0 -0
- /package/dist/{chunk-2GLNPB5J.js.map → chunk-RUHLDUOT.js.map} +0 -0
- /package/dist/{chunk-R5OIIFSF.js.map → chunk-RV34WFGZ.js.map} +0 -0
- /package/dist/{chunk-3MFFZRH3.js.map → chunk-SDVE5ECI.js.map} +0 -0
- /package/dist/{chunk-SWZAHJYP.js.map → chunk-SWO6DZTG.js.map} +0 -0
- /package/dist/{chunk-6JBLNS4D.js.map → chunk-SYPSS3JQ.js.map} +0 -0
- /package/dist/{chunk-NFAE6VNU.js.map → chunk-TDM3645O.js.map} +0 -0
- /package/dist/{chunk-Q25DABNW.js.map → chunk-VVO3R5JV.js.map} +0 -0
- /package/dist/{chunk-YX6FIREB.js.map → chunk-VYEU6Y35.js.map} +0 -0
- /package/dist/{chunk-JBUEQ4E6.js.map → chunk-WGXC6IEF.js.map} +0 -0
- /package/dist/{chunk-KAFDQKN7.js.map → chunk-WPDM57B5.js.map} +0 -0
- /package/dist/{chunk-RJFCT67B.js.map → chunk-WS7WKS2B.js.map} +0 -0
- /package/dist/{chunk-ABTO5QSB.js.map → chunk-X63NSV33.js.map} +0 -0
- /package/dist/{chunk-NG7K5KYO.js.map → chunk-XXNRSSBR.js.map} +0 -0
- /package/dist/{chunk-MKT4OJ3G.js.map → chunk-YD6UGDFI.js.map} +0 -0
- /package/dist/{chunk-GN2IIC6U.js.map → chunk-YRIYDFNU.js.map} +0 -0
- /package/dist/{chunk-J2DICGKC.js.map → chunk-YY5WQQ3J.js.map} +0 -0
- /package/dist/{chunk-YLJOZP4P.js.map → chunk-Z2ZITHT4.js.map} +0 -0
- /package/dist/{chunk-RZFJ6K77.js.map → chunk-Z4SM3FBK.js.map} +0 -0
- /package/dist/{chunk-XKL2D2NN.js.map → chunk-ZEYEIUEZ.js.map} +0 -0
- /package/dist/{chunk-XXJT7DSL.js.map → chunk-ZLYTDHQP.js.map} +0 -0
- /package/dist/{chunk-IAE3KWN5.js.map → chunk-ZWCVRVV4.js.map} +0 -0
- /package/dist/{cohort-75FUW3UO.js.map → cohort-FZNMFWOX.js.map} +0 -0
- /package/dist/{condition-VW43Q6ZE.js.map → condition-AJJLFCBQ.js.map} +0 -0
- /package/dist/{controls-HOP2AFHD.js.map → controls-SZOLV37V.js.map} +0 -0
- /package/dist/{controls.config-CMIFSKQE.js.map → controls.config-CVP75WFA.js.map} +0 -0
- /package/dist/{correlation-PN7BS5OR.js.map → correlation-UFJFQHQ3.js.map} +0 -0
- /package/dist/{customdata.inputui-ZBZX63PS.js.map → customdata.inputui-HOVA4A6O.js.map} +0 -0
- /package/dist/{dataDownload-LGA4LAUF.js.map → dataDownload-VTUG4IOK.js.map} +0 -0
- /package/dist/{databrowser.ui-IQRDVL66.js.map → databrowser.ui-O5S4Y4EK.js.map} +0 -0
- /package/dist/{dictionary-BPWD77LJ.js.map → dictionary-L2UNNNP7.js.map} +0 -0
- /package/dist/{dnaMethylation-A3XPPBBB.js.map → dnaMethylation-B4SWZI4O.js.map} +0 -0
- /package/dist/{dnaMethylation.integration.spec-554ITDQC.js.map → dnaMethylation.integration.spec-ANJAMNYJ.js.map} +0 -0
- /package/dist/{dofetch-FQ42AX7C.js.map → dofetch-F5XSHQIS.js.map} +0 -0
- /package/dist/{e2pca-F3GWG7WZ.js.map → e2pca-66ARIMKL.js.map} +0 -0
- /package/dist/{ep-QAVN472H.js.map → ep-OFGJYVUY.js.map} +0 -0
- /package/dist/{expclust.gdc.spec-DQNX7FTL.js.map → expclust.gdc.spec-22RXQTTP.js.map} +0 -0
- /package/dist/{facet-DH7OOZTJ.js.map → facet-GVZQ3RPN.js.map} +0 -0
- /package/dist/{gb-OCXOLAMD.js.map → gb-HEPGVYEK.js.map} +0 -0
- /package/dist/{geneExpClustering-DWYRZGTS.js.map → geneExpClustering-3NU2U422.js.map} +0 -0
- /package/dist/{geneExpression-BGFR3KQE.js.map → geneExpression-FXQ4L2J2.js.map} +0 -0
- /package/dist/{geneExpression-2NKSKZR6.js.map → geneExpression-XYVYJJA5.js.map} +0 -0
- /package/dist/{geneExpression.unit.spec-63EKKMET.js.map → geneExpression.unit.spec-K3FIRSNK.js.map} +0 -0
- /package/dist/{geneORA-BED6XL4D.js.map → geneORA-5M2JSDMF.js.map} +0 -0
- /package/dist/{geneRanking-UB5RCQNP.js.map → geneRanking-TP3R3CS3.js.map} +0 -0
- /package/dist/{geneVariant-Y4C2FPJK.js.map → geneVariant-232EYUFJ.js.map} +0 -0
- /package/dist/{geneVariant-WJEONTTY.js.map → geneVariant-BHXTPUDC.js.map} +0 -0
- /package/dist/{geneVariant.integration.spec-VFYLC47N.js.map → geneVariant.integration.spec-ICFHVFIR.js.map} +0 -0
- /package/dist/{genefusion.ui-P3NBIMLE.js.map → genefusion.ui-ABRCUQFC.js.map} +0 -0
- /package/dist/{geneset-O22RQAED.js.map → geneset-N42FIVA6.js.map} +0 -0
- /package/dist/{genomeBrowser.spec-MM7WZUGI.js.map → genomeBrowser.spec-5HKQKLRU.js.map} +0 -0
- /package/dist/{grin2-O637DNDS.js.map → grin2-H2KJYLP6.js.map} +0 -0
- /package/dist/{grin2-3YBIRKUT.js.map → grin2-NGMTEMXF.js.map} +0 -0
- /package/dist/{hierCluster-3X3BQVNE.js.map → hierCluster-JU5JPLM7.js.map} +0 -0
- /package/dist/{hierCluster-7P7M75TU.js.map → hierCluster-LSSH275H.js.map} +0 -0
- /package/dist/{hierCluster.config-XFUOLLDK.js.map → hierCluster.config-ILOR7GBB.js.map} +0 -0
- /package/dist/{hierCluster.integration.spec-HKYGSDDG.js.map → hierCluster.integration.spec-CNR5OJOH.js.map} +0 -0
- /package/dist/{hierCluster.interactivity-JUZSWCM7.js.map → hierCluster.interactivity-TLEIVTFK.js.map} +0 -0
- /package/dist/{hierCluster.renderers-NGPPAYFM.js.map → hierCluster.renderers-P7JNIT3N.js.map} +0 -0
- /package/dist/{imagePlot-LKGAFJO7.js.map → imagePlot-BF67SXQR.js.map} +0 -0
- /package/dist/{importPlot-SRWQA2FH.js.map → importPlot-OHXSXNZN.js.map} +0 -0
- /package/dist/{isoformExpression-RYIZQIVX.js.map → isoformExpression-4VKHE4HA.js.map} +0 -0
- /package/dist/{isoformExpression.unit.spec-DP4ECITF.js.map → isoformExpression.unit.spec-4TVSIFG4.js.map} +0 -0
- /package/dist/{junction-D7QQ3YSG.js.map → junction-VUHORV43.js.map} +0 -0
- /package/dist/{junction.customTerm-ZEVNCVU7.js.map → junction.customTerm-FRYWSS4P.js.map} +0 -0
- /package/dist/{junction.unit.spec-6MAKIB3R.js.map → junction.unit.spec-KKVLYT7Q.js.map} +0 -0
- /package/dist/{launch.adhoc-FAHRZFYG.js.map → launch.adhoc-UDYMFZTQ.js.map} +0 -0
- /package/dist/{leftlabel.sample-PDZLWLJ4.js.map → leftlabel.sample-R5FFBWG3.js.map} +0 -0
- /package/dist/{legacyDataset-27L4DMCL.js.map → legacyDataset-IEFWFVS6.js.map} +0 -0
- /package/dist/{lollipop-VWGJUHNX.js.map → lollipop-3IX6ZYUN.js.map} +0 -0
- /package/dist/{maf-W52H44WK.js.map → maf-42UFYSL4.js.map} +0 -0
- /package/dist/{maftimeline-5JV3HZLE.js.map → maftimeline-M5WYEN62.js.map} +0 -0
- /package/dist/{matrix-CEVGKXSK.js.map → matrix-CI76EDHU.js.map} +0 -0
- /package/dist/{matrix-EXNYXYLK.js.map → matrix-WJZKA6VR.js.map} +0 -0
- /package/dist/{matrix.cells-DVPWSLJW.js.map → matrix.cells-ZFKVIPDC.js.map} +0 -0
- /package/dist/{matrix.config-RLSTWDXC.js.map → matrix.config-24TFHBEM.js.map} +0 -0
- /package/dist/{matrix.data-Z6GUACVZ.js.map → matrix.data-NCGZPNWR.js.map} +0 -0
- /package/dist/{matrix.groups-3ZSTUWRK.js.map → matrix.groups-XQJTGM6M.js.map} +0 -0
- /package/dist/{matrix.integration.spec-4U2R3UB2.js.map → matrix.integration.spec-OGXZUDE6.js.map} +0 -0
- /package/dist/{matrix.interactivity-DJZFQ7DN.js.map → matrix.interactivity-ZOOTPNSW.js.map} +0 -0
- /package/dist/{matrix.layout-RQJ6VB4P.js.map → matrix.layout-5J2YENK3.js.map} +0 -0
- /package/dist/{matrix.legend-YQ36NWKW.js.map → matrix.legend-U36VCS46.js.map} +0 -0
- /package/dist/{matrix.renderers-MWDFI6HW.js.map → matrix.renderers-4KFE7ZVR.js.map} +0 -0
- /package/dist/{matrix.serieses-LTC4RLYD.js.map → matrix.serieses-AW7XBXLJ.js.map} +0 -0
- /package/dist/{matrix.sort-5VFYLABY.js.map → matrix.sort-7PMECLOE.js.map} +0 -0
- /package/dist/{matrix.sort.unit.spec-2RUEKUT4.js.map → matrix.sort.unit.spec-GIA2YOTQ.js.map} +0 -0
- /package/dist/{matrix.sorterUi-EEMYZLPI.js.map → matrix.sorterUi-J6PRUT6J.js.map} +0 -0
- /package/dist/{matrix.sorterUi.unit.spec-ZXGSPRFZ.js.map → matrix.sorterUi.unit.spec-OPGKZZL6.js.map} +0 -0
- /package/dist/{matrix.unit.spec-HTF6UV4L.js.map → matrix.unit.spec-7UIVVR4T.js.map} +0 -0
- /package/dist/{mavb-GGQRDCO6.js.map → mavb-MSYUMT6W.js.map} +0 -0
- /package/dist/{mds.fimo-YKV5OIYV.js.map → mds.fimo-OYEAQP37.js.map} +0 -0
- /package/dist/{mds.samplescatterplot-RQOEW2AW.js.map → mds.samplescatterplot-EXISSRQQ.js.map} +0 -0
- /package/dist/{mds.survivalplot-TN636DED.js.map → mds.survivalplot-SZST6BLN.js.map} +0 -0
- /package/dist/{multivalue-MDQY64EH.js.map → multivalue-YDE7L75Y.js.map} +0 -0
- /package/dist/{numericDictTermCluster-E73TJCLI.js.map → numericDictTermCluster-5AKP6ICC.js.map} +0 -0
- /package/dist/{oncomatrix-AENXQMLL.js.map → oncomatrix-2OEIYWR6.js.map} +0 -0
- /package/dist/{oncomatrix.spec-UD6U462U.js.map → oncomatrix.spec-CXQW4JWU.js.map} +0 -0
- /package/dist/{plot.2dvaf-XMRV6KEG.js.map → plot.2dvaf-LN7A3NNC.js.map} +0 -0
- /package/dist/{plot.app-A6JKLYQQ.js.map → plot.app-YIQOY2Z7.js.map} +0 -0
- /package/dist/{plot.barplot-UIX7LVWR.js.map → plot.barplot-HF2J25XP.js.map} +0 -0
- /package/dist/{plot.boxplot-DIFWVLMA.js.map → plot.boxplot-YJH4L27U.js.map} +0 -0
- /package/dist/{plot.brainImaging-ZRPVE2UK.js.map → plot.brainImaging-PS4TRSPI.js.map} +0 -0
- /package/dist/{plot.disco-I56MT3PC.js.map → plot.disco-BN5RNZ6Q.js.map} +0 -0
- /package/dist/{plot.ssgq-FCKFSZTV.js.map → plot.ssgq-N2HTOIY3.js.map} +0 -0
- /package/dist/{plot.vaf2cov-E5C7RJ7Z.js.map → plot.vaf2cov-6AOHRUQ2.js.map} +0 -0
- /package/dist/{polar2-SKVBB4FD.js.map → polar2-TC5OEJRE.js.map} +0 -0
- /package/dist/{profileForms-5B3MTUNP.js.map → profileForms-5WV2TSBB.js.map} +0 -0
- /package/dist/{profilePlot-MCYCGEWT.js.map → profilePlot-OJLLW44P.js.map} +0 -0
- /package/dist/{pseudbulk.unit.spec-Q4YTIPH7.js.map → pseudbulk.unit.spec-RAYRGN6C.js.map} +0 -0
- /package/dist/{pseudobulk-3UIWCCCQ.js.map → pseudobulk-ADHAYVSQ.js.map} +0 -0
- /package/dist/{qualitative-6TJRXZFV.js.map → qualitative-JXEI3IYC.js.map} +0 -0
- /package/dist/{radar2-6X4XW5IZ.js.map → radar2-BWTKSTT3.js.map} +0 -0
- /package/dist/{radarFacility2-UVPXWPV5.js.map → radarFacility2-WIRSKTDG.js.map} +0 -0
- /package/dist/{rememberedGvQ.unit.spec-GVRFRVSO.js.map → rememberedGvQ.unit.spec-N43O4YTF.js.map} +0 -0
- /package/dist/{render-G7V6R4PV.js.map → render-J7WOYBOL.js.map} +0 -0
- /package/dist/{report-O7D46EKQ.js.map → report-DRPCXX2B.js.map} +0 -0
- /package/dist/{sampleView-6Y3OOOMW.js.map → sampleView-BV6BQGGQ.js.map} +0 -0
- /package/dist/{samplelst-JRVC4GYC.js.map → samplelst-ZD63EYO7.js.map} +0 -0
- /package/dist/{samplematrix-VP5RQVRH.js.map → samplematrix-ZZ3DVELU.js.map} +0 -0
- /package/dist/{sc-BPHVEP6N.js.map → sc-MUI43YTB.js.map} +0 -0
- /package/dist/{scatter-2YYRZCSW.js.map → scatter-7B44HTKN.js.map} +0 -0
- /package/dist/{scatter-Y4BIG2PW.js.map → scatter-UEDVIE4Y.js.map} +0 -0
- /package/dist/{selectGenomeWithTklst-2BVZU5SW.js.map → selectGenomeWithTklst-WGOKGVZ5.js.map} +0 -0
- /package/dist/{singleCellCellType-XBGCSIQT.js.map → singleCellCellType-Z7OXK7PI.js.map} +0 -0
- /package/dist/{singleCellCellType.unit.spec-T4GFRLVZ.js.map → singleCellCellType.unit.spec-IIOVCCJQ.js.map} +0 -0
- /package/dist/{singleCellGeneExpression-5ZPWLSVW.js.map → singleCellGeneExpression-LYZAIJ2Z.js.map} +0 -0
- /package/dist/{singleCellGeneExpression.unit.spec-4O5UBUDU.js.map → singleCellGeneExpression.unit.spec-67AAWZTG.js.map} +0 -0
- /package/dist/{singleCellPlot-CZLQBGVU.js.map → singleCellPlot-TXPYQLSH.js.map} +0 -0
- /package/dist/{singlecell-IIUYX7OG.js.map → singlecell-22OG6HNI.js.map} +0 -0
- /package/dist/{singlecell-O3P5BLWT.js.map → singlecell-7TBALI2S.js.map} +0 -0
- /package/dist/{snp-ZCYBF3ZQ.js.map → snp-3U2G3Z57.js.map} +0 -0
- /package/dist/{snp.unit.spec-TAGD2DRL.js.map → snp.unit.spec-BMBBUBYD.js.map} +0 -0
- /package/dist/{snplocus-TL25OOPE.js.map → snplocus-SSVZDIQV.js.map} +0 -0
- /package/dist/{spliceevent.a53ss.diagram-I7J4PQZT.js.map → spliceevent.a53ss.diagram-FK7CN4AU.js.map} +0 -0
- /package/dist/{spliceevent.exonskip.diagram-SB4454HB.js.map → spliceevent.exonskip.diagram-EFLGV3O4.js.map} +0 -0
- /package/dist/{spliceevent.noeventdiagram-FOSDNYLH.js.map → spliceevent.noeventdiagram-2DYO7CCZ.js.map} +0 -0
- /package/dist/{ssGSEA-WANB2X5L.js.map → ssGSEA-52LWBQJP.js.map} +0 -0
- /package/dist/{ssGSEA.unit.spec-4XXWU4XV.js.map → ssGSEA.unit.spec-3JV6WHUQ.js.map} +0 -0
- /package/dist/{stattable-FNTJLVNB.js.map → stattable-RLMYQ4G6.js.map} +0 -0
- /package/dist/{summarizeCnvGeneexp-P4AFZMKD.js.map → summarizeCnvGeneexp-QPRYAKC2.js.map} +0 -0
- /package/dist/{summarizeGeneexpSurvival-YL2J7F4R.js.map → summarizeGeneexpSurvival-RWVQXEKB.js.map} +0 -0
- /package/dist/{summarizeMutationCnv-BHBHST5F.js.map → summarizeMutationCnv-DW5F6NUJ.js.map} +0 -0
- /package/dist/{summarizeMutationDiagnosis-Z7ZHTV27.js.map → summarizeMutationDiagnosis-5FOQ7CHI.js.map} +0 -0
- /package/dist/{summarizeMutationSurvival-PZ4TYHT7.js.map → summarizeMutationSurvival-4UKB4EVO.js.map} +0 -0
- /package/dist/{summary-ZMNPO65S.js.map → summary-TYC6QNT4.js.map} +0 -0
- /package/dist/{summary.integration.spec-DPJR2ZBE.js.map → summary.integration.spec-5GLJJZNM.js.map} +0 -0
- /package/dist/{summaryInput-6JUFJZ5P.js.map → summaryInput-4IJGKW4P.js.map} +0 -0
- /package/dist/{sunburst-OWAUI3HC.js.map → sunburst-G7DGATWP.js.map} +0 -0
- /package/dist/{survival-7EXICNK7.js.map → survival-IHM6A7LL.js.map} +0 -0
- /package/dist/{survival-6JPKG3VA.js.map → survival-MKNABJPU.js.map} +0 -0
- /package/dist/{svgraph-34IKFHUS.js.map → svgraph-VB7JWWR5.js.map} +0 -0
- /package/dist/{svmr-4XNPSVVQ.js.map → svmr-VLQIO2U5.js.map} +0 -0
- /package/dist/{table-LPZATFLC.js.map → table-EAXMDWOY.js.map} +0 -0
- /package/dist/{termCollection-DYY5FXU5.js.map → termCollection-5LG7ICQY.js.map} +0 -0
- /package/dist/{termCollection-WOAUFFIC.js.map → termCollection-SB6MWLFK.js.map} +0 -0
- /package/dist/{termCollection.unit.spec-WTICTZ7H.js.map → termCollection.unit.spec-H5ITGTR3.js.map} +0 -0
- /package/dist/{termCollectionFractionSelection-K5HPDEFP.js.map → termCollectionFractionSelection-2XZSTDCQ.js.map} +0 -0
- /package/dist/{termCollectionFractionSelection.unit.spec-D7DG2HOI.js.map → termCollectionFractionSelection.unit.spec-BIO7V6KA.js.map} +0 -0
- /package/dist/{tk-DD2LWVGM.js.map → tk-TRWYZLQ2.js.map} +0 -0
- /package/dist/{tk-NV7NBLT6.js.map → tk-VZI5HNSX.js.map} +0 -0
- /package/dist/{tp.ui-B5J3UUVB.js.map → tp.ui-J5SNNAT3.js.map} +0 -0
- /package/dist/{tvs.dt-XLKQT64T.js.map → tvs.dt-6YHFJPER.js.map} +0 -0
- /package/dist/{tvs.dtcnv.categorical-XIC3RH2D.js.map → tvs.dtcnv.categorical-WTIE63GM.js.map} +0 -0
- /package/dist/{tvs.dtcnv.continuous-OA2K4LHF.js.map → tvs.dtcnv.continuous-OCMKGTF5.js.map} +0 -0
- /package/dist/{tvs.dtfusion-ZGNKALZB.js.map → tvs.dtfusion-CA23UNM3.js.map} +0 -0
- /package/dist/{tvs.dtitd-6QSG4E34.js.map → tvs.dtitd-VSYMR3OD.js.map} +0 -0
- /package/dist/{tvs.dtsnvindel-5CXXOGPH.js.map → tvs.dtsnvindel-YBNO3CYF.js.map} +0 -0
- /package/dist/{tvs.dtsv-QYYEYUD3.js.map → tvs.dtsv-S743GBB5.js.map} +0 -0
- /package/dist/{tvs.numeric-3UXW4JHJ.js.map → tvs.numeric-22AHXO5K.js.map} +0 -0
- /package/dist/{tvs.samplelst-X77ODFFR.js.map → tvs.samplelst-XAJO4EM6.js.map} +0 -0
- /package/dist/{tvs.termCollection-VXROWAPS.js.map → tvs.termCollection-QOVJGAUC.js.map} +0 -0
- /package/dist/{vocabulary-DKWYTZRC.js.map → vocabulary-6EADTHP3.js.map} +0 -0
- /package/dist/{wsi.direct-C3HQEC2V.js.map → wsi.direct-2WB2NGC5.js.map} +0 -0
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../plots/proteomeCohortCompare.ts"],
|
|
4
|
-
"sourcesContent": ["import type { MassState, BasePlotConfig } from '#mass/types/mass'\nimport { getCompInit, copyMerge, type RxComponent } from '#rx'\nimport { PlotBase } from './PlotBase'\nimport { Menu } from '#dom'\nimport { dofetch3 } from '#common/dofetch'\nimport { scaleLinear, axisBottom, axisLeft } from 'd3'\n\n/*\nproteomeCohortCompare \u2014 cross-cohort comparison of standardized fold change (log2FC-z).\n\nLaunched from the Studies catalog when \u22652 cohorts are selected. Fetches the aligned z matrix\nfrom termdb/proteomeCohortCompare and renders (view switchable in the controls):\n - 2 cohorts \u2192 a concordance scatter (z vs z); points colored by shared DAP direction\n - \u22653 cohorts \u2192 a protein \u00D7 cohort clustered heatmap (default), a cohort correlation matrix, or a\n shared-vs-specific DAP overlap (an UpSet per up/down direction), each intersection\n click-through to its protein list\n - a series \u2192 an age/progression trajectory: when the selection contains \u22651 ordered series\n (cohorts sharing dataset trajectory.series), one panel per k-means cluster showing\n the member proteins' relative-abundance trajectories + a thick eigengene trend line\n*/\n\nconst defaultConfig = { chartType: 'proteomeCohortCompare' }\n\ntype CohortRef = { organism: string; assay: string; cohort: string; label?: string }\n\nconst PLOT = 360\nconst MARGIN = { top: 16, right: 12, bottom: 46, left: 50 }\nconst UP = '#b2182b'\nconst DOWN = '#2166ac'\nconst DISCORDANT = '#e08214' // DAP in both cohorts, opposite directions\nconst NEUTRAL = '#cccccc' // not a shared DAP\n/** default DAP cutoffs. A real DAP needs BOTH a fold-change and a significance cutoff\n * (the DAP file lists every identified protein). papers use |log2FC-z|>2 (human)/2.5 (mouse)\n * and FDR<0.05; both are user-adjustable. */\nconst Z_THRESH = 2\nconst FDR_THRESH = 0.05\n\nclass ProteomeCohortCompare extends PlotBase implements RxComponent {\n\tstatic type = 'proteomeCohortCompare'\n\ttype: string\n\tdom!: {\n\t\tholder: any\n\t\tcontrols: any\n\t\tbody: any\n\t\ttip: Menu\n\t\theader?: any\n\t}\n\tcohorts: CohortRef[] = []\n\tmatrixMetric: 'spearman' | 'pearson' = 'spearman'\n\t/** DAP thresholds (scatter coloring + heatmap row selection) */\n\tzThresh = Z_THRESH\n\tfdrThresh = FDR_THRESH\n\t/** which view: the default (scatter for 2 / correlation matrix for \u22653), the protein heatmap,\n\t * the shared-vs-specific DAP overlap (UpSet), or the age/progression trajectory.\n\t * Initialized in main(): heatmap by default when >2 cohorts, scatter when exactly 2. */\n\tview: 'default' | 'heatmap' | 'overlap' | 'trajectory' = 'default'\n\tviewInitialized = false\n\t/** max heatmap rows (DAP-union capped by cross-cohort variance) */\n\tmaxRows = 30\n\t/** number of k-means clusters in the trajectory view */\n\tnClusters = 3\n\t/** trajectory drill-down selection: which series/cluster's genes are listed + highlighted */\n\ttrajSelected: { si: number; pi: number } | null = null\n\t/** last fetched response, kept so threshold changes re-render without refetching */\n\tdata: any = null\n\t/** signature of the current cohort selection \u2014 used to reset the trajectory drill-down when it changes */\n\tcohortKey = ''\n\n\tconstructor(opts: any, api) {\n\t\tsuper(opts, api)\n\t\tthis.type = ProteomeCohortCompare.type\n\t}\n\n\tasync init() {\n\t\tconst holder = this.opts.holder.append('div').style('padding', '10px')\n\t\tthis.dom = {\n\t\t\tholder,\n\t\t\tcontrols: holder.append('div').style('margin-bottom', '10px'),\n\t\t\tbody: holder.append('div'),\n\t\t\ttip: new Menu({ padding: '' }),\n\t\t\theader: this.opts.header\n\t\t}\n\t\tif (this.dom.header) this.dom.header.html('Cohort Comparison')\n\t}\n\n\tgetState(appState: MassState) {\n\t\tconst config: any = appState.plots.find((p: BasePlotConfig) => p.id === this.id)\n\t\tif (!config) throw `No plot with id='${this.id}' found`\n\t\treturn { config }\n\t}\n\n\tasync main() {\n\t\tconst config: any = this.state.config\n\t\tthis.cohorts = config.cohorts || []\n\t\tif (this.cohorts.length < 2) {\n\t\t\tthis.dom.body.selectAll('*').remove()\n\t\t\tthis.dom.body.append('div').style('color', '#666').text('Select at least two cohorts to compare.')\n\t\t\treturn\n\t\t}\n\t\t// initialize view once; afterwards the in-plot toggle owns it\n\t\t// (it doesn't dispatch config changes, so re-reading config here would clobber the user's choice)\n\t\tif (!this.viewInitialized) {\n\t\t\tthis.view = this.cohorts.length > 2 ? 'heatmap' : 'default'\n\t\t\tthis.viewInitialized = true\n\t\t}\n\t\t// reset the trajectory drill-down when the cohort selection changes (its si/pi would be stale)\n\t\tconst key = this.cohorts.map(c => `${c.organism}|${c.assay}|${c.cohort}`).join(';')\n\t\tif (key !== this.cohortKey) {\n\t\t\tthis.cohortKey = key\n\t\t\tthis.trajSelected = null\n\t\t}\n\t\tawait this.reload()\n\t}\n\n\tcohortLabel(c: CohortRef) {\n\t\treturn c.label || c.cohort\n\t}\n\n\t/** number of ordered series with \u22653 distinct timepoints among the response cohorts \u2014 gates the\n\t * Trajectory view (matches the server, which needs \u22653 distinct ages to build a trajectory) */\n\ttrajectorySeriesCount(cohortsData: any[]): number {\n\t\tconst bySeries = new Map<string, Set<number>>()\n\t\tfor (const c of cohortsData || []) {\n\t\t\tconst t = c?.trajectory\n\t\t\tif (!t?.series) continue\n\t\t\tlet vals = bySeries.get(t.series)\n\t\t\tif (!vals) bySeries.set(t.series, (vals = new Set()))\n\t\t\tvals.add(t.value)\n\t\t}\n\t\tlet n = 0\n\t\tfor (const vals of bySeries.values()) if (vals.size >= 3) n++\n\t\treturn n\n\t}\n\n\tasync reload() {\n\t\t// exactly 2 cohorts only support the scatter \u2014 drop any stale heatmap/overlap/trajectory view\n\t\tif (this.cohorts.length <= 2 && this.view !== 'default') this.view = 'default'\n\t\tthis.dom.body.selectAll('*').remove()\n\t\tconst data = await dofetch3('termdb/proteomeCohortCompare', {\n\t\t\tbody: {\n\t\t\t\tgenome: this.app.opts.state.vocab.genome,\n\t\t\t\tdslabel: this.app.opts.state.vocab.dslabel,\n\t\t\t\tcohorts: this.cohorts,\n\t\t\t\theatmap: this.view === 'heatmap',\n\t\t\t\toverlap: this.view === 'overlap',\n\t\t\t\ttrajectory: this.view === 'trajectory',\n\t\t\t\tzThresh: this.zThresh,\n\t\t\t\tfdrThresh: this.fdrThresh,\n\t\t\t\tmaxRows: this.maxRows,\n\t\t\t\tnClusters: this.nClusters\n\t\t\t}\n\t\t})\n\t\t// guard: a missing/failed endpoint (e.g. 404) returns no z matrix \u2014 fail clearly, don't crash\n\t\tif (!data || data.error || !Array.isArray(data.z) || typeof data.sharedGeneCount !== 'number') {\n\t\t\tthis.renderControls({ error: true })\n\t\t\tthis.dom.body\n\t\t\t\t.append('div')\n\t\t\t\t.style('padding', '12px')\n\t\t\t\t.style('color', '#a00')\n\t\t\t\t.text(\n\t\t\t\t\t(data && data.error) ||\n\t\t\t\t\t\t'Cohort comparison is unavailable \u2014 the server may need to be restarted to load the comparison endpoint.'\n\t\t\t\t)\n\t\t\treturn\n\t\t}\n\t\tthis.data = data\n\t\t// the trajectory view needs \u22651 ordered series in the current selection; if that no longer\n\t\t// holds (e.g. the selection changed), fall back to the heatmap and refetch for it\n\t\tif (this.view === 'trajectory' && this.trajectorySeriesCount(data.cohorts) === 0) {\n\t\t\tthis.view = 'heatmap'\n\t\t\tthis.trajSelected = null\n\t\t\treturn this.reload() // awaited by the caller so the refetch completes before main() resolves\n\t\t}\n\t\tthis.renderControls(data)\n\t\tif (data.sharedGeneCount < 3) {\n\t\t\tthis.dom.body\n\t\t\t\t.append('div')\n\t\t\t\t.style('padding', '12px')\n\t\t\t\t.style('color', '#a00')\n\t\t\t\t.text('Too few shared proteins to compare.')\n\t\t\treturn\n\t\t}\n\t\tif (this.view === 'trajectory') this.renderTrajectory(data.trajectory)\n\t\telse if (this.view === 'overlap') this.renderOverlap(data.overlap)\n\t\telse if (this.view === 'heatmap') this.renderHeatmap(data.heatmap)\n\t\telse if (this.cohorts.length === 2) this.renderScatter(data)\n\t\telse this.renderMatrix(data)\n\t}\n\n\t/** re-render just the scatter (e.g. after a threshold change) without refetching */\n\tredrawScatter() {\n\t\tif (!this.data) return\n\t\tthis.dom.body.selectAll('*').remove()\n\t\tthis.renderScatter(this.data)\n\t}\n\n\trenderControls(data: any) {\n\t\tconst div = this.dom.controls\n\t\tdiv.selectAll('*').remove()\n\n\t\t// view toggle \u2014 only offered for >2 cohorts (exactly 2 cohorts always shows the scatter).\n\t\t// \u22653 cohorts: correlation matrix, protein heatmap, the shared-vs-specific UpSet, and \u2014 when\n\t\t// the selection contains \u22651 ordered series (\u22653 timepoints) \u2014 the age/progression trajectory.\n\t\tif (!data.error && this.cohorts.length > 2) {\n\t\t\tconst viewOptions: [string, string][] = [\n\t\t\t\t['default', 'Correlation matrix'],\n\t\t\t\t['heatmap', 'Protein heatmap'],\n\t\t\t\t['overlap', 'UpSet']\n\t\t\t]\n\t\t\tif (this.trajectorySeriesCount(data.cohorts) > 0) viewOptions.push(['trajectory', 'Trajectory'])\n\t\t\tconst label = div.append('label').style('font-size', '0.85em').style('margin-right', '16px').text('View: ')\n\t\t\tconst sel = label.append('select').on('change', (event: any) => {\n\t\t\t\tthis.view = event.target.value\n\t\t\t\tthis.trajSelected = null // reset trajectory drill-down on any view switch\n\t\t\t\tthis.reload()\n\t\t\t})\n\t\t\tfor (const [val, txt] of viewOptions) {\n\t\t\t\tconst o = sel.append('option').attr('value', val).text(txt)\n\t\t\t\tif (val === this.view) o.property('selected', true)\n\t\t\t}\n\t\t}\n\n\t\t// correlation-metric toggle \u2014 only for the correlation-matrix view (not the heatmap)\n\t\tif (this.cohorts.length > 2 && !data.error && this.view === 'default') {\n\t\t\tconst label = div.append('label').style('font-size', '0.85em').style('margin-right', '6px').text('Correlation: ')\n\t\t\tconst sel = label.append('select').on('change', (event: any) => {\n\t\t\t\tthis.matrixMetric = event.target.value\n\t\t\t\tthis.reload()\n\t\t\t})\n\t\t\tfor (const m of ['spearman', 'pearson']) {\n\t\t\t\tconst o = sel\n\t\t\t\t\t.append('option')\n\t\t\t\t\t.attr('value', m)\n\t\t\t\t\t.text(m[0].toUpperCase() + m.slice(1))\n\t\t\t\tif (m === this.matrixMetric) o.property('selected', true)\n\t\t\t}\n\t\t}\n\t}\n\n\trenderScatter(data: any) {\n\t\tconst [ca, cb] = this.cohorts\n\t\tconst zx: number[] = data.z[0]\n\t\tconst zy: number[] = data.z[1]\n\t\tconst px: number[] = data.fdr[0] // per-cohort FDR for the shared genes\n\t\tconst py: number[] = data.fdr[1]\n\t\tconst genes: string[] = data.genes\n\t\tconst rho: number = data.spearman[0][1]\n\t\tconst r: number = data.pearson[0][1]\n\t\tconst n: number = data.sharedGeneCount\n\t\tconst zT = this.zThresh\n\t\tconst fT = this.fdrThresh\n\n\t\t// a protein is a DAP in a cohort only if it clears BOTH the |z| and FDR cutoffs.\n\t\t// classify by shared direction across the two cohorts.\n\t\tconst isDap = (z: number, fdr: number) => Math.abs(z) >= zT && fdr <= fT\n\t\tconst catOf = (i: number): 'up' | 'down' | 'discordant' | 'other' => {\n\t\t\tif (!isDap(zx[i], px[i]) || !isDap(zy[i], py[i])) return 'other'\n\t\t\tconst a = zx[i] > 0,\n\t\t\t\tb = zy[i] > 0\n\t\t\tif (a && b) return 'up'\n\t\t\tif (!a && !b) return 'down'\n\t\t\treturn 'discordant'\n\t\t}\n\t\tconst cats = genes.map((_, i) => catOf(i))\n\t\tconst counts = { up: 0, down: 0, discordant: 0, other: 0 }\n\t\tfor (const c of cats) counts[c]++\n\t\tconst catColor = { up: UP, down: DOWN, discordant: DISCORDANT, other: NEUTRAL }\n\n\t\t// --- plot on the left, info/controls/legend panel on the right ---\n\t\tconst row = this.dom.body\n\t\t\t.append('div')\n\t\t\t.style('display', 'flex')\n\t\t\t.style('gap', '18px')\n\t\t\t.style('align-items', 'flex-start')\n\n\t\t// axes on the ACTUAL data extent (no empty margins around the cloud)\n\t\tlet xmin = Infinity,\n\t\t\txmax = -Infinity,\n\t\t\tymin = Infinity,\n\t\t\tymax = -Infinity\n\t\tfor (let i = 0; i < genes.length; i++) {\n\t\t\tif (zx[i] < xmin) xmin = zx[i]\n\t\t\tif (zx[i] > xmax) xmax = zx[i]\n\t\t\tif (zy[i] < ymin) ymin = zy[i]\n\t\t\tif (zy[i] > ymax) ymax = zy[i]\n\t\t}\n\t\tconst padX = (xmax - xmin) * 0.04 || 1\n\t\tconst padY = (ymax - ymin) * 0.04 || 1\n\t\tconst x = scaleLinear()\n\t\t\t.domain([xmin - padX, xmax + padX])\n\t\t\t.range([MARGIN.left, MARGIN.left + PLOT])\n\t\tconst y = scaleLinear()\n\t\t\t.domain([ymin - padY, ymax + padY])\n\t\t\t.range([MARGIN.top + PLOT, MARGIN.top])\n\n\t\tconst svg = row\n\t\t\t.append('svg')\n\t\t\t.attr('width', MARGIN.left + PLOT + MARGIN.right)\n\t\t\t.attr('height', MARGIN.top + PLOT + MARGIN.bottom)\n\n\t\t// zero reference lines (only when 0 is within the plotted range)\n\t\tif (xmin < 0 && xmax > 0)\n\t\t\tsvg\n\t\t\t\t.append('line')\n\t\t\t\t.attr('x1', x(0))\n\t\t\t\t.attr('y1', MARGIN.top)\n\t\t\t\t.attr('x2', x(0))\n\t\t\t\t.attr('y2', MARGIN.top + PLOT)\n\t\t\t\t.attr('stroke', '#eee')\n\t\tif (ymin < 0 && ymax > 0)\n\t\t\tsvg\n\t\t\t\t.append('line')\n\t\t\t\t.attr('x1', MARGIN.left)\n\t\t\t\t.attr('y1', y(0))\n\t\t\t\t.attr('x2', MARGIN.left + PLOT)\n\t\t\t\t.attr('y2', y(0))\n\t\t\t\t.attr('stroke', '#eee')\n\n\t\t// points \u2014 draw the grey background cloud first, colored shared movers on top\n\t\tconst pts = svg.append('g')\n\t\tconst drawPoint = (i: number) => {\n\t\t\tconst c = cats[i]\n\t\t\tpts\n\t\t\t\t.append('circle')\n\t\t\t\t.attr('cx', x(zx[i]))\n\t\t\t\t.attr('cy', y(zy[i]))\n\t\t\t\t.attr('r', c === 'other' ? 1.8 : 2.6)\n\t\t\t\t.attr('fill', catColor[c])\n\t\t\t\t.attr('fill-opacity', c === 'other' ? 0.3 : 0.8)\n\t\t\t\t.on('mouseover', (event: any) => {\n\t\t\t\t\tthis.dom.tip.clear().show(event.clientX, event.clientY)\n\t\t\t\t\tthis.dom.tip.d\n\t\t\t\t\t\t.append('div')\n\t\t\t\t\t\t.style('padding', '5px 8px')\n\t\t\t\t\t\t.style('font-size', '0.85em')\n\t\t\t\t\t\t.html(\n\t\t\t\t\t\t\t`<b>${genes[i]}</b><br>${this.cohortLabel(ca)}: z=${zx[i].toFixed(2)} (log2FC ${data.fc[0][i].toFixed(\n\t\t\t\t\t\t\t\t2\n\t\t\t\t\t\t\t)}, FDR ${px[i].toExponential(1)})<br>${this.cohortLabel(cb)}: z=${zy[i].toFixed(2)} (log2FC ${data.fc[1][\n\t\t\t\t\t\t\t\ti\n\t\t\t\t\t\t\t].toFixed(2)}, FDR ${py[i].toExponential(1)})`\n\t\t\t\t\t\t)\n\t\t\t\t})\n\t\t\t\t.on('mouseout', () => this.dom.tip.hide())\n\t\t}\n\t\tfor (let i = 0; i < genes.length; i++) if (cats[i] === 'other') drawPoint(i)\n\t\tfor (let i = 0; i < genes.length; i++) if (cats[i] !== 'other') drawPoint(i)\n\n\t\t// axes + titles\n\t\tsvg\n\t\t\t.append('g')\n\t\t\t.attr('transform', `translate(0,${MARGIN.top + PLOT})`)\n\t\t\t.call(axisBottom(x).ticks(5) as any)\n\t\tsvg\n\t\t\t.append('g')\n\t\t\t.attr('transform', `translate(${MARGIN.left},0)`)\n\t\t\t.call(axisLeft(y).ticks(5) as any)\n\t\tsvg\n\t\t\t.append('text')\n\t\t\t.attr('x', MARGIN.left + PLOT / 2)\n\t\t\t.attr('y', MARGIN.top + PLOT + 36)\n\t\t\t.attr('text-anchor', 'middle')\n\t\t\t.style('font-size', '11px')\n\t\t\t.text(`${this.cohortLabel(ca)} (log2FC-z)`)\n\t\tsvg\n\t\t\t.append('text')\n\t\t\t.attr('transform', `translate(12,${MARGIN.top + PLOT / 2}) rotate(-90)`)\n\t\t\t.attr('text-anchor', 'middle')\n\t\t\t.style('font-size', '11px')\n\t\t\t.text(`${this.cohortLabel(cb)} (log2FC-z)`)\n\n\t\t// --- right panel: stats, DAP-cutoff controls, legend ---\n\t\tconst panel = row.append('div').style('font-size', '0.85em').style('padding-top', '4px').style('min-width', '190px')\n\n\t\tconst statBox = panel.append('div').style('margin-bottom', '12px').style('line-height', '1.6')\n\t\tstatBox\n\t\t\t.append('div')\n\t\t\t.attr('title', 'Number of shared proteins compared')\n\t\t\t.html(`<b>n</b> = ${n.toLocaleString()} shared proteins`)\n\t\tstatBox\n\t\t\t.append('div')\n\t\t\t.attr('title', 'Spearman rank correlation of log2FC-z (robust; no linearity assumption)')\n\t\t\t.html(`<b>\u03C1</b> (Spearman) = ${rho.toFixed(3)}`)\n\t\tstatBox\n\t\t\t.append('div')\n\t\t\t.attr('title', 'Pearson correlation of log2FC-z (linear agreement; the papers\u2019 R)')\n\t\t\t.html(`<b>r</b> (Pearson) = ${r.toFixed(3)}`)\n\n\t\t// DAP-cutoff controls \u2014 recolor without refetching\n\t\tconst cutoffs = panel.append('div').style('margin-bottom', '12px')\n\t\tcutoffs\n\t\t\t.append('div')\n\t\t\t.style('font-weight', '600')\n\t\t\t.style('margin-bottom', '3px')\n\t\t\t.attr('title', 'A protein is a shared DAP only if it clears BOTH cutoffs in BOTH cohorts')\n\t\t\t.text('DAP cutoffs')\n\t\tconst numInput = (label: string, value: number, step: number, title: string, onSet: (v: number) => void) => {\n\t\t\tconst l = cutoffs.append('div').style('margin-bottom', '2px').attr('title', title)\n\t\t\tl.append('span').style('display', 'inline-block').style('width', '44px').html(label)\n\t\t\tl.append('input')\n\t\t\t\t.attr('type', 'number')\n\t\t\t\t.attr('step', step)\n\t\t\t\t.attr('min', 0)\n\t\t\t\t.property('value', value)\n\t\t\t\t.style('width', '70px')\n\t\t\t\t.on('change', (event: any) => {\n\t\t\t\t\tconst v = Number(event.target.value)\n\t\t\t\t\tif (Number.isFinite(v) && v >= 0) {\n\t\t\t\t\t\tonSet(v)\n\t\t\t\t\t\tthis.redrawScatter()\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t}\n\t\tnumInput('|z| \u2265', this.zThresh, 0.5, 'Minimum |log2FC-z| (standardized fold change)', v => (this.zThresh = v))\n\t\tnumInput('FDR \u2264', this.fdrThresh, 0.01, 'Maximum FDR', v => (this.fdrThresh = v))\n\n\t\t// legend\n\t\tconst legend = panel.append('div')\n\t\tlegend.append('div').style('font-weight', '600').style('margin-bottom', '6px').text('Shared regulation')\n\t\tconst legItems: [string, string, number][] = [\n\t\t\t[UP, 'Up in both', counts.up],\n\t\t\t[DOWN, 'Down in both', counts.down],\n\t\t\t[DISCORDANT, 'Opposite (DAP in both)', counts.discordant],\n\t\t\t[NEUTRAL, 'Not a shared DAP', counts.other]\n\t\t]\n\t\tfor (const [col, lab, ct] of legItems) {\n\t\t\tconst item = legend\n\t\t\t\t.append('div')\n\t\t\t\t.style('display', 'flex')\n\t\t\t\t.style('align-items', 'center')\n\t\t\t\t.style('gap', '6px')\n\t\t\t\t.style('margin-bottom', '3px')\n\t\t\titem\n\t\t\t\t.append('span')\n\t\t\t\t.style('width', '10px')\n\t\t\t\t.style('height', '10px')\n\t\t\t\t.style('border-radius', '50%')\n\t\t\t\t.style('background', col)\n\t\t\t\t.style('display', 'inline-block')\n\t\t\titem.append('span').html(`${lab} <span style=\"color:#999\">(${ct.toLocaleString()})</span>`)\n\t\t}\n\t}\n\n\trenderMatrix(data: any) {\n\t\tconst n = this.cohorts.length\n\t\tconst corr: number[][] = data[this.matrixMetric]\n\t\tconst order = leafOrder(corr)\n\t\tconst labels = order.map(i => this.cohortLabel(this.cohorts[i]))\n\n\t\tconst cell = Math.max(26, Math.min(48, Math.floor(360 / n)))\n\t\tconst labelPad = 120\n\t\tconst svg = this.dom.body\n\t\t\t.append('svg')\n\t\t\t.attr('width', labelPad + n * cell + 60)\n\t\t\t.attr('height', labelPad + n * cell + 20)\n\n\t\tconst cscale = scaleLinear<string>().domain([-1, 0, 1]).range([DOWN, '#f7f7f7', UP]).clamp(true)\n\n\t\tconst g = svg.append('g').attr('transform', `translate(${labelPad},${labelPad})`)\n\t\tfor (let ri = 0; ri < n; ri++) {\n\t\t\tfor (let ci = 0; ci < n; ci++) {\n\t\t\t\tconst v = corr[order[ri]][order[ci]]\n\t\t\t\tg.append('rect')\n\t\t\t\t\t.attr('x', ci * cell)\n\t\t\t\t\t.attr('y', ri * cell)\n\t\t\t\t\t.attr('width', cell - 1)\n\t\t\t\t\t.attr('height', cell - 1)\n\t\t\t\t\t.attr('fill', cscale(v))\n\t\t\t\t\t.style('cursor', ri === ci ? 'default' : 'pointer')\n\t\t\t\t\t.on('mouseover', (event: any) => {\n\t\t\t\t\t\tthis.dom.tip.clear().show(event.clientX, event.clientY)\n\t\t\t\t\t\tthis.dom.tip.d\n\t\t\t\t\t\t\t.append('div')\n\t\t\t\t\t\t\t.style('padding', '5px 8px')\n\t\t\t\t\t\t\t.style('font-size', '0.85em')\n\t\t\t\t\t\t\t.html(`${labels[ri]} \u00D7 ${labels[ci]}<br><b>${this.matrixMetric} = ${v.toFixed(3)}</b>`)\n\t\t\t\t\t})\n\t\t\t\t\t.on('mouseout', () => this.dom.tip.hide())\n\t\t\t\t\t.on('click', () => {\n\t\t\t\t\t\tif (ri === ci) return\n\t\t\t\t\t\tthis.openPair(this.cohorts[order[ri]], this.cohorts[order[ci]])\n\t\t\t\t\t})\n\t\t\t\tg.append('text')\n\t\t\t\t\t.attr('x', ci * cell + cell / 2)\n\t\t\t\t\t.attr('y', ri * cell + cell / 2)\n\t\t\t\t\t.attr('text-anchor', 'middle')\n\t\t\t\t\t.attr('dominant-baseline', 'central')\n\t\t\t\t\t.style('font-size', '10px')\n\t\t\t\t\t.style('fill', Math.abs(v) > 0.6 ? '#fff' : '#333')\n\t\t\t\t\t.style('pointer-events', 'none') // let hover/click fall through to the cell rect below\n\t\t\t\t\t.text(v.toFixed(2))\n\t\t\t}\n\t\t}\n\n\t\t// row labels (left) + column labels (top, rotated)\n\t\tfor (let i = 0; i < n; i++) {\n\t\t\tsvg\n\t\t\t\t.append('text')\n\t\t\t\t.attr('x', labelPad - 6)\n\t\t\t\t.attr('y', labelPad + i * cell + cell / 2)\n\t\t\t\t.attr('text-anchor', 'end')\n\t\t\t\t.attr('dominant-baseline', 'central')\n\t\t\t\t.style('font-size', '11px')\n\t\t\t\t.text(labels[i])\n\t\t\tsvg\n\t\t\t\t.append('text')\n\t\t\t\t.attr('transform', `translate(${labelPad + i * cell + cell / 2},${labelPad - 6}) rotate(-45)`)\n\t\t\t\t.attr('text-anchor', 'start')\n\t\t\t\t.style('font-size', '11px')\n\t\t\t\t.text(labels[i])\n\t\t}\n\n\t\tthis.dom.body\n\t\t\t.append('div')\n\t\t\t.style('font-size', '0.8em')\n\t\t\t.style('color', '#777')\n\t\t\t.style('margin-top', '6px')\n\t\t\t.text('Rows/cols ordered by hierarchical clustering. Click a cell to open the pairwise scatter.')\n\t}\n\n\t/** open a fresh 2-cohort comparison for the clicked matrix pair */\n\topenPair(a: CohortRef, b: CohortRef) {\n\t\tthis.app.dispatch({\n\t\t\ttype: 'plot_create',\n\t\t\tconfig: { chartType: 'proteomeCohortCompare', cohorts: [a, b] }\n\t\t})\n\t}\n\n\t/** protein \u00D7 cohort log2FC-z heatmap, clustered on both axes (via server hclust.R) */\n\trenderHeatmap(hm: any) {\n\t\tif (!hm) {\n\t\t\tthis.dom.body.append('div').style('padding', '12px').style('color', '#a00').text('Heatmap unavailable.')\n\t\t\treturn\n\t\t}\n\n\t\t// layout: heatmap on the left, controls + legend + count on the right, bottom-aligned to the heatmap\n\t\tconst wrap = this.dom.body\n\t\t\t.append('div')\n\t\t\t.style('display', 'flex')\n\t\t\t.style('gap', '18px')\n\t\t\t.style('align-items', 'flex-end')\n\t\tconst left = wrap.append('div')\n\t\tconst panel = wrap.append('div').style('font-size', '0.85em').style('min-width', '160px')\n\n\t\t// DAP-cutoff + row-cap controls \u2014 changing any recomputes rows/clustering on the server\n\t\tpanel.append('div').style('font-weight', '600').style('margin-bottom', '3px').text('DAP cutoffs')\n\t\tconst numInput = (label: string, value: number, step: number, title: string, onSet: (v: number) => void) => {\n\t\t\tconst l = panel.append('div').style('margin-bottom', '3px').attr('title', title)\n\t\t\tl.append('span').style('display', 'inline-block').style('width', '58px').html(label)\n\t\t\tl.append('input')\n\t\t\t\t.attr('type', 'number')\n\t\t\t\t.attr('step', step)\n\t\t\t\t.attr('min', 0)\n\t\t\t\t.property('value', value)\n\t\t\t\t.style('width', '64px')\n\t\t\t\t.on('change', (e: any) => {\n\t\t\t\t\tconst v = Number(e.target.value)\n\t\t\t\t\tif (Number.isFinite(v) && v >= 0) {\n\t\t\t\t\t\tonSet(v)\n\t\t\t\t\t\tthis.reload()\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t}\n\t\tnumInput('|z| \u2265', this.zThresh, 0.5, 'DAP fold-change cutoff', v => (this.zThresh = v))\n\t\tnumInput('FDR \u2264', this.fdrThresh, 0.01, 'DAP significance cutoff (FDR)', v => (this.fdrThresh = v))\n\t\tnumInput(\n\t\t\t'max rows',\n\t\t\tthis.maxRows,\n\t\t\t25,\n\t\t\t'Cap on proteins shown (top by variance of z across cohorts)',\n\t\t\tv => (this.maxRows = Math.round(v))\n\t\t)\n\t\t// color legend goes here, directly under the DAP cutoffs (filled in once `cap` is known)\n\t\tconst legendHolder = panel.append('div').style('margin-top', '12px')\n\t\tconst countTxt =\n\t\t\thm.shown < hm.totalDap ? `${hm.shown} of ${hm.totalDap} DAP-union proteins` : `${hm.shown} DAP-union proteins`\n\t\tpanel.append('div').style('margin-top', '12px').style('color', '#777').text(countTxt)\n\n\t\tif (!hm.rowNames.length) {\n\t\t\tleft\n\t\t\t\t.append('div')\n\t\t\t\t.style('padding', '12px')\n\t\t\t\t.style('color', '#a00')\n\t\t\t\t.text('No DAP proteins at these cutoffs \u2014 loosen |z| or FDR.')\n\t\t\treturn\n\t\t}\n\n\t\tconst rows: string[] = hm.rowNames\n\t\tconst cols: string[] = hm.colLabels\n\t\tconst Z: number[][] = hm.z\n\t\tconst cellW = 45\n\t\t// cap the gene-rows grid at MAX_GRID_H px tall; shrink cell height when there are many genes,\n\t\t// and drop the gene names once cells get too short to fit readable text (hover still shows them)\n\t\tconst MAX_GRID_H = 600\n\t\tconst cellH = Math.min(18, MAX_GRID_H / rows.length)\n\t\tconst showRowNames = cellH >= 8\n\t\tconst rowDendW = hm.rowDendrogram ? 90 : 0\n\t\tconst colDendH = hm.colDendrogram ? 70 : 0\n\t\tconst maxLabelLen = Math.max(1, ...cols.map(c => c.length))\n\t\t// size the vertical-label band to the longest name + a gap so labels never touch the top dendrogram\n\t\tconst colLabelH = Math.min(220, Math.max(70, Math.round(maxLabelLen * 7) + 12))\n\t\tconst rowLabelW = showRowNames ? 140 : 8\n\t\tconst legendW = 12 // just a little right padding now that the legend lives in the side panel\n\t\tconst gridW = cols.length * cellW\n\t\tconst gridH = rows.length * cellH\n\t\tconst gridX = rowDendW\n\t\tconst gridY = colDendH + colLabelH\n\n\t\tconst svg = left\n\t\t\t.append('svg')\n\t\t\t.attr('width', gridX + gridW + rowLabelW + legendW)\n\t\t\t.attr('height', gridY + gridH + 12)\n\t\t\t.attr('font-family', 'sans-serif')\n\n\t\tlet cap = 1\n\t\tfor (const row of Z) for (const v of row) cap = Math.max(cap, Math.abs(v))\n\t\tconst color = scaleLinear<string>().domain([-cap, 0, cap]).range([DOWN, '#f7f7f7', UP]).clamp(true)\n\n\t\t// dendrograms (both axes)\n\t\tif (hm.rowDendrogram)\n\t\t\tdrawDendrogram(\n\t\t\t\tsvg.append('g').attr('transform', `translate(0,${gridY})`),\n\t\t\t\thm.rowDendrogram,\n\t\t\t\tcellH,\n\t\t\t\trowDendW,\n\t\t\t\t'left'\n\t\t\t)\n\t\tif (hm.colDendrogram)\n\t\t\tdrawDendrogram(\n\t\t\t\tsvg.append('g').attr('transform', `translate(${gridX},0)`),\n\t\t\t\thm.colDendrogram,\n\t\t\t\tcellW,\n\t\t\t\tcolDendH,\n\t\t\t\t'top'\n\t\t\t)\n\n\t\t// column labels \u2014 vertical (90\u00B0), reading upward from the grid\n\t\tconst labG = svg.append('g').attr('transform', `translate(${gridX},${gridY - 4})`)\n\t\tcols.forEach((c, i) => {\n\t\t\tconst cx = i * cellW + cellW / 2\n\t\t\tlabG\n\t\t\t\t.append('text')\n\t\t\t\t.attr('x', cx)\n\t\t\t\t.attr('y', 0)\n\t\t\t\t.attr('transform', `rotate(-90,${cx},0)`)\n\t\t\t\t.attr('text-anchor', 'start')\n\t\t\t\t.attr('dominant-baseline', 'central')\n\t\t\t\t.style('font-size', '11px')\n\t\t\t\t.text(c)\n\t\t})\n\n\t\t// cells\n\t\tconst cg = svg.append('g').attr('transform', `translate(${gridX},${gridY})`)\n\t\tfor (let r = 0; r < rows.length; r++) {\n\t\t\tfor (let c = 0; c < cols.length; c++) {\n\t\t\t\tconst v = Z[r][c]\n\t\t\t\tcg.append('rect')\n\t\t\t\t\t.attr('x', c * cellW)\n\t\t\t\t\t.attr('y', r * cellH)\n\t\t\t\t\t.attr('width', cellW - 0.5)\n\t\t\t\t\t.attr('height', cellH - 0.5)\n\t\t\t\t\t.attr('fill', color(v))\n\t\t\t\t\t.on('mouseover', (event: any) => {\n\t\t\t\t\t\tthis.dom.tip.clear().show(event.clientX, event.clientY)\n\t\t\t\t\t\tthis.dom.tip.d\n\t\t\t\t\t\t\t.append('div')\n\t\t\t\t\t\t\t.style('padding', '5px 8px')\n\t\t\t\t\t\t\t.style('font-size', '0.85em')\n\t\t\t\t\t\t\t.html(\n\t\t\t\t\t\t\t\t`<b>${rows[r]}</b> \u2014 ${cols[c]}<br>z = ${v.toFixed(2)}, log2FC = ${hm.fc[r][c].toFixed(\n\t\t\t\t\t\t\t\t\t2\n\t\t\t\t\t\t\t\t)}, FDR = ${hm.fdr[r][c].toExponential(1)}`\n\t\t\t\t\t\t\t)\n\t\t\t\t\t})\n\t\t\t\t\t.on('mouseout', () => this.dom.tip.hide())\n\t\t\t}\n\t\t}\n\n\t\t// row labels (right of grid) \u2014 only when cells are tall enough; font scales with cell height\n\t\tif (showRowNames) {\n\t\t\tconst rowFont = Math.min(11, Math.max(7, Math.floor(cellH - 1)))\n\t\t\tconst rg = svg.append('g').attr('transform', `translate(${gridX + gridW + 4},${gridY})`)\n\t\t\trows.forEach((name, r) =>\n\t\t\t\trg\n\t\t\t\t\t.append('text')\n\t\t\t\t\t.attr('x', 0)\n\t\t\t\t\t.attr('y', r * cellH + cellH / 2)\n\t\t\t\t\t.attr('dominant-baseline', 'central')\n\t\t\t\t\t.style('font-size', `${rowFont}px`)\n\t\t\t\t\t.text(name)\n\t\t\t)\n\t\t}\n\n\t\t// color legend \u2014 horizontal bar in the side panel, same font as gene labels\n\t\tconst legLen = 150\n\t\tconst legThick = 16\n\t\tconst steps = 24\n\t\tconst legSvg = legendHolder\n\t\t\t.append('svg')\n\t\t\t.attr('width', legLen + 8)\n\t\t\t.attr('height', legThick + 36)\n\t\t\t.attr('font-family', 'sans-serif')\n\t\tlegSvg\n\t\t\t.append('text')\n\t\t\t.attr('x', 0)\n\t\t\t.attr('y', 10)\n\t\t\t.style('font-size', '11px')\n\t\t\t.style('font-weight', '600')\n\t\t\t.text('log2FC-z')\n\t\tconst legG = legSvg.append('g').attr('transform', 'translate(2,18)')\n\t\tfor (let s = 0; s < steps; s++) {\n\t\t\tconst t = s / (steps - 1)\n\t\t\tlegG\n\t\t\t\t.append('rect')\n\t\t\t\t.attr('x', t * legLen)\n\t\t\t\t.attr('y', 0)\n\t\t\t\t.attr('width', legLen / steps + 0.6)\n\t\t\t\t.attr('height', legThick)\n\t\t\t\t.attr('fill', color(-cap + 2 * cap * t))\n\t\t}\n\t\tfor (const [t, lab] of [\n\t\t\t[0, `\u2212${cap.toFixed(1)}`],\n\t\t\t[0.5, '0'],\n\t\t\t[1, `+${cap.toFixed(1)}`]\n\t\t] as [number, string][])\n\t\t\tlegG\n\t\t\t\t.append('text')\n\t\t\t\t.attr('x', t * legLen)\n\t\t\t\t.attr('y', legThick + 13)\n\t\t\t\t.attr('text-anchor', t === 0 ? 'start' : t === 1 ? 'end' : 'middle')\n\t\t\t\t.style('font-size', '11px')\n\t\t\t\t.text(lab)\n\t}\n\n\t/** render a capped, expandable gene list (5 per row; first 10 shown, rest behind a black \"more\") */\n\trenderGeneList(holder: any, headerText: string, genes: string[]) {\n\t\tholder.selectAll('*').remove()\n\t\tholder.append('div').style('font-weight', '600').style('margin-bottom', '4px').text(headerText)\n\t\tconst list = holder\n\t\t\t.append('div')\n\t\t\t.style('max-width', '360px')\n\t\t\t.style('line-height', '1.6')\n\t\t\t.style('color', '#333')\n\t\t\t.style('word-break', 'break-word')\n\t\tconst LIMIT = 10\n\t\tconst PER_ROW = 5\n\t\tconst render = (expanded: boolean) => {\n\t\t\tlist.selectAll('*').remove()\n\t\t\tif (!genes.length) {\n\t\t\t\tlist.text('(none)')\n\t\t\t\treturn\n\t\t\t}\n\t\t\tconst shown = expanded ? genes : genes.slice(0, LIMIT)\n\t\t\tfor (let i = 0; i < shown.length; i += PER_ROW) {\n\t\t\t\tconst chunk = shown.slice(i, i + PER_ROW)\n\t\t\t\tconst last = i + PER_ROW >= shown.length\n\t\t\t\tlist.append('div').text(chunk.join(', ') + (last ? '' : ','))\n\t\t\t}\n\t\t\tif (genes.length > LIMIT)\n\t\t\t\tlist\n\t\t\t\t\t.append('button')\n\t\t\t\t\t.attr('type', 'button')\n\t\t\t\t\t.style('cursor', 'pointer')\n\t\t\t\t\t.style('color', '#333') // same color as the gene names, not a link color\n\t\t\t\t\t.style('text-decoration', 'underline')\n\t\t\t\t\t.style('display', 'inline-block')\n\t\t\t\t\t.style('margin-top', '3px')\n\t\t\t\t\t.style('background', 'none')\n\t\t\t\t\t.style('border', 'none')\n\t\t\t\t\t.style('padding', '0')\n\t\t\t\t\t.style('font', 'inherit')\n\t\t\t\t\t.text(expanded ? 'less' : `more (${(genes.length - LIMIT).toLocaleString()})`)\n\t\t\t\t\t.on('click', () => render(!expanded))\n\t\t}\n\t\trender(false)\n\t}\n\n\t/** age/progression trajectory. One section per ordered series; within a section, one small panel\n\t * per k-means cluster: faint individual member trajectories (relative abundance)\n\t * plus a thick black module-eigengene trend line. Click a panel to list that cluster's genes.\n\t * DAP cutoffs + cluster count live in the right panel (all refetch). */\n\trenderTrajectory(traj: any) {\n\t\tconst body = this.dom.body\n\t\tif (!Array.isArray(traj) || !traj.length) {\n\t\t\tbody\n\t\t\t\t.append('div')\n\t\t\t\t.style('padding', '12px')\n\t\t\t\t.style('color', '#a00')\n\t\t\t\t.text(\n\t\t\t\t\t'No age/progression series in this selection \u2014 pick \u22653 cohorts that form one ordered series (same model/region/cell type, differing only by age or stage).'\n\t\t\t\t)\n\t\t\treturn\n\t\t}\n\t\tconst row = body.append('div').style('display', 'flex').style('gap', '24px').style('align-items', 'flex-start')\n\t\tconst left = row.append('div')\n\t\tconst panel = row.append('div').style('font-size', '0.85em').style('min-width', '170px')\n\n\t\t// controls (all refetch, and reset the drill-down since cluster identities change)\n\t\tpanel.append('div').style('font-weight', '600').style('margin-bottom', '3px').text('DAP cutoffs')\n\t\tconst numInput = (label: string, value: number, step: number, title: string, onSet: (v: number) => void) => {\n\t\t\tconst l = panel.append('div').style('margin-bottom', '3px').attr('title', title)\n\t\t\tl.append('span').style('display', 'inline-block').style('width', '62px').html(label)\n\t\t\tl.append('input')\n\t\t\t\t.attr('type', 'number')\n\t\t\t\t.attr('step', step)\n\t\t\t\t.attr('min', 0)\n\t\t\t\t.property('value', value)\n\t\t\t\t.style('width', '60px')\n\t\t\t\t.on('change', (e: any) => {\n\t\t\t\t\tconst v = Number(e.target.value)\n\t\t\t\t\tif (Number.isFinite(v) && v >= 0) {\n\t\t\t\t\t\tonSet(v)\n\t\t\t\t\t\tthis.trajSelected = null\n\t\t\t\t\t\tthis.reload()\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t}\n\t\tnumInput('|z| \u2265', this.zThresh, 0.5, 'Variable-protein fold-change cutoff', v => (this.zThresh = v))\n\t\tnumInput(\n\t\t\t'FDR \u2264',\n\t\t\tthis.fdrThresh,\n\t\t\t0.01,\n\t\t\t'Variable-protein significance cutoff (already an FDR)',\n\t\t\tv => (this.fdrThresh = v)\n\t\t)\n\t\tnumInput(\n\t\t\t'clusters',\n\t\t\tthis.nClusters,\n\t\t\t1,\n\t\t\t'Number of k-means clusters',\n\t\t\tv => (this.nClusters = Math.max(1, Math.round(v)))\n\t\t)\n\n\t\tpanel\n\t\t\t.append('div')\n\t\t\t.style('margin-top', '10px')\n\t\t\t.style('font-size', '0.8em')\n\t\t\t.style('color', '#777')\n\t\t\t.style('line-height', '1.4')\n\t\t\t.html(\n\t\t\t\t'Each thin line is one protein (standardized log2FC-z).<br>The thick black line is the cluster eigengene (PC1).'\n\t\t\t)\n\n\t\tconst genePanel = panel.append('div').style('margin-top', '14px')\n\t\tconst showGenes = () => {\n\t\t\tconst selSi = this.trajSelected?.si\n\t\t\tconst s = selSi != null ? traj[selSi] : null\n\t\t\tconst pr = s?.clusters?.[this.trajSelected!.pi]\n\t\t\tif (!pr) {\n\t\t\t\tgenePanel.selectAll('*').remove()\n\t\t\t\tgenePanel.append('div').style('color', '#888').text('Click a cluster to list its proteins.')\n\t\t\t\treturn\n\t\t\t}\n\t\t\tthis.renderGeneList(\n\t\t\t\tgenePanel,\n\t\t\t\t`${pr.size.toLocaleString()} proteins \u00B7 ${s!.label} \u00B7 C${this.trajSelected!.pi + 1}:`,\n\t\t\t\tpr.genes\n\t\t\t)\n\t\t}\n\n\t\tconst renderAll = () => {\n\t\t\tleft.selectAll('*').remove()\n\t\t\ttraj.forEach((s: any, si: number) => {\n\t\t\t\tconst section = left.append('div').style('margin-bottom', '20px')\n\t\t\t\tsection.append('div').style('font-weight', '600').style('max-width', '640px').text(s.label)\n\t\t\t\tsection\n\t\t\t\t\t.append('div')\n\t\t\t\t\t.style('font-size', '0.8em')\n\t\t\t\t\t.style('color', '#888')\n\t\t\t\t\t.style('margin-bottom', '6px')\n\t\t\t\t\t.text(\n\t\t\t\t\t\t`${(s.geneCount || 0).toLocaleString()} variable proteins \u00B7 ${s.points\n\t\t\t\t\t\t\t.map((p: any) => p.label)\n\t\t\t\t\t\t\t.join(' \u2192 ')}`\n\t\t\t\t\t)\n\t\t\t\tconst grid = section.append('div').style('display', 'flex').style('flex-wrap', 'wrap').style('gap', '12px')\n\t\t\t\tif (!s.clusters?.length) {\n\t\t\t\t\tgrid\n\t\t\t\t\t\t.append('div')\n\t\t\t\t\t\t.style('color', '#a00')\n\t\t\t\t\t\t.style('font-size', '0.85em')\n\t\t\t\t\t\t.text('No variable proteins at these cutoffs.')\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\ts.clusters.forEach((pr: any, pi: number) => {\n\t\t\t\t\tconst selected = this.trajSelected != null && this.trajSelected.si === si && this.trajSelected.pi === pi\n\t\t\t\t\tconst cell = grid\n\t\t\t\t\t\t.append('div')\n\t\t\t\t\t\t.style('border', selected ? '2px solid #333' : '1px solid #ddd')\n\t\t\t\t\t\t.style('border-radius', '4px')\n\t\t\t\t\t\t.style('padding', '4px 6px 2px')\n\t\t\t\t\t\t.style('cursor', 'pointer')\n\t\t\t\t\t\t.on('click', () => {\n\t\t\t\t\t\t\tthis.trajSelected = selected ? null : { si, pi }\n\t\t\t\t\t\t\trenderAll()\n\t\t\t\t\t\t\tshowGenes()\n\t\t\t\t\t\t})\n\t\t\t\t\tcell\n\t\t\t\t\t\t.append('div')\n\t\t\t\t\t\t.style('font-size', '0.8em')\n\t\t\t\t\t\t.style('font-weight', selected ? '700' : '600')\n\t\t\t\t\t\t.style('margin-bottom', '1px')\n\t\t\t\t\t\t.text(`C${pi + 1} \u00B7 ${pr.size.toLocaleString()} proteins`)\n\t\t\t\t\tthis.drawClusterPlot(cell.append('div'), s.points, pr)\n\t\t\t\t})\n\t\t\t})\n\t\t}\n\t\trenderAll()\n\t\tshowGenes()\n\t}\n\n\t/** one cluster panel: faint member trajectories + a thick black eigengene line, over the ordered\n\t * timepoints (true-spaced by age). y = relative abundance (standardized log2FC-z). */\n\tdrawClusterPlot(holder: any, points: { value: number; label: string }[], cluster: any) {\n\t\tconst lines: number[][] = cluster.lines || []\n\t\tconst eigengene: number[] = cluster.eigengene || []\n\t\tconst W = 232,\n\t\t\tH = 162\n\t\tconst M = { top: 8, right: 10, bottom: 34, left: 44 }\n\t\tconst innerW = W - M.left - M.right\n\t\tconst innerH = H - M.top - M.bottom\n\t\tconst xs = points.map(p => p.value)\n\t\tconst xmin = Math.min(...xs)\n\t\tconst xmax = Math.max(...xs)\n\n\t\tlet ymin = Infinity,\n\t\t\tymax = -Infinity\n\t\tfor (const ln of lines)\n\t\t\tfor (const v of ln) {\n\t\t\t\tif (v < ymin) ymin = v\n\t\t\t\tif (v > ymax) ymax = v\n\t\t\t}\n\t\tfor (const v of eigengene) {\n\t\t\tif (v < ymin) ymin = v\n\t\t\tif (v > ymax) ymax = v\n\t\t}\n\t\tif (!Number.isFinite(ymin)) {\n\t\t\tymin = -2\n\t\t\tymax = 2\n\t\t}\n\t\tif (ymin === ymax) {\n\t\t\tymin -= 1\n\t\t\tymax += 1\n\t\t}\n\t\tconst padY = (ymax - ymin) * 0.06\n\t\tconst x = scaleLinear()\n\t\t\t.domain([xmin, xmax])\n\t\t\t.range([M.left, M.left + innerW])\n\t\tconst y = scaleLinear()\n\t\t\t.domain([ymin - padY, ymax + padY])\n\t\t\t.range([M.top + innerH, M.top])\n\n\t\tconst svg = holder.append('svg').attr('width', W).attr('height', H).attr('font-family', 'sans-serif')\n\t\tif (ymin < 0 && ymax > 0)\n\t\t\tsvg\n\t\t\t\t.append('line')\n\t\t\t\t.attr('x1', M.left)\n\t\t\t\t.attr('x2', M.left + innerW)\n\t\t\t\t.attr('y1', y(0))\n\t\t\t\t.attr('y2', y(0))\n\t\t\t\t.attr('stroke', '#eee')\n\t\tsvg\n\t\t\t.append('g')\n\t\t\t.attr('transform', `translate(0,${M.top + innerH})`)\n\t\t\t.call(\n\t\t\t\taxisBottom(x)\n\t\t\t\t\t.tickValues(xs)\n\t\t\t\t\t.tickFormat(((_d: any, i: number) => points[i]?.label ?? '') as any) as any\n\t\t\t)\n\t\tsvg\n\t\t\t.append('g')\n\t\t\t.attr('transform', `translate(${M.left},0)`)\n\t\t\t.call(axisLeft(y).ticks(3) as any)\n\n\t\t// axis labels: x = age (ticks are the ages), y = relative abundance (standardized log2FC-z)\n\t\tsvg\n\t\t\t.append('text')\n\t\t\t.attr('x', M.left + innerW / 2)\n\t\t\t.attr('y', H - 3)\n\t\t\t.attr('text-anchor', 'middle')\n\t\t\t.style('font-size', '9px')\n\t\t\t.style('fill', '#555')\n\t\t\t.text('age')\n\t\tsvg\n\t\t\t.append('text')\n\t\t\t.attr('transform', `translate(9,${M.top + innerH / 2}) rotate(-90)`)\n\t\t\t.attr('text-anchor', 'middle')\n\t\t\t.style('font-size', '9px')\n\t\t\t.style('fill', '#555')\n\t\t\t.text('relative abundance')\n\n\t\tconst pathOf = (vec: number[]) => vec.map((v, i) => `${i ? 'L' : 'M'}${x(points[i].value)},${y(v)}`).join(' ')\n\n\t\t// faint individual member trajectories\n\t\tfor (const ln of lines)\n\t\t\tsvg\n\t\t\t\t.append('path')\n\t\t\t\t.attr('d', pathOf(ln))\n\t\t\t\t.attr('fill', 'none')\n\t\t\t\t.attr('stroke', '#888')\n\t\t\t\t.attr('stroke-width', 0.5)\n\t\t\t\t.attr('stroke-opacity', 0.22)\n\t\t// thick black eigengene trend\n\t\tif (eigengene.length)\n\t\t\tsvg\n\t\t\t\t.append('path')\n\t\t\t\t.attr('d', pathOf(eigengene))\n\t\t\t\t.attr('fill', 'none')\n\t\t\t\t.attr('stroke', '#000')\n\t\t\t\t.attr('stroke-width', 2.5)\n\t}\n\n\t/** shared-vs-specific DAP overlap: an UpSet plot per direction (only offered for \u22653 cohorts).\n\t * Each protein falls in exactly one combination \u2014 the set of cohorts where it's a DAP in that\n\t * direction (|z| \u2265 zThresh, FDR \u2264 fdrThresh). Single-cohort groups are cohort-specific. */\n\trenderOverlap(overlap: any) {\n\t\tif (!overlap || !Array.isArray(overlap.up) || !Array.isArray(overlap.down)) {\n\t\t\tthis.dom.body.append('div').style('padding', '12px').style('color', '#a00').text('Overlap unavailable.')\n\t\t\treturn\n\t\t}\n\t\tconst labels = this.cohorts.map(c => this.cohortLabel(c))\n\t\tconst wrap = this.dom.body.append('div')\n\n\t\t// plots on the left, DAP-cutoff controls on the right\n\t\tconst row = wrap.append('div').style('display', 'flex').style('gap', '24px').style('align-items', 'flex-start')\n\t\tconst left = row.append('div')\n\t\tconst panel = row.append('div').style('font-size', '0.85em').style('min-width', '150px')\n\n\t\t// DAP-cutoff controls (shared with the other views) \u2014 changing refetches\n\t\tpanel.append('div').style('font-weight', '600').style('margin-bottom', '3px').text('DAP cutoffs')\n\t\tconst numInput = (label: string, value: number, step: number, title: string, onSet: (v: number) => void) => {\n\t\t\tconst l = panel.append('div').style('margin-bottom', '3px').attr('title', title)\n\t\t\tl.append('span').style('display', 'inline-block').style('width', '48px').html(label)\n\t\t\tl.append('input')\n\t\t\t\t.attr('type', 'number')\n\t\t\t\t.attr('step', step)\n\t\t\t\t.attr('min', 0)\n\t\t\t\t.property('value', value)\n\t\t\t\t.style('width', '64px')\n\t\t\t\t.on('change', (e: any) => {\n\t\t\t\t\tconst v = Number(e.target.value)\n\t\t\t\t\tif (Number.isFinite(v) && v >= 0) {\n\t\t\t\t\t\tonSet(v)\n\t\t\t\t\t\tthis.reload()\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t}\n\t\tnumInput('|z| \u2265', this.zThresh, 0.5, 'DAP fold-change cutoff', v => (this.zThresh = v))\n\t\tnumInput('FDR \u2264', this.fdrThresh, 0.01, 'DAP significance cutoff (FDR)', v => (this.fdrThresh = v))\n\n\t\tconst diagrams = left.append('div')\n\n\t\t// gene-list panel (right side, under the cutoffs), filled on click; first 10 shown, rest behind \"more\"\n\t\tconst genePanel = panel.append('div').style('margin-top', '16px')\n\t\tconst cohortPhrase = (idxs: number[]) => {\n\t\t\tconst names = idxs.map(i => labels[i])\n\t\t\tif (names.length <= 1) return names[0] || '\u2014'\n\t\t\tif (names.length === 2) return `${names[0]} and ${names[1]}`\n\t\t\treturn `${names.slice(0, -1).join(', ')}, and ${names[names.length - 1]}`\n\t\t}\n\t\tconst showGenes = (dir: string, combo: { cohorts: number[]; genes: string[] }) => {\n\t\t\tconst cnt = combo.genes.length\n\t\t\tthis.renderGeneList(\n\t\t\t\tgenePanel,\n\t\t\t\t`${cnt.toLocaleString()} protein${cnt === 1 ? '' : 's'} ${dir.toLowerCase()} in ${cohortPhrase(\n\t\t\t\t\tcombo.cohorts\n\t\t\t\t)}:`,\n\t\t\t\tcombo.genes\n\t\t\t)\n\t\t}\n\n\t\t// one UpSet per direction, stacked (up above down)\n\t\tfor (const [dir, combos] of [\n\t\t\t['Up-regulated', overlap.up],\n\t\t\t['Down-regulated', overlap.down]\n\t\t] as [string, any[]][]) {\n\t\t\tconst box = diagrams.append('div').style('margin-bottom', '24px')\n\t\t\tbox\n\t\t\t\t.append('div')\n\t\t\t\t.style('font-weight', '600')\n\t\t\t\t.style('margin-bottom', '4px')\n\t\t\t\t.text(`${dir} (${totalGenes(combos).toLocaleString()})`)\n\t\t\tthis.drawUpSet(box, combos, labels, dir, showGenes)\n\t\t}\n\t}\n\n\t/** UpSet plot: intersection-size bars over a cohort-membership dot matrix. Bars clickable. */\n\tdrawUpSet(\n\t\tcontainer: any,\n\t\tcombos: { cohorts: number[]; genes: string[] }[],\n\t\tlabels: string[],\n\t\tdir: string,\n\t\tshowGenes: (dir: string, combo: { cohorts: number[]; genes: string[] }) => void\n\t) {\n\t\tconst n = labels.length\n\t\tconst MAX_COLS = 22\n\t\tconst shown = combos.slice(0, MAX_COLS)\n\t\tif (!shown.length) {\n\t\t\tcontainer.append('div').style('color', '#a00').style('padding', '8px 0').text('No DAPs at these cutoffs.')\n\t\t\treturn\n\t\t}\n\t\tconst maxCount = Math.max(1, ...shown.map(c => c.genes.length))\n\t\tconst leftW = 150,\n\t\t\ttopPad = 14,\n\t\t\tbarMaxH = 110,\n\t\t\tcolW = 26,\n\t\t\trowH = 15,\n\t\t\tdotR = 4.5\n\t\tconst matrixTop = topPad + barMaxH + 14\n\t\tconst W = leftW + shown.length * colW + 12\n\t\tconst H = matrixTop + n * rowH + 8\n\t\tconst svg = container.append('svg').attr('width', W).attr('height', H).attr('font-family', 'sans-serif')\n\t\tconst barColor = dir[0] === 'U' ? UP : DOWN\n\n\t\t// per-cohort total DAP count (set size), over ALL combos (not just the shown ones)\n\t\tconst totals = labels.map((_, i) => combos.reduce((s, c) => s + (c.cohorts.includes(i) ? c.genes.length : 0), 0))\n\t\tconst yBar = scaleLinear().domain([0, maxCount]).range([0, barMaxH])\n\n\t\t// cohort rows (left labels + zebra background)\n\t\tfor (let i = 0; i < n; i++) {\n\t\t\tsvg\n\t\t\t\t.append('rect')\n\t\t\t\t.attr('x', leftW - 6)\n\t\t\t\t.attr('y', matrixTop + i * rowH)\n\t\t\t\t.attr('width', shown.length * colW + 6)\n\t\t\t\t.attr('height', rowH)\n\t\t\t\t.attr('fill', i % 2 ? '#f4f4f4' : '#fff')\n\t\t\tsvg\n\t\t\t\t.append('text')\n\t\t\t\t.attr('x', leftW - 10)\n\t\t\t\t.attr('y', matrixTop + i * rowH + rowH / 2)\n\t\t\t\t.attr('text-anchor', 'end')\n\t\t\t\t.attr('dominant-baseline', 'central')\n\t\t\t\t.style('font-size', '11px')\n\t\t\t\t.text(`${labels[i]} (${totals[i].toLocaleString()})`)\n\t\t}\n\n\t\tshown.forEach((combo, j) => {\n\t\t\tconst x = leftW + j * colW + colW / 2\n\t\t\tconst cnt = combo.genes.length\n\t\t\tconst barH = yBar(cnt)\n\t\t\tconst members = new Set(combo.cohorts)\n\t\t\tconst tip = `${combo.cohorts.map(i => labels[i]).join(' \u2229 ')}: ${cnt} proteins \u2014 click to list`\n\n\t\t\t// intersection bar\n\t\t\tsvg\n\t\t\t\t.append('rect')\n\t\t\t\t.attr('x', x - colW * 0.34)\n\t\t\t\t.attr('y', topPad + barMaxH - barH)\n\t\t\t\t.attr('width', colW * 0.68)\n\t\t\t\t.attr('height', Math.max(1, barH))\n\t\t\t\t.attr('fill', barColor)\n\t\t\t\t.attr('fill-opacity', 0.85)\n\t\t\tsvg\n\t\t\t\t.append('text')\n\t\t\t\t.attr('x', x)\n\t\t\t\t.attr('y', topPad + barMaxH - barH - 3)\n\t\t\t\t.attr('text-anchor', 'middle')\n\t\t\t\t.style('font-size', '9px')\n\t\t\t\t.style('fill', '#333')\n\t\t\t\t.text(cnt.toLocaleString())\n\n\t\t\t// membership connector line\n\t\t\tif (combo.cohorts.length > 1)\n\t\t\t\tsvg\n\t\t\t\t\t.append('line')\n\t\t\t\t\t.attr('x1', x)\n\t\t\t\t\t.attr('x2', x)\n\t\t\t\t\t.attr('y1', matrixTop + Math.min(...combo.cohorts) * rowH + rowH / 2)\n\t\t\t\t\t.attr('y2', matrixTop + Math.max(...combo.cohorts) * rowH + rowH / 2)\n\t\t\t\t\t.attr('stroke', '#444')\n\t\t\t\t\t.attr('stroke-width', 1.5)\n\t\t\tfor (let i = 0; i < n; i++)\n\t\t\t\tsvg\n\t\t\t\t\t.append('circle')\n\t\t\t\t\t.attr('cx', x)\n\t\t\t\t\t.attr('cy', matrixTop + i * rowH + rowH / 2)\n\t\t\t\t\t.attr('r', dotR)\n\t\t\t\t\t.attr('fill', members.has(i) ? '#444' : '#d0d0d0')\n\n\t\t\t// transparent full-column hit area (small bars are otherwise hard to click)\n\t\t\tconst hit = svg\n\t\t\t\t.append('rect')\n\t\t\t\t.attr('x', x - colW / 2)\n\t\t\t\t.attr('y', topPad)\n\t\t\t\t.attr('width', colW)\n\t\t\t\t.attr('height', H - topPad)\n\t\t\t\t.attr('fill', 'transparent')\n\t\t\t\t.style('cursor', 'pointer')\n\t\t\t\t.on('click', () => showGenes(dir, combo))\n\t\t\thit.append('title').text(tip)\n\t\t})\n\n\t\tif (combos.length > shown.length)\n\t\t\tcontainer\n\t\t\t\t.append('div')\n\t\t\t\t.style('font-size', '0.8em')\n\t\t\t\t.style('color', '#999')\n\t\t\t\t.style('margin-top', '2px')\n\t\t\t\t.text(`Showing the ${shown.length} largest of ${combos.length.toLocaleString()} intersections.`)\n\t}\n}\n\ntype Hclust = {\n\tmerge: { n1: number; n2: number }[]\n\theight: { height: number }[]\n\torder: { name: string }[]\n\tinputOrder: string[]\n}\n\n/** draw an hclust dendrogram into <g>. orient 'left' \u2192 leaves along y (row dendrogram, branches\n * grow leftward); orient 'top' \u2192 leaves along x (column dendrogram, branches grow upward).\n * leafSize = px per leaf (cell height/width); depth = px available for the height axis. */\nfunction drawDendrogram(g: any, dend: Hclust, leafSize: number, depth: number, orient: 'left' | 'top') {\n\tconst heights = dend.height.map(h => h.height)\n\tconst maxH = Math.max(...heights, 1e-9)\n\tconst toDepth = scaleLinear().domain([0, maxH]).range([depth, 0])\n\tconst leafPos = new Map<string, number>()\n\tdend.order.forEach((leaf, i) => leafPos.set(leaf.name, i * leafSize + leafSize / 2))\n\tconst merged = new Map<number, { leaf: number; depth: number }>()\n\tconst pos = (n: number) =>\n\t\tn < 0 ? { leaf: leafPos.get(dend.inputOrder[-n - 1]) ?? 0, depth } : merged.get(n) || { leaf: 0, depth }\n\tconst seg = (l1: number, d1: number, l2: number, d2: number) => {\n\t\tconst [x1, y1, x2, y2] = orient === 'left' ? [d1, l1, d2, l2] : [l1, d1, l2, d2]\n\t\tg.append('line')\n\t\t\t.attr('x1', x1)\n\t\t\t.attr('y1', y1)\n\t\t\t.attr('x2', x2)\n\t\t\t.attr('y2', y2)\n\t\t\t.attr('stroke', '#555')\n\t\t\t.attr('stroke-width', 1)\n\t}\n\tfor (let i = 0; i < dend.merge.length; i++) {\n\t\tconst { n1, n2 } = dend.merge[i]\n\t\tconst a = pos(n1),\n\t\t\tb = pos(n2)\n\t\tconst d = toDepth(heights[i])\n\t\tseg(a.leaf, a.depth, a.leaf, d)\n\t\tseg(b.leaf, b.depth, b.leaf, d)\n\t\tseg(a.leaf, d, b.leaf, d)\n\t\tmerged.set(i + 1, { leaf: (a.leaf + b.leaf) / 2, depth: d })\n\t}\n}\n\n/** average-linkage agglomerative clustering \u2192 leaf order (distance = 1 \u2212 correlation). n is small. */\nfunction leafOrder(corr: number[][]): number[] {\n\tconst n = corr.length\n\tconst nodes: { members: number[] }[] = []\n\tfor (let i = 0; i < n; i++) nodes.push({ members: [i] })\n\tlet active = nodes.map((_, i) => i)\n\tconst d0 = (i: number, j: number) => 1 - corr[i][j]\n\tconst avgDist = (a: number, b: number) => {\n\t\tlet s = 0\n\t\tfor (const x of nodes[a].members) for (const y of nodes[b].members) s += d0(x, y)\n\t\treturn s / (nodes[a].members.length * nodes[b].members.length)\n\t}\n\twhile (active.length > 1) {\n\t\tlet bi = 0,\n\t\t\tbj = 1,\n\t\t\tbd = Infinity\n\t\tfor (let a = 0; a < active.length; a++)\n\t\t\tfor (let b = a + 1; b < active.length; b++) {\n\t\t\t\tconst d = avgDist(active[a], active[b])\n\t\t\t\tif (d < bd) {\n\t\t\t\t\tbd = d\n\t\t\t\t\tbi = a\n\t\t\t\t\tbj = b\n\t\t\t\t}\n\t\t\t}\n\t\tconst A = active[bi],\n\t\t\tB = active[bj]\n\t\tnodes.push({ members: [...nodes[A].members, ...nodes[B].members] })\n\t\tactive = active.filter((_, k) => k !== bi && k !== bj)\n\t\tactive.push(nodes.length - 1)\n\t}\n\treturn nodes[active[0]].members\n}\n\n/** total DAP proteins across all combinations of one direction (each protein is in exactly one) */\nfunction totalGenes(combos: { genes: string[] }[]): number {\n\treturn combos.reduce((s, c) => s + c.genes.length, 0)\n}\n\nexport const componentInit = getCompInit(ProteomeCohortCompare)\n\nexport async function getPlotConfig(opts: any) {\n\tconst config = structuredClone(defaultConfig)\n\tif (!opts.cohorts || opts.cohorts.length < 2) throw new Error('proteomeCohortCompare requires \u22652 cohorts')\n\treturn copyMerge(config, opts)\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
SearchHandler,
|
|
3
|
-
createPseudobulkTerm
|
|
4
|
-
} from "./chunk-GN2IIC6U.js";
|
|
5
|
-
import {
|
|
6
|
-
require_tape
|
|
7
|
-
} from "./chunk-PJYCTAMC.js";
|
|
8
|
-
import "./chunk-J7JDCNLU.js";
|
|
9
|
-
import "./chunk-HJ6L54YS.js";
|
|
10
|
-
import "./chunk-KV4W2ACA.js";
|
|
11
|
-
import "./chunk-N635HDJ4.js";
|
|
12
|
-
import "./chunk-T46FA72N.js";
|
|
13
|
-
import "./chunk-ELJX3QIQ.js";
|
|
14
|
-
import "./chunk-EEB5VE2A.js";
|
|
15
|
-
import "./chunk-6RRZRISL.js";
|
|
16
|
-
import "./chunk-2KM4PRQM.js";
|
|
17
|
-
import "./chunk-JYOIO5UY.js";
|
|
18
|
-
import "./chunk-YN5NY3D3.js";
|
|
19
|
-
import "./chunk-RN4BOWRH.js";
|
|
20
|
-
import "./chunk-IK2BO37K.js";
|
|
21
|
-
import "./chunk-WINIL2KN.js";
|
|
22
|
-
import "./chunk-PF4DSFDR.js";
|
|
23
|
-
import "./chunk-D6G64XPJ.js";
|
|
24
|
-
import "./chunk-W5J3LTYS.js";
|
|
25
|
-
import "./chunk-YLJOZP4P.js";
|
|
26
|
-
import "./chunk-HDTFYTEL.js";
|
|
27
|
-
import "./chunk-FXQXCOII.js";
|
|
28
|
-
import "./chunk-TLT4YIG3.js";
|
|
29
|
-
import "./chunk-5R63Q5KH.js";
|
|
30
|
-
import "./chunk-I6Y4O3RR.js";
|
|
31
|
-
import "./chunk-Q5RDQNIT.js";
|
|
32
|
-
import "./chunk-DQC5FFGV.js";
|
|
33
|
-
import {
|
|
34
|
-
__toESM
|
|
35
|
-
} from "./chunk-HS5PO5ZQ.js";
|
|
36
|
-
|
|
37
|
-
// termdb/handlers/test/pseudbulk.unit.spec.ts
|
|
38
|
-
var import_tape = __toESM(require_tape(), 1);
|
|
39
|
-
(0, import_tape.default)("\n", function(test) {
|
|
40
|
-
test.comment("-***- termdb/handlers/pseudobulk -***-");
|
|
41
|
-
test.end();
|
|
42
|
-
});
|
|
43
|
-
(0, import_tape.default)("buildRenderingDataMap() groups terms by assay and memberId", function(test) {
|
|
44
|
-
const handler = new SearchHandler();
|
|
45
|
-
const terms = [
|
|
46
|
-
{ id: "t1", name: "A", assay: "geneExpression", memberId: "CD4" },
|
|
47
|
-
{ id: "t2", name: "B", assay: "geneExpression", memberId: "CD4" },
|
|
48
|
-
{ id: "t3", name: "C", assay: "geneExpression", memberId: "CD8" },
|
|
49
|
-
{ id: "t4", name: "D", assay: "cellType", memberId: "Myeloid" }
|
|
50
|
-
];
|
|
51
|
-
const map = handler.buildRenderingDataMap(terms);
|
|
52
|
-
test.equal(map.size, 2, "creates one top-level key per assay");
|
|
53
|
-
test.ok(map.has("geneExpression"), "contains geneExpression assay");
|
|
54
|
-
test.ok(map.has("cellType"), "contains cellType assay");
|
|
55
|
-
const geneExpressionMap = map.get("geneExpression");
|
|
56
|
-
test.equal(geneExpressionMap.size, 2, "creates one nested key per memberId within assay");
|
|
57
|
-
test.equal(geneExpressionMap.get("CD4").length, 2, "groups multiple terms under same assay/memberId");
|
|
58
|
-
test.equal(geneExpressionMap.get("CD8")[0].id, "t3", "stores the correct term under another memberId");
|
|
59
|
-
const cellTypeMap = map.get("cellType");
|
|
60
|
-
test.equal(cellTypeMap.size, 1, "cellType assay has one memberId");
|
|
61
|
-
test.equal(cellTypeMap.get("Myeloid")[0].id, "t4", "stores term under expected cellType memberId");
|
|
62
|
-
test.end();
|
|
63
|
-
});
|
|
64
|
-
(0, import_tape.default)("buildRenderingDataMap() returns an empty map for empty input", function(test) {
|
|
65
|
-
const handler = new SearchHandler();
|
|
66
|
-
const map = handler.buildRenderingDataMap([]);
|
|
67
|
-
test.equal(map.size, 0, "empty input produces empty map");
|
|
68
|
-
test.end();
|
|
69
|
-
});
|
|
70
|
-
(0, import_tape.default)("createPseudobulkTerm() creates one term for one cell type and gene", function(test) {
|
|
71
|
-
const selectedTerm = {
|
|
72
|
-
id: "blast",
|
|
73
|
-
name: "Blast",
|
|
74
|
-
type: "pseudobulk",
|
|
75
|
-
assay: "geneExpression",
|
|
76
|
-
memberId: "Cell Type"
|
|
77
|
-
};
|
|
78
|
-
const term = createPseudobulkTerm(selectedTerm, "TP53");
|
|
79
|
-
test.equal(term.id, "geneExpression blast TP53", "sets a unique term.id");
|
|
80
|
-
test.equal(term.category, "blast", "sets term.category");
|
|
81
|
-
test.equal(term.gene, "TP53", "sets term.gene");
|
|
82
|
-
test.equal(term.name, "geneExpression blast TP53", "sets term.name");
|
|
83
|
-
test.notOk("genes" in term, "does not add the obsolete genes array");
|
|
84
|
-
test.end();
|
|
85
|
-
});
|
|
86
|
-
//# sourceMappingURL=pseudbulk.unit.spec-Q4YTIPH7.js.map
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
SearchHandler,
|
|
3
|
-
createPseudobulkTerm
|
|
4
|
-
} from "./chunk-GN2IIC6U.js";
|
|
5
|
-
import "./chunk-J7JDCNLU.js";
|
|
6
|
-
import "./chunk-HJ6L54YS.js";
|
|
7
|
-
import "./chunk-KV4W2ACA.js";
|
|
8
|
-
import "./chunk-N635HDJ4.js";
|
|
9
|
-
import "./chunk-T46FA72N.js";
|
|
10
|
-
import "./chunk-ELJX3QIQ.js";
|
|
11
|
-
import "./chunk-EEB5VE2A.js";
|
|
12
|
-
import "./chunk-6RRZRISL.js";
|
|
13
|
-
import "./chunk-2KM4PRQM.js";
|
|
14
|
-
import "./chunk-JYOIO5UY.js";
|
|
15
|
-
import "./chunk-YN5NY3D3.js";
|
|
16
|
-
import "./chunk-RN4BOWRH.js";
|
|
17
|
-
import "./chunk-IK2BO37K.js";
|
|
18
|
-
import "./chunk-WINIL2KN.js";
|
|
19
|
-
import "./chunk-PF4DSFDR.js";
|
|
20
|
-
import "./chunk-D6G64XPJ.js";
|
|
21
|
-
import "./chunk-W5J3LTYS.js";
|
|
22
|
-
import "./chunk-YLJOZP4P.js";
|
|
23
|
-
import "./chunk-HDTFYTEL.js";
|
|
24
|
-
import "./chunk-FXQXCOII.js";
|
|
25
|
-
import "./chunk-TLT4YIG3.js";
|
|
26
|
-
import "./chunk-5R63Q5KH.js";
|
|
27
|
-
import "./chunk-I6Y4O3RR.js";
|
|
28
|
-
import "./chunk-Q5RDQNIT.js";
|
|
29
|
-
import "./chunk-DQC5FFGV.js";
|
|
30
|
-
import "./chunk-HS5PO5ZQ.js";
|
|
31
|
-
export {
|
|
32
|
-
SearchHandler,
|
|
33
|
-
createPseudobulkTerm
|
|
34
|
-
};
|
|
35
|
-
//# sourceMappingURL=pseudobulk-3UIWCCCQ.js.map
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
QualCustomGS,
|
|
3
|
-
QualPredefinedGS,
|
|
4
|
-
QualValues,
|
|
5
|
-
QualitativeBase
|
|
6
|
-
} from "./chunk-J7JDCNLU.js";
|
|
7
|
-
import "./chunk-HJ6L54YS.js";
|
|
8
|
-
import "./chunk-KV4W2ACA.js";
|
|
9
|
-
import "./chunk-N635HDJ4.js";
|
|
10
|
-
import "./chunk-T46FA72N.js";
|
|
11
|
-
import "./chunk-ELJX3QIQ.js";
|
|
12
|
-
import "./chunk-EEB5VE2A.js";
|
|
13
|
-
import "./chunk-6RRZRISL.js";
|
|
14
|
-
import "./chunk-2KM4PRQM.js";
|
|
15
|
-
import "./chunk-JYOIO5UY.js";
|
|
16
|
-
import "./chunk-YN5NY3D3.js";
|
|
17
|
-
import "./chunk-RN4BOWRH.js";
|
|
18
|
-
import "./chunk-IK2BO37K.js";
|
|
19
|
-
import "./chunk-WINIL2KN.js";
|
|
20
|
-
import "./chunk-PF4DSFDR.js";
|
|
21
|
-
import "./chunk-D6G64XPJ.js";
|
|
22
|
-
import "./chunk-W5J3LTYS.js";
|
|
23
|
-
import "./chunk-YLJOZP4P.js";
|
|
24
|
-
import "./chunk-HDTFYTEL.js";
|
|
25
|
-
import "./chunk-FXQXCOII.js";
|
|
26
|
-
import "./chunk-TLT4YIG3.js";
|
|
27
|
-
import "./chunk-5R63Q5KH.js";
|
|
28
|
-
import "./chunk-I6Y4O3RR.js";
|
|
29
|
-
import "./chunk-Q5RDQNIT.js";
|
|
30
|
-
import "./chunk-DQC5FFGV.js";
|
|
31
|
-
import "./chunk-HS5PO5ZQ.js";
|
|
32
|
-
export {
|
|
33
|
-
QualCustomGS,
|
|
34
|
-
QualPredefinedGS,
|
|
35
|
-
QualValues,
|
|
36
|
-
QualitativeBase
|
|
37
|
-
};
|
|
38
|
-
//# sourceMappingURL=qualitative-6TJRXZFV.js.map
|