@sjcrh/proteinpaint-client 2.76.1 → 2.76.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/dist/{2dmaf-593951c7.js → 2dmaf-f240211f.js} +1 -1
- package/dist/{AppHeader-29b88e14.js → AppHeader-c9432a24.js} +1 -1
- package/dist/{ColorScale-3d3c42dc.js → ColorScale-b991fc9e.js} +1 -1
- package/dist/{DEanalysis-f81e0f19.js → DEanalysis-bbfad00d.js} +1 -1
- package/dist/{Disco-db386f7a.js → Disco-b7c9bf72.js} +1 -1
- package/dist/{Disco.UI-8ed9cb39.js → Disco.UI-a5296c36.js} +1 -1
- package/dist/{DragControls-d6250d18.js → DragControls-ca3fa0cf.js} +1 -1
- package/dist/{DziViewer-9352e224.js → DziViewer-28915c11.js} +1 -1
- package/dist/{FilterRxComp-0f35b322.js → FilterRxComp-02e68f1b.js} +1 -1
- package/dist/{FilterStateless-b1c6ee04.js → FilterStateless-16a33070.js} +1 -1
- package/dist/{HicApp-14b94b20.js → HicApp-e713aa40.js} +1 -1
- package/dist/{OrbitControls-45f56ed4.js → OrbitControls-2466d420.js} +1 -1
- package/dist/{WSIViewer-80f60272.js → WSIViewer-957695a8.js} +1 -1
- package/dist/{adSandbox-94424b88.js → adSandbox-27d93bc0.js} +1 -1
- package/dist/app-42f69951.js +1 -0
- package/dist/{app-2cd97738.js → app-6fb77603.js} +1 -1
- package/dist/{app-686b9547.js → app-d215327f.js} +1 -1
- package/dist/app.js +1 -1
- package/dist/{bam-6631640f.js → bam-d67e5315.js} +1 -1
- package/dist/{barchart-3c5d734c.js → barchart-2898d229.js} +1 -1
- package/dist/{barchart.events-df44e666.js → barchart.events-426d737a.js} +1 -1
- package/dist/{bars.renderer-b232d882.js → bars.renderer-71935d34.js} +1 -1
- package/dist/{block-4134e823.js → block-75d4ff92.js} +1 -1
- package/dist/block.lazyload-d2951c91.js +1 -0
- package/dist/{block.legend-d2b7f1cb.js → block.legend-93d85a6e.js} +1 -1
- package/dist/{block.mds-ebe7b58d.js → block.mds-84b9d1c1.js} +1 -1
- package/dist/{block.mds.cnv-99f0a414.js → block.mds.cnv-a991ed79.js} +1 -1
- package/dist/{block.mds.expressionrank-96bf864b.js → block.mds.expressionrank-33b858de.js} +1 -1
- package/dist/{block.mds.expressionstat-dcab3fd1.js → block.mds.expressionstat-3093599f.js} +1 -1
- package/dist/{block.mds.geneboxplot-e5b2a4ce.js → block.mds.geneboxplot-b8391d18.js} +1 -1
- package/dist/{block.mds.junction-534eef9b.js → block.mds.junction-69708c7f.js} +1 -1
- package/dist/{block.mds.svcnv-de6a3c7d.js → block.mds.svcnv-322baea6.js} +1 -1
- package/dist/{block.mds.svcnv.share-2c2c16db.js → block.mds.svcnv.share-c5c38237.js} +1 -1
- package/dist/{block.mds2-373fcb4d.js → block.mds2-de4811dd.js} +1 -1
- package/dist/{block.svg-be5d741d.js → block.svg-ac9fec2d.js} +1 -1
- package/dist/{block.tk.aicheck-f2da5e81.js → block.tk.aicheck-ac4b8d4d.js} +1 -1
- package/dist/{block.tk.ase-ef848944.js → block.tk.ase-6dc0f9f1.js} +1 -1
- package/dist/{block.tk.bam-11fcba17.js → block.tk.bam-8f68b41d.js} +1 -1
- package/dist/{block.tk.bedgraphdot-a81b0709.js → block.tk.bedgraphdot-d8878860.js} +1 -1
- package/dist/{block.tk.bigwig.ui-f8e5ba71.js → block.tk.bigwig.ui-f6ed051c.js} +1 -1
- package/dist/{block.tk.hicstraw-e7072b25.js → block.tk.hicstraw-725bdc8a.js} +1 -1
- package/dist/{block.tk.junction-1c9a7854.js → block.tk.junction-f8b0b51d.js} +1 -1
- package/dist/{block.tk.junction.textmatrixui-ffecbb16.js → block.tk.junction.textmatrixui-252e7d7e.js} +1 -1
- package/dist/{block.tk.ld-274c3a82.js → block.tk.ld-11acf730.js} +1 -1
- package/dist/{block.tk.menu-e970cd4a.js → block.tk.menu-5e04436d.js} +1 -1
- package/dist/{block.tk.pgv-f4d4dbf7.js → block.tk.pgv-fef17dc4.js} +1 -1
- package/dist/{boxplot-44d3b48f.js → boxplot-4c9a5479.js} +1 -1
- package/dist/{brainImaging-2eaa419d.js → brainImaging-7716bc66.js} +1 -1
- package/dist/{brush-bb4ae2fb.js → brush-9faa7ae7.js} +1 -1
- package/dist/{categorical-db9b0175.js → categorical-1dea48ba.js} +1 -1
- package/dist/{condition-4e788f7d.js → condition-ebac4f75.js} +1 -1
- package/dist/{controls-3c1691d7.js → controls-268e40e6.js} +1 -1
- package/dist/{controls.btns-5b1240c8.js → controls.btns-5bf9e7d7.js} +1 -1
- package/dist/controls.config-2f0fa061.js +1 -0
- package/dist/{cuminc-c4db28f0.js → cuminc-8dffb765.js} +1 -1
- package/dist/{customdata.inputui-f9234d1f.js → customdata.inputui-b229d3a0.js} +1 -1
- package/dist/{dataDownload-a4dfa2d0.js → dataDownload-452ae3cd.js} +1 -1
- package/dist/{databrowser.ui-a64bab0c.js → databrowser.ui-2197fc73.js} +1 -1
- package/dist/{density-69a732f6.js → density-09feb0c9.js} +1 -1
- package/dist/{dictionary-e2232e84.js → dictionary-a132a3cc.js} +1 -1
- package/dist/{drag-d8daa62f.js → drag-2e9c80bb.js} +1 -1
- package/dist/{e2pca-f9324654.js → e2pca-4f1648e3.js} +1 -1
- package/dist/{ep-a5c1ee3a.js → ep-1d4c58b4.js} +1 -1
- package/dist/{facet-98971c68.js → facet-fa4fe49c.js} +1 -1
- package/dist/{fusion.parse-466ded6d.js → fusion.parse-7dfd6988.js} +1 -1
- package/dist/{geneExpClustering-66c05fb1.js → geneExpClustering-ed9121b8.js} +1 -1
- package/dist/{geneExpression-ff46a389.js → geneExpression-394672ff.js} +1 -1
- package/dist/{geneExpression-b5d0261f.js → geneExpression-66208299.js} +1 -1
- package/dist/geneExpression-c61e8f1c.js +1 -0
- package/dist/{geneORA-f1a90d02.js → geneORA-9456872c.js} +1 -1
- package/dist/{geneVariant-1cf17b3b.js → geneVariant-beaf9adb.js} +1 -1
- package/dist/{geneVariant-d0b9e1cb.js → geneVariant-f17cda85.js} +1 -1
- package/dist/{genefusion.ui-89a727ea.js → genefusion.ui-9238ec7f.js} +1 -1
- package/dist/{genesearch-41cb55ce.js → genesearch-ffd88bf2.js} +1 -1
- package/dist/{geneset-b63496eb.js → geneset-0315daf8.js} +1 -1
- package/dist/{genomeBrowser-ec8fbddc.js → genomeBrowser-608b924e.js} +1 -1
- package/dist/{genomeBrowser.controls-2dcaf4f5.js → genomeBrowser.controls-2601cab5.js} +1 -1
- package/dist/{groupsetting-3fef59f9.js → groupsetting-e3a4ecd5.js} +1 -1
- package/dist/{gsea-3075c82c.js → gsea-0c0cf8de.js} +1 -1
- package/dist/{hierCluster-33a828a1.js → hierCluster-7ab62ca5.js} +1 -1
- package/dist/hierCluster.config-f4daaf92.js +1 -0
- package/dist/{hierCluster.interactivity-6d453881.js → hierCluster.interactivity-7f475259.js} +1 -1
- package/dist/{hierCluster.renderers-6279d7fb.js → hierCluster.renderers-19b79639.js} +1 -1
- package/dist/{html.legend-fac5cb07.js → html.legend-80b2b3ec.js} +1 -1
- package/dist/{imagePlot-38254245.js → imagePlot-1ef24562.js} +1 -1
- package/dist/{lasso-e8b9500e.js → lasso-1a02a545.js} +1 -1
- package/dist/launch.adhoc-e124c993.js +1 -0
- package/dist/{leftlabel.sample-afcdcefd.js → leftlabel.sample-59f99ef5.js} +1 -1
- package/dist/{legacyDataset-3b08c91a.js → legacyDataset-fbaa5ebb.js} +1 -1
- package/dist/{log-4d84c357.js → log-c26b6cfd.js} +1 -1
- package/dist/{lollipop-64c5cdfc.js → lollipop-3aebe5d3.js} +1 -1
- package/dist/{maf-fd4ffbd0.js → maf-c439c851.js} +1 -1
- package/dist/{maftimeline-3e892da7.js → maftimeline-0da64e54.js} +1 -1
- package/dist/{matrix-e371888a.js → matrix-38cd47c3.js} +1 -1
- package/dist/{matrix.cells-eb4110a7.js → matrix.cells-a018d731.js} +1 -1
- package/dist/{matrix.cluster-0df274ed.js → matrix.cluster-a6e713e8.js} +1 -1
- package/dist/{matrix.config-3ef822b9.js → matrix.config-2c550b5d.js} +1 -1
- package/dist/matrix.controls-42ad4912.js +1 -0
- package/dist/{matrix.data-27b8e3a9.js → matrix.data-2b814c9f.js} +1 -1
- package/dist/{matrix.dom-1bbe1f39.js → matrix.dom-1e0da5b3.js} +1 -1
- package/dist/{matrix.groups-67606700.js → matrix.groups-824a7244.js} +1 -1
- package/dist/{matrix.interactivity-cdcc56c9.js → matrix.interactivity-1cb56534.js} +1 -1
- package/dist/{matrix.layout-857cd336.js → matrix.layout-47e44357.js} +1 -1
- package/dist/{matrix.legend-09f6dc57.js → matrix.legend-9af0c757.js} +1 -1
- package/dist/{matrix.renderers-d392fb69.js → matrix.renderers-337ce240.js} +1 -1
- package/dist/{matrix.serieses-b03b62aa.js → matrix.serieses-7b7184c9.js} +1 -1
- package/dist/{matrix.sort-9440c86a.js → matrix.sort-1ac05842.js} +1 -1
- package/dist/{matrix.sorterUi-2c5eb35f.js → matrix.sorterUi-1c60c145.js} +1 -1
- package/dist/{mavb-9d86df89.js → mavb-da8d1a0a.js} +1 -1
- package/dist/{mds.fimo-bffccb9f.js → mds.fimo-8604c3f8.js} +1 -1
- package/dist/{mds.samplescatterplot-b3908cc7.js → mds.samplescatterplot-3f09ae0e.js} +1 -1
- package/dist/{mds.survivalplot-9ad7dabc.js → mds.survivalplot-1d8f2b7e.js} +1 -1
- package/dist/{metaboliteIntensity-ec3176f4.js → metaboliteIntensity-bbb23c76.js} +1 -1
- package/dist/niceNumLabels-29a7c6ca.js +1 -0
- package/dist/{nodrag-ab7d5a9f.js → nodrag-b2737073.js} +1 -1
- package/dist/{notify-59f61230.js → notify-0cb8904f.js} +1 -1
- package/dist/{numeric-4853b665.js → numeric-24dacbee.js} +1 -1
- package/dist/{numeric.binary-1dd9a2b4.js → numeric.binary-f382cc98.js} +1 -1
- package/dist/{numeric.continuous-ed132eea.js → numeric.continuous-6feb34a7.js} +1 -1
- package/dist/{numeric.discrete-d780d076.js → numeric.discrete-ed10bbc1.js} +1 -1
- package/dist/{numeric.spline-abe07708.js → numeric.spline-a35cfbf0.js} +1 -1
- package/dist/{numeric.toggle-647423dd.js → numeric.toggle-2f98d6e5.js} +1 -1
- package/dist/oncomatrix-c0b2d635.js +1 -0
- package/dist/{parseData-567f3d70.js → parseData-292648dd.js} +1 -1
- package/dist/{plot.2dvaf-4016e75e.js → plot.2dvaf-6ae22dc1.js} +1 -1
- package/dist/plot.app-2a805759.js +1 -0
- package/dist/plot.barplot-34841e70.js +1 -0
- package/dist/{plot.boxplot-76229491.js → plot.boxplot-87ac2ce9.js} +1 -1
- package/dist/{plot.brainImaging-39b80a1c.js → plot.brainImaging-32a484b6.js} +1 -1
- package/dist/{plot.disco-9a544f9a.js → plot.disco-1fdfee3c.js} +1 -1
- package/dist/{plot.dzi-f1658ebf.js → plot.dzi-e3d0f610.js} +1 -1
- package/dist/{plot.ssgq-aeb2dabc.js → plot.ssgq-d33113d5.js} +1 -1
- package/dist/{plot.vaf2cov-ba8332ed.js → plot.vaf2cov-9f4f1776.js} +1 -1
- package/dist/{plot.wsi-2d802557.js → plot.wsi-dea124a7.js} +1 -1
- package/dist/{profileBarchart-72adc533.js → profileBarchart-58f0a8c0.js} +1 -1
- package/dist/{profileHome-37fd52e5.js → profileHome-7f404152.js} +1 -1
- package/dist/{profilePlot-0b897a05.js → profilePlot-4db8ca78.js} +1 -1
- package/dist/{profilePolar-a7248d48.js → profilePolar-50b8e40e.js} +1 -1
- package/dist/{profileRadar-1ba5d8fd.js → profileRadar-fff0b004.js} +1 -1
- package/dist/{profileRadarFacility-452e76ef.js → profileRadarFacility-d6d34c15.js} +1 -1
- package/dist/{profileSummary-7f0eacf0.js → profileSummary-04b8b15b.js} +1 -1
- package/dist/{recover-74f2e965.js → recover-299ffdb3.js} +1 -1
- package/dist/{regression.inputs-ff00f74e.js → regression.inputs-14df7c31.js} +1 -1
- package/dist/{regression.inputs.values.table-1753d56b.js → regression.inputs.values.table-d79efa9e.js} +1 -1
- package/dist/{regression.results-6f85a5dc.js → regression.results-4767144e.js} +1 -1
- package/dist/{renderPvalueTable-17558d6a.js → renderPvalueTable-002cc8ff.js} +1 -1
- package/dist/{sampleScatter-97917406.js → sampleScatter-55d9eb74.js} +1 -1
- package/dist/{sampleScatter.rendererThree-4649d1ec.js → sampleScatter.rendererThree-ef289434.js} +2 -2
- package/dist/{sampleView-f86dc5ea.js → sampleView-1dff3fca.js} +1 -1
- package/dist/{samplelst-4a5512df.js → samplelst-d2db0f24.js} +1 -1
- package/dist/{samplematrix-1192e5e2.js → samplematrix-0841387f.js} +1 -1
- package/dist/{scatter-cc1b0d07.js → scatter-f8285107.js} +1 -1
- package/dist/{select2Terms-d4f6ed9e.js → select2Terms-d48d037e.js} +1 -1
- package/dist/{selectGenomeWithTklst-b5cfd153.js → selectGenomeWithTklst-9af86d31.js} +1 -1
- package/dist/{singleCellCellType-d8c58253.js → singleCellCellType-fd1606b8.js} +1 -1
- package/dist/{singleCellGeneExpression-b7209531.js → singleCellGeneExpression-537f1157.js} +1 -1
- package/dist/{singleCellPlot-e6f83b2a.js → singleCellPlot-eff5760b.js} +1 -1
- package/dist/{singlecell-321dd973.js → singlecell-38336cbc.js} +1 -1
- package/dist/{singlecell-879235b3.js → singlecell-87b4b9a9.js} +1 -1
- package/dist/{snp-b046b7e6.js → snp-b81ef740.js} +1 -1
- package/dist/snp-f6123244.js +1 -0
- package/dist/{snplocus-61ff1c10.js → snplocus-acafb1ba.js} +1 -1
- package/dist/{spliceevent.a53ss.diagram-1a84db58.js → spliceevent.a53ss.diagram-5f8352eb.js} +1 -1
- package/dist/{spliceevent.exonskip.diagram-da10648b.js → spliceevent.exonskip.diagram-0d30a735.js} +1 -1
- package/dist/spliceevent.exonskip.getdefault-237c481c.js +1 -0
- package/dist/{spliceevent.noeventdiagram-1d6d790d.js → spliceevent.noeventdiagram-df9ce4bc.js} +1 -1
- package/dist/{spliceevent.phrase-2ca0ce59.js → spliceevent.phrase-a8401d53.js} +1 -1
- package/dist/{stattable-c5f12d9c.js → stattable-46cde32c.js} +1 -1
- package/dist/{style.gdc-5b7d90c6.js → style.gdc-72d730f2.js} +1 -1
- package/dist/{summary-0624f5e6.js → summary-a6c15c9e.js} +1 -1
- package/dist/{sunburst-30295714.js → sunburst-fe95832e.js} +1 -1
- package/dist/{survival-fcc7719f.js → survival-52714cd3.js} +1 -1
- package/dist/survival-57ff3c03.js +1 -0
- package/dist/{svg.download-e89a7369.js → svg.download-f4aa48e4.js} +1 -1
- package/dist/{svg.legend-c93f2980.js → svg.legend-749348e0.js} +1 -1
- package/dist/{svgraph-6ab3011b.js → svgraph-b46f1f92.js} +1 -1
- package/dist/{svmr-3ad3d600.js → svmr-9a76c6d4.js} +1 -1
- package/dist/{table-f50a9344.js → table-0daf2b89.js} +1 -1
- package/dist/{table-4d3a771e.js → table-bf40249b.js} +1 -1
- package/dist/{termInfo-d0a9e65f.js → termInfo-491b10af.js} +1 -1
- package/dist/{termdb.bins-01e8cce6.js → termdb.bins-39d11f24.js} +1 -1
- package/dist/termsetting-492eefa7.js +1 -0
- package/dist/{tk-e74c9beb.js → tk-ac524564.js} +1 -1
- package/dist/{toggleButtons-04c5ad7c.js → toggleButtons-c4d6f260.js} +1 -1
- package/dist/{tp.ui-7b24f0ef.js → tp.ui-0a476325.js} +1 -1
- package/dist/tvs.density-034b506d.js +1 -0
- package/dist/{tvs.geneVariant-418ed4ff.js → tvs.geneVariant-c59c8b54.js} +1 -1
- package/dist/{tvs.numeric-de14101f.js → tvs.numeric-aa1f892f.js} +1 -1
- package/dist/{tvs.samplelst-15bb62f1.js → tvs.samplelst-515f27b9.js} +1 -1
- package/dist/{uiUtils-ff2d4a6a.js → uiUtils-ea7dfea2.js} +1 -1
- package/dist/{variantBrowser-261373bf.js → variantBrowser-14d5c3f6.js} +1 -1
- package/dist/{vcf-145bf5dd.js → vcf-d357ce08.js} +1 -1
- package/dist/{violin-e647aac9.js → violin-74d26b75.js} +1 -1
- package/dist/{violin.interactivity-30a239fe.js → violin.interactivity-bf40ddde.js} +1 -1
- package/dist/{violin.renderer-e29d2700.js → violin.renderer-469fa0ff.js} +1 -1
- package/dist/{violinRenderer-08b3b58c.js → violinRenderer-14fa200d.js} +1 -1
- package/dist/{viridis-d86ad99b.js → viridis-cc59f478.js} +1 -1
- package/dist/{y-06b0d47c.js → y-59cbff5e.js} +1 -1
- package/dist/{zoom-d6ef6f3f.js → zoom-f445cfef.js} +1 -1
- package/package.json +1 -1
- package/dist/app-f031940d.js +0 -1
- package/dist/block.lazyload-eda77d9b.js +0 -1
- package/dist/controls.config-81cd5749.js +0 -1
- package/dist/geneExpression-5685eae2.js +0 -1
- package/dist/hierCluster.config-fa799d06.js +0 -1
- package/dist/launch.adhoc-2799109b.js +0 -1
- package/dist/matrix.controls-42bb2063.js +0 -1
- package/dist/niceNumLabels-5f45218a.js +0 -1
- package/dist/oncomatrix-7ac995a2.js +0 -1
- package/dist/plot.app-d6fe76e2.js +0 -1
- package/dist/plot.barplot-d2fc5020.js +0 -1
- package/dist/snp-541ec14d.js +0 -1
- package/dist/spliceevent.exonskip.getdefault-8028e522.js +0 -1
- package/dist/survival-816e055a.js +0 -1
- package/dist/termsetting-ad8c4f3a.js +0 -1
- package/dist/tvs.density-b2790080.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{h as e,P as t,b as s}from"./app-
|
|
1
|
+
import{h as e,P as t,b as s}from"./app-6fb77603.js";import{G as i}from"./recover-299ffdb3.js";import{f as o}from"./termsetting-492eefa7.js";import"./FilterRxComp-02e68f1b.js";import"./table-0daf2b89.js";import"./tslib.es6-c3c2d88f.js";import"./partjson.esm-b3f1fc21.js";import"./termdb.bins-39d11f24.js";import"./FilterStateless-16a33070.js";import"./app-d215327f.js";import"./termInfo-491b10af.js";import"./toggleButtons-c4d6f260.js";import"path";import"./genesearch-ffd88bf2.js";import"./checkbox-96437f4d.js";import"./rehydrateFilter-12d118cb.js";class a{constructor(e){this.type="geneset";this.dom={holder:e.holder.style("position","relative").style("min-height","300px"),body:e.holder.append("div"),loadingOverlay:e.holder.append("div").attr("class","sjpp-spinner").style("display","none").style("position","absolute").style("background-color","#fff").style("z-index",10).style("opacity","0.5")}}init(){if(this.opts.reactsTo)this.reactsTo=this.opts.reactsTo}getState(e){const t=e.plots.find((e=>e.id===this.id));return{vocab:e.vocab,filter0:e.termfilter.filter0,config:t}}async main(){this.dom.body.selectAll("*").remove();this.dom.loadingOverlay.style("display","");this.noWait().catch(console.warn)}async noWait(){const e=new AbortController;try{const[t,s]=await this.api.detectStale((()=>this.getGenes({signal:e.signal})),{abortCtrl:e});if(s)return;if(!t?.length)this.render();else this.opts.callback(this.api,t)}catch(e){if(e=="stale sequenceId"||e.name=="AbortError")return;else{if(this.opts.showWaitMessage){this.dom.body.style("margin","20px").html(e)}throw e}}}async getGenes({signal:e}){this.opts.genes;const t=this.state.config.settings;if(this.opts.genes){if(!Array.isArray(this.opts.genes)||this.opts.genes.length==0)throw".genes[] is not non-empty array";return await this.getTwLst(this.opts.genes)}let i;if(this.opts.showWaitMessage){i=this.dom.body.append("div").style("margin","20px");this.opts.showWaitMessage(i)}let o;if(this.opts.mode=="geneVariant"){const i={};if(t.maxGenes)i.maxGenes=t.maxGenes;if(t.geneFilter)i.geneFilter=t.geneFilter;if(this.state.filter0)i.filter0=this.state.filter0;o=await s("gdc/topMutatedGenes",{body:i,signal:e},{cacheAs:"decoded"})}else if(this.opts.mode=="geneExpression"){const i={genome:this.state.vocab.genome,dslabel:this.state.vocab.dslabel,maxGenes:t.maxGenes};if(this.state.filter0)i.filter0=this.state.filter0;o=await s("termdb/topVariablyExpressedGenes",{body:i,signal:e},{cacheAs:"decoded"})}else{throw"unknown opts.mode [geneset.js]"}if(!o)throw"invalid server response";if(o.error)throw o.error;if(!o.genes)return[];i.remove();this.dom.loadingOverlay?.style("display","none");return await this.getTwLst(o.genes)}async getTwLst(e){return await Promise.all(e.map((async e=>typeof e=="string"?await o({term:{gene:e,type:this.opts.mode}},this.app.vocabApi):await o({term:{gene:e.gene||e.name,type:this.opts.mode}},this.app.vocabApi))))}async render(){if(!this.dom?.holder)return;this.dom.body.append("p").text(`No default genes. Please change the cohort or define a gene set to launch ${this.state.config.toolName}.`);new i({holder:this.dom.body.append("div"),genome:this.opts.genome,mode:this.opts.mode,vocabApi:this.app.vocabApi,callback:async e=>{const t=await Promise.all(e.geneList.map((async e=>o({term:{gene:e.gene||e.name||e,type:"geneVariant"}},this.app.vocabApi))));this.opts.callback(this.api,t)}});this.dom.loadingOverlay?.style("display","none")}destroy(){this.dom.holder.selectAll("*").remove();this.dom.holder.remove();for(const e in this.dom){delete this.dom[e]}}}const n=e(a);const r=n;async function l(e={},s){const i=t({chartType:"geneset"},e);return i}export{r as componentInit,n as genesetInit,l as getPlotConfig};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{M as t,h as e,P as s,y as a,b as o,f as i}from"./app-
|
|
1
|
+
import{M as t,h as e,P as s,y as a,b as o,f as i}from"./app-6fb77603.js";import{a as n}from"./genesearch-ffd88bf2.js";import"./termsetting-492eefa7.js";import{g as r}from"./FilterRxComp-02e68f1b.js";import{mayUpdateGroupTestMethodsIdx as l,gbControlsInit as c}from"./genomeBrowser.controls-2601cab5.js";import"./tslib.es6-c3c2d88f.js";import"path";import"./table-0daf2b89.js";import"./partjson.esm-b3f1fc21.js";import"./termdb.bins-39d11f24.js";import"./checkbox-96437f4d.js";import"./FilterStateless-16a33070.js";import"./toggleButtons-c4d6f260.js";import"./app-d215327f.js";import"./termInfo-491b10af.js";const p=new t({padding:"0px"});class f{constructor(){this.type="genomeBrowser"}async init(){const e=this.opts.holder.append("div");this.opts.header.append("div").style("opacity",.6).style("padding-left","10px").style("font-size","0.75em").text("GENOME BROWSER");const s=e.append("div");const a=e.append("div").style("margin-left","25px");a.append("span").html(" ");this.dom={tip:new t,holder:e,errDiv:s,loadingDiv:a.append("span").text("Loading..."),controlsDiv:e.append("div").style("margin-left","25px"),blockHolder:e.append("div")};this.components={gbControls:await c({app:this.app,id:this.id,holder:this.dom.controlsDiv})}}getState(t){const e=t.plots.find((t=>t.id===this.id));if(!e)throw`No plot with id='${this.id}' found`;return{config:e,termdbConfig:t.termdbConfig,filter:r(t.termfilter.filter)}}async main(){this.dom.loadingDiv.style("display","inline");try{if(this.state.config?.snvindel?.details){await this.launchCustomMds3tk()}else if(this.state.config?.trackLst){await this.launchBlockWithTracks(this.state.config.trackLst)}else{const t={type:"mds3",dslabel:this.app.opts.state.vocab.dslabel,newChartHolder:this.opts.plotDiv};if(this.state.filter?.lst?.length>0){t.filterObj=structuredClone(this.state.filter)}await this.launchBlockWithTracks([t])}this.updateLDtrack()}catch(t){a(this.dom.errDiv,t.message||t);if(t.stack)console.log(t.stack)}this.dom.loadingDiv.style("display","none")}async launchCustomMds3tk(){const t=await this.preComputeData();this.mayDisplaySampleCountInControls(t);if(this.blockInstance){const e=this.blockInstance.tklst.find((t=>t.type=="mds3"));e.custom_variants=t.mlst;b(this,e.skewer.viewModes.find((t=>t.type=="numeric")));e.load();return}const e={type:"numeric",inuse:true,byAttribute:"nm_axis_value"};b(this,e);const s={type:"mds3",dslabel:this.app.opts.state.vocab.dslabel,name:"Variants",custom_variants:t.mlst,skewerModes:[e]};await this.launchBlockWithTracks([s])}mayDisplaySampleCountInControls(t){if(Number.isInteger(t.totalSampleCount_group1)||Number.isInteger(t.totalSampleCount_group2)){const e={appState:{plots:[{id:this.components.gbControls.id,_partialData:{groupSampleCounts:[t.totalSampleCount_group1,t.totalSampleCount_group2],pop2average:t.pop2average}}]}};this.components.gbControls.update(e)}}async preComputeData(){const t={genome:this.app.opts.state.vocab.genome,dslabel:this.app.opts.state.vocab.dslabel,for:"mds3variantData",chr:this.state.config.geneSearchResult.chr,start:this.state.config.geneSearchResult.start,stop:this.state.config.geneSearchResult.stop,details:this.state.config.snvindel.details,filter:this.state.filter,variantFilter:this.state.config.variantFilter?.filter};const e=await o("termdb",{body:t});if(e.error)throw e.error;return e}async launchBlockWithTracks(t){this.dom.blockHolder.selectAll("*").remove();const e={holder:this.dom.blockHolder,genome:this.app.opts.genome,nobox:true,tklst:await this.getTracks2show(t),debugmode:true};if(this.state.termdbConfig?.queries.defaultBlock2GeneMode&&this.state.config.geneSearchResult.geneSymbol){e.query=this.state.config.geneSearchResult.geneSymbol;const t=await import("./app-6fb77603.js").then((function(t){return t.c3}));await t.default(e);this.blockInstance=e.__blockInstance;this.opts.header.text(e.query);return}e.chr=this.state.config.geneSearchResult.chr;e.start=this.state.config.geneSearchResult.start;e.stop=this.state.config.geneSearchResult.stop;i(this.app.opts.genome,e.tklst);e.onCoordinateChange=async t=>{await this.app.dispatch({type:"plot_edit",id:this.id,config:{geneSearchResult:{chr:t[0].chr,start:t[0].start,stop:t[0].stop}}})};const s=await import("./block-75d4ff92.js").then((function(t){return t.c}));this.blockInstance=new s.Block(e)}async getTracks2show(t){const e=[];for(const s of t){if(s.isfacet){const t=JSON.parse(JSON.stringify(s));if(!this.app.opts.genome.tkset)this.app.opts.genome.tkset=[];if(!t.tklst)throw".tklst[] missing from a facet table";if(!Array.isArray(t.tklst))throw".tklst[] not an array from a facet table";for(const s of t.tklst){if(!s.assay)throw".assay missing from a facet track";if(!s.sample)throw".sample missing from a facet track";s.tkid=Math.random().toString();if(s.defaultShown)e.push(s)}this.app.opts.genome.tkset.push(t)}else{e.push(s)}}return e}updateLDtrack(){if(!this.state.config.ld)return;if(!this.blockInstance)return;for(const t of this.state.config.ld.tracks){const e=this.blockInstance.tklst.findIndex((e=>e.file==t.file0));if(t.shown){if(e==-1){const e={type:"ld",name:t.name,file:t.file0};const s=this.blockInstance.block_addtk_template(e);this.blockInstance.tk_load(s)}continue}if(e==-1)continue;this.blockInstance.tk_remove(e)}}}const d=e(f);const h=d;async function m(t,e){try{return await g(e.vocabApi,t)}catch(t){throw`${t} [genomeBrowser getPlotConfig()]`}}function u(t,e){const s=e.app.opts.genome;if(typeof s!="object")throw"chartsInstance.app.opts.genome not an object and needed for gene search box";const a={tip:p,genome:s,row:t.append("div").style("margin","10px"),callback:async()=>{try{const t=await g(e.app.vocabApi);t.chartType="genomeBrowser";t.geneSearchResult=o;const s={config:t};e.prepPlot(s)}catch(e){t.append("div").text("Error: "+(e.message||e));console.log(e)}}};if(!e.state.termdbConfig.queries.defaultBlock2GeneMode){a.defaultCoord=e.state.termdbConfig.queries.defaultCoord}else{a.searchOnly="gene"}const o=n(a)}async function g(t,e){const a=await t.getMds3queryDetails();const o=await t.get_variantFilter();if(o?.filter){a.variantFilter=o}const i=e?s(a,e):a;if(i.snvindel?.details){l({state:{config:i}},i.snvindel.details)}return i}function b(t,e){delete e.tooltipPrintValue;const[s,a]=t.state.config.snvindel.details.groups;if(s&&a){if(s.type=="info"||a.type=="info"){e.label="Value difference";return}const o=t.state.config.snvindel.details.groupTestMethods[t.state.config.snvindel.details.groupTestMethodsIdx];e.label=o.axisLabel||o.name;if(o.name=="Allele frequency difference"){e.tooltipPrintValue=t=>[{k:"AF diff",v:t.nm_axis_value}]}else if(o.name=="Fisher's exact test"){e.tooltipPrintValue=t=>[{k:"p-value",v:t.p_value}]}else;return}if(s.type=="info"){const a=t.state.config.variantFilter?.terms?.find((t=>t.id==s.infoKey));e.label=a?.name||s.infoKey;e.tooltipPrintValue=t=>[{k:e.label,v:t.info[s.infoKey]}];return}if(s.type=="filter"){e.label="Allele frequency";e.tooltipPrintValue=t=>[{k:"Allele frequency",v:t.nm_axis_value}];return}if(s.type=="population"){e.label="Allele frequency";e.tooltipPrintValue=t=>[{k:"Allele frequency",v:t.nm_axis_value}];return}throw"unknown type of the only group"}export{h as componentInit,d as genomeBrowserInit,m as getPlotConfig,u as makeChartBtnMenu};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{M as t,h as e}from"./app-2cd97738.js";import{m as i}from"./checkbox-96437f4d.js";import{f as n}from"./FilterStateless-b1c6ee04.js";import{g as s,a as o}from"./FilterRxComp-0f35b322.js";import"./termsetting-ad8c4f3a.js";import{T as a}from"./toggleButtons-04c5ad7c.js";import{appInit as r}from"./app-686b9547.js";import"./table-f50a9344.js";import"./tslib.es6-c3c2d88f.js";import"./partjson.esm-b3f1fc21.js";import"./termdb.bins-01e8cce6.js";import"path";import"./termInfo-d0a9e65f.js";const l=new t({padding:"0px"});class p{constructor(t){this.type="gbControls";this.filterUI={}}async init(t){this.initUI(this.getState(t))}getState(t){const e=t.plots.find((t=>t.id===this.id));if(!e)throw`No plot with id='${this.id}' found`;if(e._partialData){this._partialData=e._partialData;return}return{config:e,termdbConfig:t.termdbConfig,filter:s(t.termfilter.filter)}}async main(){const t=this.state.config.snvindel?.details?.groups;if(t){this.render1group(0);this.render1group(1);if(this.state.config.snvindel.details.groupTestMethods){this.renderTestMethod()}}if(this.state.config.variantFilter){if(!this.variantFilterRendered){this.variantFilterRendered=true;this.makeVariantFilter()}}}async makeVariantFilter(){n({joinWith:this.state.config.variantFilter.opts.joinWith,emptyLabel:"+Add Filter",holder:this.dom.variantFilterHolder,vocab:{terms:this.state.config.variantFilter.terms},callback:async t=>{await this.app.dispatch({type:"plot_edit",id:this.id,config:{variantFilter:{filter:t}}})}}).main(this.state.config.variantFilter.filter)}render1group(t){const e=this.state.config.snvindel.details.groups[t];const i=t==0?this.dom.group1div:this.dom.group2div;let n=false;if(e?.type=="filter"&&this.filterUI[t]){n=true}else{delete this.filterUI[t];i.selectAll("*").remove()}if(!e){h(this,t,i);return}if(!n)m(this,t,i);if(e.type=="info")return c(this,t,e,i);if(e.type=="population")return f(this,t,e,i);if(e.type=="filter")return u(this,t,e,i);throw"render1group: unknown group type"}renderTestMethod(){const t=this.dom.testMethodDiv;t.selectAll("*").remove();const[e,i]=this.state.config.snvindel.details.groups;if(!i){return}t.append("span").text("TEST METHOD").style("font-size",".8em").style("opacity",.6);if(e.type!="filter"&&i.type!="filter"){t.append("span").style("padding-left","10px").text("Value difference").style("opacity",.6);return}const n=t.append("select").style("margin-left","10px").on("change",(()=>{this.app.dispatch({type:"plot_edit",id:this.id,config:{snvindel:{details:{groupTestMethodsIdx:n.property("selectedIndex")}}}})}));for(const t of this.state.config.snvindel.details.groupTestMethods){n.append("option").text(t.name)}n.property("selectedIndex",this.state.config.snvindel.details.groupTestMethodsIdx)}initUI(t){this.dom={};const e=[];if(t.config.snvindel?.details){e.push({label:"Variant values",active:true})}if(t.config.variantFilter){e.push({label:"Variant filter"})}if(t.config.ld){e.push({label:"LD map"})}if(e.length==0){return}const n=new a({holder:this.opts.holder.append("div").style("border-bottom","solid 1px #ccc").style("padding-bottom","20px"),tabs:e});n.main();{const t=e[0].contentHolder.append("div");this.dom.group1div=t.append("div");this.dom.group2div=t.append("div");this.dom.testMethodDiv=t.append("div").style("margin-top","3px")}let s=1;if(t.config.variantFilter){this.dom.variantFilterHolder=e[s++].contentHolder.append("div").style("white-space","normal")}if(t.config.ld){const n=structuredClone(t.config.ld.tracks);const o=e[s++].contentHolder.append("div");o.append("div").text("Show/hide linkage disequilibrium map from an ancestry:").style("opacity",.5);for(const[t,e]of n.entries()){i({labeltext:e.name,checked:e.shown,holder:o,callback:()=>{n[t].shown=!n[t].shown;this.app.dispatch({type:"plot_edit",id:this.id,config:{ld:{tracks:n}}})}})}}}}const d=e(p);function c(t,e,i,n){let s=i.infoKey;if(t.state.config.variantFilter?.terms){const e=t.state.config.variantFilter.terms.find((t=>t.id==i.infoKey));if(e&&e.name)s=e.name}n.append("span").text(s).attr("class","sja_menuoption").on("click",(n=>{if(t.state.config.variantFilter.terms.length<=1){return}l.clear().showunder(n.target).d.append("div").text("Replace with:").style("margin","10px").style("font-size",".8em");for(const n of t.state.config.variantFilter.terms){if(n.type!="integer"&&n.type!="float")continue;if(n.id==i.infoKey)continue;l.d.append("div").text(n.name).attr("class","sja_menuoption").on("click",(()=>{l.hide();const i=structuredClone(t.state.config.snvindel.details.groups);i[e].infoKey=n.id;i[e].type="info";t.app.dispatch({type:"plot_edit",id:t.id,config:{snvindel:{details:{groups:i}}}})}))}}));n.append("span").text("PER-VARIANT NUMERICAL VALUES").style("font-size",".7em").style("opacity",.6).style("margin-left","10px")}function f(t,e,i,n){n.append("span").text(i.label).attr("class","sja_menuoption").on("click",(n=>{if(t.state.config.snvindel.populations.length<=1){return}l.clear().showunder(n.target).d.append("div").text("Replace with:").style("margin","10px").style("font-size",".8em");for(const n of t.state.config.snvindel.populations){if(n.key==i.key)continue;l.d.append("div").text(n.label).attr("class","sja_menuoption").on("click",(()=>{l.hide();const i=structuredClone(t.state.config.snvindel.details.groups);i[e]=structuredClone(n);i[e].type="population";t.app.dispatch({type:"plot_edit",id:t.id,config:{snvindel:{details:{groups:i}}}})}))}}));n.append("span").text(`POPULATION${i.adjust_race?", RACE ADJUSTED":""}`).style("font-size",".7em").style("margin-left","10px").style("opacity",.6);if(t._partialData?.pop2average){if(t.state.config.snvindel.details.groups[e==1?0:1]?.type=="filter"){const s=[];for(const e in t._partialData.pop2average){const i=t._partialData.pop2average[e];if(!Number.isFinite(i))continue;s.push(`${e}=${i.toFixed(2)}`)}if(s.length){n.append("span").text(`Group ${e==1?1:2} average admixture: ${s.join(", ")}`).style("margin-left","20px").attr("class","sja_clbtext").on("click",(t=>{l.clear().showunder(t.target).d.append("div").style("margin","10px").style("width","500px").html(`These are average admixture coefficients based on current Group ${e==1?1:2} samples.\n\t\t\t\t\t\tThey are used to adjust variant allele counts of matching ancestries from <span class=sja_menuoption style="padding:2px 5px">${i.label}</span>,\n\t\t\t\t\t\tso that the adjusted allele counts can be compared against Group ${e==1?1:2} allele counts.\n\t\t\t\t\t\tThis allows to account for ancestry composition difference between the two groups.\n\t\t\t\t\t\t`)}))}}}}async function u(t,e,i,s){if(!t.filterUI[e]){t.filterUI[e]=await n({holder:s,vocab:t.app.opts.state.vocab,emptyLabel:"Entire cohort",termdbConfig:t.state.termdbConfig,callback:async i=>{const n=JSON.parse(JSON.stringify(t.state.config.snvindel.details.groups));n[e].filter=i;t.app.dispatch({type:"plot_edit",id:t.id,config:{snvindel:{details:{groups:n}}}})}})}t.filterUI[e].main(g(t,i));s.select(".sjpp-gb-filter-count").remove();const o=t._partialData?.groupSampleCounts?.[e];if(Number.isInteger(o)){s.append("span").attr("class","sjpp-gb-filter-count").style("margin-left","10px").style("opacity",.5).style("font-size",".9em").text("n="+o)}}function g(t,e){const i=structuredClone(t.state.filter||{type:"tvslst",in:true,join:"",lst:[]});const n=structuredClone(e.filter);n.tag="filterUiRoot";i.lst.push(n);i.join="and";return i}function h(t,e,i){i.append("div").style("display","inline-block").text("Create Group 2").attr("class","sja_clbtext").style("margin","10px").on("click",(i=>{l.showunder(i.target).clear();y(t,e,l.d)}))}function m(t,e,i){i.append("div").style("display","inline-block").text("Group "+(e+1)).attr("class","sja_menuoption").style("margin-right","10px").on("click",(i=>{l.showunder(i.target).clear();if(e==0){y(t,0,l.d);return}l.d.append("div").text("Change").attr("class","sja_menuoption").style("border-radius","0px").on("click",(()=>{y(t,1,l.clear().d)}));l.d.append("div").text("Delete").attr("class","sja_menuoption").style("border-radius","0px").on("click",(()=>{l.hide();const e=[t.state.config.snvindel.details.groups[0]];t.app.dispatch({type:"plot_edit",id:t.id,config:{snvindel:{details:{groups:e}}}})}))}))}function y(t,e,i){const n={holder:i.append("div").style("margin","5px"),tabs:t.state.config.snvindel.details.groupTypes.map((t=>({label:t.name}))),tabsPosition:"vertical",linePosition:"right"};new a(n).main();for(const[i,s]of t.state.config.snvindel.details.groupTypes.entries()){const o=n.tabs[i];o.contentHolder.style("margin","10px");if(s.type=="info"){if(!t.state.config.variantFilter?.terms)throw"looking for snvindel info fields but self.state.config.variantFilter.terms[] missing";for(const i of t.state.config.variantFilter.terms){if(i.type!="integer"&&i.type!="float")continue;o.contentHolder.append("div").text(i.name).attr("class","sja_menuoption").on("click",(()=>{l.hide();const n={type:"info",infoKey:i.id};const s=v(t,n,e);b(t,s);t.app.dispatch({type:"plot_edit",id:t.id,config:{snvindel:{details:s}}})}))}continue}if(s.type=="population"){if(!t.state.config.snvindel.populations)throw"state.config.snvindel.populations missing";for(const i of t.state.config.snvindel.populations){o.contentHolder.append("div").text(i.label).attr("class","sja_menuoption").on("click",(()=>{l.hide();const n={type:"population",key:i.key,label:i.label,allowto_adjust_race:i.allowto_adjust_race,adjust_race:i.adjust_race};const s=v(t,n,e);b(t,s);t.app.dispatch({type:"plot_edit",id:t.id,config:{snvindel:{details:s}}})}))}continue}if(s.type=="filter"){const i={holder:o.contentHolder,vocabApi:t.app.vocabApi,state:{termfilter:{filter:t.state.filter}},tree:{click_term2select_tvs:i=>{l.hide();const n={type:"filter",filter:{in:true,join:"",type:"tvslst",lst:[{type:"tvs",tvs:i}]}};const s=v(t,n,e);b(t,s);t.app.dispatch({type:"plot_edit",id:t.id,config:{snvindel:{details:s}}})}}};const n=x(t);if(Number.isInteger(n))i.state.activeCohort=n;r(i);continue}throw"unknown group type"}}function v(t,e,i){const n={groups:JSON.parse(JSON.stringify(t.state.config.snvindel.details.groups))};n.groups[i]=e;return n}function b(t,e){if(e.groups.length!=2)return;const[i,n]=e.groups;if(i.type=="info"||n.type=="info"||i.type=="population"&&n.type=="population"){const i=t.state.config.snvindel.details.groupTestMethods.findIndex((t=>t.name=="Allele frequency difference"));if(i==-1)throw"Allele frequency difference not found";e.groupTestMethodsIdx=i}}function x(t){if(!t.state.config.filter)return;const e=o(t.config.filter,"cohortFilter");if(e&&t.state.termdbConfig.selectCohort){const i=e.tvs.values.map((t=>t.key)).sort().join(",");const n=t.state.termdbConfig.selectCohort.values.findIndex((t=>t.keys.sort().join(",")==i));if(n==-1)throw"subcohort key is not in selectCohort.values[]";return n}}export{d as gbControlsInit,b as mayUpdateGroupTestMethodsIdx};
|
|
1
|
+
import{M as t,h as e}from"./app-6fb77603.js";import{m as i}from"./checkbox-96437f4d.js";import{f as n}from"./FilterStateless-16a33070.js";import{g as s,a as o}from"./FilterRxComp-02e68f1b.js";import"./termsetting-492eefa7.js";import{T as a}from"./toggleButtons-c4d6f260.js";import{appInit as r}from"./app-d215327f.js";import"./table-0daf2b89.js";import"./tslib.es6-c3c2d88f.js";import"./partjson.esm-b3f1fc21.js";import"./termdb.bins-39d11f24.js";import"path";import"./termInfo-491b10af.js";const l=new t({padding:"0px"});class p{constructor(t){this.type="gbControls";this.filterUI={}}async init(t){this.initUI(this.getState(t))}getState(t){const e=t.plots.find((t=>t.id===this.id));if(!e)throw`No plot with id='${this.id}' found`;if(e._partialData){this._partialData=e._partialData;return}return{config:e,termdbConfig:t.termdbConfig,filter:s(t.termfilter.filter)}}async main(){const t=this.state.config.snvindel?.details?.groups;if(t){this.render1group(0);this.render1group(1);if(this.state.config.snvindel.details.groupTestMethods){this.renderTestMethod()}}if(this.state.config.variantFilter){if(!this.variantFilterRendered){this.variantFilterRendered=true;this.makeVariantFilter()}}}async makeVariantFilter(){n({joinWith:this.state.config.variantFilter.opts.joinWith,emptyLabel:"+Add Filter",holder:this.dom.variantFilterHolder,vocab:{terms:this.state.config.variantFilter.terms},callback:async t=>{await this.app.dispatch({type:"plot_edit",id:this.id,config:{variantFilter:{filter:t}}})}}).main(this.state.config.variantFilter.filter)}render1group(t){const e=this.state.config.snvindel.details.groups[t];const i=t==0?this.dom.group1div:this.dom.group2div;let n=false;if(e?.type=="filter"&&this.filterUI[t]){n=true}else{delete this.filterUI[t];i.selectAll("*").remove()}if(!e){h(this,t,i);return}if(!n)m(this,t,i);if(e.type=="info")return c(this,t,e,i);if(e.type=="population")return f(this,t,e,i);if(e.type=="filter")return u(this,t,e,i);throw"render1group: unknown group type"}renderTestMethod(){const t=this.dom.testMethodDiv;t.selectAll("*").remove();const[e,i]=this.state.config.snvindel.details.groups;if(!i){return}t.append("span").text("TEST METHOD").style("font-size",".8em").style("opacity",.6);if(e.type!="filter"&&i.type!="filter"){t.append("span").style("padding-left","10px").text("Value difference").style("opacity",.6);return}const n=t.append("select").style("margin-left","10px").on("change",(()=>{this.app.dispatch({type:"plot_edit",id:this.id,config:{snvindel:{details:{groupTestMethodsIdx:n.property("selectedIndex")}}}})}));for(const t of this.state.config.snvindel.details.groupTestMethods){n.append("option").text(t.name)}n.property("selectedIndex",this.state.config.snvindel.details.groupTestMethodsIdx)}initUI(t){this.dom={};const e=[];if(t.config.snvindel?.details){e.push({label:"Variant values",active:true})}if(t.config.variantFilter){e.push({label:"Variant filter"})}if(t.config.ld){e.push({label:"LD map"})}if(e.length==0){return}const n=new a({holder:this.opts.holder.append("div").style("border-bottom","solid 1px #ccc").style("padding-bottom","20px"),tabs:e});n.main();{const t=e[0].contentHolder.append("div");this.dom.group1div=t.append("div");this.dom.group2div=t.append("div");this.dom.testMethodDiv=t.append("div").style("margin-top","3px")}let s=1;if(t.config.variantFilter){this.dom.variantFilterHolder=e[s++].contentHolder.append("div").style("white-space","normal")}if(t.config.ld){const n=structuredClone(t.config.ld.tracks);const o=e[s++].contentHolder.append("div");o.append("div").text("Show/hide linkage disequilibrium map from an ancestry:").style("opacity",.5);for(const[t,e]of n.entries()){i({labeltext:e.name,checked:e.shown,holder:o,callback:()=>{n[t].shown=!n[t].shown;this.app.dispatch({type:"plot_edit",id:this.id,config:{ld:{tracks:n}}})}})}}}}const d=e(p);function c(t,e,i,n){let s=i.infoKey;if(t.state.config.variantFilter?.terms){const e=t.state.config.variantFilter.terms.find((t=>t.id==i.infoKey));if(e&&e.name)s=e.name}n.append("span").text(s).attr("class","sja_menuoption").on("click",(n=>{if(t.state.config.variantFilter.terms.length<=1){return}l.clear().showunder(n.target).d.append("div").text("Replace with:").style("margin","10px").style("font-size",".8em");for(const n of t.state.config.variantFilter.terms){if(n.type!="integer"&&n.type!="float")continue;if(n.id==i.infoKey)continue;l.d.append("div").text(n.name).attr("class","sja_menuoption").on("click",(()=>{l.hide();const i=structuredClone(t.state.config.snvindel.details.groups);i[e].infoKey=n.id;i[e].type="info";t.app.dispatch({type:"plot_edit",id:t.id,config:{snvindel:{details:{groups:i}}}})}))}}));n.append("span").text("PER-VARIANT NUMERICAL VALUES").style("font-size",".7em").style("opacity",.6).style("margin-left","10px")}function f(t,e,i,n){n.append("span").text(i.label).attr("class","sja_menuoption").on("click",(n=>{if(t.state.config.snvindel.populations.length<=1){return}l.clear().showunder(n.target).d.append("div").text("Replace with:").style("margin","10px").style("font-size",".8em");for(const n of t.state.config.snvindel.populations){if(n.key==i.key)continue;l.d.append("div").text(n.label).attr("class","sja_menuoption").on("click",(()=>{l.hide();const i=structuredClone(t.state.config.snvindel.details.groups);i[e]=structuredClone(n);i[e].type="population";t.app.dispatch({type:"plot_edit",id:t.id,config:{snvindel:{details:{groups:i}}}})}))}}));n.append("span").text(`POPULATION${i.adjust_race?", RACE ADJUSTED":""}`).style("font-size",".7em").style("margin-left","10px").style("opacity",.6);if(t._partialData?.pop2average){if(t.state.config.snvindel.details.groups[e==1?0:1]?.type=="filter"){const s=[];for(const e in t._partialData.pop2average){const i=t._partialData.pop2average[e];if(!Number.isFinite(i))continue;s.push(`${e}=${i.toFixed(2)}`)}if(s.length){n.append("span").text(`Group ${e==1?1:2} average admixture: ${s.join(", ")}`).style("margin-left","20px").attr("class","sja_clbtext").on("click",(t=>{l.clear().showunder(t.target).d.append("div").style("margin","10px").style("width","500px").html(`These are average admixture coefficients based on current Group ${e==1?1:2} samples.\n\t\t\t\t\t\tThey are used to adjust variant allele counts of matching ancestries from <span class=sja_menuoption style="padding:2px 5px">${i.label}</span>,\n\t\t\t\t\t\tso that the adjusted allele counts can be compared against Group ${e==1?1:2} allele counts.\n\t\t\t\t\t\tThis allows to account for ancestry composition difference between the two groups.\n\t\t\t\t\t\t`)}))}}}}async function u(t,e,i,s){if(!t.filterUI[e]){t.filterUI[e]=await n({holder:s,vocab:t.app.opts.state.vocab,emptyLabel:"Entire cohort",termdbConfig:t.state.termdbConfig,callback:async i=>{const n=JSON.parse(JSON.stringify(t.state.config.snvindel.details.groups));n[e].filter=i;t.app.dispatch({type:"plot_edit",id:t.id,config:{snvindel:{details:{groups:n}}}})}})}t.filterUI[e].main(g(t,i));s.select(".sjpp-gb-filter-count").remove();const o=t._partialData?.groupSampleCounts?.[e];if(Number.isInteger(o)){s.append("span").attr("class","sjpp-gb-filter-count").style("margin-left","10px").style("opacity",.5).style("font-size",".9em").text("n="+o)}}function g(t,e){const i=structuredClone(t.state.filter||{type:"tvslst",in:true,join:"",lst:[]});const n=structuredClone(e.filter);n.tag="filterUiRoot";i.lst.push(n);i.join="and";return i}function h(t,e,i){i.append("div").style("display","inline-block").text("Create Group 2").attr("class","sja_clbtext").style("margin","10px").on("click",(i=>{l.showunder(i.target).clear();y(t,e,l.d)}))}function m(t,e,i){i.append("div").style("display","inline-block").text("Group "+(e+1)).attr("class","sja_menuoption").style("margin-right","10px").on("click",(i=>{l.showunder(i.target).clear();if(e==0){y(t,0,l.d);return}l.d.append("div").text("Change").attr("class","sja_menuoption").style("border-radius","0px").on("click",(()=>{y(t,1,l.clear().d)}));l.d.append("div").text("Delete").attr("class","sja_menuoption").style("border-radius","0px").on("click",(()=>{l.hide();const e=[t.state.config.snvindel.details.groups[0]];t.app.dispatch({type:"plot_edit",id:t.id,config:{snvindel:{details:{groups:e}}}})}))}))}function y(t,e,i){const n={holder:i.append("div").style("margin","5px"),tabs:t.state.config.snvindel.details.groupTypes.map((t=>({label:t.name}))),tabsPosition:"vertical",linePosition:"right"};new a(n).main();for(const[i,s]of t.state.config.snvindel.details.groupTypes.entries()){const o=n.tabs[i];o.contentHolder.style("margin","10px");if(s.type=="info"){if(!t.state.config.variantFilter?.terms)throw"looking for snvindel info fields but self.state.config.variantFilter.terms[] missing";for(const i of t.state.config.variantFilter.terms){if(i.type!="integer"&&i.type!="float")continue;o.contentHolder.append("div").text(i.name).attr("class","sja_menuoption").on("click",(()=>{l.hide();const n={type:"info",infoKey:i.id};const s=v(t,n,e);b(t,s);t.app.dispatch({type:"plot_edit",id:t.id,config:{snvindel:{details:s}}})}))}continue}if(s.type=="population"){if(!t.state.config.snvindel.populations)throw"state.config.snvindel.populations missing";for(const i of t.state.config.snvindel.populations){o.contentHolder.append("div").text(i.label).attr("class","sja_menuoption").on("click",(()=>{l.hide();const n={type:"population",key:i.key,label:i.label,allowto_adjust_race:i.allowto_adjust_race,adjust_race:i.adjust_race};const s=v(t,n,e);b(t,s);t.app.dispatch({type:"plot_edit",id:t.id,config:{snvindel:{details:s}}})}))}continue}if(s.type=="filter"){const i={holder:o.contentHolder,vocabApi:t.app.vocabApi,state:{termfilter:{filter:t.state.filter}},tree:{click_term2select_tvs:i=>{l.hide();const n={type:"filter",filter:{in:true,join:"",type:"tvslst",lst:[{type:"tvs",tvs:i}]}};const s=v(t,n,e);b(t,s);t.app.dispatch({type:"plot_edit",id:t.id,config:{snvindel:{details:s}}})}}};const n=x(t);if(Number.isInteger(n))i.state.activeCohort=n;r(i);continue}throw"unknown group type"}}function v(t,e,i){const n={groups:JSON.parse(JSON.stringify(t.state.config.snvindel.details.groups))};n.groups[i]=e;return n}function b(t,e){if(e.groups.length!=2)return;const[i,n]=e.groups;if(i.type=="info"||n.type=="info"||i.type=="population"&&n.type=="population"){const i=t.state.config.snvindel.details.groupTestMethods.findIndex((t=>t.name=="Allele frequency difference"));if(i==-1)throw"Allele frequency difference not found";e.groupTestMethodsIdx=i}}function x(t){if(!t.state.config.filter)return;const e=o(t.config.filter,"cohortFilter");if(e&&t.state.termdbConfig.selectCohort){const i=e.tvs.values.map((t=>t.key)).sort().join(",");const n=t.state.termdbConfig.selectCohort.values.findIndex((t=>t.keys.sort().join(",")==i));if(n==-1)throw"subcohort key is not in selectCohort.values[]";return n}}export{d as gbControlsInit,b as mayUpdateGroupTestMethodsIdx};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{_ as e}from"./tslib.es6-c3c2d88f.js";import{t,z as s,d as a,a as n}from"./app-2cd97738.js";class r{constructor(e,t={}){this.tsInstance=e;this.opts=t;this.dom={menuWrapper:t.holder||e.dom.tip.d.append("div")};this.minGrpNum=3;this.defaultMaxGrpNum=5;this.data={groups:[],values:[]};o(this)}processInput(e){const a=new Set([0,1,2]);const n=structuredClone(e);if(this.tsInstance.q.type=="values"){for(const e of Object.values(n)){if(e.uncomputable)return;if((e===null||e===void 0?void 0:e.group)>this.defaultMaxGrpNum)t(`The maximum number of groups is ${this.defaultMaxGrpNum}. The group index for value = ${e.label} is ${e.group}`);const s={key:e.key,label:e.label,group:e.group||1,samplecount:e.samplecount};this.data.values.push(s);a.add(s.group)}}else if(this.tsInstance.q.type=="custom-groupset"){this.formatCustomset(a,n)}else if(this.tsInstance.q.type=="predefined-groupset"){if(this.tsInstance.term.type=="geneVariant"){const e=this.tsInstance.q;const t=this.tsInstance.term;const r=n.find((t=>t.dt==e.dt));const o=r.classes.byOrigin?r.classes.byOrigin[e.origin]:r.classes;const i=t.groupsetting.lst[e.predefined_groupset_idx];let p=0;for(const e of i.groups){const t=e;const n=t.uncomputable?0:++p;this.data.groups.push({currentIdx:n,type:"values",name:n===0?"Excluded categories":t.name});a.delete(n);for(const[e,a]of Object.entries(o)){if(t.values.some((t=>t.key==e))){this.data.values.push({key:e,label:s[e].label,group:n,samplecount:a})}}}}}else{throw"q.type not recognized"}if(this.data.values.length==0)t(`Missing values`);this.data.values.forEach((e=>{var t;if(!e.samplecount){if(this.tsInstance.term.type=="geneVariant"){const t=this.tsInstance.q;const s=this.tsInstance.category2samplecount.find((e=>e.dt==t.dt));const a=s.classes.byOrigin&&t.origin?s.classes.byOrigin[t.origin]:s.classes;e.samplecount=a[e.key]}else{e.samplecount=this.tsInstance.category2samplecount?(t=this.tsInstance.category2samplecount.find((t=>t.key==e.key)))===null||t===void 0?void 0:t.samplecount:"n/a"}}}));for(const e of Array.from(a)){this.data.groups.push({currentIdx:e,type:"values",name:e===0?`Excluded categories`:`Group ${e.toString()}`})}this.data.groups.sort(((e,t)=>e.currentIdx-t.currentIdx))}formatCustomset(e,t){var a;const n=this.tsInstance.q;for(const[t,s]of n.customset.groups.entries()){const n=s;if(n.uncomputable)return;this.data.groups.push({currentIdx:Number(t)+1,type:"values",name:n.name});e.delete(t+1);for(const e of n.values){const s=e.label?e.label:this.tsInstance.category2samplecount?(a=this.tsInstance.category2samplecount.find((t=>t.key==e.key)))===null||a===void 0?void 0:a.label:e.key;this.data.values.push({key:e.key,label:s,group:t+1,samplecount:null})}}if(this.tsInstance.term.type=="geneVariant"){const e=this.tsInstance.q;const t=this.tsInstance.category2samplecount.find((t=>t.dt==e.dt));const a=t.classes.byOrigin&&e.origin?t.classes.byOrigin[e.origin]:t.classes;if(this.data.values.length!==Object.keys(a).length){for(const[e,t]of Object.entries(a)){if(!this.data.values.some((t=>t.key==e))){this.data.values.push({key:e,label:s[e].label,group:0,samplecount:t})}}}}else if(this.data.values.length!==Object.keys(t).length&&this.tsInstance.q.type!="predefined-groupset"&&this.tsInstance.q.type!="custom-groupset"){Object.entries(t).filter((e=>!this.data.values.some((t=>t.key==e[1].label)))).forEach((e=>{var t;this.data.values.push({key:e[0],label:e[1].label,group:0,samplecount:this.tsInstance.category2samplecount?(t=this.tsInstance.category2samplecount.find((t=>t.key==e[0])))===null||t===void 0?void 0:t.samplecount:"n/a"})}))}else if(this.data.values.length!==this.tsInstance.category2samplecount.length){this.tsInstance.category2samplecount.filter((e=>!this.data.values.some((t=>t.key==e.key)))).forEach((e=>{this.data.values.push({key:e.key,label:e.label,group:0,samplecount:e.samplecount})}))}}main(){return e(this,void 0,void 0,(function*(){try{const e=this.tsInstance.q.type=="custom-groupset"&&this.tsInstance.q.customset||this.tsInstance.category2samplecount||this.tsInstance.term.values;this.processInput(e);yield this.initGrpSetUI()}catch(e){if(e.stack)console.log(e.stack);else t(e)}}))}}function o(t){t.initGrpSetUI=function(){return e(this,void 0,void 0,(function*(){t.maxGrpNum=t.data.values.length>=t.defaultMaxGrpNum?t.defaultMaxGrpNum+1:t.data.values.length;t.tsInstance.dom.tip.showunder(t.tsInstance.dom.holder.node());yield t.showDraggables()}))};t.showDraggables=function(){return e(this,void 0,void 0,(function*(){t.dom.actionDiv=t.dom.menuWrapper.append("div").attr("class","sjpp-group-actions").style("padding","10px");const s=t.data.groups.filter((e=>e.name.startsWith("New Group")));let n=s.length>0?s[s.length-1].name.replace(`New Group `,""):0;t.dom.actionDiv.addGroup=t.dom.actionDiv.append("button").classed("sjpp_grpset_addGrp_btn",true).style("display","inline-block").style("text-align","center").style("cursor",t.tsInstance.q.mode=="binary"?"default":"pointer").property("disabled",t.tsInstance.q.mode=="binary"?true:t.data.groups.length>=t.maxGrpNum).text("Add Group").on("click",(()=>e(this,void 0,void 0,(function*(){n++;t.data.groups.push({currentIdx:t.data.groups.length,type:"values",name:`New Group${n!=1?` ${n}`:""}`});const e=t.data.groups[t.data.groups.length-1];yield o(e);yield t.update()}))));t.dom.actionDiv.applyBtn=t.dom.actionDiv.append("button").classed("sjpp_grpset_apply_btn",true).style("display",t.opts.hideApply?"none":"inline-block").style("text-align","center").style("float","right").style("cursor","pointer").text("Apply").on("click",(()=>{t.processDraggables();t.tsInstance.dom.tip.hide();t.tsInstance.runCallback()}));t.dom.menuWrapper.append("div").style("margin","5px 2px").style("font-size",".6em").style("color","#999").text("Drag-and-drop to assign categories to groups.");t.dom.grpsWrapper=t.dom.menuWrapper.append("div").classed("sjpp-groups-wrapper",true);t.dom.includedWrapper=t.dom.grpsWrapper.append("div").classed("sjpp-groups-include",true).classed("sjpp-group-edit-div",true).style("display","flex");t.dom.excludedWrapper=t.dom.grpsWrapper.append("div").classed("sjpp-groups-exclude",true).classed("sjpp-group-edit-div",true).classed("sjpp-drag-drop-div",true);yield o(t.data.groups.find((e=>e.currentIdx===0)));yield t.dom.includedWrapper.selectAll("div").data(t.data.groups.filter((e=>e.currentIdx!=0))).enter().append("div").classed("sjpp-drag-drop-div",true).style("border","1px solid #efefef").style("display","block").style("padding","10px").style("vertical-align","top").each((function(t){return e(this,void 0,void 0,(function*(){t.wrapper=a(this);yield o(t)}))}))}))};t.processDraggables=()=>{if(!s&&!r)return;const e={groups:[]};for(const s of t.data.groups){if(s.currentIdx===0)continue;const a=t.data.values.filter((e=>e.group==s.currentIdx)).map((e=>({key:e.key,label:e.label})));if(a.length==0)continue;e.groups.push({name:s.name,type:s.type,values:a})}t.tsInstance.q.type="custom-groupset";t.tsInstance.q.customset=e;delete t.tsInstance.q.predefined_groupset_idx};let s;let r;function o(a){return e(this,void 0,void 0,(function*(){const r=a.currentIdx===0?t.dom.excludedWrapper:t.dom.includedWrapper;a.type="values";if(!a.wrapper)a.wrapper=r.append("div").classed("sjpp-drag-drop-div",true).style("border","1px solid #efefef").style("display","block").style("padding","10px").style("vertical-align","top");a.wrapper.on("drop",(function(e){const n=s.node().__data__;if(n.group===a.currentIdx)return;a.draggables.node().appendChild(s.node());s.style("transition-property","background-color").style("transition-duration","1s").style("background-color","#fff2cc");t.data.values.find((e=>e===n)).group=a.currentIdx;e.preventDefault();e.stopPropagation()})).on("dragleave",(function(e){e.preventDefault();e.stopPropagation();a.wrapper.style("background-color","#fff")})).on("dragend",(function(e){e.preventDefault();e.stopPropagation();a.wrapper.style("background-color","#fff")})).on("dragover",(function(e){e.preventDefault();e.stopPropagation();a.wrapper.style("background-color",a.currentIdx!==s.node().__data__.group?"#cfe2f3":"#fff")})).on("dragenter",(function(e){if(s.node().__data__.group===a.currentIdx)return;e.preventDefault();e.stopPropagation();a.wrapper.style("background-color",a.currentIdx!==s.node().__data__.group?"#cfe2f3":"#fff")}));if(a.currentIdx===0){a.title=a.wrapper.append("div").style("display","inline-block").style("padding","3px 10px").style("text-align","left").style("font-size",".6em").style("text-transform","uppercase").style("color","#999").text(a.name)}else{a.dragActionDiv=a.wrapper.append("div").style("display","flex").style("align-items","center");a.input=a.dragActionDiv.append("input").attr("size",12).attr("value",a.name).style("margin","5px").style("margin-left","8px").style("display","inline-block").style("font-size",".8em").style("width","87%").on("keyup",(()=>{n.debounce(t.onKeyUp(a),1e3)}));a.inputMessage=a.dragActionDiv.append("span").style("color","red").style("font-size","0.7em").text("NOT unique").style("display","none");a.destroyBtn=a.dragActionDiv.append("button").style("display","inline-block").style("padding","0px 4px").property("disabled",t.data.groups.length<=t.minGrpNum).text("x").on("click",(()=>e(this,void 0,void 0,(function*(){if(t.data.groups.length<=t.minGrpNum)return;t.data.groups=t.data.groups.filter((e=>e.currentIdx!=a.currentIdx));yield t.removeGroup(a)}))))}a.draggables=a.wrapper.append("div").classed("sjpp-drag-list-div",true);yield t.addItems(a)}))}t.onKeyUp=function(s){return e(this,void 0,void 0,(function*(){if(s.name==s.input.node().value)return;r=true;const e=t.data.groups.filter((e=>e.name==s.input.node().value));if(e.length>0){t.dom.actionDiv.applyBtn.property("disabled",true);s.inputMessage.style("display","block")}else{t.dom.actionDiv.applyBtn.property("disabled",false);s.inputMessage.style("display","none");t.data.groups[s.currentIdx].name=s.input.node().value.trim()}}))};t.addItems=function(n){return e(this,void 0,void 0,(function*(){yield n.draggables.selectAll("div").data(t.data.values.filter((e=>e.group==n.currentIdx))).enter().append("div").attr("draggable","true").attr("class","sjpp-drag-item").style("margin","3px").style("cursor","default").style("padding","3px 10px").style("border-radius","5px").style("color",(e=>e.samplecount==0?"#777":"black")).text((e=>`${e.label}${e.samplecount!==undefined?` (n=${e.samplecount})`:""}`)).style("background-color","#eee").each((function(){const e=a(this).on("dragstart",(function(){e.style("background-color","#fff2cc");s=e})).on("mouseenter",(function(){e.style("background-color","#fff2cc")})).on("mouseleave",(function(){e.style("background-color","#eee")}))}))}))};t.removeGroup=function(s){return e(this,void 0,void 0,(function*(){const e=s.wrapper.selectAll(".sjpp-drag-item").nodes();if(e.length===0)s.wrapper.remove();else{s.input.remove();s.destroyBtn.remove();s.wrapper.remove();for(const e of t.data.values){if(e.group==s.currentIdx)e.group=0}}yield t.update()}))};t.update=function(){return e(this,void 0,void 0,(function*(){t.dom.actionDiv.addGroup.property("disabled",t.data.groups.length>=t.maxGrpNum);for(const[e,s]of t.data.groups.entries()){if(e===0)continue;if(s.currentIdx!=e){t.data.values.filter((e=>e.group==s.currentIdx)).forEach((t=>t.group=e));s.currentIdx=e}}t.dom.grpsWrapper.selectAll(".sjpp-drag-drop-div").data(t.data.groups).each((s=>e(this,void 0,void 0,(function*(){if(s.currentIdx!==0){s.input.node().value=s.name;s.destroyBtn.property("disabled",t.data.groups.length<=t.minGrpNum)}yield t.addItems(s)}))))}))}}export{r as GroupSettingMethods};
|
|
1
|
+
import{_ as e}from"./tslib.es6-c3c2d88f.js";import{t,z as s,d as a,a as n}from"./app-6fb77603.js";class r{constructor(e,t={}){this.tsInstance=e;this.opts=t;this.dom={menuWrapper:t.holder||e.dom.tip.d.append("div")};this.minGrpNum=3;this.defaultMaxGrpNum=5;this.data={groups:[],values:[]};o(this)}processInput(e){const a=new Set([0,1,2]);const n=structuredClone(e);if(this.tsInstance.q.type=="values"){for(const e of Object.values(n)){if(e.uncomputable)return;if((e===null||e===void 0?void 0:e.group)>this.defaultMaxGrpNum)t(`The maximum number of groups is ${this.defaultMaxGrpNum}. The group index for value = ${e.label} is ${e.group}`);const s={key:e.key,label:e.label,group:e.group||1,samplecount:e.samplecount};this.data.values.push(s);a.add(s.group)}}else if(this.tsInstance.q.type=="custom-groupset"){this.formatCustomset(a,n)}else if(this.tsInstance.q.type=="predefined-groupset"){if(this.tsInstance.term.type=="geneVariant"){const e=this.tsInstance.q;const t=this.tsInstance.term;const r=n.find((t=>t.dt==e.dt));const o=r.classes.byOrigin?r.classes.byOrigin[e.origin]:r.classes;const i=t.groupsetting.lst[e.predefined_groupset_idx];let p=0;for(const e of i.groups){const t=e;const n=t.uncomputable?0:++p;this.data.groups.push({currentIdx:n,type:"values",name:n===0?"Excluded categories":t.name});a.delete(n);for(const[e,a]of Object.entries(o)){if(t.values.some((t=>t.key==e))){this.data.values.push({key:e,label:s[e].label,group:n,samplecount:a})}}}}}else{throw"q.type not recognized"}if(this.data.values.length==0)t(`Missing values`);this.data.values.forEach((e=>{var t;if(!e.samplecount){if(this.tsInstance.term.type=="geneVariant"){const t=this.tsInstance.q;const s=this.tsInstance.category2samplecount.find((e=>e.dt==t.dt));const a=s.classes.byOrigin&&t.origin?s.classes.byOrigin[t.origin]:s.classes;e.samplecount=a[e.key]}else{e.samplecount=this.tsInstance.category2samplecount?(t=this.tsInstance.category2samplecount.find((t=>t.key==e.key)))===null||t===void 0?void 0:t.samplecount:"n/a"}}}));for(const e of Array.from(a)){this.data.groups.push({currentIdx:e,type:"values",name:e===0?`Excluded categories`:`Group ${e.toString()}`})}this.data.groups.sort(((e,t)=>e.currentIdx-t.currentIdx))}formatCustomset(e,t){var a;const n=this.tsInstance.q;for(const[t,s]of n.customset.groups.entries()){const n=s;if(n.uncomputable)return;this.data.groups.push({currentIdx:Number(t)+1,type:"values",name:n.name});e.delete(t+1);for(const e of n.values){const s=e.label?e.label:this.tsInstance.category2samplecount?(a=this.tsInstance.category2samplecount.find((t=>t.key==e.key)))===null||a===void 0?void 0:a.label:e.key;this.data.values.push({key:e.key,label:s,group:t+1,samplecount:null})}}if(this.tsInstance.term.type=="geneVariant"){const e=this.tsInstance.q;const t=this.tsInstance.category2samplecount.find((t=>t.dt==e.dt));const a=t.classes.byOrigin&&e.origin?t.classes.byOrigin[e.origin]:t.classes;if(this.data.values.length!==Object.keys(a).length){for(const[e,t]of Object.entries(a)){if(!this.data.values.some((t=>t.key==e))){this.data.values.push({key:e,label:s[e].label,group:0,samplecount:t})}}}}else if(this.data.values.length!==Object.keys(t).length&&this.tsInstance.q.type!="predefined-groupset"&&this.tsInstance.q.type!="custom-groupset"){Object.entries(t).filter((e=>!this.data.values.some((t=>t.key==e[1].label)))).forEach((e=>{var t;this.data.values.push({key:e[0],label:e[1].label,group:0,samplecount:this.tsInstance.category2samplecount?(t=this.tsInstance.category2samplecount.find((t=>t.key==e[0])))===null||t===void 0?void 0:t.samplecount:"n/a"})}))}else if(this.data.values.length!==this.tsInstance.category2samplecount.length){this.tsInstance.category2samplecount.filter((e=>!this.data.values.some((t=>t.key==e.key)))).forEach((e=>{this.data.values.push({key:e.key,label:e.label,group:0,samplecount:e.samplecount})}))}}main(){return e(this,void 0,void 0,(function*(){try{const e=this.tsInstance.q.type=="custom-groupset"&&this.tsInstance.q.customset||this.tsInstance.category2samplecount||this.tsInstance.term.values;this.processInput(e);yield this.initGrpSetUI()}catch(e){if(e.stack)console.log(e.stack);else t(e)}}))}}function o(t){t.initGrpSetUI=function(){return e(this,void 0,void 0,(function*(){t.maxGrpNum=t.data.values.length>=t.defaultMaxGrpNum?t.defaultMaxGrpNum+1:t.data.values.length;t.tsInstance.dom.tip.showunder(t.tsInstance.dom.holder.node());yield t.showDraggables()}))};t.showDraggables=function(){return e(this,void 0,void 0,(function*(){t.dom.actionDiv=t.dom.menuWrapper.append("div").attr("class","sjpp-group-actions").style("padding","10px");const s=t.data.groups.filter((e=>e.name.startsWith("New Group")));let n=s.length>0?s[s.length-1].name.replace(`New Group `,""):0;t.dom.actionDiv.addGroup=t.dom.actionDiv.append("button").classed("sjpp_grpset_addGrp_btn",true).style("display","inline-block").style("text-align","center").style("cursor",t.tsInstance.q.mode=="binary"?"default":"pointer").property("disabled",t.tsInstance.q.mode=="binary"?true:t.data.groups.length>=t.maxGrpNum).text("Add Group").on("click",(()=>e(this,void 0,void 0,(function*(){n++;t.data.groups.push({currentIdx:t.data.groups.length,type:"values",name:`New Group${n!=1?` ${n}`:""}`});const e=t.data.groups[t.data.groups.length-1];yield o(e);yield t.update()}))));t.dom.actionDiv.applyBtn=t.dom.actionDiv.append("button").classed("sjpp_grpset_apply_btn",true).style("display",t.opts.hideApply?"none":"inline-block").style("text-align","center").style("float","right").style("cursor","pointer").text("Apply").on("click",(()=>{t.processDraggables();t.tsInstance.dom.tip.hide();t.tsInstance.runCallback()}));t.dom.menuWrapper.append("div").style("margin","5px 2px").style("font-size",".6em").style("color","#999").text("Drag-and-drop to assign categories to groups.");t.dom.grpsWrapper=t.dom.menuWrapper.append("div").classed("sjpp-groups-wrapper",true);t.dom.includedWrapper=t.dom.grpsWrapper.append("div").classed("sjpp-groups-include",true).classed("sjpp-group-edit-div",true).style("display","flex");t.dom.excludedWrapper=t.dom.grpsWrapper.append("div").classed("sjpp-groups-exclude",true).classed("sjpp-group-edit-div",true).classed("sjpp-drag-drop-div",true);yield o(t.data.groups.find((e=>e.currentIdx===0)));yield t.dom.includedWrapper.selectAll("div").data(t.data.groups.filter((e=>e.currentIdx!=0))).enter().append("div").classed("sjpp-drag-drop-div",true).style("border","1px solid #efefef").style("display","block").style("padding","10px").style("vertical-align","top").each((function(t){return e(this,void 0,void 0,(function*(){t.wrapper=a(this);yield o(t)}))}))}))};t.processDraggables=()=>{if(!s&&!r)return;const e={groups:[]};for(const s of t.data.groups){if(s.currentIdx===0)continue;const a=t.data.values.filter((e=>e.group==s.currentIdx)).map((e=>({key:e.key,label:e.label})));if(a.length==0)continue;e.groups.push({name:s.name,type:s.type,values:a})}t.tsInstance.q.type="custom-groupset";t.tsInstance.q.customset=e;delete t.tsInstance.q.predefined_groupset_idx};let s;let r;function o(a){return e(this,void 0,void 0,(function*(){const r=a.currentIdx===0?t.dom.excludedWrapper:t.dom.includedWrapper;a.type="values";if(!a.wrapper)a.wrapper=r.append("div").classed("sjpp-drag-drop-div",true).style("border","1px solid #efefef").style("display","block").style("padding","10px").style("vertical-align","top");a.wrapper.on("drop",(function(e){const n=s.node().__data__;if(n.group===a.currentIdx)return;a.draggables.node().appendChild(s.node());s.style("transition-property","background-color").style("transition-duration","1s").style("background-color","#fff2cc");t.data.values.find((e=>e===n)).group=a.currentIdx;e.preventDefault();e.stopPropagation()})).on("dragleave",(function(e){e.preventDefault();e.stopPropagation();a.wrapper.style("background-color","#fff")})).on("dragend",(function(e){e.preventDefault();e.stopPropagation();a.wrapper.style("background-color","#fff")})).on("dragover",(function(e){e.preventDefault();e.stopPropagation();a.wrapper.style("background-color",a.currentIdx!==s.node().__data__.group?"#cfe2f3":"#fff")})).on("dragenter",(function(e){if(s.node().__data__.group===a.currentIdx)return;e.preventDefault();e.stopPropagation();a.wrapper.style("background-color",a.currentIdx!==s.node().__data__.group?"#cfe2f3":"#fff")}));if(a.currentIdx===0){a.title=a.wrapper.append("div").style("display","inline-block").style("padding","3px 10px").style("text-align","left").style("font-size",".6em").style("text-transform","uppercase").style("color","#999").text(a.name)}else{a.dragActionDiv=a.wrapper.append("div").style("display","flex").style("align-items","center");a.input=a.dragActionDiv.append("input").attr("size",12).attr("value",a.name).style("margin","5px").style("margin-left","8px").style("display","inline-block").style("font-size",".8em").style("width","87%").on("keyup",(()=>{n.debounce(t.onKeyUp(a),1e3)}));a.inputMessage=a.dragActionDiv.append("span").style("color","red").style("font-size","0.7em").text("NOT unique").style("display","none");a.destroyBtn=a.dragActionDiv.append("button").style("display","inline-block").style("padding","0px 4px").property("disabled",t.data.groups.length<=t.minGrpNum).text("x").on("click",(()=>e(this,void 0,void 0,(function*(){if(t.data.groups.length<=t.minGrpNum)return;t.data.groups=t.data.groups.filter((e=>e.currentIdx!=a.currentIdx));yield t.removeGroup(a)}))))}a.draggables=a.wrapper.append("div").classed("sjpp-drag-list-div",true);yield t.addItems(a)}))}t.onKeyUp=function(s){return e(this,void 0,void 0,(function*(){if(s.name==s.input.node().value)return;r=true;const e=t.data.groups.filter((e=>e.name==s.input.node().value));if(e.length>0){t.dom.actionDiv.applyBtn.property("disabled",true);s.inputMessage.style("display","block")}else{t.dom.actionDiv.applyBtn.property("disabled",false);s.inputMessage.style("display","none");t.data.groups[s.currentIdx].name=s.input.node().value.trim()}}))};t.addItems=function(n){return e(this,void 0,void 0,(function*(){yield n.draggables.selectAll("div").data(t.data.values.filter((e=>e.group==n.currentIdx))).enter().append("div").attr("draggable","true").attr("class","sjpp-drag-item").style("margin","3px").style("cursor","default").style("padding","3px 10px").style("border-radius","5px").style("color",(e=>e.samplecount==0?"#777":"black")).text((e=>`${e.label}${e.samplecount!==undefined?` (n=${e.samplecount})`:""}`)).style("background-color","#eee").each((function(){const e=a(this).on("dragstart",(function(){e.style("background-color","#fff2cc");s=e})).on("mouseenter",(function(){e.style("background-color","#fff2cc")})).on("mouseleave",(function(){e.style("background-color","#eee")}))}))}))};t.removeGroup=function(s){return e(this,void 0,void 0,(function*(){const e=s.wrapper.selectAll(".sjpp-drag-item").nodes();if(e.length===0)s.wrapper.remove();else{s.input.remove();s.destroyBtn.remove();s.wrapper.remove();for(const e of t.data.values){if(e.group==s.currentIdx)e.group=0}}yield t.update()}))};t.update=function(){return e(this,void 0,void 0,(function*(){t.dom.actionDiv.addGroup.property("disabled",t.data.groups.length>=t.maxGrpNum);for(const[e,s]of t.data.groups.entries()){if(e===0)continue;if(s.currentIdx!=e){t.data.values.filter((e=>e.group==s.currentIdx)).forEach((t=>t.group=e));s.currentIdx=e}}t.dom.grpsWrapper.selectAll(".sjpp-drag-drop-div").data(t.data.groups).each((s=>e(this,void 0,void 0,(function*(){if(s.currentIdx!==0){s.input.node().value=s.name;s.destroyBtn.property("disabled",t.data.groups.length<=t.minGrpNum)}yield t.addItems(s)}))))}))}}export{r as GroupSettingMethods};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as e}from"./table-
|
|
1
|
+
import{r as e}from"./table-0daf2b89.js";import{M as t,P as s,h as a,D as l,b as i}from"./app-6fb77603.js";import{controlsInit as o}from"./controls-268e40e6.js";import"./tslib.es6-c3c2d88f.js";import"./controls.btns-5bf9e7d7.js";import"./controls.config-2f0fa061.js";import"./termsetting-492eefa7.js";import"path";new t;const n=[{label:"Pathway name"},{label:"enrichment score"},{label:"normalized enrichment score"},{label:"Geneset size"},{label:"pvalue"},{label:"sidak"},{label:"FDR"},{label:"Leading edge"}];class r{constructor(){this.type="gsea"}async init(e){e.plots.find((e=>e.id===this.id));const t=this.opts.holder.append("div").style("display","inline-block");const s=this.opts.holder.append("div").style("display","inline-block").style("margin-left","50px");const a=s.append("div").style("display","inline-block");const l=s.append("div").style("display","inline-block").style("vertical-align","top").style("margin-top","50px");const i=this.opts.holder.append("div").style("margin-left","50px");this.dom={holder:a,header:this.opts.header,controlsDiv:t,detailsDiv:l,tableDiv:i}}async setControls(){this.dom.controlsDiv.selectAll("*").remove();const e=[{label:"P-value filter cutoff (linear scale)",type:"number",chartType:"gsea",settingsKey:"pvalue",title:"P-value significance",min:0,max:1},{label:"P-value filter type",type:"radio",chartType:"gsea",settingsKey:"adjusted_original_pvalue",title:"Toggle between original and adjusted pvalues for volcano plot",options:[{label:"adjusted",value:"adjusted"},{label:"original",value:"original"}]}];const t={label:"Gene set group",type:"dropdown",chartType:"gsea",settingsKey:"pathway",title:"Display table showing original and adjusted pvalues corresponding to each significant pathway",boxLabel:"",options:[{label:"BP: subset of GO",value:"BP: subset of GO"},{label:"MF: subset of GO",value:"MF: subset of GO"},{label:"CC: subset of GO",value:"CC: subset of GO"},{label:"WikiPathways subset of CP",value:"WikiPathways subset of CP"},{label:"REACTOME subset of CP",value:"REACTOME subset of CP"},{label:"H: hallmark gene sets",value:"H: hallmark gene sets"}]};if(!this.settings.pathway){t.options.unshift({label:"-",value:"-"});this.settings.pathway="-"}e.push(t);this.components={controls:await o({app:this.app,id:this.id,holder:this.dom.controlsDiv,inputs:e})};this.components.controls.on("downloadClick.gsea",(()=>{downloadTable(this.table_rows,this.table_cols)}))}getState(e){const t=e.plots.find((e=>e.id===this.id));if(!t)throw`No plot with id='${this.id}' found`;return{config:t}}async main(){this.config=structuredClone(this.state.config);this.settings=this.config.settings.gsea;await this.setControls();if(this.dom.header)this.dom.header.style("opacity",.6).style("padding-left","10px").style("font-size","0.75em").text("GENE SET ENRICHMENT ANALYSIS");d(this)}}async function d(t){if(t.settings.pathway!="-"){t.dom.detailsDiv.selectAll("*").remove();t.dom.holder.selectAll("*").remove();t.dom.tableDiv.selectAll("*").remove();t.config.gsea_params.geneSetGroup=t.settings.pathway;const s=t.dom.detailsDiv.append("div").text("Loading...");let a;try{a=await f(t.config.gsea_params);s.remove();if(a.error){throw a.error}}catch(e){alert("Error: "+e);return}const i=l({holder:t.dom.detailsDiv});const[o,r]=i.addRow();r.style("text-align","center").style("font-size","0.8em").style("opacity","0.8").text("COUNT");const d=[{label:"Gene sets analyzed",values:Object.keys(a.data).length}];for(const e of d){const[t,s]=i.addRow();t.text(e.label);s.style("text-align","end").text(e.values)}t.gsea_table_rows=[];for(const e of Object.keys(a.data)){const s=a.data[e];if(t.settings.adjusted_original_pvalue=="adjusted"&&t.settings.pvalue>=s.fdr){let a;if(s.es){a=s.es.toPrecision(4)}else{a=s.es}let l;if(s.nes){l=s.nes.toPrecision(4)}else{l=s.nes}let i;if(s.pval){i=s.pval.toPrecision(4)}else{i=s.pval}let o;if(s.sidak){o=s.sidak.toPrecision(4)}else{o=s.sidak}let n;if(s.fdr){n=s.fdr.toPrecision(4)}else{n=s.fdr}t.gsea_table_rows.push([{value:e},{value:a},{value:l},{value:s.geneset_size},{value:i},{value:o},{value:n},{value:s.leading_edge}])}else if(t.settings.adjusted_original_pvalue=="original"&&t.settings.pvalue>=s.pval){let a;if(s.pval){a=s.pval.toPrecision(4)}else{a=s.pval}let l;if(s.sidak){l=s.sidak.toPrecision(4)}else{l=s.sidak}let i;if(s.fdr){i=s.fdr.toPrecision(4)}else{i=s.fdr}t.gsea_table_rows.push([{value:e},{value:s.es.toPrecision(4)},{value:s.nes.toPrecision(4)},{value:s.geneset_size},{value:a},{value:l},{value:i},{value:s.leading_edge}])}}t.dom.tableDiv.selectAll("*").remove();const c=t.dom.tableDiv.append("div");e({columns:n,rows:t.gsea_table_rows,div:c,showLines:true,maxHeight:"30vh",singleMode:true,resize:true,noButtonCallback:async e=>{const s={genome:t.config.gsea_params.genome,geneset_name:t.gsea_table_rows[e][0].value,genes:t.config.gsea_params.genes,fold_change:t.config.gsea_params.fold_change,geneSetGroup:t.config.gsea_params.geneSetGroup,pickle_file:a.pickle_file};const l=t.dom.holder;l.selectAll("*").remove();const i=l.append("div").text("Loading...");const o=await f(s);i.remove();if(o.error)throw o.error;const n=URL.createObjectURL(o);const r=600;const d=400;l.append("img").attr("width",r).attr("height",d).attr("src",n)}})}}async function c(e,t){try{const t={settings:{gsea:{pvalue:1,adjusted_original_pvalue:"adjusted",pathway:undefined},controls:{isOpen:true}}};return s(t,e)}catch(e){throw`${e} [gsea getPlotConfig()]`}}const p=a(r);const g=p;function u(e,t){t.prepPlot({config:{chartType:"gsea"}})}async function f(e){return await i("genesetEnrichment",{body:e})}export{g as componentInit,c as getPlotConfig,p as gseaInit,u as makeChartBtnMenu};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Matrix as e}from"./matrix-
|
|
1
|
+
import{Matrix as e}from"./matrix-38cd47c3.js";import{F as t,b as r,I as s,bR as i,h as a}from"./app-6fb77603.js";import{r as o}from"./hierCluster.renderers-19b79639.js";import{c as l,d as n,i as c}from"./hierCluster.interactivity-7f475259.js";import{k as m}from"./termsetting-492eefa7.js";import{g as d,c as h}from"./FilterRxComp-02e68f1b.js";export{getPlotConfig}from"./hierCluster.config-f4daaf92.js";import"./matrix.dom-1e0da5b3.js";import"./matrix.interactivity-1cb56534.js";import"./table-0daf2b89.js";import"./tslib.es6-c3c2d88f.js";import"./pointer-c7475677.js";import"./matrix.renderers-337ce240.js";import"./matrix.cluster-a6e713e8.js";import"./matrix.controls-42ad4912.js";import"./controls.config-2f0fa061.js";import"path";import"./matrix.sorterUi-1c60c145.js";import"./radiobutton-09bff425.js";import"./checkbox-96437f4d.js";import"./recover-299ffdb3.js";import"./FilterStateless-16a33070.js";import"./app-d215327f.js";import"./termInfo-491b10af.js";import"./toggleButtons-c4d6f260.js";import"./partjson.esm-b3f1fc21.js";import"./termdb.bins-39d11f24.js";import"./genesearch-ffd88bf2.js";import"./rehydrateFilter-12d118cb.js";import"./svg.legend-749348e0.js";import"./matrix.data-2b814c9f.js";import"./matrix.layout-47e44357.js";import"./axis-747c801e.js";import"./matrix.serieses-7b7184c9.js";import"./matrix.cells-a018d731.js";import"./matrix.legend-9af0c757.js";import"./legacy-d3-polyfill-bdb2d792.js";import"./matrix.groups-824a7244.js";import"./filter-b3d3964e.js";import"./matrix.sort-1ac05842.js";import"./matrix.config-2c550b5d.js";function p(e,t){let r;let s;if(t===undefined){for(const t of e){if(t!=null){if(r===undefined){if(t>=t)r=s=t}else{if(r>t)r=t;if(s<t)s=t}}}}else{let i=-1;for(let a of e){if((a=t(a,++i,e))!=null){if(r===undefined){if(a>=a)r=s=a}else{if(r>a)r=a;if(s<a)s=a}}}}return[r,s]}class f extends e{constructor(e){super(e);this.type="hierCluster";this.chartType="hierCluster"}async init(e){await super.init(e);this.maySetSandboxHeader();this.hcClipId=this.seriesClipId+"-hc";this.dom.hcClipRect=this.dom.svg.select("defs").append("clipPath").attr("id",this.hcClipId).attr("clipPathUnits","userSpaceOnUse").append("rect").attr("display","block");this.dom.topDendrogram=this.dom.svg.insert("g","g").attr("clip-path",`url(#${this.hcClipId})`).append("g").attr("class","sjpp-matrix-dendrogram").attr("data-testid","hierCluster_top_dendrogram").on("click",(e=>{const t=this.getClusterFromTopDendrogram(e);if(t){this.clickedClusterIds=this.getAllChildrenClusterIds(t);this.clickedClusterIds.push(t);const r=this.hierClusterData.clustering.col.mergedClusters.get(t);const s=r.children.map((e=>e.name));this.addSelectedSamplesOptions(s,e)}else{delete this.clickedClusterIds}if(this.clickedLeftClusterIds){delete this.clickedLeftClusterIds;this.plotDendrogramHclust()}else this.plotDendrogramHclust("top")}));this.dom.leftDendrogram=this.dom.svg.insert("g","g").attr("class","sjpp-matrix-dendrogram").attr("data-testid","hierCluster_left_dendrogram").on("click",(e=>{const t=this.getClusterFromLeftDendrogram(e);if(t){this.clickedLeftClusterIds=this.getAllChildrenClusterIds(t,true);this.clickedLeftClusterIds.push(t);const r=this.hierClusterData.clustering.row.mergedClusters.get(t);const s=r.children.map((e=>e.name));this.addSelectedRowsOptions(s,e)}else{delete this.clickedLeftClusterIds}if(this.clickedClusterIds){delete this.clickedClusterIds;this.plotDendrogramHclust()}else this.plotDendrogramHclust("left")}))}async setHierClusterData(e={}){this.prevServerData=this.currServerData;const r=new AbortController;const[s,i]=await this.api.detectStale((()=>this.requestData({signal:r.signal})),{abortCtrl:r});if(i)throw`stale sequenceId`;if(s.error)throw s.error;this.currServerData=structuredClone(s);if(!t(this.prevServerData,this.currServerData)){delete this.clickedClusterIds}const a=this.settings.hierCluster;const o=this.hcTermGroup.lst;if(!s.clustering){if(s.gene){throw`Cannot do clustering: data is only available for 1 gene (${s.gene}). Try again by adding more genes.`}}this.hierClusterData=s;const l=this.hierClusterData.clustering;this.setHierColorScale(l);this.settings.hierCluster.zScoreCap;const n={};for(const[e,t]of l.col.order.entries()){n[t.name]={sample:t.name};for(const[r,s]of l.row.order.entries()){const i=o.find((e=>e.term.name===s.name));const c=l.matrix[r][e];n[t.name][i.$id]={key:i.term.name,values:[{sample:t.name,dt:m[this.state.config.dataType],label:a.termGroupName,value:c}]}}}this.hcTermNameOrder=l.row.order.map((e=>e.name));this.hcTermSorter=(e,t)=>{const r=this.hcTermNameOrder.indexOf(e.tw.term.name);const s=this.hcTermNameOrder.indexOf(t.tw.term.name);if(r==-1&&s==-1)return 0;if(r==-1)return 1;if(s==-1)return-1;return r-s};this.hcSampleNameOrder=l.col.order.map((e=>e.name));this.hcSampleSorter=(e,t)=>{const r=this.hcSampleNameOrder.indexOf(e.sample);const s=this.hcSampleNameOrder.indexOf(t.sample);if(r==-1&&s==-1)return 0;if(r==-1)return 1;if(s==-1)return-1;return r-s};const c={};for(const e of o){if(s.byTermId[e.term.name])c[e.$id]=s.byTermId[e.term.name]}this.hierClusterSamples={refs:{byTermId:c,bySampleId:s.bySampleId},lst:l.col.order.map((e=>n[e.name])),samples:n}}async requestData({signal:e}){const t=this.currRequestOpts?.hierCluster||this.getHCRequestBody(this.state);const s=await r("termdb/cluster",{body:t,signal:e});return s}getHCRequestBody(e){this.hcTermGroup=this.config.termgroups.find((e=>e.type=="hierCluster"))||this.termOrder?.find((e=>e.grp.type=="hierCluster"))?.grp;const t=e.config.settings.hierCluster;const r={type:"tvslst",in:true,join:"and",lst:e.config.legendValueFilter.lst.filter((e=>!e.tvs.legendFilterType))};const s=this.getClusterRowTermsAsParameter();if(!s.length)throw"no data";if(!l.find((e=>e.value==t.clusterMethod)))throw"Invalid cluster method";if(!n.find((e=>e.value==t.distanceMethod)))throw"Invalid distance method";const i={genome:e.vocab.genome,dslabel:e.vocab.dslabel,dataType:e.config.dataType,clusterMethod:t.clusterMethod,distanceMethod:t.distanceMethod,terms:s,filter:d(h([e.filter,r])),filter0:e.filter0};return i}combineData(){if(!this.hierClusterSamples)return;const e=this.data;const t={};const r=[];for(const s in this.hierClusterSamples.samples){const i=this.hierClusterSamples.samples[s];t[s]=i;r.push(i);if(s in e.samples)Object.assign(i,e.samples[s]);const a=this.hierClusterSamples.refs.bySampleId[s]||{};if(!i._ref_)i._ref_=a;else Object.assign(i._ref_,a)}const s=this.hierClusterSamples.refs.byTermId;for(const t of Object.keys(s)){e.refs.byTermId[t]=Object.assign({},e.refs.byTermId[t]||{},s[t])}this.data={samples:t,lst:r,refs:e.refs}}setHierColorScale(e){const t=this.settings.hierCluster;const r=s(i[t.colorScale].domain,i[t.colorScale].range).clamp(true);const a=[];for(const t of e.matrix){a.push(...p(t))}const o=Math.min(t.zScoreCap,Math.max(...p(a).map(Math.abs)));const[l,n]=[-o,o];this.hierClusterValues={scale:r,min:l,max:n}}getValueColor(e){const t=this.settings.hierCluster.zScoreCap;return this.hierClusterValues.scale((e- -t)/(t*2))}getClusterRowTermsAsParameter(){const e=[...this.hcTermGroup.lst.map((e=>e.term))];e.sort(((e,t)=>e.name<t.name?-1:1));return e}}for(const e of[o,c]){for(const t in e)f.prototype[t]=e[t]}const u=a(f);const g=u;export{f as HierCluster,g as componentInit,u as hierClusterInit};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{P as e}from"./app-6fb77603.js";import{getPlotConfig as t}from"./matrix.config-2c550b5d.js";import{T as r,f as s}from"./termsetting-492eefa7.js";import"./matrix.sort-1ac05842.js";import"./tslib.es6-c3c2d88f.js";import"path";async function i(i={},a){i.chartType="hierCluster";const o=await t(i,a);delete o.genes;o.settings.hierCluster={dataType:o.dataType,clusterSamples:true,clusterMethod:"average",distanceMethod:"euclidean",zScoreCap:5,xDendrogramHeight:100,yDendrogramHeight:200,colorScale:"blueWhiteRed"};const n=a.vocabApi.termdbConfig.hierCluster||{};e(o.settings.hierCluster,n.settings,i.settings?.hierCluster||{});{const e=o.settings.hierCluster.colorScale;if(!e)throw"colorScale missing"}o.settings.matrix.collabelpos="top";const p=o.settings.hierCluster.termGroupName;const m=o.termgroups.find((e=>e.type=="hierCluster"||e.name==p))||{name:p};m.type="hierCluster";if(!m.lst?.length){if(!Array.isArray(i.terms))throw"opts.terms[] not array (may show geneset edit ui)";const e=[];for(const t of i.terms){const i=t.term?t:{term:t};if(!i.term.type){if(o.dataType==r.GENE_EXPRESSION||o.dataType==r.METABOLITE_INTENSITY){i.term.type=o.dataType}else{throw`term type missing and cannot be assigned by dataType`}}else if(!["geneExpression","metaboliteIntensity","float"].includes(i.term.type)){throw"term type not supported in hierCluster"}else if(o.dataType&&i.term.type!==o.dataType){throw`cannot have term type ${i.term.type} in ${o.dataType} term group`}e.push(s(i,a.vocabApi))}m.lst=await Promise.all(e);if(o.termgroups.indexOf(m)==-1)o.termgroups.unshift(m)}o.settings.matrix.maxSample=1e5;return o}export{i as getPlotConfig};
|
package/dist/{hierCluster.interactivity-6d453881.js → hierCluster.interactivity-7f475259.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as e}from"./table-
|
|
1
|
+
import{r as e}from"./table-0daf2b89.js";const t=[{label:"Average",value:"average",title:`Cluster by average value`},{label:`Complete`,value:"complete",title:`Use the complete clustering method`},{label:`Single`,value:"single",title:`Use the single clustering method`},{label:`Ward.D`,value:"ward.D",title:`Use the ward.D clustering method`},{label:`Ward.D2`,value:"ward.D2",title:`Use the ward.D2 clustering method`},{label:`Mcquitty`,value:"mcquitty",title:`Use the Mcquity clustering method`}];const l=[{label:"Euclidean",value:"euclidean",title:`Calculate distance using euclidean method`},{label:"Maximum",value:"maximum",title:`Maximum distance between two components of x and y`},{label:"Manhattan",value:"manhattan",title:`Calculate distance using the absolute distance between the two vectors`},{label:"Canberra",value:"canberra",title:`Calculate distance using Canberra method`}];function s(e,t){const l=t?this.hierClusterData.clustering.row.mergedClusters:this.hierClusterData.clustering.col.mergedClusters;const s=l.get(e).childrenClusters||[];let a=[...s];for(const e of s){a=a.concat(this.getAllChildrenClusterIds(e,t))}return a}function a(e,t){const l=this.settings.matrix.controlLabels;const s=this.opts.allow2selectSamples;const a=[{label:"Zoom in",callback:()=>{this.triggerZoomBranch(this,e)}},{label:`List ${e.length} ${l.samples}`,callback:()=>this.showTable4selectedSamples(e)}];if(s){a.push({label:s.buttonText||`Select ${l.samples}`,callback:async()=>{s.callback({samples:e.map((e=>({"cases.case_id":e}))),source:s.defaultSelectionLabel||`Selected ${l.samples} from gene expression`})}})}else{if(this.state.nav&&this.state.nav.header_mode!=="hidden"){const t=e.map((e=>this.sampleOrder.find((t=>t.row.sample==e)).row));for(const e of t){if(!e.sampleId)e.sampleId=e.sample}a.push({label:"Add to a group",callback:async()=>{const e={name:"Group",items:t};this.addGroup(e)}})}}this.mouseout();this.dom.tip.hide();this.dom.dendroClickMenu.d.selectAll("*").remove();this.dom.dendroClickMenu.d.selectAll("div").data(a).enter().append("div").attr("class","sja_menuoption").style("border-radius","0px").html((e=>e.label)).attr("data-testid",(e=>`hierCluster_dendro_menu_${e.label.split(" ")[0]}`)).on("click",(e=>{this.dom.dendroClickMenu.d.selectAll("*").remove();e.target.__data__.callback()}));this.dom.dendroClickMenu.show(t.clientX,t.clientY)}function i(e,t){const l=this.config.dataType=="geneExpression"?"genes":this.config.dataType=="metaboliteIntensity"?"metabolites":"items";const s=[{label:`List ${e.length} ${l}`,callback:()=>this.showTable4selectedRows(e,l)}];if(this.app.opts.genome.termdbs){s.push({label:`Gene set overrepresentation analysis`,disabled:e.length<15||e.length>500,callback:()=>{if(e.length<15||e.length>500)return;this.dom.dendroClickMenu.d.selectAll("*").remove();const t=e;const l={sample_genes:t.toString(),genome:this.app.vocabApi.opts.state.vocab.genome};const s={chartType:"geneORA",geneORAparams:l};this.app.dispatch({type:"plot_create",config:s})}})}this.mouseout();this.dom.tip.hide();this.dom.dendroClickMenu.d.selectAll("*").remove();this.dom.dendroClickMenu.d.selectAll("div").data(s).enter().append("div").attr("class",(e=>e.disabled?"sja_menuoption_not_interactive":"sja_menuoption")).style("opacity",(e=>e.disabled?.5:1)).style("border-radius","0px").html((e=>e.disabled?`${e.label} <span style="font-size: 0.6em; display: block; margin-left: 2px; margin-top: 2px;">Only available when 15 - 500 genes selected</span>`:e.label)).attr("data-testid",(e=>`hierCluster_dendro_menu_${e.label.split(" ")[0]}`)).on("click",(e=>{if(e.target.__data__?.callback)e.target.__data__.callback()}));this.dom.dendroClickMenu.show(t.clientX,t.clientY)}function n(e,t){if(e.zoomArea){e.zoomArea.remove();delete e.zoomArea}const l={startCell:e.serieses[0].cells.find((e=>e.sample==t[0])),endCell:e.serieses[0].cells.find((e=>e.sample==t[t.length-1]))};const s=e.settings.matrix;const a=e.dimensions;const i=l.startCell.totalIndex<l.endCell.totalIndex?l.startCell:l.endCell;const n=Math.floor(i.totalIndex+Math.abs(l.endCell.totalIndex-l.startCell.totalIndex)/2);const o=e.sampleOrder[n];const r=e.computedSettings.colw||e.settings.matrix.colw;const c=s.colwMax/r;const d=s.colwMin/r;const h=Math.max(1,s.zoomLevel*a.mainw/Math.max(l.endCell.x-l.startCell.x,2*a.colw)*.7);const m=Math.max(d,Math.min(h,c));e.app.dispatch({type:"plot_edit",id:e.id,config:{settings:{matrix:{zoomLevel:m,zoomCenterPct:.5,zoomIndex:n,zoomGrpIndex:o.grpIndex}}}});e.resetInteractions()}function o(t){const l=this.state.termdbConfig.urlTemplates;const s=l?.sample?t.map((e=>[{value:this.hierClusterData.bySampleId[e].label,url:`${l.sample.base}${e}`}])):t.map((e=>[{value:this.hierClusterData.bySampleId[e].label}]));const a=[{label:this.settings.matrix.controlLabels.Sample}];e({rows:s,columns:a,div:this.dom.dendroClickMenu.clear().d.append("div").style("margin","10px"),showLines:true,maxHeight:"35vh",resize:true})}function r(t,l){const s=this.state.termdbConfig.urlTemplates;const a=s?.gene&&this.config.dataType=="geneExpression"&&this.hierClusterData.byTermId?t.map((e=>this.hierClusterData.byTermId[e]?.gencodeId?[{value:e,url:`${s.gene.base}${this.hierClusterData.byTermId[e].gencodeId}`}]:[{value:e}])):t.map((e=>[{value:e}]));const i=[{label:l}];e({rows:a,columns:i,div:this.dom.dendroClickMenu.clear().d.append("div").style("margin","10px"),showLines:true,maxHeight:"35vh",resize:true})}async function c(e){e.plotId=this.id;await this.app.vocabApi.addGroup(e);this.dom.tip.hide()}function d(e){if(e.target.tagName=="image")this.imgBox=e.target.getBoundingClientRect();else return;const t=e.clientY-this.imgBox.y-e.target.clientTop;const l=this.dimensions.xMin;const s=e.clientX-this.imgBox.x-e.target.clientLeft+l;for(const[e,l]of this.hierClusterData.clustering.col.mergedClusters){const{x1:a,y1:i,x2:n,y2:o,clusterY:r}=l.clusterPosition;if(a<=s&&s<=n&&r-5<t&&t<r+5||r<=t&&t<=i&&a-5<s&&s<a+5||r<=t&&t<=o&&n-5<s&&s<n+5){return e}}}function h(e){if(e.target.tagName=="image")this.imgBox=e.target.getBoundingClientRect();else return;const t=e.clientY-this.imgBox.y-e.target.clientTop;const l=this.dimensions.xMin;const s=e.clientX-this.imgBox.x-e.target.clientLeft+l;for(const[e,l]of this.hierClusterData.clustering.row.mergedClusters){const{x1:a,y1:i,x2:n,y2:o,clusterX:r}=l.clusterPosition;if(i<=t&&t<=o&&r-5<s&&s<r+5||r<=s&&s<=a&&i-5<t&&t<i+5||r<=s&&s<=n&&o-5<t&&t<o+5){return e}}}function m(e,s){const a=this.config.settings.matrix.controlLabels;const i=`Cluster ${a.Samples}`;e.append("button").datum({label:`Clustering`,rows:[{label:i,title:`Option to enable ${a.samples} clustering, instead of enable ${a.samples} sorting.`,type:"checkbox",chartType:"hierCluster",settingsKey:"clusterSamples",boxLabel:`Cluster ${a.samples} (Disable ${a.samples} sorting)`,callback:e=>{if(!e){this.config.settings.hierCluster.yDendrogramHeight=0;this.config.settings.hierCluster.clusterSamples=false}else{this.config.divideBy=null;this.config.settings.hierCluster.yDendrogramHeight=200;this.config.settings.hierCluster.clusterSamples=true}this.app.dispatch({type:"plot_edit",id:this.id,config:this.config})}},{label:`Clustering Method`,title:`Sets which clustering method to use`,type:"radio",chartType:"hierCluster",settingsKey:"clusterMethod",options:t},{label:`Distance Method`,title:`Sets which distance method to use for clustering`,type:"radio",chartType:"hierCluster",settingsKey:"distanceMethod",options:l},{label:`Column Dendrogram Height`,title:`The maximum height to render the column dendrogram`,type:"number",chartType:"hierCluster",settingsKey:"yDendrogramHeight",getDisplayStyle(e){return e.settings.hierCluster.clusterSamples?"table-row":"none"}},{label:`Row Dendrogram Width`,title:`The maximum width to render the row dendrogram`,type:"number",chartType:"hierCluster",settingsKey:"xDendrogramHeight"},{label:`z-score Cap`,title:`Cap the z-score scale to not exceed this absolute value`,type:"number",chartType:"hierCluster",settingsKey:"zScoreCap"},{label:`Color Scheme`,title:`Sets which color scheme to use`,type:"radio",chartType:"hierCluster",settingsKey:"colorScale",options:[{label:"Blue-White-Red",value:"blueWhiteRed",title:`color scheme Blue-White-Red`},{label:"Green-Black-Red",value:"greenBlackRed",title:`color scheme Green-Black-Red`},{label:"Blue-Yellow-Red",value:"blueYellowRed",title:`color scheme Blue-Yellow-Red`},{label:"Green-White-Red",value:"greenWhiteRed",title:`color scheme Green-White-Red`},{label:"Blue-Black-Yellow",value:"blueBlackYellow",title:`color scheme Blue-Black-Yellow`}]}]}).html((e=>e.label)).style("margin","2px 0").on("click",s)}var u=Object.freeze({__proto__:null,getAllChildrenClusterIds:s,addSelectedSamplesOptions:a,addSelectedRowsOptions:i,triggerZoomBranch:n,showTable4selectedSamples:o,showTable4selectedRows:r,addGroup:c,getClusterFromTopDendrogram:d,getClusterFromLeftDendrogram:h,setClusteringBtn:m});export{t as c,l as d,u as i};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{T as e}from"./termsetting-
|
|
1
|
+
import{T as e}from"./termsetting-492eefa7.js";function t(){if(!this.dom.header)return;switch(this.config.dataType){case e.GENE_EXPRESSION:this.dom.header.text("Gene Expression Clustering");break;case e.METABOLITE_INTENSITY:this.dom.header.text("Metabolite Intensity Clustering");break;default:throw`dataType '${this.config.dataType}' not recognized`}}function n(e){const t=this.dimensions;const n=this.config.settings.matrix;t.seriesXoffset;const s=window.devicePixelRatio<=1?1:window.devicePixelRatio;const r=this.hierClusterData.clustering;const a=r.row;const c=r.col;const h=this.settings.matrix.clusterRowh,{xDendrogramHeight:l,yDendrogramHeight:d}=this.settings.hierCluster,g=this.dimensions.dx;if(e!=="left"){if(!this.settings.hierCluster.clusterSamples){this.dom.topDendrogram.selectAll("*").remove()}else{const e=o(c.height,d);const t=d+1e-7;const r=g*c.inputOrder.length;const a=new OffscreenCanvas(r*s,t*s);const h=a.getContext("2d");h.scale(s,s);h.imageSmoothingEnabled=false;h.imageSmoothingQuality="high";h.strokeStyle="black";const u=new Map;for(const[t,n]of c.merge.entries()){const s=t+1;const o=[];const r=[];let a,l,m,p;if(n.n1<0){const[e,t]=i(n.n1,c.inputOrder,c.order);a=g*(t+.5);m=d;o.push({name:e})}else{if(!u.has(n.n1))throw"pair.n1 is positive but not seen before";const e=u.get(n.n1);a=e.x;m=e.y;o.push(...e.children);r.push(n.n1)}if(n.n2<0){const[e,t]=i(n.n2,c.inputOrder,c.order);l=g*(t+.5);p=d;o.push({name:e})}else{if(!u.has(n.n2))throw"pair.n1 is positive but not seen before";const e=u.get(n.n2);l=e.x;p=e.y;o.push(...e.children);r.push(n.n2)}const f=d-c.height[t].height*e;const x=this.clickedClusterIds?.includes(s);h.strokeStyle=x?"red":"black";h.beginPath();h.moveTo(a,m);h.lineTo(a,f);h.lineTo(l,f);h.lineTo(l,p);h.stroke();h.closePath();u.set(s,{x:(a+l)/2,y:f,children:o,childrenClusters:r,clusterPosition:{x1:a,x2:l,y1:m,y2:p,clusterY:f}})}this.renderImage(this.dom.topDendrogram,a,r,t,l+.5*g,n.margin.top+n.scrollHeight);c.mergedClusters=u}}if(e!=="top"){const e=o(a.height,l);const t=l+1e-7;const r=h*a.inputOrder.length;const c=new OffscreenCanvas(t*s,r*s);const g=c.getContext("2d");g.scale(s,s);g.imageSmoothingEnabled=false;g.imageSmoothingQuality="high";g.strokeStyle="black";const u=new Map;for(const[t,n]of a.merge.entries()){const s=t+1;const o=[];const r=[];let c,d,m,p;if(n.n1<0){const[e,t]=i(n.n1,a.inputOrder,a.order);m=h*(t+.5);c=l;o.push({name:e})}else{if(!u.has(n.n1))throw"pair.n1 is positive but not seen before";const e=u.get(n.n1);c=e.x;m=e.y;o.push(...e.children);r.push(n.n1)}if(n.n2<0){const[e,t]=i(n.n2,a.inputOrder,a.order);p=h*(t+.5);d=l;o.push({name:e})}else{if(!u.has(n.n2))throw"pair.n1 is positive but not seen before";const e=u.get(n.n2);d=e.x;p=e.y;o.push(...e.children);r.push(n.n2)}const f=l-a.height[t].height*e;const x=this.clickedLeftClusterIds?.includes(s);g.strokeStyle=x?"red":"black";g.beginPath();g.moveTo(c,m);g.lineTo(f,m);g.lineTo(f,p);g.lineTo(d,p);g.stroke();g.closePath();u.set(s,{x:f,y:(m+p)/2,children:o,childrenClusters:r,clusterPosition:{x1:c,x2:d,y1:m,y2:p,clusterX:f}})}const m=this.termOrder.find((e=>e.grp.type=="hierCluster"||e.grp.name==this.hcTermGroup.name));const p=m.grpIndex*n.rowgspace+m.prevGrpTotalIndex*n.rowh+m.totalHtAdjustments+n.margin.top+n.scrollHeight+d;this.renderImage(this.dom.leftDendrogram,c,t,r,0,p);a.mergedClusters=u}}async function s(e,t,n,s,o,i){const r=new FileReader;r.addEventListener("load",(()=>{e.selectAll("*").remove();e.append("image").attr("x",o+.033).attr("y",i+.033).attr("xlink:href",r.result).attr("width",n).attr("height",s)}),false);const a=await t.convertToBlob({quality:1});r.readAsDataURL(a)}function o(e,t){let n=e[0].height;for(const t of e)n=Math.max(n,t.height);return t/n}function i(e,t,n){const s=t[-e-1];if(!s)throw"minus not in inputOrder";const o=n.findIndex((e=>e.name==s));if(o==-1)throw"name not found in hc$order";return[s,o]}var r=Object.freeze({__proto__:null,maySetSandboxHeader:t,plotDendrogramHclust:n,renderImage:s});export{r};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{d as e,r as t}from"./app-
|
|
1
|
+
import{d as e,r as t}from"./app-6fb77603.js";function l(l,n={settings:{},handlers:{}},i){function s(e,t={}){const s=n.settings;if(!t.div)l.selectAll("*").remove();if(e.every((e=>Array.isArray(e)))){for(let t=0;t<e.length;t++){const l=i.select(`.pp-sbar-div:nth-child(${t+1})`);o(e[t],s,l)}}else if(e.every((e=>typeof e=="object"))){o(e,s,t.div||l)}else{throw"render() only takes an array of objects or an array of arrays"}}function o(e,t,l){l.selectAll(".pp-sbar-div-oneLegend").remove();l.append("div").attr("class","pp-sbar-div-oneLegend").attr("data-testid","pp-sbar-div-oneLegend").style("width",t.mainWidth||"").style("text-align",e.legendTextAlign||t.legendTextAlign||(t.legendOrientation=="vertical"?"left":"center")).style("display",t.legendOrientation=="grid"?"grid":"").style("grid-template-rows",t.legendOrientation=="grid"?"auto auto":"").style("gap",t.legendOrientation=="grid"?"10px":"").selectAll("div").data(e).enter().append("div").each(a);if(t.legendChartSide=="right"){setTimeout((()=>{const e=n.dom.container.node().parentNode.getBoundingClientRect();const t=n.dom.container.node().getBoundingClientRect();const l=n.dom.legendDiv.node().getBoundingClientRect();const i=parseFloat(n.dom.legendDiv.style("padding-top"));const s=e.height-t.height+(t.height-l.height+i)/2;if(Math.abs(i-s)<20)return;n.dom.legendDiv.transition().duration(100).style("padding-top",s<0?0:s+"px")}),1200)}}function a(t){const l=n.settings;const i=e(this).style("display",l.legendOrientation=="vertical"||l.legendOrientation=="grid"?"block":"inline-block");if(t.name){if(l.legendChartSide=="right"){i.style("text-align","left");i.append("div").style("font-size",l.legendFontSize).style("font-weight",600).html(t.name);i.append("div").selectAll("div").data(t.items).enter().append("div").style("display",l.legendOrientation=="vertical"?"block":"inline-block").style("margin-right","5px").each(d)}else{i.style("white-space","nowrap").style("width",l.legendOrientation=="vertical"?"fit-content":null);i.append("div").style("display",l.legendOrientation=="grid"||l.legendOrientation=="vertical"?"block":"inline-block").style("width",t.rowLabelHangLeft?t.rowLabelHangLeft+"px":null).style("margin-left",l.legendOrientation=="vertical"?"15px":null).style("text-align",t.rowLabelHangLeft?"right":null).style("font-weight",600).style("vertical-align","top").html(t.name);i.append("div").style("display",l.legendOrientation=="grid"||l.legendOrientation=="vertical"?"block":"inline-block").style("max-width",1.2*t.rowLabelHangLeft+"px").style("white-space","normal").style("vertical-align","top").selectAll("div").data(t.items).enter().append("div").style("display","inline-block").style("margin-left","15px").each(d)}}else{i.selectAll("div").data(t.items).enter().append("div").style("display",l.legendOrientation=="vertical"?"block":"inline-block").style("margin-left","15px").each(d)}}function d(l){const i=n.settings;const s=e(this);const o=l.fill?l.fill:l.stroke?l.stroke:l.color;s.attr("class","legend-row").classed("sjpp-hidden-legend-item",l.isHidden?true:false).style("display",i.legendOrientation=="vertical"?"block":"inline-block").style("width",i.legendOrientation=="vertical"?"fit-content":null);if(l.svg){s.append("svg").attr("width",l.svgw).attr("height",l.svgh).style("display","inline-block").style("vertical-align","top").style("border",l.border).html((e=>e.svg))}else if(!l.noIcon){const e=l.noEditColor?o:t(o).darker();s.append("div").style("display","inline-block").style("position","relative").style("min-width","12px").style("height","12px").style("top","1px").style("border",l.border?l.border:"1px solid "+e).style("border-radius",l.shape=="circle"?"6px":"").style("background-color",l.shape=="circle"?"":o).style("cursor","isHidden"in l?"pointer":"default").style("color",l.textColor?l.textColor:"#fff").style("font-size","10px").style("vertical-align",l.inset?"top":"").style("padding",l.inset?"0 3px":"").text(l.inset).on("click",n.handlers.legend?.onColorClick)}s.append("div").classed("sjpp-htmlLegend",true).style("display","inline-block").style("margin-left",l.svg?"1px":"3px").style("cursor",l.isHidden?"pointer":"default").style("font-size",i.legendFontSize).style("line-height",i.legendFontSize).style("vertical-align",l.svg?"top":null).style("text-decoration",l.isHidden?"line-through":"none").html(l.text).on("click",n.handlers.legend?.click);if(Object.keys(n.handlers).length){s.on("mouseover",n.handlers.legend.mouseover).on("mouseout",n.handlers.legend.mouseout)}}return s}export{l as h};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{P as t,h as i}from"./app-
|
|
1
|
+
import{P as t,h as i}from"./app-6fb77603.js";import{controlsInit as s}from"./controls-268e40e6.js";import"./controls.btns-5bf9e7d7.js";import"./controls.config-2f0fa061.js";import"./termsetting-492eefa7.js";import"./tslib.es6-c3c2d88f.js";import"path";class e{constructor(){this.type="imagePlot"}async init(t){const i=t.plots.find((t=>t.id===this.id));this.getState(t);const s=this.opts.holder.append("div");this.dom={holder:s,controlsHolder:s.append("div").style("display","inline-block"),imageHolder:s.append("div").style("display","inline-block")};this.setControls();const e=await this.app.vocabApi.getSampleImages(i.sample.sampleId);if(e.error)throw e.error;for(const t of e.images){this.dom.imageHolder.append("img").style("padding","10px").attr("src",t.src).attr("width",i.settings.imagePlot.width).attr("height",i.settings.imagePlot.height)}}async setControls(){this.components={controls:await s({app:this.app,id:this.id,holder:this.dom.controlsHolder,inputs:[{label:"Chart width",type:"number",chartType:this.type,settingsKey:"width"},{label:"Chart height",type:"number",chartType:this.type,settingsKey:"height"}]})}}getState(t){const i=t.plots.find((t=>t.id===this.id));if(!i){throw`No plot with id='${this.id}' found. Did you set this.id before this.api = getComponentApi(this)?`}return{config:i,termfilter:t.termfilter,vocab:t.vocab}}}async function o(i,s){let e=n();if(i.settings)t(e,i.settings);const o={settings:{controls:{isOpen:false},imagePlot:e}};const a=t(o,i);return a}function n(){return{width:500,height:500}}const a=i(e);const r=a;async function p(t,i,s){const e={holder:i,state:{vocab:t.vocab,plots:[{chartType:"imagePlot",sample:s}]}};const o=await import("./plot.app-2a805759.js");await o.appInit(e)}export{r as componentInit,n as getDefaultImagePlotSettings,o as getPlotConfig,a as imagePlotInit,p as renderImagePlot};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{d as t}from"./drag-
|
|
1
|
+
import{d as t}from"./drag-2e9c80bb.js";import{p as e}from"./pointer-c7475677.js";function s(){let s=[],n,o={start:function(){},draw:function(){},end:function(){}};function l(l){const r=l.append("g").attr("class","lasso");const i=r.append("path").attr("class","drawn").style("stroke","#505050").style("stroke-width","2px").style("fill-opacity",".05");const a=r.append("circle").attr("class","origin").style("fill","#3399FF").style("fill-opacity",".5");let c,u;let f=t().on("start",d).on("drag",_).on("end",p);n.call(f);function d(t){u=[];c="";i.attr("d",null);s.nodes().forEach((function(t){t.__lasso.possible=false;t.__lasso.selected=false;t.__lasso.loopSelect=false;let e=t.getBoundingClientRect();t.__lasso.lassoPoint=[Math.round(e.left+e.width/2),Math.round(e.top+e.height/2)]}));o.start(t)}function _(t){let n,l;if(t.sourceEvent.type==="touchmove"){n=t.sourceEvent.touches[0].clientX;l=t.sourceEvent.touches[0].clientY}else{n=t.sourceEvent.clientX;l=t.sourceEvent.clientY}let[r,f]=e(t,this);if(c===""){c=c+"M "+r+" "+f;a.attr("cx",r).attr("cy",f).attr("r",7).attr("display",null)}else{c=c+" L "+r+" "+f}u.push([n,l]);i.attr("d",c);s.nodes().forEach((function(t){t.__lasso.loopSelect=h(t.__lasso.lassoPoint,u);t.__lasso.possible=t.__lasso.loopSelect}));o.draw(t)}function p(t){s.on("mouseover.lasso",null);s.nodes().forEach((function(t){t.__lasso.selected=t.__lasso.possible;t.__lasso.possible=false}));i.attr("d",null);a.attr("display","none");o.end(t)}function h(t,e){let s,n,o,l,r,i=t[0],a=t[1],c=false;for(let t=0,u=e.length-1;t<e.length;u=t++){s=e[t][0];o=e[t][1];n=e[u][0];l=e[u][1];r=o>a!=l>a&&i<(n-s)*(a-o)/(l-o)+s;if(r)c=!c}return c}}l.items=function(t){if(!arguments.length)return s;s=t;const e=s.nodes();e.forEach((function(t){t.__lasso={possible:false,selected:false}}));return l};l.possibleItems=function(){return s.filter((function(){return this.__lasso.possible}))};l.selectedItems=function(){return s.filter((function(){return this.__lasso.selected}))};l.notPossibleItems=function(){return s.filter((function(){return!this.__lasso.possible}))};l.notSelectedItems=function(){return s.filter((function(){return!this.__lasso.selected}))};l.on=function(t,e){if(!arguments.length)return o;if(arguments.length===1)return o[t];const s=["start","draw","end"];if(s.indexOf(t)>-1){o[t]=e}return l};l.targetArea=function(t){if(!arguments.length)return n;n=t;return l};return l}export{s as d};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{_ as t}from"./tslib.es6-c3c2d88f.js";import{appInit as o}from"./plot.app-2a805759.js";import{ai as e,z as s}from"./app-6fb77603.js";import"./recover-299ffdb3.js";import"./termsetting-492eefa7.js";import"path";import"./FilterRxComp-02e68f1b.js";import"./table-0daf2b89.js";import"./partjson.esm-b3f1fc21.js";import"./termdb.bins-39d11f24.js";import"./FilterStateless-16a33070.js";import"./app-d215327f.js";import"./termInfo-491b10af.js";import"./toggleButtons-c4d6f260.js";import"./genesearch-ffd88bf2.js";import"./checkbox-96437f4d.js";import"./rehydrateFilter-12d118cb.js";function n(s,n,i){return t(this,void 0,void 0,(function*(){const[t,c]=yield r(s);if(c===null||c===void 0?void 0:c.length){return e(c,i)}const p={holder:i,vocabApi:{vocab:{terms:[]},main:()=>{},getTermdbConfig:()=>({})},state:{args:{data:t,genome:n},plots:[{chartType:"Disco",subfolder:"disco",extension:"ts"}]}};const u=yield o(p);return u}))}function r(o){return t(this,void 0,void 0,(function*(){if(Array.isArray(o.mlst)){return[o.mlst,null]}const t=[];const e=[];if(o.snvText)i(o.snvText,t,e);if(o.svText)c(o.svText,t,e);if(o.cnvText)p(o.cnvText,t,e);return[t,e]}))}function i(t,o,e){for(const s of t.trim().split("\n")){const t=s.trim().split("\t");if(t.length!=5){e.push("snv input not equal to 5 columns");continue}let n;try{n={dt:1,chr:t[0],position:Number(t[1]),gene:t[2],mname:t[3],class:u(t[4],e)}}catch(t){e.push(t);continue}o.push(n)}}function c(t,o,e){for(const s of t.trim().split("\n")){const t=s.trim().split("\t");if(t.length<4||t.length>6){e.push("sv input not equal to 4 or 6 columns");continue}let n;try{const o=t.length;if(o==4){n={dt:2,chrA:t[0],posA:Number(t[1]),chrB:t[2],posB:Number(t[3])}}else{n={dt:2,chrA:t[0],posA:Number(t[1]),geneA:t[2],chrB:t[3],posB:Number(t[4]),geneB:t[5]}}}catch(t){e.push(t);continue}o.push(n)}}function p(t,o,e){for(const s of t.trim().split("\n")){const t=s.trim().split("\t");if(t.length!=4){e.push("cnv input not equal to 4 columns");continue}let n;try{n={dt:4,chr:t[0],start:Number(t[1]),stop:Number(t[2]),value:Number(t[3])}}catch(t){e.push(t);continue}o.push(n)}}function u(t,o){const e=t.toLowerCase();const n=Object.values(s).find((t=>t.key.toLowerCase()===e||t.label.toLowerCase()===e));if(n){return n.key}else{o.push(`Invalid mutation class: ${t}`)}}export{n as launch};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{m as t,g as e,d as s}from"./tk-
|
|
1
|
+
import{m as t,g as e,d as s}from"./tk-ac524564.js";import{T as a}from"./toggleButtons-c4d6f260.js";import{aN as o}from"./app-6fb77603.js";import{r as l}from"./table-0daf2b89.js";import{f as n}from"./FilterStateless-16a33070.js";import{g as i}from"./FilterRxComp-02e68f1b.js";import"./termsetting-492eefa7.js";import{v as r}from"./violinRenderer-14fa200d.js";import"./block.legend-93d85a6e.js";import"./vcf-d357ce08.js";import"./partition-db811f6b.js";import"./arc-3d6751aa.js";import"./constant-426a1483.js";import"./math-2fb199c6.js";import"./axis-747c801e.js";import"./legacy-d3-polyfill-bdb2d792.js";import"./regression.results-4767144e.js";import"./axisstyle-fac7f76b.js";import"./ColorScale-b991fc9e.js";import"./log-c26b6cfd.js";import"./block-75d4ff92.js";import"./checkbox-96437f4d.js";import"./pointer-c7475677.js";import"./downloadTextfile-5723af95.js";import"./radiobutton-09bff425.js";import"./niceNumLabels-29a7c6ca.js";import"./rehydrateFilter-12d118cb.js";import"./tslib.es6-c3c2d88f.js";import"./partjson.esm-b3f1fc21.js";import"./termdb.bins-39d11f24.js";import"path";import"./brush-9faa7ae7.js";import"./nodrag-b2737073.js";import"./line-264f8f9e.js";import"./basis-3870f5ba.js";function m(e,s,a,o){if(!s.leftlabels.doms.samples){s.leftlabels.doms.samples=t(s,a,o)}if(e.sampleTotalNumber){s.leftlabels.doms.samples.attr("class","sja_clbtext2").style("opacity",1).text(`${e.sampleTotalNumber} sample${e.sampleTotalNumber>1?"s":""}`).attr("data-testid","sjpp_mds3tk_samples_label").on("click",(async t=>{s.menutip.clear().showunder(t.target);await d(s,a);const o=s.menutip.d.append("div").style("margin","10px");g(o,e,s,a)}))}else{s.leftlabels.doms.samples.text("No samples").attr("class","").style("opacity",.5).on("click",null)}}function p(s,a,o,l){if(!a.leftlabels.doms.filterObj){a.leftlabels.doms.filterObj=t(a,o,l)}a.leftlabels.doms.filterObj.text(e(a.filterObj)).on("click",(async t=>{a.menutip.clear().showunder(t.target);const e={holder:a.menutip.d.append("div").style("margin","10px"),vocabApi:a.mds.termdb.vocabApi,callback:t=>{a.filterObj=t;a.load()}};c(e,o);n(e).main(a.filterObj)}))}function c(t,e){if(e.usegm){t.getCategoriesArguments={currentGeneNames:[e.usegm.name]}}else{t.getCategoriesArguments={rglst:structuredClone(e.rglst)}}}async function d(t,e){if(!t.mds.variant2samples.twLst){return}const s=t.menutip.d.append("div").style("margin","10px");const a=s.append("div").text("Loading...");try{const{summary:o}=await t.mds.getSamples({isSummary:true});t.leftlabels.__samples_data=o;a.remove();await f(o,s.append("div").attr("class","sja_mds3samplesummarydiv"),t,e)}catch(t){a.text(`Error: ${t.message||t}`);if(t.stack)console.log(t.stack)}}async function f(t,e,s,o){const l=[];for(const{termid:e,numbycategory:a}of t){l.push({label:s.mds.variant2samples.twLst.find((t=>t.term.id==e)).term.name+(a?`<span style="opacity:.8;font-size:.8em;float:right;margin-left: 5px;">n=${a.length}</span>`:"")})}new a({holder:e,tabsPosition:"vertical",linePosition:"right",tabs:l}).main();for(const[e,a]of t.entries()){const t=l[e].contentHolder.style("padding-left","20px");if(a.numbycategory){t.append("div").text("Click a category to create new track.").style("margin-bottom","10px").style("font-size",".8em").style("opacity",.5);b(a.termid,t,a.numbycategory,s,o);continue}if(a.density_data){if(!Number.isFinite(a.density_data.minvalue)||!Number.isFinite(a.density_data.maxvalue)){t.append("div").text("No data");continue}t.append("div").text("Select a range to create new track.").style("margin-bottom","10px").style("font-size",".8em").style("opacity",.5);y(a.termid,t,a,s,o);continue}throw"unknown summary data"}}function b(t,e,s,a,n){const i=a.mds.variant2samples.twLst.find((e=>e.term.id==t));if(!i)throw"showSummary4oneTerm(): tw not found from variant2samples.twLst";const r=[];for(const[t,e,a]of s){const s=[{value:i.term.values?.[t]?.label||t},{html:a==undefined?"":o(null,{f:e/a,v1:e,v2:a})},{html:e+(a?' <span style="font-size:.8em">/ '+a+"</span>":"")}];r.push(s)}l({div:e,rows:r,columns:[{nowrap:true},{},{}],showHeader:false,singleMode:true,noRadioBtn:true,noButtonCallback:t=>{m(s[t][0])}});async function m(e){a.menutip.clear();const o=await a.mds.termdb.vocabApi.getterm(t);if(!o.values||Object.keys(o.values).length==0){o.values={};for(const t of s){o.values[t[0]]={label:t[0],samplecount:t[1]}}}const l={type:"tvs",tvs:{term:o,values:[{key:e}]}};const i={type:"mds3",dslabel:a.dslabel,filter0:a.filter0,showCloseLeftlabel:true,filterObj:u(a,l),allow2selectSamples:a.allow2selectSamples};const r=n.block_addtk_template(i);n.tk_load(r)}}function u(t,e){if(t.filterObj){return i({type:"tvslst",join:"and",in:true,lst:[t.filterObj,e]})}return{type:"tvslst",in:true,join:"",lst:[e]}}async function y(t,e,s,a,o){const l=await a.mds.termdb.vocabApi.getterm(t);const n=async t=>{a.menutip.clear();const e={type:"tvs",tvs:{term:l,ranges:[{start:t.range_start,stop:t.range_end}]}};const s={type:"mds3",dslabel:a.dslabel,filter0:a.filter0,showCloseLeftlabel:true,filterObj:u(a,e),allow2selectSamples:a.allow2selectSamples};const n=o.block_addtk_template(s);o.tk_load(n)};const i=l.valueConversion?l.valueConversion.scaleFactor:1;const m=new r(e,s.density_data,400,100,10,20,n,i);m.render()}function g(t,e,a,o){t.append("div").text(`List ${e.sampleTotalNumber} sample${e.sampleTotalNumber>1?"s":""}`).attr("class","sja_menuoption sja_mds3_slb_sampletablebtn").on("click",(async()=>{a.menutip.clear();const t=a.menutip.d.append("div").text("Loading...").style("margin","15px");try{const{samples:e}=await a.mds.getSamples();await s(e,{div:a.menutip.d,tk:a,block:o});t.remove()}catch(e){t.text(e.message||e);console.log(e)}}))}export{p as makeSampleFilterLabel,m as makeSampleLabel};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{aM as t,aL as o,a8 as r}from"./app-
|
|
1
|
+
import{aM as t,aL as o,a8 as r}from"./app-6fb77603.js";import{s as n}from"./legacy-d3-polyfill-bdb2d792.js";function a(a){if(a.geneexpression){if(a.geneexpression.maf){try{a.geneexpression.maf.get=new Function(...a.geneexpression.maf.get)}catch(t){return"invalid Javascript for get() of expression.maf of "+a.label}}}if(a.cohort){if(a.cohort.raw&&a.cohort.tosampleannotation){if(!a.cohort.key4annotation){return"cohort.tosampleannotation in use by .key4annotation missing of "+a.label}if(!a.cohort.annotation){a.cohort.annotation={}}let t=0;for(const o of a.cohort.raw){const r=o[a.cohort.tosampleannotation.samplekey];if(r){const t={};for(const r in o){t[r]=o[r]}a.cohort.annotation[r]=t}else{t++}}if(t)return t+" rows has no sample name from sample annotation of "+a.label;delete a.cohort.tosampleannotation}if(a.cohort.levels){if(a.cohort.raw){const r=t(a.cohort.raw,a.cohort.levels);a.cohort.root=o()(r);a.cohort.root.sum((t=>t.value))}}if(a.cohort.raw){delete a.cohort.raw}a.cohort.suncolor=r(n)}if(a.snvindel_attributes){for(const t of a.snvindel_attributes){if(t.get){try{t.get=new Function(...t.get)}catch(o){return"invalid Javascript for getter of "+JSON.stringify(t)}}else if(t.lst){for(const o of t.lst){if(o.get){try{o.get=new Function(...o.get)}catch(t){return"invalid Javascript for getter of "+JSON.stringify(o)}}}}}}if(a.stratify){if(!Array.isArray(a.stratify)){return"stratify is not an array in "+a.label}for(const t of a.stratify){if(!t.label){return"stratify method lacks label in "+a.label}if(t.bycohort){if(!a.cohort){return"stratify method "+t.label+" using cohort but no cohort in "+a.label}}else{if(!t.attr1){return"stratify method "+t.label+" not using cohort but no attr1 in "+a.label}if(!t.attr1.label){return".attr1.label missing in "+t.label+" in "+a.label}if(!t.attr1.k){return".attr1.k missing in "+t.label+" in "+a.label}}}}if(a.url4variant){for(const t of a.url4variant){t.makelabel=new Function(...t.makelabel);t.makeurl=new Function(...t.makeurl)}}}export{a as validate_oldds};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a1 as t,a2 as n,a3 as e,a4 as r,a5 as i,W as o}from"./app-
|
|
1
|
+
import{a1 as t,a2 as n,a3 as e,a4 as r,a5 as i,W as o}from"./app-6fb77603.js";function a(t,n){t=t.slice();var e=0,r=t.length-1,i=t[e],o=t[r],a;if(o<i){a=e,e=r,r=a;a=i,i=o,o=a}t[e]=n.floor(i);t[r]=n.ceil(o);return t}function l(t){return Math.log(t)}function f(t){return Math.exp(t)}function u(t){return-Math.log(-t)}function c(t){return-Math.exp(-t)}function s(t){return isFinite(t)?+("1e"+t):t<0?0:t}function h(t){return t===10?s:t===Math.E?Math.exp:n=>Math.pow(t,n)}function M(t){return t===Math.E?Math.log:t===10&&Math.log10||t===2&&Math.log2||(t=Math.log(t),n=>Math.log(n)/t)}function p(t){return(n,e)=>-t(-n,e)}function g(t){const n=t(l,f);const e=n.domain;let s=10;let g;let m;function b(){g=M(s),m=h(s);if(e()[0]<0){g=p(g),m=p(m);t(u,c)}else{t(l,f)}return n}n.base=function(t){return arguments.length?(s=+t,b()):s};n.domain=function(t){return arguments.length?(e(t),b()):e()};n.ticks=t=>{const n=e();let i=n[0];let o=n[n.length-1];const a=o<i;if(a)[i,o]=[o,i];let l=g(i);let f=g(o);let u;let c;const h=t==null?10:+t;let M=[];if(!(s%1)&&f-l<h){l=Math.floor(l),f=Math.ceil(f);if(i>0)for(;l<=f;++l){for(u=1;u<s;++u){c=l<0?u/m(-l):u*m(l);if(c<i)continue;if(c>o)break;M.push(c)}}else for(;l<=f;++l){for(u=s-1;u>=1;--u){c=l>0?u/m(-l):u*m(l);if(c<i)continue;if(c>o)break;M.push(c)}}if(M.length*2<h)M=r(i,o,h)}else{M=r(l,f,Math.min(f-l,h)).map(m)}return a?M.reverse():M};n.tickFormat=(t,e)=>{if(t==null)t=10;if(e==null)e=s===10?"s":",";if(typeof e!=="function"){if(!(s%1)&&(e=i(e)).precision==null)e.trim=true;e=o(e)}if(t===Infinity)return e;const r=Math.max(1,s*t/n.ticks().length);return t=>{let n=t/m(Math.round(g(t)));if(n*s<s-.5)n*=s;return n<=r?e(t):""}};n.nice=()=>e(a(e(),{floor:t=>m(Math.floor(g(t))),ceil:t=>m(Math.ceil(g(t)))}));return n}function m(){const r=g(t()).domain([1,10]);r.copy=()=>n(r,m()).base(r.base());e.apply(r,arguments);return r}export{m as l,a as n};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as e}from"./genesearch-
|
|
1
|
+
import{a as e}from"./genesearch-ffd88bf2.js";import{M as o,b as s,e as t}from"./app-6fb77603.js";import"./tslib.es6-c3c2d88f.js";const n="hg38";const a="GDC";const r=new o({padding:""});async function i(o,i,c){const f=c[n];if(!f)throw n+" missing";const m=i.append("div").style("margin-left","20px");m.append("div").text("To view GDC mutations on a gene, enter one of gene symbol (MYC), alias (c-Myc), GENCODE accession (ENSG00000136997, ENST00000621592), or RefSeq accession (NM_002467).");const d=i.append("div").attr("class","sja_geneSearch4GDCmds3_blockdiv");const p={genome:f,tip:r,row:m,searchOnly:"gene",callback:h,geneSymbol:o.geneSymbol};const g=e(p);let y;if(typeof o.geneSearch4GDCmds3.postRender=="function"){await o.geneSearch4GDCmds3.postRender({tip:r})}async function h(e=true){if(!g.geneSymbol){if(e)throw"geneSymbol missing"}d.selectAll("*").remove();const r=(await s(`genelookup?deep=1&input=${g.geneSymbol}&genome=${n}`)).gmlst;if(!Array.isArray(r)||r.length==0)throw"gmlst is not non-empty array";y=l(g,r);const i={query:y,genome:f,holder:d,gmmode:r.some((e=>e.coding))?"protein":"exon only",hide_dsHandles:o.hide_dsHandles,tklst:o.tracks?o.tracks:[{type:"mds3",dslabel:a,allow2selectSamples:o.allow2selectSamples}]};if(typeof o.geneSearch4GDCmds3.onloadalltk_always=="function"){i.onloadalltk_always=o.geneSearch4GDCmds3.onloadalltk_always}return await t(i)}const u={update:e=>{Object.assign(o,e);o.isoform=y;h(false)}};return u}function l(e,o){if(e.fromWhat){if(o.some((o=>o.isoform.toUpperCase()==e.fromWhat.toUpperCase()))){return e.fromWhat}if(e.fromWhat.toUpperCase().startsWith("ENSG")){for(const e of o){if(e.isdefault&&e.isoform.startsWith("ENST"))return e.isoform}}}const s=o.find((e=>e.isdefault));if(s)return s.isoform;return o[0].isoform}export{i as init};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{M as e,y as t,b as l}from"./app-
|
|
1
|
+
import{M as e,y as t,b as l}from"./app-6fb77603.js";import{r as c}from"./table-0daf2b89.js";import{m as n}from"./radiobutton-09bff425.js";import"./tslib.es6-c3c2d88f.js";function o(e){if(e>1e9)return(e/1e9).toFixed(2)+" GB";if(e>1e6)return(e/1e6).toFixed(2)+" MB";if(e>1e3)return(e/1e3).toFixed(2)+" KB";return e+" Bytes"}const u=new e;const r=[{label:"Case"},{label:"Project"},{label:"Samples"},{label:"File Size"}];const s=[{column:"Hugo_Symbol",selected:true},{column:"Entrez_Gene_Id",selected:true},{column:"Center",selected:true},{column:"NCBI_Build",selected:true},{column:"Chromosome",selected:true},{column:"Start_Position",selected:true},{column:"End_Position",selected:true},{column:"Strand",selected:true},{column:"Variant_Classification",selected:true},{column:"Variant_Type",selected:true},{column:"Reference_Allele",selected:true},{column:"Tumor_Seq_Allele1",selected:true},{column:"Tumor_Seq_Allele2",selected:true},{column:"dbSNP_RS",selected:true},{column:"dbSNP_Val_Status",selected:true},{column:"Tumor_Sample_Barcode",selected:true},{column:"Matched_Norm_Sample_Barcode",selected:true},{column:"Match_Norm_Seq_Allele1",selected:true},{column:"Match_Norm_Seq_Allele2",selected:true},{column:"Tumor_Validation_Allele1",selected:true},{column:"Tumor_Validation_Allele2",selected:true},{column:"Match_Norm_Validation_Allele1",selected:true},{column:"Match_Norm_Validation_Allele2",selected:true},{column:"Verification_Status",selected:true},{column:"Validation_Status",selected:true},{column:"Mutation_Status",selected:true},{column:"Sequencing_Phase",selected:true},{column:"Sequence_Source",selected:true},{column:"Validation_Method",selected:true},{column:"Score",selected:true},{column:"BAM_File",selected:true},{column:"Sequencer",selected:true},{column:"Tumor_Sample_UUID",selected:true},{column:"Matched_Norm_Sample_UUID",selected:true},{column:"HGVSc",selected:true},{column:"HGVSp",selected:true},{column:"HGVSp_Short",selected:true},{column:"Transcript_ID",selected:true},{column:"Exon_Number",selected:true},{column:"t_depth",selected:true},{column:"t_ref_count",selected:true},{column:"t_alt_count",selected:true},{column:"n_depth",selected:true},{column:"n_ref_count",selected:true},{column:"n_alt_count",selected:true},{column:"all_effects",selected:true},{column:"Allele",selected:true},{column:"Gene",selected:true},{column:"Feature",selected:true},{column:"Feature_type",selected:true},{column:"One_Consequence",selected:true},{column:"Consequence",selected:true},{column:"cDNA_position",selected:true},{column:"CDS_position",selected:true},{column:"Protein_position",selected:true},{column:"Amino_acids",selected:true},{column:"Codons",selected:true},{column:"Existing_variation",selected:true},{column:"DISTANCE",selected:true},{column:"TRANSCRIPT_STRAND",selected:true},{column:"SYMBOL",selected:true},{column:"SYMBOL_SOURCE",selected:true},{column:"HGNC_ID",selected:true},{column:"BIOTYPE",selected:true},{column:"CANONICAL",selected:true},{column:"CCDS",selected:true},{column:"ENSP",selected:true},{column:"SWISSPROT",selected:true},{column:"TREMBL",selected:true},{column:"UNIPARC",selected:true},{column:"UNIPROT_ISOFORM",selected:true},{column:"RefSeq",selected:true},{column:"MANE",selected:true},{column:"APPRIS",selected:true},{column:"FLAGS",selected:true},{column:"SIFT",selected:true},{column:"PolyPhen",selected:true},{column:"EXON",selected:true},{column:"INTRON",selected:true},{column:"DOMAINS",selected:true},{column:"1000G_AF",selected:true},{column:"1000G_AFR_AF",selected:true},{column:"1000G_AMR_AF",selected:true},{column:"1000G_EAS_AF",selected:true},{column:"1000G_EUR_AF",selected:true},{column:"1000G_SAS_AF",selected:true},{column:"ESP_AA_AF",selected:true},{column:"ESP_EA_AF",selected:true},{column:"gnomAD_AF",selected:true},{column:"gnomAD_AFR_AF",selected:true},{column:"gnomAD_AMR_AF",selected:true},{column:"gnomAD_ASJ_AF",selected:true},{column:"gnomAD_EAS_AF",selected:true},{column:"gnomAD_FIN_AF",selected:true},{column:"gnomAD_NFE_AF",selected:true},{column:"gnomAD_OTH_AF",selected:true},{column:"gnomAD_SAS_AF",selected:true},{column:"MAX_AF",selected:true},{column:"MAX_AF_POPS",selected:true},{column:"gnomAD_non_cancer_AF",selected:true},{column:"gnomAD_non_cancer_AFR_AF",selected:true},{column:"gnomAD_non_cancer_AMI_AF",selected:true},{column:"gnomAD_non_cancer_AMR_AF",selected:true},{column:"gnomAD_non_cancer_ASJ_AF",selected:true},{column:"gnomAD_non_cancer_EAS_AF",selected:true},{column:"gnomAD_non_cancer_FIN_AF",selected:true},{column:"gnomAD_non_cancer_MID_AF",selected:true},{column:"gnomAD_non_cancer_NFE_AF",selected:true},{column:"gnomAD_non_cancer_OTH_AF",selected:true},{column:"gnomAD_non_cancer_SAS_AF",selected:true},{column:"gnomAD_non_cancer_MAX_AF_adj",selected:true},{column:"gnomAD_non_cancer_MAX_AF_POPS_adj",selected:true},{column:"CLIN_SIG",selected:true},{column:"SOMATIC",selected:true},{column:"PUBMED",selected:true},{column:"TRANSCRIPTION_FACTORS",selected:true},{column:"MOTIF_NAME",selected:true},{column:"MOTIF_POS",selected:true},{column:"HIGH_INF_POS",selected:true},{column:"MOTIF_SCORE_CHANGE",selected:true},{column:"miRNA",selected:true},{column:"IMPACT",selected:true},{column:"PICK",selected:true},{column:"VARIANT_CLASS",selected:true},{column:"TSL",selected:true},{column:"HGVS_OFFSET",selected:true},{column:"PHENO",selected:true},{column:"GENE_PHENO",selected:true},{column:"CONTEXT",selected:true},{column:"case_id",selected:true},{column:"GDC_FILTER",selected:true},{column:"COSMIC",selected:true},{column:"hotspot",selected:true},{column:"tumor_bam_uuid",selected:true},{column:"normal_bam_uuid",selected:true},{column:"RNA_Support",selected:true},{column:"RNA_depth",selected:true},{column:"RNA_ref_count",selected:true},{column:"RNA_alt_count",selected:true},{column:"callers",selected:true}];async function d({holder:e,filter0:l,callbacks:c,debugmode:n=false}){try{{const e=new Set;for(const t of s){if(!t.column)throw".column missing from an element";if(e.has(t.column))throw"duplicate column: "+t.column;e.add(t.column)}}o({filter0:l})}catch(l){console.log(l);t(e,l.message||l)}async function o({filter0:t}){e.selectAll("*").remove();const l={errDiv:e.append("div"),controlDiv:e.append("div"),tableDiv:e.append("div"),opts:{filter0:t,experimentalStrategy:"WXS"}};a(l);await m(l);if(typeof c?.postRender=="function"){c.postRender(u)}}const u={update:o};return u}function a(e){const t=e.controlDiv.append("table");{const l=t.append("tr");l.append("td").style("opacity",.7).text("Access");l.append("td").text("Open")}{const o=t.append("tr");o.append("td").style("opacity",.7).text("Workflow Type");o.append("td").text("Aliquot Ensemble Somatic Variant Merging and Masking")}{const r=t.append("tr");r.append("td").style("opacity",.7).text("Experimental Strategy");const d=r.append("td");n({holder:d,options:[{label:"WXS",value:"WXS",checked:e.opts.experimentalStrategy=="WXS"},{label:"Targeted Sequencing",value:"Targeted Sequencing",checked:e.opts.experimentalStrategy=="Targeted Sequencing"}],styles:{display:"inline"},callback:async t=>{e.opts.experimentalStrategy=t;await m(e)}})}{const a=t.append("tr");a.append("td").style("opacity",.7).text("Output Columns");const i=a.append("td");const _=i.append("span").attr("class","sja_clbtext").on("click",(e=>{const t=[],l=[];for(const[e,c]of s.entries()){t.push([{value:c.column}]);if(c.selected)l.push(e)}c({div:u.clear().showunder(e.target).d,rows:t,columns:[{label:"Column Name"}],selectedRows:l,noButtonCallback:(e,t)=>{s[e].selected=t.checked;p()}})}));p();function p(){_.text(`${s.reduce(((e,t)=>e+(t.selected?1:0)),0)} of ${s.length} columns selected, click to change`)}}}async function m(e){e.tableDiv.selectAll("*").remove();const n=e.tableDiv.append("div").text("Loading...");const u={experimentalStrategy:e.opts.experimentalStrategy};if(e.opts.filter0)u.filter0=e.opts.filter0;const d=await l("gdc/maf",{body:u});if(d.error)throw d.error;n.remove();{const t=e.tableDiv.append("div").style("margin","20px");if(d.filesTotal>d.files.length){t.append("div").text(`Showing first ${d.files.length} files out of ${d.filesTotal} total.`)}else{t.append("div").text(`Showing ${d.files.length} files.`)}}const a=[];for(const e of d.files){const t=[{html:`<a href=https://portal.gdc.cancer.gov/cases/${e.case_uuid} target=_blank>${e.case_submitter_id}</a>`},{value:e.project_id},{html:e.sample_types.map((e=>'<span class="sja_mcdot" style="padding:1px 8px;background:#ddd;color:black;white-space:nowrap">'+e+"</span>")).join(" ")},{value:o(e.file_size),url:"https://portal.gdc.cancer.gov/files/"+e.id}];a.push(t)}c({rows:a,columns:r,resize:true,div:e.tableDiv.append("div"),selectAll:true,dataTestId:"sja_mafFileTable",buttons:[{text:"Aggregate selected MAF files and download",onChange:m,callback:i}]});function m(e,t){let l=0;for(const t of e)l+=d.files[t].file_size;if(l==0){t.innerHTML="No file selected";t.disabled=true;return}t.disabled=false;t.innerHTML=l<d.maxTotalSizeCompressed?`Download ${o(l)} compressed MAF data`:`Download ${o(d.maxTotalSizeCompressed)} compressed MAF data (${o(l)} selected)`}async function i(c,n){const o=s.filter((e=>e.selected)).map((e=>e.column));if(o.length==0){window.alert("No output columns selected.");return}const u=[];for(const e of c){u.push(d.files[e].id)}if(u.length==0)return;const r=n.innerHTML;n.innerHTML="Loading... Please wait";n.disabled=true;let a;try{a=await l("gdc/mafBuild",{body:{fileIdLst:u,columns:o}});if(a.error)throw a.error}catch(l){t(e.errDiv,l);n.innerHTML=r;n.disabled=false;return}n.innerHTML=r;n.disabled=false;const m=document.createElement("a");m.href=URL.createObjectURL(a);m.download=`cohortMAF.${(new Date).toISOString().split("T")[0]}.gz`;m.style.display="none";document.body.appendChild(m);m.click();document.body.removeChild(m)}}export{d as gdcMAFui};
|