@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
package/dist/matrix-0614794d.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{P as t,F as e,h as s,z as i,B as r,O as o}from"./app-a8c4854a.js";import{setMatrixDom as n}from"./matrix.dom-00defa30.js";import{setInteractivity as a}from"./matrix.interactivity-23d83183.js";import{setRenderers as l}from"./matrix.renderers-43445f4f.js";import{MatrixCluster as p}from"./matrix.cluster-168bc96b.js";import{MatrixControls as d}from"./matrix.controls-5eca7822.js";import{s as c}from"./svg.legend-a94b0697.js";import{m}from"./matrix.data-b1d0febe.js";import{m as h}from"./matrix.layout-c2345231.js";import{m as g}from"./matrix.serieses-972fbe5d.js";import{m as u}from"./matrix.legend-2e647224.js";import{m as f}from"./matrix.groups-4660dd70.js";import{setComputedConfig as y}from"./matrix.config-c54ca273.js";export{getPlotConfig}from"./matrix.config-c54ca273.js";import"./roundValue-b0d0517c.js";import"./tslib.es6-1f85f553.js";import"path";import"./table-79e3e776.js";import"./pointer-c7475677.js";import"./controls.config-0ccc9d79.js";import"./controls.overlay-fe20d41d.js";import"./FilterRxComp-242f4615.js";import"./termdb.bins-9faa5170.js";import"./controls.term1-faa2efcf.js";import"./controls.divide-a9fe9466.js";import"./matrix.sorterUi-a741ba2e.js";import"./radiobutton-09bff425.js";import"./checkbox-96437f4d.js";import"./recover-36ada47f.js";import"./FilterStateless-046081c2.js";import"./app-ade9c62a.js";import"./termInfo-f851b415.js";import"./toggleButtons-002aeda1.js";import"./genesearch-ea59f5d4.js";import"./rehydrateFilter-12d118cb.js";import"./axis-747c801e.js";import"./matrix.cells-819d4991.js";import"./legacy-d3-polyfill-bdb2d792.js";import"./filter-b3d3964e.js";import"./matrix.sort-80d9b788.js";class b{constructor(t){this.type="matrix";this.holderTitle="Sample Matrix";this.optionalFeatures=JSON.parse(sessionStorage.getItem("optionalFeatures")||`{}`)?.matrix||[];a(this);l(this)}async init(e){const s=this.opts;if(s.reactsTo)this.reactsTo=s.reactsTo;this.setDom=n;this.setDom(s);this.config=e.plots.find((t=>t.id===this.id));this.settings=Object.assign({},this.config.settings.matrix);this.computed={};if(this.dom.header)this.dom.header.html(this.holderTitle);this.setControls(e);this.clusterRenderer=new p({holder:this.dom.cluster,app:this.app,parent:this});this.legendRenderer=c({holder:this.dom.legendG,rectFillFxn:t=>t.color,iconStroke:"#aaa",handlers:{legend:{click:this.legendClick}},settings:{isExcludedAttr:"isExcluded"},note:"CLICK A ROW LABEL OR ITEM TO APPLY FILTERING"});this.customTipApi=this.dom.tip.getCustomApi({d:this.dom.menubody,clear:t=>{if(t?.target)this.dom.menutop.style("display","none");this.dom.menubody.selectAll("*").remove();return this.customTipApi},show:()=>{this.dom.menubody.style("display","block")},hide:()=>{}});this.setPill(e);const a={mclass:i,dt2label:r,morigin:o};for(const s in a){const i=a[s];this[s]=t({},i,e.termdbConfig[s]||{},e.termdbConfig.matrix?.[s]||{})}}setControls(t){this.controlsRenderer=new d({app:this.app,id:this.id,parent:this,holder:this.dom.controls,getSvg:()=>this.dom.svg.node()},t)}getState(t){const e=t.plots.find((t=>t.id===this.id));const s=t.termfilter.filter0;this.prevFilter0=this.state?.filter0;return{isVisible:true,config:e,filter:t.termfilter.filter,filter0:s,hasVerifiedToken:this.app.vocabApi.hasVerifiedToken(),tokenVerificationMessage:this.app.vocabApi.tokenVerificationMessage,vocab:t.vocab,termdbConfig:t.termdbConfig,clusterMethod:e.settings.hierCluster?.clusterMethod,distanceMethod:e.settings.hierCluster?.distanceMethod,clusterSamples:e.settings.hierCluster?.clusterSamples,nav:t.nav}}async main(){try{this.config=structuredClone(this.state.config);if(this.mayRequireToken())return;const t=this.settings.transpose;Object.assign(this.settings,structuredClone(this.config.settings),this.controlsRenderer.getSettings());this.dom.loadingDiv.selectAll("*").remove();this.dom.loadingDiv.html("").style("display","").style("position","relative").style("left","45%");this.dom.svg.style("opacity",.1).style("pointer-events","none");delete this.clickedChildren;try{y(this.config);const t=[];if(this.setHierClusterData)t.push(this.setHierClusterData());t.push(this.setData());this.dom.loadingDiv.html("Processing data ...");await Promise.all(t);this.applyLegendValueFilter();if(this.combineData)this.combineData();this.app.save({type:"plot_edit",id:this.id,config:this.config})}catch(t){if(t=="no data"){this.showNoMatchingDataMessage();return}else if(t=="stale sequenceId"||t.name=="AbortError"){return}else{this.dom.svg.style("display","none");throw t}}this.dom.loadingDiv.html("Updating ...").style("display","");this.termOrder=this.getTermOrder(this.data);this.sampleGroups=this.getSampleGroups(this.hierClusterSamples||this.data);this.sampleOrder=this.getSampleOrder(this.data);if(!this.sampleOrder?.length&&!this.config.legendGrpFilter?.lst.length&&!this.config.legendValueFilter?.lst.length){this.showNoMatchingDataMessage();this.controlsRenderer.main();return}this.setLayout();if(this.setHierColorScale)this.setHierColorScale(this.hierClusterData.clustering);this.serieses=this.getSerieses(this.data);this.dom.loadingDiv.html("Rendering ...");if(this.plotDendrogramHclust)this.plotDendrogramHclust();this.render();this.mayDisplayCohortMessage();this.dom.svg.style("display","").style("opacity",1).style("pointer-events","");const[e,s]=!this.settings.matrix.transpose?["sampleGrps","termGrps"]:["termGrps","sampleGrps"];const i=this.dimensions;this.clusterRenderer.main({settings:this.settings.matrix,xGrps:this[e],yGrps:this[s],dimensions:i});this.legendRenderer(this.legendData,{settings:Object.assign({},this.settings.legend,{svgw:Math.max(400,i.mainw+i.xOffset-this.settings.matrix.margin.right),svgh:i.mainh+i.yOffset,dimensions:i,padleft:this.settings.legend.padleft})});await this.adjustSvgDimensions(t);this.controlsRenderer.main()}catch(t){const e=this.app.vocabApi.tokenVerificationMessage;this.mayRequireToken(e);if(!e){this.app.tip.hide();this.dom.loadingDiv.style("display","none");throw t}}this.resetInteractions()}showNoMatchingDataMessage(){this.forcedSampleCount=0;this.dom.svg.style("opacity",.001).style("display","none");if(this.termOrder&&this.dimensions)this.controlsRenderer.main({sampleCount:0});this.dom.loadingDiv.html("");const t=this.dom.loadingDiv.append("div").style("display","inline-block").style("text-align","center").style("position","relative").style("left","-150px");t.append("div").style("margin","5px 10px").html("No matching cohort sample data for the current gene list.");if(this.settings.matrix.showHints?.includes("genesetEdit")){const e=t.append("div").style("margin","5px 10px");e.append("span").html("You may change the selected cohort,");if(this.config.legendGrpFilter?.lst.length||this.config.legendValueFilter?.lst.length){e.append("br");e.append("span").html("show hidden ");e.append("span").html("CNV").style("cursor","pointer").style("text-decoration","underline").on("click",(()=>{this.controlsRenderer.btns.filter((t=>t.label=="CNV"))?.node().click()}));e.append("span").html(" or ");e.append("span").style("cursor","pointer").style("text-decoration","underline").html("Mutation").on("click",(()=>{this.controlsRenderer.btns.filter((t=>t.label=="Mutation"))?.node().click()}));e.append("span").html(" data,")}e.append("br");e.append("span").html("or edit the gene list from the ");e.append("span").style("cursor","pointer").style("text-decoration","underline").html("Gene Set Edit Group menu.").on("click",(()=>{this.controlsRenderer.btns.filter((t=>t.label=="Genes"))?.node().click();const t=setInterval((()=>{const e=this.app.tip.d.selectAll("button").filter((function(){return this.innerHTML=="Edit Group"})).node();if(e){e.click();clearInterval(t)}}),100)}))}this.dom.svg.style("display","none")}mayDisplayCohortMessage(){const t=!this.prevFilter0||e(this.state.filter0,this.prevFilter0)?"":"The gene list is persisted across cohorts.";if(t){this.dom.loadingDiv.html("");const e=this.dom.loadingDiv.append("div").style("display","inline-block").style("text-align","center").style("position","relative").style("left","-150px");e.append("div").html(t);if(this.settings.matrix.showHints?.includes("genesetEdit")){const t=e.append("div");t.append("span").html(" You may edit the gene list from the ");t.append("span").style("cursor","pointer").style("text-decoration","underline").html("Gene Set Edit Group menu.").on("click",(()=>{this.controlsRenderer.btns.filter((t=>t.label=="Genes"))?.node().click();const t=setInterval((()=>{const e=this.app.tip.d.selectAll("button").filter((function(){return this.innerHTML=="Edit Group"})).node();if(e){e.click();clearInterval(t)}}),100)}))}}this.dom.loadingDiv.style("display",t?"":"none")}sampleKey(t){return t.row.sample}sampleLabel(t){return t.label||t.row._ref_.label||""}sampleGrpKey(t){return t.grp.name}sampleGrpLabel(t){return t.grp.label||t.grp.name||""}termKey(t){return t.tw.$id}termLabel(t){return t.label}termGrpKey(t){return t.grp.name}termGrpLabel(t){return t.grp.label||t.grp.name||[{text:"⋮",dx:3,cls:"sjpp-exclude-svg-download"}]}}for(const t of[m,f,h,g,u]){for(const e in t){b.prototype[e]=t[e]}}const x=s(b);const v=x;function j(t,e){e.dom.tip.clear();const s=t.append("div");if(e.state.termdbConfig.matrixplots){for(const t of e.state.termdbConfig.matrixplots){s.append("div").attr("class","sja_menuoption sja_sharp_border").text(t.name).on("click",(async()=>{e.dom.tip.hide();const s=await e.app.vocabApi.getMatrixByName(t.name);e.app.dispatch({type:"plot_create",config:s})}))}}s.append("div").datum({label:"Term tree & search",clickTo:e.showTree_selectlst,chartType:"matrix",usecase:{target:"matrix",detail:"termgroups"},processSelection:t=>[{name:"",lst:t.map((t=>({term:t})))}]}).attr("class","sja_menuoption sja_sharp_border").text((t=>t.label)).on("click",((t,s)=>e.showTree_selectlst(s)));s.append("div").datum({label:"Text input",chartType:"matrix",clickTo:C,usecase:{target:"matrix",detail:"termgroups"},placeholder:"term\tgroup",processInput:async t=>{const s=t.split("\n").map((t=>t.split("\t")));const i=s.map((t=>t[0])).filter((t=>!!t));const r=await e.app.vocabApi.getTermTypes(i);const o={};for(const[t,e]of s){if(!(t in r))continue;if(!(e in o))o[e]={name:e,lst:[]};o[e].lst.push({term:r[t]})}return Object.values(o)}}).attr("class","sja_menuoption sja_sharp_border").text((t=>t.label)).on("click",((t,s)=>C(s,e)))}function C(t,e){e.dom.tip.clear();e.dom.submenu=e.dom.tip.d.append("div").style("text-align","center");e.dom.submenu.append("span").html(t.label);e.dom.submenu.append("button").style("margin","0 5px").html("Submit").on("click",(async()=>{const i=await t.processInput(s.property("value"));e.dom.tip.hide();const r={type:"plot_create",id:T(),config:{chartType:t.usecase.target,[t.usecase.detail]:i}};e.app.dispatch(r)}));const s=e.dom.submenu.append("div").style("text-align","left").append("textarea").attr("placeholder",t.placeholder).style("width","300px").style("height","300px").style("margin","5px").style("padding","5px").on("keydown",(t=>{const e=t.keyCode||t.which;if(e==9){t.preventDefault();const e=t.target;const s=e.selectionStart;e.value=e.value.substring(0,e.selectionStart)+"\t"+e.value.substring(e.selectionEnd);e.selectionEnd=s+1}}))}const k="_CHART_AUTOID_";let D=Date.now();function T(){return k+D++}export{b as Matrix,v as componentInit,j as makeChartBtnMenu,x as matrixInit};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{ak as e,at as l,ap as t,R as s,as as a,bR as n,V as r}from"./app-a8c4854a.js";import{T as o}from"./roundValue-b0d0517c.js";import"./tslib.es6-1f85f553.js";import"path";function i(e,l,t,s,a,n,o,i,c,g,d,u){const f=t.key;const p=l.term.values||{};e.label="label"in t?t.label:p[f]?.label?p[f].label:f;e.fill=t.color||p[t.key]?.color;e.order=n.ref.bins?n.ref.bins.findIndex((e=>e.name==f)):0;if(l.q?.mode=="continuous"){if(!l.settings)l.settings={};if(!l.settings.barh)l.settings.barh=a.barh;if(!("gap"in l.settings))l.settings.gap=4;const s=l.term.values?.[e.key];if(s?.uncomputable){e.x=e.totalIndex*g+e.grpIndex*a.colgspace;e.y=c*u;e.height=l.settings.barh;e.fill="transparent";l.legend?.group||l.$id;return}e.fill="#555";if(a.transpose){e.height=n.scale(e.key);e.x=l.settings.gap}else{const s=e.term.valueConversion;let o=s?e.key*s.scaleFactor:e.key;if(l.q.convert2ZScore){o=(o-n.mean)/n.std;e.fill=o>0?"#FF6666":"#6666FF";e.zscoreLabel=` (z-score: ${o.toFixed(2)})`}e.label="label"in t?t.label:p[f]?.label?p[f].label:l.term.unit?`${e.key.toFixed(2)} ${l.term.unit}`:e.key.toFixed(2);e.height=o>=0?n.scales.pos(o):n.scales.neg(o);e.x=e.totalIndex*g+e.grpIndex*a.colgspace;e.y=o>=0?n.counts.posMaxHt+n.tw.settings.gap-e.height:n.counts.posMaxHt+n.tw.settings.gap;e.convertedValueLabel=!s?"":r(e.key,s.fromUnit,s.toUnit,s.scaleFactor)}}else{e.x=e.totalIndex*g+e.grpIndex*a.colgspace;e.y=c*u;const t=l.legend?.group||l.$id;return{ref:n.ref,group:t,value:f,entry:{key:f,label:e.label,fill:e.fill}}}}function c(e,l,t,s,a,n,o,i,c,g,d,u){const f=l.q?.mode=="continuous"?t.value:t.key;e.key=f;e.label=l.q?.mode=="continuous"?l.term.unit?`${f} ${l.term.unit}`:f:l.term.values?.[f].label?l.term.values?.[f].label:"Exit code: "+f;e.fill=f==1?"#a1a3a6":"#a3c88b";e.order=0;if(l.q?.mode=="continuous"){if(!l.settings)l.settings={};if(!l.settings.barh)l.settings.barh=a.barh;if(!("gap"in l.settings))l.settings.gap=4;e.exitCodeKey=l.term.values?.[t.key].label||"Exit code: "+t.key;e.fill=t.key==1?"#a1a3a6":"#a3c88b";if(a.transpose){e.height=n.scale(e.key);e.x=l.settings.gap}else{const t=e.term.valueConversion;let s=t?e.key*t.scaleFactor:e.key;if(l.q.convert2ZScore){s=(s-n.mean)/n.std;e.zscoreLabel=` (z-score: ${s.toFixed(2)})`}e.label=l.term.unit?`${e.key.toFixed(2)} ${l.term.unit}`:e.key.toFixed(2);e.height=s>=0?n.scales.pos(s):n.scales.neg(s);e.x=e.totalIndex*g+e.grpIndex*a.colgspace;e.y=s>=0?n.counts.posMaxHt+n.tw.settings.gap-e.height:n.counts.posMaxHt+n.tw.settings.gap;e.convertedValueLabel=!t?"":r(e.key,t.fromUnit,t.toUnit,t.scaleFactor)}}else{const s=e.term.valueConversion;e.timeToEventKey=s?r(t.value,s.fromUnit,s.toUnit,s.scaleFactor):t.value.toFixed(2);e.x=e.totalIndex*g+e.grpIndex*a.colgspace;e.y=c*u;const o=l.legend?.group||l.$id;return{ref:n.ref,group:o,value:f,entry:{key:f,label:e.label,fill:e.fill}}}}function g(e,l,t,s,a,n,r,o,i,c,g,d){const u=l.term.values||{};const f=t.key;e.label="label"in t?t.label:u[f]?.label?u[f].label:f;e.fill=t.color||u[f]?.color;e.x=e.totalIndex*c+e.grpIndex*a.colgspace;e.y=i*d;const p=l.legend?.group||l.$id;return{ref:n.ref,group:p,value:t.key,entry:{key:f,label:e.label,fill:e.fill}}}function d(n,r,o,i,c,g,d,u,f,p,b,x){const h=o.renderedValues||o.filteredValues||o.values||[o.value];const y=r.q?.values&&r.q?.values[i.class]?.color;if(r.q?.type=="predefined-groupset"||r.q?.type=="custom-groupset"){n.label=i;n.fill=["Mutated","Protein-changing","Truncating"].includes(i)?"#FF0000":["Wildtype","Rest"].includes(o.key)?"#0000FF":o.key=="Not tested"?"#00FF00":"#000000";n.value={value:i,dt:r.q.dt,origin:r.q.origin};n.x=n.totalIndex*p+n.grpIndex*c.colgspace;n.y=f*x;const e=r.legend?.group||r.q.origin?`${r.q.origin[0].toUpperCase()+r.q.origin.slice(1)} ${d.dt2label[r.q.dt]}`:d.dt2label[r.q.dt];return{ref:g.ref,group:e,value:o.key,order:-2,entry:{key:o.key,label:n.label,fill:n.fill,dt:r.q.dt,origin:r.q.origin}}}else{n.label=i.label||d.mclass[i.class].label;n.fill=d.getValueColor?.(i.value)||y||i.color||d.mclass[i.class]?.color;n.class=i.class;n.value=i;const o=d.dimensions.colw;if(c.cellEncoding==""){n.height=c.rowh/h.length;n.width=o;n.x=n.totalIndex*p+n.grpIndex*c.colgspace;n.y=f*x}else if(i.dt==e||i.dt==l){if(c.cellEncoding=="single"){n.height=c.rowh;n.width=o;n.x=n.totalIndex*p+n.grpIndex*c.colgspace;n.y=0}else{const e=3;n.height=c.rowh/e;n.width=o;n.x=n.totalIndex*p+n.grpIndex*c.colgspace;n.y=f*.33333}}else if(i.dt==t||i.dt==s){n.height=c.rowh;n.width=o;n.x=n.totalIndex*p+n.grpIndex*c.colgspace;n.y=0}else{throw`cannot set cell props for dt='${i.dt}'`}if(i.class=="Blank"||i.class=="WT"){n.label=`${d.dt2label[i.dt]} ${n.label}`}const u=d.state.termdbConfig.assayAvailability?.byDt;const b=i.class=="CNV_loss"?-2:i.class.startsWith("CNV_")?-1:0;if(i.dt==t){if(g.scales&&i.class.startsWith("CNV_")){g.scales.max;const{maxLoss:e,maxGain:l,minLoss:t,minGain:s}=g.scales;i.scaledValue=i.value<0?i.value/t:i.value/l;n.fill=i.value<0?g.scales.loss(i.scaledValue):g.scales.gain(i.scaledValue);return{ref:g.ref,group:"CNV",value:i.class,order:-1,entry:{key:i.class,label:n.label,scale:i.class=="CNV_loss"?g.scales.loss:g.scales.gain,domain:i.class=="CNV_loss"?[0,-t]:[0,l],minLabel:0,maxLabel:i.class=="CNV_loss"?t:l,order:b,dt:i.dt,origin:i.origin}}}else{const e="CNV";return{ref:g.ref,group:e,value:i.class,order:-1,entry:{key:i.class,label:n.label,fill:n.fill,order:b,dt:i.dt,origin:i.origin}}}}else if(i.dt==l&&u?.[l]){const e="Fusion RNA";return{ref:g.ref,group:e,value:i.class,order:-1,entry:{key:i.class,label:n.label,fill:n.fill,order:b,dt:i.dt,origin:i.origin}}}else if(i.dt==a&&u?.[a]){const e="Structural Variation";return{ref:g.ref,group:e,value:i.class,order:-1,entry:{key:i.class,label:n.label,fill:n.fill,order:b,dt:i.dt,origin:i.origin}}}else if(i.dt==s){return{ref:g.ref,group:d.config.settings.hierCluster?.termGroupName||"Gene Expression",value:i.class,order:-1,entry:{key:i.class,label:"",scale:d.geneExpValues.scale,domain:[0,.5,1],minLabel:d.geneExpValues.min,maxLabel:d.geneExpValues.max,order:b,dt:i.dt,origin:i.origin}}}else{const e=d.settings.matrix.controlLabels;const l=r.legend?.group||(i.origin?`${i.origin[0].toUpperCase()+i.origin.slice(1)} ${e.Mutations}`:e.Mutations);return{ref:g.ref,group:l,value:i.class,order:-2,entry:{key:i.class,label:n.label,fill:n.fill,order:b,dt:i.dt,origin:i.origin}}}}}function u(e,l,t,s,a,r,o,i,c,g,d,u){t.renderedValues||t.filteredValues||t.values||[t.value];e.label=s.value;e.fill=o.getValueColor?.(s.value);e.value=s;const f=o.dimensions.colw;e.height=a.clusterRowh;e.width=f;e.x=e.totalIndex*g+e.grpIndex*a.colgspace;e.y=c*u;const p=o.config.settings.hierCluster?.termGroupName?o.config.settings.hierCluster?.termGroupName:l.term.type=="geneExpression"?"Expression":l.term.type=="metaboliteIntensity"?"Intensity":"Heatmap color scale";return{ref:r.ref,group:p,order:-1,entry:{label:"",scale:o.hierClusterValues.scale,domain:n[o.settings.hierCluster.colorScale].domain,minLabel:o.hierClusterValues.min,maxLabel:o.hierClusterValues.max,order:0,dt:s.dt}}}function f(e,l,t){const s=Object.assign({},e);s.fill=l.cellbg;s.height=l.rowh;s.width=t.colw;s.x=s.totalIndex*t.dx+s.grpIndex*l.colgspace;s.y=0;return s}const p={categorical:g,integer:i,float:i,survival:c,geneVariant:d,hierCluster:u,[o.GENE_EXPRESSION]:i,[o.METABOLITE_INTENSITY]:i};const b={geneVariant:x,integer:h,float:h,categorical:y,survival:h,[o.GENE_EXPRESSION]:h,[o.METABOLITE_INTENSITY]:h};function x(e,l,s,a){if(e.find((e=>e.value.dt==t)))return;const n=Object.assign({},l);n.fill=s.cellbg;n.height=s.rowh;n.width=a.colw;n.x=n.totalIndex*a.dx+n.grpIndex*s.colgspace;n.y=0;return n}function h(e,l,t,s){const a=l.tw.q;if(a.mode!="continuous"){if(e.length)return;y(e,l,t,s)}else{if(a?.mode!="continuous")return;const e=l.tw.settings;const n=e?e.barh+2*e.gap:t.rowh;if(l.height>=n)return;const r=Object.assign({},l);r.fill=t.cellbg;r.height=n||t.rowh;r.width=s.colw;r.x=r.totalIndex*s.dx+r.grpIndex*t.colgspace;r.y=0;return r}}function y(e,l,t,s){if(e.length)return;const a=Object.assign({},l);a.fill=t.cellbg;a.height=t.rowh;a.width=s.colw;a.x=a.totalIndex*s.dx+a.grpIndex*t.colgspace;a.y=0;return a}export{f as getEmptyCell,b as maySetEmptyCell,p as setCellProps,d as setGeneVariantCellProps,u as setHierClusterCellProps};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{bM as e,bN as t,bO as s,bP as a,bQ as i,P as l,z as o,ap as r}from"./app-a8c4854a.js";import{getSortOptions as n}from"./matrix.sort-80d9b788.js";import{b as m,f as p}from"./roundValue-b0d0517c.js";import"./tslib.es6-1f85f553.js";import"path";async function c(o={},r){const c={Samples:"Samples",samples:"samples",Sample:"Sample",sample:"sample",Terms:"Variables",terms:"variables",Term:"Variable",term:"Variable",Mutations:"Mutations"};const d={termgroups:[],samplegroups:[],divideBy:null,legendValueFilter:{isAtomic:true,type:"tvslst",in:true,join:"and",lst:[]},legendGrpFilter:{isAtomic:true,type:"tvslst",in:true,join:"and",lst:[]},settings:{matrix:{svgCanvasSwitch:1e3,useMinPixelWidth:true,cellEncoding:"",margin:{top:10,right:5,bottom:20,left:50},maxGenes:o.settings?.maxGenes||50,maxSample:o.settings?.maxSample||1e3,sampleNameFilter:"",sortSamplesBy:"a",sortPriority:undefined,sortSampleGrpsBy:"name",sortSamplesTieBreakers:[{$id:"sample",sortSamples:{}}],sortTermsBy:"sampleCount",samplecount4gene:o.chartType=="hierCluster"?"":"abs",geneVariantCountSamplesSkipMclass:[],cellbg:"#ececec",showGrid:"",addMutationCNVButtons:false,truncatingMutations:e,proteinChangingMutations:t,synonymousMutations:s,mutationClasses:a,CNVClasses:i,gridStroke:"#fff",outlineStroke:"#ccc",beamStroke:"#f00",colw:0,colwMin:.1/window.devicePixelRatio,colwMax:16,colspace:1,colgspace:8,colglabelpos:true,collabelpos:"bottom",collabelvisible:true,collabelgap:5,collabelpad:1,collabelmaxchars:32,rowh:18,rowhMin:1,rowhMax:20,rowspace:1,rowgspace:8,rowlabelpos:"left",rowlabelgap:5,rowlabelvisible:true,rowlabelpad:1,rowlabelmaxchars:32,legendGrpLabelMaxChars:26,grpLabelFontSize:12,minLabelFontSize:6,maxLabelFontSize:14,transpose:false,sampleLabelOffset:120,sampleGrpLabelOffset:120,sampleGrpLabelMaxChars:32,termLabelOffset:80,termGrpLabelOffset:80,termGrpLabelMaxChars:32,duration:0,zoomLevel:1,zoomCenterPct:0,zoomIndex:0,zoomGrpIndex:0,zoomMin:.5,zoomIncrement:.1,zoomStep:1,imgWMax:6e4/window.devicePixelRatio,scrollHeight:12,controlLabels:c,cnvUnit:"log2ratio",ignoreCnvValues:false,barh:32,showHints:[]}}};const f=d.settings;const u=Math.max(f.matrix.rowh+f.matrix.rowspace-3*f.matrix.rowlabelpad,12);f.legend={ontop:false,lineh:25,padx:5,padleft:0,padright:20,padbtm:30,fontsize:u,iconh:u-2,iconw:u-2,hangleft:1,linesep:false};const g=r.vocabApi.termdbConfig.matrix||{};l(d.settings.matrix,g.settings);if(g.legendGrpFilter)d.legendGrpFilter=g.legendGrpFilter;if(g.legendValueFilter)d.legendValueFilter=g.legendValueFilter;if(o.name){const e=await r.vocabApi.getMatrixByName(o.name);if(!e)throw"error from getMatrixByName()";if(e.error)throw e.error;l(d,e)}const h=o?.settings?.matrix;if(h){if((h.sortSamplesBy=="custom"||h.sortSamplesBy=="asListed")&&h.sortOptions?.custom.label=="against alteration type"){h.sortSamplesBy="a"}if(h.sortOptions){delete h.sortOptions.custom;delete h.sortOptions.asListed}}l(d,o);const b=d.settings.matrix;b.sortOptions=n(r.vocabApi.termdbConfig,c,b);b.duration=0;b.colw=0;if(b.sortSamplesBy!="asListed"&&!b.sortOptions?.[b.sortSamplesBy])b.sortSamplesBy="a";else if(["selectedTerms","class","dt","hits"].includes(b.sortSamplesBy))b.sortSamplesBy="a";if(b.samplecount4gene===true||b.samplecount4gene===1)b.samplecount4gene="abs";if(window.location.hostname=="localhost"){if(window.location.hash=="#canvas")b.svgCanvasSwitch=0}const y=[];for(const e of d.termgroups){e.lst=JSON.parse(JSON.stringify(e.lst));for(const t of e.lst){if(!t.term?.type||m(t.term.type)){if(!t.id){if(!t.term.id)throw`missing tw.id and tw.term.id`;t.id=t.term.id}delete t.term}y.push(p(t,r.vocabApi))}}if(d.divideBy)y.push(p(d.divideBy,r.vocabApi));await Promise.all(y);return d}function d(e){const t=e.settings.matrix;const s=[...t.mutationClasses,...t.CNVClasses];t.filterByClass={isAtomic:true};for(const a of e.legendGrpFilter.lst){if(!a.dt)continue;s.filter((e=>a.dt.includes(o[e].dt))).forEach((e=>{t.filterByClass[e]="value"}))}for(const s of e.legendValueFilter.lst){if(!s.legendGrpName||s.tvs?.term?.type!=="geneVariant")continue;if(s.tvs.values?.[0].mclasslst)s.tvs.values[0].mclasslst.forEach((e=>{t.filterByClass[e]=s.legendFilterType?.endsWith("_hard")?"case":"value"}));else if(s.tvs.values)s.tvs.values.forEach((e=>{t.filterByClass[key]="value"}));else throw`unhandled tvs from legendValueFilter`}t.hiddenVariants=Object.keys(t.filterByClass).filter((e=>e!=="isAtomic"));const a=new Set(t.hiddenVariants.filter((e=>o[e]?.dt===r)));t.hiddenCNVs=[...a];t.showMatrixCNV=!a.size?"all":a.size==t.CNVClasses.length?"none":"bySelection";t.allMatrixCNVHidden=a.size==t.CNVClasses.length;const i=new Set(t.hiddenVariants.filter((e=>t.mutationClasses.find((t=>t===e)))));t.hiddenMutations=[...i];const l=new Set(t.proteinChangingMutations);const n=new Set(t.truncatingMutations);t.showMatrixMutation=!i.size?"all":i.size==t.mutationClasses.length?"none":i.size===t.mutationClasses.length-l.size&&[...i].every((e=>!l.has(e)))?"onlyPC":i.size===t.mutationClasses.length-n.size&&[...i].every((e=>!n.has(e)))?"onlyTruncating":"bySelection";t.allMatrixMutationHidden=i.size==t.mutationClasses.length;const m=t.sortOptions.a?.sortPriority.find((e=>e.types.length==1&&e.types[0]=="geneVariant"))?.tiebreakers||[];t.sortByMutation=m.find((e=>e.filter?.values[0]?.dt===1))?.isOrdered?"consequence":"presence";t.sortByCNV=m.find((e=>e.filter?.values[0]?.dt===4))?.disabled!==true}export{c as getPlotConfig,d as setComputedConfig};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{initByInput as t}from"./controls.config-0ccc9d79.js";import{d as e,M as a,U as n,ak as s,B as i,z as o,ap as l,at as r,as as p,L as c}from"./app-a8c4854a.js";import{getSorterUi as d}from"./matrix.sorterUi-a741ba2e.js";import{i as m,f as h,T as u,g}from"./roundValue-b0d0517c.js";import{m as y}from"./radiobutton-09bff425.js";import{m as b}from"./checkbox-96437f4d.js";import{G as f}from"./recover-36ada47f.js";import"./controls.overlay-fe20d41d.js";import"./FilterRxComp-242f4615.js";import"./table-79e3e776.js";import"./tslib.es6-1f85f553.js";import"./termdb.bins-9faa5170.js";import"path";import"./controls.term1-faa2efcf.js";import"./controls.divide-a9fe9466.js";import"./FilterStateless-046081c2.js";import"./app-ade9c62a.js";import"./termInfo-f851b415.js";import"./toggleButtons-002aeda1.js";import"./genesearch-ea59f5d4.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 n=t.holder.append("label");n.append("span").text("Zoom");const s=n.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)}));n.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=>{s.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 n=t.holder.node().getBoundingClientRect();if(!n.height||!n.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);s.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:s,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 n=Object.assign({},a,t);function s(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>n.visibleWidth-1){return}if(g.sliderX+e<0){return}h.attr("x",g.sliderX+e);n.callback(g.dxFactor*e,"move")}function o(t){if(!("x"in g))return;const a=t.clientX-g.x;n.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)})}n.holder.attr("display","none").attr("opacity",n.opacity).on("mouseover",(()=>n.holder.attr("opacity",1))).on("mouseout",(()=>n.holder.attr("opacity",n.opacity)));const r=n.holder.append("rect").style("height",n.height).style("stroke","none").style("fill","#fff").on("click",l);const p=n.holder.append("line").style("stroke","#ccc").style("stroke-width",1).on("click",l);const c=n.holder.append("path").attr("y",-n.height).attr("d",`M0,${n.height/2}L${n.height},0L${n.height},${n.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=n.holder.append("path").attr("y",-n.height).style("stroke","#ccc").style("stroke-width",1).style("fill","#ccc").attr("d",`M0,0L${n.height},${n.height/2}L0,${n.height}Z`).on("click",(t=>{g.x=t.clientX;o({clientX:Math.round(g.x+g.arrowDx)})}));const m=n.height-4;const h=n.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",s).on("mousemove",i).on("mouseup",o);const u=h.node();const g={};const y={update(t){const e={v:n.visibleWidth,t:n.totalWidth,z:n.zoomCenter};Object.assign(n,t);const a=n.totalWidth;const s=n.visibleWidth;if(a<=s){n.holder.attr("display","none");return}n.holder.attr("transform",`translate(${n.x},${n.y})`).attr("display","");r.attr("width",s);p.attr("x1",0).attr("x2",s).attr("y1",n.height/2).attr("y2",n.height/2);c.attr("transform",`translate(0,0)`);d.attr("transform",`translate(${s-n.height},0)`);if(s!=e.v||a!=e.t){g.sliderWidth=s*s/a;g.dxFactor=(a-s)/(s-g.sliderWidth)}const i=s*(n.zoomCenter/a);g.sliderX=Math.max(0,Math.min(i-g.sliderWidth/2,s-g.sliderWidth-1));h.attr("width",g.sliderWidth).attr("x",g.sliderX);g.maxDx=n.visibleWidth-g.sliderX-g.sliderWidth;g.minDx=-g.sliderX;g.arrowDx=Math.round(.1*n.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 n=a.config.settings.matrix;if(this.parent.setClusteringBtn)this.parent.setClusteringBtn(this.opts.holder,((t,e)=>this.callback(t,e)));this.setSamplesBtn(n);this.setGenesBtn(n);if(n.addMutationCNVButtons&&this.parent.chartType!=="hierCluster"){this.setMutationBtn();this.setCNVBtn()}this.setVariablesBtn(n);this.setDimensionsBtn(n);this.setLegendBtn(n);this.setDownloadBtn(n);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 n=this.parent;const s=[{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.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}}}];s.push({label:`Sort ${e.Sample} Priority`,title:`Set how to sort ${e.samples}`,type:"custom",init(t){const e=n.config.settings.matrix;if(!a.activeTab)a.activeTab="basic";t.dom.inputTd.style("padding","5px");const s=t.dom.inputTd.append("div").style("margin-bottom","5px");const i=s.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=s.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=n.config.settings.matrix.sortOptions;const a=e.a;const s=a.sortPriority[0].tiebreakers[1];s.disabled=!t;s.isOrdered=t==="consequence";n.app.dispatch({type:"plot_edit",id:n.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=n.config.settings.matrix.sortOptions;const a=e.a;const s=a.sortPriority[0].tiebreakers[2];s.disabled=!t;s.isOrdered=t;n.app.dispatch({type:"plot_edit",id:n.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:s,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",(()=>{n(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 n=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=n?.byDt?.[parseInt(e.dt)];if(e.dt==s){a.push((e.origin?`${e.origin} `:"")+(t?`${i[e.dt]}:`:"")+`${o[e.class]?.label}`+(e.mname?`,${e.mname}`:""))}else if(e.dt==l){const n=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]}:`:"")+n)}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 n=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&&n){this.svgScrollApi.update({x:n.xOffset,y:n.yOffset-a.scrollHeight,totalWidth:n.zoomedMainW,visibleWidth:n.mainw,zoomCenter:a.zoomCenterPct*n.mainw-n.seriesXoffset})}if(this.dragToggleApi){this.dragToggleApi.update(a.mouseMode?{mouseMode:a.mouseMode}:{})}}getSettings(){return{mouseMode:this.dragToggleApi.getSettings().mouseMode}}async callback(e,a){const n=this.opts.app;const s=this.opts.parent;const i=a.tables||[a];e.target.focus();n.tip.clear();const o=n.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");if(a.title)e.attr("title",a.title);const i=await t[a.type](Object.assign({},{holder:e,dispatch:n.dispatch,id:s.id,debug:this.opts.debug,parent:s},a));i.main(s.config)}if(e.customInputs)e.customInputs(this,n,s,o);o.selectAll("select, input, button").attr("tabindex",0).on("keydown",self.keyboardNavHandler)}n.tip.showunder(e.target)}prependInfo(t,e,a){const n=t.append("tr");n.append("td").text(e).attr("class","sja-termdb-config-row-label");n.append("td").text(a)}async appendGeneInputs(e,a,n,s){w.clear();if(!n.selectedGroup)n.selectedGroup=0;if(n.opts.customInputs?.genes){for(const a of n.opts.customInputs.genes){a.chartType="matrix";const i=s.append("tr");if(a.title)i.attr("title",a.title);const o=await t[a.type](Object.assign({},{holder:i,id:n.id,debug:e.opts.debug,parent:n},a));o.main(n.config)}}e.addGenesetInput(event,a,n,s.append("tr"))}addGenesetInput(t,e,a,n){const s=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 n=l.status=="new"?{name:a,lst:[]}:o[l.index];if(l.status=="new")o.push(n);const s=l.mode=="geneExpression"?"geneExpression":"geneVariant";const r=n.lst.filter((t=>t.term.type!=s));const p=await Promise.all(t.map((async t=>{const e={gene:t.symbol||t.gene,name:t.symbol||t.gene,type:s};let a=n.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})));n.lst=[...r,...p];if(!n.lst.length)o.splice(l.index,1);e.dispatch({type:"plot_edit",id:this.parent.id,config:{termgroups:o}})},backBtn:{target:"Genes Menu",callback:()=>{s.click()}}})};const p=o.filter((t=>t.type!="hierCluster"||t.lst.find((t=>t.term.type=="geneExpression")))).length;n.append("td").attr("class","sja-termdb-config-row-label").html("Gene Set");if(p>0){const t=n.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"),(()=>s.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=n.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"),(()=>s.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 n=this.parent.config.settings.hierCluster;const s=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==n?.termGroupName)?n.dataType:this.parent.state.termdbConfig.queries?.snvindel?u.GENE_VARIANT:"",selected:this.parent.chartType=="hierCluster"&&(t.type=="hierCluster"||t.name&&t.name==n?.termGroupName)||t===a})));const i=t.append("select").style("width","218px").style("margin","2px 5px");for(const[t,e]of s.entries()){if(e.label)continue;if(e.name)e.label=e.name;else e.label=`Unlabeled group #${t+1}`}i.selectAll("option").data(s).enter().append("option").property("selected",(t=>t.selected)).attr("value",((t,e)=>e)).html((t=>t.label));return{groups:s,groupSelect:i}}appendDictInputs(t,e,a,n){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,n){n.attr("class",null);const i=a.config.settings.matrix;const o=a.legendData.find((t=>t.dt?.includes(s)));if(i.showMatrixCNV!=="none"&&(i.allMatrixMutationHidden||!o||o.crossedOut||!o.items.find((t=>!t.greyedOut&&!t.crossedOut)))){n.select("input[type='radio'][value='none']").property("disabled",true);n.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,n){n.attr("class",null);const s=a.config.settings.matrix;const i=a.legendData.find((t=>t.dt?.includes(l)));if(s.showMatrixMutation!=="none"&&(s.allMatrixCNVHidden||!i||i.crossedOut||!i.items.find((t=>!t.greyedOut&&!t.crossedOut)))){n.select("input[type='radio'][value='none']").property("disabled",true);n.select("input[type='radio'][value='none'] + span").style("opacity","0.5").on("mouseup",null)}if(s.addMutationCNVButtons&&a.chartType!=="hierCluster"&&s.showMatrixMutation=="bySelection")a.mutationControlCallback("bySelection")}updateSamplesControls(t,e,a,n){if(a.chartType=="hierCluster"&&a.config.settings.hierCluster.clusterSamples){const t=a.config.settings.matrix.controlLabels;const e=n.select(`tr[title='Set how to sort ${t.samples}']`);e.style("display","none")}}async addDictMenu(t,e,a,n=undefined){const s=await import("./app-ade9c62a.js");s.appInit({holder:n||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 n=a.findIndex((t=>t.name=="Variables"));if(n!==-1){const t=a[n];t.lst.push(...e);this.parent.app.dispatch({type:"plot_nestedEdits",id:this.parent.id,edits:[{nestedKeys:["termgroups",n,"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("title","Click the matrix to select data").style("display","inline-block").style("width","25px").style("height","24.5px").style("background-color",e.activeBgColor).on("click",(()=>s("select"))),grabBtn:t.holder.append("button").attr("title","Click the matrix to drag and move").style("display","inline-block").style("width","25px").style("height","24.5px").on("click",(()=>s("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 n=this;function s(e){a.opts.mouseMode=e;n.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);s(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 n=a.settings.matrix;const s=a.dimensions;if(e=="move"){a.dom.seriesesG.attr("transform",`translate(${s.xOffset+s.seriesXoffset-t},${s.yOffset})`);a.clusterRenderer.translateElems(-t,n,s);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 +0,0 @@
|
|
|
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-80d9b788.js";import{ap as r,ak as l,at as o,R as a}from"./app-a8c4854a.js";function u(e){const n=this.settings.matrix;this.termSorter=t(this,n);this.termGroups=JSON.parse(JSON.stringify(this.config.termgroups));const i=[];let r=0,l=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 r=new Set;for(const t of e.lst){if(r.has(t.sample))continue;r.add(t.sample);const e=t[s.$id];if(e){const{filteredValues:r,countedValues:l,renderedValues:o}=this.classifyValues(e,s,a,n,t);e.filteredValues=r;e.countedValues=l;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:l,tw:o,index:t,lstIndex:n.index,processedLst:d,prevGrpTotalIndex:r,totalIndex:r+t,ref:c,allCounts:u})}r+=d.length;l+=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 r=new Map;const l=this.config.divideBy?.term||{};const o=this.config.divideBy?.$id||"-";const a=this.config.divideBy?.exclude||[];const u=l.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(!r.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;r.set(e,n)}r.get(e).lst.push(n)}else{s.lst.push(n)}}const d=[...r.values()];const p=r.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 "${l.name}": too many ${e.sample} groups (${p}), with the majority of groups having <= 2 ${e.samples} per group.`}if(s.lst.length&&!r.size){r.set(undefined,s);d.push(...r.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 r=i.lst;for(const[l,o]of r.entries()){t.push({grp:i,grpIndex:e-n,row:o,index:l,prevGrpTotalIndex:s,totalIndex:s+l,totalHtAdjustments:0,grpTotals:{htAdjustment:0},processedLst:r})}if(!i.isExcluded)s+=r.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[r,l,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};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{T as e,h as t,f as n,i as s}from"./roundValue-b0d0517c.js";import{D as i,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-a8c4854a.js";import{r as h}from"./table-79e3e776.js";import{p as b}from"./pointer-c7475677.js";import"./tslib.es6-1f85f553.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 s=e?.grp;if(s?.legendData){if(n.target.closest(".sjpp-matrix-series-group-label-g"))t.displaySampleGroupInfo(n,s)}return}if(n.target.tagName!=="rect"&&!t.imgBox)t.imgBox=n.target.getBoundingClientRect();const s=n.target.tagName=="rect"?n.target.__data__:t.getImgCell(n);if(!s||!s.term||!s.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+s.seriesY).attr("height",s.tw.settings?.barh?s.tw.settings.barh+2*s.tw.settings.gap:s.t.grp.type=="hierCluster"?d.clusterRowh:d.rowh).style("display","");t.dom.colBeam.attr("x",a+s.x).attr("y",r).style("display","");t.dom.matrixCellHoverOver.clear();const c=i({holder:t.dom.matrixCellHoverOver.d.append("div")});if(s.term.type=="geneVariant"&&s.tw.q?.type=="values"){{const[e,t]=c.addRow();e.html(p.Sample);t.html(s.row._ref_.label||s.value?.sample)}{const[e,t]=c.addRow();e.html("Gene");t.html(s.term.name)}const e={};if(s.siblingCells)for(const t of s.siblingCells){if(t.$id!=s.$id)continue;const n=t.value;const i=n.pairlst;const a=n.origin?`${n.origin} ${o[n.dt]}`:o[n.dt];const r=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 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,s]=c.addRow();e.html(t);s.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(s.row._ref_.label)}let t;if(s.term.type==e.SURVIVAL&&s.exitCodeKey){t=s.term.values?.[s.exitCodeKey]?.label||s.exitCodeKey}if(t||s.convertedValueLabel||s.label){if(s.term.type==e.GENE_EXPRESSION){{const[e,t]=c.addRow();e.html("Gene");t.html(s.term.name)}{const e=s.tw?.q?.convert2ZScore&&s.tw.q.mode=="continuous"||s.tw.q.mode!=="continuous"?`<span style="display:inline-block; width:12px; height:12px; background-color:${s.fill=="#fff"||s.fill=="transparent"?"":s.fill}" ></span>`:"";const[t,n]=c.addRow();t.html("Gene Expression");n.html(`${e} ${s.convertedValueLabel||s.label}${s.tw?.q?.convert2ZScore&&s.tw.q.mode=="continuous"&&s.zscoreLabel?s.zscoreLabel:""}`)}}else if(s.term.type==e.METABOLITE_INTENSITY){{const[e,t]=c.addRow();e.html("Metabolite");t.html(s.term.name)}{const e=s.tw?.q?.convert2ZScore&&s.tw.q.mode=="continuous"||s.tw.q.mode!=="continuous"?`<span style="display:inline-block; width:12px; height:12px; background-color:${s.fill=="#fff"||s.fill=="transparent"?"":s.fill}" ></span>`:"";const[t,n]=c.addRow();t.html("Metabolite Intensity");n.html(`${e} ${s.convertedValueLabel||s.label}${s.tw?.q?.convert2ZScore&&s.tw.q.mode=="continuous"&&s.zscoreLabel?s.zscoreLabel:""}`)}}else if(s.term.type==e.SURVIVAL){{const[e,n]=c.addRow();e.html(s.term.name);n.html(`<span style="display:inline-block; width:12px; height:12px; background-color:${s.fill=="#fff"||s.fill=="transparent"?"":s.fill}" ></span>\n\t\t\t\t\t\t\t${t||s.label}`)}const e="Time to Event: "+(s.timeToEventKey?s.timeToEventKey+(s.term.unit?` ${s.term.unit}`:""):(s.convertedValueLabel||s.label)+(s.tw?.q?.convert2ZScore&&s.tw.q.mode=="continuous"&&s.zscoreLabel?s.zscoreLabel:""));{const[t,n]=c.addRow();t.html("");n.html(e)}}else{const e=s.tw?.q?.convert2ZScore&&s.tw.q.mode=="continuous"||s.tw.q.mode!=="continuous"?`<span style="display:inline-block; width:12px; height:12px; background-color:${s.fill=="#fff"||s.fill=="transparent"?"":s.fill}" ></span>`:"";const[t,n]=c.addRow();t.html(s.term.name);n.html(`${e} ${s.convertedValueLabel||s.label}${s.tw?.q?.convert2ZScore&&s.tw.q.mode=="continuous"&&s.zscoreLabel?s.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 s=e.target.__data__.find((e=>e.hoverY0<=n&&n<=e.hoverY1));if(!s)return;const{xMin:i,dx:o}=t.dimensions;const l=e.clientX-t.imgBox.x-e.target.clientLeft+i;for(const e of s.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.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,s){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=s||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 s=>{const i=a(t.opts.plotDiv||r(t.opts.holder.node().parentNode));i.header.text(m.sample_id);await(await import("./plot.ssgq-e49cb70b.js")).plotSingleSampleGenomeQuantification(t.state.termdbConfig,t.state.vocab.dslabel,e,m,i.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 s=a(t.opts.plotDiv||r(t.opts.holder.node().parentNode));s.header.text(m.sample_id);(await import("./plot.disco-43e18d2f.js")).default(t.state.termdbConfig,t.state.vocab.dslabel,m,s.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 s=>{const i=a(t.opts.plotDiv||r(t.opts.holder.node().parentNode));i.header.text(m.sample_id);(await import("./plot.dzi-41ea26e5.js")).default(t.state.vocab.dslabel,i.body,t.app.opts.genome,m.sample_id,n.sampleDZImages);e.remove();t.dom.clickMenu.d.selectAll("*").remove()}))}}if(p.NIdata){for(const e in p.NIdata){const n=t.dom.clickMenu.d.append("div").attr("class","sja_menuoption sja_sharp_border").text("Neuro Image: "+e).on("click",(async()=>{const s=a(t.opts.plotDiv||r(t.opts.holder.node().parentNode));s.header.text(m.sample_id);(await import("./plot.brainImaging-2f796b0c.js")).default(t.state.termdbConfig,t.state.vocab.dslabel,e,m,s.body,t.app.opts.genome);n.remove();t.dom.clickMenu.d.selectAll("*").remove()}))}}const u=t.settings.matrix.controlLabels;const f=i({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,s]=f.addRow();n.html("Gene");s.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 s=n.pairlst;const i=n.origin?`${n.origin} ${o[n.dt]}`:o[n.dt];const a=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 r=t.fill==n.color||n.class=="Blank"?"":t.fill;if(!e[i]){e[i]=[{label:a,color:r}]}else{e[i].push({label:a,color:r})}}for(const[t,n]of Object.entries(e).sort(((e,t)=>t.length-e.length))){const[e,s]=f.addRow();e.html(t);s.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 s=t.dragged;const i=!n.transpose?s.x:s.x-s.clientX+e.clientX;const o=!n.transpose?s.y-s.clientY+e.clientY:s.y;s.clone.attr("transform",`translate(${i},${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 s=Math.round((.5*n.mainw-n.seriesXoffset-e)/n.dx);return t.sampleOrder[s]};$(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 $(s){S(s,"term");s.setPill=function(e){s.pill=t({tip:s.customTipApi,menuOptions:"all",menuLayout:"horizontal",vocabApi:s.app.vocabApi,vocab:e.vocab,activeCohort:e.activeCohort,numericEditMenuVersion:["discrete","continuous"],usecase:{target:"matrix"},getBodyParams:()=>{const e=[];for(const t of s.config.termgroups){if(s.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=s.activeLabel||s.lastactiveLabel;if(e){e.label=t.tw.label;if(t&&t.tw)e.$id=t.tw.$id;const n=s.mayRemoveTvsEntry(e);s.pill.main(e);s.app.dispatch({type:"plot_nestedEdits",id:s.opts.id,edits:[{nestedKeys:["termgroups",t.grpIndex,"lst",t.lstIndex],value:e},{nestedKeys:["legendValueFilter"],value:n}]})}else{s.removeTerm()}s.dom.tip.hide()}})};s.getMenuOptions=function(e){return s.config.chartType=="hierCluster"&&e.grp.type==="hierCluster"?"{remove,}":e.tw.term.type=="geneVariant"?"{edit,replace,remove}":"*"};s.showTermMenu=async function(t){const n=t.target.__data__;if(!n||!n.tw||!n.grp)return;const i=s.settings.matrix;const o=i.controlLabels;s.activeLabel=n;s.dom.menutop.style("display","").selectAll("*").remove();s.dom.menubody.style("padding",0).selectAll("*").remove();const l=s.dom.menutop.append("div").style("display","block").text("Loading...");s.dom.tip.show(t.clientX-20,t.clientY-20);await s.pill.main(Object.assign({menuOptions:s.getMenuOptions(n)},n.tw?n.tw:{term:null,q:null}));l.remove();s.dom.shortcutDiv=s.dom.menutop.append("div");s.showShortcuts(n,s.dom.shortcutDiv);s.dom.twMenuDiv=s.dom.menutop.append("div");const a=s.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";s.dom.twLabelInput=a.append("input").attr("type","text").attr("size",r.length+3).attr("title",`Type to edit the ${d} label`).style("padding","1px 5px").style("text-align","center").property("value",r).on("input",(()=>{const e=s.dom.twLabelInput.property("value");s.dom.twLabelInput.attr("size",e.length+3);s.dom.twLabelEditBtn.style("display",e.trim()===r?"none":"inline")}));s.dom.twLabelEditBtn=a.append("button").style("display","none").style("margin-left","5px").html("submit").on("click",(()=>{if(r!=s.dom.twLabelInput.property("value").trim())s.updateTermLabel();s.dom.tip.hide()}));if(d=="gene"){s.dom.gbButton=a.append("button").style("text-align","center").html("Lollipop").attr("data-testid","oncoMatrix_cell_lollipop_button").on("click",(async()=>{await s.launchGB(n);s.dom.tip.hide()}))}if(s.state.termdbConfig.urlTemplates?.gene&&d=="gene"){const e=s.state.termdbConfig.urlTemplates;s.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=s.data.refs.byTermId[n.tw.$id][e.gene.namekey];window.open(`${e.gene.base}${t}`,"_blank");s.dom.tip.hide()}))}if(s.config.settings.matrix.maxSample){s.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`)}s.dom.twMenuBar=s.dom.twMenuDiv.append("div").style("text-align","center");const p=t.target;s.pill.showMenu(t,p,s.dom.twMenuBar);s.dom.grpMenuDiv=s.dom.menutop.append("div").style("margin-top","10px")};s.launchGB=async e=>{const t=a(s.opts.plotDiv||r(s.opts.holder.node().parentNode));t.header.text(e.tw.term.name);const n={debugmode:s.app.opts.debug,holder:t.body.append("div").style("margin","20px"),genome:s.app.opts.genome,nobox:true,query:e.tw.term.name,tklst:[{type:"mds3",dslabel:s.app.opts.state.vocab.dslabel,filter0:s.state.filter0,filterObj:structuredClone(s.state.filter)}]};const i=await import("./app-a8c4854a.js").then((function(e){return e.c3}));await i.default(n)};s.updateTermLabel=()=>{const e=s.dom.twLabelInput.property("value").trim();const t=s.activeLabel;if(t.tw.label===e)return;t.tw.label=e;t.grp.lst[t.lstIndex]=t.tw;s.app.dispatch({type:"plot_nestedEdits",id:s.opts.id,edits:[{nestedKeys:["termgroups",t.grpIndex],value:t.grp}]})};s.showShortcuts=(t,n)=>{const i=s.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=s.type!="hierCluster"&&t.tw.sortSamples?.priority!==undefined;n.append("span").selectAll("div").data([{icon:"corner",title:`Sort ${i.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||s.type=="hierCluster",handler:s.sortSamplesAgainstCornerTerm},{icon:"left",title:`Sort ${i.samples} against this ${o}`,disabled:t.tw.sortSamples?.priority===0&&!s.config.settings.hierCluster?.clusterSamples,fill:l?"rgba(200,100,100,0.5)":"",handler:l?s.unsortSamplesAgainstTerm:s.sortSamplesAgainstTerm},{html:" | "},{icon:"up",title:`Move this ${o} up`,disabled:t.index===0||s.type=="hierCluster",handler:s.moveTermUp},{icon:"down",title:`Move this ${o} down`,disabled:t.index===t.grp.lst.length-1||s.type=="hierCluster",handler:s.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)}))};s.sortSamplesAgainstCornerTerm=e=>{e.stopPropagation();const t=s.activeLabel;const n=JSON.parse(JSON.stringify(s.termGroups));const i=n[t.grpIndex];const[o,l]=s.getSorterTerms(t);i.lst.splice(t.lstIndex,1);i.lst.unshift(o);i.sortTermsBy="asListed";for(const e of n){if(e==i){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))+i.lst.length}}}s.app.dispatch({type:"plot_edit",id:s.opts.id,config:{termgroups:n,settings:{matrix:{sortTermsBy:"asListed"}}}});s.dom.tip.hide()};s.sortSamplesAgainstTerm=e=>{e?.stopPropagation();const t=s.activeLabel;const[n]=s.getSorterTerms(t);if(t.grp.type=="hierCluster")n.sortSamples.by="values";const i=s.termGroups;i[t.grpIndex].lst[t.lstIndex]=n;for(const e of i){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(s.chartType=="hierCluster"){s.config.settings.hierCluster.clusterSamples=false;s.config.settings.hierCluster.yDendrogramHeight=0}s.config.termgroups=i;s.app.dispatch({type:"plot_edit",id:s.opts.id,config:s.config});s.dom.tip.hide()};s.unsortSamplesAgainstTerm=(e,t)=>{e.stopPropagation();const n=s.activeLabel||t.data.t;const[i]=s.getSorterTerms(n);const o=s.termGroups;o[n.grpIndex].lst[n.lstIndex]=i;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}}}s.app.dispatch({type:"plot_edit",id:s.opts.id,config:{termgroups:o}});s.dom.tip.hide()};s.moveTermUp=e=>{e.stopPropagation();const t=s.activeLabel;const n=s.termGroups[t.grpIndex];n.lst.splice(t.lstIndex,1);n.lst.splice(t.lstIndex-1,0,t.tw);n.sortTermsBy="asListed";s.app.dispatch({type:"plot_nestedEdits",id:s.opts.id,edits:[{nestedKeys:["termgroups",t.grpIndex],value:n},{nestedKeys:["settings","matrix","sortTermsBy"],value:"asListed"}]});s.dom.tip.hide()};s.moveTermDown=e=>{e.stopPropagation();const t=s.activeLabel;const n=s.termGroups[t.grpIndex];n.lst.splice(t.lstIndex,1);n.lst.splice(t.lstIndex+1,0,t.tw);n.sortTermsBy="asListed";s.app.dispatch({type:"plot_nestedEdits",id:s.opts.id,edits:[{nestedKeys:["termgroups",t.grpIndex],value:n},{nestedKeys:["settings","matrix","sortTermsBy"],value:"asListed"}]});s.dom.tip.hide()};s.showTermEditMenu=async()=>{s.dom.menubody.selectAll("*").remove();const e=s.activeLabel;const t=s.config.settings.matrix;const n=t.controlLabels;if(e.tw.term.type=="geneVariant"){const t=s.dom.menubody.append("div");const i=t.append("label");i.append("span").html(`Minimum # ${n.samples} to be visible`);const o="minNumSamples"in e.tw?e.tw.minNumSamples:"";const l=i.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)}s.app.dispatch({type:"plot_nestedEdits",id:s.opts.id,edits:[{nestedKeys:["termgroups",e.grpIndex,"lst",e.lstIndex],value:e.tw}]});s.dom.tip.hide()}))}else{await s.pill.main(Object.assign({menuOptions:s.getMenuOptions(e)},s.activeLabel.tw));s.pill.showMenu()}};s.showMoveMenu=async()=>{s.dom.menubody.selectAll("*").remove();s.termBeingMoved=s.activeLabel;const e=s.dom.menubody.append("div");e.append("span").html("Click on another label");s.makeInsertPosRadios(e)};s.showTermInsertMenu=()=>{s.dom.menubody.selectAll("*").remove();s.dom.editbtns=s.dom.menubody.append("div");s.dom.editbody=s.dom.menubody.append("div");if(s.activeLabel.grp.type=="hierCluster"){s.showDictTermSelection();return}const e=s.dom.editbtns.append("div").style("margin","10px 5px");e.append("label").html(`Insert genes or variables in `);s.dom.grpNameSelect=e.append("select").on("change",(()=>{const e=s.dom.grpNameSelect.property("value");s.dom.grpNameTextInput.property("disabled",e=="current").property("value",e=="current"?s.activeLabel.grp.name:t)}));s.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="";s.dom.grpNameTextInput=e.append("input").attr("type","text").property("disabled",true).property("value",s.activeLabel.grp.name).on("change",(()=>{const e=s.dom.grpNameTextInput.property("value");if(e==s.activeLabel.grp.name);else{t=s.dom.grpNameTextInput.property("value")}}));s.makeInsertPosRadios(s.dom.editbtns);s.showDictTermSelection()};s.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");s.insertRadioId=`sjpp-matrix-${s.id}-insert-pos`;const i=n.append("label");i.append("input").attr("type","radio").attr("value","above").property("checked",true).attr("name",s.insertRadioId);i.append("span").html("above");n.append("span").html("  ");const o=n.append("label");o.append("input").attr("type","radio").attr("value","below").attr("name",s.insertRadioId);o.append("span").html(" below")};s.showDictTermSelection=async()=>{const e={target:"matrix",detail:"termgroups"};if(s.activeLabel.grp.type=="hierCluster"){e.target=s.activeLabel.tw.term.type;e.detail="term"}const t=await import("./app-ade9c62a.js");s.dom.editbody.selectAll("*").remove();t.appInit({holder:s.dom.editbody.append("div"),vocabApi:s.app.vocabApi,state:{vocab:s.state.vocab,activeCohort:s.activeCohort,nav:{header_mode:"search_only"},tree:{usecase:e}},tree:{submit_lst:i},search:{handleGeneVariant:e=>i([e])}})};async function i(e){const t=await Promise.all(e.map((async e=>{const t=structuredClone(e);const i="id"in t?{id:t.id,term:t}:{term:t};await n(i,s.app.vocabApi);return i})));const i=s.insertRadioId&&r(`input[name='${s.insertRadioId}']:checked`)?.property("value");const o=s.activeLabel;const l=s.termGroups;if(o.grp.type=="hierCluster"){const e=l[o.grpIndex];e.lst.splice(o.lstIndex+1,0,...t);s.app.dispatch({type:"plot_nestedEdits",id:s.opts.id,edits:[{nestedKeys:["termgroups",o.grpIndex,"lst"],value:e.lst}]})}else if(s.dom.grpNameSelect.property("value")=="current"){const e=l[o.grpIndex];const n=i=="above"?o.lstIndex:o.lstIndex+1;e.lst.splice(n,0,...t);s.app.dispatch({type:"plot_nestedEdits",id:s.opts.id,edits:[{nestedKeys:["termgroups",o.grpIndex,"lst"],value:e.lst}]})}else{const e=i=="above"?o.grpIndex:o.grpIndex+1;l.splice(e,0,{name:s.dom.grpNameTextInput.property("value"),lst:t});s.app.dispatch({type:"plot_edit",id:s.opts.id,config:{termgroups:l}})}s.dom.tip.hide()}s.showSortMenu=()=>{const e=s.activeLabel;s.dom.menubody.selectAll("*").remove();s.dom.menubody.append("div").style("margin-top","10px").style("text-align","center").html(e.tw.term.name);s.moveInput=undefined;s.showSortOptions(e)};s.showTermMoveOptions=e=>{const t=s.dom.menubody.append("div").style("margin-top","10px");const n=t.append("label");s.moveInput=n.append("input").attr("type","checkbox").style("text-align","center");n.append("span").html(` move this row `);const i=t.append("select");i.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))};s.showSortOptions=e=>{const t=s.dom.menubody.append("div").style("margin-top","10px");const n=t.append("label");const i=n.append("input").attr("type","checkbox").property("checked",true).style("text-align","center");const o=s.settings.matrix.controlLabels;n.append("span").html(` sort ${o.samples} against (in order of priority):`);const l=s.showSorterTerms(t,e);s.dom.menubody.append("button").html("Apply").on("click",(()=>{JSON.parse(JSON.stringify(s.config.settings.matrix))||{};delete l.div;delete l.up;delete l.down;delete l.delete;if(i.property("checked")||s.moveInput.property("checked")){s.app.dispatch({type:"plot_nestedEdits",id:s.opts.id,edits:[{nestedKeys:["termgroups",e.grpIndex,"lst",e.lstIndex],value:l}]})}s.dom.tip.hide()}))};s.showSorterTerms=(e,t)=>{const[n,i]=s.getSorterTerms(t);const o=s.settings.matrix;const l=o.controlLabels;e.append("div").style("margin","5px").style("padding","5px 10px").selectAll("div").data(i,(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);i.splice(e.priority,1);i.splice(e.priority-1,0,e);a()}));e.down=e.div.append("span").html(" ▼ ").style("display",t<i.length-1?"inline":"none").style("color","#555").on("click",(()=>{this.parentNode.insertBefore(this,this.nextSibling.nextSibling);i.splice(e.priority,1);i.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();i.splice(e.priority,1);a()}))}));function a(){for(const[e,t]of i.entries()){t.priority=e;t.up.style("display",t.priority>0?"inline":"none");t.down.style("display",t.priority<i.length-1?"inline":"none")}}return n};s.getSorterTerms=e=>{const t=[...s.termOrder.filter((e=>e.tw.sortSamples)).map((e=>JSON.parse(JSON.stringify(e.tw)))).sort(((e,t)=>e.sortSamples.priority-t.sortSamples.priority)),...s.config.settings.matrix.sortSamplesTieBreakers.map((e=>JSON.parse(JSON.stringify(e))))];const n=s.settings.matrix;const i=n.sortOptions[n.sortSamplesBy];if(!i){throw`unsupported s.sortSamplesBy='${n.sortSamplesBy}'`}const o=i.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]};s.removeTerm=()=>{const e=s.activeLabel;const t=s.mayRemoveTvsEntry(e.tw);const n=s.termGroups;const i=n[e.grpIndex];i.lst.splice(e.lstIndex,1);if(i.lst.length){s.app.dispatch({type:"plot_nestedEdits",id:s.opts.id,edits:[{nestedKeys:["termgroups",e.grpIndex,"lst"],value:i.lst},{nestedKeys:["legendValueFilter"],value:t}]})}else{n.splice(e.grpIndex,1);s.app.dispatch({type:"plot_edit",id:s.opts.id,config:{termgroups:n,legendValueFilter:t}})}s.dom.tip.hide()};s.removeTermGroup=()=>{const e=s.activeLabel;const t=s.termGroups;t.splice(e.grpIndex,1);s.app.dispatch({type:"plot_edit",id:s.opts.id,config:{termgroups:t}});s.dom.tip.hide()};s.mayRemoveTvsEntry=e=>{if(!s.config.legendValueFilter?.lst.length)return s.config.legendValueFilter;const t=structuredClone(s.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 s.config.legendValueFilter;else{for(const s of n){const n=s.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 i=t.findIndex((e=>e===n));t.splice(i,1)}}return{in:true,join:"and",type:"tvslst",lst:t}};s.launchBrowser=e=>{e.stopPropagation();const t=s.activeLabel.tw;const n=[];for(const e of s.data.lst){if(e[t.$id]?.values)n.push(...e[t.$id].values)}s.app.dispatch({type:"plot_create",config:{term:t,chartType:"variantBrowser",insertBefore:s.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 s=JSON.parse(JSON.stringify(e.config.menuOpts?.sampleGroup||[])).map((t=>{t.callback=e[t.callback];return t}));const i=[...s,{label:"Delete",callback:e.removeSampleGroup}];e.dom.menutop.append("div").selectAll(":scope>.sja_menuoption").data(i).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 s="sjpp-matrix-surv-termnum-"+v++;const i=n.append("label");i.append("input").attr("type","radio").attr("name",s).attr("value","term2").property("checked",true);i.append("span").html(" overlay");const o=n.append("label").style("margin-left","10px");o.append("input").attr("type","radio").attr("name",s).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-ade9c62a.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:i=>{e.dom.tip.hide();const o=n.select(`input[name='${s}']:checked`).property("value");e.dom.menubody.selectAll("*").remove();const l={chartType:"survival",term:i,[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 s=e.config.legendValueFilter.lst.findIndex((e=>e.legendGrpName==t.term.id));if(s==-1){const s={legendGrpName:t.term.id,type:"tvs",tvs:{isnot:true,term:n,values:[{key:e.activeLabel.grp.id}]}};e.config.legendValueFilter.lst.push(s)}else{e.config.legendValueFilter.lst[s].tvs.values.push({key:e.activeLabel.grp.id})}}else if(s(n)){n.$id=t.$id;const s={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(s)}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 s=e.settings.matrix.controlLabels;const i=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> (${i} ${i<2?s.sample:s.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 s=o.append("table");for(const e of n.items){const t=s.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 s="id"in n?n.id:n.name;if(t.termid==s){if(!n.exclude)n.exclude=[];const s=n.exclude?.indexOf(t.key);if(s==-1)n.exclude.push(t.key);else n.exclude.splice(s,1);e.app.dispatch({type:"plot_edit",id:e.id,config:{divideBy:n}})}};e.handleLegendMouseover=(t,n)=>{const s=structuredClone(e.config.divideBy||{});const i="id"in s?s.id:s.name;if(n.termid==i){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 s=n.append("div").style("text-align","center");s.append("span").text("Group ");e.dom.grpNameInput=s.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=s.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 i=[{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"){i.splice(0,1);i.splice(1,1)}n.append("div").style("text-align","center").selectAll(":scope>.sja_menuoption").data(i).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 s=e.settings.matrix.controlLabels;n.append("span").html(`Minimum # of mutated ${s.samples} for the ${s.term.charAt(0).toLowerCase()+s.term.slice(1)} to be visible `).attr("title",`May be overridden by a row-specific minNumSamples`);const i=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=i.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,s)=>{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 s=n.target.__data__.tw.term.name;const i=e.dom.menubody.append("div").style("text-align","left").style("font-size","1.1em").html(t?`<b>${t}: ${s}</b>`:`<b>${s}</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);i.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 s=e.sampleGroups.find((e=>e.name==t)).lst.length;const i=s-n.samplesNotTested?n.samplesTotal/(s-n.samplesNotTested):0;o.append("div").style("padding-top","10px").html(t?`<b>${t}</b>: Mutated samples (${n.samplesTotal} of ${s-n.samplesNotTested}, ${c(".1%")(i)})`:`<b>Mutated samples (${n.samplesTotal} of ${s-n.samplesNotTested}, ${c(".1%")(i)})`);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,s]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}: ${s}`)}}}}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 s=e.sampleGroups.find((e=>e.name==t)).totalCountedValues;o.append("div").style("padding-top","10px").html(t!==""?`<b>${t}</b>: ${n.samplesTotal} of ${s}`:`<b>${n.samplesTotal} of ${s}`);const i=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 s=i.append("tr");s.append("td").append("div").style("width","12px").style("height","12px").style("background-color",n);s.append("td").html(`${e}: ${t}`)}}}}else{for(const[t,n]of Object.entries(a.counts.subGroupCounts)){const s=e.sampleGroups.find((e=>e.name==t)).totalCountedValues;o.append("div").style("padding-top","10px").html(t!==""?`<b>${t}</b>: ${n.samplesTotal} of ${s}`:`<b>${n.samplesTotal} of ${s}`);const i=e.sampleGroups.find((e=>e.name==t));const l=i.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,s]of Object.entries(n.classes).sort(((e,t)=>t[1]-e[1]))){const n=a.tw.term.values?.[t]?.color;if(!n)continue;const i=e.append("tr");i.append("td").append("div").style("width","12px").style("height","12px").style("background-color",n);i.append("td").html(`${t}: ${s}`)}}}}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,s)=>{const i=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 s=e.clicked.event.target.closest(".sjpp-matrix-label");const i=s?.__data__;if(!i)return;if(e.type=="hierCluster"&&i.tw&&i.grp?.name==e.config.settings.hierCluster?.termGroupName)return;const[o,l]=r(s).attr("transform").split("translate(")[1].split(")")[0].split(",").map(Number);const a=s.cloneNode(true);e.dom[`${t}LabelG`].node().prepend(a);e.dragged={orig:s,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=!i.transpose?o.x:o.x-o.clientX+n.clientX;const a=!i.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 s=n.orig.__data__;const i=e.hovered;if(t=="termGrp"){const t=e.config.termgroups.splice(s.grpIndex,1)[0];e.config.termgroups.splice(i.grpIndex,0,t)}else{for(const t of e.config.termgroups){t.lst.sort(((t,n)=>{const s=e.termOrder.find((e=>e.tw.$id===t.$id));const i=e.termOrder.find((e=>e.tw.$id===n.$id));if(!s&&!i)return 0;if(!s)return 1;if(!i)return-1;return s.totalIndex-i.totalIndex}))}e.config.termgroups[s.grpIndex].lst.splice(s.index,1)[0];e.config.termgroups[i.grpIndex].lst.splice(i.index,0,s.tw);if(!e.config.termgroups[s.grpIndex].lst.length)e.config.termgroups.splice(s.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=b(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 s=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+s.seriesXoffset;const i=Math.floor(n/s.dx);return e.sampleOrder[i]}}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 s=.5*t.mainw;n.center={max:s+(t.zoomedMainW-t.mainw),min:s}};e.seriesesGdrag=function(t){const n=e.settings.matrix;const s=e.clickedSeriesCell;const i=e.dimensions;const o=t.clientX-s.event.clientX;if(Math.abs(o)<1)return;if(o<s.dxMinPad||o>s.dxMaxPad)return;e.clickedSeriesCell.dx=o;e.translateElems(o,i,n,s)};e.translateElems=function(t,n,s,i){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=s.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 s=e.dimensions;const i=e.clickedSeriesCell;const o=t.clientX-i.event.clientX;const l=Math.min(i.dxMax,Math.max(o,i.dxMin));if(Math.abs(o)<1||Math.abs(l)<1){e.translateElems(0,s,n,i);return}e.translateElems(l,s,n,i);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 s=t.clientX-n.clientX;t.clientY-n.clientY;const i=s>0?e.zoomPointer[0]:e.zoomPointer[0]+s+3;e.zoomWidth=Math.abs(s);e.zoomArea.attr("transform",`translate(${i},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(s){s.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 i=e.clickedSeriesCell;const o=e.getCellByPos(s);if(!i||!i.startCell){e.dom.mainG.on("mouseout",null);delete e.clickedSeriesCell;return}else if(!i.endCell||o===i.startCell){e.dom.mainG.on("mouseout",null);e.dom.tip.hide();const t=s.target.tagName=="rect"?s.target.__data__:i.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(s,t)}}delete e.clickedSeriesCell;delete e.zoomArea;return}const l=e.settings.matrix;const a=l.controlLabels;i.endCell=o;const d=e.opts.allow2selectSamples;const p=i.startCell.totalIndex<i.endCell.totalIndex?i.startCell:i.endCell;const c=i.startCell.totalIndex<i.endCell.totalIndex?i.endCell:i.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,s.clientX,s.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(s.clientX,s.clientY)};const t=function(e,t,n,s){delete e.clickedSeriesCell;const i=e.state.termdbConfig.urlTemplates;const o=i?.sample?t.map((e=>[{value:e._ref_.label,url:`${i.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");h({rows:o,columns:l,div:a,showLines:true,maxWidth:l.length*"30"+"vw",maxHeight:"35vh",resize:true});e.dom.sampleListMenu.show(n,s)};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 s=e.dimensions;const i=t.startCell.totalIndex<t.endCell.totalIndex?t.startCell:t.endCell;const o=Math.floor(i.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*s.mainw/e.zoomWidth;const c=Math.max(d,Math.min(p,r));const m=l.totalIndex*s.dx+(l.grpIndex-1)*n.colgspace+s.seriesXoffset;e.app.dispatch({type:"plot_edit",id:e.id,config:{settings:{matrix:{zoomLevel:c,zoomCenterPct:c<1&&s.mainw>=s.zoomedMainW?.5:m/s.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 s=e.config.legendGrpFilter.lst.find((e=>e.dt?.includes(n.dt)&&(!e.origin||e.origin==n.origin)))&&true;if(n.isLegendItem&&s){return}const i=e.termOrder.find((e=>e.tw.$id==n.$id));if(i?.tw?.q?.type=="predefined-groupset"||i?.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 i=e.state.termdbConfig.assayAvailability?.byDt?.[parseInt(n.dt)]?.byOrigin;const o=e.dom.legendMenu.clear();if(!n.isLegendItem){if(!n.dt){return}const s=e.config.legendGrpFilter.lst.findIndex((e=>e.dt.slice().sort().toString()===n.dt.slice().sort().toString()&&(!i||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)&&(!i||e.origin==n.origin)))));const a=o.d.append("div");if(s==-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",(()=>{A(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)F(o,n,e)}))}if(s!==-1||l!==-1){a.append("div").attr("class","sja_menuoption sja_sharp_border").text(`Show all ${n.name}`).on("click",(()=>{O(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&&(!i||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(s(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 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:n.key}]}};e.config.legendValueFilter.lst.push(s)}else{e.config.legendValueFilter.lst[s].tvs.values.push({key:n.key})}}else if(s(t)){t.$id=n.$id;const s={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(s)}}}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 s=e.config.legendValueFilter.lst[t].tvs.values.findIndex((e=>e.key==n.key));e.config.legendValueFilter.lst[t].tvs.values.splice(s,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 i=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 s of i.items){if(s.key==n.key)continue;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:s.key}]}};e.config.legendValueFilter.lst.push(i)}else{e.config.legendValueFilter.lst[i].tvs.values.push({key:s.key})}}}else if(s(t)){t.$id=n.$id;for(const s of i.items){if(s.key==n.key)continue;const i={legendGrpName:n.termid,type:"tvs",tvs:{isnot:true,term:t,ranges:[e.data.refs.byTermId[n.$id].bins.find((e=>s.key==e.name))]}};if(!e.config.legendValueFilter.lst.length)e.config.legendValueFilter.lst=[i];else e.config.legendValueFilter.lst.push(i)}}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:A,none:F,all:O,bySelection:j};e.mutationControlCallback=t=>{const n=e.dom.legendMenu.clear();const s=e.legendData.find((e=>e.dt?.includes(f)));e.mutationSelectionActions[t](n,s,e,"mutation")};e.CNVControlCallback=t=>{const n=e.dom.legendMenu.clear();const s=e.legendData.find((e=>e.dt?.includes(y)));e.mutationSelectionActions[t](n,s,e,"CNV")};e.geneStyleControlCallback=t=>{const n=e.legendData.find((e=>e.dt?.includes(y)));if(t=="")T(n,e);else if(t=="single")L(n,e);else if(t=="oncoprint")G(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 s=t.config.legendGrpFilter.lst.findIndex((t=>t.dt.slice().sort().toString()===e.dt.slice().sort().toString()&&(!n||t.origin==e.origin)));if(s==-1){const s={dt:e.dt};if(n){s.origin=e.origin}t.config.legendValueFilter.lst=t.config.legendValueFilter.lst.filter((t=>t.legendGrpName!==e.name));t.config.legendGrpFilter.lst.push(s)}}t.config.settings.matrix.cellEncoding="single"}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 s=t.config.legendGrpFilter.lst.findIndex((t=>t.dt.slice().sort().toString()===e.dt.slice().sort().toString()&&(!n||t.origin==e.origin)));if(s!==-1)t.config.legendGrpFilter.lst.splice(s,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 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 s=t.config.legendGrpFilter.lst.findIndex((t=>t.dt.slice().sort().toString()===e.dt.slice().sort().toString()&&(!n||t.origin==e.origin)));if(s!==-1)t.config.legendGrpFilter.lst.splice(s,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 s=n.config.settings.matrix.controlLabels;for(const[i,o]of Object.entries(l)){if(e.includes(i)||o.dt!=f)continue;const l={legendGrpName:t.origin?`${t.origin[0].toUpperCase()+t.origin.slice(1)} ${s.Mutations}`:s.Mutations,type:"tvs",tvs:{isnot:true,legendFilterType:"geneVariant_soft",term:{type:"geneVariant"},values:[{dt:f,origin:t.origin,mclasslst:[i]}]}};n.config.legendValueFilter.lst.push(l)}}n.app.dispatch({type:"plot_edit",id:n.id,config:n.config})}function A(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 s=n.config.settings.matrix.controlLabels;for(const[i,o]of Object.entries(l)){if(e.includes(i)||o.dt!=f)continue;const l={legendGrpName:t.origin?`${t.origin[0].toUpperCase()+t.origin.slice(1)} ${s.Mutations}`:s.Mutations,type:"tvs",tvs:{isnot:true,legendFilterType:"geneVariant_soft",term:{type:"geneVariant"},values:[{dt:f,origin:t.origin,mclasslst:[i]}]}};n.config.legendValueFilter.lst.push(l)}}n.app.dispatch({type:"plot_edit",id:n.id,config:n.config})}function F(e,t,n,s){e.hide();if(t){const e=n.state.termdbConfig.assayAvailability?.byDt?.[parseInt(t.dt)]?.byOrigin;const s=n.config.legendGrpFilter.lst.findIndex((n=>n.dt.slice().sort().toString()===t.dt.slice().sort().toString()&&(!e||n.origin==t.origin)));if(s==-1){const s={dt:t.dt};if(e){s.origin=t.origin}n.config.legendValueFilter.lst=n.config.legendValueFilter.lst.filter((e=>e.legendGrpName!==t.name));n.config.legendGrpFilter.lst.push(s)}}if(n.state.config.settings.matrix.addMutationCNVButtons&&n.chartType!=="hierCluster"&&(s=="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 E(e,t,n){if(t){const n=e.state.termdbConfig.assayAvailability?.byDt?.[parseInt(t.dt)]?.byOrigin;const s=e.config.legendGrpFilter.lst.findIndex((e=>e.dt.slice().sort().toString()===t.dt.slice().sort().toString()&&(!n||e.origin==t.origin)));const i=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(s!==-1)e.config.legendGrpFilter.lst.splice(s,1);if(i!==-1)e.config.legendValueFilter.lst=e.config.legendValueFilter.lst.filter((e=>e.legendGrpName!=t.name))}const s=e.config.settings.matrix;if(s.addMutationCNVButtons&&e.chartType!=="hierCluster"&&(n=="CNV"||t?.dt?.includes(y))&&s.cellEncoding!==""){s.cellEncoding="oncoprint"}return e.config}function O(e,t,n,s){e.hide();n.app.dispatch({type:"plot_edit",id:n.id,config:E(n,t,s)})}function j(e,t,n,s){e.hide();const i=n.config.settings.matrix;if(!t){if(i.addMutationCNVButtons&&n.chartType!=="hierCluster"&&s=="mutation"){i.showMatrixMutation="bySelection"}else if(i.addMutationCNVButtons&&n.chartType!=="hierCluster"&&s=="CNV"){i.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(s=="mutation"?i.mutationClasses:i.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=s=="mutation"?i.hiddenMutations.includes(e):i.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 s=="mutation"?i.mutationClasses:i.CNVClasses){if(p.includes(e))continue;const s={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(s)}if(n.state.config.settings.matrix.addMutationCNVButtons&&n.chartType!=="hierCluster"&&(s=="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{E as getConfigForShowAll,w as setInteractivity,O as showAll};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{s as e}from"./legacy-d3-polyfill-bdb2d792.js";import{a8 as t,af as r,ak as s}from"./app-a8c4854a.js";import{i}from"./roundValue-b0d0517c.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};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{i as t,h as e,f as s}from"./roundValue-b0d0517c.js";import{d as r}from"./app-a8c4854a.js";import"./tslib.es6-1f85f553.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};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{getEmptyCell as e,setCellProps as t,maySetEmptyCell as s}from"./matrix.cells-819d4991.js";import"./roundValue-b0d0517c.js";function n(n){const i=this.settings.matrix;const o=[];const{colw:l,dx:d,dy:a,xMin:c,xMax:u}=this.dimensions;const p=this.config.divideBy||{};const g="id"in p?p.id:p.name;const f={};this.colorScaleByTermId={};for(const n of this.termOrder){const r=n.tw.$id;const p="id"in n.tw.term?n.tw.term.id:n.tw.term.name;const m=p===g;const h=[];const v=n.grp.type=="hierCluster"?i.clusterRowh:a;const y=n.grp.type=="hierCluster"?0:n.totalHtAdjustments;const w=i.transpose?0:n.totalIndex*v+n.visibleGrpIndex*i.rowgspace+y;const x=(n.tw.settings?.gap||0)+w;const $={t:n,tw:n.tw,cells:[],y:w,hoverY0:x,hoverY1:x+(n.tw.settings?.barh||v)};for(const o of this.unfilteredSampleOrder){const{totalIndex:g,grpIndex:v,row:y}=o;$.x=!i.transpose?0:n.totalIndex*d+n.visibleGrpIndex*i.colgspace;const x=y[r];const I={s:o,sample:y.sample,tw:n.tw,term:n.tw.term,termid:p,$id:r,totalIndex:g,grpIndex:v,row:y,t:n,seriesY:w};if(!x){if(!o.grp.isExcluded&&(i.useCanvas||o.grp)){const t=e(I,i,this.dimensions);$.cells.push(t)}continue}const C=x.key;const G=x.filteredValues||x.values||[x.value];const b=i.cellEncoding=="oncoprint"?1:G.length;const E=!i.transpose?i.rowh/b:l;const V=!i.transpose?l:l/G.length;const O=[];if(!x||!x.renderedValues?.length){if(!o.grp.isExcluded&&(i.useCanvas||o.grp)){const t=e(I,i,this.dimensions);$.cells.push(t)}continue}for(const[e,s]of G.entries()){const l=Object.assign({key:C,siblingCells:O},I);l.valueIndex=e;const p=n.grp.type=="hierCluster"?t["hierCluster"]:n.tw.term.type=="geneVariant"&&(n.tw?.q?.type=="predefined-groupset"||n.tw?.q?.type=="custom-groupset")?t["categorical"]:t[n.tw.term.type];const g=p(l,n.tw,x,s,i,n,this,V,E,d,a,e);if(!i.useCanvas&&(l.x+l.width<c||l.x-l.width>u))continue;if(g){for(const e of[f,o.grp.legendGroups]){if(!e)continue;if(!e[g.group]){e[g.group]={ref:g.ref,values:{},order:g.order,$id:r,origin:g.entry.origin};if(g.entry.dt)e[g.group].dt=[g.entry.dt]}const t=e[g.group];if(t.dt&&!t.dt.includes(g.entry.dt))t.dt.push(g.entry.dt);const s=g.entry.origin?g.entry.origin+g.value:g.value;if(!t.values[s]){t.values[s]=JSON.parse(JSON.stringify(g.entry));if(g.entry.scale)t.values[s].scale=g.entry.scale}if(!t.values[s].samples)t.values[s].samples=new Set;t.values[s].samples.add(y.sample);if(m){t.values[g.value].isExcluded=o.grp.isExcluded}}}if(!o.grp.isExcluded){if(x.renderedValues.includes(s))$.cells.push(l);O.push(l)}}if(i.showGrid=="rect"&&!o.grp.isExcluded){const t=n.grp.type=="hierCluster"?e(I,i,this.dimensions):s[n.tw.term.type]?.(O,I,i,this.dimensions);if(t)h.push(t)}}if(h.length)$.cells.unshift(...h);if($.cells.length)o.push($)}r(f,this);this.legendData=this.getLegendData(f,n.refs,this);for(const e of this.sampleGroups){e.legendData=this.getLegendData(e.legendGroups,n.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 i=Object.freeze({__proto__:null,getSerieses:n});export{i as m};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{b as e}from"./roundValue-b0d0517c.js";import{at as t,ak as r,ap as s,bE as i,bD as n}from"./app-a8c4854a.js";import"./tslib.es6-1f85f553.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?S(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;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 S(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,S as reshapeSortPriority};
|