@sjcrh/proteinpaint-client 2.74.2 → 2.76.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{2dmaf-b2d78c57.js → 2dmaf-74b99126.js} +1 -1
- package/dist/AppHeader-cecb39c2.js +1 -0
- package/dist/{ColorScale-9c76aef3.js → ColorScale-21cab8d2.js} +1 -1
- package/dist/DEanalysis-95bad59a.js +1 -0
- package/dist/Disco-a6e921a0.js +1 -0
- package/dist/Disco.UI-9ad999ed.js +1 -0
- package/dist/{DragControls-586f72db.js → DragControls-e3b6a937.js} +1 -1
- package/dist/{DziViewer-6311327c.js → DziViewer-354a790d.js} +1 -1
- package/dist/FilterRxComp-701a1480.js +1 -0
- package/dist/{FilterStateless-046081c2.js → FilterStateless-54c0b763.js} +1 -1
- package/dist/{HicApp-40e44cba.js → HicApp-d5a946bf.js} +1 -1
- package/dist/{OrbitControls-0cda1772.js → OrbitControls-694652cd.js} +1 -1
- package/dist/WSIViewer-dc7f8eb0.js +1 -0
- package/dist/adSandbox-f438e388.js +1 -0
- package/dist/app-3320ab6f.js +1 -0
- package/dist/app-649f8357.js +1 -0
- package/dist/app-b369b169.js +1 -0
- package/dist/app.js +1 -1
- package/dist/bam-431875ef.js +1 -0
- package/dist/barchart-8277ed43.js +1 -0
- package/dist/barchart.events-da29c90d.js +1 -0
- package/dist/{bars.renderer-5f7a4174.js → bars.renderer-dcfdd59b.js} +1 -1
- package/dist/block-6aedd569.js +1 -0
- package/dist/block.lazyload-87b12654.js +1 -0
- package/dist/block.legend-d3f61ef7.js +1 -0
- package/dist/{block.mds-effc078d.js → block.mds-3ad17dfa.js} +1 -1
- package/dist/{block.mds.cnv-ec861a26.js → block.mds.cnv-857ba868.js} +1 -1
- package/dist/{block.mds.expressionrank-a2ad7c80.js → block.mds.expressionrank-7e3b208c.js} +1 -1
- package/dist/{block.mds.expressionstat-31dc5595.js → block.mds.expressionstat-f2d31c86.js} +1 -1
- package/dist/{block.mds.geneboxplot-3ca857ce.js → block.mds.geneboxplot-f0fbaf12.js} +1 -1
- package/dist/{block.mds.junction-debba938.js → block.mds.junction-7f87f48f.js} +1 -1
- package/dist/{block.mds.svcnv-8dc5abdf.js → block.mds.svcnv-ac035c12.js} +1 -1
- package/dist/{block.mds.svcnv.share-81e62600.js → block.mds.svcnv.share-886d9479.js} +1 -1
- package/dist/block.mds2-7852c1ee.js +1 -0
- package/dist/{block.svg-9121e8e7.js → block.svg-9b916fa6.js} +1 -1
- package/dist/{block.tk.aicheck-c1b478e9.js → block.tk.aicheck-6770e333.js} +1 -1
- package/dist/{block.tk.ase-0f6ded48.js → block.tk.ase-ee807e59.js} +1 -1
- package/dist/{block.tk.bam-7cd06aee.js → block.tk.bam-00fba6e8.js} +1 -1
- package/dist/{block.tk.bedgraphdot-3ef8b94e.js → block.tk.bedgraphdot-7fda78e9.js} +1 -1
- package/dist/{block.tk.bigwig.ui-d1248810.js → block.tk.bigwig.ui-cc1a42f3.js} +1 -1
- package/dist/{block.tk.hicstraw-ee731e55.js → block.tk.hicstraw-526470e3.js} +1 -1
- package/dist/{block.tk.junction-4d8cab4d.js → block.tk.junction-b43a4cda.js} +1 -1
- package/dist/{block.tk.junction.textmatrixui-a6430b27.js → block.tk.junction.textmatrixui-a60ed78a.js} +1 -1
- package/dist/{block.tk.ld-8429a18b.js → block.tk.ld-d15bde41.js} +1 -1
- package/dist/{block.tk.menu-3f31f958.js → block.tk.menu-3aeb93c6.js} +1 -1
- package/dist/{block.tk.pgv-07e46705.js → block.tk.pgv-9af2bd64.js} +1 -1
- package/dist/boxplot-e17a17b7.js +1 -0
- package/dist/brainImaging-bf2ceee9.js +1 -0
- package/dist/{brush-c386fe3d.js → brush-aa175142.js} +1 -1
- package/dist/categorical-a52014a1.js +1 -0
- package/dist/condition-c646e357.js +1 -0
- package/dist/controls-287e6efa.js +1 -0
- package/dist/{controls.btns-1cb2bfab.js → controls.btns-79b805dd.js} +1 -1
- package/dist/controls.config-28d6d6a8.js +1 -0
- package/dist/cuminc-9e275854.js +1 -0
- package/dist/{customdata.inputui-cbd712ea.js → customdata.inputui-dc49d94b.js} +1 -1
- package/dist/dataDownload-3a3d4f33.js +1 -0
- package/dist/databrowser.ui-d8d3f8fd.js +1 -0
- package/dist/{density-19266ebf.js → density-a82a8b1c.js} +1 -1
- package/dist/dictionary-c5a19d90.js +1 -0
- package/dist/{drag-0b968811.js → drag-7b30ba17.js} +1 -1
- package/dist/{e2pca-b8752945.js → e2pca-82765817.js} +1 -1
- package/dist/{ep-a86b185a.js → ep-d017ec2f.js} +1 -1
- package/dist/facet-a9b44ef3.js +1 -0
- package/dist/{fusion.parse-244b2b97.js → fusion.parse-d40d0b9d.js} +1 -1
- package/dist/geneExpClustering-34c3f518.js +1 -0
- package/dist/geneExpression-0d1b7244.js +1 -0
- package/dist/{geneExpression-e0430f2e.js → geneExpression-589f485b.js} +1 -1
- package/dist/{geneExpression-387205bf.js → geneExpression-7d14983f.js} +1 -1
- package/dist/geneORA-903a780f.js +1 -0
- package/dist/{geneVariant-7de021b6.js → geneVariant-89601b34.js} +1 -1
- package/dist/geneVariant-92c4e870.js +1 -0
- package/dist/{genefusion.ui-a331de19.js → genefusion.ui-7e22e811.js} +1 -1
- package/dist/{genesearch-ea59f5d4.js → genesearch-a4e19f0d.js} +1 -1
- package/dist/geneset-108a39d2.js +1 -0
- package/dist/genomeBrowser-12f86a36.js +1 -0
- package/dist/genomeBrowser.controls-d5067811.js +1 -0
- package/dist/{groupsetting-20ffef77.js → groupsetting-b4416a96.js} +1 -1
- package/dist/gsea-543dab25.js +1 -0
- package/dist/hierCluster-26e14090.js +1 -0
- package/dist/hierCluster.config-98e82dff.js +1 -0
- package/dist/{hierCluster.interactivity-9b433033.js → hierCluster.interactivity-e56f6542.js} +1 -1
- package/dist/hierCluster.renderers-74a64cf5.js +1 -0
- package/dist/{html.legend-abb5452e.js → html.legend-a3f4ebfe.js} +1 -1
- package/dist/imagePlot-b9eae4ae.js +1 -0
- package/dist/{lasso-55cf4057.js → lasso-f767f634.js} +1 -1
- package/dist/launch.adhoc-abca6af3.js +1 -0
- package/dist/leftlabel.sample-24c2388d.js +1 -0
- package/dist/legacyDataset-e0e201ab.js +1 -0
- package/dist/{log-cf45fcf2.js → log-99af3443.js} +1 -1
- package/dist/{lollipop-c5b6e615.js → lollipop-806f8fa4.js} +1 -1
- package/dist/{maf-7535f1f9.js → maf-b06579e4.js} +1 -1
- package/dist/{maftimeline-1292ab62.js → maftimeline-4840a380.js} +1 -1
- package/dist/matrix-00bb50ff.js +1 -0
- package/dist/matrix.cells-914dd0c6.js +1 -0
- package/dist/{matrix.cluster-168bc96b.js → matrix.cluster-783ceab0.js} +1 -1
- package/dist/matrix.config-6ce74dfe.js +1 -0
- package/dist/matrix.controls-7b2a6f95.js +1 -0
- package/dist/{matrix.data-b1d0febe.js → matrix.data-dac4f1b7.js} +1 -1
- package/dist/{matrix.dom-00defa30.js → matrix.dom-4e10bbe9.js} +1 -1
- package/dist/matrix.groups-b9fca14a.js +1 -0
- package/dist/matrix.interactivity-84169b43.js +1 -0
- package/dist/{matrix.layout-c2345231.js → matrix.layout-dd5a44fd.js} +1 -1
- package/dist/matrix.legend-ac6d45e6.js +1 -0
- package/dist/matrix.renderers-78010275.js +1 -0
- package/dist/matrix.serieses-9b4fd744.js +1 -0
- package/dist/matrix.sort-014d798d.js +1 -0
- package/dist/{matrix.sorterUi-a741ba2e.js → matrix.sorterUi-9bf7e6f9.js} +1 -1
- package/dist/{mavb-92136d17.js → mavb-c6be46fc.js} +1 -1
- package/dist/{mds.fimo-c03115b4.js → mds.fimo-bff6a1ed.js} +1 -1
- package/dist/mds.samplescatterplot-9a02b9fb.js +1 -0
- package/dist/{mds.survivalplot-366db380.js → mds.survivalplot-055549f4.js} +1 -1
- package/dist/{metaboliteIntensity-ddb6e480.js → metaboliteIntensity-fac92f8b.js} +1 -1
- package/dist/niceNumLabels-238aabce.js +1 -0
- package/dist/{nodrag-2c046d31.js → nodrag-16ad4b03.js} +1 -1
- package/dist/{notify-44ebc0df.js → notify-224cccbd.js} +1 -1
- package/dist/{numeric-918d4686.js → numeric-b0b17185.js} +1 -1
- package/dist/numeric.binary-1f9e93f2.js +1 -0
- package/dist/numeric.continuous-ebcd0567.js +1 -0
- package/dist/numeric.discrete-7b97044a.js +1 -0
- package/dist/numeric.spline-1be88f3d.js +1 -0
- package/dist/numeric.toggle-7fa2a770.js +1 -0
- package/dist/oncomatrix-351af2a0.js +1 -0
- package/dist/{parseData-e66308cd.js → parseData-21fe9822.js} +1 -1
- package/dist/partjson.esm-b3f1fc21.js +1 -0
- package/dist/{plot.2dvaf-73dbfbd1.js → plot.2dvaf-18a35e4b.js} +1 -1
- package/dist/plot.app-30c4b8e5.js +1 -0
- package/dist/plot.barplot-7c4865a2.js +1 -0
- package/dist/{plot.boxplot-641da058.js → plot.boxplot-fe3046c6.js} +1 -1
- package/dist/plot.brainImaging-2ceb6023.js +1 -0
- package/dist/plot.disco-6011f87f.js +1 -0
- package/dist/{plot.dzi-41ea26e5.js → plot.dzi-6728a7c8.js} +1 -1
- package/dist/plot.ssgq-5581dc56.js +1 -0
- package/dist/{plot.vaf2cov-80e58833.js → plot.vaf2cov-b2284c64.js} +1 -1
- package/dist/{plot.wsi-51cc48ef.js → plot.wsi-9a9d4034.js} +1 -1
- package/dist/profileBarchart-0476f1f8.js +1 -0
- package/dist/profileHome-32eb9b50.js +1 -0
- package/dist/profilePlot-c7e099e8.js +1 -0
- package/dist/profilePolar-6b981e63.js +1 -0
- package/dist/profileRadar-bca1cc03.js +1 -0
- package/dist/profileRadarFacility-bbb1ecd8.js +1 -0
- package/dist/profileSummary-b114204f.js +1 -0
- package/dist/recover-49e09de0.js +1 -0
- package/dist/regression.inputs-a761f40d.js +1 -0
- package/dist/regression.inputs.values.table-5929d25a.js +1 -0
- package/dist/regression.results-69bc42d0.js +1 -0
- package/dist/{renderPvalueTable-895a72c2.js → renderPvalueTable-dc5d15f2.js} +1 -1
- package/dist/sampleScatter-2d0ed680.js +1 -0
- package/dist/{sampleScatter.rendererThree-5e686004.js → sampleScatter.rendererThree-0b12ac61.js} +2 -2
- package/dist/sampleView-484ab133.js +1 -0
- package/dist/samplelst-689796e6.js +1 -0
- package/dist/{samplematrix-2a1d7d82.js → samplematrix-2b137a05.js} +1 -1
- package/dist/scatter-205e013f.js +1 -0
- package/dist/{select2Terms-b4fffc50.js → select2Terms-b21e184a.js} +1 -1
- package/dist/{selectGenomeWithTklst-acf7e568.js → selectGenomeWithTklst-466995b4.js} +1 -1
- package/dist/singleCellCellType-5db730bb.js +1 -0
- package/dist/{singleCellGeneExpression-6de17162.js → singleCellGeneExpression-7147a2d0.js} +1 -1
- package/dist/singleCellPlot-73b2738f.js +1 -0
- package/dist/{singlecell-f76c856a.js → singlecell-24409b72.js} +1 -1
- package/dist/singlecell-bca774ed.js +1 -0
- package/dist/{snp-9590a1b4.js → snp-37d06246.js} +1 -1
- package/dist/snp-a8388ce4.js +1 -0
- package/dist/snplocus-7a1ea8c9.js +1 -0
- package/dist/{snplst-007a1926.js → snplst-6865d7c7.js} +1 -1
- package/dist/{spliceevent.a53ss.diagram-63dfef69.js → spliceevent.a53ss.diagram-e2eab72b.js} +1 -1
- package/dist/{spliceevent.exonskip.diagram-76fa9af8.js → spliceevent.exonskip.diagram-4d5df3a1.js} +1 -1
- package/dist/spliceevent.exonskip.getdefault-a94aad6e.js +1 -0
- package/dist/{spliceevent.noeventdiagram-64a099e0.js → spliceevent.noeventdiagram-ea97b0fb.js} +1 -1
- package/dist/{spliceevent.phrase-770c8cac.js → spliceevent.phrase-c5832470.js} +1 -1
- package/dist/{stattable-f1189f0f.js → stattable-7c5ecc2f.js} +1 -1
- package/dist/{style.gdc-89cfdb0f.js → style.gdc-131f3c77.js} +1 -1
- package/dist/summary-5ec455d3.js +1 -0
- package/dist/{sunburst-d5379952.js → sunburst-533902a7.js} +1 -1
- package/dist/survival-92250664.js +1 -0
- package/dist/survival-e16e068f.js +1 -0
- package/dist/{svg.download-86850940.js → svg.download-35926549.js} +1 -1
- package/dist/{svg.legend-a94b0697.js → svg.legend-8d490df2.js} +1 -1
- package/dist/{svgraph-c57b9ae3.js → svgraph-6fac8cbc.js} +1 -1
- package/dist/{svmr-cf6f1b27.js → svmr-d07ff695.js} +1 -1
- package/dist/table-29d5a973.js +1 -0
- package/dist/table-ad744310.js +1 -0
- package/dist/termInfo-bf99a37e.js +1 -0
- package/dist/{termdb.bins-9faa5170.js → termdb.bins-8b656cc3.js} +1 -1
- package/dist/termsetting-33ea66f1.js +1 -0
- package/dist/tk-071a7550.js +1 -0
- package/dist/{toggleButtons-002aeda1.js → toggleButtons-dbdbad01.js} +1 -1
- package/dist/tp.ui-9c2e9fc5.js +1 -0
- package/dist/tslib.es6-c3c2d88f.js +1 -0
- package/dist/tvs.density-f6128793.js +1 -0
- package/dist/{tvs.geneVariant-3a65ad94.js → tvs.geneVariant-ca4bdbb1.js} +1 -1
- package/dist/tvs.numeric-0260a825.js +1 -0
- package/dist/{tvs.samplelst-1eeb586b.js → tvs.samplelst-cb71b3bf.js} +1 -1
- package/dist/{uiUtils-1336bad7.js → uiUtils-f1bd2bcc.js} +1 -1
- package/dist/{variantBrowser-f0c812c1.js → variantBrowser-7c540224.js} +1 -1
- package/dist/{vcf-c4a23924.js → vcf-5cc55588.js} +1 -1
- package/dist/violin-2ba509eb.js +1 -0
- package/dist/violin.interactivity-4da6d7a9.js +1 -0
- package/dist/{violin.renderer-dafd89fa.js → violin.renderer-ce024265.js} +1 -1
- package/dist/{violinRenderer-8215f40d.js → violinRenderer-f7c96a60.js} +1 -1
- package/dist/{viridis-ffd14c4d.js → viridis-01ab20c5.js} +1 -1
- package/dist/{y-dd197cc9.js → y-67939f83.js} +1 -1
- package/dist/{zoom-9c63e74c.js → zoom-25dce8b9.js} +1 -1
- package/package.json +6 -4
- package/dist/AppHeader-a2a7e518.js +0 -1
- package/dist/DEanalysis-a6b50e49.js +0 -1
- package/dist/Disco-1c71b7dd.js +0 -1
- package/dist/Disco.UI-4c16ee50.js +0 -1
- package/dist/FilterRxComp-242f4615.js +0 -1
- package/dist/WSIViewer-d90032d7.js +0 -1
- package/dist/adSandbox-3528c372.js +0 -1
- package/dist/app-07dee349.js +0 -1
- package/dist/app-a8c4854a.js +0 -1
- package/dist/app-ade9c62a.js +0 -1
- package/dist/bam-92483a98.js +0 -1
- package/dist/barchart-3e69d094.js +0 -1
- package/dist/barchart.events-9b11d97e.js +0 -1
- package/dist/block-dcb130fb.js +0 -1
- package/dist/block.lazyload-9f031cac.js +0 -1
- package/dist/block.legend-b2987cd9.js +0 -1
- package/dist/block.mds2-de6e0986.js +0 -1
- package/dist/boxplot-1178fffc.js +0 -1
- package/dist/brainImaging-98ed7aa2.js +0 -1
- package/dist/categorical-26528ce8.js +0 -1
- package/dist/condition-b0d74550.js +0 -1
- package/dist/controls-0bacec22.js +0 -1
- package/dist/controls.config-0ccc9d79.js +0 -1
- package/dist/controls.divide-a9fe9466.js +0 -1
- package/dist/controls.overlay-fe20d41d.js +0 -1
- package/dist/controls.term1-faa2efcf.js +0 -1
- package/dist/cuminc-7e2cac2d.js +0 -1
- package/dist/dataDownload-ade8d840.js +0 -1
- package/dist/databrowser.ui-716f0519.js +0 -1
- package/dist/dictionary-3f83ce63.js +0 -1
- package/dist/facet-6850cfed.js +0 -1
- package/dist/geneExpClustering-7fd3c87e.js +0 -1
- package/dist/geneExpression-6462537d.js +0 -1
- package/dist/geneORA-7eb818c4.js +0 -1
- package/dist/geneVariant-b58e924a.js +0 -1
- package/dist/geneset-9f69ad3f.js +0 -1
- package/dist/genomeBrowser-1b2b83f7.js +0 -1
- package/dist/genomeBrowser.controls-cd8ddeb1.js +0 -1
- package/dist/gsea-36376589.js +0 -1
- package/dist/hierCluster-f1e30c19.js +0 -1
- package/dist/hierCluster.config-da3510b1.js +0 -1
- package/dist/hierCluster.renderers-610d8860.js +0 -1
- package/dist/imagePlot-7089bdff.js +0 -1
- package/dist/launch.adhoc-d229fd55.js +0 -1
- package/dist/leftlabel.sample-a919168c.js +0 -1
- package/dist/legacyDataset-1cbcb67d.js +0 -1
- package/dist/matrix-0614794d.js +0 -1
- package/dist/matrix.cells-819d4991.js +0 -1
- package/dist/matrix.config-c54ca273.js +0 -1
- package/dist/matrix.controls-5eca7822.js +0 -1
- package/dist/matrix.groups-4660dd70.js +0 -1
- package/dist/matrix.interactivity-23d83183.js +0 -1
- package/dist/matrix.legend-2e647224.js +0 -1
- package/dist/matrix.renderers-43445f4f.js +0 -1
- package/dist/matrix.serieses-972fbe5d.js +0 -1
- package/dist/matrix.sort-80d9b788.js +0 -1
- package/dist/mds.samplescatterplot-1623e6d0.js +0 -1
- package/dist/niceNumLabels-6cfc1508.js +0 -1
- package/dist/numeric.binary-80467e8b.js +0 -1
- package/dist/numeric.continuous-69a62a15.js +0 -1
- package/dist/numeric.discrete-86181905.js +0 -1
- package/dist/numeric.spline-1b07fd13.js +0 -1
- package/dist/numeric.toggle-37c4bee8.js +0 -1
- package/dist/oncomatrix-475271da.js +0 -1
- package/dist/plot.app-aa916e0e.js +0 -1
- package/dist/plot.barplot-8b440a2b.js +0 -1
- package/dist/plot.brainImaging-2f796b0c.js +0 -1
- package/dist/plot.disco-43e18d2f.js +0 -1
- package/dist/plot.ssgq-e49cb70b.js +0 -1
- package/dist/profileBarchart-91463ab6.js +0 -1
- package/dist/profileHome-d37a6821.js +0 -1
- package/dist/profilePlot-9ca577cb.js +0 -1
- package/dist/profilePolar-19c7da5b.js +0 -1
- package/dist/profileRadar-8bf094e3.js +0 -1
- package/dist/profileRadarFacility-f9fd8971.js +0 -1
- package/dist/profileSummary-93999c14.js +0 -1
- package/dist/recover-36ada47f.js +0 -1
- package/dist/regression.inputs-cb57ece6.js +0 -1
- package/dist/regression.inputs.values.table-908bb37a.js +0 -1
- package/dist/regression.results-c186a8dc.js +0 -1
- package/dist/roundValue-b0d0517c.js +0 -1
- package/dist/sampleScatter-9d5b3630.js +0 -1
- package/dist/sampleView-2d895023.js +0 -1
- package/dist/samplelst-9f8343ff.js +0 -1
- package/dist/scatter-b4992f64.js +0 -1
- package/dist/singleCellCellType-84a0c2cf.js +0 -1
- package/dist/singleCellPlot-2f2b8619.js +0 -1
- package/dist/singlecell-90567dde.js +0 -1
- package/dist/snp-79ec95ba.js +0 -1
- package/dist/snplocus-cb629be1.js +0 -1
- package/dist/spliceevent.exonskip.getdefault-31d2950c.js +0 -1
- package/dist/summary-b77bef3c.js +0 -1
- package/dist/survival-61ab375a.js +0 -1
- package/dist/survival-80a0ade9.js +0 -1
- package/dist/table-79e3e776.js +0 -1
- package/dist/table-eee91e14.js +0 -1
- package/dist/termInfo-f851b415.js +0 -1
- package/dist/tk-75566002.js +0 -1
- package/dist/tp.ui-02911b56.js +0 -1
- package/dist/tslib.es6-1f85f553.js +0 -1
- package/dist/tvs.density-026fca97.js +0 -1
- package/dist/tvs.numeric-3f3d9919.js +0 -1
- package/dist/violin-1515c3e6.js +0 -1
- package/dist/violin.interactivity-8e2f480d.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{k as e}from"./app-
|
|
1
|
+
import{k as e}from"./app-b369b169.js";function t(e){if(!e.dna_mintotalreads)e.dna_mintotalreads=8;if(!e.rna_mintotalreads)e.rna_mintotalreads=8;if(!e.hetsnp_minbaf)e.hetsnp_minbaf=.3;if(!e.hetsnp_maxbaf)e.hetsnp_maxbaf=.7;if(e.rnapileup_q==undefined)e.rnapileup_q=0;if(!e.rnapileup_Q)e.rnapileup_Q=13;if(!e.binompvaluecutoff)e.binompvaluecutoff=.05;if(!e.clientcolor_snpinuse)e.clientcolor_snpinuse="blue";if(!e.clientcolor_markernotinuse)e.clientcolor_markernotinuse="#bbb"}function n(t,n,p){const a=t.checkrnabam;if(!a)return;t.tkconfigtip.d.append("hr");const i=t.tkconfigtip.d.append("div").style("margin","15px 0px");i.append("div").style("opacity",.5).style("font-size",".9em").text("Finding heterozygous SNPs in DNA");{const r=i.append("div").style("margin-top","5px");r.append("span").html("DNA minimum total read count ");r.append("input").attr("type","number").style("width","50px").property("value",a.dna_mintotalreads).on("keyup",(i=>{if(!e(i))return;let r=Number.parseInt(i.target.value);if(!r||r<=0)return;if(a.dna_mintotalreads==r){return}a.dna_mintotalreads=r;p(t,n)}));r.append("div").style("opacity",".5").style("font-size",".8em").text("If a SNP's total coverage is below cutoff, it will be skipped.")}{const r=i.append("div").style("margin-top","5px");r.append("span").html("Heterozygous SNP BAF range ");r.append("input").attr("type","number").style("width","50px").property("value",a.hetsnp_minbaf).on("keyup",(i=>{if(!e(i))return;let r=Number.parseFloat(i.target.value);if(!r||r<=0)return;if(a.hetsnp_minbaf==r){return}a.hetsnp_minbaf=r;p(t,n)}));r.append("span").style("opacity",".5").style("font-size",".8em").html(" ≤ BAF ≤ ");r.append("input").attr("type","number").style("width","50px").property("value",a.hetsnp_maxbaf).on("keyup",(i=>{if(!e(i))return;let r=Number.parseFloat(i.target.value);if(!r||r<=0)return;if(a.hetsnp_maxbaf==r){return}a.hetsnp_maxbaf=r;p(t,n)}));r.append("div").style("opacity",".5").style("font-size",".8em").text("If a SNP's BAF (B-allele fraction) is within this range, it is heterozygous.")}i.append("div").style("margin-top","20px").style("opacity",.5).style("font-size",".9em").text("Counting alleles in RNA-seq BAM file");{const r=i.append("div").style("margin-top","5px");r.append("span").html("Skip alignments with mapQ smaller than ");r.append("input").attr("type","number").style("width","50px").property("value",a.rnapileup_q).on("keyup",(i=>{if(!e(i))return;let r=Number.parseInt(i.target.value);if(!r||r<0)return;if(a.rnapileup_q==r){return}a.rnapileup_q=r;p(t,n)}))}{const r=i.append("div").style("margin-top","5px");r.append("span").html("Skip bases with baseQ/BAQ smaller than ");r.append("input").attr("type","number").style("width","50px").property("value",a.rnapileup_Q).on("keyup",(i=>{if(!e(i))return;let r=Number.parseInt(i.target.value);if(!r||r<=0)return;if(a.rnapileup_Q==r){return}a.rnapileup_Q=r;p(t,n)}))}i.append("div").style("margin-top","20px").style("opacity",.5).style("font-size",".9em").text("Binomial test on whether a heterozygous SNP shows allelic bias in RNA");{const r=i.append("div").style("margin-top","5px");r.append("span").html("P-value cutoff ");r.append("input").attr("type","number").style("width","50px").property("value",a.binompvaluecutoff).on("keyup",(i=>{if(!e(i))return;let r=Number.parseFloat(i.target.value);if(!r||r<=0||r>=1)return;if(a.binompvaluecutoff==r){return}a.binompvaluecutoff=r;p(t,n)}))}{const r=i.append("div").style("margin-top","5px");r.append("span").html("RNA minimum total read count ");r.append("input").attr("type","number").style("width","50px").property("value",a.rna_mintotalreads).on("keyup",(i=>{if(!e(i))return;let r=Number.parseInt(i.target.value);if(!r||r<=0)return;if(a.rna_mintotalreads==r){return}a.rna_mintotalreads=r;p(t,n)}));r.append("div").style("opacity",".5").style("font-size",".8em").text("If a SNP's total read count from RNA is below cutoff, it won't do binomial test.")}}export{n as c,t as r};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{z as e,a7 as t,aF as n,aG as a,b as s,k as o,I as i,aN as l,ag as r,q as d,Z as p,b$ as c,v as f,p as u,ac as m,a9 as g,ah as h,d as y,W as x,M as _,B as b,ap as v,aq as k,ar as w,an as A,as as F,at as j,bL as L}from"./app-b369b169.js";import{l as z}from"./block.legend-d3f61ef7.js";import{f as N}from"./FilterStateless-54c0b763.js";import{a as E,c as M}from"./FilterRxComp-701a1480.js";import"./termsetting-33ea66f1.js";import{v as I}from"./vcf-5cc55588.js";import{appInit as R}from"./app-3320ab6f.js";import{b as S,c as C}from"./axis-747c801e.js";import{m as O}from"./checkbox-96437f4d.js";import"./partition-db811f6b.js";import"./arc-3d6751aa.js";import"./constant-426a1483.js";import"./math-2fb199c6.js";import"./legacy-d3-polyfill-bdb2d792.js";import"./table-29d5a973.js";import"./tslib.es6-c3c2d88f.js";import"./partjson.esm-b3f1fc21.js";import"./termdb.bins-8b656cc3.js";import"path";import"./termInfo-bf99a37e.js";import"./toggleButtons-dbdbad01.js";function U(e){const t=e.append("div").attr("class","sja_filter_tag_btn").style("position","absolute");const n=e.append("select").style("opacity",0).on("mouseover",(()=>{t.style("opacity","0.8").style("cursor","default")})).on("mouseout",(()=>{t.style("opacity","1")}));return[n,t]}function T(e,t,n,a,s){const o=D(t,s);console.log(o);return 0}const P=4;function B(e,t,n){if(!t.vcf)return 0;if(!e.vcf)return 0;if(!e.vcf.rglst)return 0;let a=0;for(const s of e.vcf.rglst){const o=t.g_vcfrow.append("g").attr("transform","translate("+s.xoff+",0)");if(s.rangetoobig){s.text_rangetoobig=o.append("text").text(s.rangetoobig).attr("text-anchor","middle").attr("dominant-baseline","central").attr("x",s.width/2);a=Math.max(a,50);continue}if(s.imgsrc){o.append("image").attr("width",s.width).attr("height",s.imgheight).attr("xlink:href",s.imgsrc);a=Math.max(a,s.imgheight);continue}if(s.variants){const i=q(e,s,o,t,n);a=Math.max(a,i);continue}}for(const t of e.vcf.rglst){if(t.rangetoobig){t.text_rangetoobig.attr("y",a/2)}}{const n=e.vcf.rglst.reduce(((e,t)=>e+t.variants.length),0);t.vcfrow_label_numbervariants.text(n==0?"No variant":n+" variant"+(n>1?"s":""));if(n==0){t.__vcf_data=null}else{t.__vcf_data=e}}return a}function q(e,t,n,a,s){let o=50;if(a.vcf.numerical_axis&&a.vcf.numerical_axis.in_use){o=ge(e,t,n,a,s)}else{o=T(e,t,n,a,s)}return o}function J(t,n){return e[t.class].color}function G(e,n){const a=["genome="+n.name];if(e.file){a.push("file="+e.file)}else{a.push("url="+e.url);if(e.indexURL)a.push("indexURL="+e.indexURL)}return t("vcfheader?"+a.join("&")).then((t=>{if(t.error)throw t.error;const[n,a,s,o]=I(t.metastr.split("\n"));if(o)throw"Error parsing VCF meta lines: "+o.join("; ");e.info=n;e.format=a;e.samples=s;e.nochr=t.nochr}))}function D(e,t){const s=new Map;for(const n of e.variants){const e=t.seekcoord(n.chr,n.pos);if(e.length==0){continue}if(e.length==1){n.__x=e[0].x}else{n.__x=e[0].x}if(!s.has(n.__x)){s.set(n.__x,[])}s.get(n.__x).push(n)}const o=[];if(t.exonsf>=P){for(const[e,t]of s){o.push({chr:t[0].chr,pos:t[0].pos,mlst:t,x:e})}}else{if(t.usegm&&t.usegm.coding&&t.gmmode!=n.genomic){for(const e of s.values()){const n=a(e[0].pos,t.usegm);for(const t of e){t.aapos=n.aapos;t.rnapos=n.rnapos}}const e=new Map;for(const[n,a]of s){if(a[0].chr!=t.usegm.chr){continue}const o=a[0].aapos;if(o==undefined){console.error("data item cannot map to aaposition");console.log(a[0]);continue}s.delete(n);if(!e.has(o)){e.set(o,[])}let i=true;for(const n of e.get(o)){if(Math.abs(n[0].__x-a[0].__x)<=t.exonsf*3){for(const e of a){n.push(e)}i=false;break}}if(i){e.get(o).push(a)}}t.usegm.utr5?t.usegm.utr5.reduce(((e,t)=>e+t[1]-t[0]),0):0;for(const t of e.values()){for(const e of t){let t=null;for(const n of e){if(Number.isFinite(n.rnapos))t=n}if(t==null){console.log("trying to map mlst to codon, but no rnapos found");for(const t of e){console.log(t)}continue}o.push({chr:e[0].chr,pos:t.pos,mlst:e,x:e[0].__x})}}}const e=[];const i=2;for(const[t,n]of s){const a=Math.floor(t/i);if(!e[a]){e[a]=[]}e[a]=[...e[a],...n]}for(const t of e){if(!t)continue;const e=t.reduce(((e,t)=>e+t.__x),0);o.push({isbin:true,chr:t[0].chr,pos:t[0].pos,mlst:t,x:e/t.length})}}o.sort(((e,t)=>e.x-t.x));return o}async function V(e,t,n,a){const s={d:{svgdiv:e.append("div"),wait:e.append("div")},m:t,tk:n,block:a,overlay_term:n.vcf.plot_mafcov.overlay_term};if(n.mds&&n.mds.sample2bam){s.d.tempbbdiv=e.append("div")}await Y(s)}async function Y(e){const t={genome:e.block.genome.name,trigger_mafcovplot:1,m:{chr:e.m.chr,pos:e.m.pos,ref:e.m.ref,alt:e.m.alt}};if(e.tk.mds){t.dslabel=e.tk.mds.label}else{t.vcf={file:e.tk.vcf.file,url:e.tk.vcf.url,indexURL:e.tk.vcf.indexURL}}if(e.overlay_term&&e.overlay_term.term){t.overlay_term=e.overlay_term.term.id;t.overlay_term_q=e.overlay_term.term.q}e.d.wait.text("Loading...").style("display","block");try{const n=await s("mds2",{method:"POST",body:JSON.stringify(t)});if(n.error)throw n.error;if(n.plotgroups){H(e,n.plotgroups)}e.d.wait.style("display","none")}catch(t){e.d.wait.text("ERROR: "+(t.message||t));if(t.stack)console.log(t.stack)}}function H(e,t){import("./plot.vaf2cov-b2284c64.js").then((n=>{const a={};e.d.svgdiv.selectAll("*").remove();for(const s of t){let o=e.d.svgdiv.append("div").style("display","inline-block").style("vertical-align","top");if(t.length>1){o.style("margin-right","30px").append("div").style("margin-top","10px").style("padding","3px 10px").style("background-color","#aaa").style("color","white").style("display","inline-block").style("font-size",".8em").style("font-weight","bold").text(s.name.toUpperCase());o=o.append("div").style("border","solid 1px #aaa")}const i={holder:o,data:s.lst,name:s.name,tip:e.tk.tktip,automax:true,samplecolor:"#4888BF",mouseover:e=>{if(!e.sampleobj)return;for(const t in a){if(t==s.name)continue;a[t].filter((t=>t.sampleobj.patient==e.sampleobj.patient)).each((e=>{e.crosshair1.attr("transform","scale(2.5)");e.crosshair2.attr("transform","scale(2.5)")}))}},mouseout:e=>{if(!e.sampleobj)return;for(const t in a){if(t==s.name)continue;a[t].filter((t=>t.sampleobj.patient==e.sampleobj.patient)).each((e=>{e.crosshair1.attr("transform","scale(1)");e.crosshair2.attr("transform","scale(1)")}))}}};if(e.tk&&e.tk.mds&&e.tk.mds.sample2bam){i.click=t=>{if(!t.sampleobj)return;const n=e.tk.mds.sample2bam[t.sampleobj.name];if(!n)return;e.d.tempbbdiv.selectAll("*").remove();import("./block-6aedd569.js").then((function(e){return e.c})).then((a=>{new a.Block({hostURL:sessionStorage.getItem("hostURL"),holder:e.d.tempbbdiv,genome:e.block.genome,nobox:true,chr:e.m.chr,start:e.m.pos-30,stop:e.m.pos+30,nativetracks:[e.block.genome.tracks.find((e=>e.__isgene)).name.toLowerCase()],tklst:[{type:"bam",name:t.sampleobj.name,file:n}],hlregions:[{chr:e.m.chr,start:e.m.pos,stop:e.m.pos}]})}))}}a[s.name]=n.default(i)}}))}async function Q(e,t,n,a){const{ssid:s,groups:o}=await te(t,n.mds.label,a.genome.name);const i=e.append("div");const l=i.append("div");try{const e={ssid:s,tip:n.legend.tip,mds:n.mds,genome:a.genome,termfilter:{filter:W(n)},dom:{}};Z(e,i,n);await X(e);l.remove()}catch(e){l.text("Error: "+(e.message||e));if(e.stack)console.log(e.stack)}}function W(e){if(e.vcf&&e.vcf.numerical_axis&&e.vcf.numerical_axis.in_use&&e.vcf.numerical_axis.inuse_AFtest){const t=e.vcf.numerical_axis.AFtest;const n=t.groups.find((e=>e.is_termdb));if(n){return n.filterApi.getNormalRoot()}}if(e.mds&&e.mds.termdb&&e.mds.termdb.selectCohort){const t=e.mds.termdb.selectCohort;return{type:"tvslst",join:"",in:true,lst:[{type:"tvs",tag:"cohortFilter",renderAs:"htmlSelect",selectOptionsFrom:"selectCohort",tvs:{term:JSON.parse(JSON.stringify(t.term)),values:t.values[0].keys.map((e=>({key:e})))}}]}}}function $(e){const t=["genome="+e.genome.name,"dslabel="+e.mds.label,"ssid="+e.ssid,"phewas=1","intendwidth="+e.svg.intendwidth,"axisheight="+e.svg.axisheight,"groupnamefontsize="+e.svg.groupnamefontsize,"dotradius="+e.svg.dotradius,"groupxspace="+e.svg.groupxspace,"leftpad="+e.svg.leftpad,"rightpad="+e.svg.rightpad,"toppad="+e.svg.toppad,"bottompad="+e.svg.bottompad,"devicePixelRatio="+(window.devicePixelRatio>1?window.devicePixelRatio:1)];if(e.termfilter.filter)t.push("filter="+encodeURIComponent(JSON.stringify(e.termfilter.filter)));return t}async function X(e){e.dom.svg.selectAll("*").remove();const n=await t("/termdb?"+$(e).join("&"));if(n.error)throw n.error;if(!n.tmpfile)throw"data.tmpfile missing";e.tmpfile=n.tmpfile;e.svg.ymax=n.maxlogp;e.dom.filter_says.text("n="+n.numberofsamples);K(n,e)}function Z(e,n,a){e.dom.row_filter=n.append("div").style("margin-bottom","5px");e.dom.row_message=n.append("div");e.dom.row_control=n.append("div").style("margin","10px 0px");e.dom.svg=n.append("svg");e.dom.row_details=n.append("div");e.svg={intendwidth:800,axisheight:300,groupnamefontsize:16,dotradius:2,groupxspace:3,leftpad:2,rightpad:2,toppad:20,bottompad:10};{e.dom.row_filter.append("div").style("display","inline-block").text("FILTER").style("font-size",".7em").style("opacity",.5);N({vocab:{route:"termdb",genome:e.genome.name,dslabel:e.mds.label},holder:e.dom.row_filter.append("div").style("display","inline-block").style("margin","0px 10px"),termdbConfig:e.mds.termdb,callback:async t=>{e.termfilter.filter=t;await X(e)}}).main(e.termfilter.filter);e.dom.filter_says=e.dom.row_filter.append("div").style("display","inline-block")}{const n=e.dom.row_control.append("input").attr("type","number").style("width","150px").attr("placeholder","Set Y axis max").on("keyup",(async a=>{if(!o(a))return;const s=n.property("value");if(!s)return;const i=Number(s);if(i<=0){window.alert("Max value must be above 0");return}e.svg.ymax=i;n.property("value","").property("disabled",true).attr("placeholder","Loading...");const l=$(e);l.push("update=1");l.push("file="+e.tmpfile);l.push("max="+e.svg.ymax);const r=await t("/termdb?"+l.join("&"));e.svg.image.attr("xlink:href",r.src);ee(r,e);n.property("disabled",false).attr("placeholder","Set Y axis max")}))}}function K(e,n){n.dom.row_message.text(e.testcount+" attributes tested, "+e.hoverdots.length+" attributes with p-value <= 0.05, "+"Max -log10(p-value) is "+n.svg.ymax);const a=80;const s=5;n.dom.svg.attr("width",a+s+e.canvaswidth);{let t=0;for(const o of e.grouplabels){n.dom.svg.append("g").attr("transform","translate("+(a+s+o.x)+","+o.y+")").append("text").attr("font-size",e.groupnamefontsize).text(o.name).attr("dominant-baseline","central").attr("transform","rotate(90)").each((function(){t=Math.max(t,this.getBBox().width)})).attr("class","sja_svgtext2").on("click",(()=>{d(o.name)}))}n.dom.svg.attr("height",e.canvasheight+t)}const o=n.dom.svg.append("g");n.svg.yscale=i();n.svg.axis_g=o.append("g").attr("transform","translate("+a+","+n.svg.toppad+")");o.append("g").attr("transform","translate(10,"+(n.svg.toppad+n.svg.axisheight/2)+")").append("text").text("-Log10(p-value)").attr("text-anchor","middle").attr("dominant-baseline","central").attr("transform","rotate(-90)");const r=o.append("g").attr("transform","translate("+(a+s)+",0)");n.svg.image=r.append("image").attr("width",e.canvaswidth).attr("height",e.canvasheight).attr("xlink:href",e.src);n.svg.hoverdots=r.append("g").attr("transform","translate(0,"+n.svg.toppad+")").selectAll().data(e.hoverdots).enter().append("g");n.svg.hoverdots.append("circle").attr("r",n.svg.dotradius).attr("fill","red").on("mouseover",((e,t)=>{console.log(t);n.tip.clear();const a=n.tip.d.append("div").style("margin","10px");a.append("div").text(t.term.name);if(t.parent_name){a.append("div").style("font-size",".7em").style("opacity",".5").text("of "+t.parent_name)}const s=a.append("table").style("margin","10px 0px");{const e=s.append("tr").style("font-size",".7em").style("opacity",.5);e.append("td");e.append("td").text("REF/REF");e.append("td").text("REF/ALT");e.append("td").text("ALT/ALT")}{const e=s.append("tr");e.append("td").text(t.group1label);e.append("td").text(t.table[0]);e.append("td").text(t.table[2]);e.append("td").text(t.table[4])}{const e=s.append("tr");e.append("td").text(t.group2label);e.append("td").text(t.table[1]);e.append("td").text(t.table[3]);e.append("td").text(t.table[5])}a.append("div").html('<span style="opacity:.5;font-size:.8em">P-value:</span> '+t.pvalue);n.tip.show(t.clientX,t.clientY)})).on("mouseout",(()=>{n.tip.hide()}));ee(e,n);async function d(e){n.dom.row_details.selectAll("*").remove();const a=n.dom.row_details.append("div").text("Loading...");const s=["genome="+n.genome.name,"dslabel="+n.mds.label,"file="+n.tmpfile,"phewas=1","getgroup="+e];const o=await t("/termdb?"+s.join("&"));a.remove();const i=n.dom.row_details.append("table");const r=i.append("tr");r.append("th").text("Term");r.append("th").text("Case");r.append("th").text("Control");r.append("th").text("P-value");for(const e of o.categories){const t=i.append("tr");t.append("td").text(e.term.name);{const n=e.table[0]+e.table[1];const a=l(null,{f:n>0?e.table[0]/n:0});t.append("td").html(e.group1label+" "+a+' <span style="font-size:.7em;opacity:.5">ALT/REF</span> '+e.table[0]+" / "+e.table[1])}{const n=e.table[2]+e.table[3];const a=l(null,{f:n>0?e.table[2]/n:0});t.append("td").html(e.group2label+" "+a+' <span style="font-size:.7em;opacity:.5">ALT/REF</span> '+e.table[2]+" / "+e.table[3])}const n=t.append("td").text(e.pvalue);if(e.pvalue<=.05)n.style("color","red")}}}function ee(e,t){t.svg.yscale.domain([t.svg.ymax,0]).range([0,t.svg.axisheight]);r({axis:t.svg.axis_g.call(S().scale(t.svg.yscale)),fontsize:12,showline:true});t.svg.hoverdots.attr("transform",(e=>"translate("+e.x+","+(e.logp>=t.svg.ymax?0:t.svg.yscale(e.logp))+")"))}function te(e,t,n){const a={dslabel:t,genome:n,m:{chr:e.chr,pos:e.pos,ref:e.ref,alt:e.alt},trigger_ssid_onevcfm:true};return d("mds2",a).then((e=>{if(e.error)throw e.error;return e}))}async function ne(t,n,a,s){if(a.ld&&a.ld.overlaywith){await de(t,a,s);return}const o="sja-pp-block-"+s.blockId+"-"+s.tklst.findIndex((e=>e===a))+"-vcf_clickvariant";const i=p({x:n.left,y:n.top,$id:o});i.pane.style("line-height",1.15);i.header.html(t.mname+' <span style="font-size:.7em;">'+e[t.class].label+"</span>");const l=[];ie(l,t,a,s);oe(l,t,a,s);se(l,t,a,s);ae(l,t,a,s);re(l,t,a,s);c(i.body.style("padding-top","10px"),l)}function ae(e,t,n,a){if(!n.vcf||!n.vcf.plot_mafcov)return;e.push({label:"Coverage-MAF plot",callback:async e=>{const s=f(e);try{await V(e,t,n,a);s.remove()}catch(e){s.text("Error: "+(e.message||e))}}})}function se(e,t,n,a){if(!n.vcf)return;if(!n.vcf.termdb_bygenotype)return;if(n.mds&&n.mds.hide_phewas)return;e.push({label:"Phewas",callback:async e=>{const s=f(e);try{await Q(e,t,n,a);s.remove()}catch(e){s.text("Error: "+(e.message||e))}}})}function oe(e,t,n,a){if(!n.vcf.numerical_axis||!n.vcf.numerical_axis.inuse_AFtest||!n.vcf.numerical_axis.AFtest||!n.vcf.numerical_axis.AFtest.testby_fisher||!t.contigencytable)return;e.push({label:"Fisher' exact test",callback:s});async function s(e){const s=n.vcf.numerical_axis.AFtest;const o=[];if(s.groups[0].is_termdb){if(n.populations){for(const e of n.populations){if(!s.groups[1].is_population||s.groups[1].key!=e.key){o.push({key:e.key,label:e.label})}}}}const i=e.append("table").style("border","1px solid #ccc").style("border-collapse","collapse");if(o.length){{const e=i.append("tr");e.append("td");e.append("th").text("#ALT alleles");e.append("th").text("#REF alleles");e.append("th").text("P-value")}{const e=i.append("tr");e.append("th").text(Je(n,0));e.append("td").text(t.contigencytable[0].toFixed(0)).style("padding","5px");e.append("td").text(t.contigencytable[1].toFixed(0)).style("padding","5px");e.append("td").text("-")}{const e=i.append("tr");e.append("th").text(Je(n,1));e.append("td").text(t.contigencytable[2].toFixed(0)).style("padding","5px");e.append("td").text(t.contigencytable[3].toFixed(0)).style("padding","5px");e.append("td").text(t.AFtest_pvalue).style("padding","5px")}for(const e of o){const s=i.append("tr");s.append("th").text(e.label);const o=s.append("td").text("...").style("padding","5px");const l=s.append("td").text("...").style("padding","5px");const r=s.append("td").text("...").style("padding","5px");const p=vt(n,a);delete p.trigger_ld;p.AFtest.groups[1]={is_population:true,key:e.key};p.rglst=[{chr:t.chr,start:t.pos,stop:t.pos+1}];const c=await d("mds2",p);if(c.vcf&&c.vcf.rglst&&c.vcf.rglst[0]&&c.vcf.rglst[0].variants){const e=c.vcf.rglst[0].variants[0];if(e){if(e.contigencytable){o.text(e.contigencytable[2]);l.text(e.contigencytable[3])}if(e.AFtest_pvalue!=undefined){r.text(e.AFtest_pvalue)}}}}}else{{const e=i.append("tr");e.append("td");e.append("th").text("#ALT alleles");e.append("th").text("#REF alleles")}{const e=i.append("tr");e.append("th").text(Je(n,0));e.append("td").text(t.contigencytable[0].toFixed(0)).style("padding","5px");e.append("td").text(t.contigencytable[1].toFixed(0)).style("padding","5px")}{const e=i.append("tr");e.append("th").text(Je(n,1));e.append("td").text(t.contigencytable[2].toFixed(0)).style("padding","5px");e.append("td").text(t.contigencytable[3].toFixed(0)).style("padding","5px")}i.append("tr").append("td").attr("colspan",3).style("border","1px solid #ccc").style("padding","5px").html('<span style="opacity:.5">Fisher exact p-value:</span> '+t.AFtest_pvalue)}if(t.popsetadjvalue){const n=s.groups.findIndex((e=>e.is_termdb));const a=s.groups.find((e=>e.is_termdb));const o=s.groups.find((e=>e.is_population));const i=e.append("table").style("margin-top","30px").style("border","1px solid #ccc").style("border-collapse","collapse");{const e=i.append("tr");e.append("td").style("padding","5px");for(const t of a.popsetaverage){e.append("th").text(t[0]).style("padding","5px")}}{const e=i.append("tr");e.append("th").text("Group "+(n+1)+" average admix").style("padding","5px");for(const t of a.popsetaverage){e.append("td").text(t[1].toFixed(2)).style("padding","5px")}}{const e=i.append("tr");e.append("th").text(o.key+" raw ALT/REF").style("padding","5px");for(const n of a.popsetaverage){const a=t.popsetadjvalue.find((e=>e[0]==n[0]));e.append("td").text(a[1]+"/"+a[2]).style("padding","5px")}}{const e=i.append("tr");e.append("th").text(o.key+" adjusted ALT/REF").style("padding","5px");for(const n of a.popsetaverage){const a=t.popsetadjvalue.find((e=>e[0]==n[0]));e.append("td").text(a[3]+"/"+a[4]).style("padding","5px")}}}}}function ie(t,n,a,s){t.push({label:"Annotation",callback:o});function o(t){t.append("span").html((n.gene?"<i>"+n.gene+"</i> ":"")+(n.isoform?'<span style="font-size:.8em;text-decoration:italic">'+n.isoform+"</span> ":"")+n.mname+' <span style="font-size:.7em;padding:3px;color:white;background:'+e[n.class].color+'">'+e[n.class].label+"</span>"+(n.name&&n.name.startsWith("rs")?" <a href=https://www.ncbi.nlm.nih.gov/snp/"+n.name+" target=_blank>"+n.name+"</a>":""));if(n.csq_count&&n.csq_count>1){const e=t.append("div").style("margin-left","20px").text(n.csq_count-1+" other interpretations").attr("class","sja_button").style("zoom",".7");let o=false,i=false;const l=t.append("div").style("margin","20px").style("display","none");e.on("click",(async()=>{if(l.style("display")=="none"){u(l);e.attr("class","sja_button_open")}else{m(l);e.attr("class","sja_button_fold")}if(i||o)return;o=true;e.text("Loading...");try{await le(l,n,a,s)}catch(e){l.text("Error: "+(e.message||e))}i=true;o=false;e.text(n.csq_count-1+" other interpretations")}))}const o=[];{let e=n.chr+":"+(n.pos+1);if(n.ref+">"+n.alt!=n.mname){e+=' <span style="font-size:.7em;opacity:.5">REF</span> '+n.ref+' <span style="font-size:.7em;opacity:.5">ALT</span> '+n.alt}o.push({k:"Genomic",v:e})}if(n.altinfo){for(const e in n.altinfo){const t=Array.isArray(n.altinfo[e])?n.altinfo[e]:[n.altinfo[e]];const s=t;o.push({k:e,v:s.join(", ")+(a.vcf.info&&a.vcf.info[e]?' <span style="font-size:.7em;opacity:.5">'+a.vcf.info[e].Description+"</span>":"")})}}if(n.info){for(const e in n.info){const t=Array.isArray(n.info[e])?n.info[e]:[n.info[e]];const s=t;o.push({k:e,v:s.join(", ")+(a.vcf.info&&a.vcf.info[e]?' <span style="font-size:.7em;opacity:.5">'+a.vcf.info[e].Description+"</span>":"")})}}const i=g(t,o).style("margin","20px 0px 0px 0px");if(a.vcf.check_pecanpie){const e=i.append("tr");e.append("td").attr("colspan",2).text("PeCAN-PIE").style("opacity",.5);const t=e.append("td").text("Loading...");fetch("https://pecan.stjude.cloud/variant/decision/"+s.genome.name+"/"+n.chr.replace("chr","")+"/"+(n.pos+1)+"/"+n.ref+"/"+n.alt).then((e=>e.json())).then((e=>{if(e.length==0)throw"Not in PeCAN-PIE";const o=e[0].paneldecision;if(!o)throw"Not in PeCAN-PIE";const i=a.vcf.check_pecanpie.info;t.html("<a href=https://pecan.stjude.cloud/variant/"+s.genome.name+"/"+n.chr.replace("chr","")+"/"+(n.pos+1)+"/"+n.ref+"/"+n.alt+" target=_blank "+' style="font-size:.8em;text-decoration:none;background:'+i[o].fill+";color:"+(i[o].color||"white")+';padding:3px 5px">'+"PeCAN-PIE: "+i[o].label+"</a>")})).catch((e=>{t.text(e.message||e);if(e.stack)console.log(e.stack)}))}}}function le(e,t,n,a){const s={genome:a.genome.name,trigger_getvcfcsq:1,m:{chr:t.chr,pos:t.pos,ref:t.ref,alt:t.alt}};if(n.mds){s.dslabel=n.mds.label}else{s.vcf={file:n.vcf.file,url:n.vcf.url,indexURL:n.vcf.indexURL}}return d("mds2",s).then((t=>{if(t.error)throw t.error;if(!t.csq)throw"cannot load csq";for(const a of t.csq){let t;{const e=[];if(a.HGVSp){e.push('<span style="font-size:.7em;opacity:.5">HGVSp</span> '+a.HGVSp)}else if(a.HGVSc){e.push('<span style="font-size:.7em;opacity:.5">HGVSc</span> '+a.HGVSc)}else if(a.Feature){e.push('<span style="font-size:.7em;opacity:.5">no HGVS</span> '+a.Feature)}if(a.Consequence){e.push('<span style="font-size:.7em;opacity:.5">CONSEQUENCE</span> '+a.Consequence)}else{e.push('<span style="font-size:.7em;opacity:.5">no CONSEQUENCE</span>')}t=e.join(" ")}const s=e.append("div").style("margin","5px").attr("class","sja_clbtext").html(t);const o=e.append("div").style("display","none");const i=[];for(const e of n.vcf.info.CSQ.csqheader){const t=a[e.name];if(t){i.push({k:e.name,v:t})}}g(o.append("div").style("display","inline-block"),i);s.on("click",(()=>{o.style("display",o.style("display")=="none"?"block":"none")}))}})).catch((t=>{e.text(t.message||t)}))}function re(e,t,n,a){if(!a.genome.fimo_motif)return;e.push({label:"TF motif",callback:async e=>{const n=f(e);const s={genome:a.genome,div:e,m:{chr:t.chr,pos:t.pos+1,ref:t.ref,alt:t.alt}};try{const e=await import("./mds.fimo-bff6a1ed.js");await e.init(s);n.remove()}catch(e){n.text("Error: "+(e.message||e))}}})}async function de(e,t,n){const a={genome:n.genome.name,trigger_overlayld:1,ldtkname:t.ld.overlaywith,m:{chr:e.chr,pos:e.pos,ref:e.ref,alt:e.alt}};if(t.mds){a.dslabel=t.mds.label}const s=await d("mds2",a);const o=new Map;for(const e of s.lst){o.set(e.pos+"."+e.alleles,e.r2)}t.skewer2.selectAll(".sja_aa_disk_fill").attr("fill",(n=>{if(n.pos==e.pos&&n.ref==e.ref&&n.alt==e.alt){return t.ld.overlay.color_1}const a=o.get(n.pos+"."+n.ref+"."+n.alt)||0;return t.ld.overlay.r2_to_color(a)}));t.ld.overlay.vcfcircle.attr("stroke-opacity",1);t.skewer2.selectAll(".sja_aa_discg").filter((t=>t.pos==e.pos&&t.ref==e.ref&&t.alt==e.alt)).node().appendChild(t.ld.overlay.vcfcircle.node())}const pe=1;const ce=.3;const fe=5;const ue=7;const me=0;function ge(e,t,n,a,s){const o=D(t,s);const i=a.vcf.numerical_axis;he(i,t,n,o,a,s);return i.toplabelheight+i.maxradius+i.axisheight+i.maxradius+i.stem1+i.stem2+i.stem3+i.bottomlabelheight}function he(e,t,n,a,s,o){for(const e of a){e.x0=e.x;if(e.xoffset!=undefined){e.x=e.x0+e.xoffset}}const l=Math.max(14,o.width/110);if(s.ld&&s.ld.overlay&&s.ld.overlay.vcfcircle){s.ld.overlay.vcfcircle.attr("r",l/2).attr("stroke-opacity",0)}e.dotwidth=l;e.maxradius=0;for(const t of a){for(const n of t.mlst){n.radius=l/2;e.maxradius=Math.max(n.radius,e.maxradius);n.rimwidth=0;n.aa=t}}const r=ye(a,e,s,o);Ae(t,e,s);const d=i().domain([e.minvalue,e.maxvalue]).range([0,e.axisheight]);for(const e of a){for(const t of e.mlst){t._y=d(t._v)}}if(r){e.stem1=5;e.stem2=20;e.stem3=10}else{e.stem1=0;e.stem2=0;e.stem3=0}for(const e of a){for(const t of e.mlst){s.glider.append("text").text(_e(t.mname)).attr("font-family",h).attr("font-size",t.radius*2-2).each((function(){t.labwidth=this.getBBox().width})).remove()}}for(const e of a){for(const t of e.mlst){delete t.labattop;delete t.labatbottom}}if(r){for(const e of a){if(e.mlst.length==1){const t=e.mlst[0];t.labattop=true}else{if((e.width-e.fixedgew)/(e.mlst.length-1)<ue);else{for(const t of e.mlst){t.labattop=true}}}}}else{be(a)}e.toplabelheight=0;e.bottomlabelheight=0;if(e.showsamplebar||e.showgenotypebyvalue){for(const t of a){for(const n of t.mlst){e.toplabelheight=Math.max(e.toplabelheight,n.labwidth)}}}else{for(const t of a){for(const n of t.mlst){if(n.labattop){e.toplabelheight=Math.max(e.toplabelheight,n._y+n.labwidth-e.axisheight)}else if(n.labatbottom){e.bottomlabelheight=Math.max(e.bottomlabelheight,n.labwidth-n._y)}}}}{let t=o.labelfontsize+fe+o.labelfontsize;if(s.label_stratify){t+=s.label_stratify.length*(fe+o.labelfontsize)}e.toplabelheight=Math.max(e.toplabelheight,t)}je(n,s,e,o);n.append("line").attr("y1",e.toplabelheight+e.maxradius).attr("y2",e.toplabelheight+e.maxradius).attr("x2",t.width).attr("stroke","#ededed").attr("shape-rendering","crispEdges");n.append("line").attr("y1",e.toplabelheight+e.maxradius+e.axisheight).attr("y2",e.toplabelheight+e.maxradius+e.axisheight).attr("x2",t.width).attr("stroke","#ededed").attr("shape-rendering","crispEdges");s.skewer2=n.selectAll().data(a).enter().append("g").attr("class","sja_skg2").each((function(e){e.g=this}));s.skewer2.attr("transform",(t=>"translate("+t.x+","+(e.toplabelheight+pe+e.maxradius+e.axisheight+e.maxradius)+")"));if(r){s.skewer2.append("path").attr("class","sja_aa_stem").attr("d",(t=>ve(t,e))).attr("stroke",(e=>J(e.mlst[0]))).attr("fill",(e=>e.mlst.length==1?"none":"#ededed"))}const p=s.skewer2.selectAll().data((e=>e.mlst)).enter().append("g").attr("class","sja_aa_discg").each((function(e){e.g=this}));p.attr("transform",(t=>"translate("+t.xoff+","+(t._y+e.maxradius)*-1+")"));const c=p.append("circle");c.attr("fill",(e=>J(e))).attr("stroke","white").attr("r",(e=>e.radius-.5)).attr("class","sja_aa_disk_fill");p.append("circle").attr("r",(e=>e.radius-.5)).attr("stroke",(e=>J(e))).attr("class","sja_aa_disckick").attr("fill","white").attr("fill-opacity",0).attr("stroke-opacity",0).on("mousedown",(e=>{e.preventDefault()})).on("mouseover",((t,n)=>{ke(n,e,s)})).on("mouseout",((e,t)=>{we(t,s)})).on("click",((e,t)=>{const n=e.target.getBoundingClientRect();ne(t,n,s,o)}));p.filter((e=>e.labattop||e.labatbottom)).append("text").each((function(e){e.textlabel=this})).text((e=>_e(e.mname))).attr("font-family",h).attr("font-size",(e=>{e._labfontsize=Math.max(12,e.radius*1.2);return e._labfontsize})).attr("fill",(e=>J(e))).attr("x",(t=>e.showsamplebar||e.showgenotypebyvalue?e.axisheight+e.maxradius+4:t.radius+t.rimwidth+pe)).attr("y",(e=>e._labfontsize*ce)).attr("class","sja_aa_disclabel").attr("transform",(e=>"rotate("+(e.labattop?"-":"")+"90)")).on("mousedown",(e=>{e.preventDefault()})).on("mouseover",((t,n)=>ke(n,e,s))).on("mouseout",((e,t)=>we(t,s))).on("click",((e,t)=>{ne(t,{left:t.clientX,top:t.clientY},s,o);if(o.debugmode){console.log(t)}}))}function ye(e,t,n,a){const s=100;let o=0;for(const t of e){let e=0;for(const n of t.mlst){e+=2*(n.radius+n.rimwidth)}if(t.mlst.length==1){t.width=e}else{t.width=Math.min(s,e);const n=t.mlst[0];const a=t.mlst[t.mlst.length-1];t.fixedgew=n.radius+n.rimwidth+a.radius+a.rimwidth}o+=t.width}if(o<=a.width){let t=0;for(const n of e){n.x=t+n.mlst[0].radius+n.mlst[0].rimwidth;t+=n.width;if(n.mlst.length==1){n.stemw=0}else{n.stemw=n.width-n.fixedgew}}xe(e,a.width);for(const t of e){t.xoffset=t.x-t.x0;if(t.mlst.length==1){t.mlst[0].xoff=0;t.stemw=0}else{t.stemw=t.width-t.fixedgew;const e=t.stemw/(t.mlst.length-1);for(let n=0;n<t.mlst.length;n++){t.mlst[n].xoff=e*n}}}return true}for(const t of e){t.x=t.x0;t.xoffset=0;for(const e of t.mlst){e.xoff=0}}return false}function xe(e,t){for(let n=0;n<e.length;n++){if(e[n].x0<0)continue;if(e[n].x0>t)break;while(1){let a=0,s=0;for(let o=n;o<e.length;o++){const n=e[o];if(n.x0>t){return}a+=Math.abs(n.x-n.x0-n.stemw/2);n.x++;s+=Math.abs(n.x-n.x0-n.stemw/2)}if(e[n].x>e[n].x0-e[n].stemw/2){for(let t=n;t<e.length;t++){e[t].x--}break}const o=e[e.length-1];if(o.x+o.width/2>=t){return}if(s<=a);else{for(let a=n;a<e.length;a++){if(e[a].x0>t){break}e[a].x--}break}}}}const _e=e=>{if(!e)return"";if(e.length>25){return e.substr(0,20)+"..."}return e};function be(e){const t=[];for(const n of e){for(const e of n.mlst){t.push({m:e,w:2*(e.radius+e.rimwidth),x:n.x0,y:e._y})}}t.sort(((e,t)=>t.y-e.y));for(let e=0;e<t.length;e++){const n=t[e];let a=false;for(let s=0;s<e;s++){const e=t[s];if(Math.abs(n.x-e.x)<(n.w+e.w)/2-2){a=true;break}}if(!a){n.m.labattop=true}}for(let e=t.length-1;e>=0;e--){const n=t[e];if(n.m.labattop)continue;let a=false;for(let s=t.length-1;s>e;s--){const e=t[s];if(e.m.labatbottom&&Math.abs(e.x-n.x)<(e.w+n.w)/2-2){a=true;break}}if(!a){n.m.labatbottom=true}}}function ve(e,t){if(e.mlst.length==1){return"M0,0v"+t.stem1+"l"+-e.xoffset+","+t.stem2+"v"+t.stem3}return"M0,0"+"v"+t.stem1+"l"+-e.xoffset+","+t.stem2+"v"+t.stem3+"v-"+t.stem3+"l"+(e.stemw+e.xoffset-1)+",-"+t.stem2+"v-"+t.stem1}function ke(e,t,n){if(e.textlabel){y(e.textlabel).attr("font-size",e._labfontsize*1.1)}n.pica.g.attr("transform","translate("+(e.aa.x+e.xoff)+","+(t.toplabelheight+t.maxradius+t.axisheight-e._y)+")");const a=10;const s=4;const o=e._labfontsize||13;const i=J(e);const l=[];if(t.inuse_AFtest){if(e.AFtest_group_values){for(const t of e.AFtest_group_values)l.push(t)}else if(e.AFtest_pvalue!=undefined){l.push(e.AFtest_pvalue)}}else if(t.inuse_infokey){l.push(e._v)}else{throw"unknown axis type"}if(!e.labattop&&!e.labatbottom){l.push(e.mname)}let r=0;for(const e of l){n.pica.g.append("text").attr("font-size",o).attr("font-family",h).text(e).each((function(){r=Math.max(r,this.getBBox().width)})).remove()}const d=s*2+r;let p,c,f=true;if(d+a>e.aa.x+e.xoff){f=false;c=e.radius+e.rimwidth;p=c+a}else{c=-e.radius-e.rimwidth-a;p=c-d}const u=o*l.length;n.pica.g.append("rect").attr("x",p-2).attr("y",-2-s-u/2).attr("width",4+d).attr("height",4+s*2+u).attr("fill","white");n.pica.g.append("line").attr("x1",c).attr("x2",c+a).attr("stroke","white").attr("stroke-width",3).attr("shape-rendering","crispEdges");n.pica.g.append("line").attr("x1",c).attr("x2",c+a).attr("stroke",i).attr("shape-rendering","crispEdges");n.pica.g.append("rect").attr("x",p).attr("y",-s-u/2).attr("width",d).attr("height",s*2+u).attr("fill","none").attr("stroke",i).attr("shape-rendering","crispEdges");let m=(o-u)/2;for(const e of l){n.pica.g.append("text").text(e).attr("text-anchor",f?"end":"start").attr("font-size",o).attr("font-family",h).attr("x",f?c-s:p+s).attr("y",m).attr("fill",i).attr("dominant-baseline","central");m+=o}}function we(e,t){if(e.textlabel){y(e.textlabel).attr("font-size",e._labfontsize)}t.pica.g.selectAll("*").remove()}function Ae(e,t,n){t.minvalue=0;t.maxvalue=0;let a,s,o;if(t.inuse_infokey){a=t.info_keys.find((e=>e.in_use)).key;s=n.vcf.info[a].Number=="A";if(n.info_fields){const e=n.info_fields.find((e=>e.key==a));if(e){o=e.missing_value}}}for(const n of e.variants){let e=null;if(t.inuse_AFtest){e=n.nm_axis_value}else if(t.inuse_infokey){if(s){if(n.altinfo){e=n.altinfo[a]}}else{if(n.info){e=n.info[a]}}if(!Number.isFinite(e)){e=Number.isFinite(o)?o:me}}else{throw"unknown axis type"}n._v=e;t.minvalue=Math.min(t.minvalue,e);t.maxvalue=Math.max(t.maxvalue,e)}if(t.inuse_AFtest&&t.AFtest.testby_AFdiff){const e=Math.max(Math.abs(t.minvalue),Math.abs(t.maxvalue));t.minvalue=-e;t.maxvalue=e}}function Fe(e){if(!e.vcf)return;const t=e.vcf.numerical_axis;if(!t.in_use){return}delete t.isinteger;if(!t.info_keys&&!t.AFtest)throw"no options for numerical axis";if(t.inuse_infokey){if(!t.info_keys)throw".info_keys[] missing when inuse_infokey is true"}else if(t.inuse_AFtest){if(!t.AFtest)throw".AFtest{} missing when inuse_AFtest is true"}else{if(t.AFtest){t.inuse_AFtest=true}else{t.inuse_infokey=true}}if(t.info_keys){if(!Array.isArray(t.info_keys))throw"numerical_axis.info_keys[] is not an array";if(t.info_keys.length==0)throw"numerical_axis.info_keys[] array is empty";let n=t.info_keys.find((e=>e.in_use));if(!n){n=t.info_keys[0];n.in_use=true}if(!e.vcf.info)throw"VCF file has no INFO fields";if(t.inuse_infokey){let a=true;if(e.info_fields){const s=e.info_fields.find((e=>e.key==n.key));if(s){a=false;if(s.isinteger)t.isinteger=true}}if(a){const a=e.vcf.info[n.key];if(!a)throw"unknown INFO field for numerical axis: "+n.key;if(a.Type=="Integer")t.isinteger=true}}}if(t.AFtest){if(!t.AFtest.allowed_infofields)throw"AFtest.allowed_infofields[] is required";if(!Array.isArray(t.AFtest.allowed_infofields))throw"AFtest.allowed_infofields[] is not array";if(!t.AFtest.groups)throw"AFtest.groups[] missing";if(!Array.isArray(t.AFtest.groups))throw"AFtest.groups[] is not array";if(t.AFtest.groups.length<2)throw"AFtest.groups[] must have at least two elements";for(const n of t.AFtest.groups){if(n.is_termdb){if(!n.filter)throw".filter{} missing from a is_termdb group"}else if(n.is_infofield){if(!n.key)throw"key missing from a is_infofield group";if(!t.AFtest.allowed_infofields.find((e=>e.key==n.key)))throw"info key not found in allowed_infofields: "+n.key}else if(n.is_population){if(!n.key)throw"key missing from a is_population group";if(!e.populations)throw"tk.populations{} missing when using a population group";if(!e.populations.find((e=>e.key==n.key)))throw"unknown population by key: "+n.key}else{throw"unknown type of group from AFtest.groups[]"}}if(t.AFtest.testby_AFdiff);else if(t.AFtest.testby_fisher){if(t.AFtest.groups.find((e=>e.is_infofield)))throw"fisher test will not work for an info field"}else{throw"AFtest: do not know how to do test"}}if(t.inuse_AFtest){if(t.AFtest.testby_AFdiff)t.label="Allele frequency difference";else if(t.AFtest.testby_fisher)t.label="-log10 P-value"}else{t.label=Le(e)}}function je(e,t,n,a){t.leftaxis_vcfrow.attr("transform","translate(-"+n.dotwidth/2+","+(n.toplabelheight+n.maxradius)+")").selectAll("*").remove();const s=i().domain([n.minvalue,n.maxvalue]).range([n.axisheight,0]);const o=S().scale(s).ticks(4);if(n.isinteger){o.tickFormat(x("d"));if(n.maxvalue-n.minvalue<3){o.ticks(n.maxvalue-n.minvalue)}}r({axis:t.leftaxis_vcfrow.call(o),showline:true,fontsize:n.dotwidth});if(n.minvalue==n.maxvalue){t.leftaxis_vcfrow.append("text").attr("text-anchor","end").attr("font-size",n.dotwidth).attr("dominant-baseline","central").attr("x",a.tkleftlabel_xshift).attr("y",n.axisheight).text(n.minvalue).attr("fill","black")}let l=0;t.leftaxis_vcfrow.selectAll("text").each((function(){l=Math.max(l,this.getBBox().width)}));t.leftLabelMaxwidth=Math.max(t.leftLabelMaxwidth,l+15);if(n.label){const e=n.label.split(" ");const a=(n.axisheight-e.length*(n.dotwidth+1))/2;let s=0;e.forEach(((e,o)=>{t.leftaxis_vcfrow.append("text").attr("fill","black").attr("font-size",n.dotwidth).attr("dominant-baseline","central").attr("text-anchor","end").attr("y",a+(n.dotwidth+1)*o).attr("x",-(l+15)).text(e).each((function(){s=Math.max(s,this.getBBox().width+15+l)}))}));t.leftLabelMaxwidth=Math.max(t.leftLabelMaxwidth,s)}}function Le(e){if(!e.vcf)return;const t=e.vcf.numerical_axis;if(!t)return;if(!t.in_use)return"Disabled";if(t.inuse_infokey){const n=t.info_keys.find((e=>e.in_use));if(!n)return"Error: no key in_use";if(e.info_fields){const t=e.info_fields.find((e=>e.key==n.key));if(t&&t.label)return t.label}return n.key}if(t.inuse_AFtest)return ze();return"Error: unknown type of axis"}function ze(){return"Compare two groups"}function Ne(e,t){if(!e.vcf)return;const n=e.vcf.numerical_axis;if(!n)return;if(!n.in_use)return;if(n.inuse_infokey){return}if(n.inuse_AFtest&&n.AFtest){t.AFtest={groups:[],testby_AFdiff:n.AFtest.testby_AFdiff,testby_fisher:n.AFtest.testby_fisher};for(const a of n.AFtest.groups){if(a.is_termdb){t.AFtest.groups.push({is_termdb:true,filter:a.filterApi.getNormalRoot()});continue}if(a.is_infofield){const n={is_infofield:true,key:a.key};if(e.info_fields){const t=e.info_fields.find((e=>e.key==a.key));if(t&&t.missing_value!=undefined){n.missing_value=t.missing_value}}t.AFtest.groups.push(n);continue}if(a.is_population){const e={is_population:true,key:a.key};if(a.adjust_race){if(n.AFtest.groups.find((e=>e.is_termdb))){e.adjust_race=true}}t.AFtest.groups.push(e);continue}throw"unknown group type at xhr parameter"}const a=Ee(e);if(a){t.AFtest.termfilter=[a]}return}throw"unknown type of numeric axis"}function Ee(e){if(!e.vcf||!e.vcf.numerical_axis)return;const t=e.vcf.numerical_axis.AFtest;if(!t||!t.termfilter||!t.termfilter.inuse)return;if(t.termfilter.type!="categorical")throw"AFtest.termfilter.type is not categorical (hardcoded)";if(!t.termfilter.values)throw"termfilter.values missing";const n=t.termfilter.values[t.termfilter.value_index];if(!n)throw"unknown value selection by value_index in AFtest.termfilter";return{term:{id:t.termfilter.id,name:t.termfilter.name,type:"categorical"},values:[{key:n.key,label:n.label||n.key}]}}function Me(e,t){const n=e.vcf.numerical_axis.AFtest;const a=n.dom.holder.append("table").style("border-spacing","5px").style("border-collapse","separate").style("border-left","solid 1px #ccc");for(const[s,o]of n.groups.entries()){o.dom={};const n=a.append("tr");o.dom.td1=n.append("td").append("div").attr("class","sja_filter_tag_btn").text("GROUP "+(s+1)).style("white-space","nowrap").style("border-radius","6px").style("background-color","#ddd").style("color","#000").style("padding","6px").style("margin","3px 5px").style("font-size",".7em").on("click",(()=>{Ce(e,t,o)}));o.dom.td2=n.append("td").style("opacity",.5).style("font-size",".8em").style("white-space","nowrap");o.dom.td3=n.append("td");Oe(e,t,o)}Ie(n,e,t,a);Re(n,e,t,a);Se(e)}function Ie(e,t,n,a){const s=a.append("tr");const o=s.append("td").attr("colspan",3);o.append("span").text("TEST METHOD").style("padding","6px").style("margin","3px 5px").style("font-size",".7em");e.dom.testmethod_select=o.append("select").on("change",(()=>{e.testby_AFdiff=false;e.testby_fisher=false;const n=e.dom.testmethod_select.node().selectedIndex;if(n==0){e.testby_AFdiff=true}else if(n==1){e.testby_fisher=true}Fe(t);t.load()}));e.dom.testmethod_select.append("option").text("Value difference");e.dom.testmethod_option_fisher=e.dom.testmethod_select.append("option").text("Fisher exact test")}function Re(e,t,n,a){if(!e.termfilter)return;const s=a.append("tr");const o=s.append("td").attr("colspan",3);o.append("span").text("RESTRICT TO").style("padding","6px").style("margin","3px 5px").style("font-size",".7em");const i=o.append("select").on("change",(async()=>{const a=i.node().selectedIndex;if(a==0){e.termfilter.inuse=false}else{e.termfilter.inuse=true;e.termfilter.value_index=a-1}for(const a of e.groups){if(a.is_termdb){Pe(a,t,n)}}i.property("disabled",true);await t.load();i.property("disabled",false)}));e.dom.termfilter_select=i;if(e.termfilter.disabled){i.property("disabled",true)}e.dom.termfilter_options=[];e.dom.termfilter_options.push(i.append("option").text("No restriction"));for(const t of e.termfilter.values){e.dom.termfilter_options.push(i.append("option").text(t.label||t.key))}}function Se(e){const t=e.vcf.numerical_axis.AFtest;if(t.groups[0].is_population&&t.groups[1].is_population){t.groups[0].adjust_race=false;t.groups[1].adjust_race=false}else{const e=t.groups.find((e=>e.is_population));if(e){if(e.allowto_adjust_race){e.adjust_race=t.groups.find((e=>e.is_termdb))!=undefined}else{delete e.adjust_race}}}if(t.testby_fisher){if(t.groups.find((e=>e.is_infofield))){t.testby_fisher=false;t.testby_AFdiff=true;t.dom.testmethod_option_fisher.property("disabled",true)}else{t.dom.testmethod_option_fisher.property("disabled",false)}}t.dom.testmethod_select.node().selectedIndex=t.testby_AFdiff?0:1;if(t.termfilter){t.termfilter.disabled=false;if(!t.groups.find((e=>e.is_termdb))){if(!t.groups.find((t=>{if(t.is_population){const n=e.populations.find((e=>e.key==t.key));if(n&&n.termfilter)return t}return}))){t.termfilter.inuse=false;t.termfilter.disabled=true}}if(t.termfilter.disabled){t.dom.termfilter_select.property("disabled",true)}else{t.dom.termfilter_select.property("disabled",false);const n=t.groups.filter((e=>e.is_population));if(n.length){const a=new Set;for(const[s,o]of t.termfilter.values.entries()){for(const t of n){const n=e.populations.find((e=>e.key==t.key));if(n.termfilter){if(!n.sets.find((e=>e.termfilter_value==o.key))){a.add(s);break}}}}if(a.size){for(const e of a){t.dom.termfilter_options[e+1].property("disabled",true)}if(a.has(t.termfilter.value_index)){t.termfilter.inuse=false}}else{for(const e of t.dom.termfilter_options)e.property("disabled",false)}}}t.dom.termfilter_select.node().selectedIndex=t.termfilter.inuse?1+t.termfilter.value_index:0}}function Ce(e,t,n){const a=e.vcf.numerical_axis.AFtest;const s=e.legend.tip.clear();const o=[];if(e.mds&&e.mds.termdb){let a;if(n.filter){const t=E(n.filter,"cohortFilter");if(t&&e.mds.termdb.selectCohort){const n=t.tvs.values.map((e=>e.key)).sort().join(",");a=e.mds.termdb.selectCohort.values.findIndex((e=>e.keys.sort().join(",")===n))}}o.push({label:"Clinical info",callback:async o=>{const l={holder:o,state:{genome:t.genome.name,dslabel:e.mds.label,activeCohort:a},barchart:{bar_click_override:e=>{s.hide();if(e.length==0)return;const t=e.find((e=>e.tag==="cohortFilter"));if(t){t.renderAs="htmlSelect";t.selectOptionsFrom="selectCohort"}n.filter={type:"tvslst",join:e.length==1?"":"and",in:true,lst:e};delete n.key;delete n.is_infofield;delete n.is_population;delete n.filterApi;n.is_termdb=true;i()}}};const r=M(Ue(e));if(r)l.state.termfilter={filter:r};R(l)}})}if(a.allowed_infofields){o.push({label:"Numerical value",callback:t=>{for(const o of a.allowed_infofields){if(n.is_infofield&&n.key==o.key){continue}const a=e.info_fields.find((e=>e.key==o.key));t.append("div").attr("class","sja_menuoption").text(a.label).on("click",(async()=>{s.hide();delete n.is_termdb;delete n.is_population;delete n.filterApi;if(n.dom.samplehandle){n.dom.samplehandle.remove();delete n.dom.samplehandle}n.is_infofield=true;n.key=o.key;i()}))}}})}if(e.populations){o.push({label:"Population",callback:t=>{for(const a of e.populations){if(n.is_population&&n.key==a.key){continue}t.append("div").attr("class","sja_menuoption").text(a.label).on("click",(async()=>{s.hide();delete n.is_termdb;delete n.is_infofield;delete n.filterApi;if(n.dom.samplehandle){n.dom.samplehandle.remove();delete n.dom.samplehandle}n.is_population=true;n.key=a.key;n.allowto_adjust_race=a.allowto_adjust_race;n.adjust_race=a.adjust_race;i()}))}}})}c(s.d.append("div").style("margin","13px"),o);s.showunder(n.dom.td1.node());async function i(){a.dom.holder.selectAll("*").remove();a.groups.forEach((e=>delete e.filterApi));Me(e,t);n.dom.td2.text("UPDATING...");Fe(e);await e.load();n.dom.td2.text(n.is_termdb||n.is_population?"ALLELE FREQUENCY OF":"VALUE OF")}}function Oe(e,t,n){if(n.is_termdb){n.dom.td2.text("ALLELE FREQUENCY OF");Pe(n,e,t);return}if(n.is_infofield){n.dom.td2.text("VALUE OF");Be(n,e);return}if(n.is_population){n.dom.td2.text("ALLELE FREQUENCY OF");qe(n,e);return}n.dom.td3.text("Unknown group type!")}function Ue(e){const t=[];const n=Ee(e);if(n){t.push({type:"tvslst",join:"",in:true,lst:[{type:"tvs",tvs:n}]})}if(e.sample_termfilter){t.push(JSON.parse(JSON.stringify(e.sample_termfilter)))}return t}function Te(e,t){const n=JSON.parse(JSON.stringify(e));n.tag="filterUiRoot";const a={type:"tvslst",join:"and",in:true,lst:[n]};const s=Ue(t);if(s.length){a.lst.push(M(s))}return a}function Pe(e,t,n){if(!e.filterApi){e.filterApi=N({holder:e.dom.td3,vocab:{route:"termdb",genome:n.genome.name,dslabel:t.dslabel},emptyLabel:"Entire cohort",termdbConfig:n.genome.datasets[t.dslabel].termdb,callback:async n=>{e.filter=n;await t.load()}})}e.filterApi.main(Te(e.filter,t));if(!e.dom.samplehandle){console.log(501);e.dom.samplehandle=e.dom.td3.append("span").style("margin-left","15px").style("opacity",".6").attr("class","sja_clbtext").text("Loading...").on("click",(()=>{t.legend.tip.clear().showunder(e.dom.samplehandle.node());R({holder:t.legend.tip.d.append("div").style("margin","5px"),state:{genome:n.genome.name,dslabel:t.mds.label,termfilter:{filter:e.filterApi.getNormalRoot()}},barchart:{bar_click_opts:[]}})}))}}function Be(e,t){const n=e.dom.td3.append("span");const[a,s]=U(n);a.on("change",(async()=>{const n=a.node().value;const o=t.info_fields.find((e=>e.key==n));e.key=n;s.html((o?o.label:n)+' <span style="font-size:.7em">LOADING...</span>');await t.load();s.html((o?o.label:n)+" ▾");a.style("width",s.node().offsetWidth+"px")}));for(const e of t.vcf.numerical_axis.AFtest.allowed_infofields){const n=t.info_fields.find((t=>t.key==e.key));a.append("option").attr("value",e.key).text(n?n.label:e.key)}a.node().value=e.key;const o=t.info_fields.find((t=>t.key==e.key));s.style("border-radius","6px").style("background-color","#ddd").style("color","black").style("padding","3px 6px 3px 6px").style("margin-left","5px").html(o.label+" ▾");a.style("width",s.node().offsetWidth+"px")}function qe(e,t){const n=e.dom.td3.append("span");const a=t.populations.find((t=>t.key==e.key));const s=t.vcf.numerical_axis.AFtest;const[o,i]=U(n);o.on("change",(async()=>{const n=o.node().value;const a=t.populations.find((e=>e.key==n));e.key=n;e.allowto_adjust_race=a.allowto_adjust_race;e.adjust_race=a.adjust_race;r(l);Se(t);i.html(a.label+' <span style="font-size:.7em">LOADING...</span>');await t.load();i.html(a.label+(t.populations.length>1?" ▾":""));o.style("width",i.node().offsetWidth+"px")}));for(const e of t.populations){o.append("option").attr("value",e.key).text(e.label)}o.node().value=e.key;i.style("border-radius","6px").style("background-color","#ddd").style("color","black").style("padding","3px 6px 3px 6px").style("margin-left","5px").html(a.label+(t.populations.length>1?" ▾":""));o.style("width",i.node().offsetWidth+"px");const l=n.append("span");r(l);function r(n){n.selectAll("*").remove();const a=s.groups.find((t=>t.key==e.key));if(a.allowto_adjust_race){const e=n.append("label");e.append("input").attr("type","checkbox").style("margin-left","10px").property("disabled",!s.groups.find((e=>e.is_termdb))||!s.groups.find((e=>e.is_population))).property("checked",a.adjust_race).on("change",(async()=>{a.adjust_race=!a.adjust_race;o.html(" Loading...");await t.load();o.html(" Adjust race background")}));const o=e.append("span").html(" Adjust race background")}}}function Je(e,t){const n=e.vcf.numerical_axis.AFtest.groups[t];if(!n)throw"index out of bound";if(n.is_infofield){const t=e.info_fields.find((e=>e.key==n.key));return t?t.label:n.key}if(n.is_population){const t=e.populations.find((e=>e.key==n.key));return t?t.label:n.key}if(n.is_termdb){return"Group "+(t+1)}throw"unknown AFtest group type"}function Ge(e,t){if(!e.vcf)return;const n=e.vcf.numerical_axis;if(!n)return;const a=e.legend.table.append("tr");a.append("td").style("text-align","right").style("opacity",.3).text("Numerical axis");const s=a.append("td");const o=s.append("table").append("tr");const i=o.append("td").append("button").style("margin","0px 10px");const l=o.append("td");const r=Ve(i,l,e,t);r();i.on("click",(()=>{De(i,e,t,r)}))}function De(e,t,n,a){t.legend.tip.clear();const s=t.legend.tip.d;const o=t.vcf.numerical_axis;if(o.info_keys){for(const e of o.info_keys){if(o.inuse_infokey&&e.in_use){continue}let n=e.key;if(t.info_fields){const a=t.info_fields.find((t=>t.key==e.key));if(a)n=a.label}s.append("div").text(n).attr("class","sja_menuoption").on("click",(()=>{o.in_use=true;o.inuse_AFtest=false;o.inuse_infokey=true;o.info_keys.forEach((e=>e.in_use=false));e.in_use=true;i()}))}}if(o.AFtest&&!o.inuse_AFtest){s.append("div").style("margin-top","10px").attr("class","sja_menuoption").text(ze()).on("click",(()=>{o.in_use=true;o.inuse_infokey=false;o.inuse_AFtest=true;if(o.AFtest&&o.AFtest.groups){for(const e of o.AFtest.groups)delete e.filterApi}i()}))}if(o.in_use){s.append("div").style("margin-top","10px").attr("class","sja_menuoption").html("× Disable").on("click",(()=>{o.in_use=false;o.inuse_infokey=false;o.inuse_AFtest=false;i()}))}t.legend.tip.showunder(e.node());async function i(){t.legend.tip.hide();a();e.node().disabled=true;await t.load();e.node().disabled=false}}function Ve(e,t,n,a){return()=>{Fe(n);e.html(Le(n)+" ▾");t.selectAll("*").remove();const s=n.vcf.numerical_axis;if(!s.in_use){return}if(s.inuse_infokey){return}if(s.inuse_AFtest){n.vcf.numerical_axis.AFtest.dom={holder:t};Me(n,a);return}throw"do not know what is in use for numerical axis"}}function Ye(e,t){if(!e.info_fields&&!e.variantcase_fields)return;e.legend.variantfilter={};const n=e.legend.table.append("tr");n.append("td").style("text-align","right").style("opacity",.3).text("Variant Filters");const a=n.append("td").style("padding-left","5px").append("table").append("tr");e.legend.variantfilter.button=a.append("td").append("div").style("display","inline-block").attr("class","sja_menuoption").text("+").style("border-radius","3px").style("border","solid 1px #ddd").on("click",(()=>{Qe(e,t)}));e.legend.variantfilter.holder=a.append("td").style("padding-left","10px");Ze(e)}function He(e,t,n){const a=e.legend.variantfilter.holder.append("div").style("display","inline-block").style("margin-top","5px");a.append("div").style("display","inline-block").style("border-radius","6px 0 0 6px").style("color","#000").style("border-color","#ddd").style("border-style","solid").style("border-width","2px").style("padding","4px").style("margin-left","5px").style("font-size",".7em").style("text-transform","uppercase").text(t.label);const s=a.append("div").style("display","inline-block");if(t.iscategorical){Ke(e,t,s,a)}else if(t.isinteger||t.isfloat){et(e,t,s,a)}else if(t.isflag){tt(e,t,s)}else{throw"unknown info type"}let o=false;a.append("div").attr("class","sja_filter_tag_btn").style("border-radius","0 6px 6px 0").style("background-color","#ddd").style("padding","2px 6px 4px 6px").style("margin-right","1px").style("color","#000").html("×").on("click",(async n=>{if(o)return;o=true;n.target.innerHTML="deleting...";delete t.isactivefilter;if(t.iscategorical){delete t.unannotated_ishidden;for(const e of t.values)delete e.ishidden}else if(t.isflag){delete t.remove_yes;delete t.remove_no}await e.load();a.remove()}))}function Qe(e,t){const n=e.legend.tip;n.clear();const a=n.d.append("table").style("border-spacing","5px").style("border-collapse","separate");if(e.info_fields){for(const n of e.info_fields){const s=a.append("tr");s.append("td").style("padding","5px").style("text-align","right").style("opacity",.5).text(n.label);const o=s.append("td").style("padding","5px");if(n.iscategorical){We(n,o,(async()=>{n.isactivefilter=nt(n)>0;await e.load();Ze(e)}))}else if(n.isinteger||n.isfloat){Xe(n,o,e,t)}else if(n.isflag){$e(n,o,e)}else{throw"unknown info type"}}}if(e.variantcase_fields){console.log("list variantcase fields in menu")}e.legend.tip.showunder(e.legend.variantfilter.button.node())}function We(e,t,n){t.selectAll("*").remove();for(const a of e.values){const s=t.append("div").style("display","inline-block").style("padding","2px 10px").attr("class","sja_clb");s.append("div").attr("class","sja_mcdot").style("display","inline-block").style("background","#aaa").style("padding","2px 3px").text(e._data?e._data.value2count[a.key]:"");const o=s.append("div").style("display","inline-block").style("padding","2px 5px").style("text-decoration",a.ishidden?"line-through":"none").text(a.label);s.on("click",(async()=>{o.text("Loading...");a.ishidden=!a.ishidden;await n();o.style("text-decoration",a.ishidden?"line-through":"none").text(a.label)}))}if(e._data.unannotated_count){const a=t.append("div").style("display","inline-block").style("padding","2px 10px").attr("class","sja_clb");a.append("div").attr("class","sja_mcdot").style("display","inline-block").style("background","#aaa").style("padding","2px 3px").text(e._data?e._data.unannotated_count:0);const s=a.append("div").style("display","inline-block").style("padding","2px 5px").style("text-decoration",e.unannotated_ishidden?"line-through":"none").text("Unannotated");a.on("click",(async()=>{s.text("Loading...");e.unannotated_ishidden=!e.unannotated_ishidden;await n();s.style("text-decoration",e.unannotated_ishidden?"line-through":"none").text("Unannotated")}))}}function $e(e,t,n,a){const s=t.append("div").style("display","inline-block").style("padding","3px 10px").attr("class","sja_clb").on("click",(async()=>{if(e.remove_yes){e.remove_yes=false}else{e.remove_yes=true;e.remove_no=false}o.style("text-decoration",e.remove_yes?"line-through":"default");e.isactivefilter=e.remove_yes||e.remove_no;await n.load();Ze(n)}));s.append("div").attr("class","sja_mcdot").style("display","inline-block").style("background","#aaa").style("padding","2px 3px").text(e._data?e._data.count_yes:0);const o=s.append("div").style("display","inline-block").style("padding","4px 5px").text("Yes").style("text-decoration",e.remove_yes?"line-through":"default");const i=t.append("div").style("display","inline-block").style("padding","3px 10px").attr("class","sja_clb").on("click",(async()=>{if(e.remove_no){e.remove_no=false}else{e.remove_no=true;e.remove_yes=false}l.style("text-decoration",e.remove_no?"line-through":"default");e.isactivefilter=e.remove_yes||e.remove_no;await n.load();Ze(n)}));i.append("div").attr("class","sja_mcdot").style("display","inline-block").style("background","#aaa").style("padding","2px 3px").text(e._data?e._data.count_no:0);const l=i.append("div").style("display","inline-block").style("padding","4px 5px").style("text-decoration",e.remove_no?"line-through":"default").text("No")}function Xe(e,t,n,a){t.selectAll("*").remove();const s='<span style="font-family:Times;font-style:italic">x</span>';const i=t.append("input").attr("type","number").attr("value",e.range.start).style("width","60px").property("disabled",e.range.startunbounded?true:false).on("keyup",(async t=>{if(!o(t))return;if(!e.isactivefilter)return;i.property("disabled",true);await f();i.property("disabled",false).node().focus()}));const l=t.append("select").style("margin-left","10px").on("change",(async t=>{const n=t.target.selectedIndex;if(n==2){e.range.startunbounded=true;i.property("disabled",true)}else{delete e.range.startunbounded;e.range.startinclusive=n==0;i.property("disabled",false)}if(!e.isactivefilter)return;l.property("disabled",true);await f();l.property("disabled",false).node().focus()}));l.append("option").html("≤");l.append("option").html("<");l.append("option").html("∞");l.node().selectedIndex=e.range.startunbounded?2:e.range.startinclusive?0:1;t.append("div").style("display","inline-block").style("padding","3px 10px").html(s);const r=t.append("select").style("margin-right","10px").on("change",(async t=>{const n=t.target.selectedIndex;if(n==2){e.range.stopunbounded=true;d.property("disabled",true)}else{delete e.range.stopunbounded;e.range.stopinclusive=n==0;d.property("disabled",false)}if(!e.isactivefilter)return;r.property("disabled",true);await f();r.property("disabled",false).node().focus()}));r.append("option").html("≤");r.append("option").html("<");r.append("option").html("∞");r.node().selectedIndex=e.range.stopunbounded?2:e.range.stopinclusive?0:1;const d=t.append("input").attr("type","number").style("width","60px").attr("value",e.range.stop).property("disabled",e.range.stopunbounded?true:false).on("keyup",(async t=>{if(!o(t))return;if(!e.isactivefilter)return;d.property("disabled",true);await f();d.property("disabled",false).node().focus()}));const p=Math.random();const c=t.append("input").attr("type","checkbox").style("margin","0px 5px 0px 10px").attr("id",p).property("checked",e.isactivefilter).on("change",(async()=>{c.property("disabled",true);await f();c.property("disabled",false)}));t.append("label").attr("for",p).text("APPLY").style("font-size",".8em").attr("class","sja_clbtext");async function f(){e.isactivefilter=c.node().checked;try{if(e.range.startunbounded&&e.range.stopunbounded)throw"Both ends can not be unbounded";const t=e.range.startunbounded?null:Number(i.property("value"));const s=e.range.stopunbounded?null:Number(d.property("value"));if(t!=null&&s!=null&&t>=s)throw"start must be lower than stop";e.range.start=t;e.range.stop=s;await n.load();Ze(n,a)}catch(e){window.alert(e)}}}function Ze(e,t){e.legend.variantfilter.holder.selectAll("*").remove();if(e.info_fields){for(const t of e.info_fields){if(!t.isfilter)continue;if(t.isactivefilter){He(e,t)}}}if(e.variantcase_fields){console.log("to list active variantcase fields")}}function Ke(e,t,n,a){n.selectAll("*").remove();const s=e.legend.tip;for(const s of t.values){if(s.ishidden){s.htmlspan=n.append("div").attr("class","sja_filter_tag_btn").style("background-color","#ddd").style("padding","3px 6px 5px 6px").style("margin-right","1px").style("font-size",".9em").style("color","#000").text((t._data?"("+t._data.value2count[s.key]+") ":"")+s.label).style("text-decoration","line-through").on("click",(async()=>{delete s.ishidden;s.htmlspan.text("Loading...");await e.load();if(nt(t)==0){delete t.isactivefilter;a.remove()}else{Ke(e,t,n,a)}}))}}if(t.unannotated_ishidden){t.unannotated_htmlspan=n.append("div").attr("class","sja_filter_tag_btn").style("background-color","#ddd").style("padding","3px 6px 5px 6px").style("margin-right","1px").style("font-size",".9em").style("color","#000").text((t._data?"("+t._data.unannotated_count+") ":"")+"Unannotated").style("text-decoration","line-through").on("click",(async()=>{delete t.unannotated_ishidden;t.unannotated_htmlspan.text("Loading...");await e.load();if(nt(t)==0){delete t.isactivefilter;a.remove()}else{Ke(e,t,n,a)}}))}if(nt(t)<=t.values.length){const o=n.append("div").attr("class","sja_filter_tag_btn").style("background-color","#ddd").style("color","#000").style("padding","2px 6px 4px 6px").style("margin-right","1px").html("+").on("click",(()=>{s.clear().showunder(o.node());const i=s.d.append("div").style("display","block");for(const o of t.values){if(!o.ishidden){const l=i.append("div").attr("class","sja_menuoption");l.append("div").style("display","inline-block").style("padding","1px 5px").text((t._data?"("+t._data.value2count[o.key]+") ":"")+o.label);l.on("click",(async()=>{s.hide();o.ishidden=true;Ke(e,t,n,a);await e.load()}))}}if(t._data.unannotated_count&&!t.unannotated_ishidden){const o=i.append("div").attr("class","sja_menuoption");o.append("div").style("display","inline-block").style("padding","1px 5px").text((t._data?"("+t._data.unannotated_count+") ":"")+"Unannotated");o.on("click",(async()=>{s.hide();t.unannotated_ishidden=true;Ke(e,t,n,a);await e.load()}))}}))}}function et(e,t,n,a){n.selectAll("*").remove();const s=n.append("div").attr("class","sja_filter_tag_btn").style("background-color","#ddd").style("color","#000").style("padding","3px 6px 4px 6px").style("margin-right","1px").style("font-size",".9em");s.selectAll("*").remove();const i='<span style="font-family:Times;font-style:italic">x</span>';if(t.range.startunbounded){s.html(i+" "+(t.range.stopinclusive?"≤":"<")+" "+t.range.stop)}else if(t.range.stopunbounded){s.html(i+" "+(t.range.startinclusive?"≥":">")+" "+t.range.start)}else{s.html(t.range.start+" "+(t.range.startinclusive?"≤":"<")+" "+i+" "+(t.range.stopinclusive?"≤":"<")+" "+t.range.stop)}t.htmlspan=s.append("div").style("display","inline-block").style("background-color","#ddd").style("color","#000").style("padding-left","3px").text(t._data?"("+t._data.filteredcount+" filtered)":"");s.on("click",(()=>{const l=e.legend.tip;l.clear();const r=l.d.append("div").style("display","block").style("padding","3px 5px");const d=r.append("input").attr("type","number").attr("value",t.range.start).style("width","60px").on("keyup",(async e=>{if(!o(e))return;d.property("disabled",true);await u();d.property("disabled",false)}));const p=r.append("select").style("margin-left","10px");p.append("option").html("≤");p.append("option").html("<");p.append("option").html("∞");p.node().selectedIndex=t.range.startunbounded?2:t.range.startinclusive?0:1;r.append("div").style("display","inline-block").style("padding","3px 10px").html(i);const c=r.append("select").style("margin-right","10px");c.append("option").html("≤");c.append("option").html("<");c.append("option").html("∞");c.node().selectedIndex=t.range.stopunbounded?2:t.range.stopinclusive?0:1;const f=r.append("input").attr("type","number").style("width","60px").attr("value",t.range.stop).on("keyup",(async e=>{if(!o(e))return;f.property("disabled",true);await u();f.property("disabled",false)}));l.d.append("div").attr("class","sja_menuoption").style("text-align","center").text("APPLY").on("click",(()=>{l.hide();u()}));l.showunder(s.node());async function u(){try{if(p.node().selectedIndex==2&&c.node().selectedIndex==2)throw"Both ends can not be unbounded";const s=p.node().selectedIndex==2?null:Number(d.node().value);const o=c.node().selectedIndex==2?null:Number(f.node().value);if(s!=null&&o!=null&&s>=o)throw"start must be lower than stop";if(p.node().selectedIndex==2){t.range.startunbounded=true;delete t.range.start}else{delete t.range.startunbounded;t.range.start=s;t.range.startinclusive=p.node().selectedIndex==0}if(c.node().selectedIndex==2){t.range.stopunbounded=true;delete t.range.stop}else{delete t.range.stopunbounded;t.range.stop=o;t.range.stopinclusive=c.node().selectedIndex==0}t.htmlspan.text("Loading...");await e.load();et(e,t,n,a)}catch(e){window.alert(e)}}}))}function tt(e,t,n,a){n.selectAll("*").remove();t.htmlspan=n.append("div").attr("class","sja_filter_tag_btn").style("background-color","#ddd").style("color","#000").style("padding","3px 6px 5px 6px").style("margin-right","1px").style("font-size",".9em").style("text-decoration","line-through").text((t._data?"("+(t.remove_yes?t._data.count_yes:t._data.count_no)+") ":"")+(t.remove_no?"No":"Yes")).on("click",(async()=>{t.remove_no=!t.remove_no;t.remove_yes=!t.remove_yes;t.htmlspan.text("Loading...");await e.load();tt(e,t,n)}))}function nt(e){let t=e.unannotated_ishidden?1:0;for(const n of e.values){if(n.ishidden)t++}return t}function at(e,t,n){if(!t.ld)return 0;if(!e.ld)return 0;let a=0;for(const s of t.ld.tracks){const o=e.ld[s.name];if(!o){delete s.g;continue}s.yoff=a;s.g={g:t.g_ldrow.append("g").attr("transform","translate(0,"+a+")")};s.g.label=t.gleft_ldrow.append("text").text(s.name+" LD").attr("font-size",n.labelfontsize).attr("x",n.tkleftlabel_xshift).attr("text-anchor","end").each((function(){t.leftLabelMaxwidth=Math.max(t.leftLabelMaxwidth,this.getBBox().width)}));let i=0;for(const e of o.rglst){const t=s.g.g.append("g").attr("transform","translate("+e.xoff+",0)");if(e.rangetoobig){e.text_rangetoobig=t.append("text").text(e.rangetoobig).attr("text-anchor","middle").attr("dominant-baseline","central").attr("x",e.width/2);i=Math.max(i,50);continue}if(e.img){t.append("image").attr("width",e.width).attr("height",e.img.height).attr("xlink:href",e.img.src);i=Math.max(i,e.img.height);continue}}s.height=i;s.g.label.attr("y",a+Math.min(i/2,t.ld.connheight));for(const e of o.rglst){if(e.rangetoobig){e.text_rangetoobig.attr("y",i/2)}}a+=i}return a}function st(e,t){if(!e.ld)return;const n=e.legend.table.append("tr");n.append("td").style("text-align","right").style("opacity",.3).html("LD r<sup>2</sup>");const a=n.append("td").style("padding","10px");for(const n of e.ld.tracks){const s=a.append("div").style("margin-bottom","5px");O({holder:s,labeltext:n.name,checked:n.shown,callback:async()=>{if(n.shown){n.shown=false;n.g.label.remove();n.g.g.remove();e.height_main-=n.height;{let t=false;for(const a of e.ld.tracks){if(!a.g)continue;if(a.name==n.name){t=true}else{if(t){a.yoff-=n.height;a.g.label.transition().attr("y",a.yoff+e.ld.connheight);a.g.g.transition().attr("transform","translate(0,"+a.yoff+")")}}}}t.block_setheight();return}n.shown=true;await e.load()}})}{const t=a.append("div");const n=t.append("select").on("input",(()=>{const t=n.node().selectedIndex;if(t==0){delete e.ld.overlaywith;s.style("display","none");e.skewer2.selectAll(".sja_aa_disk_fill").attr("fill",(e=>J(e)))}else{e.ld.overlaywith=e.ld.tracks[t-1].name;s.style("display","inline-block")}}));n.append("option").text("No overlay");for(const t of e.ld.tracks){n.append("option").text(t.name)}const s=t.append("div").style("display","none").style("margin-left","10px");const o=[];for(let t=0;t<=1;t+=.1){o.push(e.ld.overlay.r2_to_color(t))}const l=s.append("svg");const d=20;const p=15;const c=10;const f=150;r({axis:l.append("g").attr("transform","translate("+c+","+d+")").call(C().scale(i().domain([0,1]).range([0,f])).ticks(4)),fontsize:12});const u=l.append("defs").append("linearGradient").attr("id","grad");u.append("stop").attr("offset","0%").attr("stop-color",e.ld.overlay.color_0);u.append("stop").attr("offset","100%").attr("stop-color",e.ld.overlay.color_1);l.append("rect").attr("x",c).attr("y",d).attr("width",f).attr("height",p).attr("fill","url(#grad)");l.attr("width",c*2+f).attr("height",d+p)}}function ot(e,t){if(!e.legend)e.legend={};e.legend.tip=new _({padding:"0px"});const[n,a]=z(t,e.name);e.tr_legend=n;const s=a.append("table").style("border-spacing","5px").style("border-collapse","separate");e.legend.table=s;Ge(e,t);Ye(e,t);it(e);st(e,t);pt(e,t)}function it(e){if(!e.legend.mclass)e.legend.mclass={};if(!e.legend.mclass.hiddenvalues)e.legend.mclass.hiddenvalues=new Set;e.legend.mclass.row=e.legend.table.append("tr");e.legend.mclass.row.append("td").style("text-align","right").style("opacity",.8).text("Mutation");e.legend.mclass.holder=e.legend.mclass.row.append("td")}function lt(e,t,n){if(e.mclass2count){rt(e.mclass2count,t)}if(e.info_fields){dt(e.info_fields,t)}if(e.AFtest_termdbgroup){let n=t.vcf.numerical_axis.AFtest.groups[0];if(n.is_termdb){n.dom.samplehandle.text("n="+e.AFtest_termdbgroup[0].samplecount+", view stats");n.popsetaverage=e.AFtest_termdbgroup[0].popsetaverage}n=t.vcf.numerical_axis.AFtest.groups[1];if(n.is_termdb){n.dom.samplehandle.text("n="+e.AFtest_termdbgroup[1].samplecount+", view stats");n.popsetaverage=e.AFtest_termdbgroup[1].popsetaverage}}}function rt(t,n){n.legend.mclass.holder.selectAll("*").remove();const a=[],s=[];for(const e in t){const o={k:e,count:t[e]};if(n.legend.mclass.hiddenvalues.has(e)){s.push(o)}else{a.push(o)}}a.sort(((e,t)=>t.count-e.count));s.sort(((e,t)=>t.count-e.count));for(const t of a){let o,i,l="#858585";if(Number.isInteger(t.k)){o=b[t.k];if(t.dt==v){i="Copy number variation."}else if(t.dt==k){i="Loss of heterozygosity."}else if(t.dt==w){l=e[A].color;i="Internal tandem duplication."}else if(t.dt==F){i="Structural variation of DNA."}else if(t.dt==j){i="Fusion gene from RNA-seq."}}else{o=e[t.k].label;l=e[t.k].color;i=e[t.k].desc}const r=n.legend.mclass.holder.append("div").attr("class","sja_clb").style("display","inline-block").on("click",(()=>{n.legend.tip.clear().d.append("div").attr("class","sja_menuoption").text("Hide").on("click",(()=>{n.legend.mclass.hiddenvalues.add(t.k);n.legend.tip.hide();n.load()}));n.legend.tip.d.append("div").attr("class","sja_menuoption").text("Show only").on("click",(()=>{for(const e of a){n.legend.mclass.hiddenvalues.add(e.k)}n.legend.mclass.hiddenvalues.delete(t.k);n.legend.tip.hide();n.load()}));if(s.length){n.legend.tip.d.append("div").attr("class","sja_menuoption").text("Show all").on("click",(()=>{n.legend.mclass.hiddenvalues.clear();n.legend.tip.hide();n.load()}))}n.legend.tip.d.append("div").style("padding","10px").style("font-size",".8em").style("width","150px").text(i);n.legend.tip.showunder(r.node())}));r.append("div").style("display","inline-block").attr("class","sja_mcdot").style("background",l).html(t.count>1?t.count:" ");r.append("div").style("display","inline-block").style("color",l).html(" "+o)}for(const t of s){let a=false;n.legend.mclass.holder.append("div").style("display","inline-block").attr("class","sja_clb").style("text-decoration","line-through").style("opacity",.3).text("("+t.count+") "+(Number.isInteger(t.k)?b[t.k]:e[t.k].label)).on("click",(async e=>{if(a)return;a=true;n.legend.mclass.hiddenvalues.delete(t.k);e.target.innerHTML="Updating...";await n.load()}))}}function dt(e,t){for(const n in e){const a=t.info_fields.find((e=>e.key==n));if(!a){console.log("info field not found by key: "+n);continue}a._data=e[n];if(a.isactivefilter){if(a.iscategorical){if(a.unannotated_htmlspan)a.unannotated_htmlspan.text("("+(a._data.unannotated_count||0)+") Unannotated");for(const e of a.values){if(e.htmlspan){e.htmlspan.text("("+(a._data.value2count[e.key]||0)+") "+e.label)}}}else if(a.isinteger||a.isfloat){if(a.htmlspan)a.htmlspan.text("("+a._data.filteredcount+" filtered)")}else if(a.isflag){if(a.htmlspan)a.htmlspan.text("("+(a.remove_yes?a._data.count_yes:a._data.count_no)+") "+(a.remove_no?"No":"Yes"))}else{throw"unknown info type"}}}}function pt(e,t){if(e.mds&&e.mds.hide_genotypedownload)return;const n=e.legend.table.append("tr").append("td").attr("colspan",2).append("button").text("Export genotype");n.on("click",(async()=>{n.property("disabled",true);const a=vt(e,t);a.exportgenotype=true;delete a.trigger_ld;delete a.AFtest;const s=await d("mds2",a);if(s.error)throw s.error;const o=document.createElement("a");document.body.appendChild(o);o.addEventListener("click",(function(){o.download="genotype.txt";const e=new Blob([s.exportgenotype],{type:"octet/stream"});o.href=URL.createObjectURL(e);document.body.removeChild(o)}),false);o.click();n.property("disabled",false)}))}function ct(e,t){return()=>xt(e,t)}async function ft(e,t){e.load=ct(e,t);e.tip2=new _({padding:"0px"});if(e.dslabel){const n=t.genome.datasets[e.dslabel];if(!n)throw"dataset not found for "+e.dslabel;if(n.mdsIsUninitiated){const e=await s(`getDataset?genome=${t.genome.name}&dsname=${n.label}`);if(e.error)throw e.error;if(!e.ds)throw"ds missing";Object.assign(n,e.ds);delete n.mdsIsUninitiated}e.mds=n;if(!e.mds.track)throw"mds.track{} missing: dataset not configured for mds2 track";ht(e)}else{if(!e.name)e.name="Unnamed";if(e.vcf){await G(e.vcf,t.genome)}}ut(e);yt(e);e.tklabel.text(e.name);mt(e,t);gt(e);e.clear=()=>{if(e.g_vcfrow)e.g_vcfrow.selectAll("*").remove();if(e.leftaxis_vcfrow)e.leftaxis_vcfrow.selectAll("*").remove();if(e.g_ldrow)e.g_ldrow.selectAll("*").remove();if(e.gleft_ldrow)e.gleft_ldrow.selectAll("*").remove()};e.config_handle=t.maketkconfighandle(e).on("click",(()=>{}));ot(e,t)}function ut(e){if(e.termdb2groupAF){if(!e.mds)throw".mds missing";if(!e.mds.termdb)throw".mds.termdb missing";if(!e.vcf)throw"tk.vcf missing";if(!e.vcf.numerical_axis){e.vcf.numerical_axis={}}e.vcf.numerical_axis.termdb2groupAF=e.termdb2groupAF;delete e.termdb2groupAF}if(e.numericaxis_inuse_ebgatest){if(!e.vcf)throw"tk.vcf missing";if(!e.vcf.numerical_axis){e.vcf.numerical_axis={}}e.vcf.numerical_axis.inuse_ebgatest=true;delete e.vcf.numerical_axis.inuse_infokey;delete e.vcf.numerical_axis.inuse_termdb2groupAF}}function mt(e,t){if(!e.vcf)return;e.g_vcfrow=e.glider.append("g");e.g_vcfrow_layer2=e.glider.append("g");e.leftaxis_vcfrow=e.gleft.append("g");e.vcfrow_label_numbervariants=t.maketklefthandle(e,15).on("click",(()=>{if(!e.__vcf_data||!e.__vcf_data.vcf||!e.__vcf_data.vcf.rglst)return;const t=[];for(const n of e.__vcf_data.vcf.rglst){if(!n.variants)continue;for(const e of n.variants){t.push(e.chr+":"+(e.pos+1)+" "+e.ref+">"+e.altstr)}}e.tktip.showunder(e.vcfrow_label_numbervariants.node());e.tktip.clear().d.append("textarea").attr("cols",25).attr("rows",20).text(t.join("\n"))}));try{Fe(e)}catch(e){throw"numerical axis error: "+e}}function gt(e){if(!e.ld)return;e.g_ldrow=e.glider.append("g");e.gleft_ldrow=e.gleft.append("g");if(e.g_vcfrow_layer2){e.ld.overlay.vcfcircle=e.g_vcfrow_layer2.append("circle").attr("fill","none").attr("stroke","black").attr("stroke-width",2).attr("stroke-opacity",0)}}function ht(e){if(!e.mds)return;e.name=e.mds.track.name;if(e.mds.track.vcf){if(!e.vcf)e.vcf={};const t=JSON.parse(JSON.stringify(e.mds.track.vcf));for(const n in t){if(e.vcf[n]==undefined)e.vcf[n]=t[n]}if(t.numerical_axis){for(const n in t.numerical_axis){if(e.vcf.numerical_axis[n]==undefined)e.vcf.numerical_axis[n]=t.numerical_axis[n]}if(t.numerical_axis.AFtest){for(const n in t.numerical_axis.AFtest){if(e.vcf.numerical_axis.AFtest[n]==undefined)e.vcf.numerical_axis.AFtest[n]=t.numerical_axis.AFtest[n]}}}}if(e.mds.track.ld){if(!e.ld)e.ld={};if(!e.ld.connheight)e.ld.connheight=50;const t=JSON.parse(JSON.stringify(e.mds.track.ld));for(const n in t){if(e.ld[n]==undefined)e.ld[n]=t[n]}e.ld.overlay.r2_to_color=L(e.ld.overlay.color_0,e.ld.overlay.color_1)}if(e.mds.track.info_fields){e.info_fields=JSON.parse(JSON.stringify(e.mds.track.info_fields))}if(e.mds.track.populations){e.populations=JSON.parse(JSON.stringify(e.mds.track.populations))}if(e.mds.track.sample_termfilter)e.sample_termfilter=JSON.parse(JSON.stringify(e.mds.track.sample_termfilter))}function yt(e){if(!e.info_fields)return;if(!Array.isArray(e.info_fields))throw"info_fields should be an array";for(const t of e.info_fields){if(!t.key)throw"key missing from one of info_fields";if(!t.label)t.label=t.key;if(!t.isfilter)continue;if(t.iscategorical){if(!t.values)throw".values[] missing from a categorical info field "+t.label;if(!Array.isArray(t.values))throw".values[] not an array from info field "+t.label;for(const e of t.values){if(!e.key)throw".key missing from a value of info field "+t.label;if(!e.label)e.label=e.key}}else if(t.isinteger||t.isfloat){if(!t.range)throw".range{} missing from a numeric info field "+t.label}else if(t.isflag);else{throw"info field "+t.label+" neither numerical or categorical"}}}async function xt(e,t){t.tkcloakon(e);t.block_setheight();const n=bt(e,t);try{if(e.uninitialized){await ft(e,t);delete e.uninitialized}e.tklabel.each((function(){e.leftLabelMaxwidth=this.getBBox().width}));const a=await _t(e,t);e.clear();const s=B(a,e,t);const o=at(a,e,t);if(e.g_ldrow){e.g_ldrow.transition().attr("transform","translate(0,"+s+")");e.gleft_ldrow.transition().attr("transform","translate(0,"+s+")")}e.height_main=s+o;n(a)}catch(t){if(e.clear)e.clear();e.height_main=50;n({error:t.message||t});if(t.stack)console.log(t.stack);return}}async function _t(e,t){const n=vt(e,t);return d("mds2",n).then((e=>{if(e.error)throw e.error;return e}))}function bt(e,t){return n=>{lt(n,e);t.tkcloakoff(e,{error:n.error});t.block_setheight();t.setllabel()}}function vt(e,t){const n={genome:t.genome.name};kt(n,e);if(e.legend.mclass.hiddenvalues.size){n.hidden_mclass=[...e.legend.mclass.hiddenvalues]}if(e.mds){n.dslabel=e.mds.label}else{if(e.vcf){n.vcf={file:e.vcf.file,url:e.vcf.url,indexURL:e.vcf.indexURL}}}if(e.vcf){n.trigger_vcfbyrange=1;Ne(e,n)}if(e.ld){const t=e.ld.tracks.filter((e=>e.shown));if(t.length){n.trigger_ld={tracks:t,connheight:e.ld.connheight}}}n.rglst=t.tkarg_rglst(e);if(t.usegm){const e=n.rglst[0];e.usegm_isoform=t.usegm.isoform;for(let a=1;a<n.rglst.length;a++){const s=n.rglst[a];e.width+=s.width+t.regionspace;e.start=Math.min(e.start,s.start);e.stop=Math.max(e.stop,s.stop)}n.rglst=[e]}let a=0;for(const e of n.rglst){e.xoff=0;a+=e.width+t.regionspace}if(t.subpanels.length==e.subpanels.length){for(const e of t.subpanels){n.rglst.push({chr:e.chr,start:e.start,stop:e.stop,width:e.width,exonsf:e.exonsf,xoff:a});a+=e.width+e.leftpad}}return n}function kt(e,t){if(t.info_fields){e.info_fields=t.info_fields.reduce(((e,t)=>{if(t.isfilter){if(t.iscategorical){const n={key:t.key,iscategorical:true,unannotated_ishidden:t.unannotated_ishidden,hiddenvalues:{}};for(const e of t.values){if(e.ishidden)n.hiddenvalues[e.key]=1}e.push(n)}else if(t.isinteger||t.isfloat){if(t.isactivefilter){e.push({key:t.key,isnumerical:true,missing_value:t.missing_value,range:t.range})}}else if(t.isflag){e.push({key:t.key,isflag:true,remove_no:t.remove_no,remove_yes:t.remove_yes})}else{throw"unknown type of info filter"}}return e}),[])}}export{vt as addparameter_rangequery,xt as loadTk};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{U as t,aH as e,ah as n,z as a,O as s}from"./app-
|
|
1
|
+
import{U as t,aH as e,ah as n,z as a,O as s}from"./app-b369b169.js";const r=20;const o=2;const l=20;const i=3;const f=16;function c(e){for(const t of e.tklst){if(t.config_handle)t.config_handle.text("");if(t.label_close)t.label_close.text("")}const n=e.totalheight();let a;const[s,o]=d(e,n+r);const[l,i]=g(e,n+r);a=n+r+Math.max(s,l)+r;e.svg.attr("height",a);const f=[];if(e.usegm&&e.usegm.name)f.push(e.usegm.name);if(e.usegm&&e.usegm.isoform)f.push(e.usegm.isoform);t(e.svg.node(),f.length?f.join("_"):"screenshot");for(const t of e.tklst){if(t.config_handle)t.config_handle.text("CONFIG");if(t.label_close)t.label_close.text("Close")}if(o)o.remove();if(i)i.remove();e.svg.attr("height",n)}function d(t,a){const s=t.usegm;if(!s){return[0,null]}const r=e(s);if(r.length==0){return[0,null]}const c=[];for(const t of r){if(!s.domain_hidden[t.name+t.description]){c.push(t)}}if(c.length==0)return[0,null];const d=t.svg.append("g").attr("transform","translate("+(o+t.leftheadw)+","+a+")");let g=0;for(const t of c){const e=d.append("g").attr("transform","translate(0,"+g+")");e.append("rect").attr("width",15).attr("height",l).attr("stroke",t.stroke).attr("fill",t.fill).attr("shape-rendering","crispEdges");let a;e.append("text").attr("x",20).attr("y",l/2).attr("dominant-baseline","central").attr("font-size",f).attr("font-family",n).attr("fill","black").text(t.name).each((function(){a=this.getBBox().width}));if(t.description){e.append("text").attr("x",30+a).attr("y",l/2).attr("dominant-baseline","central").attr("font-size",12).attr("font-family",n).attr("fill","#858585").text(t.description.length>80?t.description.substr(0,70)+" ...":t.description)}g+=l+i}return[g,d]}function g(t,e){if(!t.legend){return[0,null]}let r=0;const c=m(t);r+=c.length;if(t.legend.morigins&&t.legend.morigins.size>0){for(const[e,n]of t.legend.morigins){if(!n.hidden){r++}}}if(r==0)return[0,null];let d=0;const g=t.svg.append("g").attr("transform","translate("+(o+t.leftheadw+t.lpad+t.width-200)+","+e+")");for(const[t,e]of c){const s=g.append("g").attr("transform","translate(0,"+d+")");s.append("circle").attr("cx",l/2).attr("cy",l/2).attr("r",l/2).attr("fill",a[t].color);s.append("text").text(a[t].label+", n="+e).attr("x",l+10).attr("y",l/2).attr("dominant-baseline","central").attr("font-size",f).attr("font-family",n).attr("fill",a[t].color);d+=l+i}if(t.legend.morigins&&t.legend.morigins.size>0){for(const[e,a]of t.legend.morigins){if(a.hidden){continue}const t=g.append("g").attr("transform","translate(0,"+d+")");const r=t.append("g").attr("transform","translate(5,0)");r.html(s[e].legend);t.append("text").text(s[e].label+", n="+a.count).attr("x",l+10).attr("y",l/2).attr("dominant-baseline","central").attr("font-size",f).attr("font-family",n).attr("fill","black");d+=l+i}}return[d,g]}function m(t){const e=[];if(t.legend.mclasses&&t.legend.mclasses.size>0){for(const[n,a]of t.legend.mclasses){if(!a.hidden)e.push([n,a.count])}}const n=t.tklst.find((t=>t.type=="mds3"));if(n&&n.legend?.mclass?.currentData){for(const t of n.legend.mclass.currentData){if(!n.legend.mclass.hiddenvalues.has(t[0])){e.push(t)}}}return e}export{c as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a7 as t,I as e,ag as a,ah as r,k as i}from"./app-
|
|
1
|
+
import{a7 as t,I as e,ag as a,ah as r,k as i}from"./app-b369b169.js";import{m as o}from"./radiobutton-09bff425.js";import{b as n,d as l}from"./axis-747c801e.js";function s(t,e){t.img=t.glider.append("image");if(!t.dotsize){t.dotsize=1}if(!t.coveragemax){t.coveragemax=100}if(!t.vafheight){t.vafheight=50}if(!t.coverageheight){t.coverageheight=30}if(!t.rowspace){t.rowspace=5}t.tklabel.attr("y",20);t.Tvafaxis=t.gleft.append("g");t.Nvafaxis=t.gleft.append("g");t.aiaxis=t.gleft.append("g");t.label_tumor=t.gleft.append("text").attr("font-family",r).attr("font-size",e.labelfontsize).attr("dominant-baseline","central").attr("text-anchor","end").attr("x",e.tkleftlabel_xshift).attr("fill-opacity",.6).text("Tumor");t.label_germline=t.gleft.append("text").attr("font-family",r).attr("font-size",e.labelfontsize).attr("dominant-baseline","central").attr("text-anchor","end").attr("x",e.tkleftlabel_xshift).attr("fill-opacity",.6).text("Germline");t.label_ai=t.gleft.append("text").attr("font-family",r).attr("font-size",e.labelfontsize).attr("dominant-baseline","central").attr("text-anchor","end").attr("x",e.tkleftlabel_xshift).attr("fill-opacity",.6).text("abs(T-G)");t.Tcovaxis=t.gright.append("g");t.Ncovaxis=t.gright.append("g");t.label_tumorcoverage=t.gright.append("text").attr("font-family",r).attr("font-size",e.labelfontsize).attr("dominant-baseline","central").attr("x",10).attr("fill-opacity",.6).text("T coverage");t.label_germlinecoverage=t.gright.append("text").attr("font-family",r).attr("font-size",e.labelfontsize).attr("dominant-baseline","central").attr("x",10).attr("fill-opacity",.6).text("G coverage");t.config_handle=e.maketkconfighandle(t).on("click",(a=>{t.tkconfigtip.clear().showunder(t.config_handle.node());p(t,e)}))}function c(t,e,a,r){const i=["rglst="+JSON.stringify(r||e.tkarg_rglst()),"regionspace="+e.regionspace,"width="+(a||e.width),"coveragemax="+t.coveragemax,"gtotalcutoff="+t.gtotalcutoff,"gmafrestrict="+t.gmafrestrict,"vafheight="+t.vafheight,"coverageheight="+t.coverageheight,"rowspace="+t.rowspace,"dotsize="+t.dotsize,"devicePixelRatio="+(window.devicePixelRatio>1?window.devicePixelRatio:1)];if(t.file){i.push("file="+t.file)}else{i.push("url="+t.url);if(t.indexURL)i.push("indexURL="+t.indexURL)}return i.join("&")}function g(r,i){if(r.uninitialized){s(r,i);delete r.uninitialized}i.tkcloakon(r);t("tkaicheck?"+c(r,i)).then((t=>{if(t.error)throw{message:t.error};const o=r.vafheight*3+r.rowspace*4+r.coverageheight*2;r.height_main=r.toppad+o+r.bottompad;r.img.attr("width",i.width).attr("height",o).attr("xlink:href",t.src);if(t.coveragemax){r.coveragemax=t.coveragemax}if(!t.nodata){const t=e().domain([0,1]).range([r.vafheight,0]);let i=0;a({axis:r.Tvafaxis.attr("transform","translate(0,"+i+")").call(n().scale(t).tickValues([0,1])),color:"black",showline:true});r.label_tumor.attr("y",i+r.vafheight*3/4);i=r.vafheight+r.rowspace+r.coverageheight+r.rowspace;a({axis:r.Nvafaxis.attr("transform","translate(0,"+i+")").call(n().scale(t).tickValues([0,1])),color:"black",showline:true});r.label_germline.attr("y",i+r.vafheight/2);i=2*(r.vafheight+r.rowspace+r.coverageheight+r.rowspace);a({axis:r.aiaxis.attr("transform","translate(0,"+i+")").call(n().scale(t).tickValues([0,1])),color:"black",showline:true});r.label_ai.attr("y",i+r.vafheight/2);const o=e().domain([0,r.coveragemax]).range([r.coverageheight,0]);i=r.vafheight+r.rowspace;a({axis:r.Tcovaxis.attr("transform","translate(0,"+i+")").call(l().scale(o).tickValues([0,r.coveragemax])),color:"black",showline:true});r.label_tumorcoverage.attr("y",i+r.coverageheight/2);i=2*(r.vafheight+r.rowspace)+r.coverageheight+r.rowspace;a({axis:r.Ncovaxis.attr("transform","translate(0,"+i+")").call(l().scale(o).tickValues([0,r.coveragemax])),color:"black",showline:true});r.label_germlinecoverage.attr("y",i+r.coverageheight/2)}return null})).catch((t=>{r.img.attr("width",1).attr("height",1);if(t.stack){console.log(t.stack)}return t.message})).then((t=>{i.tkcloakoff(r,{error:t});i.block_setheight();for(const t of r.subpanels){f(r,i,t)}}))}function f(e,a,r){a.tkcloakon_subpanel(r);const i=c(e,a,r.width,[{chr:r.chr,start:r.start,stop:r.stop,width:r.width}]);t("tkaicheck?"+i).then((t=>{if(t.error)throw{message:t.error};r.img.attr("width",r.width).attr("height",e.vafheight*3+e.rowspace*4+e.coverageheight*2).attr("xlink:href",t.src);return null})).catch((t=>{r.img.attr("width",1).attr("height",1);if(t.stack){console.log(t.stack)}return t.message})).then((t=>{a.tkcloakoff_subpanel(r,{error:t})}))}function p(t,e){t.tkconfigtip.clear();{const a=t.tkconfigtip.d.append("div").style("margin-bottom","15px");a.append("span").html("Coverage max: ");a.append("input").attr("type","number").style("width","60px").property("value",t.coveragemax).on("keyup",(a=>{if(!i(a))return;const r=a.target.value;if(r=="")return;const o=Number.parseInt(r);if(Number.isNaN(o)||o<=1){alert("coverage max must be positive integer");return}t.coveragemax=o;g(t,e)}))}{const a=t.tkconfigtip.d.append("div").style("margin-bottom","15px");a.append("span").html("Marker dot size: ");o({holder:a,options:[{label:"1 pixel",value:1,checked:t.dotsize==1},{label:"2 pixels",value:2,checked:t.dotsize==2},{label:"3 pixels",value:3,checked:t.dotsize==3}],callback:a=>{t.dotsize=a;g(t,e)},styles:{display:"inline-block","margin-right":"5px"}})}{const a=t.tkconfigtip.d.append("div").style("margin-bottom","15px");a.append("span").html("Filter markers by minimum total germline coverage: ");a.append("input").attr("type","number").style("width","60px").property("value",t.gtotalcutoff||0).on("keyup",(a=>{if(!i(a))return;const r=a.target.value;if(r=="")return;const o=Number.parseInt(r);if(Number.isNaN(o)||o<0){alert("coverage max must be non-negative integer");return}if(o==t.gtotalcutoff)return;t.gtotalcutoff=o;g(t,e)}));a.append("div").style("font-size",".7em").style("opacity",.5).text("Set to 0 to use all markers")}{const a=t.tkconfigtip.d.append("div").style("margin-bottom","15px");a.append("span").html("Filter markers by narrowing range of germline B-allele fraction: ");a.append("input").attr("type","number").style("width","60px").property("value",t.gmafrestrict||0).on("keyup",(a=>{if(!i(a))return;const r=a.target.value;if(r=="")return;const o=Number.parseFloat(r);if(Number.isNaN(o)||o<0||o>.5){alert("Must enter a value between 0 and 0.5");return}if(t.gmafrestrict==o)return;t.gmafrestrict=o;g(t,e);p(t,e)}));a.append("div").style("font-size",".7em").style("opacity",.5).text((t.gmafrestrict?"Keeping markers with BAF range "+t.gmafrestrict+" to "+(1-t.gmafrestrict)+". ":"")+"Set to 0 to use all markers")}}export{g as loadTk,f as loadTksubpanel};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{q as a,ag as e,I as t,ae as r,a9 as n,k as o}from"./app-
|
|
1
|
+
import{q as a,ag as e,I as t,ae as r,a9 as n,k as o}from"./app-b369b169.js";import{r as i,c as s}from"./block.mds.svcnv.share-886d9479.js";import{m as c,a as l,s as p,i as g}from"./block.mds.expressionstat-f2d31c86.js";import{b as f}from"./axis-747c801e.js";async function d(a,e){e.tkcloakon(a);e.block_setheight();if(a.uninitialized){u(a,e)}const t=[];let r=0;for(let a=e.startidx;a<=e.stopidx;a++){const n=e.rglst[a];t.push({chr:n.chr,start:n.start,stop:n.stop,width:n.width,x:r});r+=n.width+e.regionspace}if(e.subpanels.length==a.subpanels.length){for(const[a,n]of e.subpanels.entries()){r+=n.leftpad;t.push({chr:n.chr,start:n.start,stop:n.stop,width:n.width,exonsf:n.exonsf,subpanelidx:a,x:r});r+=n.width}}a.regions=t;try{a.dna.coveragemax=0;if(a.rna.coverageauto)a.rna.coveragemax=0;for(const r of t){await m(r,a,e)}h(a,e);e.tkcloakoff(a,{})}catch(t){if(t.stack)console.log(t.stack);a.height_main=a.height=100;e.tkcloakoff(a,{error:t.message||t})}e.block_setheight()}function m(e,t,r){const n={genome:r.genome.name,samplename:t.samplename,rnabamfile:t.rnabamfile,rnabamurl:t.rnabamurl,rnabamindexURL:t.rnabamindexURL,rnabamtotalreads:t.rnabamtotalreads,rnabamispairedend:t.rnabamispairedend,vcffile:t.vcffile,vcfurl:t.vcfurl,vcfindexURL:t.vcfindexURL,rnabarheight:t.rna.coveragebarh,dnabarheight:t.dna.coveragebarh,barypad:t.barypad,chr:e.chr,start:e.start,stop:e.stop,width:e.width,checkrnabam:t.checkrnabam,refcolor:t.dna.refcolor,altcolor:t.dna.altcolor,devicePixelRatio:window.devicePixelRatio>1?window.devicePixelRatio:1};if(!t.rna.coverageauto){n.rnamax=t.rna.coveragemax}return a("ase",n).then((a=>{if(a.error)throw a.error;e.genes=a.genes;e.fpkmrangelimit=a.fpkmrangelimit;if(a.covplotrangelimit){e.covplotrangelimit=a.covplotrangelimit}else{e.coveragesrc=a.coveragesrc;t.dna.coveragemax=Math.max(t.dna.coveragemax,a.dnamax);if(t.rna.coverageauto){t.rna.coveragemax=Math.max(t.rna.coveragemax,a.rnamax)}}}))}function h(a,e){a.glider.selectAll("*").remove();for(const e of a.subpanels){e.glider.attr("transform","translate(0,0)").selectAll("*").remove()}v(a,e);b(a,e);e.setllabel();a.height_main+=a.toppad+a.bottompad}function v(a,n){const o=30;const i=a.regions.find((a=>a.coveragesrc));if(i){e({axis:a.rna.coverageaxisg.attr("transform","scale(1) translate(0,0)").call(f().scale(t().domain([0,a.rna.coveragemax]).range([a.rna.coveragebarh,0])).tickValues([0,a.rna.coveragemax])),showline:true});a.tklabel.attr("y",a.rna.coveragebarh/2-7);a.rna.coveragelabel.attr("y",a.rna.coveragebarh/2+2).attr("transform","scale(1)");e({axis:a.dna.coverageaxisg.attr("transform","scale(1) translate(0,"+(a.rna.coveragebarh+a.barypad)+")").call(f().scale(t().domain([0,a.dna.coveragemax]).range([0,a.dna.coveragebarh])).tickValues([0,a.dna.coveragemax])),showline:true});a.dna.coveragelabel.attr("transform","scale(1)").attr("y",a.rna.coveragebarh+a.barypad+a.dna.coveragebarh/2).each((function(){a.leftLabelMaxwidth=Math.max(a.leftLabelMaxwidth,this.getBBox().width)}));a.height_main=a.rna.coveragebarh+a.barypad+a.dna.coveragebarh}else{a.dna.coverageaxisg.attr("transform","scale(0)");a.rna.coverageaxisg.attr("transform","scale(0)");a.dna.coveragelabel.attr("transform","scale(0)");a.rna.coveragelabel.attr("transform","scale(0)");a.height_main=o}for(const e of a.regions){if(e.covplotrangelimit){a.glider.append("text").text("Zoom in under "+r(e.covplotrangelimit)+" to show coverage plot").attr("font-size",n.laelfontsize).attr("text-anchor","middle").attr("x",e.x+e.width/2).attr("y",o/2);continue}a.glider.append("image").attr("x",e.x).attr("width",e.width).attr("height",a.rna.coveragebarh+a.barypad+a.dna.coveragebarh).attr("xlink:href",e.coveragesrc)}}function b(a,n){const o=30;const i=a.regions.find((a=>!a.fpkmrangelimit));let s=0;for(const e of a.regions){if(e.fpkmrangelimit)continue;if(e.genes){for(const t of e.genes){if(Number.isFinite(t.fpkm))s=Math.max(s,t.fpkm);c(t,a.gecfg)}}}const p=a.height_main+a.yspace1;if(i&&s>0){e({axis:a.fpkm.axisg.attr("transform","scale(1) translate(0,"+p+")").call(f().scale(t().domain([0,s]).range([a.fpkm.barh,0])).tickValues([0,s])),showline:true});a.fpkm.label.attr("y",p+a.fpkm.barh/2).attr("transform","scale(1)");a.height_main+=a.yspace1+a.fpkm.barh}else{a.fpkm.axisg.attr("transform","scale(0)");a.fpkm.label.attr("transform","scale(0)");a.height_main+=o}for(const e of a.regions){if(e.fpkmrangelimit){a.glider.append("text").text("Zoom in under "+r(e.fpkmrangelimit)+" to show gene "+a.gecfg.datatype+" values").attr("font-size",n.laelfontsize).attr("text-anchor","middle").attr("x",e.x+e.width/2).attr("y",p+o/2);continue}if(!e.genes)continue;if(s==0){continue}const t=e.width/(e.stop-e.start);for(const r of e.genes){if(!Number.isFinite(r.fpkm))continue;const n=l(r,a.gecfg);const o=a.fpkm.barh*r.fpkm/s;let i,c;if(e.reverse){i=e.x+t*(e.stop-Math.min(e.stop,r.stop));c=e.x+t*(e.stop-Math.max(e.start,r.start))}else{i=e.x+t*(Math.max(e.start,r.start)-e.start);c=e.x+t*(Math.min(e.stop,r.stop)-e.start)}const g=a.glider.append("line").attr("x1",i).attr("x2",c).attr("y1",p+a.fpkm.barh-o).attr("y2",p+a.fpkm.barh-o).attr("stroke",n).attr("stroke-width",2).attr("stroke-opacity",.4);const f=a.glider.append("rect").attr("x",i).attr("y",p+a.fpkm.barh-o).attr("width",c-i).attr("height",o).attr("fill",n).attr("fill-opacity",.2);a.glider.append("rect").attr("x",i).attr("y",p+a.fpkm.barh-o-2).attr("width",c-i).attr("height",o+2).attr("fill","white").attr("fill-opacity",0).on("mouseover",(e=>{g.attr("stroke-opacity",.5);f.attr("fill-opacity",.3);x(r,a)})).on("mouseout",(e=>{g.attr("stroke-opacity",.4);f.attr("fill-opacity",.2);a.tktip.hide()}))}}}function x(a,e){e.tktip.clear().show(event.clientX,event.clientY);const t=[{k:a.gene+" "+e.gecfg.datatype,v:a.fpkm}];const r=n(e.tktip.d,t);p(a,e.gecfg,r)}function u(a,e){delete a.uninitialized;if(!a.barypad)a.barypad=0;if(!a.rna)a.rna={};a.rna.coverageaxisg=a.gleft.append("g");a.rna.coveragelabel=e.maketklefthandle(a).attr("class",null).attr("dominant-baseline","hanging").text("RNA coverage");a.rna.coverageauto=true;if(!a.rna.coveragebarh)a.rna.coveragebarh=50;if(!a.dna)a.dna={};a.dna.coverageaxisg=a.gleft.append("g");a.dna.coveragelabel=e.maketklefthandle(a).attr("class",null).text("DNA coverage");a.dna.coveragemax=0;if(!a.dna.coveragebarh)a.dna.coveragebarh=50;if(!a.dna.refcolor)a.dna.refcolor="#188FF5";if(!a.dna.altcolor)a.dna.altcolor="#F51818";if(!a.yspace1)a.yspace1=15;a.gecfg={datatype:"FPKM"};g(a.gecfg);if(!a.fpkm)a.fpkm={};a.fpkm.axisg=a.gleft.append("g");a.fpkm.label=e.maketklefthandle(a).attr("class",null).text("Gene "+a.gecfg.datatype);if(!a.fpkm.barh)a.fpkm.barh=50;a.config_handle=e.maketkconfighandle(a).attr("y",10+e.labelfontsize).on("click",(t=>{k(a,e)}));if(!a.checkrnabam)a.checkrnabam={};i(a.checkrnabam)}function k(a,e){a.tkconfigtip.clear().showunder(a.config_handle.node());const t=a.tkconfigtip.d.append("div");t.append("div").text("RNA-seq coverage is shown at all covered bases.").style("font-size",".8em").style("opacity",.5);{const r=t.append("div").style("margin","5px 0px");r.append("span").html("Bar height ");r.append("input").attr("type","numeric").property("value",a.rna.coveragebarh).style("width","80px").on("keyup",(t=>{if(!o(t))return;const r=Number.parseInt(t.target.value);if(r<=20)return;if(r==a.rna.coveragebarh)return;a.rna.coveragebarh=r;d(a,e)}))}{const r=t.append("div").style("margin","5px 0px");const n=Math.random();r.append("input").attr("type","checkbox").attr("id",n).property("checked",a.rna.coverageauto).on("change",(t=>{a.rna.coverageauto=t.target.checked;i.style("display",a.rna.coverageauto?"none":"inline");d(a,e)}));r.append("label").html(" automatic scale").attr("for",n);const i=r.append("div").style("display",a.rna.coverageauto?"none":"inline").style("margin-left","20px");i.append("span").html("Fixed max ");i.append("input").attr("value","numeric").property("value",a.rna.coveragemax).style("width","50px").on("keyup",(t=>{if(!o(t))return;const r=Number.parseInt(t.target.value);if(r<=0)return;if(r==a.rna.coveragemax)return;a.rna.coveragemax=r;d(a,e)}))}t.append("div").text("SNPs are only shown for those heterozygous in DNA.").style("font-size",".8em").style("opacity",.5).style("margin-top","25px");{const r=t.append("div").style("margin","5px 0px");r.append("span").html("Bar height ");r.append("input").attr("type","numeric").property("value",a.dna.coveragebarh).style("width","80px").on("keyup",(t=>{if(!o(t))return;const r=Number.parseInt(t.target.value);if(r<=20)return;if(r==a.dna.coveragebarh)return;a.dna.coveragebarh=r;d(a,e)}))}{const r=t.append("div").style("margin","5px 0px 25px 0px");r.append("span").html("Allele color Ref: ");r.append("input").attr("type","color").property("value",a.dna.refcolor).on("change",(t=>{a.dna.refcolor=t.target.value;d(a,e)}));r.append("span").html(" Alt: ");r.append("input").attr("type","color").property("value",a.dna.altcolor).on("change",(t=>{a.dna.altcolor=t.target.value;d(a,e)}))}s(a,e,d)}export{d as loadTk};
|