@sjcrh/proteinpaint-client 2.63.0 → 2.63.2
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/README.md +9 -7
- package/dist/{2dmaf-70c0b6bb.js → 2dmaf-0cabb4a4.js} +1 -1
- package/dist/{ColorScale-b44d51ef.js → ColorScale-9800a609.js} +1 -1
- package/dist/{DEanalysis-b86d0874.js → DEanalysis-567989ff.js} +1 -1
- package/dist/{Disco-16cd51c0.js → Disco-5d1404ce.js} +1 -1
- package/dist/{Disco.UI-a38a12e6.js → Disco.UI-54228bb6.js} +1 -1
- package/dist/{DragControls-0c173a20.js → DragControls-a05737c2.js} +1 -1
- package/dist/{DziViewer-5c2d68e7.js → DziViewer-3f466d90.js} +2 -2
- package/dist/{FilterRxComp-0e75dd8d.js → FilterRxComp-fc769f34.js} +1 -1
- package/dist/{FilterStateless-ad3df967.js → FilterStateless-8f30f856.js} +1 -1
- package/dist/{HicApp-bcf8330c.js → HicApp-aac413df.js} +1 -1
- package/dist/{OrbitControls-c33cf781.js → OrbitControls-8b7f91ca.js} +1 -1
- package/dist/app-59194db0.js +1 -0
- package/dist/{app-f91922b4.js → app-71453429.js} +1 -1
- package/dist/{app-bfce9bf5.js → app-fb676934.js} +1 -1
- package/dist/app.js +1 -1
- package/dist/{bam-95f36008.js → bam-e7f6baea.js} +1 -1
- package/dist/{barchart-e2af00a8.js → barchart-ef4874c8.js} +1 -1
- package/dist/{barchart.events-272fd122.js → barchart.events-e24facf7.js} +1 -1
- package/dist/{bars.renderer-f0e5af5a.js → bars.renderer-c46d3f44.js} +1 -1
- package/dist/{block-ec76524e.js → block-4f585abe.js} +1 -1
- package/dist/block.lazyload-6f83d057.js +1 -0
- package/dist/{block.legend-f8cad7e4.js → block.legend-cec87c6f.js} +1 -1
- package/dist/{block.mds-20655637.js → block.mds-f5a11c42.js} +1 -1
- package/dist/{block.mds.cnv-5feb86a0.js → block.mds.cnv-25423c1e.js} +1 -1
- package/dist/{block.mds.expressionrank-c7043f35.js → block.mds.expressionrank-fc1996d5.js} +1 -1
- package/dist/{block.mds.expressionstat-4bf457f3.js → block.mds.expressionstat-45b6bf47.js} +1 -1
- package/dist/{block.mds.geneboxplot-132e5fe6.js → block.mds.geneboxplot-037df46d.js} +1 -1
- package/dist/{block.mds.junction-1f9810df.js → block.mds.junction-00161de6.js} +1 -1
- package/dist/{block.mds.svcnv-094c416f.js → block.mds.svcnv-0c257af4.js} +1 -1
- package/dist/{block.mds.svcnv.share-bb976e02.js → block.mds.svcnv.share-c0b9dfad.js} +1 -1
- package/dist/{block.mds2-7045e32c.js → block.mds2-9009f8d8.js} +1 -1
- package/dist/{block.svg-d8d76ba7.js → block.svg-86bbfcb0.js} +1 -1
- package/dist/{block.tk.aicheck-317d04bd.js → block.tk.aicheck-a5697794.js} +1 -1
- package/dist/{block.tk.ase-d1577ec1.js → block.tk.ase-ad1be47c.js} +1 -1
- package/dist/{block.tk.bam-3cdc13a0.js → block.tk.bam-14339d16.js} +1 -1
- package/dist/{block.tk.bedgraphdot-5304e06c.js → block.tk.bedgraphdot-efe19e56.js} +1 -1
- package/dist/{block.tk.bigwig.ui-0c96dce5.js → block.tk.bigwig.ui-a92f286b.js} +1 -1
- package/dist/{block.tk.hicstraw-39d89269.js → block.tk.hicstraw-57fbbe61.js} +1 -1
- package/dist/{block.tk.junction-b45b3a95.js → block.tk.junction-64c39cd5.js} +1 -1
- package/dist/{block.tk.junction.textmatrixui-6ec019e1.js → block.tk.junction.textmatrixui-09e5e02f.js} +1 -1
- package/dist/{block.tk.ld-5c54e58b.js → block.tk.ld-f681d099.js} +1 -1
- package/dist/{block.tk.menu-30a2c3a5.js → block.tk.menu-2563364c.js} +1 -1
- package/dist/{block.tk.pgv-7ff2dfaf.js → block.tk.pgv-9dfc00c0.js} +1 -1
- package/dist/{boxplot-7de25274.js → boxplot-a2e1ace0.js} +1 -1
- package/dist/brainImaging-21701238.js +1 -0
- package/dist/{brush-db0ed33a.js → brush-bb4566a3.js} +1 -1
- package/dist/{categorical-bc309399.js → categorical-a00f4ffc.js} +1 -1
- package/dist/{condition-f0eb2343.js → condition-2034db37.js} +1 -1
- package/dist/{controls-8d4972c8.js → controls-0467d2ec.js} +1 -1
- package/dist/{controls.btns-bad9e4cf.js → controls.btns-ad7b28a2.js} +1 -1
- package/dist/{controls.config-e0f394cb.js → controls.config-6cf816fb.js} +1 -1
- package/dist/{controls.divide-d8ac5a9b.js → controls.divide-3c0d52d7.js} +1 -1
- package/dist/{controls.overlay-3ac8773d.js → controls.overlay-3a55c2ec.js} +1 -1
- package/dist/{controls.term1-008f4be4.js → controls.term1-59f4cd60.js} +1 -1
- package/dist/cuminc-8d21132b.js +1 -0
- package/dist/{customdata.inputui-58cd9b32.js → customdata.inputui-40ba6d7f.js} +1 -1
- package/dist/{dataDownload-91da6dd6.js → dataDownload-bfa92dad.js} +1 -1
- package/dist/{databrowser.ui-c50862e4.js → databrowser.ui-4799f04d.js} +1 -1
- package/dist/{density-7c3f91eb.js → density-4c2b53f6.js} +1 -1
- package/dist/{dictionary-48a38837.js → dictionary-89e860ee.js} +1 -1
- package/dist/{drag-c354e2c6.js → drag-88d451b4.js} +1 -1
- package/dist/{e2pca-3bba91fa.js → e2pca-8a3f2566.js} +1 -1
- package/dist/{ep-144d8973.js → ep-5399c5cc.js} +1 -1
- package/dist/{fusion.parse-ae1253f4.js → fusion.parse-fc25e5bd.js} +1 -1
- package/dist/{geneExpClustering-96d09008.js → geneExpClustering-a916ebda.js} +1 -1
- package/dist/{geneExpression-d6494fd3.js → geneExpression-501e95c0.js} +1 -1
- package/dist/{geneExpression-9ca2da4f.js → geneExpression-9047481a.js} +1 -1
- package/dist/{geneExpression-be9b5da2.js → geneExpression-da4b50f0.js} +1 -1
- package/dist/{geneORA-85850143.js → geneORA-ffb2497e.js} +1 -1
- package/dist/{geneVariant-3df05e0c.js → geneVariant-7ab521d6.js} +1 -1
- package/dist/{geneVariant-3d674865.js → geneVariant-d79431a2.js} +1 -1
- package/dist/{genefusion.ui-3e2a3a73.js → genefusion.ui-3ce190c7.js} +1 -1
- package/dist/{geneset-3b761b2c.js → geneset-3522bcda.js} +1 -1
- package/dist/{genomeBrowser-2105a98f.js → genomeBrowser-9b72eb22.js} +1 -1
- package/dist/{genomeBrowser.controls-f9b9bf42.js → genomeBrowser.controls-bef8bf99.js} +1 -1
- package/dist/{groupsetting-4901d033.js → groupsetting-574ad150.js} +1 -1
- package/dist/{hierCluster-a7ff7f5a.js → hierCluster-3b14b2b3.js} +1 -1
- package/dist/{hierCluster.config-3d124abf.js → hierCluster.config-f8686a30.js} +1 -1
- package/dist/{hierCluster.interactivity-3463cc0b.js → hierCluster.interactivity-3b5f1e81.js} +1 -1
- package/dist/{hierCluster.renderers-668d0075.js → hierCluster.renderers-9f9a7cad.js} +1 -1
- package/dist/{html.legend-3e428f9e.js → html.legend-ef8066dd.js} +1 -1
- package/dist/{imagePlot-6d89200c.js → imagePlot-095b9a92.js} +1 -1
- package/dist/{lasso-393c1570.js → lasso-ef63631b.js} +1 -1
- package/dist/{launch.adhoc-9c59874e.js → launch.adhoc-1b356f97.js} +1 -1
- package/dist/{legacyDataset-26ead9cc.js → legacyDataset-056e9d4c.js} +1 -1
- package/dist/{log-4d74231e.js → log-ca1e2a74.js} +1 -1
- package/dist/{lollipop-59f65024.js → lollipop-6ad9ec3c.js} +1 -1
- package/dist/{maf-72e5b7da.js → maf-dfada1c8.js} +1 -1
- package/dist/{maftimeline-ed8aaae8.js → maftimeline-1b715a01.js} +1 -1
- package/dist/{matrix-3d09a31f.js → matrix-3fae58f8.js} +1 -1
- package/dist/matrix.cells-3620eb3a.js +1 -0
- package/dist/{matrix.cluster-acdfc6a7.js → matrix.cluster-15b8a865.js} +1 -1
- package/dist/{matrix.config-cd01ebbd.js → matrix.config-8247bea5.js} +1 -1
- package/dist/{matrix.controls-86eb8d5c.js → matrix.controls-dea65894.js} +1 -1
- package/dist/{matrix.data-e2d7ac16.js → matrix.data-121a1a8c.js} +1 -1
- package/dist/{matrix.dom-e5f91cc0.js → matrix.dom-83c5fa39.js} +1 -1
- package/dist/{matrix.groups-f1969b5c.js → matrix.groups-2e1202ef.js} +1 -1
- package/dist/{matrix.interactivity-92bc8332.js → matrix.interactivity-2b076155.js} +1 -1
- package/dist/{matrix.layout-29a8f334.js → matrix.layout-8dc54c05.js} +1 -1
- package/dist/{matrix.legend-8c28039e.js → matrix.legend-e0078739.js} +1 -1
- package/dist/matrix.renderers-0c8eddc9.js +1 -0
- package/dist/{matrix.serieses-e079f04a.js → matrix.serieses-2898da6b.js} +1 -1
- package/dist/{matrix.sort-e1f83454.js → matrix.sort-249d4a35.js} +1 -1
- package/dist/{matrix.sorterUi-2025f39d.js → matrix.sorterUi-d26208c8.js} +1 -1
- package/dist/{mavb-37fffd68.js → mavb-9a6fa2e9.js} +1 -1
- package/dist/{mds.fimo-68f0eaf5.js → mds.fimo-ce97371c.js} +1 -1
- package/dist/{mds.samplescatterplot-362f3591.js → mds.samplescatterplot-a54b9e93.js} +1 -1
- package/dist/{mds.survivalplot-f5bda05a.js → mds.survivalplot-c5093f73.js} +1 -1
- package/dist/{mdsjsonform-7f0b6cc7.js → mdsjsonform-09b4e1cb.js} +1 -1
- package/dist/metaboliteIntensity-eeb5ad12.js +1 -0
- package/dist/niceNumLabels-ddb76164.js +1 -0
- package/dist/{nodrag-777a34a5.js → nodrag-bed2488c.js} +1 -1
- package/dist/{numeric-2eb8c25b.js → numeric-d5536b1c.js} +1 -1
- package/dist/numeric.binary-d67da945.js +1 -0
- package/dist/numeric.continuous-9a0c88bc.js +1 -0
- package/dist/numeric.discrete-921f7097.js +1 -0
- package/dist/numeric.spline-649308d5.js +1 -0
- package/dist/{numeric.toggle-5316211b.js → numeric.toggle-52789fd2.js} +1 -1
- package/dist/{oncomatrix-cd9fa01b.js → oncomatrix-6950c48c.js} +1 -1
- package/dist/{parseData-1bfa9946.js → parseData-480d1ff3.js} +1 -1
- package/dist/{plot.2dvaf-1ed153c1.js → plot.2dvaf-1ecc4bbc.js} +1 -1
- package/dist/plot.app-c841507a.js +1 -0
- package/dist/{plot.barplot-61742e94.js → plot.barplot-24140b0f.js} +1 -1
- package/dist/{plot.boxplot-fe966ac3.js → plot.boxplot-87fe8ab2.js} +1 -1
- package/dist/{plot.brainImaging-d2c23bb7.js → plot.brainImaging-325ebded.js} +1 -1
- package/dist/{plot.disco-70d493f4.js → plot.disco-621d1b8e.js} +1 -1
- package/dist/{plot.dzi-14e6fdc4.js → plot.dzi-3a7e478e.js} +1 -1
- package/dist/{plot.ssgq-9d364d41.js → plot.ssgq-1949c207.js} +1 -1
- package/dist/{plot.vaf2cov-4d28015b.js → plot.vaf2cov-d03c6409.js} +1 -1
- package/dist/{profileBarchart-c104f8e2.js → profileBarchart-11755d7c.js} +1 -1
- package/dist/{profileHome-a555583d.js → profileHome-9c5e266b.js} +1 -1
- package/dist/{profilePlot-5ce5b6a0.js → profilePlot-8ee3034a.js} +1 -1
- package/dist/{profilePolar-610213d4.js → profilePolar-9fe70c32.js} +1 -1
- package/dist/{profileRadar-fddb18f7.js → profileRadar-0e744181.js} +1 -1
- package/dist/{profileRadarFacility-2c2db1dd.js → profileRadarFacility-102544c5.js} +1 -1
- package/dist/{recover-a08c8d01.js → recover-b1ec4fed.js} +1 -1
- package/dist/{regression.inputs-5718cf72.js → regression.inputs-ad548745.js} +1 -1
- package/dist/{regression.inputs.values.table-d587c1cf.js → regression.inputs.values.table-1618447a.js} +1 -1
- package/dist/{regression.results-748024be.js → regression.results-25008028.js} +1 -1
- package/dist/{renderPvalueTable-c435aefd.js → renderPvalueTable-46056189.js} +1 -1
- package/dist/sampleScatter-47dd82cb.js +1 -0
- package/dist/{sampleScatter.interactivity-e9c30652.js → sampleScatter.interactivity-cfa3451d.js} +1 -1
- package/dist/{sampleScatter.rendererThree-3e6c032e.js → sampleScatter.rendererThree-c5321d24.js} +2 -2
- package/dist/{sampleView-d6a91293.js → sampleView-30b97c7d.js} +1 -1
- package/dist/{samplelst-821ec148.js → samplelst-2bdc1b9d.js} +1 -1
- package/dist/{samplematrix-7aa0a780.js → samplematrix-4f0ec523.js} +1 -1
- package/dist/{scatter-2e2c76f4.js → scatter-8a337eeb.js} +1 -1
- package/dist/{selectGenomeWithTklst-51cd21a4.js → selectGenomeWithTklst-895106fb.js} +1 -1
- package/dist/{singleCellPlot-c7347a27.js → singleCellPlot-360eaec6.js} +1 -1
- package/dist/{singlecell-a668bb17.js → singlecell-29c1cbb1.js} +1 -1
- package/dist/{singlecell-7c851ef8.js → singlecell-75f8af89.js} +1 -1
- package/dist/{snplocus-fe6f4ba1.js → snplocus-0cafa73c.js} +1 -1
- package/dist/{snplst-751cea95.js → snplst-2284d5ce.js} +1 -1
- package/dist/{spliceevent.a53ss.diagram-b157f95d.js → spliceevent.a53ss.diagram-44ccabf9.js} +1 -1
- package/dist/{spliceevent.exonskip.diagram-071a3467.js → spliceevent.exonskip.diagram-c8d1bdf0.js} +1 -1
- package/dist/spliceevent.exonskip.getdefault-9fe16119.js +1 -0
- package/dist/{spliceevent.noeventdiagram-1c731f35.js → spliceevent.noeventdiagram-5e244090.js} +1 -1
- package/dist/{spliceevent.phrase-7a3bfb00.js → spliceevent.phrase-186eb050.js} +1 -1
- package/dist/{stattable-a7713026.js → stattable-886f7dad.js} +1 -1
- package/dist/{style.gdc-40ec2784.js → style.gdc-4ac9b96b.js} +1 -1
- package/dist/{summary-592d8f81.js → summary-ee2045a5.js} +1 -1
- package/dist/{sunburst-452df940.js → sunburst-bbff8818.js} +1 -1
- package/dist/survival-04e279f8.js +1 -0
- package/dist/{survival-450b6df4.js → survival-d7bd3c6b.js} +1 -1
- package/dist/{svg.download-56529955.js → svg.download-54c99186.js} +1 -1
- package/dist/{svg.legend-c82b153f.js → svg.legend-28652faa.js} +1 -1
- package/dist/{svgraph-3c5cd8d2.js → svgraph-a12d89da.js} +1 -1
- package/dist/{svmr-3dd531ef.js → svmr-248055c8.js} +1 -1
- package/dist/{table-d6c411fd.js → table-1dae543a.js} +1 -1
- package/dist/{table-bf604c50.js → table-b4a61573.js} +1 -1
- package/dist/{termInfo-96285f4a.js → termInfo-4c759483.js} +1 -1
- package/dist/{termsetting-9a7511e6.js → termsetting-636d2271.js} +1 -1
- package/dist/{tk-6a8e5bb0.js → tk-741d4674.js} +1 -1
- package/dist/{tp.ui-221efed6.js → tp.ui-23151bb1.js} +1 -1
- package/dist/{tvs.density-9fdae0cc.js → tvs.density-9fe0c7fd.js} +1 -1
- package/dist/{tvs.geneVariant-149e25b7.js → tvs.geneVariant-1b179327.js} +1 -1
- package/dist/tvs.numeric-b4cfc975.js +1 -0
- package/dist/{tvs.samplelst-a38e9c2b.js → tvs.samplelst-681358bc.js} +1 -1
- package/dist/{uiUtils-a6de7f14.js → uiUtils-74700a01.js} +1 -1
- package/dist/{variantBrowser-05375469.js → variantBrowser-910b4bcd.js} +1 -1
- package/dist/{vcf-58904308.js → vcf-16ba1e06.js} +1 -1
- package/dist/{violin-c1b78717.js → violin-a41b2e2b.js} +1 -1
- package/dist/{violin.interactivity-534d6993.js → violin.interactivity-bcf0ccc2.js} +1 -1
- package/dist/{violin.renderer-16540fb8.js → violin.renderer-149310eb.js} +1 -1
- package/dist/{violinRenderer-688abcb2.js → violinRenderer-71c9f3ab.js} +1 -1
- package/dist/{viridis-d3cf2713.js → viridis-81de7bcd.js} +1 -1
- package/dist/{y-2d48b9e4.js → y-76c7da8c.js} +1 -1
- package/dist/{zoom-2d4ede33.js → zoom-a40839cf.js} +1 -1
- package/package.json +7 -7
- package/dist/app-de19f41c.js +0 -1
- package/dist/block.lazyload-ebd949e4.js +0 -1
- package/dist/brainImaging-007edaa3.js +0 -1
- package/dist/cuminc-72257faf.js +0 -1
- package/dist/matrix.cells-a5157233.js +0 -1
- package/dist/matrix.renderers-3b8dfd04.js +0 -1
- package/dist/metaboliteIntensity-512257f3.js +0 -1
- package/dist/niceNumLabels-8fdc6507.js +0 -1
- package/dist/numeric.binary-0a3b17d2.js +0 -1
- package/dist/numeric.continuous-f77038de.js +0 -1
- package/dist/numeric.discrete-b977e88f.js +0 -1
- package/dist/numeric.spline-d64b1abe.js +0 -1
- package/dist/plot.app-91a1d78d.js +0 -1
- package/dist/sampleScatter-031f47de.js +0 -1
- package/dist/spliceevent.exonskip.getdefault-93feb627.js +0 -1
- package/dist/survival-6a4c4f12.js +0 -1
- package/dist/tvs.numeric-f9ce58bc.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e,f as t}from"./termsetting-9a7511e6.js";import{O as n,E as s,a1 as i,q as o,S as l,aV as a,f as r,M as d,aJ as p,L as c,af as m}from"./app-f91922b4.js";import{r as g}from"./table-d6c411fd.js";import{p as u}from"./pointer-c7475677.js";import"path";import"./FilterRxComp-0e75dd8d.js";let f=0;const y={externalLink:""};function b(e){let t;e.delayedMouseoutHandler=()=>{if(t)clearTimeout(t);t=setTimeout(e.mouseout,500)};e.showCellInfo=function(t){if(e.activeLabel||e.zoomArea)return;if(t.target.__data__?.isLegendItem){return}if(!(t.target.tagName=="rect"||t.target.tagName=="image")){const n=t.target.__data__;const s=n?.grp;if(s?.legendData){if(t.target.closest(".sjpp-matrix-series-group-label-g"))e.displaySampleGroupInfo(t,s)}return}if(t.target.tagName!=="rect"&&!e.imgBox)e.imgBox=t.target.getBoundingClientRect();const i=t.target.tagName=="rect"?t.target.__data__:e.getImgCell(t);if(!i||!i.term||!i.sample){e.dom.tip.hide();e.mouseout();return}const o=e.dimensions.xOffset+e.dimensions.seriesXoffset;const l=e.dimensions.yOffset;const a=e.settings.matrix;const r=a.controlLabels;const d=[];e.dom.rowBeam.attr("x",o).attr("y",l+i.seriesY).attr("height",i.tw.settings?.barh?i.tw.settings.barh+2*i.tw.settings.gap:a.rowh).style("display","");e.dom.colBeam.attr("x",o+i.x).attr("y",l).style("display","");if(i.term.type!="geneVariant"){d.push(`<tr><td>${r.Sample}:</td><td>${i.row._ref_.label}</td></tr>`);d.push(`<tr>\n\t\t\t\t\t<td>${i.term.name}:</td>\n\t\t\t\t\t<td>\n\t\t\t\t\t\t<span style="display:inline-block; width:12px; height:12px; background-color:${i.fill=="#fff"||i.fill=="transparent"?"":i.fill}" ></span>\n\t\t\t\t\t\t${i.convertedValueLabel||i.label}\n\t\t\t\t\t</td>\n\t\t\t\t</tr>`)}else if(i.term.type=="geneVariant"){d.push(`<tr><td>${r.Sample}:</td><td>${i.row._ref_.label||i.value?.sample}</td></tr>`);d.push(`<tr><td>Gene:</td><td>${i.term.name}</td></tr>`);const t={};if(i.siblingCells)for(const o of i.siblingCells){if(o.$id!=i.$id)continue;const l=o.value;const a=l.pairlst;const r=l.origin?`${l.origin} ${n[l.dt]}`:n[l.dt];const d=o.label==e.config.settings.hierCluster?.termGroupName||l.value?l.value:a?(a[0].a.name||a[0].a.chr)+"::"+(a[0].b.name||a[0].b.chr):l.mname?`${l.mname} ${s[l.class].label}`:s[l.class].label;const p=o.fill==l.color||l.class=="Blank"?"":o.fill;if(!t[r]){t[r]=[{label:d,color:p}]}else{t[r].push({label:d,color:p})}}for(const[e,n]of Object.entries(t).sort(((e,t)=>t.length-e.length))){d.push(`<tr>\n\t\t\t\t\t\t \t\t<td>${e}:</td>\n\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\t<span style="display:inline-block; width:12px; height:12px; background-color:${n[0].color}" ></span>\n\t\t\t\t\t\t\t\t\t${n[0].label}\n\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t </tr>`);for(const e of n.slice(1)){d.push(`<tr>\n\t\t\t\t\t\t\t\t\t<td></td>\n\t\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\t\t<span style="display:inline-block; width:12px; height:12px; background-color:${e.color}" ></span>\n\t\t\t\t\t\t\t\t\t\t${e.label}\n\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t</tr>`)}}}e.dom.matrixCellHoverOver.clear();e.dom.matrixCellHoverOver.d.append("div").html(`<table class='sja_simpletable'>${d.join("\n")}</table>`);e.dom.matrixCellHoverOver.show2(t.clientX,t.clientY);e.dom.mainG.on("mouseout",e.mouseout)};e.getImgCell=function(t){if(!e.imgBox){if(t.target.tagName=="image")e.imgBox=t.target.getBoundingClientRect();else return}const n=t.clientY-e.imgBox.y-t.target.clientTop;const s=t.target.__data__.find((e=>e.hoverY0<=n&&n<=e.hoverY1));if(!s)return;const{xMin:i,dx:o}=e.dimensions;const l=t.clientX-e.imgBox.x-t.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};e.mouseout=function(){if(!e.activeLabel)e.dom.tip.hide();delete e.imgBox;e.dom.colBeam.style("display","none");e.dom.rowBeam.style("display","none");e.dom.matrixCellHoverOver.clear()};e.mouseclick=async function(t,a){const r=e.state.termdbConfig.queries;if(!r)return;if(!r.singleSampleGenomeQuantification&&!r.singleSampleMutation)return;e.dom.mainG.on("mouseout",null);delete e.imgBox;const d=a||t.target.__data__;if(!d)return;e.config.settings.matrix;const p={sample_id:d.row._ref_.label};const c=d.term?.type=="geneVariant"?d.term.name:null;e.dom.clickMenu.clear();e.dom.dendroClickMenu.clear();e.dom.brushMenu.clear();e.dom.matrixCellHoverOver.clear();if(e.dom.sampleListMenu)e.dom.sampleListMenu.destroy();if(r.singleSampleGenomeQuantification){for(const t in r.singleSampleGenomeQuantification){const n=e.dom.clickMenu.d.append("div").attr("class","sja_menuoption sja_sharp_border").text(t).on("click",(async s=>{const l=i(e.opts.plotDiv||o(e.opts.holder.node().parentNode));l.header.text(p.sample_id);await(await import("./plot.ssgq-9d364d41.js")).plotSingleSampleGenomeQuantification(e.state.termdbConfig,e.state.vocab.dslabel,t,p,l.body.append("div").style("margin","20px"),e.app.opts.genome,c);n.remove();e.dom.clickMenu.d.selectAll("*").remove()}))}}if(r?.singleSampleMutation){const t=e.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=i(e.opts.plotDiv||o(e.opts.holder.node().parentNode));s.header.text(p.sample_id);(await import("./plot.disco-70d493f4.js")).default(e.state.termdbConfig,e.state.vocab.dslabel,p,s.body,e.app.opts.genome,{Disco:{prioritizeGeneLabelsByGeneSets:true}});t.remove();e.dom.clickMenu.d.selectAll("*").remove()}))}const m=JSON.parse(sessionStorage.getItem("optionalFeatures")||`{}`)?.showDZImages;if(r.DZImages&&m){const t=e.dom.clickMenu.d.append("div").attr("class","sja_menuoption sja_sharp_border").attr("data-testid","oncoMatrix_termLabel_dzi_button").style("display","none").text(`${r.DZImages.type} Images (0)`);const n=await l("sampledzimages",{body:{genome:e.app.opts.genome.name,dslabel:e.state.vocab.dslabel,sample_id:p.sample_id}});if(n.sampleDZImages?.length>0){t.style("display","block");t.text(`${r.DZImages.type} Images (${n.sampleDZImages.length})`);t.on("click",(async s=>{const l=i(e.opts.plotDiv||o(e.opts.holder.node().parentNode));l.header.text(p.sample_id);(await import("./plot.dzi-14e6fdc4.js")).default(e.state.vocab.dslabel,l.body,e.app.opts.genome,p.sample_id,n.sampleDZImages);t.remove();e.dom.clickMenu.d.selectAll("*").remove()}))}}const g=JSON.parse(sessionStorage.getItem("optionalFeatures")||`{}`)?.showBrainImaging;if(r.NIdata&&g){for(const t in r.NIdata){const n=e.dom.clickMenu.d.append("div").attr("class","sja_menuoption sja_sharp_border").text("Neuro Image: "+t).on("click",(async()=>{const s=i(e.opts.plotDiv||o(e.opts.holder.node().parentNode));s.header.text(p.sample_id);(await import("./plot.brainImaging-d2c23bb7.js")).default(e.state.termdbConfig,e.state.vocab.dslabel,t,p,s.body,e.app.opts.genome);n.remove();e.dom.clickMenu.d.selectAll("*").remove()}))}}const u=e.settings.matrix.controlLabels;const f=[];const b=e.state.termdbConfig.urlTemplates;if(b?.sample){const e=d[b.sample.namekey]||d.sample||d.row.sample;f.push(`<tr><td>${u.Sample}:</td> <td><a href="${b.sample.base}${e}" target="_blank">${d.row._ref_.label} ${y.externalLink}</a></td></tr>`)}else f.push(`<tr><td>${u.Sample}:</td><td>${d.row._ref_.label||d.value.sample}</td></tr>`);if(d.term&&d.term.type!="geneVariant"){f.push(`<tr><td>${d.term.name}:</td>\n\t\t\t\t\t<td> \n\t\t\t\t\t\t<span style="display:inline-block; width:12px; height:12px; background-color:${d.fill=="#fff"||d.fill=="transparent"?"":d.fill}" ></span>\n\t\t\t\t\t\t${d.convertedValueLabel||d.label}\n\t\t\t\t\t</td>\n\t\t\t\t</tr>`)}else if(d.term&&d.term.type=="geneVariant"&&d.value){if(b?.gene){const t=e.data.refs.byTermId[d.tw.$id][b.gene.namekey];f.push(`<tr><td>Gene:</td><td><a href="${b.gene.base}${t}" target="_blank">${d.tw.term.name} ${y.externalLink}</a></td></tr>`)}else f.push(`<tr><td>Gene:</td><td>${d.term.name}</td></tr>`);const t={};for(const i of d.siblingCells){if(i.$id!=d.$id)continue;const o=i.value;const l=o.pairlst;const a=o.origin?`${o.origin} ${n[o.dt]}`:n[o.dt];const r=i.label==e.config.settings.hierCluster?.termGroupName?o.value:l?(l[0].a.name||l[0].a.chr)+"::"+(l[0].b.name||l[0].b.chr):o.mname?`${o.mname} ${s[o.class].label}`:s[o.class].label;const p=i.fill==o.color||o.class=="Blank"?"":i.fill;if(!t[a]){t[a]=[{label:r,color:p}]}else{t[a].push({label:r,color:p})}}for(const[e,n]of Object.entries(t).sort(((e,t)=>t.length-e.length))){f.push(`<tr>\n\t\t\t\t\t\t\t\t<td>${e}:</td>\n\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\t<span style="display:inline-block; width:12px; height:12px; background-color:${n[0].color}" ></span>\n\t\t\t\t\t\t\t\t\t${n[0].label}\n\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t </tr>`);for(const e of n.slice(1)){f.push(`<tr>\n\t\t\t\t\t\t\t\t\t<td></td>\n\t\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\t\t<span style="display:inline-block; width:12px; height:12px; background-color:${e.color}" ></span>\n\t\t\t\t\t\t\t\t\t\t${e.label}\n\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t </tr>`)}}}const h=e.dom.clickMenu.d.append("div").style("padding","5px 9px");h.append("span").html(`<table class='sja_simpletable'>${f.join("\n")}</table>`);e.dom.clickMenu.show(t.clientX,t.clientY,false,true)};e.legendClick=function(){};e.svgMousemove=function(t){if(!e.dragged)return;const n=e.config.settings.matrix;const s=e.dragged;const i=!n.transpose?s.x:s.x-s.clientX+t.clientX;const o=!n.transpose?s.y-s.clientY+t.clientY:s.y;s.clone.attr("transform",`translate(${i},${o})`)};e.svgMouseup=function(t){if(!e.dragged)return;e.dragged.clone.remove();delete e.dragged;delete e.clicked};e.getVisibleCenterCell=function(t){e.settings.matrix;const n=e.dimensions;const s=Math.round((.5*n.mainw-n.seriesXoffset-t)/n.dx);return e.sampleOrder[s]};v(e);_(e);x(e);$(e);h(e);C(e);k(e)}function h(e){let t;o(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 v(n){w(n,"term");n.setPill=function(t){n.pill=e({tip:n.customTipApi,menuOptions:"all",menuLayout:"horizontal",vocabApi:n.app.vocabApi,vocab:t.vocab,activeCohort:t.activeCohort,numericEditMenuVersion:["discrete","continuous"],getBodyParams:()=>{const e=[];for(const t of n.config.termgroups){for(const n of t.lst){if(n.term.type=="geneVariant"){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)}else if(n.term.name){e.push(n.term.name)}}}}if(e.length)return{currentGeneNames:e};return{}},renderAs:"none",callback:e=>{if(e&&!e.q)throw"data.q{} missing from pill callback";const t=n.activeLabel||n.lastactiveLabel;if(e){e.label=t.tw.label;if(t&&t.tw)e.$id=t.tw.$id;const s=n.mayRemoveTvsEntry(e);n.pill.main(e);n.app.dispatch({type:"plot_nestedEdits",id:n.opts.id,edits:[{nestedKeys:["termgroups",t.grpIndex,"lst",t.lstIndex],value:e},{nestedKeys:["legendValueFilter"],value:s}]})}else{n.removeTerm()}n.dom.tip.hide()}})};n.getMenuOptions=function(e){return n.config.chartType=="hierCluster"&&e.grp.type==="hierCluster"?"{remove,}":e.tw.term.type=="geneVariant"?"{replace,remove}":"*"};n.showTermMenu=async function(e){const t=e.target.__data__;if(!t||!t.tw||!t.grp)return;const s=n.settings.matrix;const i=s.controlLabels;n.activeLabel=t;n.dom.menutop.style("display","").selectAll("*").remove();n.dom.menubody.style("padding",0).selectAll("*").remove();const o=n.dom.menutop.append("div").style("display","block").text("Loading...");n.dom.tip.show(e.clientX-20,e.clientY-20);await n.pill.main(Object.assign({menuOptions:n.getMenuOptions(t)},t.tw?t.tw:{term:null,q:null}));o.remove();n.dom.shortcutDiv=n.dom.menutop.append("div");n.showShortcuts(t,n.dom.shortcutDiv);n.dom.twMenuDiv=n.dom.menutop.append("div");const l=n.dom.twMenuDiv.append("div").style("text-align","center");l.append("span").text(`${i.Term} `);const a=t.tw.label||t.tw.term.name;const r=t.tw.term.type=="geneVariant"?"gene":"variable";n.dom.twLabelInput=l.append("input").attr("type","text").attr("size",a.length+3).attr("title",`Type to edit the ${r} label`).style("padding","1px 5px").style("text-align","center").property("value",a).on("input",(()=>{const e=n.dom.twLabelInput.property("value");n.dom.twLabelInput.attr("size",e.length+3);n.dom.twLabelEditBtn.style("display",e.trim()===a?"none":"inline")}));n.dom.twLabelEditBtn=l.append("button").style("display","none").style("margin-left","5px").html("submit").on("click",(()=>{if(a!=n.dom.twLabelInput.property("value").trim())n.updateTermLabel();n.dom.tip.hide()}));if(r=="gene"){n.dom.gbButton=l.append("button").style("text-align","center").html("Lollipop").attr("data-testid","oncoMatrix_cell_lollipop_button").on("click",(async()=>{await n.launchGB(t);n.dom.tip.hide()}))}if(n.state.termdbConfig.urlTemplates?.gene&&r=="gene"){const e=n.state.termdbConfig.urlTemplates;n.dom.geneSummaryLink=l.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||""}${y.externalLink}`).on("click",(async()=>{const s=n.data.refs.byTermId[t.tw.$id][e.gene.namekey];window.open(`${e.gene.base}${s}`,"_blank");n.dom.tip.hide()}))}if(n.config.settings.matrix.maxSample){n.dom.twMenuDiv.append("div").style("text-align","center").style("margin","5px").text(`#${i.samples}: ${t.counts.samples} rendered, ${t.allCounts.samples-t.counts.samples} not rendered`)}n.dom.twMenuBar=n.dom.twMenuDiv.append("div").style("text-align","center");const d=e.target;n.pill.showMenu(e,d,n.dom.twMenuBar);n.dom.grpMenuDiv=n.dom.menutop.append("div").style("margin-top","10px")};n.launchGB=async e=>{const t=i(n.opts.plotDiv||o(n.opts.holder.node().parentNode));t.header.text(e.tw.term.name);const s={holder:t.body.append("div").style("margin","20px"),genome:n.app.opts.genome,nobox:true,query:e.tw.term.name,tklst:[{type:"mds3",dslabel:n.app.opts.state.vocab.dslabel,filter0:n.state.filter0,filterObj:n.state.filter}]};const l=await import("./app-f91922b4.js").then((function(e){return e.c3}));await l.default(s)};n.updateTermLabel=()=>{const e=n.dom.twLabelInput.property("value").trim();const t=n.activeLabel;if(t.tw.label===e)return;t.tw.label=e;t.grp.lst[t.lstIndex]=t.tw;n.app.dispatch({type:"plot_nestedEdits",id:n.opts.id,edits:[{nestedKeys:["termgroups",t.grpIndex],value:t.grp}]})};n.showShortcuts=(e,t)=>{const s=n.settings.matrix.controlLabels;t.style("text-align","center");const i=e.tw.term.type=="geneVariant"?"gene":"variable";const l=n.type!="hierCluster"&&e.tw.sortSamples?.priority!==undefined;t.append("span").selectAll("div").data([{icon:"corner",title:`Sort ${s.samples} against this ${i}, and position this ${i} at the top left corner`,disabled:e.grp.lst.length<1||e.index===0&&e.tw.sortSamples?.priority===0||n.type=="hierCluster",handler:n.sortSamplesAgainstCornerTerm},{icon:"left",title:`Sort ${s.samples} against this ${i}`,disabled:e.tw.sortSamples?.priority===0&&!n.config.settings.hierCluster?.clusterSamples,fill:l?"rgba(200,100,100,0.5)":"",handler:l?n.unsortSamplesAgainstTerm:n.sortSamplesAgainstTerm},{html:" | "},{icon:"up",title:`Move this ${i} up`,disabled:e.index===0||n.type=="hierCluster",handler:n.moveTermUp},{icon:"down",title:`Move this ${i} down`,disabled:e.index===e.grp.lst.length-1||n.type=="hierCluster",handler:n.moveTermDown}],(e=>e.icon)).enter().append("div").style("display","inline-block").each((function(e){const t=o(this);if(e.icon)a[e.icon](t,e);else t.html(e.html)}))};n.sortSamplesAgainstCornerTerm=e=>{e.stopPropagation();const t=n.activeLabel;const s=JSON.parse(JSON.stringify(n.termGroups));const i=s[t.grpIndex];const[o,l]=n.getSorterTerms(t);i.lst.splice(t.lstIndex,1);i.lst.unshift(o);i.sortTermsBy="asListed";for(const e of s){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}}}n.app.dispatch({type:"plot_edit",id:n.opts.id,config:{termgroups:s,settings:{matrix:{sortTermsBy:"asListed"}}}});n.dom.tip.hide()};n.sortSamplesAgainstTerm=e=>{e?.stopPropagation();const t=n.activeLabel;const[s]=n.getSorterTerms(t);if(t.grp.type=="hierCluster")s.sortSamples.by="values";const i=n.termGroups;i[t.grpIndex].lst[t.lstIndex]=s;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(n.chartType=="hierCluster"){n.config.settings.hierCluster.clusterSamples=false;n.config.settings.hierCluster.yDendrogramHeight=0}n.config.termgroups=i;n.app.dispatch({type:"plot_edit",id:n.opts.id,config:n.config});n.dom.tip.hide()};n.unsortSamplesAgainstTerm=(e,t)=>{e.stopPropagation();const s=n.activeLabel||t.data.t;const[i]=n.getSorterTerms(s);const o=n.termGroups;o[s.grpIndex].lst[s.lstIndex]=i;for(const e of o){for(const t of e.lst){if(!t.sortSamples)continue;if(t.$id===s.tw.$id){delete t.sortSamples}else if("sortSamples"in t&&"priority"in t.sortSamples){if(t.sortSamples.priority>s.sortSamples?.priority)t.sortSamples.priority-=1}}}n.app.dispatch({type:"plot_edit",id:n.opts.id,config:{termgroups:o}});n.dom.tip.hide()};n.moveTermUp=e=>{e.stopPropagation();const t=n.activeLabel;const s=n.termGroups[t.grpIndex];s.lst.splice(t.lstIndex,1);s.lst.splice(t.lstIndex-1,0,t.tw);s.sortTermsBy="asListed";n.app.dispatch({type:"plot_nestedEdits",id:n.opts.id,edits:[{nestedKeys:["termgroups",t.grpIndex],value:s},{nestedKeys:["settings","matrix","sortTermsBy"],value:"asListed"}]});n.dom.tip.hide()};n.moveTermDown=e=>{e.stopPropagation();const t=n.activeLabel;const s=n.termGroups[t.grpIndex];s.lst.splice(t.lstIndex,1);s.lst.splice(t.lstIndex+1,0,t.tw);s.sortTermsBy="asListed";n.app.dispatch({type:"plot_nestedEdits",id:n.opts.id,edits:[{nestedKeys:["termgroups",t.grpIndex],value:s},{nestedKeys:["settings","matrix","sortTermsBy"],value:"asListed"}]});n.dom.tip.hide()};n.showTermEditMenu=async()=>{n.dom.menubody.selectAll("*").remove();const e=n.activeLabel;const t=n.config.settings.matrix;const s=t.controlLabels;if(e.tw.term.type=="geneVariant"){const t=n.dom.menubody.append("div");const i=t.append("label");i.append("span").html(`Minimum # ${s.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)}n.app.dispatch({type:"plot_nestedEdits",id:n.opts.id,edits:[{nestedKeys:["termgroups",e.grpIndex,"lst",e.lstIndex],value:e.tw}]});n.dom.tip.hide()}))}else{await n.pill.main(Object.assign({menuOptions:n.getMenuOptions(e)},n.activeLabel.tw));n.pill.showMenu()}};n.showMoveMenu=async()=>{n.dom.menubody.selectAll("*").remove();n.termBeingMoved=n.activeLabel;const e=n.dom.menubody.append("div");e.append("span").html("Click on another label");n.makeInsertPosRadios(e)};n.showTermInsertMenu=()=>{n.dom.menubody.selectAll("*").remove();n.dom.editbtns=n.dom.menubody.append("div");n.dom.editbody=n.dom.menubody.append("div");const e=n.dom.editbtns.append("div").style("margin","10px 5px");e.append("label").html(`Insert genes or variables in `);n.dom.grpNameSelect=e.append("select").on("change",(()=>{const e=n.dom.grpNameSelect.property("value");n.dom.grpNameTextInput.property("disabled",e=="current").property("value",e=="current"?n.activeLabel.grp.name:t)}));n.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="";n.dom.grpNameTextInput=e.append("input").attr("type","text").property("disabled",true).property("value",n.activeLabel.grp.name).on("change",(()=>{const e=n.dom.grpNameTextInput.property("value");if(e==n.activeLabel.grp.name);else{t=n.dom.grpNameTextInput.property("value")}}));n.makeInsertPosRadios(n.dom.editbtns);n.showDictTermSelection()};n.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 s=t.append("div").style("display","inline-block");n.insertRadioId=`sjpp-matrix-${n.id}-insert-pos`;const i=s.append("label");i.append("input").attr("type","radio").attr("value","above").property("checked",true).attr("name",n.insertRadioId);i.append("span").html("above");s.append("span").html("  ");const o=s.append("label");o.append("input").attr("type","radio").attr("value","below").attr("name",n.insertRadioId);o.append("span").html(" below")};n.showDictTermSelection=async()=>{const e=await import("./app-bfce9bf5.js");n.dom.editbody.selectAll("*").remove();e.appInit({holder:n.dom.editbody.append("div"),vocabApi:n.app.vocabApi,state:{vocab:n.state.vocab,activeCohort:n.activeCohort,nav:{header_mode:"search_only"},tree:{usecase:{target:"matrix",detail:"termgroups"}}},tree:{submit_lst:s},search:{handleGeneVariant:e=>s([e])}})};async function s(e){const s=await Promise.all(e.map((async e=>{const s=structuredClone(e);const i="id"in s?{id:s.id,term:s}:{term:s};await t(i,n.app.vocabApi);return i})));const i=o(`input[name='${n.insertRadioId}']:checked`).property("value");const l=n.activeLabel;const a=n.termGroups;if(n.dom.grpNameSelect.property("value")=="current"){const e=a[l.grpIndex];const t=i=="above"?l.lstIndex:l.lstIndex+1;e.lst.splice(t,0,...s);n.app.dispatch({type:"plot_nestedEdits",id:n.opts.id,edits:[{nestedKeys:["termgroups",l.grpIndex,"lst"],value:e.lst}]})}else{const e=i=="above"?l.grpIndex:l.grpIndex+1;a.splice(e,0,{name:n.dom.grpNameTextInput.property("value"),lst:s});n.app.dispatch({type:"plot_edit",id:n.opts.id,config:{termgroups:a}})}n.dom.tip.hide()}n.showSortMenu=()=>{const e=n.activeLabel;n.dom.menubody.selectAll("*").remove();n.dom.menubody.append("div").style("margin-top","10px").style("text-align","center").html(e.tw.term.name);n.moveInput=undefined;n.showSortOptions(e)};n.showTermMoveOptions=e=>{const t=n.dom.menubody.append("div").style("margin-top","10px");const s=t.append("label");n.moveInput=s.append("input").attr("type","checkbox").style("text-align","center");s.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))};n.showSortOptions=e=>{const t=n.dom.menubody.append("div").style("margin-top","10px");const s=t.append("label");const i=s.append("input").attr("type","checkbox").property("checked",true).style("text-align","center");const o=n.settings.matrix.controlLabels;s.append("span").html(` sort ${o.samples} against (in order of priority):`);const l=n.showSorterTerms(t,e);n.dom.menubody.append("button").html("Apply").on("click",(()=>{JSON.parse(JSON.stringify(n.config.settings.matrix))||{};delete l.div;delete l.up;delete l.down;delete l.delete;if(i.property("checked")||n.moveInput.property("checked")){n.app.dispatch({type:"plot_nestedEdits",id:n.opts.id,edits:[{nestedKeys:["termgroups",e.grpIndex,"lst",e.lstIndex],value:l}]})}n.dom.tip.hide()}))};n.showSorterTerms=(e,t)=>{const[s,i]=n.getSorterTerms(t);const l=n.settings.matrix;const a=l.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=o(this);const n=e.$id=="sample"?`${a.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);r()}));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);r()}));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);r()}))}));function r(){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 s};n.getSorterTerms=e=>{const t=[...n.termOrder.filter((e=>e.tw.sortSamples)).map((e=>JSON.parse(JSON.stringify(e.tw)))).sort(((e,t)=>e.sortSamples.priority-t.sortSamples.priority)),...n.config.settings.matrix.sortSamplesTieBreakers.map((e=>JSON.parse(JSON.stringify(e))))];const s=n.settings.matrix;const i=s.sortOptions[s.sortSamplesBy];if(!i){throw`unsupported s.sortSamplesBy='${s.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]};n.removeTerm=()=>{const e=n.activeLabel;const t=n.mayRemoveTvsEntry(e.tw);const s=n.termGroups;const i=s[e.grpIndex];i.lst.splice(e.lstIndex,1);if(i.lst.length){n.app.dispatch({type:"plot_nestedEdits",id:n.opts.id,edits:[{nestedKeys:["termgroups",e.grpIndex,"lst"],value:i.lst},{nestedKeys:["legendValueFilter"],value:t}]})}else{s.splice(e.grpIndex,1);n.app.dispatch({type:"plot_edit",id:n.opts.id,config:{termgroups:s,legendValueFilter:t}})}n.dom.tip.hide()};n.removeTermGroup=()=>{const e=n.activeLabel;const t=n.termGroups;t.splice(e.grpIndex,1);n.app.dispatch({type:"plot_edit",id:n.opts.id,config:{termgroups:t}});n.dom.tip.hide()};n.mayRemoveTvsEntry=e=>{if(!n.config.legendValueFilter?.lst.length)return n.config.legendValueFilter;const t=structuredClone(n.config.legendValueFilter.lst);const s=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(!s.length)return n.config.legendValueFilter;else{for(const n of s){const s=n.tvs;if(s.term.type!=e.term.type)continue;if(("id"in s.term||"id"in e.term)&&s.term.id!==e.term.id)continue;else if(s.term.name!=e.term.name)continue;const i=t.findIndex((e=>e===s));t.splice(i,1)}}return{in:true,join:"and",type:"tvslst",lst:t}};n.launchBrowser=e=>{e.stopPropagation();const t=n.activeLabel.tw;const s=[];for(const e of n.data.lst){if(e[t.$id]?.values)s.push(...e[t.$id].values)}n.app.dispatch({type:"plot_create",config:{term:t,chartType:"variantBrowser",insertBefore:n.id,custom_variants:s}})}}function x(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-"+f++;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-bfce9bf5.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(n.type=="integer"||n.type=="float"){n.$id=t.$id;const s={legendGrpName:t.term.id,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.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 _(e){w(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.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=>{o(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");o("body").on("mouseup.sjppMatrixLabelText",e.disableTextHighlight)};e.disableTextHighlight=e=>{o(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");o("body").on("mouseup.sjppMatrixLabelText",null)}}function w(e,t){e[`${t}LabelMousedown`]=(t,n)=>{e.clicked={event:t,d:n}};e[`${t}LabelMouseover`]=(n,i)=>{if(t=="term"&&n.target.__data__?.tw&&n.target.__data__.grp){if(e.chartType=="hierCluster"){return}if(e.activeLabel||e.zoomArea){return}e.dom.menutop.selectAll("*").remove();e.dom.menubody.selectAll("*").remove();const t=n.target.__data__.grp.name;const i=n.target.__data__.tw.term.name;const o=e.dom.menubody.append("div").style("text-align","left").style("font-size","1.1em").html(t?`<b>${t}: ${i}</b>`:`<b>${i}</b>`);const l=e.dom.menubody.append("div").style("max-width","400px");const a=n.target.__data__;if(a.tw.term.type=="geneVariant"){const t=Object.values(a.counts.subGroupCounts).reduce(((e,t)=>e+t.samplesNotTested),0);o.append("div").style("text-align","left").style("font-size","0.9em").html(`(tested ${e.samples.length-t} of ${e.samples.length})`);for(const[t,n]of Object.entries(a.counts.subGroupCounts)){const i=e.sampleGroups.find((e=>e.name==t)).lst.length;const o=i-n.samplesNotTested?n.samplesTotal/(i-n.samplesNotTested):0;l.append("div").style("padding-top","10px").html(t?`<b>${t}</b>: Mutated samples (${n.samplesTotal} of ${i-n.samplesNotTested}, ${r(".1%")(o)})`:`<b>Mutated samples (${n.samplesTotal} of ${i-n.samplesNotTested}, ${r(".1%")(o)})`);const a=l.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",s[e].color);n.append("td").html(`${s[e].label}: ${t}`)}if(n.notTestedClasses){l.append("div").style("margin-left","15px").style("padding-top","12px").html("<b> Not counted:</b>");const e=l.append("table").style("margin-left","15px");for(const[t,i]of Object.entries(n.notTestedClasses).sort(((e,t)=>t[1]-e[1]))){const n=e.append("tr");n.append("td").append("div").style("width","12px").style("height","12px").style("background-color",s[t].color);n.append("td").html(`${s[t].label}: ${i}`)}}}}else if(!e.config.divideBy){const t=e.legendData.find((e=>e.name==a.label));if(t&&t.items){const e=l.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;l.append("div").style("padding-top","10px").html(t!==""?`<b>${t}</b>: ${n.samplesTotal} of ${s}`:`<b>${n.samplesTotal} of ${s}`);const i=l.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;l.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 o=i.legendData.find((e=>e.name==a.label));if(o&&o.items){const e=l.append("table").style("margin-left","15px");for(const t of o.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=l.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"){o(n.target).style("fill","blue")}if(!e.dragged)return;e.hovered=n.target.__data__};e[`${t}LabelMouseout`]=e=>{o(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[l,a]=o(s).attr("transform").split("translate(")[1].split(")")[0].split(",").map(Number);const r=s.cloneNode(true);e.dom[`${t}LabelG`].node().prepend(r);e.dragged={orig:s,clone:o(r).style("cursor","move").style("pointer-events","none"),node:r,x:l,y:a,clientX:n.clientX,clientY:n.clientY};e.dragged.clone.selectAll("text").style("fill","red")}if(!e.dragged)return;const l=e.dragged;const a=!i.transpose?l.x:l.x-l.clientX+n.clientX;const r=!i.transpose?l.y-l.clientY+n.clientY:l.y;l.clone.attr("transform",`translate(${a},${r})`)};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 if(e.chartType!=="hierCluster"||n.target.__data__.grp?.name!==e.config.settings.hierCluster.termGroupName){e.showTermGroupMenu(n)}}}function $(e){e.resetInteractions=function(){if(e.zoomArea){e.zoomArea.remove();delete e.zoomArea;o("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=u(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(){o("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){o("body").on("mousemove.sjppMatrixDrag",null).on("mouseup.sjppMatrixDrag",null);const n=e.settings.matrix;const s=e.dimensions;const i=e.clickedSeriesCell;const l=t.clientX-i.event.clientX;const a=Math.min(i.dxMax,Math.max(l,i.dxMin));if(Math.abs(l)<1||Math.abs(a)<1){e.translateElems(0,s,n,i);return}e.translateElems(a,s,n,i);const r=e.getVisibleCenterCell(a);e.app.dispatch({type:"plot_edit",id:e.id,config:{settings:{matrix:{zoomCenterPct:.5,zoomIndex:r.totalIndex,zoomGrpIndex:r.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)");o("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);o("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 l=e.getCellByPos(s);if(!i||!i.startCell){e.dom.mainG.on("mouseout",null);delete e.clickedSeriesCell;return}else if(!i.endCell||l===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 a=e.settings.matrix;const r=a.controlLabels;i.endCell=l;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} ${r.samples}`,callback:()=>{e.resetInteractions();e.dom.tip.hide();t(e,g,s.clientX,s.clientY)}}];if(d){u.push({label:d.buttonText||`Select ${r.Samples}`,callback:async()=>{d.callback({samples:g.map((e=>({"cases.case_id":e.sample}))),source:`Selected ${r.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 d({padding:"5px"});else e.dom.sampleListMenu.clear();const a=e.dom.sampleListMenu.d.append("div");g({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 C(e){e.legendLabelMouseover=t=>{const n=t.target.__data__;if(!n||n.dt==p){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?.groupsetting?.inuse){return}if(t.target.nodeName=="rect")o(t.target).style("stroke","blue").style("cursor","pointer");else o(t.target).style("fill","blue").style("cursor","pointer")};e.legendLabelMouseout=e=>{if(e.target.nodeName=="rect")o(e.target).style("stroke","#aaa");else o(e.target).style("fill","")};e.legendLabelMouseup=t=>{const n=t.target.__data__;if(!n||n.dt==p){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(c)){a.append("div").attr("class","sja_menuoption sja_sharp_border").text(`Show only truncating mutations`).on("click",(()=>{N(o,n,e)}));a.append("div").attr("class","sja_menuoption sja_sharp_border").text(`Show only protein-changing mutations`).on("click",(()=>{G(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)V(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",(()=>{L(o,n,e)}))}o.showunder(t.target);return}const l=e.config.legendGrpFilter.lst.find((e=>e.dt?.includes(n.dt)&&(!e.origin||e.origin==n.origin)))&&true;if(n.isLegendItem&&l){return}const a=e.terms.find((e=>e.tw.$id==n.$id));if(a?.tw?.q?.groupsetting?.inuse){return}let r;if(n.dt){r=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"){r=e.config.legendValueFilter.lst.findIndex((e=>e.legendGrpName==n.termid&&e.tvs.values.find((e=>e.key==n.key))))}else if(t.type=="integer"||t.type=="float"){r=e.config.legendValueFilter.lst.findIndex((e=>e.legendGrpName==n.termid&&e.tvs.ranges.find((e=>e.name==n.key))))}}const d=e.settings.matrix.controlLabels;const g=o.d.append("div");if(!n.dt||e.type!=="hierCluster"||r!==-1){g.append("div").attr("class","sja_menuoption sja_sharp_border").text(n.dt?r==-1?`Hide ${d.samples} with ${s[n.key].label}`:`Show ${d.samples} with ${s[n.key].label}`:r==-1?"Hide":"Show").on("click",(()=>{o.hide();if(r==-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(t.type=="integer"||t.type=="float"){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(r,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(r,1)}}if(e.state.config.settings.matrix.addMutationCNVButtons&&e.chartType!=="hierCluster"){if(n.dt==c){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==m){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&&r==-1){g.append("div").attr("class","sja_menuoption sja_sharp_border").text(`Do not show ${s[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==c){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==m){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){g.append("div").attr("class","sja_menuoption sja_sharp_border").text("Show only").on("click",(()=>{o.hide();const t=e.termOrder.find((e=>e.tw.$id==n.$id))?.tw?.term;const s=e.legendData.find((e=>e.name==n.termid))||e.legendData.find((e=>e.$id==n.$id));e.config.legendValueFilter.lst=e.config.legendValueFilter.lst.filter((e=>e.legendGrpName!==n.termid));if(t.type=="categorical"||t.type=="survival"){t.$id=n.$id;for(const i of s.items){if(i.key==n.key)continue;const s=e.config.legendValueFilter.lst.findIndex((e=>e.legendGrpName==n.termid));if(s==-1){const s={legendGrpName:n.termid,type:"tvs",tvs:{isnot:true,term:t,values:[{key:i.key}]}};e.config.legendValueFilter.lst.push(s)}else{e.config.legendValueFilter.lst[s].tvs.values.push({key:i.key})}}}else if(t.type=="integer"||t.type=="float"){t.$id=n.$id;for(const i of s.items){if(i.key==n.key)continue;const s={legendGrpName:n.termid,type:"tvs",tvs:{isnot:true,term:t,ranges:[e.data.refs.byTermId[n.$id].bins.find((e=>i.key==e.name))]}};if(!e.config.legendValueFilter.lst.length)e.config.legendValueFilter.lst=[s];else e.config.legendValueFilter.lst.push(s)}}e.app.dispatch({type:"plot_edit",id:e.id,config:e.config})}))}if(!n.dt){g.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 k(e){e.mutationSelectionActions={onlyTruncating:N,onlyPC:G,none:V,all:L,bySelection:F};e.mutationControlCallback=t=>{const n=e.dom.legendMenu.clear();const s=e.legendData.find((e=>e.dt?.includes(c)));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(m)));e.mutationSelectionActions[t](n,s,e,"CNV")};e.geneStyleControlCallback=t=>{const n=e.legendData.find((e=>e.dt?.includes(m)));if(t=="")M(n,e);else if(t=="single")S(n,e);else if(t=="oncoprint")I(n,e)}}function S(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 I(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 M(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 N(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(c)&&e.origin==t.origin)));const e=n.config.settings.matrix.truncatingMutations;const i=n.config.settings.matrix.controlLabels;for(const[o,l]of Object.entries(s)){if(e.includes(o)||l.dt!=c)continue;const s={legendGrpName:t.origin?`${t.origin[0].toUpperCase()+t.origin.slice(1)} ${i.Mutations}`:i.Mutations,type:"tvs",tvs:{isnot:true,legendFilterType:"geneVariant_soft",term:{type:"geneVariant"},values:[{dt:c,origin:t.origin,mclasslst:[o]}]}};n.config.legendValueFilter.lst.push(s)}}n.app.dispatch({type:"plot_edit",id:n.id,config:n.config})}function G(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(c)&&e.origin==t.origin)));const e=n.config.settings.matrix.proteinChangingMutations;const i=n.config.settings.matrix.controlLabels;for(const[o,l]of Object.entries(s)){if(e.includes(o)||l.dt!=c)continue;const s={legendGrpName:t.origin?`${t.origin[0].toUpperCase()+t.origin.slice(1)} ${i.Mutations}`:i.Mutations,type:"tvs",tvs:{isnot:true,legendFilterType:"geneVariant_soft",term:{type:"geneVariant"},values:[{dt:c,origin:t.origin,mclasslst:[o]}]}};n.config.legendValueFilter.lst.push(s)}}n.app.dispatch({type:"plot_edit",id:n.id,config:n.config})}function V(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(m))&&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 T(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(m))&&s.cellEncoding!==""){s.cellEncoding="oncoprint"}return e.config}function L(e,t,n,s){e.hide();n.app.dispatch({type:"plot_edit",id:n.id,config:T(n,t,s)})}function F(e,t,n,i){e.hide();const l=n.config.settings.matrix;if(!t){if(l.addMutationCNVButtons&&n.chartType!=="hierCluster"&&i=="mutation"){l.showMatrixMutation="bySelection"}else if(l.addMutationCNVButtons&&n.chartType!=="hierCluster"&&i=="CNV"){l.showMatrixCNV="bySelection"}n.app.dispatch({type:"plot_edit",id:n.id,config:n.config});return}n.app.tip.d.selectAll(".byLFClassDiv").remove();const a=n.app.tip.d.append("div").attr("class","byLFClassDiv");const r=Math.random().toString();const d=a.selectAll(":scope>div").data(i=="mutation"?l.mutationClasses:l.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==s[e].dt&&t.tvs.values[0].mclasslst.includes(e)));const a=i=="mutation"?l.hiddenMutations.includes(e):l.hiddenCNVs.includes(e);const c=o(this).attr("class","sjpp_row_wrapper");c.append("input").attr("type","checkbox").attr("name",r).property("disabled",t?true:false).property("checked",t||a?false:true).style("vertical-align","top").style("margin-right","3px").on("change",(function(){const e=d.selectAll(`input[type='checkbox'][name='${r}']:checked`).empty();p.property("disabled",e)}));c.append("span").style("margin-left","3px").html(s[e].label).style("text-decoration",t?"line-through":"")}));const p=a.append("button").property("disabled",true).style("margin-top","3px").text("Apply").on("click",(()=>{const a=d.selectAll(`input[type='checkbox'][name='${r}']:checked`);const p=a.nodes().map((e=>o(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(c)&&t.dt.includes(c)||e.dt.includes(m)&&t.dt.includes(m))));for(const e of i=="mutation"?l.mutationClasses:l.CNVClasses){if(p.includes(e))continue;const i={legendGrpName:t.name,type:"tvs",tvs:{isnot:true,legendFilterType:"geneVariant_soft",term:{type:"geneVariant"},values:[{dt:s[e].dt,origin:t.origin,mclasslst:[e]}]}};n.config.legendValueFilter.lst.push(i)}if(n.state.config.settings.matrix.addMutationCNVButtons&&n.chartType!=="hierCluster"&&(i=="CNV"||t?.dt?.includes(m))){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{T as getConfigForShowAll,b as setInteractivity,L as showAll};
|
|
1
|
+
import{t as e,f as t}from"./termsetting-636d2271.js";import{O as n,E as s,a1 as i,q as o,S as l,aV as a,f as r,M as d,aJ as p,L as c,af as m}from"./app-71453429.js";import{r as g}from"./table-1dae543a.js";import{p as u}from"./pointer-c7475677.js";import"path";import"./FilterRxComp-fc769f34.js";let f=0;const y={externalLink:""};function b(e){let t;e.delayedMouseoutHandler=()=>{if(t)clearTimeout(t);t=setTimeout(e.mouseout,500)};e.showCellInfo=function(t){if(e.activeLabel||e.zoomArea)return;if(t.target.__data__?.isLegendItem){return}if(!(t.target.tagName=="rect"||t.target.tagName=="image")){const n=t.target.__data__;const s=n?.grp;if(s?.legendData){if(t.target.closest(".sjpp-matrix-series-group-label-g"))e.displaySampleGroupInfo(t,s)}return}if(t.target.tagName!=="rect"&&!e.imgBox)e.imgBox=t.target.getBoundingClientRect();const i=t.target.tagName=="rect"?t.target.__data__:e.getImgCell(t);if(!i||!i.term||!i.sample){e.dom.tip.hide();e.mouseout();return}const o=e.dimensions.xOffset+e.dimensions.seriesXoffset;const l=e.dimensions.yOffset;const a=e.settings.matrix;const r=a.controlLabels;const d=[];e.dom.rowBeam.attr("x",o).attr("y",l+i.seriesY).attr("height",i.tw.settings?.barh?i.tw.settings.barh+2*i.tw.settings.gap:a.rowh).style("display","");e.dom.colBeam.attr("x",o+i.x).attr("y",l).style("display","");if(i.term.type!="geneVariant"){d.push(`<tr><td>${r.Sample}:</td><td>${i.row._ref_.label}</td></tr>`);d.push(`<tr>\n\t\t\t\t\t<td>${i.term.name}:</td>\n\t\t\t\t\t<td>\n\t\t\t\t\t\t<span style="display:inline-block; width:12px; height:12px; background-color:${i.fill=="#fff"||i.fill=="transparent"?"":i.fill}" ></span>\n\t\t\t\t\t\t${i.convertedValueLabel||i.label}\n\t\t\t\t\t</td>\n\t\t\t\t</tr>`)}else if(i.term.type=="geneVariant"){d.push(`<tr><td>${r.Sample}:</td><td>${i.row._ref_.label||i.value?.sample}</td></tr>`);d.push(`<tr><td>Gene:</td><td>${i.term.name}</td></tr>`);const t={};if(i.siblingCells)for(const o of i.siblingCells){if(o.$id!=i.$id)continue;const l=o.value;const a=l.pairlst;const r=l.origin?`${l.origin} ${n[l.dt]}`:n[l.dt];const d=o.label==e.config.settings.hierCluster?.termGroupName||l.value?l.value:a?(a[0].a.name||a[0].a.chr)+"::"+(a[0].b.name||a[0].b.chr):l.mname?`${l.mname} ${s[l.class].label}`:s[l.class].label;const p=o.fill==l.color||l.class=="Blank"?"":o.fill;if(!t[r]){t[r]=[{label:d,color:p}]}else{t[r].push({label:d,color:p})}}for(const[e,n]of Object.entries(t).sort(((e,t)=>t.length-e.length))){d.push(`<tr>\n\t\t\t\t\t\t \t\t<td>${e}:</td>\n\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\t<span style="display:inline-block; width:12px; height:12px; background-color:${n[0].color}" ></span>\n\t\t\t\t\t\t\t\t\t${n[0].label}\n\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t </tr>`);for(const e of n.slice(1)){d.push(`<tr>\n\t\t\t\t\t\t\t\t\t<td></td>\n\t\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\t\t<span style="display:inline-block; width:12px; height:12px; background-color:${e.color}" ></span>\n\t\t\t\t\t\t\t\t\t\t${e.label}\n\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t</tr>`)}}}e.dom.matrixCellHoverOver.clear();e.dom.matrixCellHoverOver.d.append("div").html(`<table class='sja_simpletable'>${d.join("\n")}</table>`);e.dom.matrixCellHoverOver.show2(t.clientX,t.clientY);e.dom.mainG.on("mouseout",e.mouseout)};e.getImgCell=function(t){if(!e.imgBox){if(t.target.tagName=="image")e.imgBox=t.target.getBoundingClientRect();else return}const n=t.clientY-e.imgBox.y-t.target.clientTop;const s=t.target.__data__.find((e=>e.hoverY0<=n&&n<=e.hoverY1));if(!s)return;const{xMin:i,dx:o}=e.dimensions;const l=t.clientX-e.imgBox.x-t.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};e.mouseout=function(){if(!e.activeLabel)e.dom.tip.hide();delete e.imgBox;e.dom.colBeam.style("display","none");e.dom.rowBeam.style("display","none");e.dom.matrixCellHoverOver.clear()};e.mouseclick=async function(t,a){const r=e.state.termdbConfig.queries;if(!r)return;if(!r.singleSampleGenomeQuantification&&!r.singleSampleMutation)return;e.dom.mainG.on("mouseout",null);delete e.imgBox;const d=a||t.target.__data__;if(!d)return;e.config.settings.matrix;const p={sample_id:d.row._ref_.label};const c=d.term?.type=="geneVariant"?d.term.name:null;e.dom.clickMenu.clear();e.dom.dendroClickMenu.clear();e.dom.brushMenu.clear();e.dom.matrixCellHoverOver.clear();if(e.dom.sampleListMenu)e.dom.sampleListMenu.destroy();if(r.singleSampleGenomeQuantification){for(const t in r.singleSampleGenomeQuantification){const n=e.dom.clickMenu.d.append("div").attr("class","sja_menuoption sja_sharp_border").text(t).on("click",(async s=>{const l=i(e.opts.plotDiv||o(e.opts.holder.node().parentNode));l.header.text(p.sample_id);await(await import("./plot.ssgq-1949c207.js")).plotSingleSampleGenomeQuantification(e.state.termdbConfig,e.state.vocab.dslabel,t,p,l.body.append("div").style("margin","20px"),e.app.opts.genome,c);n.remove();e.dom.clickMenu.d.selectAll("*").remove()}))}}if(r?.singleSampleMutation){const t=e.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=i(e.opts.plotDiv||o(e.opts.holder.node().parentNode));s.header.text(p.sample_id);(await import("./plot.disco-621d1b8e.js")).default(e.state.termdbConfig,e.state.vocab.dslabel,p,s.body,e.app.opts.genome,{Disco:{prioritizeGeneLabelsByGeneSets:true}});t.remove();e.dom.clickMenu.d.selectAll("*").remove()}))}const m=JSON.parse(sessionStorage.getItem("optionalFeatures")||`{}`)?.showDZImages;if(r.DZImages&&m){const t=e.dom.clickMenu.d.append("div").attr("class","sja_menuoption sja_sharp_border").attr("data-testid","oncoMatrix_termLabel_dzi_button").style("display","none").text(`${r.DZImages.type} Images (0)`);const n=await l("sampledzimages",{body:{genome:e.app.opts.genome.name,dslabel:e.state.vocab.dslabel,sample_id:p.sample_id}});if(n.sampleDZImages?.length>0){t.style("display","block");t.text(`${r.DZImages.type} Images (${n.sampleDZImages.length})`);t.on("click",(async s=>{const l=i(e.opts.plotDiv||o(e.opts.holder.node().parentNode));l.header.text(p.sample_id);(await import("./plot.dzi-3a7e478e.js")).default(e.state.vocab.dslabel,l.body,e.app.opts.genome,p.sample_id,n.sampleDZImages);t.remove();e.dom.clickMenu.d.selectAll("*").remove()}))}}const g=JSON.parse(sessionStorage.getItem("optionalFeatures")||`{}`)?.showBrainImaging;if(r.NIdata&&g){for(const t in r.NIdata){const n=e.dom.clickMenu.d.append("div").attr("class","sja_menuoption sja_sharp_border").text("Neuro Image: "+t).on("click",(async()=>{const s=i(e.opts.plotDiv||o(e.opts.holder.node().parentNode));s.header.text(p.sample_id);(await import("./plot.brainImaging-325ebded.js")).default(e.state.termdbConfig,e.state.vocab.dslabel,t,p,s.body,e.app.opts.genome);n.remove();e.dom.clickMenu.d.selectAll("*").remove()}))}}const u=e.settings.matrix.controlLabels;const f=[];const b=e.state.termdbConfig.urlTemplates;if(b?.sample){const e=d[b.sample.namekey]||d.sample||d.row.sample;f.push(`<tr><td>${u.Sample}:</td> <td><a href="${b.sample.base}${e}" target="_blank">${d.row._ref_.label} ${y.externalLink}</a></td></tr>`)}else f.push(`<tr><td>${u.Sample}:</td><td>${d.row._ref_.label||d.value.sample}</td></tr>`);if(d.term&&d.term.type!="geneVariant"){f.push(`<tr><td>${d.term.name}:</td>\n\t\t\t\t\t<td> \n\t\t\t\t\t\t<span style="display:inline-block; width:12px; height:12px; background-color:${d.fill=="#fff"||d.fill=="transparent"?"":d.fill}" ></span>\n\t\t\t\t\t\t${d.convertedValueLabel||d.label}\n\t\t\t\t\t</td>\n\t\t\t\t</tr>`)}else if(d.term&&d.term.type=="geneVariant"&&d.value){if(b?.gene){const t=e.data.refs.byTermId[d.tw.$id][b.gene.namekey];f.push(`<tr><td>Gene:</td><td><a href="${b.gene.base}${t}" target="_blank">${d.tw.term.name} ${y.externalLink}</a></td></tr>`)}else f.push(`<tr><td>Gene:</td><td>${d.term.name}</td></tr>`);const t={};for(const i of d.siblingCells){if(i.$id!=d.$id)continue;const o=i.value;const l=o.pairlst;const a=o.origin?`${o.origin} ${n[o.dt]}`:n[o.dt];const r=i.label==e.config.settings.hierCluster?.termGroupName?o.value:l?(l[0].a.name||l[0].a.chr)+"::"+(l[0].b.name||l[0].b.chr):o.mname?`${o.mname} ${s[o.class].label}`:s[o.class].label;const p=i.fill==o.color||o.class=="Blank"?"":i.fill;if(!t[a]){t[a]=[{label:r,color:p}]}else{t[a].push({label:r,color:p})}}for(const[e,n]of Object.entries(t).sort(((e,t)=>t.length-e.length))){f.push(`<tr>\n\t\t\t\t\t\t\t\t<td>${e}:</td>\n\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\t<span style="display:inline-block; width:12px; height:12px; background-color:${n[0].color}" ></span>\n\t\t\t\t\t\t\t\t\t${n[0].label}\n\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t </tr>`);for(const e of n.slice(1)){f.push(`<tr>\n\t\t\t\t\t\t\t\t\t<td></td>\n\t\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\t\t<span style="display:inline-block; width:12px; height:12px; background-color:${e.color}" ></span>\n\t\t\t\t\t\t\t\t\t\t${e.label}\n\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t </tr>`)}}}const h=e.dom.clickMenu.d.append("div").style("padding","5px 9px");h.append("span").html(`<table class='sja_simpletable'>${f.join("\n")}</table>`);e.dom.clickMenu.show(t.clientX,t.clientY,false,true)};e.legendClick=function(){};e.svgMousemove=function(t){if(!e.dragged)return;const n=e.config.settings.matrix;const s=e.dragged;const i=!n.transpose?s.x:s.x-s.clientX+t.clientX;const o=!n.transpose?s.y-s.clientY+t.clientY:s.y;s.clone.attr("transform",`translate(${i},${o})`)};e.svgMouseup=function(t){if(!e.dragged)return;e.dragged.clone.remove();delete e.dragged;delete e.clicked};e.getVisibleCenterCell=function(t){e.settings.matrix;const n=e.dimensions;const s=Math.round((.5*n.mainw-n.seriesXoffset-t)/n.dx);return e.sampleOrder[s]};v(e);_(e);x(e);$(e);h(e);C(e);k(e)}function h(e){let t;o(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 v(n){w(n,"term");n.setPill=function(t){n.pill=e({tip:n.customTipApi,menuOptions:"all",menuLayout:"horizontal",vocabApi:n.app.vocabApi,vocab:t.vocab,activeCohort:t.activeCohort,numericEditMenuVersion:["discrete","continuous"],getBodyParams:()=>{const e=[];for(const t of n.config.termgroups){for(const n of t.lst){if(n.term.type=="geneVariant"){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)}else if(n.term.name){e.push(n.term.name)}}}}if(e.length)return{currentGeneNames:e};return{}},renderAs:"none",callback:e=>{if(e&&!e.q)throw"data.q{} missing from pill callback";const t=n.activeLabel||n.lastactiveLabel;if(e){e.label=t.tw.label;if(t&&t.tw)e.$id=t.tw.$id;const s=n.mayRemoveTvsEntry(e);n.pill.main(e);n.app.dispatch({type:"plot_nestedEdits",id:n.opts.id,edits:[{nestedKeys:["termgroups",t.grpIndex,"lst",t.lstIndex],value:e},{nestedKeys:["legendValueFilter"],value:s}]})}else{n.removeTerm()}n.dom.tip.hide()}})};n.getMenuOptions=function(e){return n.config.chartType=="hierCluster"&&e.grp.type==="hierCluster"?"{remove,}":e.tw.term.type=="geneVariant"?"{replace,remove}":"*"};n.showTermMenu=async function(e){const t=e.target.__data__;if(!t||!t.tw||!t.grp)return;const s=n.settings.matrix;const i=s.controlLabels;n.activeLabel=t;n.dom.menutop.style("display","").selectAll("*").remove();n.dom.menubody.style("padding",0).selectAll("*").remove();const o=n.dom.menutop.append("div").style("display","block").text("Loading...");n.dom.tip.show(e.clientX-20,e.clientY-20);await n.pill.main(Object.assign({menuOptions:n.getMenuOptions(t)},t.tw?t.tw:{term:null,q:null}));o.remove();n.dom.shortcutDiv=n.dom.menutop.append("div");n.showShortcuts(t,n.dom.shortcutDiv);n.dom.twMenuDiv=n.dom.menutop.append("div");const l=n.dom.twMenuDiv.append("div").style("text-align","center");l.append("span").text(`${i.Term} `);const a=t.tw.label||t.tw.term.name;const r=t.tw.term.type=="geneVariant"?"gene":"variable";n.dom.twLabelInput=l.append("input").attr("type","text").attr("size",a.length+3).attr("title",`Type to edit the ${r} label`).style("padding","1px 5px").style("text-align","center").property("value",a).on("input",(()=>{const e=n.dom.twLabelInput.property("value");n.dom.twLabelInput.attr("size",e.length+3);n.dom.twLabelEditBtn.style("display",e.trim()===a?"none":"inline")}));n.dom.twLabelEditBtn=l.append("button").style("display","none").style("margin-left","5px").html("submit").on("click",(()=>{if(a!=n.dom.twLabelInput.property("value").trim())n.updateTermLabel();n.dom.tip.hide()}));if(r=="gene"){n.dom.gbButton=l.append("button").style("text-align","center").html("Lollipop").attr("data-testid","oncoMatrix_cell_lollipop_button").on("click",(async()=>{await n.launchGB(t);n.dom.tip.hide()}))}if(n.state.termdbConfig.urlTemplates?.gene&&r=="gene"){const e=n.state.termdbConfig.urlTemplates;n.dom.geneSummaryLink=l.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||""}${y.externalLink}`).on("click",(async()=>{const s=n.data.refs.byTermId[t.tw.$id][e.gene.namekey];window.open(`${e.gene.base}${s}`,"_blank");n.dom.tip.hide()}))}if(n.config.settings.matrix.maxSample){n.dom.twMenuDiv.append("div").style("text-align","center").style("margin","5px").text(`#${i.samples}: ${t.counts.samples} rendered, ${t.allCounts.samples-t.counts.samples} not rendered`)}n.dom.twMenuBar=n.dom.twMenuDiv.append("div").style("text-align","center");const d=e.target;n.pill.showMenu(e,d,n.dom.twMenuBar);n.dom.grpMenuDiv=n.dom.menutop.append("div").style("margin-top","10px")};n.launchGB=async e=>{const t=i(n.opts.plotDiv||o(n.opts.holder.node().parentNode));t.header.text(e.tw.term.name);const s={holder:t.body.append("div").style("margin","20px"),genome:n.app.opts.genome,nobox:true,query:e.tw.term.name,tklst:[{type:"mds3",dslabel:n.app.opts.state.vocab.dslabel,filter0:n.state.filter0,filterObj:n.state.filter}]};const l=await import("./app-71453429.js").then((function(e){return e.c3}));await l.default(s)};n.updateTermLabel=()=>{const e=n.dom.twLabelInput.property("value").trim();const t=n.activeLabel;if(t.tw.label===e)return;t.tw.label=e;t.grp.lst[t.lstIndex]=t.tw;n.app.dispatch({type:"plot_nestedEdits",id:n.opts.id,edits:[{nestedKeys:["termgroups",t.grpIndex],value:t.grp}]})};n.showShortcuts=(e,t)=>{const s=n.settings.matrix.controlLabels;t.style("text-align","center");const i=e.tw.term.type=="geneVariant"?"gene":"variable";const l=n.type!="hierCluster"&&e.tw.sortSamples?.priority!==undefined;t.append("span").selectAll("div").data([{icon:"corner",title:`Sort ${s.samples} against this ${i}, and position this ${i} at the top left corner`,disabled:e.grp.lst.length<1||e.index===0&&e.tw.sortSamples?.priority===0||n.type=="hierCluster",handler:n.sortSamplesAgainstCornerTerm},{icon:"left",title:`Sort ${s.samples} against this ${i}`,disabled:e.tw.sortSamples?.priority===0&&!n.config.settings.hierCluster?.clusterSamples,fill:l?"rgba(200,100,100,0.5)":"",handler:l?n.unsortSamplesAgainstTerm:n.sortSamplesAgainstTerm},{html:" | "},{icon:"up",title:`Move this ${i} up`,disabled:e.index===0||n.type=="hierCluster",handler:n.moveTermUp},{icon:"down",title:`Move this ${i} down`,disabled:e.index===e.grp.lst.length-1||n.type=="hierCluster",handler:n.moveTermDown}],(e=>e.icon)).enter().append("div").style("display","inline-block").each((function(e){const t=o(this);if(e.icon)a[e.icon](t,e);else t.html(e.html)}))};n.sortSamplesAgainstCornerTerm=e=>{e.stopPropagation();const t=n.activeLabel;const s=JSON.parse(JSON.stringify(n.termGroups));const i=s[t.grpIndex];const[o,l]=n.getSorterTerms(t);i.lst.splice(t.lstIndex,1);i.lst.unshift(o);i.sortTermsBy="asListed";for(const e of s){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}}}n.app.dispatch({type:"plot_edit",id:n.opts.id,config:{termgroups:s,settings:{matrix:{sortTermsBy:"asListed"}}}});n.dom.tip.hide()};n.sortSamplesAgainstTerm=e=>{e?.stopPropagation();const t=n.activeLabel;const[s]=n.getSorterTerms(t);if(t.grp.type=="hierCluster")s.sortSamples.by="values";const i=n.termGroups;i[t.grpIndex].lst[t.lstIndex]=s;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(n.chartType=="hierCluster"){n.config.settings.hierCluster.clusterSamples=false;n.config.settings.hierCluster.yDendrogramHeight=0}n.config.termgroups=i;n.app.dispatch({type:"plot_edit",id:n.opts.id,config:n.config});n.dom.tip.hide()};n.unsortSamplesAgainstTerm=(e,t)=>{e.stopPropagation();const s=n.activeLabel||t.data.t;const[i]=n.getSorterTerms(s);const o=n.termGroups;o[s.grpIndex].lst[s.lstIndex]=i;for(const e of o){for(const t of e.lst){if(!t.sortSamples)continue;if(t.$id===s.tw.$id){delete t.sortSamples}else if("sortSamples"in t&&"priority"in t.sortSamples){if(t.sortSamples.priority>s.sortSamples?.priority)t.sortSamples.priority-=1}}}n.app.dispatch({type:"plot_edit",id:n.opts.id,config:{termgroups:o}});n.dom.tip.hide()};n.moveTermUp=e=>{e.stopPropagation();const t=n.activeLabel;const s=n.termGroups[t.grpIndex];s.lst.splice(t.lstIndex,1);s.lst.splice(t.lstIndex-1,0,t.tw);s.sortTermsBy="asListed";n.app.dispatch({type:"plot_nestedEdits",id:n.opts.id,edits:[{nestedKeys:["termgroups",t.grpIndex],value:s},{nestedKeys:["settings","matrix","sortTermsBy"],value:"asListed"}]});n.dom.tip.hide()};n.moveTermDown=e=>{e.stopPropagation();const t=n.activeLabel;const s=n.termGroups[t.grpIndex];s.lst.splice(t.lstIndex,1);s.lst.splice(t.lstIndex+1,0,t.tw);s.sortTermsBy="asListed";n.app.dispatch({type:"plot_nestedEdits",id:n.opts.id,edits:[{nestedKeys:["termgroups",t.grpIndex],value:s},{nestedKeys:["settings","matrix","sortTermsBy"],value:"asListed"}]});n.dom.tip.hide()};n.showTermEditMenu=async()=>{n.dom.menubody.selectAll("*").remove();const e=n.activeLabel;const t=n.config.settings.matrix;const s=t.controlLabels;if(e.tw.term.type=="geneVariant"){const t=n.dom.menubody.append("div");const i=t.append("label");i.append("span").html(`Minimum # ${s.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)}n.app.dispatch({type:"plot_nestedEdits",id:n.opts.id,edits:[{nestedKeys:["termgroups",e.grpIndex,"lst",e.lstIndex],value:e.tw}]});n.dom.tip.hide()}))}else{await n.pill.main(Object.assign({menuOptions:n.getMenuOptions(e)},n.activeLabel.tw));n.pill.showMenu()}};n.showMoveMenu=async()=>{n.dom.menubody.selectAll("*").remove();n.termBeingMoved=n.activeLabel;const e=n.dom.menubody.append("div");e.append("span").html("Click on another label");n.makeInsertPosRadios(e)};n.showTermInsertMenu=()=>{n.dom.menubody.selectAll("*").remove();n.dom.editbtns=n.dom.menubody.append("div");n.dom.editbody=n.dom.menubody.append("div");const e=n.dom.editbtns.append("div").style("margin","10px 5px");e.append("label").html(`Insert genes or variables in `);n.dom.grpNameSelect=e.append("select").on("change",(()=>{const e=n.dom.grpNameSelect.property("value");n.dom.grpNameTextInput.property("disabled",e=="current").property("value",e=="current"?n.activeLabel.grp.name:t)}));n.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="";n.dom.grpNameTextInput=e.append("input").attr("type","text").property("disabled",true).property("value",n.activeLabel.grp.name).on("change",(()=>{const e=n.dom.grpNameTextInput.property("value");if(e==n.activeLabel.grp.name);else{t=n.dom.grpNameTextInput.property("value")}}));n.makeInsertPosRadios(n.dom.editbtns);n.showDictTermSelection()};n.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 s=t.append("div").style("display","inline-block");n.insertRadioId=`sjpp-matrix-${n.id}-insert-pos`;const i=s.append("label");i.append("input").attr("type","radio").attr("value","above").property("checked",true).attr("name",n.insertRadioId);i.append("span").html("above");s.append("span").html("  ");const o=s.append("label");o.append("input").attr("type","radio").attr("value","below").attr("name",n.insertRadioId);o.append("span").html(" below")};n.showDictTermSelection=async()=>{const e=await import("./app-fb676934.js");n.dom.editbody.selectAll("*").remove();e.appInit({holder:n.dom.editbody.append("div"),vocabApi:n.app.vocabApi,state:{vocab:n.state.vocab,activeCohort:n.activeCohort,nav:{header_mode:"search_only"},tree:{usecase:{target:"matrix",detail:"termgroups"}}},tree:{submit_lst:s},search:{handleGeneVariant:e=>s([e])}})};async function s(e){const s=await Promise.all(e.map((async e=>{const s=structuredClone(e);const i="id"in s?{id:s.id,term:s}:{term:s};await t(i,n.app.vocabApi);return i})));const i=o(`input[name='${n.insertRadioId}']:checked`).property("value");const l=n.activeLabel;const a=n.termGroups;if(n.dom.grpNameSelect.property("value")=="current"){const e=a[l.grpIndex];const t=i=="above"?l.lstIndex:l.lstIndex+1;e.lst.splice(t,0,...s);n.app.dispatch({type:"plot_nestedEdits",id:n.opts.id,edits:[{nestedKeys:["termgroups",l.grpIndex,"lst"],value:e.lst}]})}else{const e=i=="above"?l.grpIndex:l.grpIndex+1;a.splice(e,0,{name:n.dom.grpNameTextInput.property("value"),lst:s});n.app.dispatch({type:"plot_edit",id:n.opts.id,config:{termgroups:a}})}n.dom.tip.hide()}n.showSortMenu=()=>{const e=n.activeLabel;n.dom.menubody.selectAll("*").remove();n.dom.menubody.append("div").style("margin-top","10px").style("text-align","center").html(e.tw.term.name);n.moveInput=undefined;n.showSortOptions(e)};n.showTermMoveOptions=e=>{const t=n.dom.menubody.append("div").style("margin-top","10px");const s=t.append("label");n.moveInput=s.append("input").attr("type","checkbox").style("text-align","center");s.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))};n.showSortOptions=e=>{const t=n.dom.menubody.append("div").style("margin-top","10px");const s=t.append("label");const i=s.append("input").attr("type","checkbox").property("checked",true).style("text-align","center");const o=n.settings.matrix.controlLabels;s.append("span").html(` sort ${o.samples} against (in order of priority):`);const l=n.showSorterTerms(t,e);n.dom.menubody.append("button").html("Apply").on("click",(()=>{JSON.parse(JSON.stringify(n.config.settings.matrix))||{};delete l.div;delete l.up;delete l.down;delete l.delete;if(i.property("checked")||n.moveInput.property("checked")){n.app.dispatch({type:"plot_nestedEdits",id:n.opts.id,edits:[{nestedKeys:["termgroups",e.grpIndex,"lst",e.lstIndex],value:l}]})}n.dom.tip.hide()}))};n.showSorterTerms=(e,t)=>{const[s,i]=n.getSorterTerms(t);const l=n.settings.matrix;const a=l.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=o(this);const n=e.$id=="sample"?`${a.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);r()}));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);r()}));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);r()}))}));function r(){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 s};n.getSorterTerms=e=>{const t=[...n.termOrder.filter((e=>e.tw.sortSamples)).map((e=>JSON.parse(JSON.stringify(e.tw)))).sort(((e,t)=>e.sortSamples.priority-t.sortSamples.priority)),...n.config.settings.matrix.sortSamplesTieBreakers.map((e=>JSON.parse(JSON.stringify(e))))];const s=n.settings.matrix;const i=s.sortOptions[s.sortSamplesBy];if(!i){throw`unsupported s.sortSamplesBy='${s.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]};n.removeTerm=()=>{const e=n.activeLabel;const t=n.mayRemoveTvsEntry(e.tw);const s=n.termGroups;const i=s[e.grpIndex];i.lst.splice(e.lstIndex,1);if(i.lst.length){n.app.dispatch({type:"plot_nestedEdits",id:n.opts.id,edits:[{nestedKeys:["termgroups",e.grpIndex,"lst"],value:i.lst},{nestedKeys:["legendValueFilter"],value:t}]})}else{s.splice(e.grpIndex,1);n.app.dispatch({type:"plot_edit",id:n.opts.id,config:{termgroups:s,legendValueFilter:t}})}n.dom.tip.hide()};n.removeTermGroup=()=>{const e=n.activeLabel;const t=n.termGroups;t.splice(e.grpIndex,1);n.app.dispatch({type:"plot_edit",id:n.opts.id,config:{termgroups:t}});n.dom.tip.hide()};n.mayRemoveTvsEntry=e=>{if(!n.config.legendValueFilter?.lst.length)return n.config.legendValueFilter;const t=structuredClone(n.config.legendValueFilter.lst);const s=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(!s.length)return n.config.legendValueFilter;else{for(const n of s){const s=n.tvs;if(s.term.type!=e.term.type)continue;if(("id"in s.term||"id"in e.term)&&s.term.id!==e.term.id)continue;else if(s.term.name!=e.term.name)continue;const i=t.findIndex((e=>e===s));t.splice(i,1)}}return{in:true,join:"and",type:"tvslst",lst:t}};n.launchBrowser=e=>{e.stopPropagation();const t=n.activeLabel.tw;const s=[];for(const e of n.data.lst){if(e[t.$id]?.values)s.push(...e[t.$id].values)}n.app.dispatch({type:"plot_create",config:{term:t,chartType:"variantBrowser",insertBefore:n.id,custom_variants:s}})}}function x(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-"+f++;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-fb676934.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(n.type=="integer"||n.type=="float"){n.$id=t.$id;const s={legendGrpName:t.term.id,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.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 _(e){w(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.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=>{o(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");o("body").on("mouseup.sjppMatrixLabelText",e.disableTextHighlight)};e.disableTextHighlight=e=>{o(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");o("body").on("mouseup.sjppMatrixLabelText",null)}}function w(e,t){e[`${t}LabelMousedown`]=(t,n)=>{e.clicked={event:t,d:n}};e[`${t}LabelMouseover`]=(n,i)=>{if(t=="term"&&n.target.__data__?.tw&&n.target.__data__.grp){if(e.chartType=="hierCluster"){return}if(e.activeLabel||e.zoomArea){return}e.dom.menutop.selectAll("*").remove();e.dom.menubody.selectAll("*").remove();const t=n.target.__data__.grp.name;const i=n.target.__data__.tw.term.name;const o=e.dom.menubody.append("div").style("text-align","left").style("font-size","1.1em").html(t?`<b>${t}: ${i}</b>`:`<b>${i}</b>`);const l=e.dom.menubody.append("div").style("max-width","400px");const a=n.target.__data__;if(a.tw.term.type=="geneVariant"){const t=Object.values(a.counts.subGroupCounts).reduce(((e,t)=>e+t.samplesNotTested),0);o.append("div").style("text-align","left").style("font-size","0.9em").html(`(tested ${e.samples.length-t} of ${e.samples.length})`);for(const[t,n]of Object.entries(a.counts.subGroupCounts)){const i=e.sampleGroups.find((e=>e.name==t)).lst.length;const o=i-n.samplesNotTested?n.samplesTotal/(i-n.samplesNotTested):0;l.append("div").style("padding-top","10px").html(t?`<b>${t}</b>: Mutated samples (${n.samplesTotal} of ${i-n.samplesNotTested}, ${r(".1%")(o)})`:`<b>Mutated samples (${n.samplesTotal} of ${i-n.samplesNotTested}, ${r(".1%")(o)})`);const a=l.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",s[e].color);n.append("td").html(`${s[e].label}: ${t}`)}if(n.notTestedClasses){l.append("div").style("margin-left","15px").style("padding-top","12px").html("<b> Not counted:</b>");const e=l.append("table").style("margin-left","15px");for(const[t,i]of Object.entries(n.notTestedClasses).sort(((e,t)=>t[1]-e[1]))){const n=e.append("tr");n.append("td").append("div").style("width","12px").style("height","12px").style("background-color",s[t].color);n.append("td").html(`${s[t].label}: ${i}`)}}}}else if(!e.config.divideBy){const t=e.legendData.find((e=>e.name==a.label));if(t&&t.items){const e=l.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;l.append("div").style("padding-top","10px").html(t!==""?`<b>${t}</b>: ${n.samplesTotal} of ${s}`:`<b>${n.samplesTotal} of ${s}`);const i=l.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;l.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 o=i.legendData.find((e=>e.name==a.label));if(o&&o.items){const e=l.append("table").style("margin-left","15px");for(const t of o.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=l.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"){o(n.target).style("fill","blue")}if(!e.dragged)return;e.hovered=n.target.__data__};e[`${t}LabelMouseout`]=e=>{o(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[l,a]=o(s).attr("transform").split("translate(")[1].split(")")[0].split(",").map(Number);const r=s.cloneNode(true);e.dom[`${t}LabelG`].node().prepend(r);e.dragged={orig:s,clone:o(r).style("cursor","move").style("pointer-events","none"),node:r,x:l,y:a,clientX:n.clientX,clientY:n.clientY};e.dragged.clone.selectAll("text").style("fill","red")}if(!e.dragged)return;const l=e.dragged;const a=!i.transpose?l.x:l.x-l.clientX+n.clientX;const r=!i.transpose?l.y-l.clientY+n.clientY:l.y;l.clone.attr("transform",`translate(${a},${r})`)};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 if(e.chartType!=="hierCluster"||n.target.__data__.grp?.name!==e.config.settings.hierCluster.termGroupName){e.showTermGroupMenu(n)}}}function $(e){e.resetInteractions=function(){if(e.zoomArea){e.zoomArea.remove();delete e.zoomArea;o("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=u(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(){o("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){o("body").on("mousemove.sjppMatrixDrag",null).on("mouseup.sjppMatrixDrag",null);const n=e.settings.matrix;const s=e.dimensions;const i=e.clickedSeriesCell;const l=t.clientX-i.event.clientX;const a=Math.min(i.dxMax,Math.max(l,i.dxMin));if(Math.abs(l)<1||Math.abs(a)<1){e.translateElems(0,s,n,i);return}e.translateElems(a,s,n,i);const r=e.getVisibleCenterCell(a);e.app.dispatch({type:"plot_edit",id:e.id,config:{settings:{matrix:{zoomCenterPct:.5,zoomIndex:r.totalIndex,zoomGrpIndex:r.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)");o("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);o("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 l=e.getCellByPos(s);if(!i||!i.startCell){e.dom.mainG.on("mouseout",null);delete e.clickedSeriesCell;return}else if(!i.endCell||l===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 a=e.settings.matrix;const r=a.controlLabels;i.endCell=l;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} ${r.samples}`,callback:()=>{e.resetInteractions();e.dom.tip.hide();t(e,g,s.clientX,s.clientY)}}];if(d){u.push({label:d.buttonText||`Select ${r.Samples}`,callback:async()=>{d.callback({samples:g.map((e=>({"cases.case_id":e.sample}))),source:`Selected ${r.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 d({padding:"5px"});else e.dom.sampleListMenu.clear();const a=e.dom.sampleListMenu.d.append("div");g({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 C(e){e.legendLabelMouseover=t=>{const n=t.target.__data__;if(!n||n.dt==p){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?.groupsetting?.inuse){return}if(t.target.nodeName=="rect")o(t.target).style("stroke","blue").style("cursor","pointer");else o(t.target).style("fill","blue").style("cursor","pointer")};e.legendLabelMouseout=e=>{if(e.target.nodeName=="rect")o(e.target).style("stroke","#aaa");else o(e.target).style("fill","")};e.legendLabelMouseup=t=>{const n=t.target.__data__;if(!n||n.dt==p){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(c)){a.append("div").attr("class","sja_menuoption sja_sharp_border").text(`Show only truncating mutations`).on("click",(()=>{N(o,n,e)}));a.append("div").attr("class","sja_menuoption sja_sharp_border").text(`Show only protein-changing mutations`).on("click",(()=>{G(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)V(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",(()=>{L(o,n,e)}))}o.showunder(t.target);return}const l=e.config.legendGrpFilter.lst.find((e=>e.dt?.includes(n.dt)&&(!e.origin||e.origin==n.origin)))&&true;if(n.isLegendItem&&l){return}const a=e.terms.find((e=>e.tw.$id==n.$id));if(a?.tw?.q?.groupsetting?.inuse){return}let r;if(n.dt){r=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"){r=e.config.legendValueFilter.lst.findIndex((e=>e.legendGrpName==n.termid&&e.tvs.values.find((e=>e.key==n.key))))}else if(t.type=="integer"||t.type=="float"){r=e.config.legendValueFilter.lst.findIndex((e=>e.legendGrpName==n.termid&&e.tvs.ranges.find((e=>e.name==n.key))))}}const d=e.settings.matrix.controlLabels;const g=o.d.append("div");if(!n.dt||e.type!=="hierCluster"||r!==-1){g.append("div").attr("class","sja_menuoption sja_sharp_border").text(n.dt?r==-1?`Hide ${d.samples} with ${s[n.key].label}`:`Show ${d.samples} with ${s[n.key].label}`:r==-1?"Hide":"Show").on("click",(()=>{o.hide();if(r==-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(t.type=="integer"||t.type=="float"){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(r,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(r,1)}}if(e.state.config.settings.matrix.addMutationCNVButtons&&e.chartType!=="hierCluster"){if(n.dt==c){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==m){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&&r==-1){g.append("div").attr("class","sja_menuoption sja_sharp_border").text(`Do not show ${s[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==c){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==m){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){g.append("div").attr("class","sja_menuoption sja_sharp_border").text("Show only").on("click",(()=>{o.hide();const t=e.termOrder.find((e=>e.tw.$id==n.$id))?.tw?.term;const s=e.legendData.find((e=>e.name==n.termid))||e.legendData.find((e=>e.$id==n.$id));e.config.legendValueFilter.lst=e.config.legendValueFilter.lst.filter((e=>e.legendGrpName!==n.termid));if(t.type=="categorical"||t.type=="survival"){t.$id=n.$id;for(const i of s.items){if(i.key==n.key)continue;const s=e.config.legendValueFilter.lst.findIndex((e=>e.legendGrpName==n.termid));if(s==-1){const s={legendGrpName:n.termid,type:"tvs",tvs:{isnot:true,term:t,values:[{key:i.key}]}};e.config.legendValueFilter.lst.push(s)}else{e.config.legendValueFilter.lst[s].tvs.values.push({key:i.key})}}}else if(t.type=="integer"||t.type=="float"){t.$id=n.$id;for(const i of s.items){if(i.key==n.key)continue;const s={legendGrpName:n.termid,type:"tvs",tvs:{isnot:true,term:t,ranges:[e.data.refs.byTermId[n.$id].bins.find((e=>i.key==e.name))]}};if(!e.config.legendValueFilter.lst.length)e.config.legendValueFilter.lst=[s];else e.config.legendValueFilter.lst.push(s)}}e.app.dispatch({type:"plot_edit",id:e.id,config:e.config})}))}if(!n.dt){g.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 k(e){e.mutationSelectionActions={onlyTruncating:N,onlyPC:G,none:V,all:L,bySelection:F};e.mutationControlCallback=t=>{const n=e.dom.legendMenu.clear();const s=e.legendData.find((e=>e.dt?.includes(c)));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(m)));e.mutationSelectionActions[t](n,s,e,"CNV")};e.geneStyleControlCallback=t=>{const n=e.legendData.find((e=>e.dt?.includes(m)));if(t=="")M(n,e);else if(t=="single")S(n,e);else if(t=="oncoprint")I(n,e)}}function S(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 I(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 M(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 N(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(c)&&e.origin==t.origin)));const e=n.config.settings.matrix.truncatingMutations;const i=n.config.settings.matrix.controlLabels;for(const[o,l]of Object.entries(s)){if(e.includes(o)||l.dt!=c)continue;const s={legendGrpName:t.origin?`${t.origin[0].toUpperCase()+t.origin.slice(1)} ${i.Mutations}`:i.Mutations,type:"tvs",tvs:{isnot:true,legendFilterType:"geneVariant_soft",term:{type:"geneVariant"},values:[{dt:c,origin:t.origin,mclasslst:[o]}]}};n.config.legendValueFilter.lst.push(s)}}n.app.dispatch({type:"plot_edit",id:n.id,config:n.config})}function G(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(c)&&e.origin==t.origin)));const e=n.config.settings.matrix.proteinChangingMutations;const i=n.config.settings.matrix.controlLabels;for(const[o,l]of Object.entries(s)){if(e.includes(o)||l.dt!=c)continue;const s={legendGrpName:t.origin?`${t.origin[0].toUpperCase()+t.origin.slice(1)} ${i.Mutations}`:i.Mutations,type:"tvs",tvs:{isnot:true,legendFilterType:"geneVariant_soft",term:{type:"geneVariant"},values:[{dt:c,origin:t.origin,mclasslst:[o]}]}};n.config.legendValueFilter.lst.push(s)}}n.app.dispatch({type:"plot_edit",id:n.id,config:n.config})}function V(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(m))&&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 T(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(m))&&s.cellEncoding!==""){s.cellEncoding="oncoprint"}return e.config}function L(e,t,n,s){e.hide();n.app.dispatch({type:"plot_edit",id:n.id,config:T(n,t,s)})}function F(e,t,n,i){e.hide();const l=n.config.settings.matrix;if(!t){if(l.addMutationCNVButtons&&n.chartType!=="hierCluster"&&i=="mutation"){l.showMatrixMutation="bySelection"}else if(l.addMutationCNVButtons&&n.chartType!=="hierCluster"&&i=="CNV"){l.showMatrixCNV="bySelection"}n.app.dispatch({type:"plot_edit",id:n.id,config:n.config});return}n.app.tip.d.selectAll(".byLFClassDiv").remove();const a=n.app.tip.d.append("div").attr("class","byLFClassDiv");const r=Math.random().toString();const d=a.selectAll(":scope>div").data(i=="mutation"?l.mutationClasses:l.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==s[e].dt&&t.tvs.values[0].mclasslst.includes(e)));const a=i=="mutation"?l.hiddenMutations.includes(e):l.hiddenCNVs.includes(e);const c=o(this).attr("class","sjpp_row_wrapper");c.append("input").attr("type","checkbox").attr("name",r).property("disabled",t?true:false).property("checked",t||a?false:true).style("vertical-align","top").style("margin-right","3px").on("change",(function(){const e=d.selectAll(`input[type='checkbox'][name='${r}']:checked`).empty();p.property("disabled",e)}));c.append("span").style("margin-left","3px").html(s[e].label).style("text-decoration",t?"line-through":"")}));const p=a.append("button").property("disabled",true).style("margin-top","3px").text("Apply").on("click",(()=>{const a=d.selectAll(`input[type='checkbox'][name='${r}']:checked`);const p=a.nodes().map((e=>o(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(c)&&t.dt.includes(c)||e.dt.includes(m)&&t.dt.includes(m))));for(const e of i=="mutation"?l.mutationClasses:l.CNVClasses){if(p.includes(e))continue;const i={legendGrpName:t.name,type:"tvs",tvs:{isnot:true,legendFilterType:"geneVariant_soft",term:{type:"geneVariant"},values:[{dt:s[e].dt,origin:t.origin,mclasslst:[e]}]}};n.config.legendValueFilter.lst.push(i)}if(n.state.config.settings.matrix.addMutationCNVButtons&&n.chartType!=="hierCluster"&&(i=="CNV"||t?.dt?.includes(m))){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{T as getConfigForShowAll,b as setInteractivity,L as showAll};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c1 as t,bB as s,aS as e,af as a,l as n}from"./app-f91922b4.js";import{d as o,c as i,b as l,a as r}from"./axis-6cb4f314.js";var c=s=>t(s[s.length-1]);var m=new Array(3).concat("deebf79ecae13182bd","eff3ffbdd7e76baed62171b5","eff3ffbdd7e76baed63182bd08519c","eff3ffc6dbef9ecae16baed63182bd08519c","eff3ffc6dbef9ecae16baed64292c62171b5084594","f7fbffdeebf7c6dbef9ecae16baed64292c62171b5084594","f7fbffdeebf7c6dbef9ecae16baed64292c62171b508519c08306b").map(s);var f=c(m);var h=new Array(3).concat("fee0d2fc9272de2d26","fee5d9fcae91fb6a4acb181d","fee5d9fcae91fb6a4ade2d26a50f15","fee5d9fcbba1fc9272fb6a4ade2d26a50f15","fee5d9fcbba1fc9272fb6a4aef3b2ccb181d99000d","fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181d99000d","fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181da50f1567000d").map(s);var p=c(h);function d(t){const s=this.state.config.settings.matrix;if(!this.autoDimensions)this.autoDimensions=new Set;if(!s.colw)this.autoDimensions.add("colw");else this.autoDimensions.delete("colw");if(!s.rowh)this.autoDimensions.add("rowh");else this.autoDimensions.delete("rowh");const a=this.settings.matrix;this.computedSettings={useCanvas:this.sampleOrder.length>s.svgCanvasSwitch};if(a.availContentWidth){this.availContentWidth=a.availContentWidth}else{let s=this.dom.contentNode.getBoundingClientRect().width;if(s<600)s=window.document.body.clientWidth;const e=this.getMaxGrpLabelWidth();const n=Math.max(65,e);const o=this.state.config.settings.hierCluster?.xDendrogramHeight||0;this.availContentWidth=s-n-a.margin.right-t-o}if(this.autoDimensions.has("colw")){const t=a.colgspace*Math.max(0,this.visibleSampleGrps.size-1);const s=this.sampleOrder.length*a.colspace+t;const e=(this.availContentWidth-s)/this.sampleOrder.length;const n=Math.max(a.colwMin,Math.min(e,a.colwMax));const o=(this.availContentWidth-t)/this.sampleOrder.length;const i=Math.max(a.colwMin,Math.min(o,a.colwMax));if(a.zoomLevel<1||i*a.zoomLevel<2){this.computedSettings.colw=o;this.computedSettings.colspace=0}else{this.computedSettings.colw=n;this.computedSettings.colspace=a.colspace}}if(this.autoDimensions.has("rowh")){this.computedSettings.rowh=Math.max(5,Math.round(screen.availHeight/this.numTerms))}e(this.settings.matrix,this.computedSettings)}function u(){const t=this.settings.matrix;const s=this.dom.svg.append("g").attr("opacity",.01);let e=0;for(const a of this.termGroups){const n=!a.name?"":a.name.length<=t.termGrpLabelMaxChars?a.name:a.name.slice(0,t.termGrpLabelMaxChars)+"…";const o=s.append("text").text(n).attr("font-size",12);const i=o.node().getBBox();if(e<i.width)e=i.width}s.remove();return e}function b(){const t=this.settings.matrix;this.cnvValues={};const s=t.transpose?t.colw:t.rowh;const e={};const o={sampleGrpByName:{},termGrpByName:{}};let i=0;for(const l of this.termOrder){const r=new Set;l.counts={samples:0,hits:0};l.counts.subGroupCounts={};for(const t of this.sampleGroups){l.counts.subGroupCounts[t.name]={samplesTotal:0,classes:{}};if(l.tw.term.type=="geneVariant"){l.counts.subGroupCounts[t.name].samplesNotTested=0}}if(!o.termGrpByName[l.grp.name||""]){const s=l.grp.name||"";l.grp.label=s.length<=t.termGrpLabelMaxChars?s:s.slice(0,t.termGrpLabelMaxChars)+"…";o.termGrpByName[s]=l.grp.label}for(const s of this.sampleOrder){if(r.has(s.row.sample))continue;const e=s.grp.name||"";if(!(e in o.sampleGrpByName)){s.grp.label=e.length<=t.sampleGrpLabelMaxChars?e:e.slice(0,t.sampleGrpLabelMaxChars)+"…";if(this.config.divideBy)s.grp.label+=` (${s.grp.lst.length})`;o.sampleGrpByName[e]=s.grp.label}const n=s.row._ref_.label||"";s.label=n.length<=t.collabelmaxchars?n:n.slice(0,t.collabelmaxchars)+"…";const i=s.row[l.tw.$id];if(!i)continue;const{filteredValues:c,countedValues:m,renderedValues:f}=this.classifyValues(i,l.tw,l.grp,this.settings.matrix,s.row);i.filteredValues=c;i.countedValues=m;i.renderedValues=f;if(i.countedValues?.length){l.counts.samples+=1;l.counts.hits+=i.countedValues.length;if(l.tw.q?.mode=="continuous"){const t=i.value;if(!l.tw.term.values?.[t]?.uncomputable){if(!("minval"in l.counts)||l.counts.minval>t)l.counts.minval=t;if(!("maxval"in l.counts)||l.counts.maxval<t)l.counts.maxval=t}}if(l.tw.term.type=="geneVariant"&&i.values){for(const s of i.values){if(s.dt==a&&"value"in s&&!t.ignoreCnvValues){const t=s.value;if(t<0){if(!("minLoss"in this.cnvValues)||this.cnvValues["minLoss"]>t)this.cnvValues["minLoss"]=t;if(!("maxLoss"in this.cnvValues)||this.cnvValues["maxLoss"]<t)this.cnvValues["maxLoss"]=t}else{if(!("minGain"in this.cnvValues)||this.cnvValues["minGain"]>t)this.cnvValues["minGain"]=t;if(!("maxGain"in this.cnvValues)||this.cnvValues["maxGain"]<t)this.cnvValues["maxGain"]=t}}}}}const h=l.counts.subGroupCounts?.[s.grp.name];const p=i.filteredValues.filter((t=>{if(l.tw.term.type=="geneVariant"){if(t.class=="WT"||t.class=="Blank")return false}return true}));if(p.length){if(l.tw.term.type=="geneVariant"){let s=false;for(const e of p){if(t.geneVariantCountSamplesSkipMclass.includes(e.class)){if(!h.notTestedClasses)h.notTestedClasses={};if(!(e.class in h.notTestedClasses))h.notTestedClasses[e.class]=1;else h.notTestedClasses[e.class]+=1}else if(!(e.class in h.classes)){if(!s){h.samplesTotal+=1;s=true}h.classes[e.class]=1}else{if(!s){h.samplesTotal+=1;s=true}h.classes[e.class]+=1}}}else{h.samplesTotal+=1;for(const t of p){if(!(t in h.classes))h.classes[t]=1;else h.classes[t]+=1}}}if(i.filteredValues?.length&&l.tw.term.type=="geneVariant"){const t=i.filteredValues.every((t=>t.class=="Blank"));if(t){h.samplesNotTested+=1}}}l.label=l.tw.label||l.tw.term.name;if(l.label.length>t.rowlabelmaxchars)l.label=l.label.slice(0,t.rowlabelmaxchars-1)+"…";const c=this.config?.settings.hierCluster?.termGroupName;if(t.samplecount4gene&&l.tw.term.type.startsWith("gene")&&(!c||l.grp.name!==c)){const s=t.samplecount4gene==="abs"?l.counts.samples:(100*l.counts.samples/this.sampleOrder.length).toFixed(1)+"%";l.label=`${l.label} (${s})`}if(l.grp.type!=="hierCluster"&&l.tw.q?.mode=="continuous"){if(!l.tw.settings)l.tw.settings={};if(!l.tw.settings.barh)l.tw.settings.barh=t.barh;if(!("gap"in l.tw.settings))l.tw.settings.gap=4;const s=l.tw.settings.barh;const e=Math.abs(l.counts.minval);const a=l.counts.minval<0&&l.counts.maxval>0;const o=l.counts.minval>=0?1:l.counts.maxval/(e+l.counts.maxval);l.counts.posMaxHt=o*s;const i=l.tw.term.valueConversion;if(i){l.counts.minval*=i.scaleFactor;l.counts.maxval*=i.scaleFactor}const r=[l.counts.maxval,l.counts.minval];l.scales={tickValues:r,full:n().domain(r).range([1,s])};if(l.counts.maxval>=0){const t=a?0:l.counts.minval;l.scales.pos=n().domain([t,l.counts.maxval]).range([1,l.counts.posMaxHt])}if(l.counts.minval<0){const t=a?0:l.counts.maxval;l.scales.neg=n().domain([t,l.counts.minval]).range([1,s-l.counts.posMaxHt-l.tw.settings.gap])}}l.totalHtAdjustments=i;l.rowHt=l.tw.settings?l.tw.settings.barh+2*l.tw.settings.gap:s;const m=l.rowHt-s;i+=m;l.cumulativeAdjustment=i;if(!(l.visibleGrpIndex in e))e[l.visibleGrpIndex]={htAdjustment:0};e[l.visibleGrpIndex].htAdjustment+=m;l.grpTotals=e[l.visibleGrpIndex]}for(const t of this.termOrder){if(t.tw.term.type=="geneVariant"){if("maxLoss"in this.cnvValues||"maxGain"in this.cnvValues){t.scales={loss:f,gain:p,maxLoss:this.cnvValues.maxLoss,maxGain:this.cnvValues.maxGain,minLoss:this.cnvValues.minLoss,minGain:this.cnvValues.minGain}}}}}function g(){const t=this.settings.matrix;const[s,e]=!t.transpose?["sample","term"]:["term","sample"];const[a,n]=t.collabelpos=="top"?["","Grp"]:["Grp",""];const[c,m]=t.rowlabelpos=="left"?["","Grp"]:["Grp",""];const f=s+a;const h=s+n;const p=e+c;const d=e+m;this.samples=this.sampleOrder;this.sampleGrps=this.sampleOrder.filter((t=>t.index===0));this.terms=this.termOrder;this.termGrps=this.termOrder.filter((t=>t.index===0));const u={};const b={top:f,btm:h,left:p,right:d};for(const s in b){const e=b[s];const a=s[0].toUpperCase()+s.slice(1);u[s]={prefix:e,data:this[`${e}s`],offset:t[`${e}LabelOffset`],box:this.dom[`${e}LabelG`],key:this[`${e}Key`],label:this[`${e}Label`],render:this[`render${a}Label`],isGroup:b[s].includes("Grp")}}const g=u.top.offset+t.margin.top+t.scrollHeight;const x=u.left.offset+t.margin.left;this.setAutoDimensions(x);this.setLabelsAndScales();const v=Math.max(t.colwMin,Math.min(t.colwMax,t.colw*t.zoomLevel));const w=v+t.colspace;const G=this[`${s}s`].length;const L=t.rowh+t.rowspace;const M=this[`${e}s`].length;const V=G*(v+t.colspace)+this[`${s}Grps`].length*t.colgspace+(this[`${s}s`].slice(-1)[0]?.totalHtAdjustments||0);const C=Math.min(V,this.availContentWidth);const $=this[`${e}s`].slice(-1)[0];const z=M*L+(this[`${e}Grps`].length-1)*t.rowgspace+($?.cumulativeAdjustment||0);const T=Math.min(Math.max(v+t.colspace-2*t.collabelpad-t.colspace,t.minLabelFontSize),t.maxLabelFontSize);const y=a=="Grp"?t.grpLabelFontSize:T;u.top.attr={boxTransform:`translate(${x}, ${g-t.collabelgap})`,adjustBoxTransform:s=>u.top.box.attr("transform",`translate(${x+s}, ${g-t.collabelgap})`),labelTransform:"rotate(-90)",labelAnchor:"start",labelGY:0,labelGTransform:this[`col${a}LabelGTransform`],fontSize:y,textpos:{coord:"y",factor:-1},axisFxn:o};if(u.top.prefix=="sample")u.top.display=v>=t.minLabelFontSize?"":"none";const S=n=="Grp"?t.grpLabelFontSize:T;u.btm.attr={boxTransform:`translate(${x}, ${g+z+t.collabelgap})`,adjustBoxTransform:s=>u.btm.box.attr("transform",`translate(${x+s}, ${g+z+t.collabelgap})`),labelTransform:"rotate(-90)",labelAnchor:"end",labelGY:0,labelGTransform:this[`col${n}LabelGTransform`],fontSize:S,textpos:{coord:"y",factor:1},axisFxn:i};if(u.btm.prefix=="sample")u.btm.display=v>=t.minLabelFontSize?"":"none";const W=c=="Grp"?t.grpLabelFontSize:Math.max(t.rowh+t.rowspace-2*t.rowlabelpad-t.rowspace,t.minLabelFontSize);u.left.attr={boxTransform:`translate(${x-t.rowlabelgap}, ${g})`,labelTransform:"",labelAnchor:"end",labelGX:0,labelGTransform:this[`row${c}LabelGTransform`],fontSize:W,textpos:{coord:"x",factor:-1},axisFxn:l};const F=m=="Grp"?t.grpLabelFontSize:Math.max(t.rowh+t.rowspace-2*t.rowlabelpad,t.minLabelFontSize);u.right.attr={boxTransform:`translate(${x+C+t.rowlabelgap}, ${g})`,labelTransform:"",labelAnchor:"start",labelGX:0,labelGTransform:this[`row${m}LabelGTransform`],fontSize:F,textpos:{coord:"x",factor:1},axisFxn:r};this.dom.sampleLabelsPG.attr("clip-path",t.transpose?"":`url(#${this.seriesClipId})`);this.dom.termLabelsPG.attr("clip-path",t.transpose?`url(#${this.seriesClipId})`:"");this.layout=u;if(!t.zoomCenterPct){t.zoomCenterPct=.5;t.zoomIndex=Math.round(t.zoomCenterPct*C/w);t.zoomGrpIndex=this.sampleOrder[t.zoomIndex]?.grpIndex||0}const O=t.zoomCenterPct*C;const A=t.zoomIndex*w+t.zoomGrpIndex*t.colgspace;const B=G*w+(this[`${s}Grps`].length-1)*t.colgspace;const I=t.zoomLevel<=1&&C>=B?0:Math.max(O-A,C-B);const j=(t.imgWMax>B?B:t.imgWMax)-1e-7;const D=.5*j;const H=Math.max(0,A+D-B);const N=Math.max(0,A-Math.min(D,j)-H);const P=t.zoomLevel<=1&&C>=B?0:N;const _=j+P;this.dimensions={xMin:P,xMax:_,dx:w,dy:L,xOffset:x,yOffset:g,mainw:C,mainh:z,colw:v,zoomedMainW:B,seriesXoffset:I>0?0:I,maxMainW:Math.max(V,this.availContentWidth),imgW:j,pxw:1/window.devicePixelRatio}}var x=Object.freeze({__proto__:null,setAutoDimensions:d,getMaxGrpLabelWidth:u,setLabelsAndScales:b,setLayout:g});export{x as m};
|
|
1
|
+
import{c1 as t,bB as s,aS as e,af as a,l as n}from"./app-71453429.js";import{d as o,c as i,b as l,a as r}from"./axis-6cb4f314.js";var c=s=>t(s[s.length-1]);var m=new Array(3).concat("deebf79ecae13182bd","eff3ffbdd7e76baed62171b5","eff3ffbdd7e76baed63182bd08519c","eff3ffc6dbef9ecae16baed63182bd08519c","eff3ffc6dbef9ecae16baed64292c62171b5084594","f7fbffdeebf7c6dbef9ecae16baed64292c62171b5084594","f7fbffdeebf7c6dbef9ecae16baed64292c62171b508519c08306b").map(s);var f=c(m);var h=new Array(3).concat("fee0d2fc9272de2d26","fee5d9fcae91fb6a4acb181d","fee5d9fcae91fb6a4ade2d26a50f15","fee5d9fcbba1fc9272fb6a4ade2d26a50f15","fee5d9fcbba1fc9272fb6a4aef3b2ccb181d99000d","fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181d99000d","fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181da50f1567000d").map(s);var p=c(h);function d(t){const s=this.state.config.settings.matrix;if(!this.autoDimensions)this.autoDimensions=new Set;if(!s.colw)this.autoDimensions.add("colw");else this.autoDimensions.delete("colw");if(!s.rowh)this.autoDimensions.add("rowh");else this.autoDimensions.delete("rowh");const a=this.settings.matrix;this.computedSettings={useCanvas:this.sampleOrder.length>s.svgCanvasSwitch};if(a.availContentWidth){this.availContentWidth=a.availContentWidth}else{let s=this.dom.contentNode.getBoundingClientRect().width;if(s<600)s=window.document.body.clientWidth;const e=this.getMaxGrpLabelWidth();const n=Math.max(65,e);const o=this.state.config.settings.hierCluster?.xDendrogramHeight||0;this.availContentWidth=s-n-a.margin.right-t-o}if(this.autoDimensions.has("colw")){const t=a.colgspace*Math.max(0,this.visibleSampleGrps.size-1);const s=this.sampleOrder.length*a.colspace+t;const e=(this.availContentWidth-s)/this.sampleOrder.length;const n=Math.max(a.colwMin,Math.min(e,a.colwMax));const o=(this.availContentWidth-t)/this.sampleOrder.length;const i=Math.max(a.colwMin,Math.min(o,a.colwMax));if(a.zoomLevel<1||i*a.zoomLevel<2){this.computedSettings.colw=o;this.computedSettings.colspace=0}else{this.computedSettings.colw=n;this.computedSettings.colspace=a.colspace}}if(this.autoDimensions.has("rowh")){this.computedSettings.rowh=Math.max(5,Math.round(screen.availHeight/this.numTerms))}e(this.settings.matrix,this.computedSettings)}function u(){const t=this.settings.matrix;const s=this.dom.svg.append("g").attr("opacity",.01);let e=0;for(const a of this.termGroups){const n=!a.name?"":a.name.length<=t.termGrpLabelMaxChars?a.name:a.name.slice(0,t.termGrpLabelMaxChars)+"…";const o=s.append("text").text(n).attr("font-size",12);const i=o.node().getBBox();if(e<i.width)e=i.width}s.remove();return e}function b(){const t=this.settings.matrix;this.cnvValues={};const s=t.transpose?t.colw:t.rowh;const e={};const o={sampleGrpByName:{},termGrpByName:{}};let i=0;for(const l of this.termOrder){const r=new Set;l.counts={samples:0,hits:0};l.counts.subGroupCounts={};for(const t of this.sampleGroups){l.counts.subGroupCounts[t.name]={samplesTotal:0,classes:{}};if(l.tw.term.type=="geneVariant"){l.counts.subGroupCounts[t.name].samplesNotTested=0}}if(!o.termGrpByName[l.grp.name||""]){const s=l.grp.name||"";l.grp.label=s.length<=t.termGrpLabelMaxChars?s:s.slice(0,t.termGrpLabelMaxChars)+"…";o.termGrpByName[s]=l.grp.label}for(const s of this.sampleOrder){if(r.has(s.row.sample))continue;const e=s.grp.name||"";if(!(e in o.sampleGrpByName)){s.grp.label=e.length<=t.sampleGrpLabelMaxChars?e:e.slice(0,t.sampleGrpLabelMaxChars)+"…";if(this.config.divideBy)s.grp.label+=` (${s.grp.lst.length})`;o.sampleGrpByName[e]=s.grp.label}const n=s.row._ref_.label||"";s.label=n.length<=t.collabelmaxchars?n:n.slice(0,t.collabelmaxchars)+"…";const i=s.row[l.tw.$id];if(!i)continue;const{filteredValues:c,countedValues:m,renderedValues:f}=this.classifyValues(i,l.tw,l.grp,this.settings.matrix,s.row);i.filteredValues=c;i.countedValues=m;i.renderedValues=f;if(i.countedValues?.length){l.counts.samples+=1;l.counts.hits+=i.countedValues.length;if(l.tw.q?.mode=="continuous"){const t=i.value;if(!l.tw.term.values?.[t]?.uncomputable){if(!("minval"in l.counts)||l.counts.minval>t)l.counts.minval=t;if(!("maxval"in l.counts)||l.counts.maxval<t)l.counts.maxval=t}}if(l.tw.term.type=="geneVariant"&&i.values){for(const s of i.values){if(s.dt==a&&"value"in s&&!t.ignoreCnvValues){const t=s.value;if(t<0){if(!("minLoss"in this.cnvValues)||this.cnvValues["minLoss"]>t)this.cnvValues["minLoss"]=t;if(!("maxLoss"in this.cnvValues)||this.cnvValues["maxLoss"]<t)this.cnvValues["maxLoss"]=t}else{if(!("minGain"in this.cnvValues)||this.cnvValues["minGain"]>t)this.cnvValues["minGain"]=t;if(!("maxGain"in this.cnvValues)||this.cnvValues["maxGain"]<t)this.cnvValues["maxGain"]=t}}}}}const h=l.counts.subGroupCounts?.[s.grp.name];const p=i.filteredValues.filter((t=>{if(l.tw.term.type=="geneVariant"){if(t.class=="WT"||t.class=="Blank")return false}return true}));if(p.length){if(l.tw.term.type=="geneVariant"){let s=false;for(const e of p){if(t.geneVariantCountSamplesSkipMclass.includes(e.class)){if(!h.notTestedClasses)h.notTestedClasses={};if(!(e.class in h.notTestedClasses))h.notTestedClasses[e.class]=1;else h.notTestedClasses[e.class]+=1}else if(!(e.class in h.classes)){if(!s){h.samplesTotal+=1;s=true}h.classes[e.class]=1}else{if(!s){h.samplesTotal+=1;s=true}h.classes[e.class]+=1}}}else{h.samplesTotal+=1;for(const t of p){if(!(t in h.classes))h.classes[t]=1;else h.classes[t]+=1}}}if(i.filteredValues?.length&&l.tw.term.type=="geneVariant"){const t=i.filteredValues.every((t=>t.class=="Blank"));if(t){h.samplesNotTested+=1}}}l.label=l.tw.label||l.tw.term.name;if(l.label.length>t.rowlabelmaxchars)l.label=l.label.slice(0,t.rowlabelmaxchars-1)+"…";const c=this.config?.settings.hierCluster?.termGroupName;if(t.samplecount4gene&&l.tw.term.type.startsWith("gene")&&(!c||l.grp.name!==c)){const s=t.samplecount4gene==="abs"?l.counts.samples:(100*l.counts.samples/this.sampleOrder.length).toFixed(1)+"%";l.label=`${l.label} (${s})`}if(l.grp.type!=="hierCluster"&&l.tw.q?.mode=="continuous"){if(!l.tw.settings)l.tw.settings={};if(!l.tw.settings.barh)l.tw.settings.barh=t.barh;if(!("gap"in l.tw.settings))l.tw.settings.gap=4;const s=l.tw.settings.barh;const e=Math.abs(l.counts.minval);const a=l.counts.minval<0&&l.counts.maxval>0;const o=l.counts.minval>=0?1:l.counts.maxval/(e+l.counts.maxval);l.counts.posMaxHt=o*s;const i=l.tw.term.valueConversion;if(i){l.counts.minval*=i.scaleFactor;l.counts.maxval*=i.scaleFactor}const r=[l.counts.maxval,l.counts.minval];l.scales={tickValues:r,full:n().domain(r).range([1,s])};if(l.counts.maxval>=0){const t=a?0:l.counts.minval;l.scales.pos=n().domain([t,l.counts.maxval]).range([1,l.counts.posMaxHt])}if(l.counts.minval<0){const t=a?0:l.counts.maxval;l.scales.neg=n().domain([t,l.counts.minval]).range([1,s-l.counts.posMaxHt-l.tw.settings.gap])}}l.totalHtAdjustments=i;l.rowHt=l.tw.settings?l.tw.settings.barh+2*l.tw.settings.gap:s;const m=l.rowHt-s;i+=m;l.cumulativeAdjustment=i;if(!(l.visibleGrpIndex in e))e[l.visibleGrpIndex]={htAdjustment:0};e[l.visibleGrpIndex].htAdjustment+=m;l.grpTotals=e[l.visibleGrpIndex]}for(const t of this.termOrder){if(t.tw.term.type=="geneVariant"){if("maxLoss"in this.cnvValues||"maxGain"in this.cnvValues){t.scales={loss:f,gain:p,maxLoss:this.cnvValues.maxLoss,maxGain:this.cnvValues.maxGain,minLoss:this.cnvValues.minLoss,minGain:this.cnvValues.minGain}}}}}function g(){const t=this.settings.matrix;const[s,e]=!t.transpose?["sample","term"]:["term","sample"];const[a,n]=t.collabelpos=="top"?["","Grp"]:["Grp",""];const[c,m]=t.rowlabelpos=="left"?["","Grp"]:["Grp",""];const f=s+a;const h=s+n;const p=e+c;const d=e+m;this.samples=this.sampleOrder;this.sampleGrps=this.sampleOrder.filter((t=>t.index===0));this.terms=this.termOrder;this.termGrps=this.termOrder.filter((t=>t.index===0));const u={};const b={top:f,btm:h,left:p,right:d};for(const s in b){const e=b[s];const a=s[0].toUpperCase()+s.slice(1);u[s]={prefix:e,data:this[`${e}s`],offset:t[`${e}LabelOffset`],box:this.dom[`${e}LabelG`],key:this[`${e}Key`],label:this[`${e}Label`],render:this[`render${a}Label`],isGroup:b[s].includes("Grp")}}const g=u.top.offset+t.margin.top+t.scrollHeight;const x=u.left.offset+t.margin.left;this.setAutoDimensions(x);this.setLabelsAndScales();const v=Math.max(t.colwMin,Math.min(t.colwMax,t.colw*t.zoomLevel));const w=v+t.colspace;const G=this[`${s}s`].length;const L=t.rowh+t.rowspace;const M=this[`${e}s`].length;const V=G*(v+t.colspace)+this[`${s}Grps`].length*t.colgspace+(this[`${s}s`].slice(-1)[0]?.totalHtAdjustments||0);const C=Math.min(V,this.availContentWidth);const $=this[`${e}s`].slice(-1)[0];const z=M*L+(this[`${e}Grps`].length-1)*t.rowgspace+($?.cumulativeAdjustment||0);const T=Math.min(Math.max(v+t.colspace-2*t.collabelpad-t.colspace,t.minLabelFontSize),t.maxLabelFontSize);const y=a=="Grp"?t.grpLabelFontSize:T;u.top.attr={boxTransform:`translate(${x}, ${g-t.collabelgap})`,adjustBoxTransform:s=>u.top.box.attr("transform",`translate(${x+s}, ${g-t.collabelgap})`),labelTransform:"rotate(-90)",labelAnchor:"start",labelGY:0,labelGTransform:this[`col${a}LabelGTransform`],fontSize:y,textpos:{coord:"y",factor:-1},axisFxn:o};if(u.top.prefix=="sample")u.top.display=v>=t.minLabelFontSize?"":"none";const S=n=="Grp"?t.grpLabelFontSize:T;u.btm.attr={boxTransform:`translate(${x}, ${g+z+t.collabelgap})`,adjustBoxTransform:s=>u.btm.box.attr("transform",`translate(${x+s}, ${g+z+t.collabelgap})`),labelTransform:"rotate(-90)",labelAnchor:"end",labelGY:0,labelGTransform:this[`col${n}LabelGTransform`],fontSize:S,textpos:{coord:"y",factor:1},axisFxn:i};if(u.btm.prefix=="sample")u.btm.display=v>=t.minLabelFontSize?"":"none";const W=c=="Grp"?t.grpLabelFontSize:Math.max(t.rowh+t.rowspace-2*t.rowlabelpad-t.rowspace,t.minLabelFontSize);u.left.attr={boxTransform:`translate(${x-t.rowlabelgap}, ${g})`,labelTransform:"",labelAnchor:"end",labelGX:0,labelGTransform:this[`row${c}LabelGTransform`],fontSize:W,textpos:{coord:"x",factor:-1},axisFxn:l};const F=m=="Grp"?t.grpLabelFontSize:Math.max(t.rowh+t.rowspace-2*t.rowlabelpad,t.minLabelFontSize);u.right.attr={boxTransform:`translate(${x+C+t.rowlabelgap}, ${g})`,labelTransform:"",labelAnchor:"start",labelGX:0,labelGTransform:this[`row${m}LabelGTransform`],fontSize:F,textpos:{coord:"x",factor:1},axisFxn:r};this.dom.sampleLabelsPG.attr("clip-path",t.transpose?"":`url(#${this.seriesClipId})`);this.dom.termLabelsPG.attr("clip-path",t.transpose?`url(#${this.seriesClipId})`:"");this.layout=u;if(!t.zoomCenterPct){t.zoomCenterPct=.5;t.zoomIndex=Math.round(t.zoomCenterPct*C/w);t.zoomGrpIndex=this.sampleOrder[t.zoomIndex]?.grpIndex||0}const O=t.zoomCenterPct*C;const A=t.zoomIndex*w+t.zoomGrpIndex*t.colgspace;const B=G*w+(this[`${s}Grps`].length-1)*t.colgspace;const I=t.zoomLevel<=1&&C>=B?0:Math.max(O-A,C-B);const j=(t.imgWMax>B?B:t.imgWMax)-1e-7;const D=.5*j;const H=Math.max(0,A+D-B);const N=Math.max(0,A-Math.min(D,j)-H);const P=t.zoomLevel<=1&&C>=B?0:N;const _=j+P;this.dimensions={xMin:P,xMax:_,dx:w,dy:L,xOffset:x,yOffset:g,mainw:C,mainh:z,colw:v,zoomedMainW:B,seriesXoffset:I>0?0:I,maxMainW:Math.max(V,this.availContentWidth),imgW:j,pxw:1/window.devicePixelRatio}}var x=Object.freeze({__proto__:null,setAutoDimensions:d,getMaxGrpLabelWidth:u,setLabelsAndScales:b,setLayout:g});export{x as m};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{s as e}from"./legacy-d3-polyfill-bdb2d792.js";import{am as t,an as r,L as s}from"./app-
|
|
1
|
+
import{s as e}from"./legacy-d3-polyfill-bdb2d792.js";import{am as t,an as r,L as s}from"./app-71453429.js";function i(i,n,o){const d=this.settings.matrix;const l=[];const a=this.config.divideBy||{};const c=a&&"id"in a?a.id:a.name;for(const s in i){const n=i[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;n.values[s]={key:r,dt:t.dt,origin:t.origin,label:t.label||o.mclass[r].label,fill:t.color||o.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(n.values);if(!e.length)continue;l.unshift({name:"Consequences",order:n.order,$id:n.$id,dt:n.dt,origin:n.origin,items:e.map(((e,t)=>{const r=n.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}}))});l[0].items.sort(((e,t)=>e.text<t.text?-1:1));continue}const u=s==c?{tw:a}: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=u.tw.legend?.group||u.tw.label||u.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(n.dt&&!n.dt.includes(t.dt))n.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;n.values[s]={key:r,dt:t.dt,origin:t.origin,label:t.label||o.mclass[r].label,fill:t.color||o.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(e.tvs.term.type=="integer"||e.tvs.term.type=="float"){if(u.ref?.bins){for(const t of e.tvs.ranges){const e=u.ref.bins;n.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){n.values[t.key]={key: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=u.tw.term.values;n.values[t.key]={key:t.key,label:e?.[t.key]?.label||t.key,fill:e?.[t.key]?.color,crossedOut:true}}}}}const g=Object.keys(n.values).sort();const m=Object.values(n.values).find((e=>e.scale));if(m){const e=d.legendGrpLabelMaxChars||26;l.push({name:s.length<e?s:s.slice(0,e)+"...",order:n.order,$id:n.$id,dt:n.dt,origin:n.origin,hasScale:m,items:g.map(((e,t)=>{const r=n.values[e];const i=r.samples?.size;if(r.scale){return{termid:s,key:r.key,text:this.getLegendItemText(r,i,u,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,u,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 o=u.tw.term;const a=n.ref;if(a.bins)g.sort(((e,t)=>a.bins.findIndex((t=>t.name===e))-a.bins.findIndex((e=>e.name===t))));else if(a.keyOrder)g.sort(((e,t)=>a.keyOrder.indexOf(e)-a.keyOrder.indexOf(t)));if(!this.colorScaleByTermId[i])this.colorScaleByTermId[i]=g.length<11?t(r):t(e);const c=u.tw.legend?.group||u.tw.label||o.name;const m=d.legendGrpLabelMaxChars||26;l.push({name:c.length<m?c:c.slice(0,m)+"...",order:n.order,$id:n.$id,dt:n.dt,origin:n.origin,items:g.map(((e,t)=>{const r=n.values[e];const l=r.samples?.size;return{$id:s,termid:o.id,key:r.key,text:this.getLegendItemText(r,l,u,d),color:u.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 o.config.legendGrpFilter.lst){if(e.dt.length==1&&e.dt[0]==4&&!l.filter((e=>e.dt))?.find((e=>e.dt.length==1&&e.dt[0]==4))){l.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:o.mclass[t].label,color:o.mclass[t]?.color,isLegendItem:true})))})}else if(e.dt.includes(s)){const t=o.settings.matrix.controlLabels;const r=e.origin?`${e.origin[0].toUpperCase()+e.origin.slice(1)} ${t.Mutations}`:t.Mutations;if(!l.filter((e=>e.dt))?.find((t=>t.dt.includes(s)&&t.origin==e.origin))){l.push({name:r,dt:e.dt,origin:e.origin,crossedOut:true,items:e.filteredOutCats.map((t=>({dt:o.mclass[t].dt,origin:e.origin,termid:r,key:t,text:o.mclass[t].label,color:o.mclass[t]?.color,isLegendItem:true})))})}}else if(e.dt.length==1&&e.dt[0]==2&&!l.filter((e=>e.dt))?.find((e=>e.dt.length==1&&e.dt[0]==2))){l.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:o.mclass[t].label,color:o.mclass[t]?.color,isLegendItem:true})))})}else if(e.dt.length==1&&e.dt[0]==5&&!l.filter((e=>e.dt))?.find((e=>e.dt.length==1&&e.dt[0]==5))){l.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:o.mclass[t].label,color:o.mclass[t]?.color,isLegendItem:true})))})}}for(const e of l){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 l.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 n(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 o=Object.freeze({__proto__:null,getLegendData:i,getLegendItemText:n});export{o as m};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t,f as e}from"./termsetting-636d2271.js";import{q as s}from"./app-71453429.js";import"path";import"./FilterRxComp-fc769f34.js";import"./table-1dae543a.js";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 r=s(this);r.attr("transform")?e.duration:0;r.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=r.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,n,o,i){if(!e.fill)e.fill=e.$id in a.colorScaleByTermId?a.colorScaleByTermId[e.$id](e.key):r(e);const l=e.x?e.x-o.xMin:0;const c=i?i+e.y:e.y||0;const d=n.useMinPixelWidth?Math.max(e.width||o.colw,o.pxw):e.width||o.colw;const m="height"in e?e.height:n.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):r(t);const e=a.settings.matrix;s(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,r,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 r=s(this);r.attr("transform")?n:0;r.attr("transform",i.attr.labelGTransform);if(!r.select(":scope>text").size())r.append("text");const o=!i.isGroup&&e.grp?.type!=="hierCluster"&&e.tw?.q?.mode=="continuous";const l=i.label(e);const c=r.select(":scope>text").attr("fill","#000");c.attr("font-size",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*(o?30:0));if(!Array.isArray(l)){c.text(l);c.attr("y",e.grp?.type!=="hierCluster"&&e.tw?.q?.mode=="continuous"?10:0)}else{const t=c.selectAll("tspan").data(l);t.exit().remove();t.attr("dx",m).attr("font-size",f).text(p);t.enter().append("tspan").attr("class",d).attr("dx",m).attr("font-size",f).text(p)}c.on("mouseover",l==="configure"?()=>c.attr("opacity",.5):null).on("mouseout",l==="configure"?()=>c.attr("opacity",0):null);const g=r.select(".sjpp-matrix-cell-axis").size()&&true;if(o&&l){if(!g){r.append("g").attr("class","sjpp-matrix-cell-axis").attr("shape-rendering","crispEdges")}const s=r.select(".sjpp-matrix-cell-axis");s.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;s.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(g){r.select(".sjpp-matrix-cell-axis").remove()}}function d(t){return t.cls}function m(t){return t.dx}function f(t){return t.fontSize||i.attr.fontSize}function p(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*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(s,r,n)=>{a.dom.mainG.selectAll(".sjpp-matrix-divide-by-label").remove();if(!a.config.divideBy)return;const o=a.config.divideBy?.term.name||"";const i=o.length<=s.rowlabelmaxchars?o:o.slice(0,s.rowlabelmaxchars)+"…";const l=!s.transpose?[r.left,r.right]:[r.top,r.bottom];const c=l.find((t=>!t.isGroup))?.box;const d=(s.collabelpos=="top"?n.mainh+s.collabelmaxchars:-s.collabelmaxchars)+8;const m=s.rowlabelpos=="left"?"end":"start";const f=s.controlLabels;const p=c.append("g").attr("class","sjpp-matrix-divide-by-label").attr("transform",`translate(0, ${d})`);p.append("text").attr("text-anchor",m).attr("font-style","italic").attr("y",-20).text(`${f.Samples} grouped by`);const g=c.datum({tw:a.config.divideBy}).append("g").attr("class","sjpp-matrix-divide-by-label").attr("transform",`translate(0, ${d})`);const h=g.append("text").attr("text-anchor",m).attr("font-weight",600).text(i).on("click",((t,e)=>{y.showMenu(t,h.node())}));g.append("title").text(`${f.Samples} are grouped by this gene or variable. Click to edit.`);const x=[];const u=["integer","float"].includes(a.config.divideBy.term.type)?"ranges":"values";if(a.config.legendValueFilter.lst?.find((t=>t.legendGrpName==a.config.divideBy.id))?.tvs[u]?.length){x.push({label:`Show filtered ${f.samples}`,callback:a.showDeletedSampleGroups})}const y=await t({menuOptions:"{edit,replace,remove}",customMenuOptions:x,vocabApi:a.app.vocabApi,vocab:a.state.vocab,holder:g,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:t=>{if(t&&!t.q)throw"data.q{} missing from pill callback";if(t)e(t,a.app.vocabApi);y.main(t?t:{term:null,q:null});c.datum({tw:t});a.app.dispatch({type:"plot_edit",id:a.id,config:{divideBy:t,legendValueFilter:a.mayRemoveTvsEntry(a.config.divideBy)}})}});y.main({term:a.config.divideBy.term,q:a.config.divideBy.q})};a.adjustSvgDimensions=async function(t){const e=a.settings.matrix;const s=a.settings.hierCluster||{};const r=s.yDendrogramHeight||0;const o=s.xDendrogramHeight||0;const i=a.dimensions;const l=a.dom.svg.attr("width")?e.duration:0;await n(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 f=c.left.box.node().getBBox();const p=c.right.box.node().getBBox();const g=a.dom.legendG.node().getBBox();a.dom.seriesesG.node().getBBox();i.extraWidth=f.width+p.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+o;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:f.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+o+h;const u=!s.xDendrogramHeight?0:Math.max(f.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+o+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}, -5)`);const r=-.5*e.rowh+(c.top.display=="none"?0:d.height);a.dom.leftDendrogram.attr("transform",`translate(${t-h-10}, ${r})`)}}}function r(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 n(t){return new Promise((e=>setTimeout(e,t)))}export{a as setRenderers};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{getEmptyCell as e,setCellProps as t,maySetEmptyCell as s}from"./matrix.cells-
|
|
1
|
+
import{getEmptyCell as e,setCellProps as t,maySetEmptyCell as s}from"./matrix.cells-3620eb3a.js";import"./app-71453429.js";function n(n){const r=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 i=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=!r.transpose?n.totalIndex*a+n.visibleGrpIndex*r.rowgspace+n.totalHtAdjustments:0;const x=(n.tw.settings?.gap||0)+v;const y={t:n,tw:n.tw,cells:[],y:v,hoverY0:x,hoverY1:x+(n.tw.settings?.barh||a)};for(const o of this.unfilteredSampleOrder){const{totalIndex:g,grpIndex:x,row:w}=o;y.x=!r.transpose?0:n.totalIndex*d+n.visibleGrpIndex*r.colgspace;const $=w[i];const I={s:o,sample:w.sample,tw:n.tw,term:n.tw.term,termid:p,$id:i,totalIndex:g,grpIndex:x,row:w,t:n,seriesY:v};if(!$){if(!o.grp.isExcluded&&(r.useCanvas||o.grp)){const t=e(I,r,this.dimensions);y.cells.push(t)}continue}const G=$.key;const b=$.filteredValues||$.values||[$.value];const C=r.cellEncoding=="oncoprint"?1:b.length;const E=!r.transpose?r.rowh/C:l;const O=!r.transpose?l:l/b.length;const S=[];if(!$||!$.renderedValues?.length){if(!o.grp.isExcluded&&(r.useCanvas||o.grp)){const t=e(I,r,this.dimensions);y.cells.push(t)}continue}for(const[e,s]of b.entries()){const l=Object.assign({key:G,siblingCells:S},I);l.valueIndex=e;const p=n.grp.type=="hierCluster"?t["hierCluster"]:t[n.tw.term.type];const g=p(l,n.tw,$,s,r,n,this,O,E,d,a,e);if(!r.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:i,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(w.sample);if(m){t.values[g.value].isExcluded=o.grp.isExcluded}}}if(!o.grp.isExcluded){if($.renderedValues.includes(s))y.cells.push(l);S.push(l)}}if(r.showGrid=="rect"&&!o.grp.isExcluded){const t=n.grp.type=="hierCluster"?e(I,r,this.dimensions):s[n.tw.term.type]?.(S,I,r,this.dimensions);if(t)h.push(t)}}if(h.length)y.cells.unshift(...h);if(y.cells.length)o.push(y)}i(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 i(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 r=Object.freeze({__proto__:null,getSerieses:n});export{r as m};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{d as e}from"./FilterRxComp-0e75dd8d.js";import{J as t,L as r,af as s,bH as i,bG as n}from"./app-f91922b4.js";import"./table-d6c411fd.js";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.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}}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}}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};
|
|
1
|
+
import{d as e}from"./FilterRxComp-fc769f34.js";import{J as t,L as r,af as s,bH as i,bG as n}from"./app-71453429.js";import"./table-1dae543a.js";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 h=o.sortPriority;if(h){for(const e of p){const t=structuredClone(e);if(t.sortSamples?.by){m.push(Object.assign({},t));continue}for(const e of h){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(h){for(const e of h){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 b=[];t.maxSampleSet=new Set;for(const e of m){if(typeof e==="function")b.push(e);else if(e.$id=="sample")b.push(l);else if(e.sortSamples.by=="hits")b.push(u(e,t,s));else if(e.term.type!="geneVariant")b.push(d(e,t,s));else if(e.sortSamples.by=="values")b.push(d(e,t,s));else if(e.sortSamples.by=="dt")b.push(f(e));else if(e.sortSamples.by=="class")b.push(c(e,t));else throw`unsupported sortSamplesBy entry by='${e.sortSamples.by}'`}if(!b.find((e=>e.$id==="sample"))){b.push(l)}return(e,t)=>{for(const r of b){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.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}}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}}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 h(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 b(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,b as getSampleGroupSorter,o as getSampleSorter,h as getSortOptions,m as getTermSorter,S as reshapeSortPriority};
|