@sjcrh/proteinpaint-client 2.77.0 → 2.78.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-acb8cfdd.js → 2dmaf-7dddba15.js} +1 -1
- package/dist/{AppHeader-315dbd3a.js → AppHeader-67cea623.js} +1 -1
- package/dist/{ColorScale-4b4ea8a2.js → ColorScale-7a36cc17.js} +1 -1
- package/dist/{DEanalysis-28ddd620.js → DEanalysis-417e1f88.js} +1 -1
- package/dist/{Disco-3c427131.js → Disco-30abd4cb.js} +1 -1
- package/dist/{Disco.UI-b071cf7a.js → Disco.UI-ea58ee03.js} +1 -1
- package/dist/{DragControls-7961799c.js → DragControls-a5072cfd.js} +1 -1
- package/dist/{DziViewer-aa5b5706.js → DziViewer-af3c5a76.js} +1 -1
- package/dist/FilterRxComp-cb149666.js +1 -0
- package/dist/FilterStateless-bdd1416d.js +1 -0
- package/dist/{HicApp-674a148d.js → HicApp-fe8682af.js} +1 -1
- package/dist/{OrbitControls-58ca2292.js → OrbitControls-0d20d46b.js} +1 -1
- package/dist/{WSIViewer-afe97e2e.js → WSIViewer-64e55fb8.js} +1 -1
- package/dist/{adSandbox-791d704e.js → adSandbox-5753745b.js} +1 -1
- package/dist/app-488d9fd6.js +1 -0
- package/dist/{app-bd9f016b.js → app-5aa892cb.js} +1 -1
- package/dist/app-d9433820.js +1 -0
- package/dist/app.js +1 -1
- package/dist/bam-4e0df8b6.js +1 -0
- package/dist/{barchart-e3dcfc5f.js → barchart-687ae584.js} +1 -1
- package/dist/{barchart.events-cecb7bf5.js → barchart.events-9e2c1acf.js} +1 -1
- package/dist/{bars.renderer-58e38632.js → bars.renderer-95f7250f.js} +1 -1
- package/dist/{block-944afb9f.js → block-2f22e7fd.js} +1 -1
- package/dist/block.lazyload-143ae987.js +1 -0
- package/dist/{block.legend-3dbc41a8.js → block.legend-aa831169.js} +1 -1
- package/dist/{block.mds-b3967ce5.js → block.mds-64d95cf9.js} +1 -1
- package/dist/{block.mds.cnv-6de3115e.js → block.mds.cnv-2520897d.js} +1 -1
- package/dist/{block.mds.expressionrank-553613e8.js → block.mds.expressionrank-582ed7bc.js} +1 -1
- package/dist/{block.mds.expressionstat-2c396bb9.js → block.mds.expressionstat-483c9bc9.js} +1 -1
- package/dist/{block.mds.geneboxplot-552fe571.js → block.mds.geneboxplot-c1276cba.js} +1 -1
- package/dist/{block.mds.junction-1e25c13d.js → block.mds.junction-4a132819.js} +1 -1
- package/dist/{block.mds.svcnv-462d762d.js → block.mds.svcnv-a532eca7.js} +1 -1
- package/dist/{block.mds.svcnv.share-766e4b22.js → block.mds.svcnv.share-6575b7cf.js} +1 -1
- package/dist/{block.mds2-6e04432d.js → block.mds2-9ce41a23.js} +1 -1
- package/dist/{block.svg-40b47da8.js → block.svg-adb13c76.js} +1 -1
- package/dist/{block.tk.aicheck-cc42cbaf.js → block.tk.aicheck-ef6b634b.js} +1 -1
- package/dist/{block.tk.ase-da848c5f.js → block.tk.ase-1b119031.js} +1 -1
- package/dist/{block.tk.bam-8053c97e.js → block.tk.bam-2aa824aa.js} +1 -1
- package/dist/{block.tk.bedgraphdot-79cb0faf.js → block.tk.bedgraphdot-983fe4b3.js} +1 -1
- package/dist/{block.tk.bigwig.ui-a8decec7.js → block.tk.bigwig.ui-fb6401ee.js} +1 -1
- package/dist/{block.tk.hicstraw-3d1e9d41.js → block.tk.hicstraw-c6732591.js} +1 -1
- package/dist/{block.tk.junction-81eae755.js → block.tk.junction-429b654c.js} +1 -1
- package/dist/{block.tk.junction.textmatrixui-4c45b69a.js → block.tk.junction.textmatrixui-15bd752c.js} +1 -1
- package/dist/{block.tk.ld-997fca31.js → block.tk.ld-fba14536.js} +1 -1
- package/dist/{block.tk.menu-d3e7ccbb.js → block.tk.menu-1299ae5e.js} +1 -1
- package/dist/{block.tk.pgv-ae1d1f59.js → block.tk.pgv-c946527f.js} +1 -1
- package/dist/{boxplot-fed0a86b.js → boxplot-dbf30a19.js} +1 -1
- package/dist/{brainImaging-b455fd0c.js → brainImaging-b2865ba3.js} +1 -1
- package/dist/{brush-06989a5e.js → brush-1a123226.js} +1 -1
- package/dist/{categorical-82722704.js → categorical-f67752ed.js} +1 -1
- package/dist/{condition-f68cc8d1.js → condition-dcc70001.js} +1 -1
- package/dist/{controls-1d99916a.js → controls-f4648f7f.js} +1 -1
- package/dist/controls.btns-26bb6ef1.js +1 -0
- package/dist/{controls.config-00ce9f0b.js → controls.config-9870bdea.js} +1 -1
- package/dist/{cuminc-879690b0.js → cuminc-2273cdd3.js} +1 -1
- package/dist/{customdata.inputui-c563c695.js → customdata.inputui-fb1b24dc.js} +1 -1
- package/dist/{dataDownload-087ac205.js → dataDownload-b94871d0.js} +1 -1
- package/dist/{databrowser.ui-9f98f6b3.js → databrowser.ui-8ace51c3.js} +1 -1
- package/dist/{density-e0aff1d0.js → density-e023c28f.js} +1 -1
- package/dist/{dictionary-fe0ea1d6.js → dictionary-321e19f9.js} +1 -1
- package/dist/{drag-e11d6644.js → drag-1b98e43e.js} +1 -1
- package/dist/{e2pca-b3250d5c.js → e2pca-00e78fdc.js} +1 -1
- package/dist/{ep-9ca01df0.js → ep-b0d6177c.js} +1 -1
- package/dist/{facet-397afad5.js → facet-26292a3d.js} +1 -1
- package/dist/{filter-b3d3964e.js → filter-67d51c09.js} +1 -1
- package/dist/{fusion.parse-e5312047.js → fusion.parse-7e3a6071.js} +1 -1
- package/dist/{geneExpClustering-4383ff2c.js → geneExpClustering-a2cf1bb9.js} +1 -1
- package/dist/{geneExpression-52678025.js → geneExpression-d1d5a7ca.js} +1 -1
- package/dist/{geneExpression-cfb86b5d.js → geneExpression-dc10af2c.js} +1 -1
- package/dist/{geneExpression-2422f66b.js → geneExpression-e4a5a2cd.js} +1 -1
- package/dist/{geneORA-81220ec0.js → geneORA-248baba7.js} +1 -1
- package/dist/{geneVariant-18f9591a.js → geneVariant-447d6af9.js} +1 -1
- package/dist/{geneVariant-4d22b146.js → geneVariant-7366f3d1.js} +1 -1
- package/dist/{genefusion.ui-e38778dd.js → genefusion.ui-e219424a.js} +1 -1
- package/dist/{genesearch-0587c713.js → genesearch-d8780180.js} +1 -1
- package/dist/{geneset-604d0529.js → geneset-1f67d4c9.js} +1 -1
- package/dist/genomeBrowser-52c639b4.js +1 -0
- package/dist/{genomeBrowser.controls-204f007e.js → genomeBrowser.controls-3a7a1c94.js} +1 -1
- package/dist/{groupsetting-53dfd5e5.js → groupsetting-697a1503.js} +1 -1
- package/dist/{gsea-a1b04406.js → gsea-d3286c53.js} +1 -1
- package/dist/hierCluster-00268175.js +1 -0
- package/dist/{html.legend-6807e9ad.js → html.legend-0abd27ff.js} +1 -1
- package/dist/{imagePlot-f96cdc61.js → imagePlot-f6398b6e.js} +1 -1
- package/dist/{lasso-845446b8.js → lasso-48317f42.js} +1 -1
- package/dist/launch.adhoc-98dc0421.js +1 -0
- package/dist/{leftlabel.sample-3a6037c2.js → leftlabel.sample-591bc38d.js} +1 -1
- package/dist/legacyDataset-354f1a29.js +1 -0
- package/dist/{log-0ea548ec.js → log-1001ca83.js} +1 -1
- package/dist/{lollipop-75e11e9a.js → lollipop-40c4c5cb.js} +1 -1
- package/dist/{maf-e4af10d7.js → maf-10526648.js} +1 -1
- package/dist/{maftimeline-cc2e866c.js → maftimeline-a77349ad.js} +1 -1
- package/dist/matrix-1190d4b3.js +1 -0
- package/dist/matrix-bc0ccf83.js +1 -0
- package/dist/{mavb-b2dd74f6.js → mavb-0d28dd97.js} +1 -1
- package/dist/{mds.fimo-f19840cd.js → mds.fimo-929b9e65.js} +1 -1
- package/dist/{mds.samplescatterplot-254f1de6.js → mds.samplescatterplot-5a4ee6b6.js} +1 -1
- package/dist/{mds.survivalplot-f440db10.js → mds.survivalplot-b04947ee.js} +1 -1
- package/dist/metaboliteIntensity-f407ad0c.js +1 -0
- package/dist/niceNumLabels-621ef5c3.js +1 -0
- package/dist/{nodrag-f6c0801c.js → nodrag-b2866dd8.js} +1 -1
- package/dist/{notify-da3afe99.js → notify-91f0bc5d.js} +1 -1
- package/dist/{numeric-1d0318e8.js → numeric-eb1d29b3.js} +1 -1
- package/dist/{numeric.binary-88bf9e0d.js → numeric.binary-da92d665.js} +1 -1
- package/dist/numeric.continuous-92d1dea8.js +1 -0
- package/dist/numeric.discrete-cd8f09b1.js +1 -0
- package/dist/{numeric.spline-b3968b77.js → numeric.spline-9a9987b6.js} +1 -1
- package/dist/{numeric.toggle-ab8b79be.js → numeric.toggle-8f68f077.js} +1 -1
- package/dist/{oncomatrix-5f4326a8.js → oncomatrix-c29e6de9.js} +1 -1
- package/dist/{parseData-62083461.js → parseData-3bf0ef9f.js} +1 -1
- package/dist/{plot.2dvaf-eccd8ef3.js → plot.2dvaf-9e59c7d1.js} +1 -1
- package/dist/plot.app-fc3608a9.js +1 -0
- package/dist/plot.barplot-122296f7.js +1 -0
- package/dist/{plot.boxplot-0c538ebe.js → plot.boxplot-99c5aac5.js} +1 -1
- package/dist/{plot.brainImaging-ee3a0272.js → plot.brainImaging-a7bb79d6.js} +1 -1
- package/dist/{plot.disco-c9249cbd.js → plot.disco-ccdf741c.js} +1 -1
- package/dist/{plot.dzi-dfd72ddf.js → plot.dzi-aafdf56b.js} +1 -1
- package/dist/plot.ssgq-146075f5.js +1 -0
- package/dist/{plot.vaf2cov-4081decd.js → plot.vaf2cov-41e13dd9.js} +1 -1
- package/dist/{plot.wsi-f6325d95.js → plot.wsi-2327ad63.js} +1 -1
- package/dist/{profileBarchart-f4da0483.js → profileBarchart-46616916.js} +1 -1
- package/dist/profileHome-121aaddb.js +1 -0
- package/dist/profilePlot-a2591a28.js +1 -0
- package/dist/{profilePolar-996784ad.js → profilePolar-006a56b1.js} +1 -1
- package/dist/{profileRadar-79299186.js → profileRadar-3320d932.js} +1 -1
- package/dist/{profileRadarFacility-00e31213.js → profileRadarFacility-7a9cea80.js} +1 -1
- package/dist/{profileSummary-df75e6ff.js → profileSummary-7a747b4e.js} +1 -1
- package/dist/recover-edcdde38.js +1 -0
- package/dist/{regression.inputs-e647b716.js → regression.inputs-d5d44e49.js} +1 -1
- package/dist/{regression.inputs.values.table-b283619d.js → regression.inputs.values.table-daf7bcda.js} +1 -1
- package/dist/regression.results-31a8884d.js +1 -0
- package/dist/{renderPvalueTable-0ed37e90.js → renderPvalueTable-05c29ccf.js} +1 -1
- package/dist/sampleScatter-f6c04130.js +1 -0
- package/dist/{sampleScatter.rendererThree-aa51e3c8.js → sampleScatter.rendererThree-448689c6.js} +2 -2
- package/dist/{sampleView-e4819da2.js → sampleView-0931e571.js} +1 -1
- package/dist/{samplelst-9d9ff205.js → samplelst-27115b0e.js} +1 -1
- package/dist/{samplematrix-3556e5c0.js → samplematrix-2bb2480b.js} +1 -1
- package/dist/{scatter-ff17f653.js → scatter-a8d7c2a0.js} +1 -1
- package/dist/select2Terms-480025f5.js +1 -0
- package/dist/{selectGenomeWithTklst-84f4ff79.js → selectGenomeWithTklst-71344af2.js} +1 -1
- package/dist/{singleCellCellType-a2ce9bfa.js → singleCellCellType-b4061c59.js} +1 -1
- package/dist/{singleCellGeneExpression-a2b45c7a.js → singleCellGeneExpression-547149f2.js} +1 -1
- package/dist/singleCellPlot-2f5ad46a.js +1 -0
- package/dist/{singlecell-a5b8a39b.js → singlecell-1c3bee25.js} +1 -1
- package/dist/{singlecell-63cb06d8.js → singlecell-281a74a6.js} +1 -1
- package/dist/snp-32b8cbd8.js +1 -0
- package/dist/{snp-6e312b4c.js → snp-6bbefa83.js} +1 -1
- package/dist/snplocus-84450f3d.js +1 -0
- package/dist/{spliceevent.a53ss.diagram-aa2df5d7.js → spliceevent.a53ss.diagram-c04f46f1.js} +1 -1
- package/dist/{spliceevent.exonskip.diagram-0b792984.js → spliceevent.exonskip.diagram-a514c12e.js} +1 -1
- package/dist/spliceevent.exonskip.getdefault-a9a45dfc.js +1 -0
- package/dist/{spliceevent.noeventdiagram-e6e29a6e.js → spliceevent.noeventdiagram-b1be922c.js} +1 -1
- package/dist/{spliceevent.phrase-5f65a5f4.js → spliceevent.phrase-57659f7c.js} +1 -1
- package/dist/{stattable-775a5af5.js → stattable-7fa50fd2.js} +1 -1
- package/dist/{style.gdc-519a42d8.js → style.gdc-6b6a2e0c.js} +1 -1
- package/dist/{summary-5866c75f.js → summary-54587ccf.js} +1 -1
- package/dist/{sunburst-f928bfd2.js → sunburst-c24faf27.js} +1 -1
- package/dist/{survival-405514f6.js → survival-21e6637b.js} +1 -1
- package/dist/survival-538cddc2.js +1 -0
- package/dist/{svg.download-cd895635.js → svg.download-0dd56dfd.js} +1 -1
- package/dist/{svg.legend-812ea603.js → svg.legend-21629769.js} +1 -1
- package/dist/{svgraph-037fd7b6.js → svgraph-76e34d5e.js} +1 -1
- package/dist/{svmr-3bd143c3.js → svmr-89b80ea2.js} +1 -1
- package/dist/table-10183501.js +1 -0
- package/dist/{table-e013d8fc.js → table-bb97b5c9.js} +1 -1
- package/dist/{termInfo-e16f90f2.js → termInfo-4d954045.js} +1 -1
- package/dist/termdb.bins-06fd21c1.js +1 -0
- package/dist/termsetting-c12f1c69.js +1 -0
- package/dist/{tk-25ae65c4.js → tk-b96367f7.js} +1 -1
- package/dist/{toggleButtons-2144daab.js → toggleButtons-bb9aca2f.js} +1 -1
- package/dist/{tp.ui-38bc5890.js → tp.ui-f01b186b.js} +1 -1
- package/dist/tvs.density-064e5767.js +1 -0
- package/dist/{tvs.geneVariant-f99fe353.js → tvs.geneVariant-3fac6bed.js} +1 -1
- package/dist/{tvs.numeric-d9108473.js → tvs.numeric-86aacc82.js} +1 -1
- package/dist/{tvs.samplelst-3b8ee998.js → tvs.samplelst-1b00d7b6.js} +1 -1
- package/dist/{uiUtils-57f4b1ba.js → uiUtils-5aad7e13.js} +1 -1
- package/dist/{variantBrowser-56ebc7e1.js → variantBrowser-2c465d02.js} +1 -1
- package/dist/{vcf-e43b533a.js → vcf-55bf2c83.js} +1 -1
- package/dist/{violin-1352dab2.js → violin-edbe9a63.js} +1 -1
- package/dist/violin.interactivity-57637244.js +1 -0
- package/dist/{violin.renderer-4273257d.js → violin.renderer-4cab7448.js} +1 -1
- package/dist/{violinRenderer-7f46e468.js → violinRenderer-24abe5fd.js} +1 -1
- package/dist/{viridis-87a8b605.js → viridis-8a8f3e12.js} +1 -1
- package/dist/{y-cac91178.js → y-6fe1bb7b.js} +1 -1
- package/dist/{zoom-001c2f01.js → zoom-6a36fb2b.js} +1 -1
- package/package.json +6 -5
- package/dist/FilterRxComp-e8de560c.js +0 -1
- package/dist/FilterStateless-75514d37.js +0 -1
- package/dist/app-3d14cbe4.js +0 -1
- package/dist/app-8b5b982a.js +0 -1
- package/dist/bam-fa90bae8.js +0 -1
- package/dist/block.lazyload-4c4e81ff.js +0 -1
- package/dist/controls.btns-237b3154.js +0 -1
- package/dist/genomeBrowser-9f0e8a60.js +0 -1
- package/dist/hierCluster-edaaacc5.js +0 -1
- package/dist/hierCluster.config-a84f69a3.js +0 -1
- package/dist/hierCluster.interactivity-dd917fd3.js +0 -1
- package/dist/hierCluster.renderers-4d33e96a.js +0 -1
- package/dist/launch.adhoc-cb00917b.js +0 -1
- package/dist/legacyDataset-c9bab1e6.js +0 -1
- package/dist/matrix-8b3341c4.js +0 -1
- package/dist/matrix.cells-4dd055e7.js +0 -1
- package/dist/matrix.cluster-7ab94fb5.js +0 -1
- package/dist/matrix.config-b3b56456.js +0 -1
- package/dist/matrix.controls-6e0e9692.js +0 -1
- package/dist/matrix.data-baabaf57.js +0 -1
- package/dist/matrix.dom-cb1f4872.js +0 -1
- package/dist/matrix.groups-9990aade.js +0 -1
- package/dist/matrix.interactivity-3f3cf44d.js +0 -1
- package/dist/matrix.layout-50bc2ea5.js +0 -1
- package/dist/matrix.legend-024e2d50.js +0 -1
- package/dist/matrix.renderers-1aed44e5.js +0 -1
- package/dist/matrix.serieses-dc18fcc2.js +0 -1
- package/dist/matrix.sort-89b98e83.js +0 -1
- package/dist/matrix.sorterUi-0ad98ef0.js +0 -1
- package/dist/metaboliteIntensity-4d905d93.js +0 -1
- package/dist/niceNumLabels-ef07b7ad.js +0 -1
- package/dist/numeric.continuous-d27197cf.js +0 -1
- package/dist/numeric.discrete-b826f33b.js +0 -1
- package/dist/plot.app-4dc30ebc.js +0 -1
- package/dist/plot.barplot-331715f6.js +0 -1
- package/dist/plot.ssgq-b5f68395.js +0 -1
- package/dist/profileHome-11b7d146.js +0 -1
- package/dist/profilePlot-5dd1fe71.js +0 -1
- package/dist/recover-4888c2a9.js +0 -1
- package/dist/regression.results-f61b4a25.js +0 -1
- package/dist/sampleScatter-b96546e9.js +0 -1
- package/dist/select2Terms-eb437c2a.js +0 -1
- package/dist/singleCellPlot-e7e57b0f.js +0 -1
- package/dist/snp-41aa88d1.js +0 -1
- package/dist/snplocus-0653ba82.js +0 -1
- package/dist/spliceevent.exonskip.getdefault-af1943e3.js +0 -1
- package/dist/survival-10dd3d28.js +0 -1
- package/dist/table-be2a9975.js +0 -1
- package/dist/termdb.bins-a60aaa77.js +0 -1
- package/dist/termsetting-7467350f.js +0 -1
- package/dist/tvs.density-060d3006.js +0 -1
- package/dist/violin.interactivity-2502dcd8.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{bC as t,bi as e,z as s,ak as n,ar as o,aP as a,aR as l,aQ as r,bD as i,bE as c,Z as p,ac as d,p as f,ab as m,e as u,M as h,bF as g,bG as y,j as b,ah as x,aa as w,bH as k,bI as v,bJ as j,bK as _}from"./app-3d14cbe4.js";import{b as z}from"./block.lazyload-4c4e81ff.js";function E(t){if(!t.ok)throw new Error(t.status+" "+t.statusText);if(t.status===204||t.status===205)return;return t.json()}function R(t,e){return fetch(t,e).then(E)}function S(p,d,f){let m=true;for(const t in p.dsset){m=false}if(m){d.remove();f.remove();return null}const u=new Map;let h=0;for(const s in p.dsset){const n=p.dsset[s].bulkdata;if(!n)continue;const o=new Map;const a=new Set;const l=new Set;for(const s in n){for(const r of n[s]){const s=r.class;if(s==t){a.add((r.sample?r.sample:"")+"."+(r.sampletype?r.sampletype:"")+JSON.stringify(r.pairlst));continue}if(s==e){l.add((r.sample?r.sample:"")+"."+(r.sampletype?r.sampletype:"")+JSON.stringify(r.pairlst));continue}h++;if(!o.has(s)){o.set(s,0)}o.set(s,o.get(s)+1)}}if(a.size){o.set(t,a.size);h+=a.size}if(l.size){o.set(e,l.size);h+=l.size}u.set(s,o)}d.html(h+' <span style="font-size:.8em">VARIANTS</span>').attr("aria-label","A summary of variant hits from all genes, in descending order.");const g=f.append("table").style("margin-right","20px");const y=g.append("tr");const b=g.append("tr");const x=(t,e,s)=>{e.selectAll("*").remove();for(const n of t){const t=e.append("div").style("margin","10px");t.append("span").attr("class","sja_mcdot").style("background-color",n.color).style("padding","2px 5px").style("margin-right","5px").html(s?n.count:" ");t.append("span").style("color",n.color).text(n.label)}};const w={};for(const[d,f]of u){const m=[];for(const[t,e]of f){const i=s[t];if(i.dt==n||i.dt==o||i.dt==a||i.dt==l||i.dt==r){m.push({key:t,label:i.label,color:i.color,count:e})}}m.sort(((t,e)=>e.count-t.count));for(const n of[i,c,t,e]){if(f.has(n)){const t=s[n];m.push({key:n,label:t.label,color:t.color,count:f.get(n)})}}w[d]=m;const u=b.append("td").attr("valign","top").attr("shownumber",0);x(m,u,true);const h=y.append("td").style("border-bottom","solid 1px #ccc").style("padding","5px 10px").style("color","#858585").style("font-size",".8em").text(p.dsset[d].label);h.append("button").style("margin","5px").text("Hide number").on("click",(t=>{const e=u.attr("shownumber")=="1";x(m,u,e);u.attr("shownumber",e?"0":"1");t.target.innerHTML=e?"Hide number":"Show number"}))}return h?w:null}function U(t){Promise.resolve().then((()=>{if(!t.gene)throw{message:"gene name missing"};if(!t.genome)throw{message:"genome name missing"};if(t.hostURL==undefined)throw{message:"no hostURL"};if(!t.loadgeneexpressionfromofficialds)throw{message:"loadgeneexpressionfromofficialds missing"};if(!t.loadgeneexpressionfromofficialds.dataset)throw{message:"dataset missing from loadgeneexpressionfromofficialds"};const e={genome:t.genome,dsname:t.loadgeneexpressionfromofficialds.dataset,expressiononly:1,genename:t.gene,jwt:t.jwt};return fetch(new Request(t.hostURL+"/dsdata",{method:"POST",body:JSON.stringify(e)})).then((t=>t.json())).then((t=>{if(t.error)throw{message:t.error};if(!t.data)throw{message:"cannot get data"};return t.data}))})).then((e=>{for(let s=0;s<e.length;s++){const n={data:e[s].lst,expp:e[s].config,genename:t.gene,presize:{x:t.x+40*s,y:t.y+40*s,width:350,height:650}};import("./ep-9ca01df0.js").then((t=>{new t.default(n)}))}})).catch((e=>{const s=p({x:t.x||600,y:t.y||80});s.body.append("p").text("Error getting gene expression: "+e)}))}const M=new h;function L(t,e,n,o,a,l){if(!e)return null;const r=l||"";const i={};let c=[];for(const e in t.dsset){for(const s in t.dsset[e].bulkdata){if(!(s in i)){i[s]={mcount:0,isoform:{}};c.push(s)}i[s].mcount+=t.dsset[e].bulkdata[s].length;for(const n of t.dsset[e].bulkdata[s]){const t=n.isoform;if(!t)continue;i[s].isoform[t]=1}}}let h=Math.min(100,c.length);const x=new Set(["Intron","P","S","E",g,y]);const w={};const k={};let v=true;n.html(c.length+' <span style="font-size:.8em">GENES</span>').attr("aria-label","A summary table of gene by variant type, order by number of hits in descending order.");const j=o.append("div");const _=t=>{b(j,t)};const z=o.append("div").style("margin-bottom","8px");z.append("button").style("margin-right","10px").text("Configure").on("click",(()=>{if(R.style("display")=="block"){d(R)}else{f(R)}}));z.append("button").style("margin-right","10px").text("Download").on("click",(()=>{const t=G();m("Gene summary",[{text:t}])}));z.append("input").attr("type","text").attr("size",10).attr("placeholder","Find gene").style("margin","0px 20px 0px 5px").on("keyup",(e=>{let s=e.target.value;if(s==""){M.hide();return}if(t.geneToUpper){s=s.toUpperCase()}if(e.code=="Enter"){M.hide();e.target.value="";if(s in i){W(s)}return}const n=[];for(const t in i){if(t.indexOf(s)==0){n.push({name:t,count:i[t].mcount})}}if(n.length==0){M.hide();return}n.sort(((t,e)=>e.count-t.count));M.clear().showunder(e.target);for(let t=0;t<Math.min(30,n.length);t++){const e=n[t].name;const s=M.d.append("div").attr("class","sja_menuoption_y").on("click",(()=>{W(e)}));s.append("span").text(e);s.append("span").style("font-size",".7em").text(n[t].count)}}));z.append("a").attr("href","https://docs.google.com/document/d/1NrH1H-FUWJtEKLk69V-k8uaYHOr9YO2obM9ZLZslEQ0/edit?usp=sharing").attr("target","_blank").text("Help");const E=o.append("div").style("border","solid 1px #ccc").style("margin","10px 0px");const R=E.append("div").style("display","none").style("background-color","#f1f1f1");const S=140;const L=E.append("div").style("padding-top",S+"px").style("position","relative");const T=L.append("div").style("overflow-y","scroll").style("height","400px").style("resize","vertical");const N=T.append("table").style("border-spacing","1px").style("border-collapse","separate");const C=R.append("div").style("padding","10px").style("border-bottom","dashed 1px #ccc");const O=R.append("div").style("padding","10px").style("border-bottom","dashed 1px #ccc");const B=R.append("div").style("padding","10px").style("border-bottom","dashed 1px #ccc");const H=C.append("span").style("padding-right","10px").text("Showing "+(h<c.length?"top "+h+" genes":"all genes"));C.append("button").text("more").on("click",(()=>{h=Math.min(c.length,h+10);H.text("Showing "+(h<c.length?"top "+h:"all genes"));G()}));C.append("button").text("less").on("click",(()=>{h=Math.max(1,h-10);H.text("Showing "+(h<c.length?"top "+h:"all genes"));G()}));O.append("span").text("Show subset").style("padding-right","10px");const I=O.append("textarea").attr("rows",1).attr("cols",20).attr("placeholder","enter gene names").style("margin-right","10px");O.append("button").text("Submit").on("click",(()=>{const e=I.property("value").trim();if(e=="")return;const s=e.split(/[\s\t\n]+/),n=[],o=[];for(const e of s){if(e=="")continue;const s=t.geneToUpper?e.trim().toUpperCase():e.trim();if(s in i){n.push(s)}else{o.push(e)}}if(o.length){_("No match found for "+o.join(", "))}if(n.length==0)return;c=n;h=n.length;G()}));O.append("button").text("Use default").on("click",(()=>{c=[];for(const t in i){c.push(t)}h=Math.min(100,c.length);G()}));B.append("span").html("Noncoding mutation visibility: ");const J=B.append("select").on("change",(()=>{v=!v;for(const t of F){if(!t.atlst){continue}for(const e of t.atlst){if(!e.ismclass)continue;if(v){e.hide=false;continue}e.hide=x.has(e.key)}}G()}));J.append("option").text("show").attr("value","y");J.append("option").text("hide").attr("value","n");B.append("p").style("font-size",".8em").style("color","#858585").text("Including: silent, splice_region, exon, UTR, and intron.");const P=[];for(const e in t.dsset){const s=t.dsset[e];if(s.hassample){P.push(s)}}if(P.length){const t=R.append("div").style("padding","10px").style("border-bottom","dashed 1px #ccc");t.append("span").html("Gene recurrence (# of samples for each gene): ");for(const e of P){t.append("button").text(P.length==1?"show":e.label).on("click",(t=>{const s=[];for(const t of c){const n={};let o=0;if(t in e.bulkdata){for(const s of e.bulkdata[t]){if(!v&&x.has(s.class))return;if(!(s.sample in n)){n[s.sample]=1;o++}}}s.push({name:t,size:o})}const n=t.target.getBoundingClientRect();A(s,"#76B38C","Number of samples"+(v?"":", excluding noncoding mutations"),n)}))}const e=R.append("div").style("padding","10px").style("border-bottom","dashed 1px #ccc");e.append("span").html("Mutation burden (# mutations for each sample): ");for(const t of P){e.append("button").text(P.length==1?"show":t.label).on("click",(e=>{const s={};for(const e in t.bulkdata){for(const n of t.bulkdata[e]){const t=n.sample;if(t){if(!v&&x.has(n.class))continue;if(!(t in s)){s[t]=0}s[t]++}}}const n=[];for(const t in s){n.push({name:t,size:s[t]})}const o=e.target.getBoundingClientRect();A(n,"#76B38C","Mutation burden"+(v?"":", excluding noncoding mutations"),o)}))}}R.append("div").style("padding","10px").style("border-bottom","dashed 1px #ccc").text("Click on a column header to rank genes.");const F=[{label:"Name",isgenename:true}];let V=true;let q=0;for(const s in t.dsset){q++;const n={name:t.dsset[s].label,atlst:[{label:"# mutation",get:e=>{if(!(e in t.dsset[s].bulkdata))return 0;if(v){return t.dsset[s].bulkdata[e].length}let n=0;for(const o of t.dsset[s].bulkdata[e]){if(!x.has(o.class))n++}return n},rotate:true,descend:true,sort:V}]};V=false;if(t.dsset[s].hassample){n.atlst.push({label:"# sample",get:e=>{if(!(e in t.dsset[s].bulkdata))return 0;const n=new Set;for(const o of t.dsset[s].bulkdata[e]){if(!v&&x.has(o.class))continue;if(!o.sample)continue;n.add(o.sample)}return n.size},rotate:true,descend:true})}for(const o of e[s]){o.ismclass=true;o.get=e=>{if(!(e in t.dsset[s].bulkdata))return 0;let n=0;for(const a of t.dsset[s].bulkdata[e]){if(a.class==o.key)n++}return n};o.rotate=true;o.descend=true;n.atlst.push(o)}F.push(n)}const G=()=>{let e=null,n=null;for(const t of F){if(t.hide)continue;if(t.atlst){for(const s of t.atlst){if(s.hide)continue;if(s.sort){e=s;continue}if(s.secondsort){n=s;continue}}continue}if(t.sort){e=t;continue}if(t.secondsort){n=t}}if(e){c.sort(((t,s)=>{if(e.isgenename){if(t<s){return e.descend?1:-1}return e.descend?-1:1}const o=e.get(t),a=e.get(s);if(typeof o=="string"){if(o<a){return e.descend?1:-1}return e.descend?-1:1}if(o==a){if(n){const e=n.get(t),o=n.get(s);if(e==o){if(t in w){if(!(s in w))return-1}else if(s in w){return 1}}else{return o-e}}else{if(t in w){if(!(s in w))return-1}else if(s in w){return 1}}return t<s?-1:1}return e.descend?a-o:o-a}))}const o={};for(const t in k){const e={};for(let s=0;s<h;s++){const n=c[s];if(n in w&&t in w[n]){for(const s in w[n][t].class){if(!(s in e)){e[s]=0}e[s]+=w[n][t].class[s]}}}const s=[];for(const t in e){s.push({class:t,n:e[t]})}s.sort(((t,e)=>e.n-t.n));o[t]=s}const a="solid 10px white";N.selectAll("*").remove();const l=N.append("tr");l.append("td").style("height","0px").style("padding","0px");l.append("td").style("height","0px").style("padding","0px");for(const t of F){if(!t.atlst)continue;let e=0;for(const s of t.atlst){if(!s.hide)e++}l.append("td").attr("colspan",e).style("text-align","center").style("border-right",a).append("div").style("position","absolute").style("top","1px").style("border-bottom",q>1?"solid 1px black":"").text(q>1?t.name:"")}for(const e in k){const s=l.append("td").attr("colspan",2+o[e].length).style("border-right",a).append("div").style("top","2px").style("position","absolute").style("color",t.genome.datasets[e].color).style("border-bottom","solid 1px "+t.genome.datasets[e].color);s.append("span").text(t.genome.datasets[e].label+(k[e].totalsample?", "+k[e].totalsample+" total samples":""));s.append("div").style("position","absolute").style("right","0px").style("top","-5px").attr("class","sja_clb").html("✕").on("click",(()=>{delete k[e];for(const t in w){delete w[t][e]}G()}))}const r=[];const i=[];const p=N.append("tr");p.append("td").style("height","0px").style("padding","0px");for(const t of F){if(t.hide)continue;let e=[];if(t.atlst){e=t.atlst}else{e=[t]}let s;for(const n of e){if(n.hide)continue;s=p.append("td").attr("class","sja_clbtext").style("font-size",".8em").style("height","0px").style("padding","0px").style("color",n.color?n.color:"black").style("white-space","nowrap");s.append("div").html(n.rotate?n.sort?(n.descend?"◀":"▶")+" "+n.label:n.label:n.label+(n.sort?" "+(n.descend?"▾":"▴"):"")).style("position","absolute").style("top",S-25+"px").style("transform",n.rotate?"translate(-3px,0px) rotate(-90deg)":"").style("width",n.rotate?"25px":"auto").on("click",(()=>{const t=n.sort;for(const t of F){if(t.atlst){for(const e of t.atlst){e.sort=false}}else{t.sort=false}}n.sort=true;if(t){n.descend=!n.descend}G()}));i.push(n.label+(t.name?"."+t.name:""))}s.style("border-right",a)}for(const t in k){p.append("td").style("font-size",".8em").style("height","0px").style("padding","0px").style("white-space","nowrap").append("div").html("# mutation").style("position","absolute").style("top",S-25+"px").style("transform","translate(-3px,0px) rotate(-90deg)").style("width","25px");i.push(t+".#mutation");p.append("td").style("font-size",".8em").style("height","0px").style("padding","0px").style("white-space","nowrap").append("div").html("# sample").style("position","absolute").style("top",S-25+"px").style("transform","translate(-3px,0px) rotate(-90deg)").style("width","25px");i.push(t+".#sample");let e;for(const n of o[t]){e=p.append("td").style("font-size","80%").style("overflow-y","hidden").style("height","0px").style("padding","0px").style("color",s[n.class].color).style("white-space","nowrap");e.append("div").html(s[n.class].label).style("position","absolute").style("top",S-25+"px").style("transform","translate(-3px,0px) rotate(-90deg)").style("width","25px");i.push(t+"."+s[n.class].label)}if(e){e.style("border-right",a)}}r.push(i.join("\t"));for(let t=0;t<h;t++){const e=c[t];const n=[e];const l=N.append("tr");l.append("td").text(t+1).style("font-size",".7em").style("text-align","right");for(const s of F){if(s.hide)continue;if(s.isgenename){l.append("td").text(c[t]).attr("class","sja_menuoption_y").style("color","black").style("display","table-cell").on("click",(()=>{W(c[t])}));continue}let o;for(const t of s.atlst){if(t.hide)continue;o=l.append("td").style("color","black").style("background-color","#f1f1f1");const s=t.get(e);if(typeof s=="number"){if(t.color){if(s>0){o.style("text-align","center").append("span").attr("class","sja_mcdot").style("background-color",t.color).html(s>1?s:" ")}else{o.append("span").attr("class","sja_mcdot").style("margin","0px 4px").html(" ")}}else{o.text(s)}}else{o.text(s)}n.push(s)}o.style("border-right",a)}for(const t in k){let r=0,i=0,c={},p=true,d=false;if(e in w){const s=w[e][t];if(!s)continue;p=false;if(s.pending){d=true;continue}r+=s.sample;i+=s.total;for(const t in s.class){if(!(t in c)){c[t]=0}c[t]+=s.class[t]}}if(p){l.append("td").attr("colspan",2+o[t].length);continue}if(d){l.append("td").attr("colspan",2+o[t].length).text("loading ...");continue}l.append("td").text(i).style("background-color","#f1f1f1");n.push(i);l.append("td").text(r).style("background-color","#f1f1f1");n.push(r);let f;for(const e of o[t]){f=l.append("td").style("text-align","center").style("background-color","#f1f1f1");const t=c[e.class];if(t){f.append("span").attr("class","sja_mcdot").style("background-color",s[e.class].color).html(t>1?t:" ")}else{f.append("span").attr("class","sja_mcdot").style("margin","0px 4px").html(" ")}n.push(t)}f.style("border-right",a)}r.push(n.join("\t"))}return r.join("\n")};G();function W(e){if(!(e in i))return;M.hide();const s=[];for(const e in t.dsset){s.push(e)}let n;for(const o in i[e].isoform){if(!n){n=p({x:100,y:100})}u({hostURL:r,jwt:t.jwt,holder:n.body,genome:t.genome,query:o,nopopup:true,dataset:s})}if(t.loadgeneexpressionfromofficialds){U({gene:e,genome:t.genome.name,loadgeneexpressionfromofficialds:t.loadgeneexpressionfromofficialds,hostURL:t.hostURL,jwt:t.jwt,x:1e3,y:80})}}}async function A(t,e,s,n){const o=await import("./plot.barplot-331715f6.js");return o.default(t,e,s,n)}new h;function T(t,e){const s=t=>{b(e,t)};if(!t.metadata)return s("no metadata");const n=t.metadata;const o=e.append("div").style("display","inline-block").style("border","solid 1px #ccc").style("margin","20px").style("padding","20px");const a=e.append("svg");if(!t.text)return s("text missing");const l=t.text.trim().split("\n");t.samples=[];const r=l[0].split("\t");for(let e=2;e<r.length;e++){t.samples.push(r[e])}if(t.samples.length==0)return s("no column names");t.items=[];for(let e=1;e<l.length;e++){const o=l[e].split("\t");const a=o[0];const r=n[a];if(!r)return s("invalid data type "+a);const i=o[1];const c=[];for(let e=2;e<o.length;e++){const n=o[e].split(";");const a=[];for(const o of n){if(!r[o]){return s("invalid value "+o+" at "+i+" and "+t.samples[e-2])}a.push(r[o].color)}c.push(a)}t.items.push({name:i,type:a,lst:c})}t.geneonrow=true;if(!t.rowh){t.rowh=20}if(!t.colw){t.colw=20}if(!t.rowspace){t.rowspace=2}if(!t.colspace){t.colspace=2}if(!t.rowlabtickspace){t.rowlabtickspace=4}if(!t.collabtickspace){t.collabtickspace=4}if(!t.rowtick){t.rowtick=5}if(!t.coltick){t.coltick=5}N(t,a,o,s)}function N(t,e,s,n){const o=t.metadata;for(const t in o){for(const e in o[t]){const s=o[t][e];if(!s.label)return n(".label missing for metadata "+t+"["+e+"]");if(!s.color)return n(".color missing for metadata "+t+"["+e+"]")}}for(const t in o){const e=s.append("div").style("display","inline-block").style("margin","20px").style("vertical-align","top");e.append("div").text(t).style("margin","5px 3px").style("font-weight","bold");const n=e.append("div").style("margin","3px");for(const e in o[t]){const s=o[t][e];const a=n.append("div").style("margin","3px");a.append("div").style("display","inline-block").style("background-color",s.color).style("width","14px").style("height","14px").style("margin-right","10px");a.append("span").text(s.label)}}const a=t.rowh-3,l=t.colw-3;let r=[];for(const e of t.items){r.push(e.name)}let i=0;for(const s of r){e.append("text").text(s).attr("font-size",t.geneonrow?a:l).attr("font-family",x).each((function(){i=Math.max(i,this.getBBox().width)})).remove()}let c=0;for(const s of t.samples){e.append("text").text(s).attr("font-size",t.geneonrow?l:a).attr("font-family",x).each((function(){c=Math.max(c,this.getBBox().width)})).remove()}const p=t.geneonrow?i:c;const d=t.geneonrow?c:i;const f=t.samples.length*(t.colw+t.colspace)-t.colspace;const m=t.items.length*(t.rowh+t.rowspace)-t.rowspace;e.attr("width",p+t.rowlabtickspace+t.rowtick+f+100).attr("height",d+t.collabtickspace+t.coltick+m);const u=p+t.rowlabtickspace+t.rowtick;const h=d+t.collabtickspace+t.coltick;let g=h;for(const s of t.items){const n=e.append("g").attr("transform","translate("+(u-t.rowlabtickspace-t.rowtick)+","+(g+t.rowh/2)+")");n.append("text").text(s.name).attr("font-size",a).attr("font-family",x).attr("fill","black").attr("text-anchor","end").attr("dominant-baseline","central");n.append("line").attr("stroke","black").attr("shape-rendering","crispEdges").attr("x1",t.rowlabtickspace).attr("x2",t.rowlabtickspace+t.rowtick);g+=t.rowh+t.rowspace}let y=u;for(const s of t.samples){const n=e.append("g").attr("transform","translate("+(y+t.colw/2)+","+d+")");n.append("text").text(s).attr("font-size",l).attr("font-family",x).attr("fill","black").attr("dominant-baseline","central").attr("transform","rotate(-90)");n.append("line").attr("stroke","black").attr("shape-rendering","crispEdges").attr("y1",t.collabtickspace).attr("y2",t.collabtickspace+t.coltick);y+=t.colw+t.colspace}g=h;for(const s of t.items){let n=u;for(let o=0;o<t.samples.length;o++){t.samples[o];const a=e.append("g").attr("transform","translate("+(n+t.colw/2)+","+(g+t.rowh/2)+")");const l=t.rowh/s.lst[o].length;const r=s.lst[o];for(let e=0;e<r.length;e++){const s=r[e];a.append("rect").attr("x",-t.colw/2).attr("y",-t.rowh/2+e*l).attr("width",t.colw).attr("height",l).attr("fill",s).attr("shape-rendering","crispEdges")}n+=t.colw+t.colspace}g+=t.rowh+t.rowspace}e.append("rect").attr("x",u).attr("y",h).attr("width",t.samples.length*(t.colw+t.colspace)-t.colspace).attr("height",t.items.length*(t.rowh+t.rowspace)-t.rowspace).attr("stroke","black").attr("fill","none").attr("shape-rendering","crispEdges")}function C(t,e){for(const s of t.e2pca.list){const n=e.append("div").style("display","inline-block").style("margin","20px").style("vertical-align","top");if(t.e2pca.list.length>1){n.style("border","solid 1px #ededed")}if(s.name){n.append("div").text(s.name).style("background-color","#f1f1f1").style("padding","5px 10px")}const o=n.append("div").style("margin","20px");R(t.hostURL+"/textfile").post(JSON.stringify({file:s.vectorfile,jwt:t.jwt}),(e=>{if(e.error){b(n,"Error getting vector file: "+e.error);return}import("./e2pca-b3250d5c.js").then((a=>{const[l,r]=a.e2pca_plot({holder:n,toprow:o,text:e.text,mdanno:t.patientannotation,obj:s});if(l){b(n,"Error: "+l);return}a.e2pca_genesearchui({holder:o,numdata2plot:r,hostURL:t.hostURL,jwt:t.jwt,obj:s,callback:()=>{O(t,s)}});if(t.patientannotation){s.boxplotdiv=n.append("div");const e=o.append("div").style("display","inline-block").style("margin-left","10px");B(t,s,e)}}))}))}}function O(t,e){if(!t.patientannotation){return}if(!e.expressiondata){return}if(!e.usetermkey){e.usetermkey=t.patientannotation.metadata[0].key}let s=null;for(const n of t.patientannotation.metadata){if(n.key==e.usetermkey){s=n;break}}if(!s){b(e.boxplotdiv,"invalid term key "+e.usetermkey);return}const n=[];for(const t of s.values){n.push({valuekey:t.key,label:t.label,color:t.color,samples:[]})}let o=e.expressiondata[0].value;let a=e.expressiondata[0].value;const l=[];for(const s of e.expressiondata){o=Math.min(o,s.value);a=Math.max(a,s.value);if(!t.patientannotation.annotation[s.sample]){l.push(s);continue}const r=t.patientannotation.annotation[s.sample][e.usetermkey];if(r==undefined){l.push(s);continue}for(const t of n){if(t.valuekey==r){t.samples.push(s);break}}}if(l.length){n.push({label:"unannotated",color:"#858585",samples:l})}e.boxplotdiv.selectAll("*").remove();import("./plot.boxplot-0c538ebe.js").then((t=>{const s=t.default({list:n,holder:e.boxplotdiv,axislabel:e.searchedgene});if(s){b(e.boxplotdiv,"Boxplot: "+s)}}))}function B(t,e,s){const n=new h({border:"",padding:""});const o="#858585";s.append("span").text("Choose metadata").attr("class","sja_clbtext").on("click",(s=>{n.clear();n.showunder(s.target);for(const s of t.patientannotation.metadata){n.d.append("div").attr("class","sja_menuoption").text(s.label).on("click",(()=>{e.usetermkey=s.key;n.hide();e.circles.attr("fill",(e=>{const n=t.patientannotation.annotation[e.sample];if(!n)return o;const a=n[s.key];if(!a)return o;const l=t.patientannotation.mdh[s.key].values[a];if(!l){console.error("invalid value key: "+a+" at term: "+s.key);return o}return l.color}));e.legendholder.selectAll("*").remove();e.legendholder.append("div").style("margin-bottom","5px").text(s.label).style("font-weight","bold");for(const t of s.values){const s=e.legendholder.append("div").style("margin-bottom","3px");s.append("span").attr("class","sja_mcdot").style("background-color",t.color).style("margin-right","5px").html(" ");s.append("span").text(t.label)}if(e.expressiondata){O(t,e)}}))}}))}async function H(t,e,s,n={callbacks:{sjcharts:{}}}){const o=n.debugmode;if(o){window.cohort=t}if(!("hostURL"in t))t.hostURL=s;if(t.headerhtml){e.append("div").html(t.headerhtml)}let a=0;for(const e in t.p2st){a++;for(const s in t.p2st[e]){const n=t.p2st[e][s];n.sampletype=s;n.patientname=e;n.cohort=t}}const l=e.append("table").style("margin-top","20px");const r=l.append("tr");t.__tdleft=r.append("td").style("vertical-align","top").style("padding-right","20px");t.__tdright=r.append("td").style("vertical-align","top");if(t.hide_navigation){t.__tdleft.style("display","none")}if(!t.hide_addnewfile){const[n,o]=I(t);o.style("background-color","#f4f4f4").style("margin","0px 20px 20px 0px").style("padding","20px");n.html('+ <span style="font-size:.8em">NEW FILE</span>');const a=o.append("p");const l=o.append("div");const r=()=>{l.selectAll("*").remove();l.append("span").html("Select data type ");const n=k(l).style("margin-right","20px");l.append("input").attr("type","file").on("change",(o=>{a.text("");const l=o.target.files[0];if(!l){r();return}if(l.size==0){a.text("Wrong file: "+l.name);r();return}const i=new FileReader;i.onload=o=>{a.text(l.name+" loaded.");const i=v(t.genome.name);if(!i){a.text("should not happen");r();return}const c=j(o.target.result,n.node().selectedIndex,i);if(c){a.text("Error with "+l.name+": "+c);r();return}let p=null;for(const e in t.dsset){p=t.dsset[e];break}if(!p){a.text("no dataset in cohort, this should not happen");r();return}const d=_({flag:i,cohort:t,flag2thisds:p});if(d){a.text("Error with "+l.name+": "+d);r();return}if(i.good==0){a.text(l.name+": no data loaded");r();return}a.text("");r();e.selectAll("*").remove();H(t,e,s)};i.onerror=function(){a.text("Error reading file "+l.name);r();return};a.text("Parsing file "+l.name+" ...");i.readAsText(l,"utf8")}))};r()}const[i,c]=I(t);const p=S(t,i,c);const m=[];for(const e in t.dsset){const s=t.genome.datasets[e];if(s.hassample){m.push(e)}if(s.hasdisease);}if(p){const[e,n]=I(t,t.show_genetable);L(t,p,e,n,a>0,s)}let h=false;if(m.length||a>0){t.patientset={};for(const e in t.p2st){t.patientset[e]={trlst:[],samples:t.p2st[e]}}if(m.length>0&&!t.hardcodemap){h=true}}if(t.show_heatmap){h=true}if(h){const[e,s]=I(t);e.text("HEATMAP").style("font-size",".8em");const a=await w();const l=(t.name?t.name+".":"")+"hm";a.heatmap({cohort:t,hassamplelst:m,blockinit:u,debugmode:o,dom:{butt:e.node(),holder:s.node()},tp_getgeneexpression:U,show_heatmap:t.show_heatmap,instanceTracker:n.instanceTracker&&n.instanceTracker.sjcharts,callbacks:n.callbacks&&n.callbacks.sjcharts&&(n.callbacks.sjcharts[l]||n.callbacks.sjcharts.hm)})}if(t.hardcodemap){const[e,s]=I(t,t.show_hardcodemap);e.text("HEATMAP").style("font-size",".8em");for(const e of t.hardcodemap){const t=s.append("div").style("display","inline-block").style("margin-bottom","20px");if(e.name){t.append("h3").text(e.name)}T(e,t)}}if(t.survivalJSON){const[e,s]=I(t,t.show_hardcodemap);e.text("SURVIVAL CURVE").style("font-size",".8em").style("border-color","transparent");const o=await w();o.survival({cohort:t,dom:{butt:e.node(),holder:s.node()},instanceTracker:n.instanceTracker&&n.instanceTracker.sjcharts,callbacks:n.callbacks&&n.callbacks.sjcharts&&n.callbacks.sjcharts.sv})}if(t.browserview){const[n,a]=I(t);n.style("font-size",".8em").text("BROWSER");let l=false;n.on("click",(()=>{if(a.style("display")=="none"){n.style("border-color","black");f(a)}else{n.style("border-color","transparent");d(a)}if(l)return;l=true;const r={holder:a,genome:t.genome,debugmode:o,dogtag:t.genome.name,hostURL:s,jwt:t.jwt,cohort:t,nobox:t.browserview.nobox,datasetqueries:t.browserview.datasetqueries,tklst:[]};if(t.browserview.position){r.chr=t.browserview.position.chr;r.start=t.browserview.position.start;r.stop=t.browserview.position.stop}if(t.browserview.nativetracks){r.nativetracks=t.browserview.nativetracks}if(t.browserview.tracks){for(const e of t.browserview.tracks){r.tklst.push(e)}}if(t.browserview.assays){if(!t.assaylst){console.error("assaylst not set!");t.assaylst=[]}for(const e in t.browserview.assays){const s=t.browserview.assays[e];if(!s.assayobj){continue}if(s.combined){if(s.combinetk){r.tklst.push(s.combinetk)}}else{for(const e in t.patientset){for(const n in t.patientset[e].samples){for(const o of t.patientset[e].samples[n].tktemplate){if(o.id==s.assayobj.id){r.tklst.push(o)}}}}}}}if(t.browserview.defaultassaytracks){const[s,n]=J(t);if(s){b(e,"error with .defaultassaytracks: "+s)}else{for(const t of n)r.tklst.push(t)}}for(const t of r.tklst){t.iscustom=true}z(r)}));if(t.show_browser){n.node().click()}}if(t.e2pca){const[e,s]=I(t);e.text(t.e2pca.label).style("font-size",".8em");let n=false;e.on("click",(()=>{if(s.style("display")=="none"){e.style("border-color","black");f(s)}else{e.style("border-color","transparent");d(s)}if(n)return;n=true;C(t,s)}));if(t.show_e2pca){e.node().click()}}}function I(t,e){const s=t.__tdleft.append("div").attr("class","sja_menuoption").style("margin-top","10px").style("white-space","nowrap");const n=t.__tdright.append("div").style("padding-bottom","20px");s.on("click",(()=>{if(n.style("display")=="block"){d(n);s.style("border","solid 1px transparent")}else{s.style("border","solid 1px #545454");f(n)}}));if(e){s.style("border","solid 1px #545454");n.style("display","block")}else{s.style("border","solid 1px transparent");n.style("display","none")}return[s,n]}function J(t){if(!t.browserview)return[null,[]];if(!t.browserview.defaultassaytracks)return[null,[]];const e=[];for(const s of t.browserview.defaultassaytracks){const n=t.p2st[s.level1];if(!n)continue;if(s.level2){const t=n[s.level2];if(!t)continue;if(!t.tktemplate)continue;for(const n of t.tktemplate){if(n.assayname==s.assay){e.push(n);if(s.justone){break}}}}else{for(const t in n){const o=n[t];if(o.tktemplate){for(const t of o.tktemplate){if(t.assayname==s.assay){e.push(t)}}}}}}return[null,e]}var P=Object.freeze({__proto__:null,default:H});export{R as d,P as t};
|
|
1
|
+
import{bC as t,bi as e,z as s,ak as n,ar as o,aP as a,aR as l,aQ as r,bD as i,bE as c,Z as p,ac as d,p as f,ab as m,e as u,M as h,bF as g,bG as y,j as b,ah as x,aa as w,bH as k,bI as v,bJ as j,bK as _}from"./app-488d9fd6.js";import{b as z}from"./block.lazyload-143ae987.js";function E(t){if(!t.ok)throw new Error(t.status+" "+t.statusText);if(t.status===204||t.status===205)return;return t.json()}function R(t,e){return fetch(t,e).then(E)}function S(p,d,f){let m=true;for(const t in p.dsset){m=false}if(m){d.remove();f.remove();return null}const u=new Map;let h=0;for(const s in p.dsset){const n=p.dsset[s].bulkdata;if(!n)continue;const o=new Map;const a=new Set;const l=new Set;for(const s in n){for(const r of n[s]){const s=r.class;if(s==t){a.add((r.sample?r.sample:"")+"."+(r.sampletype?r.sampletype:"")+JSON.stringify(r.pairlst));continue}if(s==e){l.add((r.sample?r.sample:"")+"."+(r.sampletype?r.sampletype:"")+JSON.stringify(r.pairlst));continue}h++;if(!o.has(s)){o.set(s,0)}o.set(s,o.get(s)+1)}}if(a.size){o.set(t,a.size);h+=a.size}if(l.size){o.set(e,l.size);h+=l.size}u.set(s,o)}d.html(h+' <span style="font-size:.8em">VARIANTS</span>').attr("aria-label","A summary of variant hits from all genes, in descending order.");const g=f.append("table").style("margin-right","20px");const y=g.append("tr");const b=g.append("tr");const x=(t,e,s)=>{e.selectAll("*").remove();for(const n of t){const t=e.append("div").style("margin","10px");t.append("span").attr("class","sja_mcdot").style("background-color",n.color).style("padding","2px 5px").style("margin-right","5px").html(s?n.count:" ");t.append("span").style("color",n.color).text(n.label)}};const w={};for(const[d,f]of u){const m=[];for(const[t,e]of f){const i=s[t];if(i.dt==n||i.dt==o||i.dt==a||i.dt==l||i.dt==r){m.push({key:t,label:i.label,color:i.color,count:e})}}m.sort(((t,e)=>e.count-t.count));for(const n of[i,c,t,e]){if(f.has(n)){const t=s[n];m.push({key:n,label:t.label,color:t.color,count:f.get(n)})}}w[d]=m;const u=b.append("td").attr("valign","top").attr("shownumber",0);x(m,u,true);const h=y.append("td").style("border-bottom","solid 1px #ccc").style("padding","5px 10px").style("color","#858585").style("font-size",".8em").text(p.dsset[d].label);h.append("button").style("margin","5px").text("Hide number").on("click",(t=>{const e=u.attr("shownumber")=="1";x(m,u,e);u.attr("shownumber",e?"0":"1");t.target.innerHTML=e?"Hide number":"Show number"}))}return h?w:null}function U(t){Promise.resolve().then((()=>{if(!t.gene)throw{message:"gene name missing"};if(!t.genome)throw{message:"genome name missing"};if(t.hostURL==undefined)throw{message:"no hostURL"};if(!t.loadgeneexpressionfromofficialds)throw{message:"loadgeneexpressionfromofficialds missing"};if(!t.loadgeneexpressionfromofficialds.dataset)throw{message:"dataset missing from loadgeneexpressionfromofficialds"};const e={genome:t.genome,dsname:t.loadgeneexpressionfromofficialds.dataset,expressiononly:1,genename:t.gene,jwt:t.jwt};return fetch(new Request(t.hostURL+"/dsdata",{method:"POST",body:JSON.stringify(e)})).then((t=>t.json())).then((t=>{if(t.error)throw{message:t.error};if(!t.data)throw{message:"cannot get data"};return t.data}))})).then((e=>{for(let s=0;s<e.length;s++){const n={data:e[s].lst,expp:e[s].config,genename:t.gene,presize:{x:t.x+40*s,y:t.y+40*s,width:350,height:650}};import("./ep-b0d6177c.js").then((t=>{new t.default(n)}))}})).catch((e=>{const s=p({x:t.x||600,y:t.y||80});s.body.append("p").text("Error getting gene expression: "+e)}))}const M=new h;function L(t,e,n,o,a,l){if(!e)return null;const r=l||"";const i={};let c=[];for(const e in t.dsset){for(const s in t.dsset[e].bulkdata){if(!(s in i)){i[s]={mcount:0,isoform:{}};c.push(s)}i[s].mcount+=t.dsset[e].bulkdata[s].length;for(const n of t.dsset[e].bulkdata[s]){const t=n.isoform;if(!t)continue;i[s].isoform[t]=1}}}let h=Math.min(100,c.length);const x=new Set(["Intron","P","S","E",g,y]);const w={};const k={};let v=true;n.html(c.length+' <span style="font-size:.8em">GENES</span>').attr("aria-label","A summary table of gene by variant type, order by number of hits in descending order.");const j=o.append("div");const _=t=>{b(j,t)};const z=o.append("div").style("margin-bottom","8px");z.append("button").style("margin-right","10px").text("Configure").on("click",(()=>{if(R.style("display")=="block"){d(R)}else{f(R)}}));z.append("button").style("margin-right","10px").text("Download").on("click",(()=>{const t=G();m("Gene summary",[{text:t}])}));z.append("input").attr("type","text").attr("size",10).attr("placeholder","Find gene").style("margin","0px 20px 0px 5px").on("keyup",(e=>{let s=e.target.value;if(s==""){M.hide();return}if(t.geneToUpper){s=s.toUpperCase()}if(e.code=="Enter"){M.hide();e.target.value="";if(s in i){W(s)}return}const n=[];for(const t in i){if(t.indexOf(s)==0){n.push({name:t,count:i[t].mcount})}}if(n.length==0){M.hide();return}n.sort(((t,e)=>e.count-t.count));M.clear().showunder(e.target);for(let t=0;t<Math.min(30,n.length);t++){const e=n[t].name;const s=M.d.append("div").attr("class","sja_menuoption_y").on("click",(()=>{W(e)}));s.append("span").text(e);s.append("span").style("font-size",".7em").text(n[t].count)}}));z.append("a").attr("href","https://docs.google.com/document/d/1NrH1H-FUWJtEKLk69V-k8uaYHOr9YO2obM9ZLZslEQ0/edit?usp=sharing").attr("target","_blank").text("Help");const E=o.append("div").style("border","solid 1px #ccc").style("margin","10px 0px");const R=E.append("div").style("display","none").style("background-color","#f1f1f1");const S=140;const L=E.append("div").style("padding-top",S+"px").style("position","relative");const T=L.append("div").style("overflow-y","scroll").style("height","400px").style("resize","vertical");const N=T.append("table").style("border-spacing","1px").style("border-collapse","separate");const C=R.append("div").style("padding","10px").style("border-bottom","dashed 1px #ccc");const O=R.append("div").style("padding","10px").style("border-bottom","dashed 1px #ccc");const B=R.append("div").style("padding","10px").style("border-bottom","dashed 1px #ccc");const H=C.append("span").style("padding-right","10px").text("Showing "+(h<c.length?"top "+h+" genes":"all genes"));C.append("button").text("more").on("click",(()=>{h=Math.min(c.length,h+10);H.text("Showing "+(h<c.length?"top "+h:"all genes"));G()}));C.append("button").text("less").on("click",(()=>{h=Math.max(1,h-10);H.text("Showing "+(h<c.length?"top "+h:"all genes"));G()}));O.append("span").text("Show subset").style("padding-right","10px");const I=O.append("textarea").attr("rows",1).attr("cols",20).attr("placeholder","enter gene names").style("margin-right","10px");O.append("button").text("Submit").on("click",(()=>{const e=I.property("value").trim();if(e=="")return;const s=e.split(/[\s\t\n]+/),n=[],o=[];for(const e of s){if(e=="")continue;const s=t.geneToUpper?e.trim().toUpperCase():e.trim();if(s in i){n.push(s)}else{o.push(e)}}if(o.length){_("No match found for "+o.join(", "))}if(n.length==0)return;c=n;h=n.length;G()}));O.append("button").text("Use default").on("click",(()=>{c=[];for(const t in i){c.push(t)}h=Math.min(100,c.length);G()}));B.append("span").html("Noncoding mutation visibility: ");const J=B.append("select").on("change",(()=>{v=!v;for(const t of F){if(!t.atlst){continue}for(const e of t.atlst){if(!e.ismclass)continue;if(v){e.hide=false;continue}e.hide=x.has(e.key)}}G()}));J.append("option").text("show").attr("value","y");J.append("option").text("hide").attr("value","n");B.append("p").style("font-size",".8em").style("color","#858585").text("Including: silent, splice_region, exon, UTR, and intron.");const P=[];for(const e in t.dsset){const s=t.dsset[e];if(s.hassample){P.push(s)}}if(P.length){const t=R.append("div").style("padding","10px").style("border-bottom","dashed 1px #ccc");t.append("span").html("Gene recurrence (# of samples for each gene): ");for(const e of P){t.append("button").text(P.length==1?"show":e.label).on("click",(t=>{const s=[];for(const t of c){const n={};let o=0;if(t in e.bulkdata){for(const s of e.bulkdata[t]){if(!v&&x.has(s.class))return;if(!(s.sample in n)){n[s.sample]=1;o++}}}s.push({name:t,size:o})}const n=t.target.getBoundingClientRect();A(s,"#76B38C","Number of samples"+(v?"":", excluding noncoding mutations"),n)}))}const e=R.append("div").style("padding","10px").style("border-bottom","dashed 1px #ccc");e.append("span").html("Mutation burden (# mutations for each sample): ");for(const t of P){e.append("button").text(P.length==1?"show":t.label).on("click",(e=>{const s={};for(const e in t.bulkdata){for(const n of t.bulkdata[e]){const t=n.sample;if(t){if(!v&&x.has(n.class))continue;if(!(t in s)){s[t]=0}s[t]++}}}const n=[];for(const t in s){n.push({name:t,size:s[t]})}const o=e.target.getBoundingClientRect();A(n,"#76B38C","Mutation burden"+(v?"":", excluding noncoding mutations"),o)}))}}R.append("div").style("padding","10px").style("border-bottom","dashed 1px #ccc").text("Click on a column header to rank genes.");const F=[{label:"Name",isgenename:true}];let V=true;let q=0;for(const s in t.dsset){q++;const n={name:t.dsset[s].label,atlst:[{label:"# mutation",get:e=>{if(!(e in t.dsset[s].bulkdata))return 0;if(v){return t.dsset[s].bulkdata[e].length}let n=0;for(const o of t.dsset[s].bulkdata[e]){if(!x.has(o.class))n++}return n},rotate:true,descend:true,sort:V}]};V=false;if(t.dsset[s].hassample){n.atlst.push({label:"# sample",get:e=>{if(!(e in t.dsset[s].bulkdata))return 0;const n=new Set;for(const o of t.dsset[s].bulkdata[e]){if(!v&&x.has(o.class))continue;if(!o.sample)continue;n.add(o.sample)}return n.size},rotate:true,descend:true})}for(const o of e[s]){o.ismclass=true;o.get=e=>{if(!(e in t.dsset[s].bulkdata))return 0;let n=0;for(const a of t.dsset[s].bulkdata[e]){if(a.class==o.key)n++}return n};o.rotate=true;o.descend=true;n.atlst.push(o)}F.push(n)}const G=()=>{let e=null,n=null;for(const t of F){if(t.hide)continue;if(t.atlst){for(const s of t.atlst){if(s.hide)continue;if(s.sort){e=s;continue}if(s.secondsort){n=s;continue}}continue}if(t.sort){e=t;continue}if(t.secondsort){n=t}}if(e){c.sort(((t,s)=>{if(e.isgenename){if(t<s){return e.descend?1:-1}return e.descend?-1:1}const o=e.get(t),a=e.get(s);if(typeof o=="string"){if(o<a){return e.descend?1:-1}return e.descend?-1:1}if(o==a){if(n){const e=n.get(t),o=n.get(s);if(e==o){if(t in w){if(!(s in w))return-1}else if(s in w){return 1}}else{return o-e}}else{if(t in w){if(!(s in w))return-1}else if(s in w){return 1}}return t<s?-1:1}return e.descend?a-o:o-a}))}const o={};for(const t in k){const e={};for(let s=0;s<h;s++){const n=c[s];if(n in w&&t in w[n]){for(const s in w[n][t].class){if(!(s in e)){e[s]=0}e[s]+=w[n][t].class[s]}}}const s=[];for(const t in e){s.push({class:t,n:e[t]})}s.sort(((t,e)=>e.n-t.n));o[t]=s}const a="solid 10px white";N.selectAll("*").remove();const l=N.append("tr");l.append("td").style("height","0px").style("padding","0px");l.append("td").style("height","0px").style("padding","0px");for(const t of F){if(!t.atlst)continue;let e=0;for(const s of t.atlst){if(!s.hide)e++}l.append("td").attr("colspan",e).style("text-align","center").style("border-right",a).append("div").style("position","absolute").style("top","1px").style("border-bottom",q>1?"solid 1px black":"").text(q>1?t.name:"")}for(const e in k){const s=l.append("td").attr("colspan",2+o[e].length).style("border-right",a).append("div").style("top","2px").style("position","absolute").style("color",t.genome.datasets[e].color).style("border-bottom","solid 1px "+t.genome.datasets[e].color);s.append("span").text(t.genome.datasets[e].label+(k[e].totalsample?", "+k[e].totalsample+" total samples":""));s.append("div").style("position","absolute").style("right","0px").style("top","-5px").attr("class","sja_clb").html("✕").on("click",(()=>{delete k[e];for(const t in w){delete w[t][e]}G()}))}const r=[];const i=[];const p=N.append("tr");p.append("td").style("height","0px").style("padding","0px");for(const t of F){if(t.hide)continue;let e=[];if(t.atlst){e=t.atlst}else{e=[t]}let s;for(const n of e){if(n.hide)continue;s=p.append("td").attr("class","sja_clbtext").style("font-size",".8em").style("height","0px").style("padding","0px").style("color",n.color?n.color:"black").style("white-space","nowrap");s.append("div").html(n.rotate?n.sort?(n.descend?"◀":"▶")+" "+n.label:n.label:n.label+(n.sort?" "+(n.descend?"▾":"▴"):"")).style("position","absolute").style("top",S-25+"px").style("transform",n.rotate?"translate(-3px,0px) rotate(-90deg)":"").style("width",n.rotate?"25px":"auto").on("click",(()=>{const t=n.sort;for(const t of F){if(t.atlst){for(const e of t.atlst){e.sort=false}}else{t.sort=false}}n.sort=true;if(t){n.descend=!n.descend}G()}));i.push(n.label+(t.name?"."+t.name:""))}s.style("border-right",a)}for(const t in k){p.append("td").style("font-size",".8em").style("height","0px").style("padding","0px").style("white-space","nowrap").append("div").html("# mutation").style("position","absolute").style("top",S-25+"px").style("transform","translate(-3px,0px) rotate(-90deg)").style("width","25px");i.push(t+".#mutation");p.append("td").style("font-size",".8em").style("height","0px").style("padding","0px").style("white-space","nowrap").append("div").html("# sample").style("position","absolute").style("top",S-25+"px").style("transform","translate(-3px,0px) rotate(-90deg)").style("width","25px");i.push(t+".#sample");let e;for(const n of o[t]){e=p.append("td").style("font-size","80%").style("overflow-y","hidden").style("height","0px").style("padding","0px").style("color",s[n.class].color).style("white-space","nowrap");e.append("div").html(s[n.class].label).style("position","absolute").style("top",S-25+"px").style("transform","translate(-3px,0px) rotate(-90deg)").style("width","25px");i.push(t+"."+s[n.class].label)}if(e){e.style("border-right",a)}}r.push(i.join("\t"));for(let t=0;t<h;t++){const e=c[t];const n=[e];const l=N.append("tr");l.append("td").text(t+1).style("font-size",".7em").style("text-align","right");for(const s of F){if(s.hide)continue;if(s.isgenename){l.append("td").text(c[t]).attr("class","sja_menuoption_y").style("color","black").style("display","table-cell").on("click",(()=>{W(c[t])}));continue}let o;for(const t of s.atlst){if(t.hide)continue;o=l.append("td").style("color","black").style("background-color","#f1f1f1");const s=t.get(e);if(typeof s=="number"){if(t.color){if(s>0){o.style("text-align","center").append("span").attr("class","sja_mcdot").style("background-color",t.color).html(s>1?s:" ")}else{o.append("span").attr("class","sja_mcdot").style("margin","0px 4px").html(" ")}}else{o.text(s)}}else{o.text(s)}n.push(s)}o.style("border-right",a)}for(const t in k){let r=0,i=0,c={},p=true,d=false;if(e in w){const s=w[e][t];if(!s)continue;p=false;if(s.pending){d=true;continue}r+=s.sample;i+=s.total;for(const t in s.class){if(!(t in c)){c[t]=0}c[t]+=s.class[t]}}if(p){l.append("td").attr("colspan",2+o[t].length);continue}if(d){l.append("td").attr("colspan",2+o[t].length).text("loading ...");continue}l.append("td").text(i).style("background-color","#f1f1f1");n.push(i);l.append("td").text(r).style("background-color","#f1f1f1");n.push(r);let f;for(const e of o[t]){f=l.append("td").style("text-align","center").style("background-color","#f1f1f1");const t=c[e.class];if(t){f.append("span").attr("class","sja_mcdot").style("background-color",s[e.class].color).html(t>1?t:" ")}else{f.append("span").attr("class","sja_mcdot").style("margin","0px 4px").html(" ")}n.push(t)}f.style("border-right",a)}r.push(n.join("\t"))}return r.join("\n")};G();function W(e){if(!(e in i))return;M.hide();const s=[];for(const e in t.dsset){s.push(e)}let n;for(const o in i[e].isoform){if(!n){n=p({x:100,y:100})}u({hostURL:r,jwt:t.jwt,holder:n.body,genome:t.genome,query:o,nopopup:true,dataset:s})}if(t.loadgeneexpressionfromofficialds){U({gene:e,genome:t.genome.name,loadgeneexpressionfromofficialds:t.loadgeneexpressionfromofficialds,hostURL:t.hostURL,jwt:t.jwt,x:1e3,y:80})}}}async function A(t,e,s,n){const o=await import("./plot.barplot-122296f7.js");return o.default(t,e,s,n)}new h;function T(t,e){const s=t=>{b(e,t)};if(!t.metadata)return s("no metadata");const n=t.metadata;const o=e.append("div").style("display","inline-block").style("border","solid 1px #ccc").style("margin","20px").style("padding","20px");const a=e.append("svg");if(!t.text)return s("text missing");const l=t.text.trim().split("\n");t.samples=[];const r=l[0].split("\t");for(let e=2;e<r.length;e++){t.samples.push(r[e])}if(t.samples.length==0)return s("no column names");t.items=[];for(let e=1;e<l.length;e++){const o=l[e].split("\t");const a=o[0];const r=n[a];if(!r)return s("invalid data type "+a);const i=o[1];const c=[];for(let e=2;e<o.length;e++){const n=o[e].split(";");const a=[];for(const o of n){if(!r[o]){return s("invalid value "+o+" at "+i+" and "+t.samples[e-2])}a.push(r[o].color)}c.push(a)}t.items.push({name:i,type:a,lst:c})}t.geneonrow=true;if(!t.rowh){t.rowh=20}if(!t.colw){t.colw=20}if(!t.rowspace){t.rowspace=2}if(!t.colspace){t.colspace=2}if(!t.rowlabtickspace){t.rowlabtickspace=4}if(!t.collabtickspace){t.collabtickspace=4}if(!t.rowtick){t.rowtick=5}if(!t.coltick){t.coltick=5}N(t,a,o,s)}function N(t,e,s,n){const o=t.metadata;for(const t in o){for(const e in o[t]){const s=o[t][e];if(!s.label)return n(".label missing for metadata "+t+"["+e+"]");if(!s.color)return n(".color missing for metadata "+t+"["+e+"]")}}for(const t in o){const e=s.append("div").style("display","inline-block").style("margin","20px").style("vertical-align","top");e.append("div").text(t).style("margin","5px 3px").style("font-weight","bold");const n=e.append("div").style("margin","3px");for(const e in o[t]){const s=o[t][e];const a=n.append("div").style("margin","3px");a.append("div").style("display","inline-block").style("background-color",s.color).style("width","14px").style("height","14px").style("margin-right","10px");a.append("span").text(s.label)}}const a=t.rowh-3,l=t.colw-3;let r=[];for(const e of t.items){r.push(e.name)}let i=0;for(const s of r){e.append("text").text(s).attr("font-size",t.geneonrow?a:l).attr("font-family",x).each((function(){i=Math.max(i,this.getBBox().width)})).remove()}let c=0;for(const s of t.samples){e.append("text").text(s).attr("font-size",t.geneonrow?l:a).attr("font-family",x).each((function(){c=Math.max(c,this.getBBox().width)})).remove()}const p=t.geneonrow?i:c;const d=t.geneonrow?c:i;const f=t.samples.length*(t.colw+t.colspace)-t.colspace;const m=t.items.length*(t.rowh+t.rowspace)-t.rowspace;e.attr("width",p+t.rowlabtickspace+t.rowtick+f+100).attr("height",d+t.collabtickspace+t.coltick+m);const u=p+t.rowlabtickspace+t.rowtick;const h=d+t.collabtickspace+t.coltick;let g=h;for(const s of t.items){const n=e.append("g").attr("transform","translate("+(u-t.rowlabtickspace-t.rowtick)+","+(g+t.rowh/2)+")");n.append("text").text(s.name).attr("font-size",a).attr("font-family",x).attr("fill","black").attr("text-anchor","end").attr("dominant-baseline","central");n.append("line").attr("stroke","black").attr("shape-rendering","crispEdges").attr("x1",t.rowlabtickspace).attr("x2",t.rowlabtickspace+t.rowtick);g+=t.rowh+t.rowspace}let y=u;for(const s of t.samples){const n=e.append("g").attr("transform","translate("+(y+t.colw/2)+","+d+")");n.append("text").text(s).attr("font-size",l).attr("font-family",x).attr("fill","black").attr("dominant-baseline","central").attr("transform","rotate(-90)");n.append("line").attr("stroke","black").attr("shape-rendering","crispEdges").attr("y1",t.collabtickspace).attr("y2",t.collabtickspace+t.coltick);y+=t.colw+t.colspace}g=h;for(const s of t.items){let n=u;for(let o=0;o<t.samples.length;o++){t.samples[o];const a=e.append("g").attr("transform","translate("+(n+t.colw/2)+","+(g+t.rowh/2)+")");const l=t.rowh/s.lst[o].length;const r=s.lst[o];for(let e=0;e<r.length;e++){const s=r[e];a.append("rect").attr("x",-t.colw/2).attr("y",-t.rowh/2+e*l).attr("width",t.colw).attr("height",l).attr("fill",s).attr("shape-rendering","crispEdges")}n+=t.colw+t.colspace}g+=t.rowh+t.rowspace}e.append("rect").attr("x",u).attr("y",h).attr("width",t.samples.length*(t.colw+t.colspace)-t.colspace).attr("height",t.items.length*(t.rowh+t.rowspace)-t.rowspace).attr("stroke","black").attr("fill","none").attr("shape-rendering","crispEdges")}function C(t,e){for(const s of t.e2pca.list){const n=e.append("div").style("display","inline-block").style("margin","20px").style("vertical-align","top");if(t.e2pca.list.length>1){n.style("border","solid 1px #ededed")}if(s.name){n.append("div").text(s.name).style("background-color","#f1f1f1").style("padding","5px 10px")}const o=n.append("div").style("margin","20px");R(t.hostURL+"/textfile").post(JSON.stringify({file:s.vectorfile,jwt:t.jwt}),(e=>{if(e.error){b(n,"Error getting vector file: "+e.error);return}import("./e2pca-00e78fdc.js").then((a=>{const[l,r]=a.e2pca_plot({holder:n,toprow:o,text:e.text,mdanno:t.patientannotation,obj:s});if(l){b(n,"Error: "+l);return}a.e2pca_genesearchui({holder:o,numdata2plot:r,hostURL:t.hostURL,jwt:t.jwt,obj:s,callback:()=>{O(t,s)}});if(t.patientannotation){s.boxplotdiv=n.append("div");const e=o.append("div").style("display","inline-block").style("margin-left","10px");B(t,s,e)}}))}))}}function O(t,e){if(!t.patientannotation){return}if(!e.expressiondata){return}if(!e.usetermkey){e.usetermkey=t.patientannotation.metadata[0].key}let s=null;for(const n of t.patientannotation.metadata){if(n.key==e.usetermkey){s=n;break}}if(!s){b(e.boxplotdiv,"invalid term key "+e.usetermkey);return}const n=[];for(const t of s.values){n.push({valuekey:t.key,label:t.label,color:t.color,samples:[]})}let o=e.expressiondata[0].value;let a=e.expressiondata[0].value;const l=[];for(const s of e.expressiondata){o=Math.min(o,s.value);a=Math.max(a,s.value);if(!t.patientannotation.annotation[s.sample]){l.push(s);continue}const r=t.patientannotation.annotation[s.sample][e.usetermkey];if(r==undefined){l.push(s);continue}for(const t of n){if(t.valuekey==r){t.samples.push(s);break}}}if(l.length){n.push({label:"unannotated",color:"#858585",samples:l})}e.boxplotdiv.selectAll("*").remove();import("./plot.boxplot-99c5aac5.js").then((t=>{const s=t.default({list:n,holder:e.boxplotdiv,axislabel:e.searchedgene});if(s){b(e.boxplotdiv,"Boxplot: "+s)}}))}function B(t,e,s){const n=new h({border:"",padding:""});const o="#858585";s.append("span").text("Choose metadata").attr("class","sja_clbtext").on("click",(s=>{n.clear();n.showunder(s.target);for(const s of t.patientannotation.metadata){n.d.append("div").attr("class","sja_menuoption").text(s.label).on("click",(()=>{e.usetermkey=s.key;n.hide();e.circles.attr("fill",(e=>{const n=t.patientannotation.annotation[e.sample];if(!n)return o;const a=n[s.key];if(!a)return o;const l=t.patientannotation.mdh[s.key].values[a];if(!l){console.error("invalid value key: "+a+" at term: "+s.key);return o}return l.color}));e.legendholder.selectAll("*").remove();e.legendholder.append("div").style("margin-bottom","5px").text(s.label).style("font-weight","bold");for(const t of s.values){const s=e.legendholder.append("div").style("margin-bottom","3px");s.append("span").attr("class","sja_mcdot").style("background-color",t.color).style("margin-right","5px").html(" ");s.append("span").text(t.label)}if(e.expressiondata){O(t,e)}}))}}))}async function H(t,e,s,n={callbacks:{sjcharts:{}}}){const o=n.debugmode;if(o){window.cohort=t}if(!("hostURL"in t))t.hostURL=s;if(t.headerhtml){e.append("div").html(t.headerhtml)}let a=0;for(const e in t.p2st){a++;for(const s in t.p2st[e]){const n=t.p2st[e][s];n.sampletype=s;n.patientname=e;n.cohort=t}}const l=e.append("table").style("margin-top","20px");const r=l.append("tr");t.__tdleft=r.append("td").style("vertical-align","top").style("padding-right","20px");t.__tdright=r.append("td").style("vertical-align","top");if(t.hide_navigation){t.__tdleft.style("display","none")}if(!t.hide_addnewfile){const[n,o]=I(t);o.style("background-color","#f4f4f4").style("margin","0px 20px 20px 0px").style("padding","20px");n.html('+ <span style="font-size:.8em">NEW FILE</span>');const a=o.append("p");const l=o.append("div");const r=()=>{l.selectAll("*").remove();l.append("span").html("Select data type ");const n=k(l).style("margin-right","20px");l.append("input").attr("type","file").on("change",(o=>{a.text("");const l=o.target.files[0];if(!l){r();return}if(l.size==0){a.text("Wrong file: "+l.name);r();return}const i=new FileReader;i.onload=o=>{a.text(l.name+" loaded.");const i=v(t.genome.name);if(!i){a.text("should not happen");r();return}const c=j(o.target.result,n.node().selectedIndex,i);if(c){a.text("Error with "+l.name+": "+c);r();return}let p=null;for(const e in t.dsset){p=t.dsset[e];break}if(!p){a.text("no dataset in cohort, this should not happen");r();return}const d=_({flag:i,cohort:t,flag2thisds:p});if(d){a.text("Error with "+l.name+": "+d);r();return}if(i.good==0){a.text(l.name+": no data loaded");r();return}a.text("");r();e.selectAll("*").remove();H(t,e,s)};i.onerror=function(){a.text("Error reading file "+l.name);r();return};a.text("Parsing file "+l.name+" ...");i.readAsText(l,"utf8")}))};r()}const[i,c]=I(t);const p=S(t,i,c);const m=[];for(const e in t.dsset){const s=t.genome.datasets[e];if(s.hassample){m.push(e)}if(s.hasdisease);}if(p){const[e,n]=I(t,t.show_genetable);L(t,p,e,n,a>0,s)}let h=false;if(m.length||a>0){t.patientset={};for(const e in t.p2st){t.patientset[e]={trlst:[],samples:t.p2st[e]}}if(m.length>0&&!t.hardcodemap){h=true}}if(t.show_heatmap){h=true}if(h){const[e,s]=I(t);e.text("HEATMAP").style("font-size",".8em");const a=await w();const l=(t.name?t.name+".":"")+"hm";a.heatmap({cohort:t,hassamplelst:m,blockinit:u,debugmode:o,dom:{butt:e.node(),holder:s.node()},tp_getgeneexpression:U,show_heatmap:t.show_heatmap,instanceTracker:n.instanceTracker&&n.instanceTracker.sjcharts,callbacks:n.callbacks&&n.callbacks.sjcharts&&(n.callbacks.sjcharts[l]||n.callbacks.sjcharts.hm)})}if(t.hardcodemap){const[e,s]=I(t,t.show_hardcodemap);e.text("HEATMAP").style("font-size",".8em");for(const e of t.hardcodemap){const t=s.append("div").style("display","inline-block").style("margin-bottom","20px");if(e.name){t.append("h3").text(e.name)}T(e,t)}}if(t.survivalJSON){const[e,s]=I(t,t.show_hardcodemap);e.text("SURVIVAL CURVE").style("font-size",".8em").style("border-color","transparent");const o=await w();o.survival({cohort:t,dom:{butt:e.node(),holder:s.node()},instanceTracker:n.instanceTracker&&n.instanceTracker.sjcharts,callbacks:n.callbacks&&n.callbacks.sjcharts&&n.callbacks.sjcharts.sv})}if(t.browserview){const[n,a]=I(t);n.style("font-size",".8em").text("BROWSER");let l=false;n.on("click",(()=>{if(a.style("display")=="none"){n.style("border-color","black");f(a)}else{n.style("border-color","transparent");d(a)}if(l)return;l=true;const r={holder:a,genome:t.genome,debugmode:o,dogtag:t.genome.name,hostURL:s,jwt:t.jwt,cohort:t,nobox:t.browserview.nobox,datasetqueries:t.browserview.datasetqueries,tklst:[]};if(t.browserview.position){r.chr=t.browserview.position.chr;r.start=t.browserview.position.start;r.stop=t.browserview.position.stop}if(t.browserview.nativetracks){r.nativetracks=t.browserview.nativetracks}if(t.browserview.tracks){for(const e of t.browserview.tracks){r.tklst.push(e)}}if(t.browserview.assays){if(!t.assaylst){console.error("assaylst not set!");t.assaylst=[]}for(const e in t.browserview.assays){const s=t.browserview.assays[e];if(!s.assayobj){continue}if(s.combined){if(s.combinetk){r.tklst.push(s.combinetk)}}else{for(const e in t.patientset){for(const n in t.patientset[e].samples){for(const o of t.patientset[e].samples[n].tktemplate){if(o.id==s.assayobj.id){r.tklst.push(o)}}}}}}}if(t.browserview.defaultassaytracks){const[s,n]=J(t);if(s){b(e,"error with .defaultassaytracks: "+s)}else{for(const t of n)r.tklst.push(t)}}for(const t of r.tklst){t.iscustom=true}z(r)}));if(t.show_browser){n.node().click()}}if(t.e2pca){const[e,s]=I(t);e.text(t.e2pca.label).style("font-size",".8em");let n=false;e.on("click",(()=>{if(s.style("display")=="none"){e.style("border-color","black");f(s)}else{e.style("border-color","transparent");d(s)}if(n)return;n=true;C(t,s)}));if(t.show_e2pca){e.node().click()}}}function I(t,e){const s=t.__tdleft.append("div").attr("class","sja_menuoption").style("margin-top","10px").style("white-space","nowrap");const n=t.__tdright.append("div").style("padding-bottom","20px");s.on("click",(()=>{if(n.style("display")=="block"){d(n);s.style("border","solid 1px transparent")}else{s.style("border","solid 1px #545454");f(n)}}));if(e){s.style("border","solid 1px #545454");n.style("display","block")}else{s.style("border","solid 1px transparent");n.style("display","none")}return[s,n]}function J(t){if(!t.browserview)return[null,[]];if(!t.browserview.defaultassaytracks)return[null,[]];const e=[];for(const s of t.browserview.defaultassaytracks){const n=t.p2st[s.level1];if(!n)continue;if(s.level2){const t=n[s.level2];if(!t)continue;if(!t.tktemplate)continue;for(const n of t.tktemplate){if(n.assayname==s.assay){e.push(n);if(s.justone){break}}}}else{for(const t in n){const o=n[t];if(o.tktemplate){for(const t of o.tktemplate){if(t.assayname==s.assay){e.push(t)}}}}}}return[null,e]}var P=Object.freeze({__proto__:null,default:H});export{R as d,P as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{b as t}from"./brush-1a123226.js";import{c as n}from"./termsetting-c12f1c69.js";import{d as e}from"./app-488d9fd6.js";import"./pointer-c7475677.js";import"./nodrag-b2866dd8.js";import"./tslib.es6-c3c2d88f.js";import"path";function s(t,n){const s=t.num_obj.brushes;const r=t.num_obj.density_data.maxvalue;const a=t.num_obj.density_data.minvalue;const i=(r-a)/10;const u=t.tvs.term.type=="integer"?Math.floor(i):i;for(const[e,o]of t.num_obj.ranges.entries()){const t=s.find((t=>t.orig===o));let e;if(!t){e={orig:o,range:JSON.parse(JSON.stringify(o))};s.push(e)}else{e=t}if(o.start===""){if(n=="center")e.range.start=a+u*4;else e.range.start=a+u*8}if(o.stop===""){if(n=="center")e.range.stop=a+u*6;else e.range.stop=Math.floor(r)}}const d=t.num_obj.brush_g.selectAll(".range_brush").data(s,(t=>s.indexOf(t)));d.exit().remove();d.each((function(t,n){e(this).selectAll(".overlay").style("pointer-events","all")}));d.enter().append("g").attr("class","range_brush").each((function(n,e){o(t,this,n)}))}function o(n,s,o){if(!o.elem)o.elem=e(s);const a=o.range;const i=n.num_obj.plot_size;const u=n.num_obj.xscale;const d=n.num_obj.density_data.maxvalue;const c=n.num_obj.density_data.minvalue;o.d3brush=t().extent([[0,0],[i.width,i.height]]).on("brush",(function(t,e){const s=t.selection;if(!s)return;const i=o.rangeInput.getRange();if(i.value!=undefined){o.range=i;return}r(u,s,a,i,c,d,n.tvs.term.type);const l=a.startunbounded?"":i.startinclusive?`${a.start} <=`:`${a.start} <`;const p=a.stopunbounded?"":i.stopinclusive?`<= ${a.stop}`:`< ${a.stop}`;o.rangeInput.getInput().node().value=`${l} x ${p}`})).on("end",(function(){o.elem.selectAll(".overlay").style("pointer-events","none")}));const l=a.startunbounded?c:a.start;const p=a.stopunbounded?d:a.stop;o.init=()=>{if(a.value==undefined)o.elem.call(o.d3brush).call(o.d3brush.move,[l,p].map(u))};if(a.startunbounded)delete a.start;if(a.stopunbounded)delete a.stop;o.elem.selectAll(".selection").style("fill",o.orig.start===""&&o.orig.stop===""||JSON.stringify(a)!=JSON.stringify(o.orig)?"#23cba7":"#777777")}function r(t,e,s,o,r,i,u){s.start=a(t,e[0]);s.stop=a(t,e[1]);const d=n(Number(r));const c=n(Number(i));s.startunbounded=d==s.start&&o.startunbounded;s.stopunbounded=c==s.stop&&o.stopunbounded;if(u=="integer"){s.start=s.startunbounded?"":Math.round(s.start);s.stop=s.stopunbounded?"":Math.round(s.stop)}}function a(t,e){let s=Number(t.invert(e));return n(s)}function i(t,n="end",e){const o={start:"",stop:"",index:t.tvs.ranges.length};t.num_obj.ranges.push(o);const r={orig:o,range:JSON.parse(JSON.stringify(o))};t.num_obj.brushes.push(r);s(t,n);if(e)e();r.init()}export{s as addBrushes,i as addNewBrush,r as updateTempRanges};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{z as t,B as e,d as n}from"./app-
|
|
1
|
+
import{z as t,B as e,d as n}from"./app-488d9fd6.js";const s={type:"geneVariant",term_name_gen:o,get_pill_label:l,getSelectRemovePos:r,fillMenu:i,setTvsDefaults:c};async function i(s,i,o){const l=await s.opts.vocabApi.getCategories(o.term,s.filter,{});const r=new Map;for(const h of l.lst){r.set(h.dt,h.classes)}const c=i.append("div").style("padding","5px").style("cursor","pointer");c.append("div").style("font-size","1.2rem").text(s.tvs.term.name);const p=c.append("div").style("display","flex").style("align-items","center");const a=p.append("button").property("disabled",true).style("margin-top","3px").text("Apply").on("click",(()=>{const t=[];for(const e of d){const n=e.items;for(const e of n){if(!t.some((t=>t.dt==e.dt&&(e.origin?e.origin==t.origin:true)))){const n={dt:e.dt,mclassLst:[],mclassExcludeLst:[]};if(e.origin)n.origin=e.origin;t.push(n)}const n=t.filter((t=>t.dt==e.dt&&(e.origin?e.origin==t.origin:true)))[0];const s=n.mclassLst;const i=n.mclassExcludeLst;if(g.some((t=>t.dt==e.dt&&t.key==e.key&&(e.origin?e.origin==t.origin:true)))){i.push(e.key)}else{s.push(e.key)}}}const e={term:s.tvs.term,values:t,isnot:o.isnot};s.opts.callback(e)}));c.append("div").style("font-weight","bold").style("margin","10px 5px 5px 10px").text("Filter by only one group within which select 1 or more categories for INCLUSION");const d=[];for(const[x,b]of r){if(b.byOrigin){for(const[v,$]of Object.entries(b.byOrigin)){k($,x,v)}}else{k(b,x)}function k(n,s,i){const o=[];for(const[e,l]of Object.entries(n)){const n={...t[e]};n.dt=s;n.num=l;if(i)n.origin=i;o.push(n)}o.sort(((t,e)=>e.num-t.num));if(o.length){d.push({name:i?`${i.charAt(0).toUpperCase()+i.slice(1)} ${e[s]}`:e[s],items:o})}}}const g=[];if(o.values.length){for(const w of d){for(const L of w.items){const A=o.values.filter((t=>t.dt==L.dt&&(L.origin?L.origin==t.origin:true)))[0].mclassExcludeLst;if(A.includes(L.key))g.push(L)}}}const y=JSON.stringify(g);const f=g.length?null:d.reduce(((t,e)=>{if(e.items.length>t.items.length)return e;return t}),d[0]);const u=Math.random().toString();const m=c.append("div").selectAll(":scope>div").data(d,(t=>t.name)).enter().append("div").style("max-width","500px").style("margin","10px").style("padding-left","10px").style("text-align","left").style("opacity",.5).each((function(t){const e=n(this);const s=e.append("label").style("display","flex");const i=g.some((e=>t.items.some((t=>t.dt==e.dt&&(t.origin?t.origin==e.origin:true)))));const o=s.append("input").attr("type","radio").attr("name",u).property("checked",i||f==t).on("click",(()=>{m.style("opacity",.5);e.style("opacity",1);m.selectAll('input[type="checkbox"]').property("disabled",true);r.selectAll('input[type="checkbox"]').property("disabled",false);m.selectAll(".sjpp_row_wrapper").style("display","none");r.style("display","inline-block");m.selectAll('input[type="checkbox"]').property("checked",true);g.splice(0,g.length);a.property("disabled",JSON.stringify(g)===y||g.length==0)}));e.style("opacity",i||f==t?1:.5);s.append("span").style("font-weight",600).html(t.name);const l=Math.random().toString();const r=e.selectAll(":scope>div").data(t.items,(t=>t.label)).enter().append("label").style("margin","5px").style("margin-left","20px").style("display",o.property("checked")?"inline-block":"none").each((function(t){const e=n(this);e.attr("class","sjpp_row_wrapper");e.append("input").attr("type","checkbox").attr("name",l).property("disabled",o.property("checked")?false:true).property("checked",g.some((e=>e.key==t.key&&e.dt==t.dt&&(t.origin?t.origin==e.origin:true)))?false:true).style("vertical-align","top").style("margin-right","3px").on("change",(function(t,e){const n=g.findIndex((t=>t.key==e.key&&t.dt==e.dt&&(e.origin?e.origin==t.origin:true)));if(n==-1)g.push(e);else g.splice(n,1);if(g.length>1){const t=g[0].origin?`${g[0].origin} ${g[0].dt}`:g[0].dt;for(const e of g.slice(1)){const n=e.origin?`${e.origin} ${e.dt}`:e.dt;if(n!==t){break}}}a.property("disabled",JSON.stringify(g)===y||g.length==0)}));e.append("span").style("margin-left","3px").html(`${t.label} (n=${t.num})`)}))}))}function o(t){const e=t.term.name;return e.length<21?e:'<label title="'+e+'">'+e.substring(0,18)+"..."+"</label>"}function l(t){const n=t.values.filter((t=>t.mclassExcludeLst.length>0))[0];const s=e[n.dt];if(n.mclassLst.length==1){const t=n.mclassLst[0];return{txt:`${s}:${t}`}}return{txt:`${s}:${n.mclassLst.length} groups`}}function r(t){return t}function c(t){if(!t.values)t.values=[]}export{s as handler};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{V as t,I as e,d as n}from"./app-3d14cbe4.js";import{addBrushes as s,addNewBrush as a}from"./tvs.density-060d3006.js";import{v as r}from"./violinRenderer-7f46e468.js";import{n as i}from"./niceNumLabels-ef07b7ad.js";import"./brush-06989a5e.js";import"./pointer-c7475677.js";import"./nodrag-f6c0801c.js";import"./termsetting-7467350f.js";import"./tslib.es6-c3c2d88f.js";import"path";import"./axis-747c801e.js";import"./line-264f8f9e.js";import"./constant-426a1483.js";import"./basis-3870f5ba.js";class o{constructor(t,e,n){this.input=t.append("input").attr("name","rangeInput").attr("aria-label","Leave blank for the allowed minimum value").style("width","250px").style("margin","3px 5px").on("change",(()=>{try{this.parseRange()}catch(t){alert(t);this.setRange()}}));this.setRange(e);this.callback=n}getInput(){return this.input}parseRange(){const t=this.input.node().value;const e=l(t);if(this.range?.min!=undefined){if(!e.startunbounded&&this.range?.min>e.start)throw"Invalid start value < minimum allowed";if(!e.stopunbounded&&this.range?.min>=e.stop)throw"Invalid stop value >= minimum allowed"}if(this.range?.max!=undefined){if(!e.stopunbounded&&this.range?.max<e.stop)throw"Invalid stop value > maximum allowed";if(!e.startunbounded&&e.start>=this.range?.max)throw"Invalid start value >= maximum allowed"}this.range=e;this.callback(e);return e}getRange(){return this.range}setRange(t){if(!t)t=this.range;else this.range=t;const e=t.start!=undefined?`${t.start} <=`:"";const n=t.stop!=undefined?`<= ${t.stop}`:"";this.input.node().value=t.value!=undefined?` x=${t.value} `:`${e} x ${n}`}}function l(t){if(!t)throw"Empty range";const e=t.replace(/\s/g,"").split("x");let n,s,a,r,i;if(e[0])p(e[0]);if(e[1])p(e[1]);if(i!=undefined)return{value:i,label:`x = ${i}`};const o=n===undefined;const l=s===undefined;if(!o&&!l&&n>s)throw"start must be lower than stop";return{start:n,stop:s,value:i,startinclusive:a,stopinclusive:r,startunbounded:o,stopunbounded:l};function p(t){const e="[+-]?\\d+(\\.\\d+)?";if(new RegExp(`^${e}<$`).test(t)||new RegExp(`^>${e}$`).test(t)){n=parseFloat(t.match(e));a=false}else if(new RegExp(`^${e}<=$`).test(t)||new RegExp(`^>=${e}$`).test(t)){n=parseFloat(t.match(e));a=true}else if(new RegExp(`^${e}>$`).test(t)||new RegExp(`^<${e}$`).test(t)){s=parseFloat(t.match(e));r=false}else if(new RegExp(`^${e}>=$`).test(t)||new RegExp(`^<=${e}$`).test(t)){s=parseFloat(t.match(e));r=true}else if(new RegExp(`^${e}=$`).test(t)||new RegExp(`^=${e}$`).test(t)){i=parseFloat(t.match(e));r=true;a=true}else throw`Could not parse expression '${t}'`}}const p={type:"numeric",term_name_gen:u,get_pill_label:d,getSelectRemovePos:c,fillMenu:f,setTvsDefaults:b};function u(t){const e=t.term.name;return e.length<26?e:'<label title="'+e+'">'+e.substring(0,24)+"..."+"</label>"}function d(t){if(t.ranges.length==1){const e=t.ranges[0];if("value"in e){if(e.label)return{txt:e.label};if(t.term.values&&t.term.values[e.value]&&t.term.values[e.value].label)return{txt:t.term.values[e.value].label};console.error(`key "${e.value}" not found in values{} of ${t.term.name}`);return{txt:e.value}}return{txt:m(e,t.term)}}return{txt:t.ranges.length+" intervals"}}function m(e,n){const s='<span style="font-family:Times;font-style:italic;font-size:1em; vertical-align:top">x</span>';if(e.startunbounded&&e.stopunbounded){const t=(t="")=>`<span style='vertical-align: middle; font-size:1.1em; line-height: 0.9em'>${t}∞</span>`;const e=`<span style='vertical-align: top; font-size: 0.9em'><</span>`;return`<span>${t("﹣")} ${e} ${s} ${e} ${t("﹢")}</span>`}const a=n.valueConversion;if(e.startunbounded)return`${s} ${e.stopinclusive?"≤":"<"} ${a?t(e.stop,a.fromUnit,a.toUnit,a.scaleFactor):e.stop}`;if(e.stopunbounded)return`${s} ${e.startinclusive?"≥":">"} ${a?t(e.start,a.fromUnit,a.toUnit,a.scaleFactor):e.start}`;let r,o;if(a){r=t(e.start,a.fromUnit,a.toUnit,a.scaleFactor);o=t(e.stop,a.fromUnit,a.toUnit,a.scaleFactor)}else{[r,o]=i([e.start,e.stop])}return`${r} \n\t\t\t${e.startinclusive?"≤":"<"}\n\t\t\t${s}\n\t\t\t${e.stopinclusive?"≤":"<"}\n\t\t\t${o}`}function c(t,e){return t-e.ranges.slice(0,t).filter((t=>t.start||t.stop)).length}async function f(t,n,i){const o=n.append("div");t.num_obj={};t.num_obj.num_div=o.append("div").attr("class","num_div").style("padding","5px").style("color","#000");t.num_obj.plot_size={width:500,height:100,xpad:10,ypad:20};if(typeof t.opts.vocabApi.getViolinPlotData=="function"){try{const e=await t.opts.vocabApi.getViolinPlotData({tw:{term:i.term,q:{mode:"continuous"}},filter:t.filter,svgw:t.num_obj.plot_size.width/window.devicePixelRatio},t.opts.getCategoriesArguments);if(e.error)throw e.error;t.num_obj.density_data=g(e)}catch(t){throw t}}else{t.num_obj.density_data={}}if(t.num_obj.density_data.error)throw t.num_obj.density_data.error;if(!t.num_obj.density_data.density||!t.num_obj.density_data.density.length){y(t,i);return}t.vr=new r(t.num_obj.num_div,t.num_obj.density_data,t.num_obj.xpad,t.num_obj.ypad);t.vr.render();t.num_obj.svg=t.vr.svg;t.num_obj.range_table=t.num_obj.num_div.append("table").style("table-layout","fixed").style("border-collapse","collapse");const l=[];for(const[t,e]of i.ranges.entries()){e.index=t;l.push(e)}t.num_obj.brush_g=t.num_obj.svg.append("g").attr("transform",`translate(${t.num_obj.plot_size.xpad}, ${t.num_obj.plot_size.ypad})`).attr("class","brush_g");const p=t.num_obj.density_data.maxvalue;const u=t.num_obj.density_data.minvalue;t.num_obj.xscale=e().domain([u,p]).range([t.num_obj.plot_size.xpad,t.num_obj.plot_size.width+t.num_obj.plot_size.xpad]);t.num_obj.ranges=l;t.num_obj.brushes=[];s(t);_(t);t.num_obj.num_div.append("div").style("width","100px").attr("class","add_range_btn sja_menuoption").style("border-radius","13px").style("padding","7px 6px").style("margin","5px").style("margin-left","20px").style("text-align","center").style("font-size",".8em").text("Add a Range").on("click",(()=>{const e=()=>_(t);a(t,l.length?"end":"center",e)}));if(!l.length){const e=()=>_(t);a(t,"center",e)}t.num_obj.brushes.forEach((t=>t.init()));await x(t,i,n)}function g(t){const e=t.plots[0]||{plotValueCount:0,biggestBin:0};const n={minvalue:t.min,maxvalue:t.max,samplecount:e.plotValueCount,densityMax:e.density.densityMax,densityMin:e.density.densityMin,density:e.density.bins,valuesImg:e.src};return n}function b(t){if(!t.ranges)t.ranges=[]}function y(t,e){const n=e.term.range||{};const s=e.ranges&&e.ranges[0]?e.ranges[0]:n;const a=t.num_obj.num_div;a.selectAll("*").remove();a.append("div").style("padding","5px").style("font-weight",600).html(e.term.name);const r={};const i=a.append("table");const l=i.append("tr");l.append("td").html("Range");r.equation_td=l.append("td");s.min="min"in e.term?e.term.min:null;s.max="max"in e.term?e.term.max:null;r.rangeInput=new o(r.equation_td,s,p);r.apply_btn=l.append("td").attr("class","sja_filter_tag_btn sjpp_apply_btn").style("border-radius","13px").style("margin","5px").style("margin-left","10px").style("text-align","center").style("font-size",".8em").style("text-transform","uppercase").text("apply").on("click",(async()=>{r.rangeInput.parseRange()}));function p(){t.dom.tip.hide();t.opts.callback({term:e.term,ranges:[r.rangeInput.getRange()]})}}function _(t){const e=t.num_obj.brushes;const s=t.num_obj.range_table.selectAll(".range_div").data(e);s.exit().each((function(){n(this).style("opacity",1).transition().duration(100).style("opacity",0).remove()}));s.enter().append("tr").attr("class","range_div").style("white-space","nowrap").style("padding","2px").transition().duration(200).each((function(e,n){h(t,this,e,n)}))}function h(t,e,a,r){if(!a.range_tr)a.range_tr=n(e);const i=a.range_tr;const l=t.num_obj.xscale;i.append("td").append("td").style("display","inline-block").style("margin-left","10px").style("padding","3px 10px").style("font-size",".9em").text("Range "+(r+1)+": ");a.equation_td=i.append("td").style("width","150px");a.rangeInput=new o(a.equation_td,a.range,p);u(t,a);if(r==0){t.num_obj.range_table.append("tr").attr("class","note_tr").append("td").attr("colspan","3").append("div").style("font-size",".8em").style("margin-left","20px").style("font-style","italic").style("color","#888").html("Option 1: Drag the rectangle to select a range. Overlapping ranges will be merged")}if(r==0){t.num_obj.range_table.append("tr").attr("class","note_tr").append("td").attr("colspan","3").append("div").style("font-size",".8em").style("margin-left","20px").style("font-style","italic").style("color","#888").html(`Option 2: Type in values to select a range. ${t.tvs.term.valueConversion?`Values are in the unit of ${t.tvs.term.valueConversion.fromUnit}`:""}.`)}async function p(e){try{a.range=e;const n=t.num_obj.density_data.minvalue;const s=t.num_obj.density_data.maxvalue;const r=e.value!=undefined?e.value:e.start!=undefined?e.start:n;const i=e.value!=undefined?e.value:e.stop!=undefined?e.stop:s;a.elem.call(a.d3brush).call(a.d3brush.move,[r,i].map(l))}catch(t){window.alert(t)}}function u(t,e){const n=e.range_tr.append("td");const a=e.range;e.apply_btn=n.append("td").attr("class","sja_filter_tag_btn sjpp_apply_btn").style("border-radius","13px").style("margin","5px").style("margin-left","10px").style("text-align","center").style("font-size",".8em").style("text-transform","uppercase").text("apply").on("click",(async()=>{t.dom.tip.hide();const n=e.rangeInput.parseRange();const s=JSON.parse(JSON.stringify(t.tvs));delete s.groupset_label;if(t.num_obj.ranges.length>1)s.ranges=v(t,n);else s.ranges[a.index]=n;try{w(s);t.opts.callback(s)}catch(t){alert(t)}}));n.append("td").attr("class","sja_filter_tag_btn sjpp_delete_btn").style("border-radius","13px").style("display",t.num_obj.ranges.length>1?"inline-block":"none").style("margin","5px").style("margin-left","10px").style("text-align","center").style("font-size",".8em").style("text-transform","uppercase").text("Delete").on("click",(async()=>{const e=JSON.parse(JSON.stringify(t.tvs));e.ranges.splice(a.index,1);t.num_obj.ranges.pop();t.num_obj.brushes.pop();t.num_obj.num_div.select(".note_tr").remove();s(t);_(t);if(e.ranges.length)t.opts.callback(e)}))}}function v(t,e){let n=JSON.parse(JSON.stringify(t.tvs.ranges));let s=false;for(const[t,a]of n.entries()){if(!a.value&&e.index!=t){if(e.start<=a.start&&e.stop>=a.stop){a.start=e.start;a.stop=e.stop;s=true}else if(e.start<=a.stop&&e.stop>=a.stop){a.stop=e.stop;s=true}else if(e.stop>=a.start&&e.start<=a.start){a.start=e.start;s=true}else if(e.start>=a.start&&e.stop<=a.stop){s=true}else if(e.startunbounded){if(e.stop>a.stop){a.stop=e.stop}delete a.start;a.startunbounded=true;s=true}else if(e.stopunbounded){if(e.start<a.start){a.start=e.start}delete a.stop;a.stopunbounded=true;s=true}}}if(s){if(e.index<=n.length-1)n.splice(e.index,1)}else{n=JSON.parse(JSON.stringify(t.tvs.ranges));if(e.index)n[e.index]=e;else n.push(e)}return n}async function x(t,e,n){if(!e.term.values){return}const s=await t.opts.vocabApi.getNumericUncomputableCategories(e.term,t.filter);const a=[];const r=s.lst?s.lst:s;for(const t of r){const n="key"in t?t.key:t.value;if(!("key"in t))t.key=n;if(!("value"in t))t.value=n;if(n in e.term.values){t.label=e.term.values[n].label;a.push(t)}}const i=a.sort(((t,e)=>e.samplecount-t.samplecount));const o=n.append("div").style("padding","5px").style("color","#000");const l=n=>{try{const s=JSON.parse(JSON.stringify(e));delete s.groupset_label;s.ranges=[...s.ranges.filter((t=>!("value"in t))),...n.map((t=>({value:i[t].value,label:i[t].label})))];t.dom.tip.hide();if(s.ranges.length==0)throw"select at least one range or category";if(JSON.parse(JSON.stringify(e)!=s)){try{w(s)}catch(t){window.alert(t);return}t.opts.callback(s)}}catch(t){window.alert(t)}};t.makeValueTable(o,e,i,l).node()}function w(t){if(!t.term)throw"tvs.term is not defined";if(!t.ranges)throw`.values[] missing for a term ${t.term.name}`;if(!Array.isArray(t.ranges))throw`.values[] is not an array for a term ${t.term.name}`;if(!t.ranges.length)throw`no categories selected for ${t.term.name}`;for(const e of t.ranges){if(e.value!=undefined){if(!e.label)throw`.label missing for special category for a term ${t.term.name}`}else{if(e.startunbounded){if(e.stopunbounded)throw`both start & stop are unbounded for a term ${t.term.name}`;if(!Number.isFinite(e.stop))throw`.stop undefined when start is unbounded for a term ${t.term.name}`}else if(e.stopunbounded){if(!Number.isFinite(e.start))throw`.start undefined when stop is unbounded for a term ${t.term.name}`}else{if(!Number.isFinite(e.start))throw`.start undefined when start is not unbounded for a term ${t.term.name}`;if(!Number.isFinite(e.stop))throw`.stop undefined when stop is not unbounded for a term ${t.term.name}`;if(e.start>=e.stop)throw`.start is not lower than stop for a term ${t.term.name}`}}}}export{g as convertViolinData,p as handler};
|
|
1
|
+
import{V as t,I as e,d as n}from"./app-488d9fd6.js";import{addBrushes as s,addNewBrush as a}from"./tvs.density-064e5767.js";import{v as r}from"./violinRenderer-24abe5fd.js";import{n as i}from"./niceNumLabels-621ef5c3.js";import"./brush-1a123226.js";import"./pointer-c7475677.js";import"./nodrag-b2866dd8.js";import"./termsetting-c12f1c69.js";import"./tslib.es6-c3c2d88f.js";import"path";import"./axis-747c801e.js";import"./line-264f8f9e.js";import"./constant-426a1483.js";import"./basis-3870f5ba.js";class o{constructor(t,e,n){this.input=t.append("input").attr("name","rangeInput").attr("aria-label","Leave blank for the allowed minimum value").style("width","250px").style("margin","3px 5px").on("change",(()=>{try{this.parseRange()}catch(t){alert(t);this.setRange()}}));this.setRange(e);this.callback=n}getInput(){return this.input}parseRange(){const t=this.input.node().value;const e=l(t);if(this.range?.min!=undefined){if(!e.startunbounded&&this.range?.min>e.start)throw"Invalid start value < minimum allowed";if(!e.stopunbounded&&this.range?.min>=e.stop)throw"Invalid stop value >= minimum allowed"}if(this.range?.max!=undefined){if(!e.stopunbounded&&this.range?.max<e.stop)throw"Invalid stop value > maximum allowed";if(!e.startunbounded&&e.start>=this.range?.max)throw"Invalid start value >= maximum allowed"}this.range=e;this.callback(e);return e}getRange(){return this.range}setRange(t){if(!t)t=this.range;else this.range=t;const e=t.start!=undefined?`${t.start} <=`:"";const n=t.stop!=undefined?`<= ${t.stop}`:"";this.input.node().value=t.value!=undefined?` x=${t.value} `:`${e} x ${n}`}}function l(t){if(!t)throw"Empty range";const e=t.replace(/\s/g,"").split("x");let n,s,a,r,i;if(e[0])p(e[0]);if(e[1])p(e[1]);if(i!=undefined)return{value:i,label:`x = ${i}`};const o=n===undefined;const l=s===undefined;if(!o&&!l&&n>s)throw"start must be lower than stop";return{start:n,stop:s,value:i,startinclusive:a,stopinclusive:r,startunbounded:o,stopunbounded:l};function p(t){const e="[+-]?\\d+(\\.\\d+)?";if(new RegExp(`^${e}<$`).test(t)||new RegExp(`^>${e}$`).test(t)){n=parseFloat(t.match(e));a=false}else if(new RegExp(`^${e}<=$`).test(t)||new RegExp(`^>=${e}$`).test(t)){n=parseFloat(t.match(e));a=true}else if(new RegExp(`^${e}>$`).test(t)||new RegExp(`^<${e}$`).test(t)){s=parseFloat(t.match(e));r=false}else if(new RegExp(`^${e}>=$`).test(t)||new RegExp(`^<=${e}$`).test(t)){s=parseFloat(t.match(e));r=true}else if(new RegExp(`^${e}=$`).test(t)||new RegExp(`^=${e}$`).test(t)){i=parseFloat(t.match(e));r=true;a=true}else throw`Could not parse expression '${t}'`}}const p={type:"numeric",term_name_gen:u,get_pill_label:d,getSelectRemovePos:c,fillMenu:f,setTvsDefaults:b};function u(t){const e=t.term.name;return e.length<26?e:'<label title="'+e+'">'+e.substring(0,24)+"..."+"</label>"}function d(t){if(t.ranges.length==1){const e=t.ranges[0];if("value"in e){if(e.label)return{txt:e.label};if(t.term.values&&t.term.values[e.value]&&t.term.values[e.value].label)return{txt:t.term.values[e.value].label};console.error(`key "${e.value}" not found in values{} of ${t.term.name}`);return{txt:e.value}}return{txt:m(e,t.term)}}return{txt:t.ranges.length+" intervals"}}function m(e,n){const s='<span style="font-family:Times;font-style:italic;font-size:1em; vertical-align:top">x</span>';if(e.startunbounded&&e.stopunbounded){const t=(t="")=>`<span style='vertical-align: middle; font-size:1.1em; line-height: 0.9em'>${t}∞</span>`;const e=`<span style='vertical-align: top; font-size: 0.9em'><</span>`;return`<span>${t("﹣")} ${e} ${s} ${e} ${t("﹢")}</span>`}const a=n.valueConversion;if(e.startunbounded)return`${s} ${e.stopinclusive?"≤":"<"} ${a?t(e.stop,a.fromUnit,a.toUnit,a.scaleFactor):e.stop}`;if(e.stopunbounded)return`${s} ${e.startinclusive?"≥":">"} ${a?t(e.start,a.fromUnit,a.toUnit,a.scaleFactor):e.start}`;let r,o;if(a){r=t(e.start,a.fromUnit,a.toUnit,a.scaleFactor);o=t(e.stop,a.fromUnit,a.toUnit,a.scaleFactor)}else{[r,o]=i([e.start,e.stop])}return`${r} \n\t\t\t${e.startinclusive?"≤":"<"}\n\t\t\t${s}\n\t\t\t${e.stopinclusive?"≤":"<"}\n\t\t\t${o}`}function c(t,e){return t-e.ranges.slice(0,t).filter((t=>t.start||t.stop)).length}async function f(t,n,i){const o=n.append("div");t.num_obj={};t.num_obj.num_div=o.append("div").attr("class","num_div").style("padding","5px").style("color","#000");t.num_obj.plot_size={width:500,height:100,xpad:10,ypad:20};if(typeof t.opts.vocabApi.getViolinPlotData=="function"){try{const e=await t.opts.vocabApi.getViolinPlotData({tw:{term:i.term,q:{mode:"continuous"}},filter:t.filter,svgw:t.num_obj.plot_size.width/window.devicePixelRatio},t.opts.getCategoriesArguments);if(e.error)throw e.error;t.num_obj.density_data=g(e)}catch(t){throw t}}else{t.num_obj.density_data={}}if(t.num_obj.density_data.error)throw t.num_obj.density_data.error;if(!t.num_obj.density_data.density||!t.num_obj.density_data.density.length){y(t,i);return}t.vr=new r(t.num_obj.num_div,t.num_obj.density_data,t.num_obj.xpad,t.num_obj.ypad);t.vr.render();t.num_obj.svg=t.vr.svg;t.num_obj.range_table=t.num_obj.num_div.append("table").style("table-layout","fixed").style("border-collapse","collapse");const l=[];for(const[t,e]of i.ranges.entries()){e.index=t;l.push(e)}t.num_obj.brush_g=t.num_obj.svg.append("g").attr("transform",`translate(${t.num_obj.plot_size.xpad}, ${t.num_obj.plot_size.ypad})`).attr("class","brush_g");const p=t.num_obj.density_data.maxvalue;const u=t.num_obj.density_data.minvalue;t.num_obj.xscale=e().domain([u,p]).range([t.num_obj.plot_size.xpad,t.num_obj.plot_size.width+t.num_obj.plot_size.xpad]);t.num_obj.ranges=l;t.num_obj.brushes=[];s(t);_(t);t.num_obj.num_div.append("div").style("width","100px").attr("class","add_range_btn sja_menuoption").style("border-radius","13px").style("padding","7px 6px").style("margin","5px").style("margin-left","20px").style("text-align","center").style("font-size",".8em").text("Add a Range").on("click",(()=>{const e=()=>_(t);a(t,l.length?"end":"center",e)}));if(!l.length){const e=()=>_(t);a(t,"center",e)}t.num_obj.brushes.forEach((t=>t.init()));await x(t,i,n)}function g(t){const e=t.plots[0]||{plotValueCount:0,biggestBin:0};const n={minvalue:t.min,maxvalue:t.max,samplecount:e.plotValueCount,densityMax:e.density.densityMax,densityMin:e.density.densityMin,density:e.density.bins,valuesImg:e.src};return n}function b(t){if(!t.ranges)t.ranges=[]}function y(t,e){const n=e.term.range||{};const s=e.ranges&&e.ranges[0]?e.ranges[0]:n;const a=t.num_obj.num_div;a.selectAll("*").remove();a.append("div").style("padding","5px").style("font-weight",600).html(e.term.name);const r={};const i=a.append("table");const l=i.append("tr");l.append("td").html("Range");r.equation_td=l.append("td");s.min="min"in e.term?e.term.min:null;s.max="max"in e.term?e.term.max:null;r.rangeInput=new o(r.equation_td,s,p);r.apply_btn=l.append("td").attr("class","sja_filter_tag_btn sjpp_apply_btn").style("border-radius","13px").style("margin","5px").style("margin-left","10px").style("text-align","center").style("font-size",".8em").style("text-transform","uppercase").text("apply").on("click",(async()=>{r.rangeInput.parseRange()}));function p(){t.dom.tip.hide();t.opts.callback({term:e.term,ranges:[r.rangeInput.getRange()]})}}function _(t){const e=t.num_obj.brushes;const s=t.num_obj.range_table.selectAll(".range_div").data(e);s.exit().each((function(){n(this).style("opacity",1).transition().duration(100).style("opacity",0).remove()}));s.enter().append("tr").attr("class","range_div").style("white-space","nowrap").style("padding","2px").transition().duration(200).each((function(e,n){h(t,this,e,n)}))}function h(t,e,a,r){if(!a.range_tr)a.range_tr=n(e);const i=a.range_tr;const l=t.num_obj.xscale;i.append("td").append("td").style("display","inline-block").style("margin-left","10px").style("padding","3px 10px").style("font-size",".9em").text("Range "+(r+1)+": ");a.equation_td=i.append("td").style("width","150px");a.rangeInput=new o(a.equation_td,a.range,p);u(t,a);if(r==0){t.num_obj.range_table.append("tr").attr("class","note_tr").append("td").attr("colspan","3").append("div").style("font-size",".8em").style("margin-left","20px").style("font-style","italic").style("color","#888").html("Option 1: Drag the rectangle to select a range. Overlapping ranges will be merged")}if(r==0){t.num_obj.range_table.append("tr").attr("class","note_tr").append("td").attr("colspan","3").append("div").style("font-size",".8em").style("margin-left","20px").style("font-style","italic").style("color","#888").html(`Option 2: Type in values to select a range. ${t.tvs.term.valueConversion?`Values are in the unit of ${t.tvs.term.valueConversion.fromUnit}`:""}.`)}async function p(e){try{a.range=e;const n=t.num_obj.density_data.minvalue;const s=t.num_obj.density_data.maxvalue;const r=e.value!=undefined?e.value:e.start!=undefined?e.start:n;const i=e.value!=undefined?e.value:e.stop!=undefined?e.stop:s;a.elem.call(a.d3brush).call(a.d3brush.move,[r,i].map(l))}catch(t){window.alert(t)}}function u(t,e){const n=e.range_tr.append("td");const a=e.range;e.apply_btn=n.append("td").attr("class","sja_filter_tag_btn sjpp_apply_btn").style("border-radius","13px").style("margin","5px").style("margin-left","10px").style("text-align","center").style("font-size",".8em").style("text-transform","uppercase").text("apply").on("click",(async()=>{t.dom.tip.hide();const n=e.rangeInput.parseRange();const s=JSON.parse(JSON.stringify(t.tvs));delete s.groupset_label;if(t.num_obj.ranges.length>1)s.ranges=v(t,n);else s.ranges[a.index]=n;try{w(s);t.opts.callback(s)}catch(t){alert(t)}}));n.append("td").attr("class","sja_filter_tag_btn sjpp_delete_btn").style("border-radius","13px").style("display",t.num_obj.ranges.length>1?"inline-block":"none").style("margin","5px").style("margin-left","10px").style("text-align","center").style("font-size",".8em").style("text-transform","uppercase").text("Delete").on("click",(async()=>{const e=JSON.parse(JSON.stringify(t.tvs));e.ranges.splice(a.index,1);t.num_obj.ranges.pop();t.num_obj.brushes.pop();t.num_obj.num_div.select(".note_tr").remove();s(t);_(t);if(e.ranges.length)t.opts.callback(e)}))}}function v(t,e){let n=JSON.parse(JSON.stringify(t.tvs.ranges));let s=false;for(const[t,a]of n.entries()){if(!a.value&&e.index!=t){if(e.start<=a.start&&e.stop>=a.stop){a.start=e.start;a.stop=e.stop;s=true}else if(e.start<=a.stop&&e.stop>=a.stop){a.stop=e.stop;s=true}else if(e.stop>=a.start&&e.start<=a.start){a.start=e.start;s=true}else if(e.start>=a.start&&e.stop<=a.stop){s=true}else if(e.startunbounded){if(e.stop>a.stop){a.stop=e.stop}delete a.start;a.startunbounded=true;s=true}else if(e.stopunbounded){if(e.start<a.start){a.start=e.start}delete a.stop;a.stopunbounded=true;s=true}}}if(s){if(e.index<=n.length-1)n.splice(e.index,1)}else{n=JSON.parse(JSON.stringify(t.tvs.ranges));if(e.index)n[e.index]=e;else n.push(e)}return n}async function x(t,e,n){if(!e.term.values){return}const s=await t.opts.vocabApi.getNumericUncomputableCategories(e.term,t.filter);const a=[];const r=s.lst?s.lst:s;for(const t of r){const n="key"in t?t.key:t.value;if(!("key"in t))t.key=n;if(!("value"in t))t.value=n;if(n in e.term.values){t.label=e.term.values[n].label;a.push(t)}}const i=a.sort(((t,e)=>e.samplecount-t.samplecount));const o=n.append("div").style("padding","5px").style("color","#000");const l=n=>{try{const s=JSON.parse(JSON.stringify(e));delete s.groupset_label;s.ranges=[...s.ranges.filter((t=>!("value"in t))),...n.map((t=>({value:i[t].value,label:i[t].label})))];t.dom.tip.hide();if(s.ranges.length==0)throw"select at least one range or category";if(JSON.parse(JSON.stringify(e)!=s)){try{w(s)}catch(t){window.alert(t);return}t.opts.callback(s)}}catch(t){window.alert(t)}};t.makeValueTable(o,e,i,l).node()}function w(t){if(!t.term)throw"tvs.term is not defined";if(!t.ranges)throw`.values[] missing for a term ${t.term.name}`;if(!Array.isArray(t.ranges))throw`.values[] is not an array for a term ${t.term.name}`;if(!t.ranges.length)throw`no categories selected for ${t.term.name}`;for(const e of t.ranges){if(e.value!=undefined){if(!e.label)throw`.label missing for special category for a term ${t.term.name}`}else{if(e.startunbounded){if(e.stopunbounded)throw`both start & stop are unbounded for a term ${t.term.name}`;if(!Number.isFinite(e.stop))throw`.stop undefined when start is unbounded for a term ${t.term.name}`}else if(e.stopunbounded){if(!Number.isFinite(e.start))throw`.start undefined when stop is unbounded for a term ${t.term.name}`}else{if(!Number.isFinite(e.start))throw`.start undefined when start is not unbounded for a term ${t.term.name}`;if(!Number.isFinite(e.stop))throw`.stop undefined when stop is not unbounded for a term ${t.term.name}`;if(e.start>=e.stop)throw`.start is not lower than stop for a term ${t.term.name}`}}}}export{g as convertViolinData,p as handler};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as e}from"./table-
|
|
1
|
+
import{r as e}from"./table-10183501.js";import"./tslib.es6-c3c2d88f.js";import"./app-488d9fd6.js";const t={term_name_gen:i,get_pill_label:a,fillMenu:l,getSelectRemovePos:n,getNegateText(e){return e.tvs.isnot?"NOT IN":"IN"}};async function l(e,t,l){l=JSON.parse(JSON.stringify(l));t.selectAll("*").remove();t=t.append("div");t.style("font-size","0.8em");for(const e in l.term.values){l.term.values[e].list;s(t,l,e);break}t.append("div").append("div").style("display","inline-block").style("float","right").style("padding","6px 20px").append("button").attr("class","sjpp_apply_btn sja_filter_tag_btn").text("Apply").on("click",(()=>{let t;for(const e in l.term.values){const s=l.term.values[e];if(!t){t=e;s.list=s.list.filter((e=>!("checked"in e)||e.checked))}else s.list=l.term.values[t].list}e.opts.callback(l)}))}function s(t,l,s){t.style("padding","6px").append("div").style("margin","10px").style("font-size","0.8rem").html(`<b> ${s}</b>.`);const n=l.term.values[s];const i=[];for(const e of n.list)i.push([{value:e.sample}]);const a=[{label:"Sample"}];e({rows:i,columns:a,div:t,maxWidth:"30vw",maxHeight:"40vh",noButtonCallback:(e,t)=>{n.list[e].checked=t.checked},striped:false,showHeader:false,selectAll:true})}function n(e){return e}function i(){return"Samples"}function a(e){return{txt:r(e.term)}}function r(e){let t,l;for(const s in e.values){t=e.values[s].list.length;l=s;break}return`${l} n=${t}`}export{s as addTable,t as handler};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{aY as t}from"./app-
|
|
1
|
+
import{aY as t}from"./app-488d9fd6.js";function e(t){const e=t.toLowerCase();if(e.startsWith("https://")||e.startsWith("http://")||e.startsWith("ftp://"))return true}function r(t,e){const r=t.append("div");const p=r.append("select").style("border-radius","5px").style("padding","5px 10px").style("margin","1px 20px 1px 10px");for(const t in e){p.append("option").text(t)}return p}function p(t,e,r){const p=t.append("input").attr("type","text").attr("size",r||50).style("border-radius","5px").style("padding","5px 20px").style("margin","1px 20px 1px 10px");if(e){p.attr("placeholder",e)}return p}function n(t){const e=t.div.append("textarea").attr("rows",t.rows||"5").attr("cols",t.cols||"70").style("border-radius","5px").attr("placeholder",t.placeholder||"");return e}function a(t){const e=t.append("input").attr("type","file").property("position","relative").style("margin","1px 20px 1px 10px").style("justify-content","left");return e}function s(t){const e=t.div.append("button").html(t.text).style("color",t.color||"black").style("background-color",t.backgroundColor||"#F2F2F2").style("border",t.border||"2px solid #999").style("padding",t.padding||"5px 10px").style("cursor","pointer");return e}function o(t,e){const r=t.append("div").style("display","inline-block").style("margin","15px").style("place-items","center left").html(e);return r}function i(e,r,p){const n=s({div:e,text:"↺",backgroundColor:"white",color:"grey",padding:"0px 6px 1px 6px"});n.style("font-size","1.5em").style("display","inline-block").attr("type","reset").on("click",(async()=>{t(p).property("value","");if(r.data){r.data=typeof r.data=="string"?"":Array.isArray(r.data)?[]:{}}}));return n}export{i as a,r as b,s as c,p as d,n as e,a as f,e as i,o as m};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{h as e,P as t}from"./app-
|
|
1
|
+
import{h as e,P as t}from"./app-488d9fd6.js";class s{constructor(e){this.type="variantBrowser";this.dom={holder:e.holder.style("padding","20px"),header:e.header};this.rendered=false}getState(e){const t=e.plots.find((e=>e.id===this.id));return{config:t}}main(){this.config=JSON.parse(JSON.stringify(this.state.config));if(this.dom.header){this.dom.header.html(`${this.config.term.term.name}: variants in matrix samples`)}if(!this.rendered){this.dom.holder.selectAll("*").remove();const e=this.config.term.term.name;const t={holder:this.dom.holder.node(),noheader:1,nobox:1,genome:this.app.vocabApi.vocab.genome,gene:e,geneName:e,tracks:[{type:"mds3",name:e,custom_variants:this.config.custom_variants}]};runproteinpaint(t);this.rendered=true}}}const r=e(s);const i=r;function n(e,s){const r={};return t(r,e)}export{i as componentInit,n as getPlotConfig,r as variantBrowserInit};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{au as e,av as n,aw as l,ax as t,ay as s,az as o,z as a}from"./app-
|
|
1
|
+
import{au as e,av as n,aw as l,ax as t,ay as s,az as o,z as a}from"./app-488d9fd6.js";function f(e){let n=false;let l=true;let t=0;let s=0;const o={};let i;while(t<e.length){const a=e[t];if(l){if(a=="="){n=true;l=false;i=e.substring(s,t);s=t+1}else if(a==";"){o[e.substring(s,t)]=1;s=t+1}}else if(n&&a==";"){l=true;n=false;o[i]=e.substring(s,t);i=null;s=t+1}t++}const a=e.substr(s,t);if(i){o[i]=a}else{o[a]=1}return o}function r(n,l,t){if(!l){return null}for(const s of n.split(",")){const n=s.replace(/&/g,",").split("|");const o={};for(let e=0;e<l.length;e++){if(n[e]){o[l[e].name]=n[e]}}if(!o.Allele){continue}let i=null;for(const e of t.mlst||t.alleles){if(e.allele_original==o.Allele){i=e;break}}if(!i){if(o.Allele=="-"){if(t.mlst){if(t.mlst.length==1){i=t.mlst[0]}}else if(t.alleles){if(t.alleles.length==1){i=t.alleles[0]}}}else{for(const e of t.mlst||t.alleles){if(e.allele_original.substr(1)==o.Allele){i=e;break}}}if(!i){continue}}if(!i.csq){i.csq=[]}i.csq.push(o);o._gene=o.SYMBOL||o.Gene;if(o.Feature_type&&o.Feature_type=="Transcript"){o._isoform=o.Feature.split(".")[0]}else{o._isoform=o._gene}if(o.Consequence){const[n,l,t]=e(o.Consequence);o._dt=n;o._class=l;o._csqrank=t}else{o._dt=dtsnvindel;o._class=mclassnonstandard}if(o.HGVSp){o._mname=decodeURIComponent(o.HGVSp.substr(o.HGVSp.indexOf(":")+1))}else if(o.Protein_position&&o.Amino_acids){o._mname=decodeURIComponent(o.Protein_position+o.Amino_acids)}else if(o.HGVSc){o._mname=o.HGVSc.substr(o.HGVSc.indexOf(":")+1)}else if(o.Existing_variation){o._name=o.Existing_variation}else;}return true}function u(n,l,t){if(!l){return null}for(const s of n.split(",")){const n=s.replace(/&/g,",").split("|");const o={};for(let e=0;e<l.length;e++){if(n[e]){o[l[e].name]=n[e]}}if(!o.Allele){continue}let i=null;for(const e of t.alleles){if(e.allele==o.Allele){i=e;break}}if(!i){continue}if(!i.ann){i.ann=[]}i.ann.push(o);o._gene=o.Gene_Name;if(o.Feature_Type&&o.Feature_Type=="transcript"&&o.Feature_ID){o._isoform=o.Feature_ID.split(".")[0]}if(o.Annotation){const[n,l,t]=e(o.Annotation);o._dt=n;o._class=l;o._csqrank=t}else{o._dt=dtsnvindel;o._class=mclassnonstandard}if(o["HGVS.p"]){o._mname=o["HGVS.p"]}else if(o["HGVS.c"]){o._mname=o["HGVS.c"]}else;}return true}function c(e,i){if(e.length==1&&i.length==1){if(i=="."){return n}return l}if(e.length==i.length)return t;if(e.length<i.length)return s;if(e.length>i.length)return n;return o}const p=new RegExp(/<(.+)>/);const m={};for(const e in a){m[a[e].label.toUpperCase()]=e}function h(e){let n=[],l=[],t={},s=false,o={},i=false;for(const a of e){if(!a.startsWith("#")){continue}if(a.startsWith("#C")){n=a.split("\t").slice(9);continue}if(a.startsWith("##INFO")){const e=b(a.substring(8,a.length-1),t);if(e){l.push("INFO error: "+e)}else{s=true}continue}if(a.startsWith("##FORMAT")){const e=b(a.substring(10,a.length-1),o);if(e){l.push("FORMAT error: "+e)}else{i=true}}}const a=[];for(const e of n){const n={name:e};a.push(n)}if(t.CSQ){const e=t.CSQ.Description.split(" Format: ");if(e[1]){const n=e[1].split("|");if(n.length>1){t.CSQ.csqheader=[];for(const e of n){const n={name:e};t.CSQ.csqheader.push(n)}}else{l.push("unknown format for CSQ header: "+t.CSQ.Description)}}else{l.push("unknown format for CSQ header: "+t.CSQ.Description)}}if(t.ANN){const e=t.ANN.Description.split("'");if(e[1]){const n=e[1].split(" | ");if(n.length){t.ANN.annheader=[];for(const e of n){const n={name:e};t.ANN.annheader.push(n)}}else{l.push('no " | " joined annotation fields for ANN (snpEff annotation): '+t.ANN.Description)}}else{l.push("no single-quote enclosed annotation fields for ANN (snpEff annotation): "+t.ANN.Description)}}return[s?t:null,i?o:null,a,l.length?l:null]}function g(e,n){const l=e.split("\t");if(l.length<8){return["line has less than 8 fields",null,null]}const t=Number.parseInt(l[2-1]);if(!Number.isInteger(t)){return["invalid value for genomic position",null,null]}const s=l[4-1];const o={vcf_ID:l[3-1],chr:(n.nochr?"chr":"")+l[1-1],pos:t-1,ref:s,altstr:l[5-1],alleles:[{allele:s,sampledata:[]}],info:{},name:l[3-1]=="."?null:l[3-1]};const i=[];for(const e of l[5-1].split(",")){const n={ref:o.ref,allele:e,allele_original:e,sampledata:[],_m:o,info:{}};o.alleles.push(n);if(e[0]=="<"){const l=e.match(p);if(!l){i.push(e);continue}n.type=l[1];n.allele=l[1];n.issymbolicallele=true}else{const[e,l,t]=d(o.pos,o.ref,n.allele);n.pos=e;n.ref=l;n.allele=t}}if(l[9-1]&&l[10-1]){_(l,o,n)}o.alleles.shift();const a=l[8-1]=="."?[]:f(l[8-1]);let r=[];if(n.info){r=N(a,o,n)}else{o.info=a}const u=[];for(const e of o.alleles){const n={};for(const e in o){if(e!="alleles"){n[e]=o[e]}}for(const l in e){if(l=="allele"){n.alt=e[l]}else if(l=="info"){n.altinfo=e[l]}else{n[l]=e[l]}}if(!n.issymbolicallele&&n.alt!="NON_REF"){n.type=c(n.ref,n.alt)}u.push(n)}return[r.length?"unknown info keys: "+r.join(","):null,u,i.length>0?i:null]}function d(e,n,l){while(n.length>1&&l.length>1&&n[n.length-1]==l[l.length-1]){n=n.substr(0,n.length-1);l=l.substr(0,l.length-1)}while(n.length>1&&l.length>1&&n[0]==l[0]){n=n.substr(1);l=l.substr(1);e++}return[e,n,l]}function _(e,n,l){const t=e[9-1].split(":");for(let s=9;s<e.length;s++){const o=e[s].split(":");{let e=true;for(const n of o){if(n!="."){e=false;break}}if(e){continue}}const i=s-9;for(let e=1;e<n.alleles.length;e++){const t={};if(l.samples&&l.samples[i]){for(const e in l.samples[i]){t[e]=l.samples[i][e]}}else{t.name="missing_samplename_from_vcf_header"}n.alleles[e].sampledata.push({sampleobj:t})}for(let e=0;e<t.length;e++){const s=t[e];const i=o[e];if(i=="."){continue}if(s=="GT"){const e=i.indexOf("/")!=-1?"/":"|";let l=0;let t=false;const s=[];for(const o of i.split(e)){if(o=="."){t=true;continue}const e=Number.parseInt(o);if(Number.isNaN(e)){t=true;continue}l+=e;const i=n.alleles[e];if(i){s.push(i.allele)}}let o=false;if(!t){o=l==0}const a=s.join(e);for(let e=1;e<n.alleles.length;e++){const l=n.alleles[e].sampledata[n.alleles[e].sampledata.length-1];l.GT=i;l.genotype=a;if(o){l.gtallref=true}l.__gtalleles=s}continue}const a=l.format?l.format[s]:null;if(!a){for(let e=1;e<n.alleles.length;e++){n.alleles[e].sampledata[n.alleles[e].sampledata.length-1][s]=i}continue}const f=a.Type=="Integer";const r=a.Type=="Float";if(a.Number&&a.Number=="R"||s=="AD"){const e=i.split(",").map((e=>{if(f)return Number.parseInt(e);if(r)return Number.parseFloat(e);return e}));for(let l=1;l<n.alleles.length;l++){if(e[l]!=undefined){const t=n.alleles[l];const o=t.sampledata[t.sampledata.length-1];o[s]={};o[s][t.ref]=e[0];o[s][t.allele]=e[l]}}continue}if(a.Number&&a.Number=="A"){const e=i.split(",").map((e=>{if(f)return Number.parseInt(e);if(r)return Number.parseFloat(e);return e}));for(let l=1;l<n.alleles.length;l++){if(e[l-1]!=undefined){const t=n.alleles[l];const o=t.sampledata[t.sampledata.length-1];o[s]={};o[s][t.allele]=e[l-1]}}continue}for(let e=1;e<n.alleles.length;e++){n.alleles[e].sampledata[n.alleles[e].sampledata.length-1][s]=i}}}for(const e of n.alleles){for(const n of e.sampledata){if(n.AD){n.allele2readcount={};for(const e in n.AD){n.allele2readcount[e]=n.AD[e]}}}}}function b(e,n){const l={},t=[];let s=0,o=false,a=null;for(let n=0;n<e.length;n++){if(e[n]=='"'){n++;const s=n;while(e[n]!='"'){n++}if(a){l[a]=e.substring(s,n);a=null}else{t.push("k undefined before double quotes")}o=true;continue}if(e[n]=="="){a=e.substring(s,n);s=n+1;continue}if(e[n]==","){if(o){o=false}else{if(a){l[a]=e.substring(s,n);a=null}else{t.push("k undefined")}}s=n+1;continue}}if(a){l[a]=e.substring(s,i)}if(l.ID){n[l.ID]=l}else{return"no ID"}if(t.length)return t.join("\n")}function N(e,n,l){const t=[];for(const s in e){if(l.info[s]==undefined){t.push(s);continue}const o=e[s];if(s=="CSQ"){const e=r(o,l.info.CSQ.csqheader,n);if(!e){n.info[s]=o}continue}if(s=="ANN"){const e=u(o,l.info.ANN.annheader,n);if(!e){n.info[s]=o}continue}if(l.info[s].Type=="Flag"){n.info[s]=s;continue}const i=l.info[s].Number;const a=l.info[s].Type=="Integer";const f=l.info[s].Type=="Float";if(i=="0"){n.info[s]=s;continue}if(i=="A"){const e=o.split(",");for(let l=0;l<e.length;l++){if(n.alleles[l]){n.alleles[l].info[s]=a?Number.parseInt(e[l]):f?Number.parseFloat(e[l]):e[l]}}continue}if(i=="1"){n.info[s]=a?Number.parseInt(o):f?Number.parseFloat(o):o;continue}if(!o.split){continue}const c=o.split(",");if(a){n.info[s]=c.map(Number.parseInt)}else if(f){n.info[s]=c.map(Number.parseFloat)}else{n.info[s]=c}}return t}export{g as a,h as v};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{h as t,P as i,Q as e}from"./app-
|
|
1
|
+
import{h as t,P as i,Q as e}from"./app-488d9fd6.js";import{renderTerm1Label as s,term0_term2_defaultQ as o,controlsInit as n}from"./controls-f4648f7f.js";import a from"./violin.renderer-4cab7448.js";import{h as l}from"./html.legend-0abd27ff.js";import{f as r,i as p}from"./termsetting-c12f1c69.js";import{setInteractivity as d}from"./violin.interactivity-57637244.js";import"./controls.btns-26bb6ef1.js";import"./controls.config-9870bdea.js";import"./brush-1a123226.js";import"./pointer-c7475677.js";import"./nodrag-b2866dd8.js";import"./table-10183501.js";import"./tslib.es6-c3c2d88f.js";import"./axis-747c801e.js";import"./line-264f8f9e.js";import"./constant-426a1483.js";import"./basis-3870f5ba.js";import"./log-1001ca83.js";import"path";import"./FilterRxComp-cb149666.js";import"./partjson.esm-b3f1fc21.js";import"./termdb.bins-06fd21c1.js";import"./niceNumLabels-621ef5c3.js";class m{constructor(t){this.type="violin"}async init(t){const i=this.opts.holder.append("div").attr("class","sjpp-plot-controls").style("display","inline-block");t.plots.find((t=>t.id===this.id));const e=this.opts.holder.append("div").style("display","inline-block").style("padding",this.opts.mode!="minimal"?"5px":"0px").style("padding-left",this.opts.mode!="minimal"?"45px":"0px").attr("id","sjpp-vp-holder");this.dom={header:this.opts.header,loadingDiv:this.opts.holder.append("div").style("position","absolute").style("display",this.opts.mode!="minimal"?"inline-block":"none").style("padding-left","10px").style("padding-top","20px").text("Loading ..."),controls:i,violinDiv:e.append("div").attr("class","sjpp-vp-violinDiv").style("padding-left",this.opts.mode!="minimal"?"10px":"0px"),legendDiv:e.append("div").classed("sjpp-vp-legend",true).style("padding-left","5px"),tableHolder:this.opts.holder.append("div").classed("sjpp-tableHolder",true).style("display","inline-block").style("padding","10px").style("vertical-align","top").style("margin-left","0px").style("margin-top","30px").style("margin-right","30px")};a(this);d(this);if(this.opts.mode!="minimal"){this.legendRenderer=l(this.dom.legendDiv,{settings:{legendOrientation:"vertical"},handlers:{}})}await this.setControls()}async setControls(){this.components={};if(this.opts.mode=="minimal")return;const t=[{type:"term",configKey:"term",chartType:"violin",usecase:{target:"violin",detail:"term"},label:s,vocabApi:this.app.vocabApi,menuOptions:"edit"},{type:"term",configKey:"term2",chartType:"violin",usecase:{target:"violin",detail:"term2"},title:"Overlay data",label:"Overlay",vocabApi:this.app.vocabApi,numericEditMenuVersion:this.opts.numericEditMenuVersion,defaultQ4fillTW:o},{label:"Orientation",title:"Orientation of the chart",type:"radio",chartType:"violin",settingsKey:"orientation",options:[{label:"Vertical",value:"vertical"},{label:"Horizontal",value:"horizontal"}]},{label:"Method",title:`If selected uses the KDE method, otherwise uses a histogram`,type:"radio",chartType:"violin",settingsKey:"method",options:[{label:"KDE",value:0},{label:"Histogram",value:1}]},{label:"Data symbol",title:"Symbol type",type:"radio",chartType:"violin",settingsKey:"datasymbol",options:[{label:"Ticks",value:"rug"},{label:"Circles",value:"bean"},{label:"Off",value:"none"}]},{label:"Scale",title:"Axis scale",type:"radio",chartType:"violin",settingsKey:"unit",options:[{label:"Linear",value:"abs"},{label:"Log",value:"log"}]},{label:"Symbol size",type:"number",chartType:"violin",settingsKey:"radius",step:1,max:15,min:3},{label:"Stroke width",title:"Size of Symbol stroke",type:"number",chartType:"violin",settingsKey:"strokeWidth",step:.1,max:2,min:.1},{label:"Bins",type:"number",chartType:"violin",settingsKey:"ticks",title:"Number of bins used to build the plot",min:1,max:50},{label:"Plot length",title:"Length of the plot",type:"number",chartType:"violin",settingsKey:"svgw",step:10,max:1e3,min:500,debounceInterval:1e3},{label:"Plot thickness",title:"Thickness of plots, can be between 40 and 200",type:"number",chartType:"violin",settingsKey:"plotThickness",step:10,max:500,min:40,debounceInterval:1e3},{label:"Median length",title:"Length of median",type:"number",chartType:"violin",settingsKey:"medianLength",step:1,max:15,min:3,debounceInterval:1e3},{label:"Median thickness",title:"Width of median",type:"number",chartType:"violin",settingsKey:"medianThickness",step:1,max:10,min:3,debounceInterval:100},{label:"Default color",type:"color",chartType:"violin",settingsKey:"defaultColor"}];this.components.controls=await n({app:this.app,id:this.id,holder:this.dom.controls,inputs:t});this.components.controls.on("downloadClick.violin",this.download)}reactsTo(t){if(t.type.startsWith("plot_")){return t.id===this.id&&(!t.config.childType||t.config.childType==this.type)}return true}getState(t){const i=t.plots.find((t=>t.id===this.id));if(!i){throw`No plot with id='${this.id}' found. Did you set this.id before this.api = getComponentApi(this)?`}return{termfilter:t.termfilter,config:i,displaySampleIds:t.termdbConfig.displaySampleIds,hasVerifiedToken:this.app.vocabApi.hasVerifiedToken()}}async main(){this.config=structuredClone(this.state.config);this.settings=this.config.settings.violin;if(this.config.chartType!=this.type&&this.config.childType!=this.type)return;if(this.dom.header)this.dom.header.html(this.config.term.term.name+` <span style="opacity:.6;font-size:1em;margin-left:10px;">Violin Plot</span>`);await this.getDescrStats();const t=this.validateArgs();this.data=await this.app.vocabApi.getViolinPlotData(t);if(this.settings.plotThickness==undefined){const t=this.data.plots.length==1?200:150;this.settings.plotThickness=Math.min(1400/this.data.plots.length,t)}if(this.data.error)throw this.data.error;this.toggleLoadingDiv(this.opts.mode=="minimal"?"none":"");setTimeout((()=>{this.render();this.renderPvalueTable()}),this.opts.mode=="minimal"?0:500);this.toggleLoadingDiv("none")}async getDescrStats(){const t=[this.config.term];if(this.config.term2)t.push(this.config.term2);if(this.config.term0)t.push(this.config.term0);for(const i of t){if(p(i.term)){const t=await this.app.vocabApi.getDescrStats(i,this.state.termfilter,this.config.settings?.violin?.unit=="log");if(t.error)throw t.error;i.q.descrStats=t.values}}}validateArgs(){const{term:t,term2:i,settings:e}=this.config;const s=this.settings;const o={filter:this.state.termfilter.filter,filter0:this.state.termfilter.filter0,svgw:s.svgw/window.devicePixelRatio,orientation:s.orientation,devicePixelRatio:window.devicePixelRatio,datasymbol:s.datasymbol,radius:s.radius,strokeWidth:s.strokeWidth,axisHeight:s.axisHeight,rightMargin:s.rightMargin,unit:s.unit,isKDE:s.method==0,ticks:s.ticks};if(this.opts.mode=="minimal"){o.tw=t;if(i)throw"only a single term allowed for minimal plot";if(t.q.mode=="spline"){s.lines=t.q.knots.map((t=>Number(t.value)))}else{s.lines=[]}if(t.q.scale){o.scale=t.q.scale}}else if(p(t.term)&&t.q.mode==="continuous"){o.tw=t;if(i)o.divideTw=i}else if(p(i?.term)&&i.q.mode==="continuous"){o.tw=i;o.divideTw=t}else{throw"both term1 and term2 are not numeric/continuous"}return o}}const h=t(m);const c=h;function g(t,i={}){const s={orientation:"horizontal",rowlabelw:250,brushRange:null,svgw:500,datasymbol:"rug",radius:3,strokeWidth:.2,axisHeight:60,rightMargin:50,lines:[],unit:"abs",plotThickness:undefined,medianLength:7,medianThickness:3,ticks:20,defaultColor:e,method:0};return Object.assign(s,i)}async function f(t,e){if(!t.term)throw"violin getPlotConfig: opts.term{} missing";try{await r(t.term,e.vocabApi);if(t.term2)await r(t.term2,e.vocabApi);if(t.term0)await r(t.term0,e.vocabApi)}catch(t){throw`${t} [violin getPlotConfig()]`}const s={id:t.term.term.id,settings:{controls:{term2:null,term0:null},violin:g()}};return i(s,t)}export{c as componentInit,g as getDefaultViolinSettings,f as getPlotConfig,h as violinInit};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as t}from"./table-10183501.js";import{c as e}from"./termsetting-c12f1c69.js";import{a as s,c as i}from"./FilterRxComp-cb149666.js";import{U as n,r as l}from"./app-488d9fd6.js";import{n as a}from"./niceNumLabels-621ef5c3.js";import"./tslib.es6-c3c2d88f.js";import"path";import"./partjson.esm-b3f1fc21.js";import"./termdb.bins-06fd21c1.js";function o(s){s.download=()=>{if(!s.state)return;s.dom.violinDiv.selectAll(".sjpp-violin-plot").each((function(){n(this,"violin",{apply_dom_styles:true})}))};s.displayLabelClickMenu=function(t,e,i,n){if(!e||s.data.plots.length===1){return}const l=t.q.mode==="continuous"?"term2":"term";const a=[{label:`Add filter: ${i.label.split(",")[0]}`,callback:d(t,e,s,i,l,false)},{label:`Hide: ${i.label}`,callback:()=>{const t=s.config[l];const e=true;s.app.dispatch({type:"plot_edit",id:s.id,config:{[l]:{isAtomic:true,term:t.term,q:r(i,t,e)}}})}}];if(s.state.displaySampleIds&&s.state.hasVerifiedToken){a.push({label:`List samples`,callback:async()=>{const[l,a]=[s.data.min,s.data.max*2];await s.listSamples(n,t,e,i,l,a)}})}s.displayMenu(n,a,i)};s.displayBrushMenu=function(t,e,s,i,n,l,a){const[o,r]=a?[l.invert(n[0]),l.invert(n[1])]:[l.invert(n[1]),l.invert(n[0])];const p=[{label:`Add filter`,callback:d(t,e,s,i,o,r,true)}];if(s.state.displaySampleIds&&s.state.hasVerifiedToken){p.push({label:`List samples`,callback:async()=>s.listSamples(event,t,e,i,o,r)})}s.displayMenu(event,p,i,o,r)};s.displayMenu=function(t,e,i,n,l){s.app.tip.d.selectAll("*").remove();s.app.tip.d.classed("sjpp-violin-brush-tip",true);const o=n!=null&&l!=null;if(o){const[t,e]=s.config.term.term.type=="integer"?[Math.round(n),Math.round(l)]:a([n,l]);s.app.tip.d.append("div").text(`From ${t} to ${e}`)}s.app.tip.d.append("div").selectAll("div").data(e).enter().append("div").attr("class","sja_menuoption").text((t=>t.label)).on("click",((t,e)=>{s.app.tip.hide();e.callback();s.dom.tableHolder.style("display","none")}));s.app.tip.show(t.clientX,t.clientY)};s.addEditColorToMenu=function(t){const e=l(t.color).formatHex();const i=s.app.tip.d.append("div").attr("class","sja_sharp_border").style("padding","0px 10px").text("Color:").append("input").attr("type","color").attr("value",e).on("change",(()=>{const e=i.node().value;const n=s.config.term2;let l;for(const s in n.term.values)if(n.term.values[s].label==t.label){n.term.values[s].color=e;l=s}if(!l)n.term.values={[t.label]:{label:t.label,color:e}};s.app.dispatch({type:"plot_edit",id:s.id,config:{term2:{isAtomic:true,term:s.config.term2.term,q:r(t,s.config.term2,false)}}});s.app.tip.hide()}))};s.listSamples=async function(t,e,i,n,l,a){const o=s.getTvsLst(e,i,n,l,a);const d=e.q?.mode==="continuous"?e:i;const r={type:"tvslst",join:"and",lst:[s.state.termfilter.filter,o],in:true};const p={terms:[d],filter:r};const c=await s.app.vocabApi.getAnnotatedSampleData(p);s.displaySampleIds(t,d,c)};s.displaySampleIds=function(i,n,l){s.app.tip.clear();if(!l?.samples)return;const a=[];for(const[t,s]of Object.entries(l.samples))a.push([{value:l.refs.bySampleId[t].label},{value:e(s[n.$id].value)}]);const o=s.app.tip.d.append("div");const d=[{label:"Sample"},{label:"Value"}];const r=a;t({rows:r,columns:d,div:o,maxWidth:"30vw",maxHeight:"25vh",resize:true,showLines:true});s.app.tip.show(i.clientX,i.clientY)};s.labelHideLegendClicking=function(t,e){s.dom.legendDiv.selectAll(".sjpp-htmlLegend").on("click",(i=>{i.stopPropagation();const n=i.target.__data__;const l=t?.term.type==="condition"||t?.term.type==="samplelst"||t?.term.type==="categorical"||(t?.term.type==="float"||t?.term.type==="integer")&&s.config.term?.q.mode==="continuous"?"term2":"term";const a=s.config[l];if(t){for(const t of Object.keys(a?.q?.hiddenValues)){if(n.text===t){delete a.q.hiddenValues[t]}}const t=false;s.app.dispatch({type:"plot_edit",id:s.id,config:{[l]:{isAtomic:true,term:a.term,q:r(e,a,t)}}})}})).on("mouseover",(t=>{const e=t.target.__data__;if(e===undefined)return;if(e.isHidden===true){s.dom.tip.d.html("Click to unhide plot");s.dom.tip.show(t.clientX,t.clientY)}})).on("mouseout",(function(){s.dom.tip.hide()}))};s.createTvsLstRanges=function(t,e,s,i,n){c(t,e);e.lst[n].tvs.ranges=[{start:t.term.type=="integer"?Math.round(s):s,stop:t.term.type=="integer"?Math.round(i):i,startinclusive:true,stopinclusive:true,startunbounded:false,stopunbounded:false}]};s.getTvsLst=function(t,e,i,n,l){const a={type:"tvslst",in:true,join:"and",lst:[]};if(e){if(t.term.type==="categorical"||t.term.type==="condition"){p(t,i,a,0);s.createTvsLstRanges(e,a,n,l,1)}else if(e.q?.mode==="continuous"||(e.term?.type==="float"||e.term?.type==="integer")&&i.divideTwBins!=null){c(e,a);a.lst[0].tvs.ranges=[{start:i.divideTwBins?.start||null,stop:i.divideTwBins?.stop||null,startinclusive:i.divideTwBins?.startinclusive||true,stopinclusive:i.divideTwBins?.stopinclusive||false,startunbounded:i.divideTwBins?.startunbounded?i.divideTwBins?.startunbounded:null,stopunbounded:i.divideTwBins?.stopunbounded?i.divideTwBins?.stopunbounded:null}];s.createTvsLstRanges(t,a,n,l,1)}else{p(e,i,a,0);s.createTvsLstRanges(t,a,n,l,1)}}else s.createTvsLstRanges(t,a,n,l,0);return a}}function d(t,e,n,l,a,o,d){const r={type:"tvslst",in:true,join:"and",lst:[]};if(e){if(t.term.type==="categorical"||t.term.type==="condition"){p(t,l,r,0);if(d){n.createTvsLstRanges(e,r,a,o,1)}}else if(e.q?.mode==="continuous"||(e.term?.type==="float"||e.term?.type==="integer")&&l.divideTwBins!=null){c(e,r);r.lst[0].tvs.ranges=[{start:l.divideTwBins?.start||null,stop:l.divideTwBins?.stop||null,startinclusive:l.divideTwBins?.startinclusive||true,stopinclusive:l.divideTwBins?.stopinclusive||false,startunbounded:l.divideTwBins?.startunbounded?l.divideTwBins?.startunbounded:null,stopunbounded:l.divideTwBins?.stopunbounded?l.divideTwBins?.stopunbounded:null}];if(d){n.createTvsLstRanges(t,r,a,o,1)}}else{p(e,l,r,0);if(d){n.createTvsLstRanges(t,r,a,o,1)}}}else{if(d){n.createTvsLstRanges(t,r,a,o,0)}}return()=>{const t=s(n.state.termfilter.filter,"filterUiRoot");const e=i([t,r]);e.tag="filterUiRoot";n.app.dispatch({type:"filter_replace",filter:e})}}function r(t,e,s=false){const i=t.label;const n=e?.term?.values?e?.term?.values?.[i]?.label:i;const l=!n?i:n;const a=e.q;if(!a.hiddenValues)a.hiddenValues={};if(s)a.hiddenValues[l]=1;else delete a.hiddenValues[l];return a}function p(t,e,s,i){c(t,s);s.lst[i].tvs.values=[{key:e.seriesId,label:e.label}];if(t.term.type==="condition"){s.lst[i].tvs.bar_by_grade=t.q.bar_by_grade;s.lst[i].tvs.value_by_max_grade=t.q.value_by_max_grade}if(t.term.type==="samplelst"){s.lst[i].tvs.values=t.term.values[e.label].list}}function c(t,e){e.lst.push({type:"tvs",tvs:{term:t.term}})}export{o as setInteractivity};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{M as t,C as e,W as n,I as a,r as s}from"./app-3d14cbe4.js";import{b as i,a as o}from"./brush-06989a5e.js";import{r as l}from"./table-be2a9975.js";import{c as r,b as c}from"./axis-747c801e.js";import{l as d}from"./line-264f8f9e.js";import{c as p}from"./basis-3870f5ba.js";import{l as m}from"./log-0ea548ec.js";import"./pointer-c7475677.js";import"./nodrag-f6c0801c.js";import"./tslib.es6-c3c2d88f.js";import"./constant-426a1483.js";function u(m){m.render=function(){const n=m.config.settings.violin;const a=n.orientation==="horizontal";const s=n.datasymbol==="bean"?n.radius*window.devicePixelRatio:n.radius;const i=m.config.term;const o=m.config.term2;const l=new t({padding:"5px"});m.dom.tip=l;const r=o?.term.type==="condition"||o?.term.type==="samplelst"||o?.term.type==="categorical"||(o?.term.type==="float"||o?.term.type==="integer")&&i.q.mode==="continuous"?o:i;if(r&&r.term?.values){for(const[t,e]of Object.entries(r.term.values)){if(e.uncomputable){if(r.q.hiddenValues[t]){r.q.hiddenValues[e.label]=1;delete r.q.hiddenValues[t]}}}}m.data.plots=m.data.plots.filter((t=>!r?.q?.hiddenValues?.[t.label||t.seriesId]));this.k2c=e(m.data.plots.length);if(m.legendRenderer)m.legendRenderer(f(r,m));if(m.data.plots.length===0){m.dom.violinDiv.html(` <span style="opacity:.6;font-size:1em;margin-left:90px;">No data to render Violin Plot</span>`);m.dom.legendDiv.selectAll("*").remove();m.dom.tableHolder.selectAll(".sjpp-tableHolder")._parents[0].remove();return}else m.dom.violinDiv.select("*").remove();m.dom.violinDiv.select(".sjpp-violin-plot").remove();const c=h(i,m,a,n);v(i,o,n,a,c,m);for(const[t,e]of m.data.plots.entries()){const r=b(c,e,t,a);if(m.opts.mode!="minimal")x(i,o,r,e,a,n,l);j(e,m,a,c,t,r,s);if(m.opts.mode!="minimal")q(i,o,r,n,e,a,c);m.labelHideLegendClicking(o,e)}};m.displaySummaryStats=function(t,e,n){let a=[];if(t.summaryStats){const e=t.summaryStats.values;a=[`<tr><td colspan=2 style='padding:3px; text-align:center'>${t.label.split(",")[0]}</td></tr>`,...e.map((({id:t,label:e,value:n})=>`<tr>\n\t\t\t\t\t<td style='padding:3px; color:#aaa'>${e}</td>\n\t\t\t\t\t<td style='padding:3px; text-align:center'>${n}</td>\n\t\t\t\t</tr>`))]}const s=`<table class='sja_simpletable'>${a.join("")}</table>`;n.show(e.clientX,e.clientY).d.html(s)};m.getPlotThickness=function(){return m.settings.plotThickness||150};m.renderPvalueTable=function(){m.dom.tableHolder.selectAll("*").remove();if(m.data.plots.length===1)return;const t=m.config.term;const e=m.config.term2;if(!e){m.dom.tableHolder.style("display","none");return}const n=e?.term.type==="condition"||e?.term.type==="samplelst"||e?.term.type==="categorical"||(e?.term.type==="float"||e?.term.type==="integer")&&t.q.mode==="continuous"?e:t;m.data.pvalues=m.data.pvalues.filter((t=>{for(let e=0;e<t.length;e++){if(typeof t[e].value==="string"){if(n.q?.hiddenValues&&t[e].value in n.q.hiddenValues){return false}}}return true}));m.dom.tableHolder.style("display","inline-block").style("vertical-align","top").append("div").style("font-weight","bold").text(m.data.pvalues.length>0?"Group comparisons (Wilcoxon's rank sum test)":"");const a=[{label:"Group 1"},{label:"Group 2"},{label:"P-value"}];const s=m.data.pvalues;const i=this.settings.orientation==="horizontal";const o=i?m.getPlotThickness()*this.data.plots.length:this.settings.svgw+this.config.term.term.name.length;l({rows:s,columns:a,div:m.dom.tableHolder,showLines:false,maxWidth:"27vw",maxHeight:`${o}px`,resize:true})};function u(t,e){let n=0;for(const a of t.data.plots){const t=e.append("text").text(`${a.label}, n=${a.plotValueCount}`);n=Math.max(n,t.node().getBBox().width);t.remove()}return n}function y(t,e,n,a){let s;if(a){s=n?{left:5,top:e.axisHeight,right:e.rightMargin,bottom:10}:{left:e.axisHeight,top:30,right:e.rightMargin,bottom:10}}else{s=n?{left:t+5,top:e.axisHeight,right:e.rightMargin,bottom:10}:{left:e.axisHeight,top:50,right:e.rightMargin,bottom:t}}return s}function h(t,e,n,a){const s=e.dom.violinDiv.append("div").style("display","inline-block").style("padding",e.opts.mode!="minimal"?"5px":"0px").style("overflow","auto").style("scrollbar-width","none");const i=s.append("svg");const o=u(e,i);const l=y(o,a,n,e.opts.mode=="minimal");const r=e.getPlotThickness();i.attr("width",l.left+l.top+(n?a.svgw:r*e.data.plots.length+t.term.name.length)).attr("height",l.bottom+l.top+(n?r*e.data.plots.length:a.svgw+t.term.name.length)).classed("sjpp-violin-plot",true).attr("data-testid","sja_violin_plot");const c=i.append("g").attr("transform","translate("+l.left+","+l.top+")");return{margin:l,svgG:c,axisScale:g(e,a,n),violinSvg:i}}function v(t,e,a,s,i,o){const l=i.svgG.append("g").style("font-size","12").classed(a.unit==="log"?"sjpp-logscale":"sjpp-linearscale",true);const d=a.unit==="log"?i.axisScale.ticks(15):i.axisScale.ticks();l.call((s?r:c)().scale(i.axisScale).tickFormat(((t,e)=>{if(a.unit==="log"){if(o.app.vocabApi.termdbConfig.logscaleBase2){if(d.length>10&&e%2!==0)return"";if(t<.1)return n(".3f")(t);return n(".1f")(t)}else{if(d.length>=12&&e%5!==0)return"";if(t<50)return t;return n(".1s")(t)}}if(d.length>=12&&e%2!==0)return"";return t})).tickValues(d));if(o.opts.mode!="minimal"){i.svgG.append("text").text(e?.q?.mode==="continuous"?e.term.name:t.term.name).classed("sjpp-numeric-term-label",true).style("font-weight",600).attr("text-anchor","middle").attr("x",s?a.svgw/2:-a.svgw/2).attr("y",s?-30:-45).style("opacity",0).attr("transform",s?null:"rotate(-90)").style("opacity",1)}}function b(t,e,n,a){const s=t.svgG.append("g").datum(e).attr("transform",a?"translate(0,"+m.getPlotThickness()*(n+.5)+")":"translate("+m.getPlotThickness()*(n+.5)+",0)").attr("class","sjpp-violinG");return s}function x(t,e,n,a,s,i,o){n.append("text").classed("sjpp-axislabel",true).text(`${a.label}, n=${a.plotValueCount}`).style("cursor","pointer").on("click",(function(n){if(!n)return;m.displayLabelClickMenu(t,e,a,n)})).on("mouseover",(function(t,e){t.stopPropagation();if(!t)return;m.displaySummaryStats(e,t,o)})).on("mouseout",(function(){o.hide()})).style("opacity",0).style("opacity",1).attr("x",s?-5:0-i.svgw-5).attr("y",0).attr("text-anchor","end").attr("dominant-baseline","central").attr("transform",s?null:"rotate(-90)")}function j(t,e,n,s,i,o,l){const r=e.getPlotThickness();const c=a().domain([t.density.densityMax,t.density.densityMin]).range([r*.45,0]);let m;if(n){m=d().curve(p).x((t=>s.axisScale(t.x0))).y((t=>c(t.density)))}else{m=d().curve(p).x((t=>c(t.density))).y((t=>s.axisScale(t.x0)))}const u=t.label?.split(",")[0];const g=e.config.term.q.mode=="discrete"?e.config.term:e.config.term2;const f=g?.term.values?Object.values(g.term.values).find((t=>t.label==u)):null;const y=f?.color?f.color:e.config.settings.violin.defaultColor;if(!t.color)t.color=y;if(f&&!f.color)f.color=y;k(o,t,m);k(o,t,n?m.y((t=>-c(t.density))):m.x((t=>-c(t.density))));S(e,o,t,n,l);if(e.opts.mode!="minimal")w(o,n,t,s,e);$(o,n,e.config.settings.violin.lines,s);if(e.state.config.value){const t=s.axisScale(e.state.config.value);const a=e.config.settings.violin;o.append("line").style("stroke","black").style("stroke-width",a.medianThickness).attr("x1",200).attr("x2",200).attr("x1",n?t:-a.medianLength).attr("x2",n?t:a.medianLength).attr("y1",n?-a.medianLength:t).attr("y2",n?a.medianLength:t)}}function k(t,e,n){if(e.density.densityMax==0)return;t.append("path").attr("class","sjpp-vp-path").style("fill",m.opts.mode==="minimal"?s(221,221,221):e.color).style("opacity",0).attr("stroke",s(e.color).darker()).attr("stroke-width",1).attr("stroke-linejoin","round").style("opacity","0.8").attr("d",n(e.density.bins))}function S(t,e,n,a,s){e.append("image").style("opacity",0).classed(t.config.settings.violin.datasymbol==="rug"?"sjpp-rug-img":"sjpp-beans-img",true).style("opacity",1).attr("xlink:href",n.src).attr("transform",a?`translate(0, -${s})`:`translate(-${s}, 0)`)}function w(t,e,n,a,s){const i=s.config.settings.violin;if(n.plotValueCount>=2){t.append("line").style("opacity",1).attr("class","sjpp-median-line").style("stroke-width",i.medianThickness).style("stroke","red").style("opacity","1").attr("y1",e?-i.medianLength:a.axisScale(n.summaryStats.values.find((t=>t.id==="median")).value)).attr("y2",e?i.medianLength:a.axisScale(n.summaryStats.values.find((t=>t.id==="median")).value)).attr("x1",e?a.axisScale(n.summaryStats.values.find((t=>t.id==="median")).value):-i.medianLength).attr("x2",e?a.axisScale(n.summaryStats.values.find((t=>t.id==="median")).value):i.medianLength)}else return}function $(t,e,n,a){const s=m.settings.plotThickness||150;t.selectAll(".sjpp-vp-line").remove();if(!n?.length)return;for(const i of n){t.append("line").attr("class","sjpp-vp-line").style("stroke",m.opts.mode=="minimal"?"red":"black").attr("y1",e?-(s/2):a.axisScale(i)).attr("y2",e?s/2:a.axisScale(i)).attr("x1",e?a.axisScale(i):-(s/2)).attr("x2",e?a.axisScale(i):s/2)}}function q(t,e,n,a,s,l,r){if(a.datasymbol==="rug"||a.datasymbol==="bean"){n.append("g").classed("sjpp-brush",true).call(l?i().extent([[0,-20],[a.svgw,20]]).on("end",(async n=>{const a=n.selection;if(!a)return;m.displayBrushMenu(t,e,m,s,a,r.axisScale,l)})):o().extent([[-20,0],[20,a.svgw]]).on("end",(async n=>{const a=n.selection;if(!a)return;m.displayBrushMenu(t,e,m,s,a,r.axisScale,l)})))}else return}m.toggleLoadingDiv=function(t=""){if(t!="none"){m.dom.loadingDiv.style("opacity",0).style("display",t).transition().duration("loadingWait"in m?m.loadingWait:1e5).style("opacity",1)}else{m.dom.loadingDiv.style("display",t)}m.loadingWait=1e3}}function g(t,e,n){let s;e.unit=="log"?s=m().base(t.app.vocabApi.termdbConfig.logscaleBase2?2:10).domain([t.data.min,t.data.max]).range(n?[0,e.svgw]:[e.svgw,0]):s=a().domain([t.data.min,t.data.max]).range(n?[0,e.svgw]:[e.svgw,0]);return s}function f(t,e){const n=[],a=e.config.term,s=e.config.term2,i="color: #aaa; font-weight: 400";y(a,n,i,e);if(s?.term.type==="float"||s?.q.mode==="continuous"||s?.term.type==="integer")y(s,n,i,e);h(a?.q.mode==="continuous"&&a?.q.hiddenValues&&Object.keys(a?.q.hiddenValues).length>0?a:s?.q.mode==="continuous"&&s?.q.hiddenValues&&Object.keys(s?.q.hiddenValues).length>0?s:null,n,i,e);if(s){if(t.q.hiddenValues&&Object.entries(t.q.hiddenValues).length!=0){v(t,n,i)}}return n}function y(t,e,n,a){if(t?.q.descrStats){const s=t.q.descrStats.map((t=>({text:`${t.label}: ${t.value}`,noIcon:true})));const i=a.config.term2?.term.type==="float"||a.config.term2?.term.type==="integer"?`Descriptive statistics: ${t.term.name}`:`Descriptive statistics`;const o=`<span style="${n}">${i}</span>`;e.push({name:o,items:s})}}function h(t,e,n,a){if(t?.term.values){const s=[];for(const e in t.term.values){if(a.data.uncomputableValueObj?.[t.term.values[e]?.label]){s.push({text:`${t.term.values[e].label}, n = ${a.data.uncomputableValueObj[t.term.values[e].label]}`,noIcon:true,isHidden:true,hiddenOpacity:1})}}if(s.length){const i=a.config.term2?.term.type==="float"||a.config.term2?.term.type==="integer"?`<span style="${n}">${t.term.name}</span>`:`<span style="${n}">Other categories</span>`;e.push({name:i,items:s})}}}function v(t,e,n){const a=[];for(const e of Object.keys(t.q.hiddenValues)){a.push({text:`${e}`,noIcon:true,isHidden:true,hiddenOpacity:1})}const s=`${t.term.name}`;const i=`<span style="${n}">${s}</span>`;e.push({name:i,items:a})}export{g as createNumericScale,u as default};
|
|
1
|
+
import{M as t,C as e,W as n,I as a,r as s}from"./app-488d9fd6.js";import{b as i,a as o}from"./brush-1a123226.js";import{r as l}from"./table-10183501.js";import{c as r,b as c}from"./axis-747c801e.js";import{l as d}from"./line-264f8f9e.js";import{c as p}from"./basis-3870f5ba.js";import{l as m}from"./log-1001ca83.js";import"./pointer-c7475677.js";import"./nodrag-b2866dd8.js";import"./tslib.es6-c3c2d88f.js";import"./constant-426a1483.js";function u(m){m.render=function(){const n=m.config.settings.violin;const a=n.orientation==="horizontal";const s=n.datasymbol==="bean"?n.radius*window.devicePixelRatio:n.radius;const i=m.config.term;const o=m.config.term2;const l=new t({padding:"5px"});m.dom.tip=l;const r=o?.term.type==="condition"||o?.term.type==="samplelst"||o?.term.type==="categorical"||(o?.term.type==="float"||o?.term.type==="integer")&&i.q.mode==="continuous"?o:i;if(r&&r.term?.values){for(const[t,e]of Object.entries(r.term.values)){if(e.uncomputable){if(r.q.hiddenValues[t]){r.q.hiddenValues[e.label]=1;delete r.q.hiddenValues[t]}}}}m.data.plots=m.data.plots.filter((t=>!r?.q?.hiddenValues?.[t.label||t.seriesId]));this.k2c=e(m.data.plots.length);if(m.legendRenderer)m.legendRenderer(f(r,m));if(m.data.plots.length===0){m.dom.violinDiv.html(` <span style="opacity:.6;font-size:1em;margin-left:90px;">No data to render Violin Plot</span>`);m.dom.legendDiv.selectAll("*").remove();m.dom.tableHolder.selectAll(".sjpp-tableHolder")._parents[0].remove();return}else m.dom.violinDiv.select("*").remove();m.dom.violinDiv.select(".sjpp-violin-plot").remove();const c=h(i,m,a,n);v(i,o,n,a,c,m);for(const[t,e]of m.data.plots.entries()){const r=b(c,e,t,a);if(m.opts.mode!="minimal")x(i,o,r,e,a,n,l);j(e,m,a,c,t,r,s);if(m.opts.mode!="minimal")q(i,o,r,n,e,a,c);m.labelHideLegendClicking(o,e)}};m.displaySummaryStats=function(t,e,n){let a=[];if(t.summaryStats){const e=t.summaryStats.values;a=[`<tr><td colspan=2 style='padding:3px; text-align:center'>${t.label.split(",")[0]}</td></tr>`,...e.map((({id:t,label:e,value:n})=>`<tr>\n\t\t\t\t\t<td style='padding:3px; color:#aaa'>${e}</td>\n\t\t\t\t\t<td style='padding:3px; text-align:center'>${n}</td>\n\t\t\t\t</tr>`))]}const s=`<table class='sja_simpletable'>${a.join("")}</table>`;n.show(e.clientX,e.clientY).d.html(s)};m.getPlotThickness=function(){return m.settings.plotThickness||150};m.renderPvalueTable=function(){m.dom.tableHolder.selectAll("*").remove();if(m.data.plots.length===1)return;const t=m.config.term;const e=m.config.term2;if(!e){m.dom.tableHolder.style("display","none");return}const n=e?.term.type==="condition"||e?.term.type==="samplelst"||e?.term.type==="categorical"||(e?.term.type==="float"||e?.term.type==="integer")&&t.q.mode==="continuous"?e:t;m.data.pvalues=m.data.pvalues.filter((t=>{for(let e=0;e<t.length;e++){if(typeof t[e].value==="string"){if(n.q?.hiddenValues&&t[e].value in n.q.hiddenValues){return false}}}return true}));m.dom.tableHolder.style("display","inline-block").style("vertical-align","top").append("div").style("font-weight","bold").text(m.data.pvalues.length>0?"Group comparisons (Wilcoxon's rank sum test)":"");const a=[{label:"Group 1"},{label:"Group 2"},{label:"P-value"}];const s=m.data.pvalues;const i=this.settings.orientation==="horizontal";const o=i?m.getPlotThickness()*this.data.plots.length:this.settings.svgw+this.config.term.term.name.length;l({rows:s,columns:a,div:m.dom.tableHolder,showLines:false,maxWidth:"27vw",maxHeight:`${o}px`,resize:true})};function u(t,e){let n=0;for(const a of t.data.plots){const t=e.append("text").text(`${a.label}, n=${a.plotValueCount}`);n=Math.max(n,t.node().getBBox().width);t.remove()}return n}function y(t,e,n,a){let s;if(a){s=n?{left:5,top:e.axisHeight,right:e.rightMargin,bottom:10}:{left:e.axisHeight,top:30,right:e.rightMargin,bottom:10}}else{s=n?{left:t+5,top:e.axisHeight,right:e.rightMargin,bottom:10}:{left:e.axisHeight,top:50,right:e.rightMargin,bottom:t}}return s}function h(t,e,n,a){const s=e.dom.violinDiv.append("div").style("display","inline-block").style("padding",e.opts.mode!="minimal"?"5px":"0px").style("overflow","auto").style("scrollbar-width","none");const i=s.append("svg");const o=u(e,i);const l=y(o,a,n,e.opts.mode=="minimal");const r=e.getPlotThickness();i.attr("width",l.left+l.top+(n?a.svgw:r*e.data.plots.length+t.term.name.length)).attr("height",l.bottom+l.top+(n?r*e.data.plots.length:a.svgw+t.term.name.length)).classed("sjpp-violin-plot",true).attr("data-testid","sja_violin_plot");const c=i.append("g").attr("transform","translate("+l.left+","+l.top+")");return{margin:l,svgG:c,axisScale:g(e,a,n),violinSvg:i}}function v(t,e,a,s,i,o){const l=i.svgG.append("g").style("font-size","12").classed(a.unit==="log"?"sjpp-logscale":"sjpp-linearscale",true);const d=a.unit==="log"?i.axisScale.ticks(15):i.axisScale.ticks();l.call((s?r:c)().scale(i.axisScale).tickFormat(((t,e)=>{if(a.unit==="log"){if(o.app.vocabApi.termdbConfig.logscaleBase2){if(d.length>10&&e%2!==0)return"";if(t<.1)return n(".3f")(t);return n(".1f")(t)}else{if(d.length>=12&&e%5!==0)return"";if(t<50)return t;return n(".1s")(t)}}if(d.length>=12&&e%2!==0)return"";return t})).tickValues(d));if(o.opts.mode!="minimal"){i.svgG.append("text").text(e?.q?.mode==="continuous"?e.term.name:t.term.name).classed("sjpp-numeric-term-label",true).style("font-weight",600).attr("text-anchor","middle").attr("x",s?a.svgw/2:-a.svgw/2).attr("y",s?-30:-45).style("opacity",0).attr("transform",s?null:"rotate(-90)").style("opacity",1)}}function b(t,e,n,a){const s=t.svgG.append("g").datum(e).attr("transform",a?"translate(0,"+m.getPlotThickness()*(n+.5)+")":"translate("+m.getPlotThickness()*(n+.5)+",0)").attr("class","sjpp-violinG");return s}function x(t,e,n,a,s,i,o){n.append("text").classed("sjpp-axislabel",true).text(`${a.label}, n=${a.plotValueCount}`).style("cursor","pointer").on("click",(function(n){if(!n)return;m.displayLabelClickMenu(t,e,a,n)})).on("mouseover",(function(t,e){t.stopPropagation();if(!t)return;m.displaySummaryStats(e,t,o)})).on("mouseout",(function(){o.hide()})).style("opacity",0).style("opacity",1).attr("x",s?-5:0-i.svgw-5).attr("y",0).attr("text-anchor","end").attr("dominant-baseline","central").attr("transform",s?null:"rotate(-90)")}function j(t,e,n,s,i,o,l){const r=e.getPlotThickness();const c=a().domain([t.density.densityMax,t.density.densityMin]).range([r*.45,0]);let m;if(n){m=d().curve(p).x((t=>s.axisScale(t.x0))).y((t=>c(t.density)))}else{m=d().curve(p).x((t=>c(t.density))).y((t=>s.axisScale(t.x0)))}const u=t.label?.split(",")[0];const g=e.config.term.q.mode=="discrete"?e.config.term:e.config.term2;const f=g?.term.values?Object.values(g.term.values).find((t=>t.label==u)):null;const y=f?.color?f.color:e.config.settings.violin.defaultColor;if(!t.color)t.color=y;if(f&&!f.color)f.color=y;k(o,t,m);k(o,t,n?m.y((t=>-c(t.density))):m.x((t=>-c(t.density))));S(e,o,t,n,l);if(e.opts.mode!="minimal")w(o,n,t,s,e);$(o,n,e.config.settings.violin.lines,s);if(e.state.config.value){const t=s.axisScale(e.state.config.value);const a=e.config.settings.violin;o.append("line").style("stroke","black").style("stroke-width",a.medianThickness).attr("x1",200).attr("x2",200).attr("x1",n?t:-a.medianLength).attr("x2",n?t:a.medianLength).attr("y1",n?-a.medianLength:t).attr("y2",n?a.medianLength:t)}}function k(t,e,n){if(e.density.densityMax==0)return;t.append("path").attr("class","sjpp-vp-path").style("fill",m.opts.mode==="minimal"?s(221,221,221):e.color).style("opacity",0).attr("stroke",s(e.color).darker()).attr("stroke-width",1).attr("stroke-linejoin","round").style("opacity","0.8").attr("d",n(e.density.bins))}function S(t,e,n,a,s){e.append("image").style("opacity",0).classed(t.config.settings.violin.datasymbol==="rug"?"sjpp-rug-img":"sjpp-beans-img",true).style("opacity",1).attr("xlink:href",n.src).attr("transform",a?`translate(0, -${s})`:`translate(-${s}, 0)`)}function w(t,e,n,a,s){const i=s.config.settings.violin;if(n.plotValueCount>=2){t.append("line").style("opacity",1).attr("class","sjpp-median-line").style("stroke-width",i.medianThickness).style("stroke","red").style("opacity","1").attr("y1",e?-i.medianLength:a.axisScale(n.summaryStats.values.find((t=>t.id==="median")).value)).attr("y2",e?i.medianLength:a.axisScale(n.summaryStats.values.find((t=>t.id==="median")).value)).attr("x1",e?a.axisScale(n.summaryStats.values.find((t=>t.id==="median")).value):-i.medianLength).attr("x2",e?a.axisScale(n.summaryStats.values.find((t=>t.id==="median")).value):i.medianLength)}else return}function $(t,e,n,a){const s=m.settings.plotThickness||150;t.selectAll(".sjpp-vp-line").remove();if(!n?.length)return;for(const i of n){t.append("line").attr("class","sjpp-vp-line").style("stroke",m.opts.mode=="minimal"?"red":"black").attr("y1",e?-(s/2):a.axisScale(i)).attr("y2",e?s/2:a.axisScale(i)).attr("x1",e?a.axisScale(i):-(s/2)).attr("x2",e?a.axisScale(i):s/2)}}function q(t,e,n,a,s,l,r){if(a.datasymbol==="rug"||a.datasymbol==="bean"){n.append("g").classed("sjpp-brush",true).call(l?i().extent([[0,-20],[a.svgw,20]]).on("end",(async n=>{const a=n.selection;if(!a)return;m.displayBrushMenu(t,e,m,s,a,r.axisScale,l)})):o().extent([[-20,0],[20,a.svgw]]).on("end",(async n=>{const a=n.selection;if(!a)return;m.displayBrushMenu(t,e,m,s,a,r.axisScale,l)})))}else return}m.toggleLoadingDiv=function(t=""){if(t!="none"){m.dom.loadingDiv.style("opacity",0).style("display",t).transition().duration("loadingWait"in m?m.loadingWait:1e5).style("opacity",1)}else{m.dom.loadingDiv.style("display",t)}m.loadingWait=1e3}}function g(t,e,n){let s;e.unit=="log"?s=m().base(t.app.vocabApi.termdbConfig.logscaleBase2?2:10).domain([t.data.min,t.data.max]).range(n?[0,e.svgw]:[e.svgw,0]):s=a().domain([t.data.min,t.data.max]).range(n?[0,e.svgw]:[e.svgw,0]);return s}function f(t,e){const n=[],a=e.config.term,s=e.config.term2,i="color: #aaa; font-weight: 400";y(a,n,i,e);if(s?.term.type==="float"||s?.q.mode==="continuous"||s?.term.type==="integer")y(s,n,i,e);h(a?.q.mode==="continuous"&&a?.q.hiddenValues&&Object.keys(a?.q.hiddenValues).length>0?a:s?.q.mode==="continuous"&&s?.q.hiddenValues&&Object.keys(s?.q.hiddenValues).length>0?s:null,n,i,e);if(s){if(t.q.hiddenValues&&Object.entries(t.q.hiddenValues).length!=0){v(t,n,i)}}return n}function y(t,e,n,a){if(t?.q.descrStats){const s=t.q.descrStats.map((t=>({text:`${t.label}: ${t.value}`,noIcon:true})));const i=a.config.term2?.term.type==="float"||a.config.term2?.term.type==="integer"?`Descriptive statistics: ${t.term.name}`:`Descriptive statistics`;const o=`<span style="${n}">${i}</span>`;e.push({name:o,items:s})}}function h(t,e,n,a){if(t?.term.values){const s=[];for(const e in t.term.values){if(a.data.uncomputableValueObj?.[t.term.values[e]?.label]){s.push({text:`${t.term.values[e].label}, n = ${a.data.uncomputableValueObj[t.term.values[e].label]}`,noIcon:true,isHidden:true,hiddenOpacity:1})}}if(s.length){const i=a.config.term2?.term.type==="float"||a.config.term2?.term.type==="integer"?`<span style="${n}">${t.term.name}</span>`:`<span style="${n}">Other categories</span>`;e.push({name:i,items:s})}}}function v(t,e,n){const a=[];for(const e of Object.keys(t.q.hiddenValues)){a.push({text:`${e}`,noIcon:true,isHidden:true,hiddenOpacity:1})}const s=`${t.term.name}`;const i=`<span style="${n}">${s}</span>`;e.push({name:i,items:a})}export{g as createNumericScale,u as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{b as t}from"./brush-
|
|
1
|
+
import{b as t}from"./brush-1a123226.js";import{I as s,r as i}from"./app-488d9fd6.js";import{c as a}from"./axis-747c801e.js";import{l as e}from"./line-264f8f9e.js";import{c as h}from"./basis-3870f5ba.js";class r{constructor(t,i,a=500,e=100,h=20,r=20,l=null,n=1){this.holder=t;this.plot=i;this.width=a;this.height=e;this.callback=l;this.shiftx=h;this.shifty=r;this.svg=t.append("svg").attr("width",`${a+50}px`).attr("height",`${e+50}px`);this.axisScale=s().domain([i.minvalue,i.maxvalue]).range([0,a]);this.axisScaleUI=s().domain([i.minvalue*n,i.maxvalue*n]).range([0,a]);this.wScale=s().domain([i.densityMax,i.densityMin]).range([e*.45,0])}render(){this.svg.selectAll("*").remove();this.violinG=this.svg.append("g").attr("transform",`translate(${this.shiftx}, ${this.height/2+this.shifty})`);this.scaleG=this.svg.append("g").attr("transform",`translate(${this.shiftx}, ${this.shifty})`);this.scaleG.call(a(this.axisScaleUI).tickValues(this.axisScaleUI.ticks()));this.renderArea(false);this.renderArea(true);if(this.plot.valuesImg)this.violinG.append("image").classed("sjpp-beans-img",true).attr("xlink:href",this.plot.valuesImg).attr("transform",`translate(0, -${this.plot.radius||3})`);if(this.callback)this.svg.append("g").call(t().extent([[this.shiftx,this.shifty],[this.width+this.shiftx,this.height+this.shifty]]).on("end",(async t=>{const s=t.selection;if(!s)return;const i=this.axisScale.invert(s[0]-this.shiftx);const a=this.axisScale.invert(s[1]-this.shiftx);this.callback({range_start:i,range_end:a})})))}renderArea(t){if(this.plot.densityMax==0)return;const s=e().curve(h).x((t=>this.axisScale(t.x0))).y((s=>t?-this.wScale(s.density):this.wScale(s.density)));this.violinG.append("path").style("fill",this.plot.color||i(221,221,221)).style("opacity",0).attr("stroke",i(this.plot.color).darker()).attr("stroke-width",1).attr("stroke-linejoin","round").style("opacity","0.8").attr("d",s(this.plot.density))}}export{r as v};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{by as f}from"./app-
|
|
1
|
+
import{by as f}from"./app-488d9fd6.js";function e(f){var e=f.length;return function(a){return f[Math.max(0,Math.min(e-1,Math.floor(a*e)))]}}e(f("44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725"));e(f("00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf"));e(f("00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4"));var a=e(f("0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921"));export{a as p};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{bB as n,_ as t}from"./app-
|
|
1
|
+
import{bB as n,_ as t}from"./app-488d9fd6.js";function r(n){return function(){return n}}function e(n){return(n()-.5)*1e-6}const i=1664525;const f=1013904223;const u=4294967296;function o(){let n=1;return()=>(n=(i*n+f)%u)/u}var a=10,c=Math.PI*(3-Math.sqrt(5));function l(r){var e,i=1,f=.001,u=1-Math.pow(f,1/300),l=0,h=.6,s=new Map,y=n(p),g=t("tick","end"),v=o();if(r==null)r=[];function p(){x();g.call("tick",e);if(i<f){y.stop();g.call("end",e)}}function x(n){var t,f=r.length,o;if(n===undefined)n=1;for(var a=0;a<n;++a){i+=(l-i)*u;s.forEach((function(n){n(i)}));for(t=0;t<f;++t){o=r[t];if(o.fx==null)o.x+=o.vx*=h;else o.x=o.fx,o.vx=0;if(o.fy==null)o.y+=o.vy*=h;else o.y=o.fy,o.vy=0}}return e}function N(){for(var n=0,t=r.length,e;n<t;++n){e=r[n],e.index=n;if(e.fx!=null)e.x=e.fx;if(e.fy!=null)e.y=e.fy;if(isNaN(e.x)||isNaN(e.y)){var i=a*Math.sqrt(.5+n),f=n*c;e.x=i*Math.cos(f);e.y=i*Math.sin(f)}if(isNaN(e.vx)||isNaN(e.vy)){e.vx=e.vy=0}}}function d(n){if(n.initialize)n.initialize(r,v);return n}N();return e={tick:x,restart:function(){return y.restart(p),e},stop:function(){return y.stop(),e},nodes:function(n){return arguments.length?(r=n,N(),s.forEach(d),e):r},alpha:function(n){return arguments.length?(i=+n,e):i},alphaMin:function(n){return arguments.length?(f=+n,e):f},alphaDecay:function(n){return arguments.length?(u=+n,e):+u},alphaTarget:function(n){return arguments.length?(l=+n,e):l},velocityDecay:function(n){return arguments.length?(h=1-n,e):1-h},randomSource:function(n){return arguments.length?(v=n,s.forEach(d),e):v},force:function(n,t){return arguments.length>1?(t==null?s.delete(n):s.set(n,d(t)),e):s.get(n)},find:function(n,t,e){var i=0,f=r.length,u,o,a,c,l;if(e==null)e=Infinity;else e*=e;for(i=0;i<f;++i){c=r[i];u=n-c.x;o=t-c.y;a=u*u+o*o;if(a<e)l=c,e=a}return l},on:function(n,t){return arguments.length>1?(g.on(n,t),e):g.on(n)}}}function h(n){var t=r(.1),e,i,f;if(typeof n!=="function")n=r(n==null?0:+n);function u(n){for(var t=0,r=e.length,u;t<r;++t){u=e[t],u.vx+=(f[t]-u.x)*i[t]*n}}function o(){if(!e)return;var r,u=e.length;i=new Array(u);f=new Array(u);for(r=0;r<u;++r){i[r]=isNaN(f[r]=+n(e[r],r,e))?0:+t(e[r],r,e)}}u.initialize=function(n){e=n;o()};u.strength=function(n){return arguments.length?(t=typeof n==="function"?n:r(+n),o(),u):t};u.x=function(t){return arguments.length?(n=typeof t==="function"?t:r(+t),o(),u):n};return u}function s(n){var t=r(.1),e,i,f;if(typeof n!=="function")n=r(n==null?0:+n);function u(n){for(var t=0,r=e.length,u;t<r;++t){u=e[t],u.vy+=(f[t]-u.y)*i[t]*n}}function o(){if(!e)return;var r,u=e.length;i=new Array(u);f=new Array(u);for(r=0;r<u;++r){i[r]=isNaN(f[r]=+n(e[r],r,e))?0:+t(e[r],r,e)}}u.initialize=function(n){e=n;o()};u.strength=function(n){return arguments.length?(t=typeof n==="function"?n:r(+n),o(),u):t};u.y=function(t){return arguments.length?(n=typeof t==="function"?t:r(+t),o(),u):n};return u}export{r as c,e as j,l as s,h as x,s as y};
|