@sjcrh/proteinpaint-client 2.74.2 → 2.76.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-b2d78c57.js → 2dmaf-74b99126.js} +1 -1
- package/dist/AppHeader-cecb39c2.js +1 -0
- package/dist/{ColorScale-9c76aef3.js → ColorScale-21cab8d2.js} +1 -1
- package/dist/DEanalysis-95bad59a.js +1 -0
- package/dist/Disco-a6e921a0.js +1 -0
- package/dist/Disco.UI-9ad999ed.js +1 -0
- package/dist/{DragControls-586f72db.js → DragControls-e3b6a937.js} +1 -1
- package/dist/{DziViewer-6311327c.js → DziViewer-354a790d.js} +1 -1
- package/dist/FilterRxComp-701a1480.js +1 -0
- package/dist/{FilterStateless-046081c2.js → FilterStateless-54c0b763.js} +1 -1
- package/dist/{HicApp-40e44cba.js → HicApp-d5a946bf.js} +1 -1
- package/dist/{OrbitControls-0cda1772.js → OrbitControls-694652cd.js} +1 -1
- package/dist/WSIViewer-dc7f8eb0.js +1 -0
- package/dist/adSandbox-f438e388.js +1 -0
- package/dist/app-3320ab6f.js +1 -0
- package/dist/app-649f8357.js +1 -0
- package/dist/app-b369b169.js +1 -0
- package/dist/app.js +1 -1
- package/dist/bam-431875ef.js +1 -0
- package/dist/barchart-8277ed43.js +1 -0
- package/dist/barchart.events-da29c90d.js +1 -0
- package/dist/{bars.renderer-5f7a4174.js → bars.renderer-dcfdd59b.js} +1 -1
- package/dist/block-6aedd569.js +1 -0
- package/dist/block.lazyload-87b12654.js +1 -0
- package/dist/block.legend-d3f61ef7.js +1 -0
- package/dist/{block.mds-effc078d.js → block.mds-3ad17dfa.js} +1 -1
- package/dist/{block.mds.cnv-ec861a26.js → block.mds.cnv-857ba868.js} +1 -1
- package/dist/{block.mds.expressionrank-a2ad7c80.js → block.mds.expressionrank-7e3b208c.js} +1 -1
- package/dist/{block.mds.expressionstat-31dc5595.js → block.mds.expressionstat-f2d31c86.js} +1 -1
- package/dist/{block.mds.geneboxplot-3ca857ce.js → block.mds.geneboxplot-f0fbaf12.js} +1 -1
- package/dist/{block.mds.junction-debba938.js → block.mds.junction-7f87f48f.js} +1 -1
- package/dist/{block.mds.svcnv-8dc5abdf.js → block.mds.svcnv-ac035c12.js} +1 -1
- package/dist/{block.mds.svcnv.share-81e62600.js → block.mds.svcnv.share-886d9479.js} +1 -1
- package/dist/block.mds2-7852c1ee.js +1 -0
- package/dist/{block.svg-9121e8e7.js → block.svg-9b916fa6.js} +1 -1
- package/dist/{block.tk.aicheck-c1b478e9.js → block.tk.aicheck-6770e333.js} +1 -1
- package/dist/{block.tk.ase-0f6ded48.js → block.tk.ase-ee807e59.js} +1 -1
- package/dist/{block.tk.bam-7cd06aee.js → block.tk.bam-00fba6e8.js} +1 -1
- package/dist/{block.tk.bedgraphdot-3ef8b94e.js → block.tk.bedgraphdot-7fda78e9.js} +1 -1
- package/dist/{block.tk.bigwig.ui-d1248810.js → block.tk.bigwig.ui-cc1a42f3.js} +1 -1
- package/dist/{block.tk.hicstraw-ee731e55.js → block.tk.hicstraw-526470e3.js} +1 -1
- package/dist/{block.tk.junction-4d8cab4d.js → block.tk.junction-b43a4cda.js} +1 -1
- package/dist/{block.tk.junction.textmatrixui-a6430b27.js → block.tk.junction.textmatrixui-a60ed78a.js} +1 -1
- package/dist/{block.tk.ld-8429a18b.js → block.tk.ld-d15bde41.js} +1 -1
- package/dist/{block.tk.menu-3f31f958.js → block.tk.menu-3aeb93c6.js} +1 -1
- package/dist/{block.tk.pgv-07e46705.js → block.tk.pgv-9af2bd64.js} +1 -1
- package/dist/boxplot-e17a17b7.js +1 -0
- package/dist/brainImaging-bf2ceee9.js +1 -0
- package/dist/{brush-c386fe3d.js → brush-aa175142.js} +1 -1
- package/dist/categorical-a52014a1.js +1 -0
- package/dist/condition-c646e357.js +1 -0
- package/dist/controls-287e6efa.js +1 -0
- package/dist/{controls.btns-1cb2bfab.js → controls.btns-79b805dd.js} +1 -1
- package/dist/controls.config-28d6d6a8.js +1 -0
- package/dist/cuminc-9e275854.js +1 -0
- package/dist/{customdata.inputui-cbd712ea.js → customdata.inputui-dc49d94b.js} +1 -1
- package/dist/dataDownload-3a3d4f33.js +1 -0
- package/dist/databrowser.ui-d8d3f8fd.js +1 -0
- package/dist/{density-19266ebf.js → density-a82a8b1c.js} +1 -1
- package/dist/dictionary-c5a19d90.js +1 -0
- package/dist/{drag-0b968811.js → drag-7b30ba17.js} +1 -1
- package/dist/{e2pca-b8752945.js → e2pca-82765817.js} +1 -1
- package/dist/{ep-a86b185a.js → ep-d017ec2f.js} +1 -1
- package/dist/facet-a9b44ef3.js +1 -0
- package/dist/{fusion.parse-244b2b97.js → fusion.parse-d40d0b9d.js} +1 -1
- package/dist/geneExpClustering-34c3f518.js +1 -0
- package/dist/geneExpression-0d1b7244.js +1 -0
- package/dist/{geneExpression-e0430f2e.js → geneExpression-589f485b.js} +1 -1
- package/dist/{geneExpression-387205bf.js → geneExpression-7d14983f.js} +1 -1
- package/dist/geneORA-903a780f.js +1 -0
- package/dist/{geneVariant-7de021b6.js → geneVariant-89601b34.js} +1 -1
- package/dist/geneVariant-92c4e870.js +1 -0
- package/dist/{genefusion.ui-a331de19.js → genefusion.ui-7e22e811.js} +1 -1
- package/dist/{genesearch-ea59f5d4.js → genesearch-a4e19f0d.js} +1 -1
- package/dist/geneset-108a39d2.js +1 -0
- package/dist/genomeBrowser-12f86a36.js +1 -0
- package/dist/genomeBrowser.controls-d5067811.js +1 -0
- package/dist/{groupsetting-20ffef77.js → groupsetting-b4416a96.js} +1 -1
- package/dist/gsea-543dab25.js +1 -0
- package/dist/hierCluster-26e14090.js +1 -0
- package/dist/hierCluster.config-98e82dff.js +1 -0
- package/dist/{hierCluster.interactivity-9b433033.js → hierCluster.interactivity-e56f6542.js} +1 -1
- package/dist/hierCluster.renderers-74a64cf5.js +1 -0
- package/dist/{html.legend-abb5452e.js → html.legend-a3f4ebfe.js} +1 -1
- package/dist/imagePlot-b9eae4ae.js +1 -0
- package/dist/{lasso-55cf4057.js → lasso-f767f634.js} +1 -1
- package/dist/launch.adhoc-abca6af3.js +1 -0
- package/dist/leftlabel.sample-24c2388d.js +1 -0
- package/dist/legacyDataset-e0e201ab.js +1 -0
- package/dist/{log-cf45fcf2.js → log-99af3443.js} +1 -1
- package/dist/{lollipop-c5b6e615.js → lollipop-806f8fa4.js} +1 -1
- package/dist/{maf-7535f1f9.js → maf-b06579e4.js} +1 -1
- package/dist/{maftimeline-1292ab62.js → maftimeline-4840a380.js} +1 -1
- package/dist/matrix-00bb50ff.js +1 -0
- package/dist/matrix.cells-914dd0c6.js +1 -0
- package/dist/{matrix.cluster-168bc96b.js → matrix.cluster-783ceab0.js} +1 -1
- package/dist/matrix.config-6ce74dfe.js +1 -0
- package/dist/matrix.controls-7b2a6f95.js +1 -0
- package/dist/{matrix.data-b1d0febe.js → matrix.data-dac4f1b7.js} +1 -1
- package/dist/{matrix.dom-00defa30.js → matrix.dom-4e10bbe9.js} +1 -1
- package/dist/matrix.groups-b9fca14a.js +1 -0
- package/dist/matrix.interactivity-84169b43.js +1 -0
- package/dist/{matrix.layout-c2345231.js → matrix.layout-dd5a44fd.js} +1 -1
- package/dist/matrix.legend-ac6d45e6.js +1 -0
- package/dist/matrix.renderers-78010275.js +1 -0
- package/dist/matrix.serieses-9b4fd744.js +1 -0
- package/dist/matrix.sort-014d798d.js +1 -0
- package/dist/{matrix.sorterUi-a741ba2e.js → matrix.sorterUi-9bf7e6f9.js} +1 -1
- package/dist/{mavb-92136d17.js → mavb-c6be46fc.js} +1 -1
- package/dist/{mds.fimo-c03115b4.js → mds.fimo-bff6a1ed.js} +1 -1
- package/dist/mds.samplescatterplot-9a02b9fb.js +1 -0
- package/dist/{mds.survivalplot-366db380.js → mds.survivalplot-055549f4.js} +1 -1
- package/dist/{metaboliteIntensity-ddb6e480.js → metaboliteIntensity-fac92f8b.js} +1 -1
- package/dist/niceNumLabels-238aabce.js +1 -0
- package/dist/{nodrag-2c046d31.js → nodrag-16ad4b03.js} +1 -1
- package/dist/{notify-44ebc0df.js → notify-224cccbd.js} +1 -1
- package/dist/{numeric-918d4686.js → numeric-b0b17185.js} +1 -1
- package/dist/numeric.binary-1f9e93f2.js +1 -0
- package/dist/numeric.continuous-ebcd0567.js +1 -0
- package/dist/numeric.discrete-7b97044a.js +1 -0
- package/dist/numeric.spline-1be88f3d.js +1 -0
- package/dist/numeric.toggle-7fa2a770.js +1 -0
- package/dist/oncomatrix-351af2a0.js +1 -0
- package/dist/{parseData-e66308cd.js → parseData-21fe9822.js} +1 -1
- package/dist/partjson.esm-b3f1fc21.js +1 -0
- package/dist/{plot.2dvaf-73dbfbd1.js → plot.2dvaf-18a35e4b.js} +1 -1
- package/dist/plot.app-30c4b8e5.js +1 -0
- package/dist/plot.barplot-7c4865a2.js +1 -0
- package/dist/{plot.boxplot-641da058.js → plot.boxplot-fe3046c6.js} +1 -1
- package/dist/plot.brainImaging-2ceb6023.js +1 -0
- package/dist/plot.disco-6011f87f.js +1 -0
- package/dist/{plot.dzi-41ea26e5.js → plot.dzi-6728a7c8.js} +1 -1
- package/dist/plot.ssgq-5581dc56.js +1 -0
- package/dist/{plot.vaf2cov-80e58833.js → plot.vaf2cov-b2284c64.js} +1 -1
- package/dist/{plot.wsi-51cc48ef.js → plot.wsi-9a9d4034.js} +1 -1
- package/dist/profileBarchart-0476f1f8.js +1 -0
- package/dist/profileHome-32eb9b50.js +1 -0
- package/dist/profilePlot-c7e099e8.js +1 -0
- package/dist/profilePolar-6b981e63.js +1 -0
- package/dist/profileRadar-bca1cc03.js +1 -0
- package/dist/profileRadarFacility-bbb1ecd8.js +1 -0
- package/dist/profileSummary-b114204f.js +1 -0
- package/dist/recover-49e09de0.js +1 -0
- package/dist/regression.inputs-a761f40d.js +1 -0
- package/dist/regression.inputs.values.table-5929d25a.js +1 -0
- package/dist/regression.results-69bc42d0.js +1 -0
- package/dist/{renderPvalueTable-895a72c2.js → renderPvalueTable-dc5d15f2.js} +1 -1
- package/dist/sampleScatter-2d0ed680.js +1 -0
- package/dist/{sampleScatter.rendererThree-5e686004.js → sampleScatter.rendererThree-0b12ac61.js} +2 -2
- package/dist/sampleView-484ab133.js +1 -0
- package/dist/samplelst-689796e6.js +1 -0
- package/dist/{samplematrix-2a1d7d82.js → samplematrix-2b137a05.js} +1 -1
- package/dist/scatter-205e013f.js +1 -0
- package/dist/{select2Terms-b4fffc50.js → select2Terms-b21e184a.js} +1 -1
- package/dist/{selectGenomeWithTklst-acf7e568.js → selectGenomeWithTklst-466995b4.js} +1 -1
- package/dist/singleCellCellType-5db730bb.js +1 -0
- package/dist/{singleCellGeneExpression-6de17162.js → singleCellGeneExpression-7147a2d0.js} +1 -1
- package/dist/singleCellPlot-73b2738f.js +1 -0
- package/dist/{singlecell-f76c856a.js → singlecell-24409b72.js} +1 -1
- package/dist/singlecell-bca774ed.js +1 -0
- package/dist/{snp-9590a1b4.js → snp-37d06246.js} +1 -1
- package/dist/snp-a8388ce4.js +1 -0
- package/dist/snplocus-7a1ea8c9.js +1 -0
- package/dist/{snplst-007a1926.js → snplst-6865d7c7.js} +1 -1
- package/dist/{spliceevent.a53ss.diagram-63dfef69.js → spliceevent.a53ss.diagram-e2eab72b.js} +1 -1
- package/dist/{spliceevent.exonskip.diagram-76fa9af8.js → spliceevent.exonskip.diagram-4d5df3a1.js} +1 -1
- package/dist/spliceevent.exonskip.getdefault-a94aad6e.js +1 -0
- package/dist/{spliceevent.noeventdiagram-64a099e0.js → spliceevent.noeventdiagram-ea97b0fb.js} +1 -1
- package/dist/{spliceevent.phrase-770c8cac.js → spliceevent.phrase-c5832470.js} +1 -1
- package/dist/{stattable-f1189f0f.js → stattable-7c5ecc2f.js} +1 -1
- package/dist/{style.gdc-89cfdb0f.js → style.gdc-131f3c77.js} +1 -1
- package/dist/summary-5ec455d3.js +1 -0
- package/dist/{sunburst-d5379952.js → sunburst-533902a7.js} +1 -1
- package/dist/survival-92250664.js +1 -0
- package/dist/survival-e16e068f.js +1 -0
- package/dist/{svg.download-86850940.js → svg.download-35926549.js} +1 -1
- package/dist/{svg.legend-a94b0697.js → svg.legend-8d490df2.js} +1 -1
- package/dist/{svgraph-c57b9ae3.js → svgraph-6fac8cbc.js} +1 -1
- package/dist/{svmr-cf6f1b27.js → svmr-d07ff695.js} +1 -1
- package/dist/table-29d5a973.js +1 -0
- package/dist/table-ad744310.js +1 -0
- package/dist/termInfo-bf99a37e.js +1 -0
- package/dist/{termdb.bins-9faa5170.js → termdb.bins-8b656cc3.js} +1 -1
- package/dist/termsetting-33ea66f1.js +1 -0
- package/dist/tk-071a7550.js +1 -0
- package/dist/{toggleButtons-002aeda1.js → toggleButtons-dbdbad01.js} +1 -1
- package/dist/tp.ui-9c2e9fc5.js +1 -0
- package/dist/tslib.es6-c3c2d88f.js +1 -0
- package/dist/tvs.density-f6128793.js +1 -0
- package/dist/{tvs.geneVariant-3a65ad94.js → tvs.geneVariant-ca4bdbb1.js} +1 -1
- package/dist/tvs.numeric-0260a825.js +1 -0
- package/dist/{tvs.samplelst-1eeb586b.js → tvs.samplelst-cb71b3bf.js} +1 -1
- package/dist/{uiUtils-1336bad7.js → uiUtils-f1bd2bcc.js} +1 -1
- package/dist/{variantBrowser-f0c812c1.js → variantBrowser-7c540224.js} +1 -1
- package/dist/{vcf-c4a23924.js → vcf-5cc55588.js} +1 -1
- package/dist/violin-2ba509eb.js +1 -0
- package/dist/violin.interactivity-4da6d7a9.js +1 -0
- package/dist/{violin.renderer-dafd89fa.js → violin.renderer-ce024265.js} +1 -1
- package/dist/{violinRenderer-8215f40d.js → violinRenderer-f7c96a60.js} +1 -1
- package/dist/{viridis-ffd14c4d.js → viridis-01ab20c5.js} +1 -1
- package/dist/{y-dd197cc9.js → y-67939f83.js} +1 -1
- package/dist/{zoom-9c63e74c.js → zoom-25dce8b9.js} +1 -1
- package/package.json +6 -4
- package/dist/AppHeader-a2a7e518.js +0 -1
- package/dist/DEanalysis-a6b50e49.js +0 -1
- package/dist/Disco-1c71b7dd.js +0 -1
- package/dist/Disco.UI-4c16ee50.js +0 -1
- package/dist/FilterRxComp-242f4615.js +0 -1
- package/dist/WSIViewer-d90032d7.js +0 -1
- package/dist/adSandbox-3528c372.js +0 -1
- package/dist/app-07dee349.js +0 -1
- package/dist/app-a8c4854a.js +0 -1
- package/dist/app-ade9c62a.js +0 -1
- package/dist/bam-92483a98.js +0 -1
- package/dist/barchart-3e69d094.js +0 -1
- package/dist/barchart.events-9b11d97e.js +0 -1
- package/dist/block-dcb130fb.js +0 -1
- package/dist/block.lazyload-9f031cac.js +0 -1
- package/dist/block.legend-b2987cd9.js +0 -1
- package/dist/block.mds2-de6e0986.js +0 -1
- package/dist/boxplot-1178fffc.js +0 -1
- package/dist/brainImaging-98ed7aa2.js +0 -1
- package/dist/categorical-26528ce8.js +0 -1
- package/dist/condition-b0d74550.js +0 -1
- package/dist/controls-0bacec22.js +0 -1
- package/dist/controls.config-0ccc9d79.js +0 -1
- package/dist/controls.divide-a9fe9466.js +0 -1
- package/dist/controls.overlay-fe20d41d.js +0 -1
- package/dist/controls.term1-faa2efcf.js +0 -1
- package/dist/cuminc-7e2cac2d.js +0 -1
- package/dist/dataDownload-ade8d840.js +0 -1
- package/dist/databrowser.ui-716f0519.js +0 -1
- package/dist/dictionary-3f83ce63.js +0 -1
- package/dist/facet-6850cfed.js +0 -1
- package/dist/geneExpClustering-7fd3c87e.js +0 -1
- package/dist/geneExpression-6462537d.js +0 -1
- package/dist/geneORA-7eb818c4.js +0 -1
- package/dist/geneVariant-b58e924a.js +0 -1
- package/dist/geneset-9f69ad3f.js +0 -1
- package/dist/genomeBrowser-1b2b83f7.js +0 -1
- package/dist/genomeBrowser.controls-cd8ddeb1.js +0 -1
- package/dist/gsea-36376589.js +0 -1
- package/dist/hierCluster-f1e30c19.js +0 -1
- package/dist/hierCluster.config-da3510b1.js +0 -1
- package/dist/hierCluster.renderers-610d8860.js +0 -1
- package/dist/imagePlot-7089bdff.js +0 -1
- package/dist/launch.adhoc-d229fd55.js +0 -1
- package/dist/leftlabel.sample-a919168c.js +0 -1
- package/dist/legacyDataset-1cbcb67d.js +0 -1
- package/dist/matrix-0614794d.js +0 -1
- package/dist/matrix.cells-819d4991.js +0 -1
- package/dist/matrix.config-c54ca273.js +0 -1
- package/dist/matrix.controls-5eca7822.js +0 -1
- package/dist/matrix.groups-4660dd70.js +0 -1
- package/dist/matrix.interactivity-23d83183.js +0 -1
- package/dist/matrix.legend-2e647224.js +0 -1
- package/dist/matrix.renderers-43445f4f.js +0 -1
- package/dist/matrix.serieses-972fbe5d.js +0 -1
- package/dist/matrix.sort-80d9b788.js +0 -1
- package/dist/mds.samplescatterplot-1623e6d0.js +0 -1
- package/dist/niceNumLabels-6cfc1508.js +0 -1
- package/dist/numeric.binary-80467e8b.js +0 -1
- package/dist/numeric.continuous-69a62a15.js +0 -1
- package/dist/numeric.discrete-86181905.js +0 -1
- package/dist/numeric.spline-1b07fd13.js +0 -1
- package/dist/numeric.toggle-37c4bee8.js +0 -1
- package/dist/oncomatrix-475271da.js +0 -1
- package/dist/plot.app-aa916e0e.js +0 -1
- package/dist/plot.barplot-8b440a2b.js +0 -1
- package/dist/plot.brainImaging-2f796b0c.js +0 -1
- package/dist/plot.disco-43e18d2f.js +0 -1
- package/dist/plot.ssgq-e49cb70b.js +0 -1
- package/dist/profileBarchart-91463ab6.js +0 -1
- package/dist/profileHome-d37a6821.js +0 -1
- package/dist/profilePlot-9ca577cb.js +0 -1
- package/dist/profilePolar-19c7da5b.js +0 -1
- package/dist/profileRadar-8bf094e3.js +0 -1
- package/dist/profileRadarFacility-f9fd8971.js +0 -1
- package/dist/profileSummary-93999c14.js +0 -1
- package/dist/recover-36ada47f.js +0 -1
- package/dist/regression.inputs-cb57ece6.js +0 -1
- package/dist/regression.inputs.values.table-908bb37a.js +0 -1
- package/dist/regression.results-c186a8dc.js +0 -1
- package/dist/roundValue-b0d0517c.js +0 -1
- package/dist/sampleScatter-9d5b3630.js +0 -1
- package/dist/sampleView-2d895023.js +0 -1
- package/dist/samplelst-9f8343ff.js +0 -1
- package/dist/scatter-b4992f64.js +0 -1
- package/dist/singleCellCellType-84a0c2cf.js +0 -1
- package/dist/singleCellPlot-2f2b8619.js +0 -1
- package/dist/singlecell-90567dde.js +0 -1
- package/dist/snp-79ec95ba.js +0 -1
- package/dist/snplocus-cb629be1.js +0 -1
- package/dist/spliceevent.exonskip.getdefault-31d2950c.js +0 -1
- package/dist/summary-b77bef3c.js +0 -1
- package/dist/survival-61ab375a.js +0 -1
- package/dist/survival-80a0ade9.js +0 -1
- package/dist/table-79e3e776.js +0 -1
- package/dist/table-eee91e14.js +0 -1
- package/dist/termInfo-f851b415.js +0 -1
- package/dist/tk-75566002.js +0 -1
- package/dist/tp.ui-02911b56.js +0 -1
- package/dist/tslib.es6-1f85f553.js +0 -1
- package/dist/tvs.density-026fca97.js +0 -1
- package/dist/tvs.numeric-3f3d9919.js +0 -1
- package/dist/violin-1515c3e6.js +0 -1
- package/dist/violin.interactivity-8e2f480d.js +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{initByInput as t}from"./controls.config-28d6d6a8.js";import{d as e,M as a,U as s,ak as n,B as i,z as o,ap as l,at as r,as as p,L as c}from"./app-b369b169.js";import{getSorterUi as d}from"./matrix.sorterUi-9bf7e6f9.js";import{i as m,f as h,T as u,g}from"./termsetting-33ea66f1.js";import{m as y}from"./radiobutton-09bff425.js";import{m as b}from"./checkbox-96437f4d.js";import{G as f}from"./recover-49e09de0.js";import"./tslib.es6-c3c2d88f.js";import"path";import"./FilterRxComp-701a1480.js";import"./table-29d5a973.js";import"./partjson.esm-b3f1fc21.js";import"./termdb.bins-8b656cc3.js";import"./FilterStateless-54c0b763.js";import"./app-3320ab6f.js";import"./termInfo-bf99a37e.js";import"./toggleButtons-dbdbad01.js";import"./genesearch-a4e19f0d.js";import"./rehydrateFilter-12d118cb.js";function x(t){if(!t.holder)throw`zoom requires an opts.holder`;if(typeof t.callback!="function")throw`zoom requires an opts.callback function`;const e={min:1,max:100,value:25,step:10,increment:1,numberInputWidth:"35px",showJumpBtns:false};const a=Object.assign({},e,t.settings||{});t.holder.attr("title",t.title||null).style("vertical-align","top").style("text-align","center").on("mouseenter",(()=>{o.style("display","inline-block").style("overflow","visible")})).on("mouseleave",(()=>{o.style("display","none").style("overflow","hidden")}));const s=t.holder.append("label");s.append("span").text("Zoom");const n=s.append("input").attr("title","Enter a desired zoom level").attr("type","number").attr("min",a.min).attr("max",a.max).attr("step",a.increment).style("min-width",a.numberInputWidth).style("width",t.width||"fit-content").style("margin","3px 5px").property("value",a.value).on("change",(e=>{const a=Number(e.target.value);c.update({value:a});t.callback(a)}));s.append("span").text("unit"in t?t.unit:"%");const i=t.holder.node().getBoundingClientRect();t.holder.style("max-height",i.height+"px").style("max-width",i.width+"px");t.holder.append("br");const o=t.holder.append("div").style("display","none");const l=!t.showJumpBtns?null:t.holder.append("button").attr("title","Zoom in").style("width","25px").html("-").on("click",(()=>{const e=Math.max(a.step*Math.ceil((a.value-a.step)/a.step),a.min);c.update({value:e});t.callback(e)}));const r=o.append("input").attr("title","Slide to desired zoom level").attr("type","range").attr("min",a.min).attr("max",a.max).attr("step",a.increment).style("margin","2px 5px").style("padding",0).style("vertical-align","middle").property("value",a.value).html("-").on("input",(t=>{n.property("value",t.target.value)})).on("change",(e=>{const a=Number(e.target.value);c.update({value:a});t.callback(a)}));const p=!t.showJumpBtns?null:t.holder.append("button").attr("title","Zoom out").style("width","25px").html("+").on("click",(()=>{const e=Math.min(a.step*Math.floor((a.value+a.step)/a.step),a.max);c.update({value:e});t.callback(e)}));o.append("span").style("text-decoration","underline").style("cursor","pointer").style("title","use the default zoom value").text("Reset").on("click",t.reset);const c={update(e={}){const s=t.holder.node().getBoundingClientRect();if(!s.height||!s.width){t.holder.style("max-height","").style("max-width","");const e=t.holder.node().getBoundingClientRect();t.holder.style("max-height",e.height+"px").style("max-width",e.width+"px")}Object.assign(a,e);r.property("value",a.value).attr("min",a.min).attr("max",a.max).attr("step",a.increment);n.property("value",a.value).attr("min",a.min).attr("max",a.max).attr("step",a.increment);l?.property("disabled",a.value<=a.min);p?.property("disabled",a.value>=a.max)}};if(t.debug)c.Inner={settings:a,number:n,slider:r,minusBtn:l,plusBtn:p};return c}function v(t){if(!t.holder)throw`missing svgScroll.opts.holder argument`;const a={height:12,zoomLevel:1,opacity:.3};const s=Object.assign({},a,t);function n(t){g.x=t.clientX;e("body").on("mousemove.sjppSvgScroll",i).on("mouseup.sjppSvgScroll",o)}function i(t){if(!("x"in g))return;const e=t.clientX-g.x;if(g.sliderX+g.sliderWidth+e>s.visibleWidth-1){return}if(g.sliderX+e<0){return}h.attr("x",g.sliderX+e);s.callback(g.dxFactor*e,"move")}function o(t){if(!("x"in g))return;const a=t.clientX-g.x;s.callback(g.dxFactor*Math.min(g.maxDx,Math.max(a,g.minDx)),"up");delete g.x;e("body").on("mousemove.sjppSvgScroll",null).on("mouseup.sjppSvgScroll",null)}function l(t){g.x=t.clientX;const e=t.clientX<u.getBoundingClientRect().x?-1:1;o({clientX:Math.floor(g.x+e*g.arrowDx)})}s.holder.attr("display","none").attr("opacity",s.opacity).on("mouseover",(()=>s.holder.attr("opacity",1))).on("mouseout",(()=>s.holder.attr("opacity",s.opacity)));const r=s.holder.append("rect").style("height",s.height).style("stroke","none").style("fill","#fff").on("click",l);const p=s.holder.append("line").style("stroke","#ccc").style("stroke-width",1).on("click",l);const c=s.holder.append("path").attr("y",-s.height).attr("d",`M0,${s.height/2}L${s.height},0L${s.height},${s.height}Z`).style("stroke","#ccc").style("stroke-width",1).style("fill","#ccc").on("click",(t=>{g.x=t.clientX;o({clientX:Math.round(g.x-g.arrowDx)})}));const d=s.holder.append("path").attr("y",-s.height).style("stroke","#ccc").style("stroke-width",1).style("fill","#ccc").attr("d",`M0,0L${s.height},${s.height/2}L0,${s.height}Z`).on("click",(t=>{g.x=t.clientX;o({clientX:Math.round(g.x+g.arrowDx)})}));const m=s.height-4;const h=s.holder.append("rect").attr("y",2).attr("height",m).attr("stroke","#aaa").attr("stroke-width",1).attr("fill","#ccc").attr("rx",m/2).on("mousedown",n).on("mousemove",i).on("mouseup",o);const u=h.node();const g={};const y={update(t){const e={v:s.visibleWidth,t:s.totalWidth,z:s.zoomCenter};Object.assign(s,t);const a=s.totalWidth;const n=s.visibleWidth;if(a<=n){s.holder.attr("display","none");return}s.holder.attr("transform",`translate(${s.x},${s.y})`).attr("display","");r.attr("width",n);p.attr("x1",0).attr("x2",n).attr("y1",s.height/2).attr("y2",s.height/2);c.attr("transform",`translate(0,0)`);d.attr("transform",`translate(${n-s.height},0)`);if(n!=e.v||a!=e.t){g.sliderWidth=n*n/a;g.dxFactor=(a-n)/(n-g.sliderWidth)}const i=n*(s.zoomCenter/a);g.sliderX=Math.max(0,Math.min(i-g.sliderWidth/2,n-g.sliderWidth-1));h.attr("width",g.sliderWidth).attr("x",g.sliderX);g.maxDx=s.visibleWidth-g.sliderX-g.sliderWidth;g.minDx=-g.sliderX;g.arrowDx=Math.round(.1*s.visibleWidth);delete g.x}};return y}const w=new a({padding:""});class C{constructor(t,e){this.type="matrixControls";this.opts=t;this.parent=t.parent;this.overrides={};this.opts.holder.style("margin","10px 10px 20px 10px").style("white-space","nowrap");const a=this.parent.getState(e);const s=a.config.settings.matrix;if(this.parent.setClusteringBtn)this.parent.setClusteringBtn(this.opts.holder,((t,e)=>this.callback(t,e)));this.setSamplesBtn(s);this.setGenesBtn(s);if(s.addMutationCNVButtons&&this.parent.chartType!=="hierCluster"){this.setMutationBtn();this.setCNVBtn()}this.setVariablesBtn(s);this.setDimensionsBtn(s);this.setLegendBtn(s);this.setDownloadBtn(s);this.setZoomInput();this.setDragToggle({holder:this.opts.holder.append("div").style("display","inline-block"),target:this.parent.dom.seriesesG});this.setSvgScroll(a);this.keyboardNavHandler=async t=>{if(t.target.tagName=="BUTTON")this.keyEventTarget=t.target;if(t.key=="Escape"){this.parent.app.tip.hide()}else if(t.key=="Enter"||t.key=="ArrowDown"){const e=t.target.tagName=="BUTTON"?this.parent.app.tip.d.node().querySelectorAll("input, select"):t.target.querySelectorAll("input, select");for(const t of e){if(t.checkVisibility?.()||!t.checkVisibility&&t.getBoundingClientRect().height){t.focus();return false}}}else if(t.key=="Tab"&&t.shiftKey||t.key=="Backspace"||t.key=="ArrowUp"){this.keyEventTarget.focus();return false}};this.btns=this.opts.holder.selectAll(":scope>button").filter((t=>t&&t.label)).on(`keyup.matrix-${this.parent.id}`,this.keyboardNavHandler)}setSamplesBtn(t){const e=t.controlLabels;const a=this;const s=this.parent;const n=[{label:`Maximum # ${e.Samples}`,title:`Limit the number of displayed ${e.samples}`,type:"number",chartType:"matrix",settingsKey:"maxSample",getDisplayStyle(t){return t.chartType=="hierCluster"?"none":"table-row"}},{label:`Sort ${e.Sample} Groups`,title:`Set how to sort ${e.sample} groups`,type:"radio",chartType:"matrix",settingsKey:"sortSampleGrpsBy",options:[{label:"Predefined or Group Name",value:"name",title:`Sort by group name`},{label:`${e.Sample} Count`,value:"sampleCount",title:`Sort by the number of samples in the group`},{label:`Hits`,value:"hits",title:`Sort by the total number of variants for every ${e.sample} in the group`}],getDisplayStyle(t){return t.divideBy&&!t.hierCluster?"table-row":"none"}},{label:`${e.Sample} Group Label Character Limit`,title:`Truncate the ${e.sample} group label if it exceeds this maximum number of characters`,type:"number",chartType:"matrix",settingsKey:"sampleGrpLabelMaxChars",getDisplayStyle(t){return t.divideBy&&!t.hierCluster?"table-row":"none"}},{label:`${e.Sample} Label Character Limit`,title:`Truncate the ${e.sample} label if it exceeds this maximum number of characters`,type:"number",chartType:"matrix",settingsKey:"collabelmaxchars"},{label:`Group ${e.Samples} By`,title:`Select a variable with discrete values to group ${e.samples}`,type:"term",chartType:"matrix",configKey:"divideBy",vocabApi:this.opts.app.vocabApi,state:{vocab:this.opts.vocab},processInput:async t=>{if(t?.term&&m(t.term)){t.q={...t.q,mode:"discrete"}}if(t)await h(t,this.opts.app.vocabApi);return t},processConfig:t=>{if(this.parent.chartType=="hierCluster"&&t["divideBy"]){t.settings={hierCluster:{yDendrogramHeight:0,clusterSamples:false}}}if(this.parent.config.divideBy)t.legendValueFilter=this.parent.mayRemoveTvsEntry(this.parent.config.divideBy)},getBodyParams:()=>{const t=this.parent.termOrder.filter((t=>t.tw.term.type==="geneVariant")).map((t=>t.tw.term.chr?`${t.tw.term.chr}:${t.tw.term.start}-${t.tw.term.stop}`:t.tw.term.gene||t.tw.term.name));return{currentGeneNames:t}}}];n.push({label:`Sort ${e.Sample} Priority`,title:`Set how to sort ${e.samples}`,type:"custom",init(t){const e=s.config.settings.matrix;if(!a.activeTab)a.activeTab="basic";t.dom.inputTd.style("padding","5px");const n=t.dom.inputTd.append("div").style("margin-bottom","5px");const i=n.append("div").style("display","inline-block").style("padding-right","5px").style("border-right","2px solid black").style("text-decoration",a.activeTab=="basic"?"underline":"").style("cursor","pointer").html("Basic").on("click",(()=>{a.activeTab="basic";i.style("text-decoration","underline");o.style("text-decoration","");l.style("display","");h.style("display","none")}));const o=n.append("div").style("display","inline-block").style("margin-left","5px").style("text-decoration",a.activeTab=="advanced"?"underline":"").style("cursor","pointer").html("Advanced").on("click",(()=>{a.activeTab="advanced";i.style("text-decoration","");o.style("text-decoration","underline");l.style("display","none");h.style("display","")}));const l=t.dom.inputTd.append("div").style("display",a.activeTab=="basic"?"":"none");const r=l.append("div");r.append("span").html("SSM");const{inputs:p}=y({holder:r.append("span"),options:[{label:"by consequence",value:"consequence",checked:e.sortByMutation==="consequence"},{label:"by presence",value:"presence",checked:e.sortByMutation==="presence"}],styles:{display:"inline-block"},callback:t=>{const e=s.config.settings.matrix.sortOptions;const a=e.a;const n=a.sortPriority[0].tiebreakers[1];n.disabled=!t;n.isOrdered=t==="consequence";s.app.dispatch({type:"plot_edit",id:s.id,config:{settings:{matrix:{sortByMutation:t,sortOptions:e}}}})}});p.style("margin","2px 0 0 2px").style("vertical-align","top");const c=l.append("div").style("display",e.showMatrixCNV!="none"&&!e.allMatrixCNVHidden?"block":"none");c.append("span").html("CNV");const m=b({holder:c.append("span"),divstyle:{display:"inline-block"},checked:e.sortByCNV,labeltext:"sort by CNV",callback:()=>{const t=m.property("checked");const e=s.config.settings.matrix.sortOptions;const a=e.a;const n=a.sortPriority[0].tiebreakers[2];n.disabled=!t;n.isOrdered=t;s.app.dispatch({type:"plot_edit",id:s.id,config:{settings:{matrix:{sortByCNV:t,sortOptions:e}}}})}});const h=t.dom.inputTd.append("div").style("display",a.activeTab=="advanced"?"":"none");t.dom.row.on("mouseover",(function(){this.style.backgroundColor="#fff";this.style.textShadow="none"}));if(!a.sorterUi){a.sorterUi=d({controls:this,holder:h,tip:this.parent.app.tip})}else{a.sorterUi.main(this.parent.config.settings.matrix,{holder:h})}return{main:t=>{const e=t.settings.matrix;p.property("checked",(t=>t.value==e.sortByMutation));m.property("checked",e.sortByCNV);c.style("display",e.showMatrixCNV!="none"&&!e.allMatrixCNVHidden?"block":"none")}}}});this.opts.holder.append("button").datum({label:e.Samples||`Samples`,getCount:()=>"sampleCount"in this.overrides?this.overrides.sampleCount:this.parent.sampleOrder?.length||0,rows:n,customInputs:this.updateSamplesControls}).html((t=>t.label)).style("margin","2px 0").on("click",((t,e)=>this.callback(t,e)))}setGenesBtn(t){const e=t.controlLabels;const a=[{label:` Stacked <span style="font-size:.7em;color:#858585;">Show stacked rectangles in the same matrix cell to render variants for the same ${e.sample} and gene</span>`,value:"",title:`Show stacked rectangles in the same matrix cell to render variants for the same ${e.sample} and gene`},{label:` OncoPrint <span style="font-size:.7em;color:#858585;">Show overlapping rectangles in the same matrix cell to render variants for the same ${e.sample} and gene</span>`,value:"oncoprint",title:`Show overlapping rectangles in the same matrix cell to render variants for the same ${e.sample} and gene`}];if(t.addMutationCNVButtons&&this.parent.chartType!=="hierCluster")a.unshift({label:` Single <span style="font-size:.7em;color:#858585;">Show a single rectangle in a matrix cell to render the most severe variant (truncating > indels > missense > synonymous) for the same ${e.sample} and gene</span>`,value:"single",title:`Show a single rectangle in a matrix cell to render the most severe variant (truncating > indels > missense > synonymous) for the same ${e.sample} and gene`});this.opts.holder.append("button").datum({label:"Genes",getCount:()=>this.parent.termOrder?.filter((t=>t.tw.term.type=="geneVariant"||t.tw.term.type==u.GENE_EXPRESSION)).length||0,customInputs:this.appendGeneInputs,rows:[{label:`Display ${e.Sample} Counts for Gene`,title:`Include the ${e.sample} count in the gene label`,type:"radio",chartType:"matrix",settingsKey:"samplecount4gene",options:[{label:"Absolute",value:"abs"},{label:`Percent`,value:"pct"},{label:`None`,value:""}]},{label:"Genomic Alterations Rendering",title:`Set how to indicate a ${e.sample}'s applicable variant types in the same matrix cell`,type:"radio",chartType:"matrix",settingsKey:"cellEncoding",options:a,styles:{padding:"5px 0px",margin:0},labelDisplay:"block",callback:this.parent.geneStyleControlCallback},{label:"Sort Genes",title:"Set how to order the genes as rows",type:"radio",chartType:"matrix",settingsKey:"sortTermsBy",options:[{label:"By Input Data Order",value:"asListed"},{label:`By ${e.sample} Count`,value:"sampleCount"}],styles:{padding:0,"padding-right":"10px",margin:0}}]}).html((t=>t.label)).style("margin","2px 0").on("click",((t,e)=>this.callback(t,e)))}setVariablesBtn(t){t.controlLabels;this.opts.holder.append("button").datum({label:t.controlLabels.Terms||`Variables`,rows:[{label:`Row Group Label Max Length`,title:`Truncate the row group label if it exceeds this maximum number of characters`,type:"number",chartType:"matrix",settingsKey:"termGrpLabelMaxChars"},{label:`Row Label Max Length`,title:`Truncate the row label if it exceeds this maximum number of characters`,type:"number",chartType:"matrix",settingsKey:"rowlabelmaxchars"}],customInputs:this.appendDictInputs}).html((t=>t.label)).style("margin","2px 0").on("click",((t,e)=>this.callback(t,e)))}setDimensionsBtn(t){const e=t.controlLabels;this.opts.holder.append("button").datum({label:"Cell Layout",tables:[{rows:[{label:"Grid",title:"Show grid lines, which creates borders around each matrix cells. "+" Note that grid lines are hidden when the auto-computed width <= 2, or when either the column and row spacing is set to 0.",type:"checkbox",boxLabel:"show",processInput:t=>t===true?"rect":t==="rect",chartType:"matrix",settingsKey:"showGrid",colspan:2,align:"center"},{label:"Outline Color",title:"Set a border color for the whole matrix",type:"color",chartType:"matrix",settingsKey:"outlineStroke",colspan:2,align:"center"},{label:"Beam Color",title:"Set a color for the beam highlighter",type:"color",chartType:"matrix",settingsKey:"beamStroke",colspan:2,align:"center"},{label:"Grid Line Color",title:"Set the grid color, equivalent to applying the same border color for each matrix cell",type:"color",chartType:"matrix",settingsKey:"gridStroke",colspan:2,align:"center"},{label:"Background Color",title:`Set the background color when there are no alterations or annotation data for a ${e.sample}`,type:"color",chartType:"matrix",settingsKey:"cellbg",colspan:2,align:"center"},{label:`Use Canvas If # ${e.sample} Exceeds`,title:`Switch from SVG to canvas rendering when the number of ${e.samples} exceeds this number`,type:"number",chartType:"matrix",settingsKey:"svgCanvasSwitch",colspan:2,align:"center",width:60,min:0,max:1e4,step:1},{label:"Canvas Min. Pixel Width",title:"Set a minimum pixel width for a matrix cell when using canvas, may affect the perceived sharpness of the canvas image",type:"checkbox",boxLabel:"apply",chartType:"matrix",settingsKey:"useMinPixelWidth",colspan:2,align:"center",getDisplayStyle:()=>this.parent.settings.matrix.useCanvas?"":"none"}]},{header:["Cells","Columns","Rows"],rows:[{label:"Row Height",title:"Set the height of a matrix row",type:"number",width:50,align:"center",chartType:"matrix",inputs:[{label:"N/A"},{settingsKey:"rowh",min:8,max:30,step:1}],getDisplayStyle(t){return t.chartType=="hierCluster"?"none":"table-row"}},{label:"Min Col. Width",title:"Set the minimum width of the auto-computed matrix column width",type:"number",width:50,align:"center",chartType:"matrix",inputs:[{settingsKey:"colwMin",min:.1,max:16,step:.2},{label:"N/A"}]},{label:"Max Col. Width",title:"Set the maximum width of the auto-computed matrix column width",type:"number",width:50,align:"center",chartType:"matrix",inputs:[{settingsKey:"colwMax",min:1,max:24,step:.2},{label:"N/A"}]},{label:"Spacing",title:"Set the column spacing. Note that this will be set to 0 when the auto-computed width < 2.",type:"number",width:50,align:"center",chartType:"matrix",inputs:[{settingsKey:"colspace",min:0,max:20,step:1},{settingsKey:"rowspace",min:0,max:20,step:1}],getDisplayStyle(t){return t.chartType=="hierCluster"?"none":"table-row"}},{label:"Group spacing",title:"Set the spacing between column and row groups.",type:"number",width:50,align:"center",chartType:"matrix",inputs:[this.parent.chartType=="hierCluster"?{label:"N/A"}:{settingsKey:"colgspace",min:0,max:20,step:1},{settingsKey:"rowgspace",min:0,max:20,step:1}]}]},{header:["Labels","Columns","Rows"],rows:[{label:"Offset",title:"Set the gap between the label text and matrix edge",type:"number",width:50,align:"center",chartType:"matrix",inputs:[{settingsKey:"collabelgap",min:0,max:20,step:1},{settingsKey:"rowlabelgap",min:0,max:20,step:1}]},{label:"Spacing",title:"Set the gap between labels",type:"number",width:50,align:"center",chartType:"matrix",inputs:[{settingsKey:"collabelpad",min:0,max:20,step:1},{settingsKey:"rowlabelpad",min:0,max:20,step:1}]},{label:"Min font size",title:"Set the minimum auto-computed font size for labels. Note that labels will be hidden if the auto-computed values falls below this minimum.",type:"number",width:50,align:"center",colspan:2,chartType:"matrix",settingsKey:"minLabelFontSize",min:0,max:24,step:.1},{label:"Max font size",title:"Set the maximum auto-computed font size for labels",type:"number",width:50,align:"center",colspan:2,chartType:"matrix",settingsKey:"maxLabelFontSize",min:0,max:24,step:.1},{label:"Group label<br/>position",title:"Set which side of the matrix to display group labels",type:"radio",width:50,chartType:"matrix",labelDisplay:"block",getDisplayStyle(t){return t.chartType=="hierCluster"?"none":"table-row"},inputs:[{settingsKey:"collabelpos",options:[{label:"Top",value:"bottom",title:`Display ${e.sample} group labels at the bottom`},{label:"Bottom",value:"top",title:`Display ${e.sample} group labels on top`}]},{settingsKey:"rowlabelpos",options:[{label:"Left",value:"right",title:`Display gene or variable group labels on the left side`},{label:"Right",value:"left",title:`Display gene or variable group labels on the right side`}]}]}]}]}).html((t=>t.label)).style("margin","2px 0").on("click",((t,e)=>this.callback(t,e)))}setLegendBtn(t){this.opts.holder.append("button").style("margin","2px 0").datum({label:"Legend Layout",rows:[{label:"Font Size",title:"Set the font size for the legend text",type:"number",chartType:"legend",settingsKey:"fontsize"},{label:"Line Height",title:"Set the line height for a legend group",type:"number",chartType:"legend",settingsKey:"lineh"},{label:"Icon Height",title:"Set the icon height for a legend item",type:"number",chartType:"legend",settingsKey:"iconh"},{label:"Icon Width",title:"Set the icon width for a legend item",type:"number",chartType:"legend",settingsKey:"iconw"},{label:"Item Left Pad",title:"Set a left margin for each legend item",type:"number",chartType:"legend",settingsKey:"padx"},{label:"Left Margin",title:"Set a left margin for the whole legend",type:"number",chartType:"legend",settingsKey:"padleft"},{label:"Left Indent",title:`Set a left margin for the first legend item in each group, and should be set to the length of the longest group label.`+` The left indent will align the legend group label text to the right.`,type:"number",chartType:"legend",settingsKey:"hangleft"},{label:"Item Layout",title:"Option to separate each legend item into a new line, instead of a horizontal layout in the same line.",type:"checkbox",chartType:"legend",settingsKey:"linesep",boxLabel:"Line separated"}]}).html((t=>t.label)).style("margin","2px 0").on("click",((t,e)=>this.callback(t,e)))}setMutationBtn(){this.opts.holder.append("button").style("margin","2px 0").datum({label:"Mutation",updateBtn:t=>{const e=this.parent.config.settings.matrix;t.style("text-decoration",e.allMatrixMutationHidden?"line-through":"").style("text-decoration-thickness",e.allMatrixMutationHidden?"2px":"")},rows:[{title:`Show mutation options`,type:"radio",chartType:"matrix",settingsKey:"showMatrixMutation",options:[{label:"Show all mutations",value:"all"},{label:`Show only truncating mutations`,value:"onlyTruncating"},{label:`Show only protein-changing mutations`,value:"onlyPC"},{label:`Do not show mutations`,value:"none"},{label:`Show selected mutation`,value:"bySelection"}],labelDisplay:"block",getDisplayStyle(t){return t.chartType=="hierCluster"?"none":"table-row"},callback:this.parent.mutationControlCallback}],customInputs:this.generateMutationItems}).html((t=>t.label)).style("margin","2px 0").on("click",((t,e)=>this.callback(t,e)))}setCNVBtn(){this.opts.holder.append("button").style("margin","2px 0").datum({label:"CNV",updateBtn:t=>{const e=this.parent.config.settings.matrix;const a=e.allMatrixCNVHidden;t.style("text-decoration",a?"line-through":"").style("text-decoration-thickness",a?"2px":"")},rows:[{title:`Show CNV options`,type:"radio",chartType:"matrix",settingsKey:"showMatrixCNV",options:[{label:"Show all CNV",value:"all"},{label:`Do not show CNV`,value:"none"},{label:`Show selected CNV`,value:"bySelection"}],labelDisplay:"block",getDisplayStyle(t){return t.chartType=="hierCluster"?"none":"table-row"},callback:this.parent.CNVControlCallback}],customInputs:this.generateCNVItems}).html((t=>t.label)).style("margin","2px 0").on("click",((t,e)=>this.callback(t,e)))}setDownloadBtn(t){this.opts.holder.append("button").style("margin","2px 0").text("Download").on("focus",(()=>this.parent.app.tip.hide())).on("click.sjpp-matrix-download",(t=>{const e=this.parent;if(!e.dom.downloadMenu)e.dom.downloadMenu=new a({padding:""});const c=e.dom.downloadMenu.clear();const d=c.d.append("div");d.append("div").attr("class","sja_menuoption sja_sharp_border").text(`SVG image`).on("click.sjpp-matrix-download",(()=>{s(this.opts.getSvg(),"matrix",{apply_dom_styles:true});e.dom.downloadMenu.destroy()}));d.append("div").attr("class","sja_menuoption sja_sharp_border").text(`TSV data`).on("click.sjpp-matrix-download",(()=>{const t=e.data.lst;const a=e.termOrder.map((t=>t.tw));const s=e.state.termdbConfig.assayAvailability;const c=e.settings.matrix.controlLabels;if(e.config.divideBy?.id&&!a.find((t=>t.id==e.config.divideBy.id))){a.push(e.config.divideBy)}const d=[];for(const e of t){for(const t of a){if(t.$id in e){d.push(e);break}}}const m=[c.Sample];for(const t of a)m.push(t.term.name);const h=[m];for(const t of d){const e=[t._ref_.label];for(const c of a){if(!t[c.$id]){e.push("")}else{if(c.term.type=="geneVariant"){const a=[];for(const e of t[c.$id].renderedValues){const t=s?.byDt?.[parseInt(e.dt)];if(e.dt==n){a.push((e.origin?`${e.origin} `:"")+(t?`${i[e.dt]}:`:"")+`${o[e.class]?.label}`+(e.mname?`,${e.mname}`:""))}else if(e.dt==l){const s=e.value?`${t?"":"CNV:"}${e.value}`:e.class=="CNV_amp"?"CNV gain":e.class=="CNV_loss"?"CNV loss":o[e.class]?.label;a.push((e.origin?`${e.origin} `:"")+(t?`${i[e.dt]}:`:"")+s)}else if(e.dt==r||e.dt==p){a.push((e.origin?`${e.origin} `:"")+(t?`${i[e.dt]}:`:"")+`${o[e.class]?.label}`+(e.gene&&e.mname?`(${e.gene}::${e.mname})`:""))}else{a.push(`DO NOT SUPPORT dt='${e.dt}'`)}}e.push(a.join("|"))}else if(c.term.type==u.GENE_EXPRESSION||c.term.type==u.METABOLITE_INTENSITY){e.push(t[c.$id]?.renderedValues?.[0]?.value||"")}else{e.push(t[c.$id]?.renderedValues?.[0]||t[c.$id]?.value||"")}}}h.push(e)}const g=h.map((t=>t.join("\t"))).join("\n");const y=document.createElement("a");document.body.appendChild(y);y.addEventListener("click",(function(){const t=(new Date).toISOString().split("T")[0];y.download=e.config.settings?.hierCluster?.termGroupName?.startsWith("Gene Expression")?`GeneExpression.${t}.tsv`:e.chartType=="hierCluster"?`HierCluster.${t}.tsv`:`${e.app.vocabApi.termdbConfig.matrix?.appName||"Matrix"}.${t}.tsv`;y.href=URL.createObjectURL(new Blob([g],{type:"text/tab-separated-values"}));document.body.removeChild(y)}),false);y.click();e.dom.downloadMenu.destroy()}));c.showunder(t.target)}))}main(t={}){this.overrides=t;this.parent.app.tip.hide();this.btns.text((t=>(t.getCount?`${t.getCount()} `:"")+t.label)).each((function(t){if(t.updateBtn)t.updateBtn(e(this))}));const a=this.parent.config.settings.matrix;const s=this.parent.dimensions;if(this.zoomApi)this.zoomApi.update({value:a.zoomLevel.toFixed(1),min:a.colwMin/a.colw,max:a.colwMax/a.colw,increment:a.zoomIncrement,step:a.zoomStep||1});if(this.svgScrollApi&&s){this.svgScrollApi.update({x:s.xOffset,y:s.yOffset-a.scrollHeight,totalWidth:s.zoomedMainW,visibleWidth:s.mainw,zoomCenter:a.zoomCenterPct*s.mainw-s.seriesXoffset})}if(this.dragToggleApi){this.dragToggleApi.update(a.mouseMode?{mouseMode:a.mouseMode}:{})}}getSettings(){return{mouseMode:this.dragToggleApi.getSettings().mouseMode}}async callback(e,a){const s=this.opts.app;const n=this.opts.parent;const i=a.tables||[a];e.target.focus();s.tip.clear();const o=s.tip.d.append("table").attr("class","sjpp-controls-table");for(const e of i){if(e.header){o.append("tr").selectAll("th").data(e.header).enter().append("th").html((t=>t))}for(const a of e.rows){const e=o.append("tr");const i=await t[a.type](Object.assign({},{holder:e,dispatch:s.dispatch,id:n.id,debug:this.opts.debug,parent:n},a));i.main(n.config)}if(e.customInputs)e.customInputs(this,s,n,o);o.selectAll("select, input, button").attr("tabindex",0).on("keydown",self.keyboardNavHandler)}s.tip.showunder(e.target)}prependInfo(t,e,a){const s=t.append("tr");s.append("td").text(e).attr("class","sja-termdb-config-row-label");s.append("td").text(a)}async appendGeneInputs(e,a,s,n){w.clear();if(!s.selectedGroup)s.selectedGroup=0;if(s.opts.customInputs?.genes){for(const a of s.opts.customInputs.genes){a.chartType="matrix";const i=n.append("tr");if(a.title)i.attr("aria-label",a.title);const o=await t[a.type](Object.assign({},{holder:i,id:s.id,debug:e.opts.debug,parent:s},a));o.main(s.config)}}e.addGenesetInput(event,a,s,n.append("tr"))}addGenesetInput(t,e,a,s){const n=this.btns.filter((t=>t.label=="Genes"))?.node();const i=e.tip;const o=a.config.termgroups;let l;const r=t=>{t.selectAll("*").remove();const a=l.lst.map((t=>({gene:t.name})));new f({holder:t,genome:e.opts.genome,geneList:a,customInputs:this.parent.opts.customInputs?.geneset,mode:l.mode,minNumGenes:l.mode=="geneExpression"?3:1,vocabApi:this.opts.app.vocabApi,callback:async({geneList:t,groupName:a})=>{if(!l)throw`missing selectedGroup`;i.hide();const s=l.status=="new"?{name:a,lst:[]}:o[l.index];if(l.status=="new")o.push(s);const n=l.mode=="geneExpression"?"geneExpression":"geneVariant";const r=s.lst.filter((t=>t.term.type!=n));const p=await Promise.all(t.map((async t=>{const e={gene:t.symbol||t.gene,name:t.symbol||t.gene,type:n};let a=s.lst.find((e=>e.term.name==t.symbol||e.term.name==t.gene));if(!a){a={term:e,q:{}};a.$id=await g(this.opts.app.vocabApi.getTwMinCopy(a))}else if(!a.$id){a.$id=await g(this.opts.app.vocabApi.getTwMinCopy({term:e}))}return a})));s.lst=[...r,...p];if(!s.lst.length)o.splice(l.index,1);e.dispatch({type:"plot_edit",id:this.parent.id,config:{termgroups:o}})},backBtn:{target:"Genes Menu",callback:()=>{n.click()}}})};const p=o.filter((t=>t.type!="hierCluster"||t.lst.find((t=>t.term.type=="geneExpression")))).length;s.append("td").attr("class","sja-termdb-config-row-label").html("Gene Set");if(p>0){const t=s.append("td").style("display","block").style("padding","5px 0px");const e=t.append("div");e.append("button").html(p>1?"Edit Selected Group":"Edit Current Group").on("click",(()=>{i.clear();this.setMenuBackBtn(i.d.append("div").style("padding","5px"),(()=>n.click()));const t=i.d.append("div");r(t)}));if(p>1){const{groups:t,groupSelect:a}=this.setTermGroupSelector(e,o);l=t.find((t=>t.selected));a.on("change",(()=>{l=t[a.property("value")]}))}else{const t=a.config.settings.hierCluster;const e=o.find((t=>t.type!="hierCluster"||t.lst.find((t=>t.term.type=="geneExpression"))));l={index:0,name:e.name,type:e.type,lst:e.lst.filter((t=>t.term.type.startsWith("gene"))).map((t=>({name:t.term.name}))),mode:this.parent.chartType=="hierCluster"&&(e.type=="hierCluster"||e.name==t?.termGroupName)?t.dataType:this.parent.state.termdbConfig.queries?.snvindel?u.GENE_VARIANT:"",selected:true}}}const c=s.append("td").style("display","block").style("padding","5px 0px");const d=c.append("div");const m=d.append("button").html("Create New Group").property("disabled",true).on("click",(()=>{i.clear();this.setMenuBackBtn(i.d.append("div"),(()=>n.click()));const t=h.property("value");a.config.settings.hierCluster;l={index:o.length,name:t,label:t,lst:[],status:"new",mode:a.state.termdbConfig.queries?.snvindel?u.GENE_VARIANT:""};r(i.d.append("div"))}));const h=d.append("input").style("margin","2px 5px").style("width","210px").attr("placeholder","Group Name").on("input",(()=>{m.property("disabled",!h.property("value"))})).on("keyup",(t=>{if(t.key=="Enter"&&!m.property("disabled")){m.node().click()}}))}setMenuBackBtn(t,e){t.attr("tabindex",0).style("padding","5px").style("text-decoration","underline").style("cursor","pointer").style("margin-bottom","12px").html(`« Back to Genes`).on("click",e).on("keyup",(t=>{if(t.key=="Enter")t.target.click()}))}setTermGroupSelector(t,e){const a=e.find((t=>t.lst.find((t=>t.term.type.startsWith("gene")))));const s=this.parent.config.settings.hierCluster;const n=e.map(((t,e)=>({index:e,name:t.name,type:t.type,lst:t.lst.filter((t=>t.term.type.startsWith("gene"))).map((t=>({name:t.term.name}))),mode:this.parent.chartType=="hierCluster"&&(t.type=="hierCluster"||t.name==s?.termGroupName)?s.dataType:this.parent.state.termdbConfig.queries?.snvindel?u.GENE_VARIANT:"",selected:this.parent.chartType=="hierCluster"&&(t.type=="hierCluster"||t.name&&t.name==s?.termGroupName)||t===a})));const i=t.append("select").style("width","218px").style("margin","2px 5px");for(const[t,e]of n.entries()){if(e.label)continue;if(e.name)e.label=e.name;else e.label=`Unlabeled group #${t+1}`}i.selectAll("option").data(n).enter().append("option").property("selected",(t=>t.selected)).attr("value",((t,e)=>e)).html((t=>t.label));return{groups:n,groupSelect:i}}appendDictInputs(t,e,a,s){w.clear();if(!a.selectedGroup)a.selectedGroup=t.chartType=="hierCluster"?1:0;e.tip.d.append("hr");t.addDictMenu(e,a,e.tip.d.append("div"))}generateCNVItems(t,e,a,s){s.attr("class",null);const i=a.config.settings.matrix;const o=a.legendData.find((t=>t.dt?.includes(n)));if(i.showMatrixCNV!=="none"&&(i.allMatrixMutationHidden||!o||o.crossedOut||!o.items.find((t=>!t.greyedOut&&!t.crossedOut)))){s.select("input[type='radio'][value='none']").property("disabled",true);s.select("input[type='radio'][value='none'] + span").style("opacity","0.5").on("mouseup",null)}if(i.addMutationCNVButtons&&a.chartType!=="hierCluster"&&i.showMatrixCNV=="bySelection")a.CNVControlCallback("bySelection")}generateMutationItems(t,e,a,s){s.attr("class",null);const n=a.config.settings.matrix;const i=a.legendData.find((t=>t.dt?.includes(l)));if(n.showMatrixMutation!=="none"&&(n.allMatrixCNVHidden||!i||i.crossedOut||!i.items.find((t=>!t.greyedOut&&!t.crossedOut)))){s.select("input[type='radio'][value='none']").property("disabled",true);s.select("input[type='radio'][value='none'] + span").style("opacity","0.5").on("mouseup",null)}if(n.addMutationCNVButtons&&a.chartType!=="hierCluster"&&n.showMatrixMutation=="bySelection")a.mutationControlCallback("bySelection")}updateSamplesControls(t,e,a,s){if(a.chartType=="hierCluster"&&a.config.settings.hierCluster.clusterSamples){const t=a.config.settings.matrix.controlLabels;const e=s.select(`tr[title='Set how to sort ${t.samples}']`);e.style("display","none")}}async addDictMenu(t,e,a,s=undefined){const n=await import("./app-3320ab6f.js");n.appInit({holder:s||t.tip.d,vocabApi:this.parent.app.vocabApi,focus:"off",state:{vocab:this.parent.state.vocab,activeCohort:this.parent.activeCohort,nav:{header_mode:"search_only"},tree:{usecase:{target:"matrix",detail:"termgroups"}}},tree:{submit_lst:e=>{this.submit_lst(e);t.tip.hide()}},search:{focus:"off"}})}async submit_lst(t){const e=await Promise.all(t.map((async t=>{const e=structuredClone(t);const a="id"in e?{id:e.id,term:e}:{term:e};await h(a,this.opts.app.vocabApi);return a})));this.parent.settings.matrix;const a=structuredClone(this.parent.config.termgroups);const s=a.findIndex((t=>t.name=="Variables"));if(s!==-1){const t=a[s];t.lst.push(...e);this.parent.app.dispatch({type:"plot_nestedEdits",id:this.parent.id,edits:[{nestedKeys:["termgroups",s,"lst"],value:t.lst}]})}else{const t={name:"Variables",lst:e};a.push(t);this.parent.app.dispatch({type:"plot_edit",id:this.parent.id,config:{termgroups:a}})}}setZoomInput(){const t=this.opts.holder.append("div").style("display","inline-block").style("margin-left","50px");const e=this.parent.config.settings.matrix;this.zoomApi=x({holder:t,title:"Zoom factor relative to the ideal column width, as computed for the number of columns versus available screen width",unit:"",width:"80px",settings:{value:1,min:.1,max:10,increment:e.zoomIncrement,step:e.zoomStep||5},callback:t=>{const e=this.parent;e.dimensions;e.settings.matrix;const a=e.getVisibleCenterCell(0);e.app.dispatch({type:"plot_edit",id:e.id,config:{settings:{matrix:{zoomLevel:t,zoomCenterPct:.5,zoomIndex:a.totalIndex,zoomGrpIndex:a.grpIndex}}}})},reset:()=>{this.parent.settings.matrix;this.parent.dimensions;this.parent.app.dispatch({type:"plot_edit",id:this.parent.id,config:{settings:{matrix:{zoomLevel:1,zoomCenterPct:0}}}})}})}setDragToggle(t={}){const e={mouseMode:"select",activeBgColor:"rgb(255, 255, 255)"};t.target.style("cursor","default");const a={opts:Object.assign({},e,t),dom:{selectBtn:t.holder.append("button").attr("aria-label","Click the matrix to select data").style("display","inline-block").style("width","25px").style("height","24.5px").style("background-color",e.activeBgColor).on("click",(()=>n("select"))),grabBtn:t.holder.append("button").attr("aria-label","Click the matrix to drag and move").style("display","inline-block").style("width","25px").style("height","24.5px").on("click",(()=>n("pan")))}};c.arrowPointer(a.dom.selectBtn,{width:14,height:14,transform:"translate(50,50)"});c.grab(a.dom.grabBtn,{width:14,height:14,transform:"translate(30,50)"});const s=this;function n(e){a.opts.mouseMode=e;s.parent.settings.matrix.mouseMode=e;t.target.style("cursor",e=="select"?"default":"grab");a.dom.selectBtn.style("background-color",e=="select"?a.opts.activeBgColor:"");a.dom.grabBtn.style("background-color",e=="pan"?a.opts.activeBgColor:"")}this.dragToggleApi={update(t={}){Object.assign(a.opts,t);n(a.opts.mouseMode)},getSettings(){return{mouseMode:a.opts.mouseMode}}}}setSvgScroll(t){this.svgScrollApi=v({holder:this.parent.dom.scroll,height:t.config.settings.matrix.scrollHeight,callback:(t,e)=>{const a=this.parent;const s=a.settings.matrix;const n=a.dimensions;if(e=="move"){a.dom.seriesesG.attr("transform",`translate(${n.xOffset+n.seriesXoffset-t},${n.yOffset})`);a.clusterRenderer.translateElems(-t,s,n);a.layout.top.attr.adjustBoxTransform(-t);a.layout.btm.attr.adjustBoxTransform(-t);if(a.dom.topDendrogram){a.dom.topDendrogram.attr("transform",`translate(${a.topDendroX-t},0)`)}}else if(e=="up"){const e=a.getVisibleCenterCell(-t);a.app.dispatch({type:"plot_edit",id:a.id,config:{settings:{matrix:{zoomCenterPct:.5,zoomIndex:e.totalIndex,zoomGrpIndex:e.grpIndex}}}})}}})}}export{C as MatrixControls};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{h as t}from"./FilterRxComp-701a1480.js";function e(t=""){const e=t||this.state.tokenVerificationMessage;if(!e&&this.state.hasVerifiedToken){this.dom.errdiv.style("display","none").html();this.dom.controls.style("display",this.opts.controls?"inline-block":"");this.dom.svg.style("display","");return false}else{this.dom.errdiv.style("display","").html(e||"Requires login");this.dom.controls.style("display","none");this.dom.svg.style("display","none");return true}}function s(t){const e=[];const s=this.chartType=="hierCluster"?t.config.termgroups.filter((t=>t.type!="hierCluster")):t.config.termgroups;for(const t of s){e.push(...i(t.lst))}if(t.config.divideBy)e.push(r(structuredClone(t.config.divideBy)));const o={terms:e,filter:t.filter,filter0:t.filter0,maxGenes:t.config.settings.matrix.maxGenes};if(this.chartType=="hierCluster"){o.isHierCluster=1}return o}function i(t){const e=structuredClone(t);e.forEach(r);e.sort(o);return e}function r(t){if(!t?.term)return;delete t.term.category2samplecount;delete t.term.values;return t}function o(t,e){const s=t?.$id||t.term?.id||t?.term?.name;const i=e?.$id||e.term?.id||e?.term?.name;return s<i?-1:1}async function l(t){const e=this.currRequestOpts?.matrix||this.getMatrixRequestOpts(this.state);this.numTerms=e.terms.length;const s=new AbortController;e.signal=s.signal;e.loadingDiv=this.chartType!="hierCluster"&&this.dom.loadingDiv;const[i,r]=await this.api.detectStale((()=>this.app.vocabApi.getAnnotatedSampleData(e,t)),{abortCtrl:s});if(r)throw`stale sequenceId`;this.data=i;this.origData=structuredClone(this.data);this.sampleIdMap={};for(const t of this.data.lst){this.sampleIdMap[t.sample]=t._ref_.label}}function n(){const e=this;if(!e.config.legendValueFilter.lst.length&&!e.config.legendGrpFilter.lst.length)return;for(const t of e.config.legendGrpFilter.lst){if(t.dt){const s=new Set;for(const i of e.origData.lst){for(const e of Object.values(i)){if(e.values){const i=[];for(const r of e.values){if(!(t.dt.includes(r.dt)&&(!t.origin||r.origin==t.origin))){i.push(r)}else{s.add(r.class)}}e.values=i}}}t.filteredOutCats=[...s];for(const s of Object.values(e.origData.samples)){for(const e of Object.values(s)){if(e.values)e.values=e.values.filter((e=>!(t.dt.includes(e.dt)&&(!t.origin||e.origin==t.origin))))}}}}const s=Object.values(e.data.refs.byTermId).filter((t=>t.term?.type=="geneVariant")).map((t=>t.$id));const i={samples:{},lst:[],refs:e.data.refs};const r=structuredClone(e.config.legendValueFilter);r.lst=r.lst.filter((t=>!t.tvs.legendFilterType||t.tvs.legendFilterType!=="geneVariant_soft"));for(const o of e.origData.lst){const l=t(o,r,s);if(l||e.chartType=="hierCluster"){i.samples[o.sample]=o;i.lst.push(o)}}for(const t of e.config.legendValueFilter.lst){if(t.tvs.legendFilterType!=="geneVariant_soft")continue;const e=t.tvs.values[0];const s=new Set;for(const t of i.lst){for(const i of Object.values(t)){if(i.values){const t=[];for(const r of i.values){if(!(r.dt==e.dt&&(!e.origin||r.origin==e.origin)&&e.mclasslst.includes(r.class))){t.push(r)}else{s.add(r.class)}}i.values=t}}}t.filteredOutCats=[...s];for(const t of Object.values(i.samples)){for(const s of Object.values(t)){if(s.values)s.values=s.values.filter((t=>!(t.dt==e.dt&&(!e.origin||t.origin==e.origin)&&e.mclasslst.includes(t.class))))}}}if(e.chartType!=="hierCluster"&&s.length&&e.app.vocabApi.vocab?.dslabel=="GDC")a(i);e.data=i}function a(t){for(const e of t.lst){let s=true;for(const[i,r]of Object.entries(e)){if(!r.values)continue;const e=t.refs.byTermId[i].term.type;if(e!="geneVariant")continue;if(r.values.length)s=false}if(s){t.lst=t.lst.filter((t=>t.sample!==e.sample));delete t.samples[parseInt(e.sample)]}}return t}var c=Object.freeze({__proto__:null,mayRequireToken:e,getMatrixRequestOpts:s,setData:l,applyLegendValueFilter:n});export{c as m};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{M as e,d as s}from"./app-
|
|
1
|
+
import{M as e,d as s}from"./app-b369b169.js";function t(t){const o=t.controls?t.holder:t.holder.append("div");o.style("position","relative");const i=this.opts.controls||o.append("div");const p=o.append("div").style("position","relative").style("top",this.opts.controls?0:"50px").style("left","50px");const a=o.append("div").attr("class","sja_errorbar").style("display","none");const n=o.append("svg").style("margin","20px 10px").style("overflow","visible").on("mousemove.label",this.svgMousemove).on("mouseup.label",this.svgMouseup);this.seriesClipId=`sjpp_clip_${this.id}`;const l=n.append("g").attr("class","sjpp-matrix-maing").on("mouseover",this.showCellInfo).on("mousemove",this.showCellInfo).on("mouseout",this.mouseout);const r=l.append("g").attr("clip-path",`url(#${this.seriesClipId})`);const d=l.append("g");const m=l.append("g");const u=new e({padding:"5px"});this.dom={header:t.header,holder:o,contentNode:t.holder.node().closest(".sjpp-output-sandbox-content")||t.holder.node().parentNode,errdiv:a,controls:i,loadingDiv:p,svg:n,clipRect:n.append("defs").append("clipPath").attr("id",this.seriesClipId).attr("clipPathUnits","userSpaceOnUse").append("rect").attr("display","block"),mainG:l,cluster:r.append("g").attr("class","sjpp-matrix-cluster-g").on("mousedown",this.seriesesGMousedown).on("mousemove",this.seriesesGMousemove),seriesesG:r.append("g").attr("class","sjpp-matrix-serieses-g").attr("data-testid","sjpp_matrix_mainG_serieses").on("mousedown",this.seriesesGMousedown),highlightBeamG:r.append("g").attr("class","sjpp-matrix-highlight-beam"),sampleLabelsPG:d,sampleGrpLabelG:d.append("g").attr("class","sjpp-matrix-series-group-label-g").on("click",this.showSampleGroupMenu).on("mousedown.sjppMatrixLabelText",this.enableTextHighlight).on("mouseup.sjppMatrixLabelText",this.disableTextHighlight),sampleLabelG:d.append("g").attr("class","sjpp-matrix-series-label-g").on("click",(e=>this.mouseclick(e))),termLabelsPG:m,termGrpLabelG:m.append("g").attr("class","sjpp-matrix-term-group-label-g").on("mouseover",this.termGrpLabelMouseover).on("mouseout",this.termGrpLabelMouseout).on("mousedown",this.termGrpLabelMousedown).on("mousemove",this.termGrpLabelMousemove).on("mouseup",this.termGrpLabelMouseup).on("mousedown.sjppMatrixLabelText",this.enableTextHighlight).on("mouseup.sjppMatrixLabelText",this.disableTextHighlight),termLabelG:m.append("g").attr("class","sjpp-matrix-term-label-g").on("mouseover",this.termLabelMouseover).on("mouseout",this.termLabelMouseout).on("mousedown",this.termLabelMousedown).on("mousemove",this.termLabelMousemove).on("mouseup",this.termLabelMouseup).on("mousedown.sjppMatrixLabelText",this.enableTextHighlight).on("mouseup.sjppMatrixLabelText",this.disableTextHighlight),scroll:l.append("g"),legendG:l.append("g").attr("class","sjpp-matrix-legend-g").on("mouseover",this.legendLabelMouseover).on("mouseout",this.legendLabelMouseout).on("mouseup",this.legendLabelMouseup),tip:u,menutop:u.d.append("div"),menubody:u.d.append("div"),clickMenu:new e({padding:"0px"}),brushMenu:new e({padding:"0px"}),dendroClickMenu:new e({padding:"0px"}),legendMenu:new e({padding:"0px"}),matrixCellHoverOver:new e({padding:"0px"})};this.dom.colBeam=this.dom.highlightBeamG.append("rect").style("display","none").style("stroke-width","0.5px").style("fill","transparent").style("pointer-events","none");this.dom.rowBeam=this.dom.highlightBeamG.append("rect").style("display","none").style("stroke-width","0.5px").style("fill","transparent").style("pointer-events","none");this.dom.tip.onHide=()=>{this.lastActiveLabel=this.activeLabel;delete this.activeLabel};s("body").on(`mousedown.matrixZoom-${this.id}`,this.resetInteractions);window.onscroll=this.delayedMouseoutHandler;const h=this.dom.holder.node().closest(".sjpp-output-sandbox-content");if(h)h.onscroll=this.delayedMouseoutHandler}export{t as setMatrixDom};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{s as e}from"./filter-b3d3964e.js";import{getTermSorter as t,getMclassSorter as s,getSampleSorter as n,getSampleGroupSorter as i}from"./matrix.sort-014d798d.js";import{ap as l,ak as r,at as o,R as a}from"./app-b369b169.js";function u(e){const n=this.settings.matrix;this.termSorter=t(this,n);const i=[];let l=0,r=0,o=0;this.mclassSorter=s(this);for(const[s,a]of this.termGroups.entries()){const u=[];for(const[t,s]of a.lst.entries()){const i={samples:0,hits:0};const l=new Set;for(const t of e.lst){if(l.has(t.sample))continue;l.add(t.sample);const e=t[s.$id];if(e){const{filteredValues:l,countedValues:r,renderedValues:o}=this.classifyValues(e,s,a,n,t);e.filteredValues=l;e.countedValues=r;e.renderedValues=o;if(e.countedValues?.length){const t=s.term.values?.[e.value];if(t?.uncountable)continue;i.samples+=1;i.hits+=e.countedValues.length;if(s.q?.mode=="continuous"){const t=e.value;if(!("minval"in i)||i.minval>t)i.minval=t;if(!("maxval"in i)||i.maxval<t)i.maxval=t}}}}if(a.type!="hierCluster"||i.samples)u.push({tw:s,counts:i,index:t});if(a.type=="hierCluster")o++}const c=a.sortTermsBy||a.type=="hierCluster"?t(this,n,a):this.termSorter;const d=u.filter((e=>{if("minNumSamples"in e.tw)return e.tw.minNumSamples<=e.counts.samples;if(!a.settings)return true;return!("minNumSamples"in a.settings)||e.counts.samples>=a.settings.minNumSamples})).sort(c);if(!d.length)continue;for(const[t,n]of d.entries()){const{tw:o,counts:u}=n;const c=e.refs.byTermId[n.tw.$id]||{};i.push({grp:a,grpIndex:s,visibleGrpIndex:r,tw:o,index:t,lstIndex:n.index,processedLst:d,prevGrpTotalIndex:l,totalIndex:l+t,ref:c,allCounts:u})}l+=d.length;r+=1}this.numTerms=i.length;this.numClusterTerms=o;return i}function c(e){const t=this.settings.matrix;const s={id:this.config.divideBy?.$id,name:this.config.divideBy?"Not annotated":"",lst:[]};const l=new Map;const r=this.config.divideBy?.term||{};const o=this.config.divideBy?.$id||"-";const a=this.config.divideBy?.exclude||[];const u=r.values||{};const c=e.refs.byTermId[o]||{};for(const n of e.lst){if(o in n){const e=n[o].key;const s=e in u&&u[e].label?u[e].label:e;if(!l.has(e)){const n={name:`${s}`,id:e,lst:[],tw:this.config.divideBy,legendGroups:{},isExcluded:a.includes(e)};if(c.bins&&t.sortSampleGrpsBy=="name")n.order=c.bins.findIndex((t=>t.name==e));else delete n.order;l.set(e,n)}l.get(e).lst.push(n)}else{s.lst.push(n)}}const d=[...l.values()];const p=l.size;if(p>100&&d.filter((e=>e.lst.length<3)).length>.8*p){const e=t.controlLabels;throw`Did not group ${e.samples} by "${r.name}": too many ${e.sample} groups (${p}), with the majority of groups having <= 2 ${e.samples} per group.`}if(s.lst.length&&!l.size){l.set(undefined,s);d.push(...l.values())}this.asListedSampleOrder=[];for(const e of d){this.asListedSampleOrder.push(...e.lst.map((e=>e.sample)))}const f=this.termOrder.filter((e=>e.tw.sortSamples&&e.tw.term.type!="geneVariant"));const m=n(this,t,e.lst,{skipSorter:(e,t)=>!e.types?.includes("geneVariant")&&f.find((e=>e.tw.$id===t.$id))});const h=e.lst.sort(m);const g=h.slice(0,t.maxSample);const v=e=>g.includes(e);const y=(e,t)=>e+(typeof t=="object"&&t.countedValues?.length?1:0);const x=(e,t)=>e+(Object.values(t).reduce(y,0)?1:0);const S=n(this,t,e.lst);for(const e of d){e.lst=e.lst.filter(v);e.totalCountedValues=e.lst.reduce(x,0);e.lst.sort(S)}const V=i(this);return d.sort(V)}function d(e){this.settings.matrix;this.visibleSampleGrps=new Set;const t=[];let s=0,n=0;for(const[e,i]of this.sampleGroups.entries()){if(!i.lst.length)continue;if(i.isExcluded)n++;let l=i.lst;for(const[r,o]of l.entries()){t.push({grp:i,grpIndex:e-n,row:o,index:r,prevGrpTotalIndex:s,totalIndex:s+r,totalHtAdjustments:0,grpTotals:{htAdjustment:0},processedLst:l})}if(!i.isExcluded)s+=l.length;this.visibleSampleGrps.add(i)}this.unfilteredSampleOrder=t;return t.filter((e=>!e.grp.isExcluded))}function p(t,s,n,i,u){const c="value"in t?[t.value]:t.values;if(!c)return{filteredValues:null,countedValues:null,renderedValues:null};const d=[s.valueFilter||n.valueFilter].filter((e=>e&&true));if(d.length&&d[0].type!=="tvs"&&d[0].type!=="tvslst")throw`unknown matrix value filter type='${d.type}'`;let p=!d.length?c:c.filter((t=>e(t,d[0],s.term,u)));const f=[];if(s.term.type=="geneVariant"&&s.q?.type=="values"){p.sort(this.mclassSorter);if(i.cellEncoding=="")f.push(...p);else{const e=[];for(const t of[l,r,o,a]){const s=t==a?p.find((e=>e.dt===t)):p.find((e=>e.dt===t&&e.class!=="WT"&&e.class!=="Blank"));if(s)f.push(s);const n=p.filter((e=>e.dt===t));e.push(...n)}p=e}}else{f.push(...p)}return{filteredValues:p,countedValues:p.filter((e=>{if(s.term.type=="geneVariant"){if(s.q?.type=="predefined-groupset"||s.q?.type=="custom-groupset"){const t=s.q.type=="predefined-groupset"?s.term.groupsetting.lst[s.q.predefined_groupset_idx]:s.q.customset;if(!t)throw"groupset not found";const n=t.groups[0];if(e!=n.name)return false}else{if(e.class=="WT"||e.class=="Blank"||i.geneVariantCountSamplesSkipMclass.includes(e.class))return false}}return true})),renderedValues:f}}function f(e,t){return e.class===t.class?0:e.class==="Blank"?1:t.class=="Blank"?-1:e.class<t.class?-1:1}var m=Object.freeze({__proto__:null,getTermOrder:u,getSampleGroups:c,getSampleOrder:d,classifyValues:p,stackSiblingCellsByClass:f});export{m};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{T as e,h as t,f as n,i}from"./termsetting-33ea66f1.js";import{D as s,B as o,z as l,n as a,d as r,b as d,L as p,W as c,M as m,R as g,S as u,ak as f,ap as y}from"./app-b369b169.js";import{r as b}from"./table-29d5a973.js";import{p as h}from"./pointer-c7475677.js";import"./tslib.es6-c3c2d88f.js";import"path";let v=0;const x={externalLink:""};function w(t){let n;t.delayedMouseoutHandler=()=>{if(n)clearTimeout(n);n=setTimeout(t.mouseout,500)};t.showCellInfo=function(n){if(t.activeLabel||t.zoomArea)return;if(n.target.__data__?.isLegendItem){return}if(!(n.target.tagName=="rect"||n.target.tagName=="image")){const e=n.target.__data__;const i=e?.grp;if(i?.legendData){if(n.target.closest(".sjpp-matrix-series-group-label-g"))t.displaySampleGroupInfo(n,i)}return}if(n.target.tagName!=="rect"&&!t.imgBox)t.imgBox=n.target.getBoundingClientRect();const i=n.target.tagName=="rect"?n.target.__data__:t.getImgCell(n);if(!i||!i.term||!i.sample){t.dom.tip.hide();t.mouseout();return}const a=t.dimensions.xOffset+t.dimensions.seriesXoffset;const r=t.dimensions.yOffset;const d=t.settings.matrix;const p=d.controlLabels;t.dom.rowBeam.attr("x",a).attr("y",r+i.seriesY).attr("height",i.tw.settings?.barh?i.tw.settings.barh+2*i.tw.settings.gap:i.t.grp.type=="hierCluster"?d.clusterRowh:d.rowh).style("display","");t.dom.colBeam.attr("x",a+i.x).attr("y",r).style("display","");t.dom.matrixCellHoverOver.clear();const c=s({holder:t.dom.matrixCellHoverOver.d.append("div")});if(i.term.type=="geneVariant"&&i.tw.q?.type=="values"){{const[e,t]=c.addRow();e.html(p.Sample);t.html(i.row._ref_.label||i.value?.sample)}{const[e,t]=c.addRow();e.html("Gene");t.html(i.term.name)}const e={};if(i.siblingCells)for(const t of i.siblingCells){if(t.$id!=i.$id)continue;const n=t.value;const s=n.pairlst;const a=n.origin?`${n.origin} ${o[n.dt]}`:o[n.dt];const r=t.t.grp.type=="hierCluster"?n.value:s?(s[0].a.name||s[0].a.chr)+"::"+(s[0].b.name||s[0].b.chr):n.mname?`${n.mname} ${l[n.class].label}`:l[n.class].label;const d=t.fill==n.color||n.class=="Blank"?"":t.fill;if(!e[a]){e[a]=[{label:r,color:d}]}else{e[a].push({label:r,color:d})}}for(const[t,n]of Object.entries(e).sort(((e,t)=>t.length-e.length))){const[e,i]=c.addRow();e.html(t);i.html(`<span style="display:inline-block; width:12px; height:12px; background-color:${n[0].color}" ></span>\n\t\t\t\t\t${n[0].label}`);for(const e of n.slice(1)){const[t,n]=c.addRow();t.html("");n.html(`<span style="display:inline-block; width:12px; height:12px; background-color:${e.color}" ></span>\n\t\t\t\t\t\t${e.label}`)}}}else{{const[e,t]=c.addRow();e.html(p.Sample);t.html(i.row._ref_.label)}let t;if(i.term.type==e.SURVIVAL&&i.exitCodeKey){t=i.term.values?.[i.exitCodeKey]?.label||i.exitCodeKey}if(t||i.convertedValueLabel||i.label){if(i.term.type==e.GENE_EXPRESSION){{const[e,t]=c.addRow();e.html("Gene");t.html(i.term.name)}{const e=i.tw?.q?.convert2ZScore&&i.tw.q.mode=="continuous"||i.tw.q.mode!=="continuous"?`<span style="display:inline-block; width:12px; height:12px; background-color:${i.fill=="#fff"||i.fill=="transparent"?"":i.fill}" ></span>`:"";const[t,n]=c.addRow();t.html("Gene Expression");n.html(`${e} ${i.convertedValueLabel||i.label}${i.tw?.q?.convert2ZScore&&i.tw.q.mode=="continuous"&&i.zscoreLabel?i.zscoreLabel:""}`)}}else if(i.term.type==e.METABOLITE_INTENSITY){{const[e,t]=c.addRow();e.html("Metabolite");t.html(i.term.name)}{const e=i.tw?.q?.convert2ZScore&&i.tw.q.mode=="continuous"||i.tw.q.mode!=="continuous"?`<span style="display:inline-block; width:12px; height:12px; background-color:${i.fill=="#fff"||i.fill=="transparent"?"":i.fill}" ></span>`:"";const[t,n]=c.addRow();t.html("Metabolite Intensity");n.html(`${e} ${i.convertedValueLabel||i.label}${i.tw?.q?.convert2ZScore&&i.tw.q.mode=="continuous"&&i.zscoreLabel?i.zscoreLabel:""}`)}}else if(i.term.type==e.SURVIVAL){{const[e,n]=c.addRow();e.html(i.term.name);n.html(`<span style="display:inline-block; width:12px; height:12px; background-color:${i.fill=="#fff"||i.fill=="transparent"?"":i.fill}" ></span>\n\t\t\t\t\t\t\t${t||i.label}`)}const e="Time to Event: "+(i.timeToEventKey?i.timeToEventKey+(i.term.unit?` ${i.term.unit}`:""):(i.convertedValueLabel||i.label)+(i.tw?.q?.convert2ZScore&&i.tw.q.mode=="continuous"&&i.zscoreLabel?i.zscoreLabel:""));{const[t,n]=c.addRow();t.html("");n.html(e)}}else{const e=i.tw?.q?.convert2ZScore&&i.tw.q.mode=="continuous"||i.tw.q.mode!=="continuous"?`<span style="display:inline-block; width:12px; height:12px; background-color:${i.fill=="#fff"||i.fill=="transparent"?"":i.fill}" ></span>`:"";const[t,n]=c.addRow();t.html(i.term.name);n.html(`${e} ${i.convertedValueLabel||i.label}${i.tw?.q?.convert2ZScore&&i.tw.q.mode=="continuous"&&i.zscoreLabel?i.zscoreLabel:""}`)}}}t.dom.matrixCellHoverOver.show2(n.clientX,n.clientY);t.dom.mainG.on("mouseout",t.mouseout)};t.getImgCell=function(e){if(!t.imgBox){if(e.target.tagName=="image")t.imgBox=e.target.getBoundingClientRect();else return}const n=e.clientY-t.imgBox.y-e.target.clientTop;const i=e.target.__data__.find((e=>e.hoverY0<=n&&n<=e.hoverY1));if(!i)return;const{xMin:s,dx:o}=t.dimensions;const l=e.clientX-t.imgBox.x-e.target.clientLeft+s;for(const e of i.cells){const t=e.x;const n=e.x+o;if(t<=l&&l<=n)return e}return null};t.mouseout=function(){if(!t.activeLabel&&t.dom.tip)t.dom.tip.hide();delete t.imgBox;t.dom.colBeam.style("display","none");t.dom.rowBeam.style("display","none");t.dom.matrixCellHoverOver.clear()};t.mouseclick=async function(n,i){const p=t.state.termdbConfig.queries;if(!p)return;if(!(p.singleSampleGenomeQuantification||p.singleSampleMutation||p.NIdata||p.DZImages))return;t.dom.mainG.on("mouseout",null);delete t.imgBox;const c=i||n.target.__data__;if(!c)return;t.config.settings.matrix;const m={sample_id:c.row._ref_.label};const g=c.term?.type=="geneVariant"?c.term.name:null;t.dom.clickMenu.clear();t.dom.dendroClickMenu.clear();t.dom.brushMenu.clear();t.dom.matrixCellHoverOver.clear();if(t.dom.sampleListMenu)t.dom.sampleListMenu.destroy();if(p.singleSampleGenomeQuantification){for(const e in p.singleSampleGenomeQuantification){const n=t.dom.clickMenu.d.append("div").attr("class","sja_menuoption sja_sharp_border").text(e).on("click",(async i=>{const s=a(t.opts.plotDiv||r(t.opts.holder.node().parentNode));s.header.text(m.sample_id);await(await import("./plot.ssgq-5581dc56.js")).plotSingleSampleGenomeQuantification(t.state.termdbConfig,t.state.vocab.dslabel,e,m,s.body.append("div").style("margin","20px"),t.app.opts.genome,g);n.remove();t.dom.clickMenu.d.selectAll("*").remove()}))}}if(p?.singleSampleMutation){const e=t.dom.clickMenu.d.append("div").attr("class","sja_menuoption sja_sharp_border").attr("data-testid","oncoMatrix_termLabel_disco_button").text("Disco plot").on("click",(async n=>{const i=a(t.opts.plotDiv||r(t.opts.holder.node().parentNode));i.header.text(m.sample_id);(await import("./plot.disco-6011f87f.js")).default(t.state.termdbConfig,t.state.vocab.dslabel,m,i.body,t.app.opts.genome,{Disco:{prioritizeGeneLabelsByGeneSets:true}});e.remove();t.dom.clickMenu.d.selectAll("*").remove()}))}if(p.DZImages){const e=t.dom.clickMenu.d.append("div").attr("class","sja_menuoption sja_sharp_border").attr("data-testid","oncoMatrix_termLabel_dzi_button").style("display","none").text(`${p.DZImages.type} Images (0)`);const n=await d("sampledzimages",{body:{genome:t.app.opts.genome.name,dslabel:t.state.vocab.dslabel,sample_id:m.sample_id}});if(n.sampleDZImages?.length>0){e.style("display","block");e.text(`${p.DZImages.type} Images (${n.sampleDZImages.length})`);e.on("click",(async i=>{const s=a(t.opts.plotDiv||r(t.opts.holder.node().parentNode));s.header.text(m.sample_id);(await import("./plot.dzi-6728a7c8.js")).default(t.state.vocab.dslabel,s.body,t.app.opts.genome,m.sample_id,n.sampleDZImages);e.remove();t.dom.clickMenu.d.selectAll("*").remove()}))}}if(p.NIdata){for(const[e,n]of Object.entries(p.NIdata)){t.dom.clickMenu.d.append("div").attr("class","sja_menuoption sja_sharp_border").text("Neuro Image: "+e).on("click",(async()=>{t.dom.clickMenu.clear();const i={chartType:"brainImaging",queryKey:e,settings:{brainImaging:{brainImageL:n.parameters.l,brainImageF:n.parameters.f,brainImageT:n.parameters.t}},selectedSampleFileNames:[m.sample_id+".nii"]};t.app.dispatch({type:"plot_create",config:i})}))}}const u=t.settings.matrix.controlLabels;const f=s({holder:t.dom.clickMenu.d.append("div").append("span")});const y=t.state.termdbConfig.urlTemplates;if(y?.sample){const e=c[y.sample.namekey]||c.sample||c.row.sample;const[t,n]=f.addRow();t.html(u.Sample);n.html(`<a href="${y.sample.base}${e}" target="_blank">${c.row._ref_.label} ${x.externalLink}</a>`)}else{const[e,t]=f.addRow();e.html(u.Sample);t.html(c.row._ref_.label||c.value.sample)}if(c.term?.type=="geneVariant"&&c.tw.q?.type=="values"){if(c.value){if(y?.gene){const e=t.data.refs.byTermId[c.tw.$id][y.gene.namekey];const[n,i]=f.addRow();n.html("Gene");i.html(`<a href="${y.gene.base}${e}" target="_blank">${c.tw.term.name} ${x.externalLink}</a>`)}else{const[e,t]=f.addRow();e.html("Gene");t.html(c.term.name)}const e={};for(const t of c.siblingCells){if(t.$id!=c.$id)continue;const n=t.value;const i=n.pairlst;const s=n.origin?`${n.origin} ${o[n.dt]}`:o[n.dt];const a=t.t.grp.type=="hierCluster"?n.value:i?(i[0].a.name||i[0].a.chr)+"::"+(i[0].b.name||i[0].b.chr):n.mname?`${n.mname} ${l[n.class].label}`:l[n.class].label;const r=t.fill==n.color||n.class=="Blank"?"":t.fill;if(!e[s]){e[s]=[{label:a,color:r}]}else{e[s].push({label:a,color:r})}}for(const[t,n]of Object.entries(e).sort(((e,t)=>t.length-e.length))){const[e,i]=f.addRow();e.html(t);i.html(`<span style="display:inline-block; width:12px; height:12px; background-color:${n[0].color}" ></span>\n\t\t\t\t\t\t${n[0].label}`);for(const e of n.slice(1)){const[t,n]=f.addRow();t.html("");n.html(`<span style="display:inline-block; width:12px; height:12px; background-color:${e.color}" ></span>\n\t\t\t\t\t\t\t${e.label}`)}}}}else if(c.term){let t;if(c.term.type==e.SURVIVAL&&c.exitCodeKey){t=c.term.values?.[c.exitCodeKey]?.label||c.exitCodeKey}if(t||c.convertedValueLabel||c.label){if(c.term.type==e.GENE_EXPRESSION){{const[e,t]=f.addRow();e.html("Gene");t.html(c.term.name)}{const e=c.tw?.q?.convert2ZScore&&c.tw.q.mode=="continuous"||c.tw.q.mode!=="continuous"?`<span style="display:inline-block; width:12px; height:12px; background-color:${c.fill=="#fff"||c.fill=="transparent"?"":c.fill}" ></span>`:"";const[t,n]=f.addRow();t.html("Gene Expression");n.html(`${e} ${c.convertedValueLabel||c.label}${c.tw?.q?.convert2ZScore&&c.tw.q.mode=="continuous"&&c.zscoreLabel?c.zscoreLabel:""}`)}}else if(c.term.type==e.METABOLITE_INTENSITY){{const[e,t]=f.addRow();e.html("Metabolite");t.html(c.term.name)}{const e=c.tw?.q?.convert2ZScore&&c.tw.q.mode=="continuous"||c.tw.q.mode!=="continuous"?`<span style="display:inline-block; width:12px; height:12px; background-color:${c.fill=="#fff"||c.fill=="transparent"?"":c.fill}" ></span>`:"";const[t,n]=f.addRow();t.html("Metabolite Intensity");n.html(`${e} ${c.convertedValueLabel||c.label}${c.tw?.q?.convert2ZScore&&c.tw.q.mode=="continuous"&&c.zscoreLabel?c.zscoreLabel:""}`)}}else if(c.term.type==e.SURVIVAL){{const[e,n]=f.addRow();e.html(c.term.name);n.html(`<span style="display:inline-block; width:12px; height:12px; background-color:${c.fill=="#fff"||c.fill=="transparent"?"":c.fill}" ></span>\n\t\t\t\t\t\t\t${t||c.label}`)}const e="Time to Event: "+(c.timeToEventKey?c.timeToEventKey+(c.term.unit?` ${c.term.unit}`:""):(c.convertedValueLabel||c.label)+(c.tw?.q?.convert2ZScore&&c.tw.q.mode=="continuous"&&c.zscoreLabel?c.zscoreLabel:""));{const[t,n]=f.addRow();t.html("");n.html(e)}}else{const e=c.tw?.q?.convert2ZScore&&c.tw.q.mode=="continuous"||c.tw.q.mode!=="continuous"?`<span style="display:inline-block; width:12px; height:12px; background-color:${c.fill=="#fff"||c.fill=="transparent"?"":c.fill}" ></span>`:"";const[t,n]=f.addRow();t.html(c.term.name);n.html(`${e} ${c.convertedValueLabel||c.label}${c.tw?.q?.convert2ZScore&&c.tw.q.mode=="continuous"&&c.zscoreLabel?c.zscoreLabel:""}`)}}}t.dom.clickMenu.show(n.clientX,n.clientY,false,true)};t.legendClick=function(){};t.svgMousemove=function(e){if(!t.dragged)return;const n=t.config.settings.matrix;const i=t.dragged;const s=!n.transpose?i.x:i.x-i.clientX+e.clientX;const o=!n.transpose?i.y-i.clientY+e.clientY:i.y;i.clone.attr("transform",`translate(${s},${o})`)};t.svgMouseup=function(e){if(!t.dragged)return;t.dragged.clone.remove();delete t.dragged;delete t.clicked};t.getVisibleCenterCell=function(e){t.settings.matrix;const n=t.dimensions;const i=Math.round((.5*n.mainw-n.seriesXoffset-e)/n.dx);return t.sampleOrder[i]};$(t);C(t);k(t);I(t);_(t);M(t);N(t)}function _(e){let t;r(window).on(`resize.sjpp-${e.id}`,(()=>{if(t)clearTimeout(t);if(e.dimensions&&e.layout)t=setTimeout(n,200)}));function n(){if(e.dimensions&&e.layout)e.main()}}function $(i){S(i,"term");i.setPill=function(e){i.pill=t({tip:i.customTipApi,menuOptions:"all",menuLayout:"horizontal",vocabApi:i.app.vocabApi,vocab:e.vocab,activeCohort:e.activeCohort,numericEditMenuVersion:["discrete","continuous"],usecase:{target:"matrix"},getBodyParams:()=>{const e=[];for(const t of i.config.termgroups){if(i.chartType=="hierCluster"&&t.type!="hierCluster")continue;for(const n of t.lst){if(n.term.chr){e.push(`${n.term.chr}:${n.term.start}-${n.term.stop}`)}else if(n.term.gene){e.push(n.term.gene)}}}if(e.length)return{currentGeneNames:e};return{}},renderAs:"none",callback:e=>{if(e&&!e.q)throw"data.q{} missing from pill callback";const t=i.activeLabel||i.lastactiveLabel;if(e){e.label=t.tw.label;if(t&&t.tw)e.$id=t.tw.$id;const n=i.mayRemoveTvsEntry(e);i.pill.main(e);i.app.dispatch({type:"plot_nestedEdits",id:i.opts.id,edits:[{nestedKeys:["termgroups",t.grpIndex,"lst",t.lstIndex],value:e},{nestedKeys:["legendValueFilter"],value:n}]})}else{i.removeTerm()}i.dom.tip.hide()}})};i.getMenuOptions=function(e){return i.config.chartType=="hierCluster"&&e.grp.type==="hierCluster"?"{remove,}":e.tw.term.type=="geneVariant"?"{edit,replace,remove}":"*"};i.showTermMenu=async function(t){const n=t.target.__data__;if(!n||!n.tw||!n.grp)return;const s=i.settings.matrix;const o=s.controlLabels;i.activeLabel=n;i.dom.menutop.style("display","").selectAll("*").remove();i.dom.menubody.style("padding",0).selectAll("*").remove();const l=i.dom.menutop.append("div").style("display","block").text("Loading...");i.dom.tip.show(t.clientX-20,t.clientY-20);await i.pill.main(Object.assign({menuOptions:i.getMenuOptions(n)},n.tw?n.tw:{term:null,q:null}));l.remove();i.dom.shortcutDiv=i.dom.menutop.append("div");i.showShortcuts(n,i.dom.shortcutDiv);i.dom.twMenuDiv=i.dom.menutop.append("div");const a=i.dom.twMenuDiv.append("div").style("text-align","center");a.append("span").text(`${o.Term} `);const r=n.tw.label||n.tw.term.name;const d=n.tw.term.type=="geneVariant"||n.tw.term.type==e.GENE_EXPRESSION?"gene":n.tw.term.type==e.METABOLITE_INTENSITY?"metabolite":"variable";i.dom.twLabelInput=a.append("input").attr("type","text").attr("size",r.length+3).attr("aria-label",`Type to edit the ${d} label`).style("padding","1px 5px").style("text-align","center").property("value",r).on("input",(()=>{const e=i.dom.twLabelInput.property("value");i.dom.twLabelInput.attr("size",e.length+3);i.dom.twLabelEditBtn.style("display",e.trim()===r?"none":"inline")}));i.dom.twLabelEditBtn=a.append("button").style("display","none").style("margin-left","5px").html("submit").on("click",(()=>{if(r!=i.dom.twLabelInput.property("value").trim())i.updateTermLabel();i.dom.tip.hide()}));if(d=="gene"){i.dom.gbButton=a.append("button").style("text-align","center").html("Lollipop").attr("data-testid","oncoMatrix_cell_lollipop_button").on("click",(async()=>{await i.launchGB(n);i.dom.tip.hide()}))}if(i.state.termdbConfig.urlTemplates?.gene&&d=="gene"){const e=i.state.termdbConfig.urlTemplates;i.dom.geneSummaryLink=a.append("div").style("display","inline-block").style("margin-left","5px").style("text-align","center").style("color","rgb(0, 0, 238)").style("cursor","pointer").style("text-decoration","underline").html(`${e.gene.defaultText||""}${x.externalLink}`).on("click",(async()=>{const t=i.data.refs.byTermId[n.tw.$id][e.gene.namekey];window.open(`${e.gene.base}${t}`,"_blank");i.dom.tip.hide()}))}if(i.config.settings.matrix.maxSample){i.dom.twMenuDiv.append("div").style("text-align","center").style("margin","5px").text(`#${o.samples}: ${n.counts.samples} rendered, ${n.allCounts.samples-n.counts.samples} not rendered`)}i.dom.twMenuBar=i.dom.twMenuDiv.append("div").style("text-align","center");const p=t.target;i.pill.showMenu(t,p,i.dom.twMenuBar);i.dom.grpMenuDiv=i.dom.menutop.append("div").style("margin-top","10px")};i.launchGB=async e=>{const t=a(i.opts.plotDiv||r(i.opts.holder.node().parentNode));t.header.text(e.tw.term.name);const n={debugmode:i.app.opts.debug,holder:t.body.append("div").style("margin","20px"),genome:i.app.opts.genome,nobox:true,query:e.tw.term.name,tklst:[{type:"mds3",dslabel:i.app.opts.state.vocab.dslabel,filter0:i.state.filter0,filterObj:structuredClone(i.state.filter)}]};const s=await import("./app-b369b169.js").then((function(e){return e.c3}));await s.default(n)};i.updateTermLabel=()=>{const e=i.dom.twLabelInput.property("value").trim();const t=i.activeLabel;if(t.tw.label===e)return;t.tw.label=e;t.grp.lst[t.lstIndex]=t.tw;i.app.dispatch({type:"plot_nestedEdits",id:i.opts.id,edits:[{nestedKeys:["termgroups",t.grpIndex],value:t.grp}]})};i.showShortcuts=(t,n)=>{const s=i.settings.matrix.controlLabels;n.style("text-align","center");const o=t.tw.term.type=="geneVariant"||t.tw.term.type==e.GENE_EXPRESSION?"gene":t.tw.term.type==e.METABOLITE_INTENSITY?"metabolite":"variable";const l=i.type!="hierCluster"&&t.tw.sortSamples?.priority!==undefined;n.append("span").selectAll("div").data([{icon:"corner",title:`Sort ${s.samples} against this ${o}, and position this ${o} at the top left corner`,disabled:t.grp.lst.length<1||t.index===0&&t.tw.sortSamples?.priority===0||i.type=="hierCluster",handler:i.sortSamplesAgainstCornerTerm},{icon:"left",title:`Sort ${s.samples} against this ${o}`,disabled:t.tw.sortSamples?.priority===0&&!i.config.settings.hierCluster?.clusterSamples,fill:l?"rgba(200,100,100,0.5)":"",handler:l?i.unsortSamplesAgainstTerm:i.sortSamplesAgainstTerm},{html:" | "},{icon:"up",title:`Move this ${o} up`,disabled:t.index===0||i.type=="hierCluster",handler:i.moveTermUp},{icon:"down",title:`Move this ${o} down`,disabled:t.index===t.grp.lst.length-1||i.type=="hierCluster",handler:i.moveTermDown}],(e=>e.icon)).enter().append("div").style("display","inline-block").each((function(e){const t=r(this);if(e.icon)p[e.icon](t,e);else t.html(e.html)}))};i.sortSamplesAgainstCornerTerm=e=>{e.stopPropagation();const t=i.activeLabel;const n=JSON.parse(JSON.stringify(i.termGroups));const s=n[t.grpIndex];const[o,l]=i.getSorterTerms(t);s.lst.splice(t.lstIndex,1);s.lst.unshift(o);s.sortTermsBy="asListed";for(const e of n){if(e==s){for(const[t,n]of e.lst.entries()){if(!n.sortSamples)n.sortSamples={priority:t,by:"values"};n.sortSamples.priority=t}}else{for(const t of e.lst){if(!t.sortSamples)continue;t.sortSamples.priority=l.findIndex((e=>e.tw?.$id===t.$id))+s.lst.length}}}i.app.dispatch({type:"plot_edit",id:i.opts.id,config:{termgroups:n,settings:{matrix:{sortTermsBy:"asListed"}}}});i.dom.tip.hide()};i.sortSamplesAgainstTerm=e=>{e?.stopPropagation();const t=i.activeLabel;const[n]=i.getSorterTerms(t);if(t.grp.type=="hierCluster")n.sortSamples.by="values";const s=i.termGroups;s[t.grpIndex].lst[t.lstIndex]=n;for(const e of s){for(const n of e.lst){if(!n.sortSamples)continue;if(n.$id===t.tw.$id){n.sortSamples.priority=0}else n.sortSamples.priority+=1}}if(i.chartType=="hierCluster"){i.config.settings.hierCluster.clusterSamples=false;i.config.settings.hierCluster.yDendrogramHeight=0}i.config.termgroups=s;i.app.dispatch({type:"plot_edit",id:i.opts.id,config:i.config});i.dom.tip.hide()};i.unsortSamplesAgainstTerm=(e,t)=>{e.stopPropagation();const n=i.activeLabel||t.data.t;const[s]=i.getSorterTerms(n);const o=i.termGroups;o[n.grpIndex].lst[n.lstIndex]=s;for(const e of o){for(const t of e.lst){if(!t.sortSamples)continue;if(t.$id===n.tw.$id){delete t.sortSamples}else if("sortSamples"in t&&"priority"in t.sortSamples){if(t.sortSamples.priority>n.sortSamples?.priority)t.sortSamples.priority-=1}}}i.app.dispatch({type:"plot_edit",id:i.opts.id,config:{termgroups:o}});i.dom.tip.hide()};i.moveTermUp=e=>{e.stopPropagation();const t=i.activeLabel;const n=i.termGroups[t.grpIndex];n.lst.splice(t.lstIndex,1);n.lst.splice(t.lstIndex-1,0,t.tw);n.sortTermsBy="asListed";i.app.dispatch({type:"plot_nestedEdits",id:i.opts.id,edits:[{nestedKeys:["termgroups",t.grpIndex],value:n},{nestedKeys:["settings","matrix","sortTermsBy"],value:"asListed"}]});i.dom.tip.hide()};i.moveTermDown=e=>{e.stopPropagation();const t=i.activeLabel;const n=i.termGroups[t.grpIndex];n.lst.splice(t.lstIndex,1);n.lst.splice(t.lstIndex+1,0,t.tw);n.sortTermsBy="asListed";i.app.dispatch({type:"plot_nestedEdits",id:i.opts.id,edits:[{nestedKeys:["termgroups",t.grpIndex],value:n},{nestedKeys:["settings","matrix","sortTermsBy"],value:"asListed"}]});i.dom.tip.hide()};i.showTermEditMenu=async()=>{i.dom.menubody.selectAll("*").remove();const e=i.activeLabel;const t=i.config.settings.matrix;const n=t.controlLabels;if(e.tw.term.type=="geneVariant"){const t=i.dom.menubody.append("div");const s=t.append("label");s.append("span").html(`Minimum # ${n.samples} to be visible`);const o="minNumSamples"in e.tw?e.tw.minNumSamples:"";const l=s.append("input").attr("type","number").style("margin-left","5px").style("width","50px").property("value",o);t.append("div").append("button").html("Submit").on("click",(()=>{const t=l.property("value");if(t===o)return;if(t===""){delete e.tw.minNumSamples}else{e.tw.minNumSamples=Number(t)}i.app.dispatch({type:"plot_nestedEdits",id:i.opts.id,edits:[{nestedKeys:["termgroups",e.grpIndex,"lst",e.lstIndex],value:e.tw}]});i.dom.tip.hide()}))}else{await i.pill.main(Object.assign({menuOptions:i.getMenuOptions(e)},i.activeLabel.tw));i.pill.showMenu()}};i.showMoveMenu=async()=>{i.dom.menubody.selectAll("*").remove();i.termBeingMoved=i.activeLabel;const e=i.dom.menubody.append("div");e.append("span").html("Click on another label");i.makeInsertPosRadios(e)};i.showTermInsertMenu=()=>{i.dom.menubody.selectAll("*").remove();i.dom.editbtns=i.dom.menubody.append("div");i.dom.editbody=i.dom.menubody.append("div");if(i.activeLabel.grp.type=="hierCluster"){i.showDictTermSelection();return}const e=i.dom.editbtns.append("div").style("margin","10px 5px");e.append("label").html(`Insert genes or variables in `);i.dom.grpNameSelect=e.append("select").on("change",(()=>{const e=i.dom.grpNameSelect.property("value");i.dom.grpNameTextInput.property("disabled",e=="current").property("value",e=="current"?i.activeLabel.grp.name:t)}));i.dom.grpNameSelect.selectAll("option").data([{label:"current",value:"current",selected:true},{label:"new",value:"new"}]).enter().append("option").attr("selected",(e=>e.selected)).html((e=>e.label));e.append("span").html(" group: ");let t="";i.dom.grpNameTextInput=e.append("input").attr("type","text").property("disabled",true).property("value",i.activeLabel.grp.name).on("change",(()=>{const e=i.dom.grpNameTextInput.property("value");if(e==i.activeLabel.grp.name);else{t=i.dom.grpNameTextInput.property("value")}}));i.makeInsertPosRadios(i.dom.editbtns);i.showDictTermSelection()};i.makeInsertPosRadios=function(e){const t=e.append("div").style("margin","10px 5px");t.append("div").style("display","inline-block").style("padding-right","10px").html("Insert ");const n=t.append("div").style("display","inline-block");i.insertRadioId=`sjpp-matrix-${i.id}-insert-pos`;const s=n.append("label");s.append("input").attr("type","radio").attr("value","above").property("checked",true).attr("name",i.insertRadioId);s.append("span").html("above");n.append("span").html("  ");const o=n.append("label");o.append("input").attr("type","radio").attr("value","below").attr("name",i.insertRadioId);o.append("span").html(" below")};i.showDictTermSelection=async()=>{const e={target:"matrix",detail:"termgroups"};if(i.activeLabel.grp.type=="hierCluster"){e.target=i.activeLabel.tw.term.type;e.detail="term"}const t=await import("./app-3320ab6f.js");i.dom.editbody.selectAll("*").remove();t.appInit({holder:i.dom.editbody.append("div"),vocabApi:i.app.vocabApi,state:{vocab:i.state.vocab,activeCohort:i.activeCohort,nav:{header_mode:"search_only"},tree:{usecase:e}},tree:{submit_lst:s},search:{handleGeneVariant:e=>s([e])}})};async function s(e){const t=await Promise.all(e.map((async e=>{const t=structuredClone(e);const s="id"in t?{id:t.id,term:t}:{term:t};await n(s,i.app.vocabApi);return s})));const s=i.insertRadioId&&r(`input[name='${i.insertRadioId}']:checked`)?.property("value");const o=i.activeLabel;const l=i.termGroups;if(o.grp.type=="hierCluster"){const e=l[o.grpIndex];e.lst.splice(o.lstIndex+1,0,...t);i.app.dispatch({type:"plot_nestedEdits",id:i.opts.id,edits:[{nestedKeys:["termgroups",o.grpIndex,"lst"],value:e.lst}]})}else if(i.dom.grpNameSelect.property("value")=="current"){const e=l[o.grpIndex];const n=s=="above"?o.lstIndex:o.lstIndex+1;e.lst.splice(n,0,...t);i.app.dispatch({type:"plot_nestedEdits",id:i.opts.id,edits:[{nestedKeys:["termgroups",o.grpIndex,"lst"],value:e.lst}]})}else{const e=s=="above"?o.grpIndex:o.grpIndex+1;l.splice(e,0,{name:i.dom.grpNameTextInput.property("value"),lst:t});i.app.dispatch({type:"plot_edit",id:i.opts.id,config:{termgroups:l}})}i.dom.tip.hide()}i.showSortMenu=()=>{const e=i.activeLabel;i.dom.menubody.selectAll("*").remove();i.dom.menubody.append("div").style("margin-top","10px").style("text-align","center").html(e.tw.term.name);i.moveInput=undefined;i.showSortOptions(e)};i.showTermMoveOptions=e=>{const t=i.dom.menubody.append("div").style("margin-top","10px");const n=t.append("label");i.moveInput=n.append("input").attr("type","checkbox").style("text-align","center");n.append("span").html(` move this row `);const s=t.append("select");s.selectAll("option").data([{label:"before",value:0},{label:"after",value:1}]).enter().append("option").attr("value",(e=>e.value)).html((e=>e.label));t.append("span").html(" ");const o=e.grp.lst.filter((t=>t.$id!=e.tw.$id)).map((e=>({label:e.term.name,value:e.$id})));const l=t.append("select");l.selectAll("option").data([{label:"all",value:"*"},...o]).enter().append("option").attr("value",(e=>e.value)).html((e=>e.label))};i.showSortOptions=e=>{const t=i.dom.menubody.append("div").style("margin-top","10px");const n=t.append("label");const s=n.append("input").attr("type","checkbox").property("checked",true).style("text-align","center");const o=i.settings.matrix.controlLabels;n.append("span").html(` sort ${o.samples} against (in order of priority):`);const l=i.showSorterTerms(t,e);i.dom.menubody.append("button").html("Apply").on("click",(()=>{JSON.parse(JSON.stringify(i.config.settings.matrix))||{};delete l.div;delete l.up;delete l.down;delete l.delete;if(s.property("checked")||i.moveInput.property("checked")){i.app.dispatch({type:"plot_nestedEdits",id:i.opts.id,edits:[{nestedKeys:["termgroups",e.grpIndex,"lst",e.lstIndex],value:l}]})}i.dom.tip.hide()}))};i.showSorterTerms=(e,t)=>{const[n,s]=i.getSorterTerms(t);const o=i.settings.matrix;const l=o.controlLabels;e.append("div").style("margin","5px").style("padding","5px 10px").selectAll("div").data(s,(e=>e.$id)).enter().append("div").style("width","fit-content").style("margin","3px").style("cursor","default").style("padding","3px 10px").style("border-radius","5px").style("color","black").style("background-color","rgb(238, 238, 238)").each((function(e,t){e.sortSamples.priority=t;e.div=r(this);const n=e.$id=="sample"?`${l.Sample} name`:e.term.name;e.div.append("span").style("margin-right","10px").html(n);e.up=e.div.append("span").html(" ▲ ").style("display",t===0?"none":"inline").style("color","#555").on("click",(()=>{this.parentNode.insertBefore(this,this.previousSibling);s.splice(e.priority,1);s.splice(e.priority-1,0,e);a()}));e.down=e.div.append("span").html(" ▼ ").style("display",t<s.length-1?"inline":"none").style("color","#555").on("click",(()=>{this.parentNode.insertBefore(this,this.nextSibling.nextSibling);s.splice(e.priority,1);s.splice(e.priority+1,0,e);a()}));e.delete=e.div.append("span").html(" ✕ ").style("display","inline").style("color","rgb(255, 100, 100)").on("click",(()=>{e.div.remove();s.splice(e.priority,1);a()}))}));function a(){for(const[e,t]of s.entries()){t.priority=e;t.up.style("display",t.priority>0?"inline":"none");t.down.style("display",t.priority<s.length-1?"inline":"none")}}return n};i.getSorterTerms=e=>{const t=[...i.termOrder.filter((e=>e.tw.sortSamples)).map((e=>JSON.parse(JSON.stringify(e.tw)))).sort(((e,t)=>e.sortSamples.priority-t.sortSamples.priority)),...i.config.settings.matrix.sortSamplesTieBreakers.map((e=>JSON.parse(JSON.stringify(e))))];const n=i.settings.matrix;const s=n.sortOptions[n.sortSamplesBy];if(!s){throw`unsupported s.sortSamplesBy='${n.sortSamplesBy}'`}const o=s.sortPriority?.find((t=>t.types.includes(e.tw?.term?.type)))?.tiebreakers[0];const l=o?{}:e.tw?.term?.type=="geneVariant"?{by:"class",order:["Fuserna","CNV_loss","CNV_amp","F","N","D","I","M","P","L","Utr3","Utr5","S","Intron","WT","Blank"]}:{by:"values"};const a=t.findIndex((t=>t.$id===e.tw?.$id));const r=JSON.parse(JSON.stringify(e.tw||{}));r.sortSamples=l;if(a==-1){t.unshift(r)}else{if(l.order)r.sortSamples.order=l.order}return[r,t]};i.removeTerm=()=>{const e=i.activeLabel;const t=i.mayRemoveTvsEntry(e.tw);const n=i.termGroups;const s=n[e.grpIndex];s.lst.splice(e.lstIndex,1);if(s.lst.length){i.app.dispatch({type:"plot_nestedEdits",id:i.opts.id,edits:[{nestedKeys:["termgroups",e.grpIndex,"lst"],value:s.lst},{nestedKeys:["legendValueFilter"],value:t}]})}else{n.splice(e.grpIndex,1);i.app.dispatch({type:"plot_edit",id:i.opts.id,config:{termgroups:n,legendValueFilter:t}})}i.dom.tip.hide()};i.removeTermGroup=()=>{const e=i.activeLabel;const t=i.termGroups;t.splice(e.grpIndex,1);i.app.dispatch({type:"plot_edit",id:i.opts.id,config:{termgroups:t}});i.dom.tip.hide()};i.mayRemoveTvsEntry=e=>{if(!i.config.legendValueFilter?.lst.length)return i.config.legendValueFilter;const t=structuredClone(i.config.legendValueFilter.lst);const n=t.filter((t=>t.tvs?.term.type===e?.term.type&&(("id"in t.tvs.term||"id"in e.term)&&t.tvs.term.id===e.term.id||t.tvs.term.name===e.term.name)));if(!n.length)return i.config.legendValueFilter;else{for(const i of n){const n=i.tvs;if(n.term.type!=e.term.type)continue;if(("id"in n.term||"id"in e.term)&&n.term.id!==e.term.id)continue;else if(n.term.name!=e.term.name)continue;const s=t.findIndex((e=>e===n));t.splice(s,1)}}return{in:true,join:"and",type:"tvslst",lst:t}};i.launchBrowser=e=>{e.stopPropagation();const t=i.activeLabel.tw;const n=[];for(const e of i.data.lst){if(e[t.$id]?.values)n.push(...e[t.$id].values)}i.app.dispatch({type:"plot_create",config:{term:t,chartType:"variantBrowser",insertBefore:i.id,custom_variants:n}})}}function k(e){e.showSampleGroupMenu=function(t){const n=t.target.__data__;if(!n)return;e.activeLabel=n;e.dom.menutop.selectAll("*").remove();e.dom.menubody.style("padding",0).selectAll("*").remove();const i=JSON.parse(JSON.stringify(e.config.menuOpts?.sampleGroup||[])).map((t=>{t.callback=e[t.callback];return t}));const s=[...i,{label:"Delete",callback:e.removeSampleGroup}];e.dom.menutop.append("div").selectAll(":scope>.sja_menuoption").data(s).enter().append("div").attr("class","sja_menuoption sja_sharp_border").style("display","block").html((e=>e.label)).on("click",((e,t)=>{e.stopPropagation();t.callback(t)}));e.dom.tip.showunder(t.target)};e.showNewChartMenu=()=>{e.dom.menubody.selectAll("*").remove()};e.launchSurvivalPlot=async t=>{e.dom.menubody.selectAll("*").remove();e.dom.menubody.append("div").style("padding-top","10px").html(`Use "<b>${e.config.divideBy.term.name}</b>" to`);const n=e.dom.menubody.append("div").style("padding","0 10px");const i="sjpp-matrix-surv-termnum-"+v++;const s=n.append("label");s.append("input").attr("type","radio").attr("name",i).attr("value","term2").property("checked",true);s.append("span").html(" overlay");const o=n.append("label").style("margin-left","10px");o.append("input").attr("type","radio").attr("name",i).attr("value","term0");o.append("span").html(" divide");e.dom.menubody.append("div").style("padding-bottom","10px").html(`the selected survival variable below:`);const l=await import("./app-3320ab6f.js");l.appInit({holder:e.dom.menubody.append("div"),vocabApi:e.app.vocabApi,state:{vocab:e.state.vocab,activeCohort:e.state.activeCohort,nav:{header_mode:"search_only"},tree:{usecase:{target:"survival",detail:"term"}}},tree:{click_term:s=>{e.dom.tip.hide();const o=n.select(`input[name='${i}']:checked`).property("value");e.dom.menubody.selectAll("*").remove();const l={chartType:"survival",term:s,[o]:JSON.parse(JSON.stringify(e.config.divideBy)),insertBefore:e.id};if(t.config){Object.assign(l,t.config)}e.app.dispatch({type:"plot_create",config:l})}}})};e.removeSampleGroup=()=>{if(!e.config.divideBy)return;const t=e.activeLabel.grp.tw;const n=t.term;if(n.type=="categorical"||n.type=="survival"){n.$id=t.$id;const i=e.config.legendValueFilter.lst.findIndex((e=>e.legendGrpName==t.term.id));if(i==-1){const i={legendGrpName:t.term.id,type:"tvs",tvs:{isnot:true,term:n,values:[{key:e.activeLabel.grp.id}]}};e.config.legendValueFilter.lst.push(i)}else{e.config.legendValueFilter.lst[i].tvs.values.push({key:e.activeLabel.grp.id})}}else if(i(n)){n.$id=t.$id;const i={legendGrpName:t.term.id||t.term.name,type:"tvs",tvs:{isnot:true,term:n,ranges:[e.data.refs.byTermId[t.$id].bins.find((t=>e.activeLabel.grp.id==t.name))]}};e.config.legendValueFilter.lst.push(i)}e.app.dispatch({type:"plot_edit",id:e.id,config:{legendValueFilter:e.config.legendValueFilter}});e.dom.tip.hide()};e.showDeletedSampleGroups=()=>{if(!e.config.divideBy)return;const t=e.activeLabel?.grp?.tw||e.config.divideBy;e.config.legendValueFilter.lst=e.config.legendValueFilter.lst.filter((e=>e.legendGrpName!==t.term.id&&e.legendGrpName!=t.term.name));e.app.dispatch({type:"plot_edit",id:e.id,config:{legendValueFilter:e.config.legendValueFilter}});e.dom.tip.hide()};e.displaySampleGroupInfo=(t,n)=>{const i=e.settings.matrix.controlLabels;const s=n.lst.length;e.dom.menutop.selectAll("*").remove();e.dom.menubody.selectAll("*").remove();e.dom.menubody.append("div").style("text-align","center").html(`<b>${n.name}</b> (${s} ${s<2?i.sample:i.samples})`);const o=e.dom.menubody.append("div").style("max-width","400px").style("padding","5px");for(const e in t.target.__data__.grp.legendData){const n=t.target.__data__.grp.legendData[e];o.append("div").style("padding-top","10px").html(`<b>${n.name}</b>`);const i=o.append("table");for(const e of n.items){const t=i.append("tr");t.append("td").append("div").style("width","12px").style("height","12px").style("background-color",e.color).style("border",`1px soloid ${e.stroke}`);t.append("td").html(e.text)}}e.dom.tip.show(t.clientX,t.clientY)};e.legendItemSorter=(e,t)=>{if(e.order&&t.order)return e.order-t.order;if(Number.isFinite(e.order)||t.order==-1)return-1;if(Number.isFinite(t.order)||e.order==-1)return 1;if(e.count)return t.count-e.count;if(Number.isFinite(e.count))return-1;if(Number.isFinite(t.count))return 1;return 0};e.handleLegendItemClick=t=>{const n=structuredClone(e.config.divideBy||{});const i="id"in n?n.id:n.name;if(t.termid==i){if(!n.exclude)n.exclude=[];const i=n.exclude?.indexOf(t.key);if(i==-1)n.exclude.push(t.key);else n.exclude.splice(i,1);e.app.dispatch({type:"plot_edit",id:e.id,config:{divideBy:n}})}};e.handleLegendMouseover=(t,n)=>{const i=structuredClone(e.config.divideBy||{});const s="id"in i?i.id:i.name;if(n.termid==s){e.dom.menutop.selectAll("*").remove();e.dom.menubody.selectAll("*").remove();e.dom.menubody.html(`Click to ${n.isExcluded?"show":"hide"}`);e.dom.tip.show(t.clientX,t.clientY)}}}function C(e){S(e,"termGrp");e.showTermGroupMenu=function(t){const n=t.target.tagName.toLowerCase()=="tspan"?t.target.parentNode.__data__:t.target.__data__;if(!n)return;e.activeLabel=n;e.dom.menutop.style("display","").selectAll("*").remove();e.showTermGroupInputs(e.dom.menutop.append("div"));e.dom.tip.showunder(t.target)};e.showTermGroupInputs=function(t){const n=t;const i=n.append("div").style("text-align","center");i.append("span").text("Group ");e.dom.grpNameInput=i.append("input").attr("type","text").attr("size",(e.activeLabel.grp.name?.length||0)+5).style("padding","1px 5px").style("text-align","center").property("value",e.activeLabel.grp.name).on("input",(()=>{const t=e.dom.grpNameInput.property("value");e.dom.grpNameInput.attr("size",t.length+5);e.dom.grpEditBtn.style("display",t===e.activeLabel.grp.name?"none":"")}));e.dom.grpEditBtn=i.append("button").style("display","none").style("margin-left","5px").html("submit").on("click",(()=>{e.updateTermGrpName();e.dom.tip.hide()}));e.dom.menubody.style("padding",0).selectAll("*").remove();const s=[{label:"Edit",callback:e.showTermGroupEditMenu},{label:"Add Rows",callback:e.showTermInsertMenu},{label:"Sort",callback:e.showSortMenu},{label:"Delete",callback:e.removeTermGroup}];if(e.chartType=="hierCluster"){s.splice(0,1);s.splice(1,1)}n.append("div").style("text-align","center").selectAll(":scope>.sja_menuoption").data(s).enter().append("div").attr("class","sja_menuoption sja_sharp_border").style("display","inline-block").html((e=>e.label)).on("click",((t,n)=>{t.stopPropagation();e.dom.menutop.style("display","none");n.callback(n)}))};e.updateTermGrpName=()=>{const t=e.dom.grpNameInput.property("value");const n=e.activeLabel;if(n.grp.name===t)return;n.grp.name=t;e.app.dispatch({type:"plot_nestedEdits",id:e.opts.id,edits:[{nestedKeys:["termgroups",n.grpIndex],value:n.grp}]})};e.showTermGroupEditMenu=async()=>{e.dom.menubody.selectAll("*").remove();const t=e.dom.menubody.append("div").style("padding","5px");t.append("div").style("width","100%").style("font-weight",600).html("Group options");const n=t.append("div").append("label");const i=e.settings.matrix.controlLabels;n.append("span").html(`Minimum # of mutated ${i.samples} for the ${i.term.charAt(0).toLowerCase()+i.term.slice(1)} to be visible `).attr("aria-label",`May be overridden by a row-specific minNumSamples`);const s=n.append("input").attr("type","number").style("margin-left","5px").style("width","50px").property("value",e.activeLabel.grp.settings?.minNumSamples||0);t.append("div").append("button").html("Submit").on("click",(()=>{const t=e.activeLabel.grp.settings||{};t.minNumSamples=s.property("value");e.app.dispatch({type:"plot_nestedEdits",id:e.id,edits:[{nestedKeys:["termgroups",e.activeLabel.grpIndex,"settings"],value:t}]})}))};e.removeTermGroup=()=>{const t=e.termGroups;t.splice(e.activeLabel.grpIndex,1);e.app.dispatch({type:"plot_edit",id:e.id,config:{termgroups:t}});e.dom.tip.hide()};const t=["series","series-group","term","term-group"].map((e=>`.sjpp-matrix-${e}-label-g`)).join(",");e.enableTextHighlight=n=>{r(n.target.closest(t)).selectAll(".sjpp-matrix-label text").style("-webkit-user-select","auto").style("-moz-user-select","auto").style("-ms-user-select","auto").style("user-select","auto");r("body").on("mouseup.sjppMatrixLabelText",e.disableTextHighlight)};e.disableTextHighlight=e=>{r(e.target.closest(t)).selectAll(".sjpp-matrix-label text").style("-webkit-user-select","none").style("-moz-user-select","none").style("-ms-user-select","none").style("user-select","none");r("body").on("mouseup.sjppMatrixLabelText",null)}}function S(e,t){e[`${t}LabelMousedown`]=(t,n)=>{e.clicked={event:t,d:n}};e[`${t}LabelMouseover`]=(n,i)=>{if(t=="term"&&n.target.__data__?.tw&&n.target.__data__.grp){if(n.target.__data__.grp.type=="hierCluster"){return}if(e.activeLabel||e.zoomArea){return}e.dom.menutop.selectAll("*").remove();e.dom.menubody.selectAll("*").remove();const t=n.target.__data__.grp.name;const i=n.target.__data__.tw.term.name;const s=e.dom.menubody.append("div").style("text-align","left").style("font-size","1.1em").html(t?`<b>${t}: ${i}</b>`:`<b>${i}</b>`);const o=e.dom.menubody.append("div").style("max-width","400px");const a=n.target.__data__;if(a.tw.term.type=="geneVariant"&&a.tw.q?.type=="values"){const t=Object.values(a.counts.subGroupCounts).reduce(((e,t)=>e+t.samplesNotTested),0);s.append("div").style("text-align","left").style("font-size","0.9em").html(`(tested ${e.samples.length-t} of ${e.samples.length})`);for(const[t,n]of Object.entries(a.counts.subGroupCounts)){const i=e.sampleGroups.find((e=>e.name==t)).lst.length;const s=i-n.samplesNotTested?n.samplesTotal/(i-n.samplesNotTested):0;o.append("div").style("padding-top","10px").html(t?`<b>${t}</b>: Mutated samples (${n.samplesTotal} of ${i-n.samplesNotTested}, ${c(".1%")(s)})`:`<b>Mutated samples (${n.samplesTotal} of ${i-n.samplesNotTested}, ${c(".1%")(s)})`);const a=o.append("table").style("margin-left","15px");for(const[e,t]of Object.entries(n.classes).sort(((e,t)=>t[1]-e[1]))){const n=a.append("tr");n.append("td").append("div").style("width","12px").style("height","12px").style("background-color",l[e].color);n.append("td").html(`${l[e].label}: ${t}`)}if(n.notTestedClasses){o.append("div").style("margin-left","15px").style("padding-top","12px").html("<b> Not counted:</b>");const e=o.append("table").style("margin-left","15px");for(const[t,i]of Object.entries(n.notTestedClasses).sort(((e,t)=>t[1]-e[1]))){const n=e.append("tr");n.append("td").append("div").style("width","12px").style("height","12px").style("background-color",l[t].color);n.append("td").html(`${l[t].label}: ${i}`)}}}}else if(!e.config.divideBy){const t=e.legendData.find((e=>e.name==a.tw.term.name));if(t&&t.items){const e=o.append("table");for(const n of t.items){const t=e.append("tr");t.append("td").append("div").style("width","12px").style("height","12px").style("background-color",n.color);t.append("td").html(`${n.key}: ${n.count}`)}}else{for(const[t,n]of Object.entries(a.counts.subGroupCounts)){const i=e.sampleGroups.find((e=>e.name==t)).totalCountedValues;o.append("div").style("padding-top","10px").html(t!==""?`<b>${t}</b>: ${n.samplesTotal} of ${i}`:`<b>${n.samplesTotal} of ${i}`);const s=o.append("table").style("margin-left","15px");for(const[e,t]of Object.entries(n.classes).sort(((e,t)=>t[1]-e[1]))){const n=a.tw.term.values?.[e]?.color;if(!n)continue;const i=s.append("tr");i.append("td").append("div").style("width","12px").style("height","12px").style("background-color",n);i.append("td").html(`${e}: ${t}`)}}}}else{for(const[t,n]of Object.entries(a.counts.subGroupCounts)){const i=e.sampleGroups.find((e=>e.name==t)).totalCountedValues;o.append("div").style("padding-top","10px").html(t!==""?`<b>${t}</b>: ${n.samplesTotal} of ${i}`:`<b>${n.samplesTotal} of ${i}`);const s=e.sampleGroups.find((e=>e.name==t));const l=s.legendData.find((e=>e.name==a.tw.term.name));if(l&&l.items){const e=o.append("table").style("margin-left","15px");for(const t of l.items){const n=e.append("tr");n.append("td").append("div").style("width","12px").style("height","12px").style("background-color",t.color);n.append("td").html(`${t.key}: ${t.count}`)}}else{const e=o.append("table").style("margin-left","15px");for(const[t,i]of Object.entries(n.classes).sort(((e,t)=>t[1]-e[1]))){const n=a.tw.term.values?.[t]?.color;if(!n)continue;const s=e.append("tr");s.append("td").append("div").style("width","12px").style("height","12px").style("background-color",n);s.append("td").html(`${t}: ${i}`)}}}}e.dom.tip.show(n.clientX,n.clientY)}if(n.target.innerHTML.includes("grouped by"))return;if(n.target.tagName==="text"){r(n.target).style("fill","blue")}if(!e.dragged)return;e.hovered=n.target.__data__};e[`${t}LabelMouseout`]=e=>{r(e.target).style("fill","")};e[`${t}LabelMousemove`]=(n,i)=>{const s=e.config.settings.matrix;if(e.clicked&&!e.dragged){e.dom[`${t}LabelG`].selectAll("text").style("-webkit-user-select","none").style("-moz-user-select","none").style("-ms-user-select","none").style("user-select","none");const i=e.clicked.event.target.closest(".sjpp-matrix-label");const s=i?.__data__;if(!s)return;if(e.type=="hierCluster"&&s.tw&&s.grp?.name==e.config.settings.hierCluster?.termGroupName)return;const[o,l]=r(i).attr("transform").split("translate(")[1].split(")")[0].split(",").map(Number);const a=i.cloneNode(true);e.dom[`${t}LabelG`].node().prepend(a);e.dragged={orig:i,clone:r(a).style("cursor","move").style("pointer-events","none"),node:a,x:o,y:l,clientX:n.clientX,clientY:n.clientY};e.dragged.clone.selectAll("text").style("fill","red")}if(!e.dragged)return;const o=e.dragged;const l=!s.transpose?o.x:o.x-o.clientX+n.clientX;const a=!s.transpose?o.y-o.clientY+n.clientY:o.y;o.clone.attr("transform",`translate(${l},${a})`)};e[`${t}LabelMouseup`]=n=>{delete e.clicked;e.config.settings.matrix;if(e.dragged){e.dragged.clone.remove();if(e.hovered){const n=e.dragged;const i=n.orig.__data__;const s=e.hovered;if(t=="termGrp"){const t=e.config.termgroups.splice(i.grpIndex,1)[0];e.config.termgroups.splice(s.grpIndex,0,t)}else{for(const t of e.config.termgroups){t.lst.sort(((t,n)=>{const i=e.termOrder.find((e=>e.tw.$id===t.$id));const s=e.termOrder.find((e=>e.tw.$id===n.$id));if(!i&&!s)return 0;if(!i)return 1;if(!s)return-1;return i.totalIndex-s.totalIndex}))}e.config.termgroups[i.grpIndex].lst.splice(i.index,1)[0];e.config.termgroups[s.grpIndex].lst.splice(s.index,0,i.tw);if(!e.config.termgroups[i.grpIndex].lst.length)e.config.termgroups.splice(i.grpIndex,1)}const o=t=="term"?"sortTermsBy":"sortTermGroupsBy";e.app.dispatch({type:"plot_edit",id:e.id,config:{termgroups:e.config.termgroups,settings:{matrix:{[o]:"asListed"}}}})}e.dom[`${t}LabelG`].selectAll("text").style("fill","").style("-webkit-user-select","").style("-moz-user-select","").style("-ms-user-select","").style("user-select","");delete e.dragged}else if(t=="term"){e.showTermMenu(n)}else{e.showTermGroupMenu(n)}}}function I(e){e.resetInteractions=function(){if(e.zoomArea){e.zoomArea.remove();delete e.zoomArea;r("body").on("mouseup.matrixZoom",null)}delete e.clickedSeriesCell};e.seriesesGMousedown=function(t){t.stopPropagation();e.resetInteractions();const n=e.getCellByPos(t);if(!n)return;e.clickedSeriesCell={event:t,startCell:n};if(e.settings.matrix.mouseMode=="pan"){e.seriesesGdragInit()}else{e.zoomPointer=h(t,e.dom.seriesesG.node());e.dom.seriesesG.on("mousemove",e.seriesesGoutlineZoom).on("mouseup",e.seriesesGtriggerZoom).on("contextmenu",e.resetInteractions)}e.dom.mainG.selectAll("text").style("-webkit-user-select","none").style("-moz-user-select","none").style("-ms-user-select","none").style("user-select","none")};e.getCellByPos=function(t){const n=e.settings.matrix;const i=e.dimensions;if(t.target.tagName=="rect"){if(t.target.__data__?.sample)return t.target.__data__;if(t.target.__data__?.xg){const n=t.clientX-t.target.getBoundingClientRect().x+i.seriesXoffset;const s=Math.floor(n/i.dx);return e.sampleOrder[s]}}if(t.target.tagName=="image"&&n.useCanvas){return e.getImgCell(t)}};e.seriesesGdragInit=function(){r("body").on("mousemove.sjppMatrixDrag",e.seriesesGdrag).on("mouseup.sjppMatrixDrag",e.seriesesGcancelDrag);e.settings.matrix;const t=e.dimensions;const n=e.clickedSeriesCell;n.dxPad=20;n.dxMax=-t.seriesXoffset;n.dxMaxPad=n.dxMax+n.dxPad;n.dxMin=t.mainw-t.zoomedMainW-t.seriesXoffset;n.dxMinPad=n.dxMin-n.dxPad;const i=.5*t.mainw;n.center={max:i+(t.zoomedMainW-t.mainw),min:i}};e.seriesesGdrag=function(t){const n=e.settings.matrix;const i=e.clickedSeriesCell;const s=e.dimensions;const o=t.clientX-i.event.clientX;if(Math.abs(o)<1)return;if(o<i.dxMinPad||o>i.dxMaxPad)return;e.clickedSeriesCell.dx=o;e.translateElems(o,s,n,i)};e.translateElems=function(t,n,i,s){e.dom.seriesesG.attr("transform",`translate(${n.xOffset+n.seriesXoffset+t},${n.yOffset})`);e.layout.top.attr.adjustBoxTransform(t);e.layout.btm.attr.adjustBoxTransform(t);const o=i.zoomCenterPct*n.mainw-n.seriesXoffset-t;e.controlsRenderer.svgScrollApi.update({zoomCenter:o})};e.seriesesGcancelDrag=function(t){r("body").on("mousemove.sjppMatrixDrag",null).on("mouseup.sjppMatrixDrag",null);const n=e.settings.matrix;const i=e.dimensions;const s=e.clickedSeriesCell;const o=t.clientX-s.event.clientX;const l=Math.min(s.dxMax,Math.max(o,s.dxMin));if(Math.abs(o)<1||Math.abs(l)<1){e.translateElems(0,i,n,s);return}e.translateElems(l,i,n,s);const a=e.getVisibleCenterCell(l);e.app.dispatch({type:"plot_edit",id:e.id,config:{settings:{matrix:{zoomCenterPct:.5,zoomIndex:a.totalIndex,zoomGrpIndex:a.grpIndex}}}})};e.seriesesGoutlineZoom=function(t){if(!e.clickedSeriesCell)return;e.config.settings.matrix;const n=e.clickedSeriesCell.event;if(e.clickedSeriesCell&&!e.zoomArea){e.zoomArea=e.dom.seriesesG.append("rect").attr("fill","rgba(50, 50, 50, 0.3)");r("body").on("mouseup.matrixZoom",e.mouseup);e.dom.mainG.selectAll("text").style("-webkit-user-select","none").style("-moz-user-select","none").style("-ms-user-select","none").style("user-select","none")}const i=t.clientX-n.clientX;t.clientY-n.clientY;const s=i>0?e.zoomPointer[0]:e.zoomPointer[0]+i+3;e.zoomWidth=Math.abs(i);e.zoomArea.attr("transform",`translate(${s},0)`).attr("width",Math.max(0,e.zoomWidth-2)).attr("height",e.dimensions.mainh);if(!e.clickedSeriesCell.endCell)e.clickedSeriesCell.endCell=e.getCellByPos(t)};e.seriesesGtriggerZoom=function(i){i.stopPropagation();e.dom.seriesesG.on("mousemove",null).on("mouseup",null);r("body").on("mouseup.matrixZoom",null);e.dom.mainG.selectAll("text").style("-webkit-user-select","").style("-moz-user-select","").style("-ms-user-select","").style("user-select","");const s=e.clickedSeriesCell;const o=e.getCellByPos(i);if(!s||!s.startCell){e.dom.mainG.on("mouseout",null);delete e.clickedSeriesCell;return}else if(!s.endCell||o===s.startCell){e.dom.mainG.on("mouseout",null);e.dom.tip.hide();const t=i.target.tagName=="rect"?i.target.__data__:s.startCell;if(t){if(e.opts.cellClick){e.opts.cellClick(structuredClone({sampleData:t.row,term:t.term,value:t.value,s:t.s,t:t.t,siblingCells:t.siblingCells.filter((e=>e!==t)).map((e=>({term:e.term,value:e.value,s:e.s,t:e.t})))}))}else{e.mouseclick(i,t)}}delete e.clickedSeriesCell;delete e.zoomArea;return}const l=e.settings.matrix;const a=l.controlLabels;s.endCell=o;const d=e.opts.allow2selectSamples;const p=s.startCell.totalIndex<s.endCell.totalIndex?s.startCell:s.endCell;const c=s.startCell.totalIndex<s.endCell.totalIndex?s.endCell:s.startCell;const m=new Set;for(let t=p.totalIndex;t<=c.totalIndex;t++){m.add(e.sampleOrder[t].row)}const g=[...m];const u=[{label:"Zoom in",callback:e.triggerZoomArea},{label:`List ${g.length} ${a.samples}`,callback:()=>{e.resetInteractions();e.dom.tip.hide();t(e,g,i.clientX,i.clientY)}}];if(d){u.push({label:d.buttonText||`Select ${a.Samples}`,callback:async()=>{d.callback({samples:g.map((e=>({"cases.case_id":e.sample}))),source:`Selected ${a.samples} from OncoMatrix`});e.zoomArea.remove();delete e.zoomArea;delete e.clickedSeriesCell}})}else{if(e.state.nav&&e.state.nav.header_mode!=="hidden"){for(const e of g){if(!e.sampleId)e.sampleId=e.sample}u.push({label:"Add to a group",callback:async()=>{e.resetInteractions();const t={name:"Group",items:g};n(t)}})}}e.dom.dendroClickMenu.clear();e.dom.clickMenu.clear();e.mouseout();e.dom.tip.hide();e.dom.brushMenu.clear();e.dom.brushMenu.d.selectAll("div").data(u).enter().append("div").attr("class","sja_menuoption").style("border-radius","0px").html((e=>e.label)).on("click",(t=>{e.dom.brushMenu.d.selectAll("*").remove();t.target.__data__.callback()}));e.dom.brushMenu.show(i.clientX,i.clientY)};const t=function(e,t,n,i){delete e.clickedSeriesCell;const s=e.state.termdbConfig.urlTemplates;const o=s?.sample?t.map((e=>[{value:e._ref_.label,url:`${s.sample.base}${e.sample}`}])):t.map((e=>[{value:e._ref_.label}]));const l=[{label:e.settings.matrix.controlLabels.Samples}];if(!e.dom.sampleListMenu)e.dom.sampleListMenu=new m({padding:"5px"});else e.dom.sampleListMenu.clear();const a=e.dom.sampleListMenu.d.append("div");b({rows:o,columns:l,div:a,showLines:true,maxWidth:l.length*"30"+"vw",maxHeight:"35vh",resize:true});e.dom.sampleListMenu.show(n,i)};const n=async function(t){t.plotId=e.id;await e.app.vocabApi.addGroup(t);e.dom.tip.hide()};e.triggerZoomArea=function(){if(e.zoomArea){e.zoomArea.remove();delete e.zoomArea}const t=e.clickedSeriesCell;delete e.clickedSeriesCell;const n=e.settings.matrix;const i=e.dimensions;const s=t.startCell.totalIndex<t.endCell.totalIndex?t.startCell:t.endCell;const o=Math.floor(s.totalIndex+Math.abs(t.endCell.totalIndex-t.startCell.totalIndex)/2);const l=e.sampleOrder[o]||e.getImgCell(event);const a=e.computedSettings.colw||e.settings.matrix.colw;const r=n.colwMax/a;const d=n.colwMin/a;const p=n.zoomLevel*i.mainw/e.zoomWidth;const c=Math.max(d,Math.min(p,r));const m=l.totalIndex*i.dx+(l.grpIndex-1)*n.colgspace+i.seriesXoffset;e.app.dispatch({type:"plot_edit",id:e.id,config:{settings:{matrix:{zoomLevel:c,zoomCenterPct:c<1&&i.mainw>=i.zoomedMainW?.5:m/i.mainw,zoomIndex:o,zoomGrpIndex:l.grpIndex}}}});e.resetInteractions()}}function M(e){e.legendLabelMouseover=t=>{const n=t.target.__data__;if(!n||n.dt==g||n.dt==u){return}if(!n.isLegendItem&&!n.dt){return}const i=e.config.legendGrpFilter.lst.find((e=>e.dt?.includes(n.dt)&&(!e.origin||e.origin==n.origin)))&&true;if(n.isLegendItem&&i){return}const s=e.termOrder.find((e=>e.tw.$id==n.$id));if(s?.tw?.q?.type=="predefined-groupset"||s?.tw?.q?.type=="custom-groupset"){return}if(t.target.nodeName=="rect")r(t.target).style("stroke","blue").style("cursor","pointer");else r(t.target).style("fill","blue").style("cursor","pointer")};e.legendLabelMouseout=e=>{if(e.target.nodeName=="rect")r(e.target).style("stroke","#aaa");else r(e.target).style("fill","")};e.legendLabelMouseup=t=>{const n=t.target.__data__;if(!n||n.dt==g||n.dt==u){return}const s=e.state.termdbConfig.assayAvailability?.byDt?.[parseInt(n.dt)]?.byOrigin;const o=e.dom.legendMenu.clear();if(!n.isLegendItem){if(!n.dt){return}const i=e.config.legendGrpFilter.lst.findIndex((e=>e.dt.slice().sort().toString()===n.dt.slice().sort().toString()&&(!s||e.origin==n.origin)));const l=e.config.legendValueFilter.lst.findIndex((e=>e.legendGrpName==n.name&&e.tvs.values.find((e=>n.dt.includes(e.dt)&&(!s||e.origin==n.origin)))));const a=o.d.append("div");if(i==-1){if(n.dt.includes(f)){a.append("div").attr("class","sja_menuoption sja_sharp_border").text(`Show only truncating mutations`).on("click",(()=>{V(o,n,e)}));a.append("div").attr("class","sja_menuoption sja_sharp_border").text(`Show only protein-changing mutations`).on("click",(()=>{F(o,n,e)}))}const t=e.legendData.filter((e=>e.dt&&!e.crossedOut&&(e.name==n.name||e.items.find((e=>!e.greyedOut&&!e.crossedOut))))).length<=1;a.append("div").attr("class",t?"sja_menuoption_not_interactive sja_sharp_border":"sja_menuoption sja_sharp_border").text(`Do not show ${n.name}`).style("opacity",t?"0.5":"1").on("click",(()=>{if(!t)A(o,n,e)}))}if(i!==-1||l!==-1){a.append("div").attr("class","sja_menuoption sja_sharp_border").text(`Show all ${n.name}`).on("click",(()=>{E(o,n,e)}))}o.showunder(t.target);return}const a=e.config.legendGrpFilter.lst.find((e=>e.dt?.includes(n.dt)&&(!e.origin||e.origin==n.origin)))&&true;if(n.isLegendItem&&a){return}const r=e.terms.find((e=>e.tw.$id==n.$id));if(r?.tw?.q?.type=="predefined-groupset"||r?.tw?.q?.type=="custom-groupset"){return}let d;if(n.dt){d=e.config.legendValueFilter.lst.findIndex((e=>e.legendGrpName==n.termid&&e.tvs.values.find((e=>e.dt==n.dt&&(!s||e.origin==n.origin)&&e.mclasslst[0]==n.key))))}else{const t=e.termOrder.find((e=>e.tw.$id==n.$id))?.tw?.term;if(!t){return}if(t.type=="categorical"||t.type=="survival"){d=e.config.legendValueFilter.lst.findIndex((e=>e.legendGrpName==n.termid&&e.tvs.values.find((e=>e.key==n.key))))}else if(i(t)){d=e.config.legendValueFilter.lst.findIndex((e=>e.legendGrpName==n.termid&&e.tvs.ranges.find((e=>e.name==n.key))))}}const p=e.settings.matrix.controlLabels;const c=o.d.append("div");if(!n.dt||e.type!=="hierCluster"||d!==-1){c.append("div").attr("class","sja_menuoption sja_sharp_border").text(n.dt?d==-1?`Hide ${p.samples} with ${l[n.key].label}`:`Show ${p.samples} with ${l[n.key].label}`:d==-1?"Hide":"Show").on("click",(()=>{o.hide();if(d==-1){if(n.dt){const t={legendGrpName:n.termid,type:"tvs",tvs:{isnot:true,legendFilterType:"geneVariant_hard",term:{type:"geneVariant"},values:[{dt:n.dt,origin:n.origin,mclasslst:[n.key]}]}};e.config.legendValueFilter.lst.push(t)}else{const t=e.termOrder.find((e=>e.tw.$id==n.$id)).tw.term;if(t.type=="categorical"||t.type=="survival"){t.$id=n.$id;const i=e.config.legendValueFilter.lst.findIndex((e=>e.legendGrpName==n.termid));if(i==-1){const i={legendGrpName:n.termid,type:"tvs",tvs:{isnot:true,term:t,values:[{key:n.key}]}};e.config.legendValueFilter.lst.push(i)}else{e.config.legendValueFilter.lst[i].tvs.values.push({key:n.key})}}else if(i(t)){t.$id=n.$id;const i={legendGrpName:n.termid,type:"tvs",tvs:{isnot:true,term:t,ranges:[e.data.refs.byTermId[n.$id].bins.find((e=>n.key==e.name))]}};e.config.legendValueFilter.lst.push(i)}}}else{if(n.dt)e.config.legendValueFilter.lst.splice(d,1);else{const t=e.termOrder.find((e=>e.tw.$id==n.$id)).tw.term;if(t.type=="categorical"||t.type=="survival"){const t=e.config.legendValueFilter.lst.findIndex((e=>e.legendGrpName==n.termid));const i=e.config.legendValueFilter.lst[t].tvs.values.findIndex((e=>e.key==n.key));e.config.legendValueFilter.lst[t].tvs.values.splice(i,1)}else e.config.legendValueFilter.lst.splice(d,1)}}if(e.state.config.settings.matrix.addMutationCNVButtons&&e.chartType!=="hierCluster"){if(n.dt==f){e.config.settings.matrix.showMatrixMutation="bySelection";const t=e.settings.matrix.controlLabels;if(e.legendData.find((e=>e.name==t.Mutations))?.items?.length==e.config.legendValueFilter.lst.filter((e=>e.legendGrpName==t.Mutations))?.length){e.config.settings.matrix.allMatrixMutationHidden=true}else e.config.settings.matrix.allMatrixMutationHidden=false}if(n.dt==y){e.config.settings.matrix.showMatrixCNV="bySelection";if(e.legendData.find((e=>e.name=="CNV"))?.items?.length==e.config.legendValueFilter.lst.filter((e=>e.legendGrpName=="CNV"))?.length){e.config.settings.matrix.allMatrixCNVHidden=true;if(e.config.settings.matrix.cellEncoding=="oncoprint")e.config.settings.matrix.cellEncoding="single"}else{e.config.settings.matrix.allMatrixCNVHidden=false;if(e.config.settings.matrix.cellEncoding!=="")e.config.settings.matrix.cellEncoding="oncoprint"}}}e.app.dispatch({type:"plot_edit",id:e.id,config:e.config})}))}if(n.isLegendItem){if(n.dt&&d==-1){c.append("div").attr("class","sja_menuoption sja_sharp_border").text(`Do not show ${l[n.key]?.label}`).on("click",(()=>{o.hide();const t={legendGrpName:n.termid,type:"tvs",tvs:{isnot:true,legendFilterType:"geneVariant_soft",term:{type:"geneVariant"},values:[{dt:n.dt,origin:n.origin,mclasslst:[n.key]}]}};e.config.legendValueFilter.lst.push(t);if(e.state.config.settings.matrix.addMutationCNVButtons&&e.chartType!=="hierCluster"){if(n.dt==f){e.config.settings.matrix.showMatrixMutation="bySelection";const t=e.settings.matrix.controlLabels;if(e.legendData.find((e=>e.name==t.Mutations))?.items?.length==e.config.legendValueFilter.lst.filter((e=>e.legendGrpName==t.Mutations))?.length){e.config.settings.matrix.allMatrixMutationHidden=true}else e.config.settings.matrix.allMatrixMutationHidden=false}if(n.dt==y){e.config.settings.matrix.showMatrixCNV="bySelection";if(e.legendData.find((e=>e.name=="CNV"))?.items?.length==e.config.legendValueFilter.lst.filter((e=>e.legendGrpName=="CNV"))?.length){e.config.settings.matrix.allMatrixCNVHidden=true;if(e.config.settings.matrix.cellEncoding=="oncoprint")e.config.settings.matrix.cellEncoding="single"}else e.config.settings.matrix.allMatrixCNVHidden=false}}e.app.dispatch({type:"plot_edit",id:e.id,config:e.config})}))}if(!n.dt){c.append("div").attr("class","sja_menuoption sja_sharp_border").text("Show only").on("click",(()=>{o.hide();const t=e.termOrder.find((e=>e.tw.$id==n.$id))?.tw?.term;const s=e.legendData.find((e=>e.name==n.termid))||e.legendData.find((e=>e.$id==n.$id));e.config.legendValueFilter.lst=e.config.legendValueFilter.lst.filter((e=>e.legendGrpName!==n.termid));if(t.type=="categorical"||t.type=="survival"){t.$id=n.$id;for(const i of s.items){if(i.key==n.key)continue;const s=e.config.legendValueFilter.lst.findIndex((e=>e.legendGrpName==n.termid));if(s==-1){const s={legendGrpName:n.termid,type:"tvs",tvs:{isnot:true,term:t,values:[{key:i.key}]}};e.config.legendValueFilter.lst.push(s)}else{e.config.legendValueFilter.lst[s].tvs.values.push({key:i.key})}}}else if(i(t)){t.$id=n.$id;for(const i of s.items){if(i.key==n.key)continue;const s={legendGrpName:n.termid,type:"tvs",tvs:{isnot:true,term:t,ranges:[e.data.refs.byTermId[n.$id].bins.find((e=>i.key==e.name))]}};if(!e.config.legendValueFilter.lst.length)e.config.legendValueFilter.lst=[s];else e.config.legendValueFilter.lst.push(s)}}e.app.dispatch({type:"plot_edit",id:e.id,config:e.config})}))}if(!n.dt){c.append("div").attr("class","sja_menuoption sja_sharp_border").text("Show all").on("click",(()=>{o.hide();e.config.legendValueFilter.lst=e.config.legendValueFilter.lst.filter((e=>e.legendGrpName!==n.termid));e.app.dispatch({type:"plot_edit",id:e.id,config:e.config})}))}o.showunder(t.target)}}}function N(e){e.mutationSelectionActions={onlyTruncating:V,onlyPC:F,none:A,all:E,bySelection:j};e.mutationControlCallback=t=>{const n=e.dom.legendMenu.clear();const i=e.legendData.find((e=>e.dt?.includes(f)));e.mutationSelectionActions[t](n,i,e,"mutation")};e.CNVControlCallback=t=>{const n=e.dom.legendMenu.clear();const i=e.legendData.find((e=>e.dt?.includes(y)));e.mutationSelectionActions[t](n,i,e,"CNV")};e.geneStyleControlCallback=t=>{const n=e.legendData.find((e=>e.dt?.includes(y)));if(t=="")G(n,e);else if(t=="single")L(n,e);else if(t=="oncoprint")T(n,e)}}function L(e,t){if(t.state.config.settings.matrix.addMutationCNVButtons&&t.chartType!=="hierCluster"){if(e){const n=t.state.termdbConfig.assayAvailability?.byDt?.[parseInt(e.dt)]?.byOrigin;const i=t.config.legendGrpFilter.lst.findIndex((t=>t.dt.slice().sort().toString()===e.dt.slice().sort().toString()&&(!n||t.origin==e.origin)));if(i==-1){const i={dt:e.dt};if(n){i.origin=e.origin}t.config.legendValueFilter.lst=t.config.legendValueFilter.lst.filter((t=>t.legendGrpName!==e.name));t.config.legendGrpFilter.lst.push(i)}}t.config.settings.matrix.cellEncoding="single"}t.app.dispatch({type:"plot_edit",id:t.id,config:t.config})}function T(e,t){if(t.state.config.settings.matrix.addMutationCNVButtons&&t.chartType!=="hierCluster"){if(e){const n=t.state.termdbConfig.assayAvailability?.byDt?.[parseInt(e.dt)]?.byOrigin;const i=t.config.legendGrpFilter.lst.findIndex((t=>t.dt.slice().sort().toString()===e.dt.slice().sort().toString()&&(!n||t.origin==e.origin)));if(i!==-1)t.config.legendGrpFilter.lst.splice(i,1);t.config.legendValueFilter.lst=t.config.legendValueFilter.lst.filter((t=>t.legendGrpName!==e.name))}t.config.settings.matrix.showMatrixCNV="all";t.config.settings.matrix.allMatrixCNVHidden=false}t.config.settings.matrix.cellEncoding="oncoprint";t.app.dispatch({type:"plot_edit",id:t.id,config:t.config})}function G(e,t){if(t.state.config.settings.matrix.addMutationCNVButtons&&t.chartType!=="hierCluster"){if(e){const n=t.state.termdbConfig.assayAvailability?.byDt?.[parseInt(e.dt)]?.byOrigin;const i=t.config.legendGrpFilter.lst.findIndex((t=>t.dt.slice().sort().toString()===e.dt.slice().sort().toString()&&(!n||t.origin==e.origin)));if(i!==-1)t.config.legendGrpFilter.lst.splice(i,1);t.config.legendValueFilter.lst=t.config.legendValueFilter.lst.filter((t=>t.legendGrpName!==e.name))}}t.config.settings.matrix.cellEncoding="";t.app.dispatch({type:"plot_edit",id:t.id,config:t.config})}function V(e,t,n){e.hide();if(t){n.config.legendValueFilter.lst=n.config.legendValueFilter.lst.filter((e=>e.legendGrpName!==t.name));n.config.legendGrpFilter.lst=n.config.legendGrpFilter.lst.filter((e=>!(e.dt.includes(f)&&e.origin==t.origin)));const e=n.config.settings.matrix.truncatingMutations;const i=n.config.settings.matrix.controlLabels;for(const[s,o]of Object.entries(l)){if(e.includes(s)||o.dt!=f)continue;const l={legendGrpName:t.origin?`${t.origin[0].toUpperCase()+t.origin.slice(1)} ${i.Mutations}`:i.Mutations,type:"tvs",tvs:{isnot:true,legendFilterType:"geneVariant_soft",term:{type:"geneVariant"},values:[{dt:f,origin:t.origin,mclasslst:[s]}]}};n.config.legendValueFilter.lst.push(l)}}n.app.dispatch({type:"plot_edit",id:n.id,config:n.config})}function F(e,t,n){e.hide();if(t){n.config.legendValueFilter.lst=n.config.legendValueFilter.lst.filter((e=>e.legendGrpName!==t.name));n.config.legendGrpFilter.lst=n.config.legendGrpFilter.lst.filter((e=>!(e.dt.includes(f)&&e.origin==t.origin)));const e=n.config.settings.matrix.proteinChangingMutations;const i=n.config.settings.matrix.controlLabels;for(const[s,o]of Object.entries(l)){if(e.includes(s)||o.dt!=f)continue;const l={legendGrpName:t.origin?`${t.origin[0].toUpperCase()+t.origin.slice(1)} ${i.Mutations}`:i.Mutations,type:"tvs",tvs:{isnot:true,legendFilterType:"geneVariant_soft",term:{type:"geneVariant"},values:[{dt:f,origin:t.origin,mclasslst:[s]}]}};n.config.legendValueFilter.lst.push(l)}}n.app.dispatch({type:"plot_edit",id:n.id,config:n.config})}function A(e,t,n,i){e.hide();if(t){const e=n.state.termdbConfig.assayAvailability?.byDt?.[parseInt(t.dt)]?.byOrigin;const i=n.config.legendGrpFilter.lst.findIndex((n=>n.dt.slice().sort().toString()===t.dt.slice().sort().toString()&&(!e||n.origin==t.origin)));if(i==-1){const i={dt:t.dt};if(e){i.origin=t.origin}n.config.legendValueFilter.lst=n.config.legendValueFilter.lst.filter((e=>e.legendGrpName!==t.name));n.config.legendGrpFilter.lst.push(i)}}if(n.state.config.settings.matrix.addMutationCNVButtons&&n.chartType!=="hierCluster"&&(i=="CNV"||t?.dt?.includes(y))&&n.config.settings.matrix.cellEncoding=="oncoprint"){n.config.settings.matrix.cellEncoding="single"}n.app.dispatch({type:"plot_edit",id:n.id,config:n.config})}function O(e,t,n){if(t){const n=e.state.termdbConfig.assayAvailability?.byDt?.[parseInt(t.dt)]?.byOrigin;const i=e.config.legendGrpFilter.lst.findIndex((e=>e.dt.slice().sort().toString()===t.dt.slice().sort().toString()&&(!n||e.origin==t.origin)));const s=e.config.legendValueFilter.lst.findIndex((e=>e.legendGrpName==t.name&&e.tvs.values.find((e=>t.dt.includes(e.dt)&&(!n||e.origin==t.origin)))));if(i!==-1)e.config.legendGrpFilter.lst.splice(i,1);if(s!==-1)e.config.legendValueFilter.lst=e.config.legendValueFilter.lst.filter((e=>e.legendGrpName!=t.name))}const i=e.config.settings.matrix;if(i.addMutationCNVButtons&&e.chartType!=="hierCluster"&&(n=="CNV"||t?.dt?.includes(y))&&i.cellEncoding!==""){i.cellEncoding="oncoprint"}return e.config}function E(e,t,n,i){e.hide();n.app.dispatch({type:"plot_edit",id:n.id,config:O(n,t,i)})}function j(e,t,n,i){e.hide();const s=n.config.settings.matrix;if(!t){if(s.addMutationCNVButtons&&n.chartType!=="hierCluster"&&i=="mutation"){s.showMatrixMutation="bySelection"}else if(s.addMutationCNVButtons&&n.chartType!=="hierCluster"&&i=="CNV"){s.showMatrixCNV="bySelection"}n.app.dispatch({type:"plot_edit",id:n.id,config:n.config});return}n.app.tip.d.selectAll(".byLFClassDiv").remove();const o=n.app.tip.d.append("div").attr("class","byLFClassDiv");const a=Math.random().toString();const d=o.selectAll(":scope>div").data(i=="mutation"?s.mutationClasses:s.CNVClasses).enter().append("label").style("margin","5px").style("margin-left","30px").style("display","block").each((function(e){const t=n.config.legendValueFilter.lst.find((t=>t.tvs.legendFilterType=="geneVariant_hard"&&t.tvs.values[0].dt==l[e].dt&&t.tvs.values[0].mclasslst.includes(e)));const o=i=="mutation"?s.hiddenMutations.includes(e):s.hiddenCNVs.includes(e);const c=r(this).attr("class","sjpp_row_wrapper");c.append("input").attr("type","checkbox").attr("name",a).property("disabled",t?true:false).property("checked",t||o?false:true).style("vertical-align","top").style("margin-right","3px").on("change",(function(){const e=d.selectAll(`input[type='checkbox'][name='${a}']:checked`).empty();p.property("disabled",e)}));c.append("span").style("margin-left","3px").html(l[e].label).style("text-decoration",t?"line-through":"")}));const p=o.append("button").property("disabled",true).style("margin-top","3px").text("Apply").on("click",(()=>{const o=d.selectAll(`input[type='checkbox'][name='${a}']:checked`);const p=o.nodes().map((e=>r(e).datum()));e.hide();n.config.legendValueFilter.lst=n.config.legendValueFilter.lst.filter((e=>e.legendGrpName!==t.name||e.tvs.legendFilterType=="geneVariant_hard"));n.config.legendGrpFilter.lst=n.config.legendGrpFilter.lst.filter((e=>!(e.dt.includes(f)&&t.dt.includes(f)||e.dt.includes(y)&&t.dt.includes(y))));for(const e of i=="mutation"?s.mutationClasses:s.CNVClasses){if(p.includes(e))continue;const i={legendGrpName:t.name,type:"tvs",tvs:{isnot:true,legendFilterType:"geneVariant_soft",term:{type:"geneVariant"},values:[{dt:l[e].dt,origin:t.origin,mclasslst:[e]}]}};n.config.legendValueFilter.lst.push(i)}if(n.state.config.settings.matrix.addMutationCNVButtons&&n.chartType!=="hierCluster"&&(i=="CNV"||t?.dt?.includes(y))){if(p.length==0&&n.config.settings.matrix.cellEncoding=="oncoprint"){n.config.settings.matrix.cellEncoding="single"}else if(p.length>0&&n.config.settings.matrix.cellEncoding=="single"){n.config.settings.matrix.cellEncoding="oncoprint"}}n.app.dispatch({type:"plot_edit",id:n.id,config:n.config})}))}export{O as getConfigForShowAll,w as setInteractivity,E as showAll};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{bS as t,by as e,P as s,ap as a,I as n}from"./app-a8c4854a.js";import{c as o,a as i,b as l,d as r}from"./axis-747c801e.js";var c=e=>t(e[e.length-1]);var m=new Array(3).concat("deebf79ecae13182bd","eff3ffbdd7e76baed62171b5","eff3ffbdd7e76baed63182bd08519c","eff3ffc6dbef9ecae16baed63182bd08519c","eff3ffc6dbef9ecae16baed64292c62171b5084594","f7fbffdeebf7c6dbef9ecae16baed64292c62171b5084594","f7fbffdeebf7c6dbef9ecae16baed64292c62171b508519c08306b").map(e);var h=c(m);var f=new Array(3).concat("fee0d2fc9272de2d26","fee5d9fcae91fb6a4acb181d","fee5d9fcae91fb6a4ade2d26a50f15","fee5d9fcbba1fc9272fb6a4ade2d26a50f15","fee5d9fcbba1fc9272fb6a4aef3b2ccb181d99000d","fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181d99000d","fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181da50f1567000d").map(e);var p=c(f);function u(t){const e=this.state.config.settings.matrix;if(!this.autoDimensions)this.autoDimensions=new Set;if(!e.colw)this.autoDimensions.add("colw");else this.autoDimensions.delete("colw");if(!e.rowh)this.autoDimensions.add("rowh");else this.autoDimensions.delete("rowh");const a=this.settings.matrix;this.computedSettings={useCanvas:this.sampleOrder.length>e.svgCanvasSwitch};if(a.availContentWidth){this.availContentWidth=a.availContentWidth}else{let e=this.dom.contentNode.getBoundingClientRect().width;if(e<600)e=window.document.body.clientWidth;const s=this.getMaxGrpLabelWidth();const n=Math.max(65,s);const o=this.state.config.settings.hierCluster?.xDendrogramHeight||0;this.availContentWidth=e-n-a.margin.right-t-o}if(this.autoDimensions.has("colw")){const t=a.colgspace*Math.max(0,this.visibleSampleGrps.size-1);const e=this.sampleOrder.length*a.colspace+t;const s=(this.availContentWidth-e)/this.sampleOrder.length;const n=Math.max(a.colwMin,Math.min(s,a.colwMax));const o=(this.availContentWidth-t)/this.sampleOrder.length;const i=Math.max(a.colwMin,Math.min(o,a.colwMax));if(a.zoomLevel<1||i*a.zoomLevel<2){this.computedSettings.colw=o;this.computedSettings.colspace=0}else{this.computedSettings.colw=n;this.computedSettings.colspace=a.colspace}}const n=this.state.config.settings.hierCluster?.yDendrogramHeight||0;const o=screen.availHeight-n;this.computedSettings.clusterRowh=Math.min(a.rowhMax,Math.max(a.rowhMin,Math.floor(o/this.numClusterTerms)));s(this.settings.matrix,this.computedSettings)}function d(){const t=this.settings.matrix;const e=this.dom.svg.append("g").attr("opacity",.01);let s=0;for(const a of this.termGroups){const n=!a.name?"":a.name.length<=t.termGrpLabelMaxChars?a.name:a.name.slice(0,t.termGrpLabelMaxChars)+"…";const o=e.append("text").text(n).attr("font-size",12);const i=o.node().getBBox();if(s<i.width)s=i.width}e.remove();return s}function b(){const t=this.settings.matrix;this.cnvValues={};const e=t.transpose?t.colw:t.rowh;const s={};const o={sampleGrpByName:{},termGrpByName:{}};let i=0;for(const l of this.termOrder){const r=new Set;l.counts={samples:0,hits:0};const c=[];l.counts.subGroupCounts={};for(const t of this.sampleGroups){l.counts.subGroupCounts[t.name]={samplesTotal:0,classes:{}};if(l.tw.term.type=="geneVariant"){l.counts.subGroupCounts[t.name].samplesNotTested=0}}if(!o.termGrpByName[l.grp.name||""]){const e=l.grp.name||"";l.grp.label=e.length<=t.termGrpLabelMaxChars?e:e.slice(0,t.termGrpLabelMaxChars)+"…";o.termGrpByName[e]=l.grp.label}for(const e of this.sampleOrder){if(r.has(e.row.sample))continue;const s=e.grp.name||"";if(!(s in o.sampleGrpByName)){e.grp.label=s.length<=t.sampleGrpLabelMaxChars?s:s.slice(0,t.sampleGrpLabelMaxChars)+"…";if(this.config.divideBy)e.grp.label+=` (${e.grp.lst.length})`;o.sampleGrpByName[s]=e.grp.label}const n=e.row._ref_.label||"";e.label=n.length<=t.collabelmaxchars?n:n.slice(0,t.collabelmaxchars)+"…";const i=e.row[l.tw.$id];if(!i)continue;const{filteredValues:m,countedValues:h,renderedValues:f}=this.classifyValues(i,l.tw,l.grp,this.settings.matrix,e.row);i.filteredValues=m;i.countedValues=h;i.renderedValues=f;if(i.countedValues?.length){l.counts.samples+=1;l.counts.hits+=i.countedValues.length;if(l.tw.q?.mode=="continuous"){const t=i.value;if(!l.tw.term.values?.[t]?.uncomputable){if(!("minval"in l.counts)||l.counts.minval>t)l.counts.minval=t;if(!("maxval"in l.counts)||l.counts.maxval<t)l.counts.maxval=t}}if(l.tw.term.type=="geneVariant"&&i.values){for(const e of i.values){if(e.dt==a&&"value"in e&&!t.ignoreCnvValues){const t=e.value;if(t<0){if(!("minLoss"in this.cnvValues)||this.cnvValues["minLoss"]>t)this.cnvValues["minLoss"]=t;if(!("maxLoss"in this.cnvValues)||this.cnvValues["maxLoss"]<t)this.cnvValues["maxLoss"]=t}else{if(!("minGain"in this.cnvValues)||this.cnvValues["minGain"]>t)this.cnvValues["minGain"]=t;if(!("maxGain"in this.cnvValues)||this.cnvValues["maxGain"]<t)this.cnvValues["maxGain"]=t}}}}}if(l.tw.q?.mode=="continuous"&&f?.length&&l.grp.type!="hierCluster"){c.push(l.tw.term.valueConversion?l.tw.term.valueConversion.scaleFactor*(f[0].value||f[0]):f[0].value||f[0])}const p=l.counts.subGroupCounts?.[e.grp.name];const u=i.filteredValues.filter((t=>{if(l.tw.term.type=="geneVariant"){if(t.class=="WT"||t.class=="Blank")return false}return true}));if(u.length){if(l.tw.term.type=="geneVariant"){let e=false;for(const s of u){if(t.geneVariantCountSamplesSkipMclass.includes(s.class)){if(!p.notTestedClasses)p.notTestedClasses={};if(!(s.class in p.notTestedClasses))p.notTestedClasses[s.class]=1;else p.notTestedClasses[s.class]+=1}else if(!(s.class in p.classes)){if(!e){p.samplesTotal+=1;e=true}p.classes[s.class]=1}else{if(!e){p.samplesTotal+=1;e=true}p.classes[s.class]+=1}}}else{p.samplesTotal+=1;for(const t of u){if(!(t in p.classes))p.classes[t]=1;else p.classes[t]+=1}}}if(i.filteredValues?.length&&l.tw.term.type=="geneVariant"){const t=i.filteredValues.every((t=>t.class=="Blank"));if(t){p.samplesNotTested+=1}}}l.label=l.tw.label||l.tw.term.name;if(l.label.length>t.rowlabelmaxchars)l.label=l.label.slice(0,t.rowlabelmaxchars-1)+"…";const m=this.config?.settings.hierCluster?.termGroupName;if(t.samplecount4gene&&l.tw.term.type.startsWith("gene")&&(!m||l.grp.name!==m)){const e=t.samplecount4gene==="abs"?l.counts.samples:(100*l.counts.samples/this.sampleOrder.length).toFixed(1)+"%";l.label=`${l.label} (${e})`}if(l.grp.type!=="hierCluster"&&l.tw.q?.mode=="continuous"){const e=l.tw.term.valueConversion;if(e){l.counts.minval*=e.scaleFactor;l.counts.maxval*=e.scaleFactor}if(c.length&&l.tw.q.convert2ZScore){const t=c.reduce(((t,e)=>t+e),0)/c.length;const e=Math.sqrt(c.reduce(((e,s)=>e+Math.pow(s-t,2)),0)/c.length);l.mean=t;l.std=e;l.counts.minval=(l.counts.minval-t)/e;l.counts.maxval=(l.counts.maxval-t)/e}if(!l.tw.settings)l.tw.settings={};if(!l.tw.settings.barh)l.tw.settings.barh=t.barh;if(!("gap"in l.tw.settings))l.tw.settings.gap=4;const s=l.tw.settings.barh;const a=Math.abs(l.counts.minval);const o=l.counts.minval<0&&l.counts.maxval>0;const i=l.counts.minval>=0?1:l.counts.maxval/(a+l.counts.maxval);l.counts.posMaxHt=i*s;const r=[l.counts.maxval,l.counts.minval];l.scales={tickValues:r,full:n().domain(r).range([1,s])};if(l.counts.maxval>=0){const t=o?0:l.counts.minval;l.scales.pos=n().domain([t,l.counts.maxval]).range([1,l.counts.posMaxHt])}if(l.counts.minval<0){const t=o?0:l.counts.maxval;l.scales.neg=n().domain([t,l.counts.minval]).range([1,s-l.counts.posMaxHt])}}l.totalHtAdjustments=i;l.rowHt=l.grp.type=="hierCluster"?t.clusterRowh:l.tw.settings?l.tw.settings.barh+2*l.tw.settings.gap:e;const h=l.rowHt-e-(l.grp.type=="hierCluster"?t.rowspace:0);i+=h;l.cumulativeAdjustment=i;if(!(l.visibleGrpIndex in s))s[l.visibleGrpIndex]={htAdjustment:0};s[l.visibleGrpIndex].htAdjustment+=h;l.grpTotals=s[l.visibleGrpIndex]}for(const t of this.termOrder){if(t.tw.term.type=="geneVariant"){if("maxLoss"in this.cnvValues||"maxGain"in this.cnvValues){t.scales={loss:h,gain:p,maxLoss:this.cnvValues.maxLoss,maxGain:this.cnvValues.maxGain,minLoss:this.cnvValues.minLoss,minGain:this.cnvValues.minGain}}}}}function g(){const t=this.settings.matrix;const[e,s]=!t.transpose?["sample","term"]:["term","sample"];const[a,n]=t.collabelpos=="top"?["","Grp"]:["Grp",""];const[c,m]=t.rowlabelpos=="left"?["","Grp"]:["Grp",""];const h=e+a;const f=e+n;const p=s+c;const u=s+m;this.samples=this.sampleOrder;this.sampleGrps=this.sampleOrder.filter((t=>t.index===0));this.terms=this.termOrder;this.termGrps=this.termOrder.filter((t=>t.index===0));const d={};const b={top:h,btm:f,left:p,right:u};for(const e in b){const s=b[e];const a=e[0].toUpperCase()+e.slice(1);d[e]={prefix:s,data:this[`${s}s`],offset:t[`${s}LabelOffset`],box:this.dom[`${s}LabelG`],key:this[`${s}Key`],label:this[`${s}Label`],render:this[`render${a}Label`],isGroup:b[e].includes("Grp")}}const g=d.top.offset+t.margin.top+t.scrollHeight;const x=d.left.offset+t.margin.left;this.setAutoDimensions(x);this.setLabelsAndScales();const v=Math.max(t.colwMin,Math.min(t.colwMax,t.colw*t.zoomLevel));const w=v+t.colspace;const G=this[`${e}s`].length;const M=t.rowh+t.rowspace;const C=this[`${s}s`].length;const L=G*(v+t.colspace)+this[`${e}Grps`].length*t.colgspace+(this[`${e}s`].slice(-1)[0]?.totalHtAdjustments||0);const V=Math.min(L,this.availContentWidth);const y=this[`${s}s`].slice(-1)[0];const $=C*M+(this[`${s}Grps`].length-1)*t.rowgspace+(y?.cumulativeAdjustment||0);const T=Math.min(Math.max(v+t.colspace-2*t.collabelpad-t.colspace,t.minLabelFontSize),t.maxLabelFontSize);const z=a=="Grp"?t.grpLabelFontSize:T;d.top.attr={boxTransform:`translate(${x}, ${g-t.collabelgap})`,adjustBoxTransform:e=>d.top.box.attr("transform",`translate(${x+e}, ${g-t.collabelgap})`),labelTransform:"rotate(-90)",labelAnchor:"start",labelGY:0,labelGTransform:this[`col${a}LabelGTransform`],fontSize:z,textpos:{coord:"y",factor:-1},axisFxn:o};if(d.top.prefix=="sample")d.top.display=this.chartType!=="hierCluster"&&v>=t.minLabelFontSize?"":"none";const S=n=="Grp"?t.grpLabelFontSize:T;d.btm.attr={boxTransform:`translate(${x}, ${g+$+t.collabelgap})`,adjustBoxTransform:e=>d.btm.box.attr("transform",`translate(${x+e}, ${g+$+t.collabelgap})`),labelTransform:"rotate(-90)",labelAnchor:"end",labelGY:0,labelGTransform:this[`col${n}LabelGTransform`],fontSize:S,textpos:{coord:"y",factor:1},axisFxn:i};if(d.btm.prefix=="sample")d.btm.display=v>=t.minLabelFontSize?"":"none";const F=c=="Grp"?t.grpLabelFontSize:Math.max(t.rowh+t.rowspace-2*t.rowlabelpad-t.rowspace,t.minLabelFontSize);d.left.attr={boxTransform:`translate(${x-t.rowlabelgap}, ${g})`,labelTransform:"",labelAnchor:"end",labelGX:0,labelGTransform:this[`row${c}LabelGTransform`],fontSize:F,textpos:{coord:"x",factor:-1},axisFxn:l};const W=m=="Grp"?t.grpLabelFontSize:Math.max(t.rowh+t.rowspace-2*t.rowlabelpad,t.minLabelFontSize);d.right.attr={boxTransform:`translate(${x+V+t.rowlabelgap}, ${g})`,labelTransform:"",labelAnchor:"start",labelGX:0,labelGTransform:this[`row${m}LabelGTransform`],fontSize:W,textpos:{coord:"x",factor:1},axisFxn:r};this.dom.sampleLabelsPG.attr("clip-path",t.transpose?"":`url(#${this.seriesClipId})`);this.dom.termLabelsPG.attr("clip-path",t.transpose?`url(#${this.seriesClipId})`:"");this.layout=d;if(!t.zoomCenterPct){t.zoomCenterPct=.5;t.zoomIndex=Math.round(t.zoomCenterPct*V/w);t.zoomGrpIndex=this.sampleOrder[t.zoomIndex]?.grpIndex||0}const O=t.zoomCenterPct*V;const A=t.zoomIndex*w+t.zoomGrpIndex*t.colgspace;const B=G*w+(this[`${e}Grps`].length-1)*t.colgspace;const I=t.zoomLevel<=1&&V>=B?0:Math.max(O-A,V-B);const j=(t.imgWMax>B?B:t.imgWMax)-1e-7;const D=.5*j;const H=Math.max(0,A+D-B);const N=Math.max(0,A-Math.min(D,j)-H);const P=t.zoomLevel<=1&&V>=B?0:N;const _=j+P;this.dimensions={xMin:P,xMax:_,dx:w,dy:M,xOffset:x,yOffset:g,mainw:V,mainh:$,colw:v,zoomedMainW:B,seriesXoffset:I>0?0:I,maxMainW:Math.max(L,this.availContentWidth),imgW:j,pxw:1/window.devicePixelRatio}}var x=Object.freeze({__proto__:null,setAutoDimensions:u,getMaxGrpLabelWidth:d,setLabelsAndScales:b,setLayout:g});export{x as m};
|
|
1
|
+
import{bS as t,by as e,P as s,ap as a,I as n}from"./app-b369b169.js";import{c as o,a as i,b as l,d as r}from"./axis-747c801e.js";var c=e=>t(e[e.length-1]);var m=new Array(3).concat("deebf79ecae13182bd","eff3ffbdd7e76baed62171b5","eff3ffbdd7e76baed63182bd08519c","eff3ffc6dbef9ecae16baed63182bd08519c","eff3ffc6dbef9ecae16baed64292c62171b5084594","f7fbffdeebf7c6dbef9ecae16baed64292c62171b5084594","f7fbffdeebf7c6dbef9ecae16baed64292c62171b508519c08306b").map(e);var h=c(m);var f=new Array(3).concat("fee0d2fc9272de2d26","fee5d9fcae91fb6a4acb181d","fee5d9fcae91fb6a4ade2d26a50f15","fee5d9fcbba1fc9272fb6a4ade2d26a50f15","fee5d9fcbba1fc9272fb6a4aef3b2ccb181d99000d","fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181d99000d","fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181da50f1567000d").map(e);var p=c(f);function u(t){const e=this.state.config.settings.matrix;if(!this.autoDimensions)this.autoDimensions=new Set;if(!e.colw)this.autoDimensions.add("colw");else this.autoDimensions.delete("colw");if(!e.rowh)this.autoDimensions.add("rowh");else this.autoDimensions.delete("rowh");const a=this.settings.matrix;this.computedSettings={useCanvas:this.sampleOrder.length>e.svgCanvasSwitch};if(a.availContentWidth){this.availContentWidth=a.availContentWidth}else{let e=this.dom.contentNode.getBoundingClientRect().width;if(e<600)e=window.document.body.clientWidth;const s=this.getMaxGrpLabelWidth();const n=Math.max(65,s);const o=this.state.config.settings.hierCluster?.xDendrogramHeight||0;this.availContentWidth=e-n-a.margin.right-t-o}if(this.autoDimensions.has("colw")){const t=a.colgspace*Math.max(0,this.visibleSampleGrps.size-1);const e=this.sampleOrder.length*a.colspace+t;const s=(this.availContentWidth-e)/this.sampleOrder.length;const n=Math.max(a.colwMin,Math.min(s,a.colwMax));const o=(this.availContentWidth-t)/this.sampleOrder.length;const i=Math.max(a.colwMin,Math.min(o,a.colwMax));if(a.zoomLevel<1||i*a.zoomLevel<2){this.computedSettings.colw=o;this.computedSettings.colspace=0}else{this.computedSettings.colw=n;this.computedSettings.colspace=a.colspace}}const n=this.state.config.settings.hierCluster?.yDendrogramHeight||0;const o=screen.availHeight-n;this.computedSettings.clusterRowh=Math.min(a.rowhMax,Math.max(a.rowhMin,Math.floor(o/this.numClusterTerms)));s(this.settings.matrix,this.computedSettings)}function d(){const t=this.settings.matrix;const e=this.dom.svg.append("g").attr("opacity",.01);let s=0;for(const a of this.termGroups){const n=!a.name?"":a.name.length<=t.termGrpLabelMaxChars?a.name:a.name.slice(0,t.termGrpLabelMaxChars)+"…";const o=e.append("text").text(n).attr("font-size",12);const i=o.node().getBBox();if(s<i.width)s=i.width}e.remove();return s}function b(){const t=this.settings.matrix;this.cnvValues={};const e=t.transpose?t.colw:t.rowh;const s={};const o={sampleGrpByName:{},termGrpByName:{}};let i=0;for(const l of this.termOrder){const r=new Set;l.counts={samples:0,hits:0};const c=[];l.counts.subGroupCounts={};for(const t of this.sampleGroups){l.counts.subGroupCounts[t.name]={samplesTotal:0,classes:{}};if(l.tw.term.type=="geneVariant"){l.counts.subGroupCounts[t.name].samplesNotTested=0}}if(!o.termGrpByName[l.grp.name||""]){const e=l.grp.name||"";l.grp.label=e.length<=t.termGrpLabelMaxChars?e:e.slice(0,t.termGrpLabelMaxChars)+"…";o.termGrpByName[e]=l.grp.label}for(const e of this.sampleOrder){if(r.has(e.row.sample))continue;const s=e.grp.name||"";if(!(s in o.sampleGrpByName)){e.grp.label=s.length<=t.sampleGrpLabelMaxChars?s:s.slice(0,t.sampleGrpLabelMaxChars)+"…";if(this.config.divideBy)e.grp.label+=` (${e.grp.lst.length})`;o.sampleGrpByName[s]=e.grp.label}const n=e.row._ref_.label||"";e.label=n.length<=t.collabelmaxchars?n:n.slice(0,t.collabelmaxchars)+"…";const i=e.row[l.tw.$id];if(!i)continue;const{filteredValues:m,countedValues:h,renderedValues:f}=this.classifyValues(i,l.tw,l.grp,this.settings.matrix,e.row);i.filteredValues=m;i.countedValues=h;i.renderedValues=f;if(i.countedValues?.length){l.counts.samples+=1;l.counts.hits+=i.countedValues.length;if(l.tw.q?.mode=="continuous"){const t=i.value;if(!l.tw.term.values?.[t]?.uncomputable){if(!("minval"in l.counts)||l.counts.minval>t)l.counts.minval=t;if(!("maxval"in l.counts)||l.counts.maxval<t)l.counts.maxval=t}}if(l.tw.term.type=="geneVariant"&&i.values){for(const e of i.values){if(e.dt==a&&"value"in e&&!t.ignoreCnvValues){const t=e.value;if(t<0){if(!("minLoss"in this.cnvValues)||this.cnvValues["minLoss"]>t)this.cnvValues["minLoss"]=t;if(!("maxLoss"in this.cnvValues)||this.cnvValues["maxLoss"]<t)this.cnvValues["maxLoss"]=t}else{if(!("minGain"in this.cnvValues)||this.cnvValues["minGain"]>t)this.cnvValues["minGain"]=t;if(!("maxGain"in this.cnvValues)||this.cnvValues["maxGain"]<t)this.cnvValues["maxGain"]=t}}}}}if(l.tw.q?.mode=="continuous"&&f?.length&&l.grp.type!="hierCluster"){c.push(l.tw.term.valueConversion?l.tw.term.valueConversion.scaleFactor*(f[0].value||f[0]):f[0].value||f[0])}const p=l.counts.subGroupCounts?.[e.grp.name];const u=i.filteredValues.filter((t=>{if(l.tw.term.type=="geneVariant"){if(t.class=="WT"||t.class=="Blank")return false}return true}));if(u.length){if(l.tw.term.type=="geneVariant"){let e=false;for(const s of u){if(t.geneVariantCountSamplesSkipMclass.includes(s.class)){if(!p.notTestedClasses)p.notTestedClasses={};if(!(s.class in p.notTestedClasses))p.notTestedClasses[s.class]=1;else p.notTestedClasses[s.class]+=1}else if(!(s.class in p.classes)){if(!e){p.samplesTotal+=1;e=true}p.classes[s.class]=1}else{if(!e){p.samplesTotal+=1;e=true}p.classes[s.class]+=1}}}else{p.samplesTotal+=1;for(const t of u){if(!(t in p.classes))p.classes[t]=1;else p.classes[t]+=1}}}if(i.filteredValues?.length&&l.tw.term.type=="geneVariant"){const t=i.filteredValues.every((t=>t.class=="Blank"));if(t){p.samplesNotTested+=1}}}l.label=l.tw.label||l.tw.term.name;if(l.label.length>t.rowlabelmaxchars)l.label=l.label.slice(0,t.rowlabelmaxchars-1)+"…";const m=this.config?.settings.hierCluster?.termGroupName;if(t.samplecount4gene&&l.tw.term.type.startsWith("gene")&&(!m||l.grp.name!==m)){const e=t.samplecount4gene==="abs"?l.counts.samples:(100*l.counts.samples/this.sampleOrder.length).toFixed(1)+"%";l.label=`${l.label} (${e})`}if(l.grp.type!=="hierCluster"&&l.tw.q?.mode=="continuous"){const e=l.tw.term.valueConversion;if(e){l.counts.minval*=e.scaleFactor;l.counts.maxval*=e.scaleFactor}if(c.length&&l.tw.q.convert2ZScore){const t=c.reduce(((t,e)=>t+e),0)/c.length;const e=Math.sqrt(c.reduce(((e,s)=>e+Math.pow(s-t,2)),0)/c.length);l.mean=t;l.std=e;l.counts.minval=(l.counts.minval-t)/e;l.counts.maxval=(l.counts.maxval-t)/e}if(!l.tw.settings)l.tw.settings={};if(!l.tw.settings.barh)l.tw.settings.barh=t.barh;if(!("gap"in l.tw.settings))l.tw.settings.gap=4;const s=l.tw.settings.barh;const a=Math.abs(l.counts.minval);const o=l.counts.minval<0&&l.counts.maxval>0;const i=l.counts.minval>=0?1:l.counts.maxval/(a+l.counts.maxval);l.counts.posMaxHt=i*s;const r=[l.counts.maxval,l.counts.minval];l.scales={tickValues:r,full:n().domain(r).range([1,s])};if(l.counts.maxval>=0){const t=o?0:l.counts.minval;l.scales.pos=n().domain([t,l.counts.maxval]).range([1,l.counts.posMaxHt])}if(l.counts.minval<0){const t=o?0:l.counts.maxval;l.scales.neg=n().domain([t,l.counts.minval]).range([1,s-l.counts.posMaxHt])}}l.totalHtAdjustments=i;l.rowHt=l.grp.type=="hierCluster"?t.clusterRowh:l.tw.settings?l.tw.settings.barh+2*l.tw.settings.gap:e;const h=l.rowHt-e-(l.grp.type=="hierCluster"?t.rowspace:0);i+=h;l.cumulativeAdjustment=i;if(!(l.visibleGrpIndex in s))s[l.visibleGrpIndex]={htAdjustment:0};s[l.visibleGrpIndex].htAdjustment+=h;l.grpTotals=s[l.visibleGrpIndex]}for(const t of this.termOrder){if(t.tw.term.type=="geneVariant"){if("maxLoss"in this.cnvValues||"maxGain"in this.cnvValues){t.scales={loss:h,gain:p,maxLoss:this.cnvValues.maxLoss,maxGain:this.cnvValues.maxGain,minLoss:this.cnvValues.minLoss,minGain:this.cnvValues.minGain}}}}}function g(){const t=this.settings.matrix;const[e,s]=!t.transpose?["sample","term"]:["term","sample"];const[a,n]=t.collabelpos=="top"?["","Grp"]:["Grp",""];const[c,m]=t.rowlabelpos=="left"?["","Grp"]:["Grp",""];const h=e+a;const f=e+n;const p=s+c;const u=s+m;this.samples=this.sampleOrder;this.sampleGrps=this.sampleOrder.filter((t=>t.index===0));this.terms=this.termOrder;this.termGrps=this.termOrder.filter((t=>t.index===0));const d={};const b={top:h,btm:f,left:p,right:u};for(const e in b){const s=b[e];const a=e[0].toUpperCase()+e.slice(1);d[e]={prefix:s,data:this[`${s}s`],offset:t[`${s}LabelOffset`],box:this.dom[`${s}LabelG`],key:this[`${s}Key`],label:this[`${s}Label`],render:this[`render${a}Label`],isGroup:b[e].includes("Grp")}}const g=d.top.offset+t.margin.top+t.scrollHeight;const x=d.left.offset+t.margin.left;this.setAutoDimensions(x);this.setLabelsAndScales();const v=Math.max(t.colwMin,Math.min(t.colwMax,t.colw*t.zoomLevel));const w=v+t.colspace;const G=this[`${e}s`].length;const M=t.rowh+t.rowspace;const C=this[`${s}s`].length;const L=G*(v+t.colspace)+this[`${e}Grps`].length*t.colgspace+(this[`${e}s`].slice(-1)[0]?.totalHtAdjustments||0);const V=Math.min(L,this.availContentWidth);const y=this[`${s}s`].slice(-1)[0];const $=C*M+(this[`${s}Grps`].length-1)*t.rowgspace+(y?.cumulativeAdjustment||0);const T=Math.min(Math.max(v+t.colspace-2*t.collabelpad-t.colspace,t.minLabelFontSize),t.maxLabelFontSize);const z=a=="Grp"?t.grpLabelFontSize:T;d.top.attr={boxTransform:`translate(${x}, ${g-t.collabelgap})`,adjustBoxTransform:e=>d.top.box.attr("transform",`translate(${x+e}, ${g-t.collabelgap})`),labelTransform:"rotate(-90)",labelAnchor:"start",labelGY:0,labelGTransform:this[`col${a}LabelGTransform`],fontSize:z,textpos:{coord:"y",factor:-1},axisFxn:o};if(d.top.prefix=="sample")d.top.display=this.chartType!=="hierCluster"&&v>=t.minLabelFontSize?"":"none";const S=n=="Grp"?t.grpLabelFontSize:T;d.btm.attr={boxTransform:`translate(${x}, ${g+$+t.collabelgap})`,adjustBoxTransform:e=>d.btm.box.attr("transform",`translate(${x+e}, ${g+$+t.collabelgap})`),labelTransform:"rotate(-90)",labelAnchor:"end",labelGY:0,labelGTransform:this[`col${n}LabelGTransform`],fontSize:S,textpos:{coord:"y",factor:1},axisFxn:i};if(d.btm.prefix=="sample")d.btm.display=v>=t.minLabelFontSize?"":"none";const F=c=="Grp"?t.grpLabelFontSize:Math.max(t.rowh+t.rowspace-2*t.rowlabelpad-t.rowspace,t.minLabelFontSize);d.left.attr={boxTransform:`translate(${x-t.rowlabelgap}, ${g})`,labelTransform:"",labelAnchor:"end",labelGX:0,labelGTransform:this[`row${c}LabelGTransform`],fontSize:F,textpos:{coord:"x",factor:-1},axisFxn:l};const W=m=="Grp"?t.grpLabelFontSize:Math.max(t.rowh+t.rowspace-2*t.rowlabelpad,t.minLabelFontSize);d.right.attr={boxTransform:`translate(${x+V+t.rowlabelgap}, ${g})`,labelTransform:"",labelAnchor:"start",labelGX:0,labelGTransform:this[`row${m}LabelGTransform`],fontSize:W,textpos:{coord:"x",factor:1},axisFxn:r};this.dom.sampleLabelsPG.attr("clip-path",t.transpose?"":`url(#${this.seriesClipId})`);this.dom.termLabelsPG.attr("clip-path",t.transpose?`url(#${this.seriesClipId})`:"");this.layout=d;if(!t.zoomCenterPct){t.zoomCenterPct=.5;t.zoomIndex=Math.round(t.zoomCenterPct*V/w);t.zoomGrpIndex=this.sampleOrder[t.zoomIndex]?.grpIndex||0}const O=t.zoomCenterPct*V;const A=t.zoomIndex*w+t.zoomGrpIndex*t.colgspace;const B=G*w+(this[`${e}Grps`].length-1)*t.colgspace;const I=t.zoomLevel<=1&&V>=B?0:Math.max(O-A,V-B);const j=(t.imgWMax>B?B:t.imgWMax)-1e-7;const D=.5*j;const H=Math.max(0,A+D-B);const N=Math.max(0,A-Math.min(D,j)-H);const P=t.zoomLevel<=1&&V>=B?0:N;const _=j+P;this.dimensions={xMin:P,xMax:_,dx:w,dy:M,xOffset:x,yOffset:g,mainw:V,mainh:$,colw:v,zoomedMainW:B,seriesXoffset:I>0?0:I,maxMainW:Math.max(L,this.availContentWidth),imgW:j,pxw:1/window.devicePixelRatio}}var x=Object.freeze({__proto__:null,setAutoDimensions:u,getMaxGrpLabelWidth:d,setLabelsAndScales:b,setLayout:g});export{x as m};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{s as e}from"./legacy-d3-polyfill-bdb2d792.js";import{a8 as t,af as r,ak as s}from"./app-b369b169.js";import{i}from"./termsetting-33ea66f1.js";function n(n,o,l){const d=this.settings.matrix;const a=[];const c=this.config.divideBy||{};const u=c&&"id"in c?c.id:c.name;for(const s in n){const o=n[s];if(s=="Consequences"){for(const e of this.config.legendValueFilter.lst){if(e.tvs.term.type!=="geneVariant")continue;if(e.legendGrpName!=s)continue;if(e.tvs.legendFilterType=="geneVariant_soft"&&e.filteredOutCats.length==0){continue}for(const t of e.tvs.values){for(const r of t.mclasslst){const s=t.origin?t.origin+r:r;o.values[s]={key:r,dt:t.dt,origin:t.origin,label:t.label||l.mclass[r].label,fill:t.color||l.mclass[r]?.color,order:r=="CNV_loss"?-2:r.startsWith("CNV_")?-1:0,crossedOut:e.tvs.legendFilterType=="geneVariant_hard"?true:false,greyedOut:e.tvs.legendFilterType=="geneVariant_soft"?true:false}}}}const e=Object.keys(o.values);if(!e.length)continue;a.unshift({name:"Consequences",order:o.order,$id:o.$id,dt:o.dt,origin:o.origin,items:e.map(((e,t)=>{const r=o.values[e];const s=r.samples?.size;return{termid:"Consequences",key:r.key,text:this.getLegendItemText(r,s,{},d),color:r.fill,order:t,border:"1px solid #ccc",count:s,isLegendItem:true,dt:r.dt,crossedOut:r.crossedOut,greyedOut:r.greyedOut,origin:r.origin}}))});a[0].items.sort(((e,t)=>e.text<t.text?-1:1));continue}const g=s==u?{tw:c}:this.termOrder.find((e=>e.tw.$id==s||e.tw.legend?.group==s))||{tw:{term:{id:s,name:s,type:s==="CNV"?"geneVariant":""}}};for(const e of this.config.legendValueFilter.lst){const t=g.tw.legend?.group||g.tw.label||g.tw.term.name;if(e.legendGrpName!=s&&e.legendGrpName!=t&&e.tvs.term.name!=t)continue;if(e.tvs.term.type=="geneVariant"){for(const t of e.tvs.values){if(o.dt&&!o.dt.includes(t.dt))o.dt.push(t.dt);if(e.tvs.legendFilterType=="geneVariant_soft"&&e.filteredOutCats.length==0){continue}for(const r of t.mclasslst){const s=t.origin?t.origin+r:r;o.values[s]={key:r,dt:t.dt,origin:t.origin,label:t.label||l.mclass[r].label,fill:t.color||l.mclass[r]?.color,order:r=="CNV_loss"?-2:r.startsWith("CNV_")?-1:0,crossedOut:e.tvs.legendFilterType=="geneVariant_hard"?true:false,greyedOut:e.tvs.legendFilterType=="geneVariant_soft"?true:false}}}}else{if(i(e.tvs.term)){if(g.ref?.bins){for(const t of e.tvs.ranges){const e=g.ref.bins;o.values[t.name]={key:t.name,label:e?.find((e=>e.name==t.name))?.name||t.name,fill:e?.find((e=>e.name==t.name))?.color,crossedOut:true}}}}else if(e.tvs.term.type=="survival"){for(const t of e.tvs.values){const e=g.tw.term.values;o.values[t.key]={key:t.key,label:e?.[t.key]?.label||"Exit code: "+t.key,fill:t.key==1?"#ff7f0e":"#1f77b4",crossedOut:true}}}else{for(const t of e.tvs.values){const e=g.tw.term.values;o.values[t.key]={key:t.key,label:e?.[t.key]?.label||t.key,fill:e?.[t.key]?.color,crossedOut:true}}}}}const m=Object.keys(o.values).sort();const f=Object.values(o.values).find((e=>e.scale));if(f){const e=d.legendGrpLabelMaxChars||26;a.push({name:s.length<e?s:s.slice(0,e)+"...",order:o.order,$id:o.$id,dt:o.dt,origin:o.origin,hasScale:f,items:m.map(((e,t)=>{const r=o.values[e];const i=r.samples?.size;if(r.scale){return{termid:s,key:r.key,text:this.getLegendItemText(r,i,g,d),width:100,scale:r.scale,domain:r.domain,minLabel:r.minLabel,maxLabel:r.maxLabel,order:"order"in r?r.order:t,count:i,isLegendItem:true,dt:r.dt,crossedOut:r.crossedOut,greyedOut:r.greyedOut,origin:r.origin}}else{return{termid:s,key:r.key,text:this.getLegendItemText(r,i,g,d),color:r.fill||this.colorScaleByTermId[s](e),order:"order"in r?r.order:t,count:i,isLegendItem:true,dt:r.dt,crossedOut:r.crossedOut,greyedOut:r.greyedOut,origin:r.origin}}}))})}else{const i=s;const n=g.tw.term;const l=o.ref;if(l.bins)m.sort(((e,t)=>l.bins.findIndex((t=>t.name===e))-l.bins.findIndex((e=>e.name===t))));else if(l.keyOrder)m.sort(((e,t)=>l.keyOrder.indexOf(e)-l.keyOrder.indexOf(t)));if(!this.colorScaleByTermId[i])this.colorScaleByTermId[i]=m.length<11?t(r):t(e);const c=g.tw.legend?.group||g.tw.label||n.name;const u=d.legendGrpLabelMaxChars||26;a.push({name:c.length<u?c:c.slice(0,u)+"...",order:o.order,$id:o.$id,dt:o.dt,origin:o.origin,items:m.map(((e,t)=>{const r=o.values[e];const l=r.samples?.size;return{$id:s,termid:n.id||n.name,key:r.key,text:this.getLegendItemText(r,l,g,d),color:g.scale||r.fill||this.colorScaleByTermId[i](e),order:"order"in r?r.order:t,count:l,isExcluded:r.isExcluded,isLegendItem:true,dt:r.dt,crossedOut:r.crossedOut,greyedOut:r.greyedOut,origin:r.origin}}))})}}for(const e of l.config.legendGrpFilter.lst){if(e.dt.length==1&&e.dt[0]==4&&!a.filter((e=>e.dt))?.find((e=>e.dt.length==1&&e.dt[0]==4))){a.push({name:"CNV",dt:e.dt,origin:e.origin,crossedOut:true,items:e.filteredOutCats.map((t=>({dt:4,termid:"CNV",origin:e.origin,key:t,text:l.mclass[t].label,color:l.mclass[t]?.color,isLegendItem:true})))})}else if(e.dt.includes(s)){const t=l.settings.matrix.controlLabels;const r=e.origin?`${e.origin[0].toUpperCase()+e.origin.slice(1)} ${t.Mutations}`:t.Mutations;if(!a.filter((e=>e.dt))?.find((t=>t.dt.includes(s)&&t.origin==e.origin))){a.push({name:r,dt:e.dt,origin:e.origin,crossedOut:true,items:e.filteredOutCats.map((t=>({dt:l.mclass[t].dt,origin:e.origin,termid:r,key:t,text:l.mclass[t].label,color:l.mclass[t]?.color,isLegendItem:true})))})}}else if(e.dt.length==1&&e.dt[0]==2&&!a.filter((e=>e.dt))?.find((e=>e.dt.length==1&&e.dt[0]==2))){a.push({name:"Fusion RNA",dt:e.dt,origin:e.origin,crossedOut:true,items:e.filteredOutCats.map((t=>({dt:2,origin:e.origin,termid:"Fusion RNA",key:t,text:l.mclass[t].label,color:l.mclass[t]?.color,isLegendItem:true})))})}else if(e.dt.length==1&&e.dt[0]==5&&!a.filter((e=>e.dt))?.find((e=>e.dt.length==1&&e.dt[0]==5))){a.push({name:"Structural Variation",dt:e.dt,origin:e.origin,crossedOut:true,items:e.filteredOutCats.map((t=>({dt:5,origin:e.origin,termid:"Structural Variation",key:t,text:l.mclass[t].label,color:l.mclass[t]?.color,isLegendItem:true})))})}}for(const e of a){e.items.sort(((e,t)=>{const r=e=>{if(!e.greyedOut&&!e.crossedOut)return 0;if(e.greyedOut&&!e.crossedOut)return 1;if(e.crossedOut)return 2;return 3};return r(e)-r(t)}))}return a.sort(((e,t)=>e.crossedOut&&t.crossedOut?0:e.crossedOut?1:t.crossedOut?-1:e.order&&t.order?e.order-t.order:e.order?-1:t.order?1:0))}function o(e,t,r,s){if(e.crossedOut||e.greyedOut){return e.label}let i=e.label;const n=[t];if(e.isExcluded)n.push("hidden");if(r?.tw?.term?.type=="geneVariant"&&s.geneVariantCountSamplesSkipMclass.includes(e.key))n.push("not counted");if(!n.length)return i;return i+=` (${n.join(", ")})`}var l=Object.freeze({__proto__:null,getLegendData:n,getLegendItemText:o});export{l as m};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{i as t,h as e,f as s}from"./termsetting-33ea66f1.js";import{d as r}from"./app-b369b169.js";import"./tslib.es6-c3c2d88f.js";import"path";function a(a){a.render=function(){const t=a.settings.matrix;const e=a.layout;const s=a.dimensions;const r=a.dom.svg.attr("width")?t.duration:0;a.dom.clipRect.attr("x",s.xOffset-1).attr("y",0).attr("width",s.mainw+3).attr("height",s.mainh+500);a.renderSerieses(t,e,s,r);a.renderLabels(t,e,s,r);a.renderDivideByLabel(t,e,s,r);a.dom.colBeam.attr("width",s.dx).attr("height",s.mainh).style("stroke",t.beamStroke);a.dom.rowBeam.attr("width",s.zoomedMainW).attr("height",t.rowh).style("stroke",t.beamStroke)};a.renderSerieses=function(t,e,s,r){if(a.prevUseCanvas!=t.useCanvas){a.dom.seriesesG.selectAll("g").remove()}if(t.useCanvas){const e=a.dom.seriesesG.selectAll("g");const n=a.dom.seriesesG.append("g").datum(this.serieses);a.renderCanvas(this.serieses,n,s,t,e,r)}else{a.dom.seriesesG.attr("transform",`translate(${s.xOffset+s.seriesXoffset},${s.yOffset})`);const t=a.dom.seriesesG.selectAll(".sjpp-mass-series-g").data(this.serieses,(t=>t.tw.$id));t.exit().remove();t.each(a.renderSeries);t.enter().append("g").attr("class","sjpp-mass-series-g").style("opacity",.001).each(a.renderSeries);a.mouseout()}a.prevUseCanvas=t.useCanvas};a.renderSeries=async function(t){const e=a.settings.matrix;a.dimensions;const s=r(this);s.attr("transform")?e.duration:0;s.attr("transform",`translate(${t.x},${t.y})`).style("opacity",1);const n=t.cells[t.cells.length-1];t.y+n?.y+e.rowh;const o=s.selectAll("rect").data(t.cells,(t=>t.sample+";;"+t.tw.$id+";;"+t.valueIndex));o.exit().remove();o.each(a.renderCell);o.enter().append("rect").each(a.renderCell)};a.renderCanvas=async function(t,e,s,r,n,o){const i=window.devicePixelRatio<=1?1:window.devicePixelRatio;e.selectAll("*").remove();const l=s.imgW;const c=a.dimensions.mainh;const d=window.OffscreenCanvas?new OffscreenCanvas(l*i,c*i):a.dom.holder.append("canvas").attr("width",i*l).attr("height",i*c).style("opacity",0).node();const m=d.getContext("2d");m.imageSmoothingEnabled=false;m.imageSmoothingQuality="high";m.scale(i,i);for(const e of t){for(const t of e.cells){a.renderCellWithCanvas(m,t,e,r,s,e.y)}}if(window.OffscreenCanvas){const t=new FileReader;t.addEventListener("load",(()=>{n?.remove();a.dom.seriesesG.attr("transform",`translate(${s.xOffset+s.seriesXoffset},${s.yOffset})`);e.selectAll("image").remove();e.append("image").attr("xlink:href",t.result).attr("x",s.xMin).attr("width",l).attr("height",c)}),false);const r=await d.convertToBlob({quality:1});t.readAsDataURL(r)}else{n?.remove();a.dom.seriesesG.attr("transform",`translate(${s.xOffset+s.seriesXoffset},${s.yOffset})`);const t=d.toDataURL();e.append("image").attr("width",l).attr("height",c).attr("xlink:href",t);if(!window.OffscreenCanvas)d.remove()}a.mouseout()};a.renderCellWithCanvas=function(t,e,s,r,o,i){if(!e.fill)e.fill=e.$id in a.colorScaleByTermId?a.colorScaleByTermId[e.$id](e.key):n(e);const l=e.x?e.x-o.xMin:0;const c=i?i+e.y:e.y||0;const d=r.useMinPixelWidth?Math.max(e.width||o.colw,o.pxw):e.width||o.colw;const m="height"in e?e.height:r.rowh;t.fillStyle=e.fill;t.fillRect(l,c,d,m)};a.renderCell=function(t){if(!t.fill)t.fill=t.$id in a.colorScaleByTermId?a.colorScaleByTermId[t.$id](t.key):n(t);const e=a.settings.matrix;r(this).attr("x",t.x||0).attr("y",t.y||0).attr("width",t.width||a.dimensions.colw).attr("height","height"in t?Math.max(0,t.height):e.rowh).attr("shape-rendering","crispEdges").attr("stroke-width",0).attr("fill",t.fill)};a.renderLabels=function(t,e,s,n){for(const o of["top","btm","left","right"]){const i=e[o];i.box.style("display",i.display||"").attr("transform",i.attr.boxTransform);const l=i.box.selectAll(".sjpp-matrix-label").data(i.data,i.key);l.exit().remove();l.each(c);l.enter().append("g").attr("class","sjpp-matrix-label").each(c);function c(e){const s=r(this);s.attr("transform",i.attr.labelGTransform);if(!s.select(":scope>text").size())s.append("text");const n=!i.isGroup&&e.grp?.type!=="hierCluster"&&e.tw?.q?.mode=="continuous";const o=i.label(e);const l=s.select(":scope>text").attr("fill","#000");l.attr("display",e.grp?.type==="hierCluster"&&t.clusterRowh<6?"none":i.attr.fontSize<6||o==="configure"?"none":"").attr("font-size",e.grp?.type==="hierCluster"?t.clusterRowh:i.attr.fontSize).attr("text-anchor",i.attr.labelAnchor).attr("transform",i.attr.labelTransform).attr("cursor","pointer").attr(i.attr.textpos.coord,i.attr.textpos.factor*(n?30:0));if(!Array.isArray(o)){l.text(o);l.attr("y",e.grp?.type!=="hierCluster"&&e.tw?.q?.mode=="continuous"?10:e.grp?.type==="hierCluster"?.3*t.clusterRowh:0)}else{l.text("");const t=l.selectAll("tspan").data(o);t.enter().append("tspan").attr("class",d).attr("dx",m).attr("font-size",p).text(f)}l.on("mouseover",o==="configure"?()=>l.attr("opacity",.5):null).on("mouseout",o==="configure"?()=>l.attr("opacity",0):null);const c=s.select(".sjpp-matrix-cell-axis").size()&&true;if(n&&o){if(!c){s.append("g").attr("class","sjpp-matrix-cell-axis").attr("shape-rendering","crispEdges")}const r=s.select(".sjpp-matrix-cell-axis");r.selectAll("*").remove();[e.counts.maxval,e.counts.minval];if(t.transpose);a.dimensions;const n=!t.transpose?0:e.tw.settings.gap-1-e.labelOffset;const o=!t.transpose?e.tw.settings.gap-1-e.labelOffset:0;r.attr("shape-rendering","crispEdges").attr("transform",`translate(${n},${o})`).call(i.attr.axisFxn(e.scales.full.domain(e.scales.tickValues)).tickValues(e.scales.tickValues))}else if(c){s.select(".sjpp-matrix-cell-axis").remove()}}function d(t){return t.cls}function m(t){return t.dx}function p(t){return t.fontSize||i.attr.fontSize}function f(t){return t.text}}};a.colLabelGTransform=(t,e)=>{const s=a.settings.matrix;const r=a.dimensions;t.labelOffset=.8*r.colw;const n=t.grpIndex*s.colgspace+t.totalIndex*r.dx+t.labelOffset+t.totalHtAdjustments;const o=0;return`translate(${n+r.seriesXoffset},${o})`};a.colGrpLabelGTransform=(t,e)=>{const s=a.settings.matrix;const r=a.dimensions;const n=(t.processedLst||t.grp.lst).length;const o=t.grpIndex*s.colgspace+t.prevGrpTotalIndex*r.dx+n*r.dx/2+s.grpLabelFontSize/2+t.totalHtAdjustments;return`translate(${o+r.seriesXoffset},0)`};a.rowLabelGTransform=(t,e)=>{const s=a.settings.matrix;const r=a.dimensions;const n=0;t.labelOffset=.7*(t.grp.type=="hierCluster"?s.clusterRowh:s.rowh);const o=t.grpIndex*s.rowgspace+t.totalIndex*r.dy+t.labelOffset+t.totalHtAdjustments;return`translate(${n},${o})`};a.rowGrpLabelGTransform=(t,e)=>{const s=a.settings.matrix;const r=a.dimensions;const n=(t.processedLst||t.grp.lst).length;const o=t.grpIndex*s.rowgspace+t.prevGrpTotalIndex*r.dy+n*r.dy/2+s.grpLabelFontSize/2+t.totalHtAdjustments;return`translate(0,${o})`};a.rowAxisGTransform=(t,e)=>{const s=a.settings.matrix;const r=a.dimensions;const n=0;const o=t.grpIndex*s.rowgspace+t.totalIndex*r.dy+.7*s.rowh+t.totalHtAdjustments;return`translate(${n},${o})`};a.renderDivideByLabel=async(r,n,o)=>{a.dom.mainG.selectAll(".sjpp-matrix-divide-by-label").remove();if(!a.config.divideBy)return;const i=a.config.divideBy?.term.name||"";const l=i.length<=r.rowlabelmaxchars?i:i.slice(0,r.rowlabelmaxchars)+"…";const c=!r.transpose?[n.left,n.right]:[n.top,n.bottom];const d=c.find((t=>!t.isGroup))?.box;const m=(r.collabelpos=="top"?o.mainh+r.collabelmaxchars:-r.collabelmaxchars)+8;const p=r.rowlabelpos=="left"?"end":"start";const f=r.controlLabels;const g=d.append("g").attr("class","sjpp-matrix-divide-by-label").attr("transform",`translate(0, ${m})`);g.append("text").attr("text-anchor",p).attr("font-style","italic").attr("y",-20).text(`${f.Samples} grouped by`);const h=d.datum({tw:a.config.divideBy}).append("g").attr("class","sjpp-matrix-divide-by-label").attr("transform",`translate(0, ${m})`);const x=h.append("text").attr("text-anchor",p).attr("font-weight",600).text(l).on("click",((t,e)=>{w.showMenu(t,x.node())}));h.append("title").text(`${f.Samples} are grouped by this gene or variable. Click to edit.`);const u=[];const y=t(a.config.divideBy.term)?"ranges":"values";if(a.config.legendValueFilter.lst?.find((t=>t.legendGrpName==a.config.divideBy.term.id||t.legendGrpName==a.config.divideBy.term.name))?.tvs[y]?.length){u.push({label:`Show filtered ${f.samples}`,callback:a.showDeletedSampleGroups})}const w=await e({menuOptions:"{edit,replace,remove}",customMenuOptions:u,vocabApi:a.app.vocabApi,vocab:a.state.vocab,holder:h,debug:a.opts.debug,usecase:{target:"matrix"},getBodyParams:()=>{const t=a.termOrder.filter((t=>t.tw.term.type==="geneVariant")).map((t=>t.tw.term.chr?`${t.tw.term.chr}:${t.tw.term.start}-${t.tw.term.stop}`:t.tw.term.gene||t.tw.term.name));return{currentGeneNames:t}},callback:async e=>{if(a.dom.loadingDiv&&a.dom.svg){a.dom.loadingDiv.selectAll("*").remove();a.dom.loadingDiv.html("").style("display","").style("position","relative").style("left","45%");a.dom.loadingDiv.html("Processing data ...");a.dom.svg.style("opacity",.1).style("pointer-events","none")}if(e&&!e.q)throw"data.q{} missing from pill callback";if(e?.term&&t(e.term)){e.q={...e.q,mode:"discrete"}}if(e)await s(e,a.app.vocabApi);await w.main(e?e:{term:null,q:null});d.datum({tw:e});a.app.dispatch({type:"plot_edit",id:a.id,config:{divideBy:e,legendValueFilter:a.mayRemoveTvsEntry(a.config.divideBy)}})}});const v={term:a.config.divideBy.term,q:a.config.divideBy.q};if(a.config.divideBy.$id)v.$id=a.config.divideBy.$id;w.main(v)};a.adjustSvgDimensions=async function(t){const e=a.settings.matrix;const s=a.settings.hierCluster||{};const r=s.yDendrogramHeight||0;const n=s.xDendrogramHeight||0;const i=a.dimensions;const l=a.dom.svg.attr("width")?e.duration:0;await o(t==e.transpose?l:e.duration);const c=a.layout;const d=c.top.box.node().getBBox();const m=c.btm.box.node().getBBox();const p=c.left.box.node().getBBox();const f=c.right.box.node().getBBox();const g=a.dom.legendG.node().getBBox();a.dom.seriesesG.node().getBBox();i.extraWidth=p.width+f.width+e.margin.left+e.margin.right+e.rowlabelgap*2;i.extraHeight=d.height+m.height+e.margin.top+e.margin.bottom+e.collabelgap*2;i.svgw=i.mainw+i.extraWidth+n;i.svgh=i.mainh+i.extraHeight+g.height+20+e.scrollHeight+r;a.dom.svg.attr("width",i.svgw).attr("height",i.svgh);let h=a.type=="hierCluster"?0:p.width;if(s.xDendrogramHeight){a.dom.termLabelG.selectAll(".sjpp-matrix-label").each((function(t){if(t.grp.type!=="hierCluster")return;const e=this.getBBox();if(e.width>h){h=e.width;t.label.length}}))}const x=-c.left.offset+n+h;const u=!s.xDendrogramHeight?0:Math.max(p.width-(s.xDendrogramHeight+h),0);const y=(c.top.display=="none"?0:d.height)-c.top.offset+r;a.dom.mainG.attr("transform",`translate(${x+u},${y})`);a.dom.clipRect.attr("y",-y).attr("height",i.mainh+500+y);const w=i.xOffset+(e.transpose?20:0);const v=i.yOffset+i.mainh+e.collabelgap+(c.btm.display=="none"?0:m.height)+20;a.dom.legendG.attr("transform",`translate(${w},${v})`);if(s.xDendrogramHeight){const t=h+u-c.left.offset+i.xOffset-i.dx/2;a.dom.hcClipRect.attr("x",t+n+i.dx/2).attr("y",0).attr("width",i.mainw+3).attr("height",i.mainh+s.yDendrogramHeight+500);a.topDendroX=t+i.seriesXoffset;a.dom.topDendrogram.attr("transform",`translate(${a.topDendroX}, 0)`);const r=c.top.display=="none"?0:d.height+e.collabelgap;a.dom.leftDendrogram.attr("transform",`translate(${t-h-10}, ${r})`)}}}function n(t){if(t.fill)return t.fill;const e=t.class||Array.isArray(t.values)&&t.values[0].class;return e?mclass[e].color:"#555"}function o(t){return new Promise((e=>setTimeout(e,t)))}export{a as setRenderers};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{getEmptyCell as e,setCellProps as t,maySetEmptyCell as s}from"./matrix.cells-914dd0c6.js";import"./termsetting-33ea66f1.js";function i(i){const n=this.settings.matrix;const o=[];const{colw:l,dx:d,dy:a,xMin:c,xMax:p}=this.dimensions;const u=this.config.divideBy||{};const g="id"in u?u.id:u.name;const f={};this.colorScaleByTermId={};for(const i of this.termOrder){const r=i.tw.$id;const u="id"in i.tw.term?i.tw.term.id:i.tw.term.name;const m=u===g;const h=[];const v=i.grp.type=="hierCluster"?n.clusterRowh:a;const y=i.grp.type=="hierCluster"?0:i.totalHtAdjustments;const w=n.transpose?0:i.totalIndex*v+i.visibleGrpIndex*n.rowgspace+y;const x=(i.tw.settings?.gap||0)+w;const C={t:i,tw:i.tw,cells:[],y:w,hoverY0:x,hoverY1:x+(i.tw.settings?.barh||v)};for(const o of this.unfilteredSampleOrder){const{totalIndex:g,grpIndex:v,row:y}=o;C.x=!n.transpose?0:i.totalIndex*d+i.visibleGrpIndex*n.colgspace;const x=y[r];const $={s:o,sample:y.sample,tw:i.tw,term:i.tw.term,termid:u,$id:r,totalIndex:g,grpIndex:v,row:y,t:i,seriesY:w};if(!x){if(!o.grp.isExcluded&&(n.useCanvas||o.grp)){const t=e($,n,this.dimensions);C.cells.push(t)}continue}const I=x.key;const G=x.filteredValues||x.values||[x.value];const E=n.cellEncoding=="oncoprint"?1:G.length;const b=!n.transpose?n.rowh/E:l;const O=!n.transpose?l:l/G.length;const S=[];if(!x||!x.renderedValues?.length){if(!o.grp.isExcluded&&(n.useCanvas||o.grp)){const t=e($,n,this.dimensions);C.cells.push(t)}continue}for(const[e,s]of G.entries()){const l=Object.assign({key:I,siblingCells:S},$);l.valueIndex=e;let u;if(typeof i.tw.setCellProps=="function"){u=i.tw.setCellProps(l,x,s,n,i,this,O,b,d,a,e)}else{const r=i.grp.type=="hierCluster"?t["hierCluster"]:i.tw.term.type=="geneVariant"&&(i.tw?.q?.type=="predefined-groupset"||i.tw?.q?.type=="custom-groupset")?t["categorical"]:t[i.tw.term.type];u=r(l,i.tw,x,s,n,i,this,O,b,d,a,e)}if(!n.useCanvas&&(l.x+l.width<c||l.x-l.width>p))continue;if(u){for(const e of[f,o.grp.legendGroups]){if(!e)continue;if(!e[u.group]){e[u.group]={ref:u.ref,values:{},order:u.order,$id:r,origin:u.entry.origin};if(u.entry.dt)e[u.group].dt=[u.entry.dt]}const t=e[u.group];if(t.dt&&!t.dt.includes(u.entry.dt))t.dt.push(u.entry.dt);const s=u.entry.origin?u.entry.origin+u.value:u.value;if(!t.values[s]){t.values[s]=JSON.parse(JSON.stringify(u.entry));if(u.entry.scale)t.values[s].scale=u.entry.scale}if(!t.values[s].samples)t.values[s].samples=new Set;t.values[s].samples.add(y.sample);if(m){t.values[u.value].isExcluded=o.grp.isExcluded}}}if(!o.grp.isExcluded){if(x.renderedValues.includes(s))C.cells.push(l);S.push(l)}}if(n.showGrid=="rect"&&!o.grp.isExcluded){const t=i.grp.type=="hierCluster"?e($,n,this.dimensions):s[i.tw.term.type]?.(S,$,n,this.dimensions);if(t)h.push(t)}}if(h.length)C.cells.unshift(...h);if(C.cells.length)o.push(C)}r(f,this);this.legendData=this.getLegendData(f,i.refs,this);for(const e of this.sampleGroups){e.legendData=this.getLegendData(e.legendGroups,i.refs,this)}return o}function r(e,t){for(const s of t.config.legendValueFilter.lst){if(s.tvs.term.type=="categorical"&&!e[s.tvs.term.$id]){e[s.tvs.term.$id]={ref:{},values:{},$id:s.tvs.term.$id}}else if(s.tvs.term.type=="geneVariant"&&!e[s.legendGrpName]){e[s.legendGrpName]={ref:{},values:{},dt:[s.tvs.values[0].dt],origin:s.tvs.values[0].origin}}else if((s.tvs.term.type=="integer"||s.tvs.term.type=="float")&&!e[s.tvs.term.$id]){e[s.tvs.term.$id]={ref:{},values:{},$id:s.tvs.term.$id}}}}var n=Object.freeze({__proto__:null,getSerieses:i});export{n as m};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{b as e}from"./termsetting-33ea66f1.js";import{at as t,ak as r,ap as s,bE as i,bD as n}from"./app-b369b169.js";import"./tslib.es6-c3c2d88f.js";import"path";function o(t,r,s,i={}){const n=r;a(n);if(t.config.chartType=="hierCluster"&&t.config.settings.hierCluster.clusterSamples){return t.hcSampleSorter}if(n.sortSamplesBy=="asListed"){return(e,r)=>t.asListedSampleOrder.indexOf(e.sample)-t.asListedSampleOrder.indexOf(r.sample)}if(n.sortSamplesBy=="name"){return l}const o=n.sortOptions[n.sortSamplesBy];if(!o)throw`unsupported s.sortSamplesBy='${n.sortSamplesBy}'`;t.selectedTermsToSortAgainst=t.termOrder.filter((e=>e.tw.sortSamples));const p=t.selectedTermsToSortAgainst.map((e=>e.tw)).sort(((e,t)=>e.sortSamples.priority-t.sortSamples.priority));const m=[];const b=o.sortPriority;if(b){for(const e of p){const t=structuredClone(e);if(t.sortSamples?.by){m.push(Object.assign({},t));continue}for(const e of b){if(i.skipSorter?.(e,t))continue;if(!e.types.includes(t.term.type))continue;for(const r of e.tiebreakers){const e=Object.assign(structuredClone(t.sortSamples||{}),r);const s=Object.assign(structuredClone(t),{sortSamples:e});m.push(s)}}}}if(b){for(const e of b){for(const r of t.termOrder){if(p.find((e=>e.$id===r.tw.$id)))continue;if(i.skipSorter?.(e,r.tw))continue;if(!e.types.includes(r.tw.term.type))continue;for(const t of e.tiebreakers){m.push(Object.assign({},r.tw,{sortSamples:t}))}}}}else{const r=t.app.vocabApi.vocab?.dslabel=="PNET"?[]:t.termOrder.filter((t=>!t.tw.sortSamples&&e(t.tw.term.type)&&!p.find((e=>e.$id===t.tw.$id)))).map((e=>Object.assign({sortSamples:{by:"values"}},e.tw)));const s=t.app.vocabApi.vocab?.dslabel=="PNET"?[]:t.termOrder.filter((t=>!t.tw.sortSamples&&!e(t.tw.term.type)&&!p.find((e=>e.$id===t.tw.$id)))).map((e=>Object.assign({sortSamples:{by:"hits"}},e.tw)));m.push(...s,...r)}if(i.tiebreaker)m.push(i.tiebreaker);m.push(...n.sortSamplesTieBreakers.map((e=>e)));const h=[];t.maxSampleSet=new Set;for(const e of m){if(typeof e==="function")h.push(e);else if(e.$id=="sample")h.push(l);else if(e.sortSamples.by=="hits")h.push(u(e,t,s));else if(e.term.type!="geneVariant")h.push(d(e,t,s));else if(e.sortSamples.by=="values")h.push(d(e,t,s));else if(e.sortSamples.by=="dt")h.push(f(e));else if(e.sortSamples.by=="class")h.push(c(e,t));else throw`unsupported sortSamplesBy entry by='${e.sortSamples.by}'`}if(!h.find((e=>e.$id==="sample"))){h.push(l)}return(e,t)=>{for(const r of h){const s=r(e,t);if(s!==0)return s}}}function a(e){if(!e.sortOptions)e.sortOptions="custom";if(["selectedTerms","class","dt","hits"].includes(e.sortSamplesBy))e.sortSamplesBy="custom"}function l(e,t){if(e._ref_.label&&t._ref_.label){return e._ref_.label<t._ref_.label?-1:e._ref_.label>t._ref_.label?1:0}if(!e.sample&&!t.sample&&e.row.sample){return e.row.sample<t.row.sample?-1:e.row.sample>t.row.sample?1:0}return e.sample<t.sample?-1:e.sample>t.sample?1:0}function u(e,t,r,s){const{$id:i,sortSamples:n}=e;const o={};for(const e of r){if(!o[e.sample])o[e.sample]=0;if(i in e){o[e.sample]+=e[i].countedValues?.length||0}}return(e,t)=>o[e.sample]==o[t.sample]?0:o[e.sample]>o[t.sample]?-1:1}function d(e,t,r,s){const{$id:i,sortSamples:n}=e;const o=t.termOrder.find((e=>e.tw.$id===i));if(o.grp.type=="hierCluster"){return(e,t)=>{if(i in e&&i in t){return e[i]?.values[0].value-t[i]?.values[0].value}if(i in e)return-1;if(i in t)return 1;return 0}}if(o.tw.q?.mode=="continuous"){return(e,t)=>{if(i in e&&i in t){return e[i]?.value-t[i]?.value}if(i in e)return-1;if(i in t)return 1;return 0}}const a=[];if(o?.term?.values){for(const e of term.values){a.push(e.key)}a.sort(((e,t)=>term.values[e].order<term.values[e].order?-1:1))}else if(o?.ref?.bins){a.push(...o.ref.bins.map((e=>e.name)))}else{for(const e of r){if(!(i in e))continue;const t=e[i].override?.key||e[i].key;if(a.indexOf(t)==-1)a.push(t)}}return(e,t)=>{if(!e[i]&&!t[i])return 0;if(!e[i])return t[i].override?-1:1;if(!t[i])return e[i].override?1:-1;if(e[i].override&&t[i].override){const r="order"in e[i].override?e[i].override.order:a.indexOf(e[i].override.key);const s="order"in t[i].override?t[i].override.order:a.indexOf(t[i].override.key);return r-s}if(!e[i].override&&!t[i].override){return a.indexOf(e[i].key)-a.indexOf(t[i].key)}if(!e[i].override)return-1;if(!t[i].override)return 1;return 0}}function f(e,t,r,s){const{$id:i,sortSamples:n,term:o}=e;const a=n.order;const l=a.length+1;const u=new Map;function d(e){if(!(i in e)){u.set(e.sample,l);return}if(n.filter&&!p(e[i].values,n.filter.values)){u.set(e.sample,l);return}const t=e[i].values.map((e=>a.indexOf(e.dt))).filter((e=>e!==-1));u.set(e.sample,t.length?Math.min(...t):l)}return(e,t)=>{if(!u.has(e.sample))d(e);if(!u.has(t.sample))d(t);return u.get(e.sample)-u.get(t.sample)}}function c(e,t,r,s){const{$id:i,sortSamples:n}=e;if(n.disabled)return()=>0;const o=t.config.settings.matrix;const a=o.showMatrixMutation!="none"&&!o.allMatrixMutationHidden;const l=o.showMatrixCNV!="none"&&!o.allMatrixCNVHidden;const u=n.order.filter(a&&l?e=>!o.hiddenVariants.includes(e):!a&&!l?()=>false:a?e=>o.mutationClasses.includes(e)&&!o.hiddenVariants.includes(e):l?e=>e.startsWith("CNV_")&&!o.hiddenVariants.includes(e):e=>!e.startsWith("CNV_"));if(!u.length&&n.ignoreEmptyFilteredOrder)return()=>0;const d="z";const f=new Map;function c(e){if(!(i in e)){f.set(e.sample,d);return}const t=e[i].renderedValues||e[i].filteredValues||e[i].values;if(n.filter&&!p(t,n.filter.values)){f.set(e.sample,d);return}const r=t.map((e=>e.class));if(!u.find((e=>r.includes(e)))){f.set(e.sample,d);return}else if(!n.isOrdered){f.set(e.sample,"1")}else{const t=u.map((e=>r.includes(e)?"1":"x"));f.set(e.sample,t)}}return(e,t)=>{if(!f.has(e.sample))c(e);if(!f.has(t.sample))c(t);const r=f.get(e.sample);const s=f.get(t.sample);return r<s?-1:r>s?1:0}}function p(e,t){for(const r of e){for(const e of t){if((!e.dt||r.dt===e.dt)&&(!e.mclassLst||e.mclassLst.includes(r.class))&&(!e.class||e.class===r.class)&&(!e.origin||r.origin===e.origin)){return true}}}}function m(e,t,r){if(r?.type=="hierCluster")return e.hcTermSorter;if(t.sortTermsBy=="asListed"){return(e,t)=>e.index-t.index}if(t.sortTermsBy!="sampleCount"){throw`unsupported s.sortTermsBy='${t.sortTermsBy}'`}return(t,r)=>{if(e.app.vocabApi.vocab?.dslabel==="GDC"){if(t.tw?.term?.id&&!r.tw?.term?.id)return-1;if(!t.tw?.term?.id&&r.tw?.term?.id)return 1}if(r.counts.samples!==t.counts.samples)return r.counts.samples-t.counts.samples;if(r.counts.hits!==t.counts.hits)return r.counts.hits-t.counts.hits;return t.index-r.index}}function b(e,o={},a){const l=a||e?.matrix?.settings||{};const u=Object.assign({sample:"sample"},o,l.controlLabels||{});const d={};if(l.sortPriority){const e=1;Object.values(d).forEach((t=>{if(t.order>=e)t.order+=1}));d.custom={label:l.sortPriority.label||"Custom sort",value:"custom",order:e,sortPriority:l.sortPriority}}d.a=l.sortOptions?.a?v(l.sortOptions.a,u):{value:"a",order:1,sortPriority:[{label:`For each gene mutation, sort ${u.samples} by matching data`,types:["geneVariant"],tiebreakers:[{skip:!l.mutationClasses.includes("Fuserna"),label:`${u.Samples} with Fusion RNASeq > without`,filter:{values:[{dt:t}]},by:"class",isOrdered:false,order:["Fuserna"]},{label:`${u.Samples} with truncating mutations > without`,filter:{values:[{dt:r}]},by:"class",isOrdered:false,order:[...l.truncatingMutations],notUsed:[]},{label:`${u.Samples} with CNV data > without`,mayToggle:true,filter:{values:[{dt:s}]},by:"class",isOrdered:true,disabled:true,order:[i,n]},{disabled:false,mayToggle:true,label:`${u.Samples} with protein-changing mutations > without`,filter:{values:[{dt:r}]},by:"class",isOrdered:false,order:l.proteinChangingMutations.filter((e=>!l.truncatingMutations.includes(e))),notUsed:l.truncatingMutations}]},{label:`For each dictionary variable, sort ${u.samples} by matching data`,types:["categorical","integer","float","survival"],tiebreakers:[{label:"Values",by:"values"}]}]};d.name={label:`By ${u.sample} name, ID, or label`,value:"name",order:Object.values(d).length};return d}function h(e){const t=e.settings.matrix;if(t.sortSampleGrpsBy=="hits")return(e,t)=>{if(e.lst.length&&!t.lst.length)return-1;if(!e.lst.length&&t.lst.length)return 1;return t.totalCountedValues-e.totalCountedValues};if(t.sortSampleGrpsBy=="sampleCount")return(e,t)=>{if(e.lst.length&&!t.lst.length)return-1;if(!e.lst.length&&t.lst.length)return 1;if(e.lst.length==t.lst.length){return y(e,t)}return t.lst.length-e.lst.length};if(!e.config.divideBy?.$id)return y;const r=e.data.refs.byTermId[e.config.divideBy.$id];if(r&&!r.keyOrder)r.keyOrder=r.bins?r.bins.map((e=>e.name)):[];const s=e.data.refs.byTermId[e.config.divideBy.$id]?.keyOrder;if(!s)return y;return(e,t)=>{e.order=s.indexOf(e.id);if(e.order==-1)delete e.order;t.order=s.indexOf(t.id);if(t.order==-1)delete t.order;if("order"in e&&"order"in t)return e.order-t.order;if("order"in e)return-1;if("order"in t)return 1;if(e.tw?.term?.values?.[e.id]?.order&&t.tw?.term?.values?.[t.id]?.order){return e.tw.term.values[e.id].order-t.tw.term.values[t.id].order}return y(e,t)}}function y(e,t){return e.name<t.name?-1:1}function g(e){const t=e.settings.matrix;const r=t.sortOptions[t.sortSamplesBy].sortPriority?t.sortOptions[t.sortSamplesBy]:t.sortOptions.a;const s=[];r.sortPriority.forEach((e=>{if(e.types.includes("geneVariant")){e.tiebreakers.forEach((e=>{if(e.by=="class"&&e.order){s.push(...e.order.filter((e=>e!=="WT"&&e!=="Blank")))}}))}}));const i=(e,t)=>{const r=s.indexOf(e.class);const i=s.indexOf(t.class);return r==-1&&i==-1?0:s.indexOf(e.class)==-1?1:s.indexOf(t.class)==-1?-1:s.indexOf(e.class)-s.indexOf(t.class)};return i}function v(e,o){const a=o;let l;for(const t of e.sortPriority){if(t.types.includes("categorical")){if(!t.label)t.label=`For each dictionary variable, sort ${a.samples} by matching data`;continue}if(!t.types?.includes("geneVariant"))continue;if(!l){l=t;if(!t.label)t.label=`For each gene mutation, sort ${a.samples} by matching data`}else{l.tiebreakers.push(...t.tiebreakers);t.toBeDeleted=true}}for(const e of l.tiebreakers){if(e.filter?.values?.find((e=>e.dt==t))){const t={label:`${a.Samples} with Fusion RNASeq > without`,isOrdered:true,disabled:false,mayToggle:true};Object.assign(e,t,e)}else if(e.filter?.values?.find((e=>e.dt==r))){const t=e.order.includes(i)||e.order.includes(n)?`${a.Samples} with SSM + CNV > SSM only`:`${a.Samples} with mutations`;const r={label:t,isOrdered:true,disabled:false,mayToggle:true};Object.assign(e,r,e)}else if(e.order.length==2&&e.order.includes(i)&&e.order.includes(n)){const t={label:`${a.Samples} with CNV only > without`,filter:{values:[{dt:s}]},by:"class",isOrdered:true,disabled:false,mayToggle:true};Object.assign(e,t,e)}}e.sortPriority=e.sortPriority.filter((e=>!e.toBeDeleted));return e}export{g as getMclassSorter,h as getSampleGroupSorter,o as getSampleSorter,b as getSortOptions,m as getTermSorter,v as reshapeSortPriority};
|