@sjcrh/proteinpaint-client 2.63.0 → 2.63.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (207) hide show
  1. package/README.md +9 -7
  2. package/dist/{2dmaf-70c0b6bb.js → 2dmaf-0cabb4a4.js} +1 -1
  3. package/dist/{ColorScale-b44d51ef.js → ColorScale-9800a609.js} +1 -1
  4. package/dist/{DEanalysis-b86d0874.js → DEanalysis-567989ff.js} +1 -1
  5. package/dist/{Disco-16cd51c0.js → Disco-5d1404ce.js} +1 -1
  6. package/dist/{Disco.UI-a38a12e6.js → Disco.UI-54228bb6.js} +1 -1
  7. package/dist/{DragControls-0c173a20.js → DragControls-a05737c2.js} +1 -1
  8. package/dist/{DziViewer-5c2d68e7.js → DziViewer-3f466d90.js} +2 -2
  9. package/dist/{FilterRxComp-0e75dd8d.js → FilterRxComp-fc769f34.js} +1 -1
  10. package/dist/{FilterStateless-ad3df967.js → FilterStateless-8f30f856.js} +1 -1
  11. package/dist/{HicApp-bcf8330c.js → HicApp-aac413df.js} +1 -1
  12. package/dist/{OrbitControls-c33cf781.js → OrbitControls-8b7f91ca.js} +1 -1
  13. package/dist/app-59194db0.js +1 -0
  14. package/dist/{app-f91922b4.js → app-71453429.js} +1 -1
  15. package/dist/{app-bfce9bf5.js → app-fb676934.js} +1 -1
  16. package/dist/app.js +1 -1
  17. package/dist/{bam-95f36008.js → bam-e7f6baea.js} +1 -1
  18. package/dist/{barchart-e2af00a8.js → barchart-ef4874c8.js} +1 -1
  19. package/dist/{barchart.events-272fd122.js → barchart.events-e24facf7.js} +1 -1
  20. package/dist/{bars.renderer-f0e5af5a.js → bars.renderer-c46d3f44.js} +1 -1
  21. package/dist/{block-ec76524e.js → block-4f585abe.js} +1 -1
  22. package/dist/block.lazyload-6f83d057.js +1 -0
  23. package/dist/{block.legend-f8cad7e4.js → block.legend-cec87c6f.js} +1 -1
  24. package/dist/{block.mds-20655637.js → block.mds-f5a11c42.js} +1 -1
  25. package/dist/{block.mds.cnv-5feb86a0.js → block.mds.cnv-25423c1e.js} +1 -1
  26. package/dist/{block.mds.expressionrank-c7043f35.js → block.mds.expressionrank-fc1996d5.js} +1 -1
  27. package/dist/{block.mds.expressionstat-4bf457f3.js → block.mds.expressionstat-45b6bf47.js} +1 -1
  28. package/dist/{block.mds.geneboxplot-132e5fe6.js → block.mds.geneboxplot-037df46d.js} +1 -1
  29. package/dist/{block.mds.junction-1f9810df.js → block.mds.junction-00161de6.js} +1 -1
  30. package/dist/{block.mds.svcnv-094c416f.js → block.mds.svcnv-0c257af4.js} +1 -1
  31. package/dist/{block.mds.svcnv.share-bb976e02.js → block.mds.svcnv.share-c0b9dfad.js} +1 -1
  32. package/dist/{block.mds2-7045e32c.js → block.mds2-9009f8d8.js} +1 -1
  33. package/dist/{block.svg-d8d76ba7.js → block.svg-86bbfcb0.js} +1 -1
  34. package/dist/{block.tk.aicheck-317d04bd.js → block.tk.aicheck-a5697794.js} +1 -1
  35. package/dist/{block.tk.ase-d1577ec1.js → block.tk.ase-ad1be47c.js} +1 -1
  36. package/dist/{block.tk.bam-3cdc13a0.js → block.tk.bam-14339d16.js} +1 -1
  37. package/dist/{block.tk.bedgraphdot-5304e06c.js → block.tk.bedgraphdot-efe19e56.js} +1 -1
  38. package/dist/{block.tk.bigwig.ui-0c96dce5.js → block.tk.bigwig.ui-a92f286b.js} +1 -1
  39. package/dist/{block.tk.hicstraw-39d89269.js → block.tk.hicstraw-57fbbe61.js} +1 -1
  40. package/dist/{block.tk.junction-b45b3a95.js → block.tk.junction-64c39cd5.js} +1 -1
  41. package/dist/{block.tk.junction.textmatrixui-6ec019e1.js → block.tk.junction.textmatrixui-09e5e02f.js} +1 -1
  42. package/dist/{block.tk.ld-5c54e58b.js → block.tk.ld-f681d099.js} +1 -1
  43. package/dist/{block.tk.menu-30a2c3a5.js → block.tk.menu-2563364c.js} +1 -1
  44. package/dist/{block.tk.pgv-7ff2dfaf.js → block.tk.pgv-9dfc00c0.js} +1 -1
  45. package/dist/{boxplot-7de25274.js → boxplot-a2e1ace0.js} +1 -1
  46. package/dist/brainImaging-21701238.js +1 -0
  47. package/dist/{brush-db0ed33a.js → brush-bb4566a3.js} +1 -1
  48. package/dist/{categorical-bc309399.js → categorical-a00f4ffc.js} +1 -1
  49. package/dist/{condition-f0eb2343.js → condition-2034db37.js} +1 -1
  50. package/dist/{controls-8d4972c8.js → controls-0467d2ec.js} +1 -1
  51. package/dist/{controls.btns-bad9e4cf.js → controls.btns-ad7b28a2.js} +1 -1
  52. package/dist/{controls.config-e0f394cb.js → controls.config-6cf816fb.js} +1 -1
  53. package/dist/{controls.divide-d8ac5a9b.js → controls.divide-3c0d52d7.js} +1 -1
  54. package/dist/{controls.overlay-3ac8773d.js → controls.overlay-3a55c2ec.js} +1 -1
  55. package/dist/{controls.term1-008f4be4.js → controls.term1-59f4cd60.js} +1 -1
  56. package/dist/cuminc-8d21132b.js +1 -0
  57. package/dist/{customdata.inputui-58cd9b32.js → customdata.inputui-40ba6d7f.js} +1 -1
  58. package/dist/{dataDownload-91da6dd6.js → dataDownload-bfa92dad.js} +1 -1
  59. package/dist/{databrowser.ui-c50862e4.js → databrowser.ui-4799f04d.js} +1 -1
  60. package/dist/{density-7c3f91eb.js → density-4c2b53f6.js} +1 -1
  61. package/dist/{dictionary-48a38837.js → dictionary-89e860ee.js} +1 -1
  62. package/dist/{drag-c354e2c6.js → drag-88d451b4.js} +1 -1
  63. package/dist/{e2pca-3bba91fa.js → e2pca-8a3f2566.js} +1 -1
  64. package/dist/{ep-144d8973.js → ep-5399c5cc.js} +1 -1
  65. package/dist/{fusion.parse-ae1253f4.js → fusion.parse-fc25e5bd.js} +1 -1
  66. package/dist/{geneExpClustering-96d09008.js → geneExpClustering-a916ebda.js} +1 -1
  67. package/dist/{geneExpression-d6494fd3.js → geneExpression-501e95c0.js} +1 -1
  68. package/dist/{geneExpression-9ca2da4f.js → geneExpression-9047481a.js} +1 -1
  69. package/dist/{geneExpression-be9b5da2.js → geneExpression-da4b50f0.js} +1 -1
  70. package/dist/{geneORA-85850143.js → geneORA-ffb2497e.js} +1 -1
  71. package/dist/{geneVariant-3df05e0c.js → geneVariant-7ab521d6.js} +1 -1
  72. package/dist/{geneVariant-3d674865.js → geneVariant-d79431a2.js} +1 -1
  73. package/dist/{genefusion.ui-3e2a3a73.js → genefusion.ui-3ce190c7.js} +1 -1
  74. package/dist/{geneset-3b761b2c.js → geneset-3522bcda.js} +1 -1
  75. package/dist/{genomeBrowser-2105a98f.js → genomeBrowser-9b72eb22.js} +1 -1
  76. package/dist/{genomeBrowser.controls-f9b9bf42.js → genomeBrowser.controls-bef8bf99.js} +1 -1
  77. package/dist/{groupsetting-4901d033.js → groupsetting-574ad150.js} +1 -1
  78. package/dist/{hierCluster-a7ff7f5a.js → hierCluster-3b14b2b3.js} +1 -1
  79. package/dist/{hierCluster.config-3d124abf.js → hierCluster.config-f8686a30.js} +1 -1
  80. package/dist/{hierCluster.interactivity-3463cc0b.js → hierCluster.interactivity-3b5f1e81.js} +1 -1
  81. package/dist/{hierCluster.renderers-668d0075.js → hierCluster.renderers-9f9a7cad.js} +1 -1
  82. package/dist/{html.legend-3e428f9e.js → html.legend-ef8066dd.js} +1 -1
  83. package/dist/{imagePlot-6d89200c.js → imagePlot-095b9a92.js} +1 -1
  84. package/dist/{lasso-393c1570.js → lasso-ef63631b.js} +1 -1
  85. package/dist/{launch.adhoc-9c59874e.js → launch.adhoc-1b356f97.js} +1 -1
  86. package/dist/{legacyDataset-26ead9cc.js → legacyDataset-056e9d4c.js} +1 -1
  87. package/dist/{log-4d74231e.js → log-ca1e2a74.js} +1 -1
  88. package/dist/{lollipop-59f65024.js → lollipop-6ad9ec3c.js} +1 -1
  89. package/dist/{maf-72e5b7da.js → maf-dfada1c8.js} +1 -1
  90. package/dist/{maftimeline-ed8aaae8.js → maftimeline-1b715a01.js} +1 -1
  91. package/dist/{matrix-3d09a31f.js → matrix-3fae58f8.js} +1 -1
  92. package/dist/matrix.cells-3620eb3a.js +1 -0
  93. package/dist/{matrix.cluster-acdfc6a7.js → matrix.cluster-15b8a865.js} +1 -1
  94. package/dist/{matrix.config-cd01ebbd.js → matrix.config-8247bea5.js} +1 -1
  95. package/dist/{matrix.controls-86eb8d5c.js → matrix.controls-dea65894.js} +1 -1
  96. package/dist/{matrix.data-e2d7ac16.js → matrix.data-121a1a8c.js} +1 -1
  97. package/dist/{matrix.dom-e5f91cc0.js → matrix.dom-83c5fa39.js} +1 -1
  98. package/dist/{matrix.groups-f1969b5c.js → matrix.groups-2e1202ef.js} +1 -1
  99. package/dist/{matrix.interactivity-92bc8332.js → matrix.interactivity-2b076155.js} +1 -1
  100. package/dist/{matrix.layout-29a8f334.js → matrix.layout-8dc54c05.js} +1 -1
  101. package/dist/{matrix.legend-8c28039e.js → matrix.legend-e0078739.js} +1 -1
  102. package/dist/matrix.renderers-0c8eddc9.js +1 -0
  103. package/dist/{matrix.serieses-e079f04a.js → matrix.serieses-2898da6b.js} +1 -1
  104. package/dist/{matrix.sort-e1f83454.js → matrix.sort-249d4a35.js} +1 -1
  105. package/dist/{matrix.sorterUi-2025f39d.js → matrix.sorterUi-d26208c8.js} +1 -1
  106. package/dist/{mavb-37fffd68.js → mavb-9a6fa2e9.js} +1 -1
  107. package/dist/{mds.fimo-68f0eaf5.js → mds.fimo-ce97371c.js} +1 -1
  108. package/dist/{mds.samplescatterplot-362f3591.js → mds.samplescatterplot-a54b9e93.js} +1 -1
  109. package/dist/{mds.survivalplot-f5bda05a.js → mds.survivalplot-c5093f73.js} +1 -1
  110. package/dist/{mdsjsonform-7f0b6cc7.js → mdsjsonform-09b4e1cb.js} +1 -1
  111. package/dist/metaboliteIntensity-eeb5ad12.js +1 -0
  112. package/dist/niceNumLabels-ddb76164.js +1 -0
  113. package/dist/{nodrag-777a34a5.js → nodrag-bed2488c.js} +1 -1
  114. package/dist/{numeric-2eb8c25b.js → numeric-d5536b1c.js} +1 -1
  115. package/dist/numeric.binary-d67da945.js +1 -0
  116. package/dist/numeric.continuous-9a0c88bc.js +1 -0
  117. package/dist/numeric.discrete-921f7097.js +1 -0
  118. package/dist/numeric.spline-649308d5.js +1 -0
  119. package/dist/{numeric.toggle-5316211b.js → numeric.toggle-52789fd2.js} +1 -1
  120. package/dist/{oncomatrix-cd9fa01b.js → oncomatrix-6950c48c.js} +1 -1
  121. package/dist/{parseData-1bfa9946.js → parseData-480d1ff3.js} +1 -1
  122. package/dist/{plot.2dvaf-1ed153c1.js → plot.2dvaf-1ecc4bbc.js} +1 -1
  123. package/dist/plot.app-c841507a.js +1 -0
  124. package/dist/{plot.barplot-61742e94.js → plot.barplot-24140b0f.js} +1 -1
  125. package/dist/{plot.boxplot-fe966ac3.js → plot.boxplot-87fe8ab2.js} +1 -1
  126. package/dist/{plot.brainImaging-d2c23bb7.js → plot.brainImaging-325ebded.js} +1 -1
  127. package/dist/{plot.disco-70d493f4.js → plot.disco-621d1b8e.js} +1 -1
  128. package/dist/{plot.dzi-14e6fdc4.js → plot.dzi-3a7e478e.js} +1 -1
  129. package/dist/{plot.ssgq-9d364d41.js → plot.ssgq-1949c207.js} +1 -1
  130. package/dist/{plot.vaf2cov-4d28015b.js → plot.vaf2cov-d03c6409.js} +1 -1
  131. package/dist/{profileBarchart-c104f8e2.js → profileBarchart-11755d7c.js} +1 -1
  132. package/dist/{profileHome-a555583d.js → profileHome-9c5e266b.js} +1 -1
  133. package/dist/{profilePlot-5ce5b6a0.js → profilePlot-8ee3034a.js} +1 -1
  134. package/dist/{profilePolar-610213d4.js → profilePolar-9fe70c32.js} +1 -1
  135. package/dist/{profileRadar-fddb18f7.js → profileRadar-0e744181.js} +1 -1
  136. package/dist/{profileRadarFacility-2c2db1dd.js → profileRadarFacility-102544c5.js} +1 -1
  137. package/dist/{recover-a08c8d01.js → recover-b1ec4fed.js} +1 -1
  138. package/dist/{regression.inputs-5718cf72.js → regression.inputs-ad548745.js} +1 -1
  139. package/dist/{regression.inputs.values.table-d587c1cf.js → regression.inputs.values.table-1618447a.js} +1 -1
  140. package/dist/{regression.results-748024be.js → regression.results-25008028.js} +1 -1
  141. package/dist/{renderPvalueTable-c435aefd.js → renderPvalueTable-46056189.js} +1 -1
  142. package/dist/sampleScatter-47dd82cb.js +1 -0
  143. package/dist/{sampleScatter.interactivity-e9c30652.js → sampleScatter.interactivity-cfa3451d.js} +1 -1
  144. package/dist/{sampleScatter.rendererThree-3e6c032e.js → sampleScatter.rendererThree-c5321d24.js} +2 -2
  145. package/dist/{sampleView-d6a91293.js → sampleView-30b97c7d.js} +1 -1
  146. package/dist/{samplelst-821ec148.js → samplelst-2bdc1b9d.js} +1 -1
  147. package/dist/{samplematrix-7aa0a780.js → samplematrix-4f0ec523.js} +1 -1
  148. package/dist/{scatter-2e2c76f4.js → scatter-8a337eeb.js} +1 -1
  149. package/dist/{selectGenomeWithTklst-51cd21a4.js → selectGenomeWithTklst-895106fb.js} +1 -1
  150. package/dist/{singleCellPlot-c7347a27.js → singleCellPlot-360eaec6.js} +1 -1
  151. package/dist/{singlecell-a668bb17.js → singlecell-29c1cbb1.js} +1 -1
  152. package/dist/{singlecell-7c851ef8.js → singlecell-75f8af89.js} +1 -1
  153. package/dist/{snplocus-fe6f4ba1.js → snplocus-0cafa73c.js} +1 -1
  154. package/dist/{snplst-751cea95.js → snplst-2284d5ce.js} +1 -1
  155. package/dist/{spliceevent.a53ss.diagram-b157f95d.js → spliceevent.a53ss.diagram-44ccabf9.js} +1 -1
  156. package/dist/{spliceevent.exonskip.diagram-071a3467.js → spliceevent.exonskip.diagram-c8d1bdf0.js} +1 -1
  157. package/dist/spliceevent.exonskip.getdefault-9fe16119.js +1 -0
  158. package/dist/{spliceevent.noeventdiagram-1c731f35.js → spliceevent.noeventdiagram-5e244090.js} +1 -1
  159. package/dist/{spliceevent.phrase-7a3bfb00.js → spliceevent.phrase-186eb050.js} +1 -1
  160. package/dist/{stattable-a7713026.js → stattable-886f7dad.js} +1 -1
  161. package/dist/{style.gdc-40ec2784.js → style.gdc-4ac9b96b.js} +1 -1
  162. package/dist/{summary-592d8f81.js → summary-ee2045a5.js} +1 -1
  163. package/dist/{sunburst-452df940.js → sunburst-bbff8818.js} +1 -1
  164. package/dist/survival-04e279f8.js +1 -0
  165. package/dist/{survival-450b6df4.js → survival-d7bd3c6b.js} +1 -1
  166. package/dist/{svg.download-56529955.js → svg.download-54c99186.js} +1 -1
  167. package/dist/{svg.legend-c82b153f.js → svg.legend-28652faa.js} +1 -1
  168. package/dist/{svgraph-3c5cd8d2.js → svgraph-a12d89da.js} +1 -1
  169. package/dist/{svmr-3dd531ef.js → svmr-248055c8.js} +1 -1
  170. package/dist/{table-d6c411fd.js → table-1dae543a.js} +1 -1
  171. package/dist/{table-bf604c50.js → table-b4a61573.js} +1 -1
  172. package/dist/{termInfo-96285f4a.js → termInfo-4c759483.js} +1 -1
  173. package/dist/{termsetting-9a7511e6.js → termsetting-636d2271.js} +1 -1
  174. package/dist/{tk-6a8e5bb0.js → tk-741d4674.js} +1 -1
  175. package/dist/{tp.ui-221efed6.js → tp.ui-23151bb1.js} +1 -1
  176. package/dist/{tvs.density-9fdae0cc.js → tvs.density-9fe0c7fd.js} +1 -1
  177. package/dist/{tvs.geneVariant-149e25b7.js → tvs.geneVariant-1b179327.js} +1 -1
  178. package/dist/tvs.numeric-b4cfc975.js +1 -0
  179. package/dist/{tvs.samplelst-a38e9c2b.js → tvs.samplelst-681358bc.js} +1 -1
  180. package/dist/{uiUtils-a6de7f14.js → uiUtils-74700a01.js} +1 -1
  181. package/dist/{variantBrowser-05375469.js → variantBrowser-910b4bcd.js} +1 -1
  182. package/dist/{vcf-58904308.js → vcf-16ba1e06.js} +1 -1
  183. package/dist/{violin-c1b78717.js → violin-a41b2e2b.js} +1 -1
  184. package/dist/{violin.interactivity-534d6993.js → violin.interactivity-bcf0ccc2.js} +1 -1
  185. package/dist/{violin.renderer-16540fb8.js → violin.renderer-149310eb.js} +1 -1
  186. package/dist/{violinRenderer-688abcb2.js → violinRenderer-71c9f3ab.js} +1 -1
  187. package/dist/{viridis-d3cf2713.js → viridis-81de7bcd.js} +1 -1
  188. package/dist/{y-2d48b9e4.js → y-76c7da8c.js} +1 -1
  189. package/dist/{zoom-2d4ede33.js → zoom-a40839cf.js} +1 -1
  190. package/package.json +7 -7
  191. package/dist/app-de19f41c.js +0 -1
  192. package/dist/block.lazyload-ebd949e4.js +0 -1
  193. package/dist/brainImaging-007edaa3.js +0 -1
  194. package/dist/cuminc-72257faf.js +0 -1
  195. package/dist/matrix.cells-a5157233.js +0 -1
  196. package/dist/matrix.renderers-3b8dfd04.js +0 -1
  197. package/dist/metaboliteIntensity-512257f3.js +0 -1
  198. package/dist/niceNumLabels-8fdc6507.js +0 -1
  199. package/dist/numeric.binary-0a3b17d2.js +0 -1
  200. package/dist/numeric.continuous-f77038de.js +0 -1
  201. package/dist/numeric.discrete-b977e88f.js +0 -1
  202. package/dist/numeric.spline-d64b1abe.js +0 -1
  203. package/dist/plot.app-91a1d78d.js +0 -1
  204. package/dist/sampleScatter-031f47de.js +0 -1
  205. package/dist/spliceevent.exonskip.getdefault-93feb627.js +0 -1
  206. package/dist/survival-6a4c4f12.js +0 -1
  207. package/dist/tvs.numeric-f9ce58bc.js +0 -1
@@ -1 +1 @@
1
- import{am as e,b2 as t,bv as n,bw as o,bx as a,a_ as s,by as i,o as r,c as l,M as c,p,l as d,bz as u,bA as g,a0 as m,h as y,g as x,d as f}from"./app-f91922b4.js";import{l as h}from"./block.legend-f8cad7e4.js";import{s as _}from"./legacy-d3-polyfill-bdb2d792.js";import{c as b,d as v,b as k}from"./axis-6cb4f314.js";import{p as w}from"./viridis-d3cf2713.js";import{l as z}from"./line-264f8f9e.js";import{a as E}from"./area-f56e50f9.js";import{p as j}from"./pointer-c7475677.js";import"./vcf-58904308.js";import"./partition-db811f6b.js";import"./arc-3d6751aa.js";import"./constant-426a1483.js";import"./math-2fb199c6.js";function M(e,t,n){e=+e,t=+t,n=(a=arguments.length)<2?(t=e,e=0,1):a<3?1:+n;var o=-1,a=Math.max(0,Math.ceil((t-e)/n))|0,s=new Array(a);while(++o<a){s[o]=e+o*n}return s}function C(){var n=e().unknown(undefined),o=n.domain,a=n.range,s=0,i=1,r,l,c=false,p=0,d=0,u=.5;delete n.unknown;function g(){var e=o().length,t=i<s,n=t?i:s,g=t?s:i;r=(g-n)/Math.max(1,e-p+d*2);if(c)r=Math.floor(r);n+=(g-n-r*(e-p))*u;l=r*(1-p);if(c)n=Math.round(n),l=Math.round(l);var m=M(e).map((function(e){return n+r*e}));return a(t?m.reverse():m)}n.domain=function(e){return arguments.length?(o(e),g()):o()};n.range=function(e){return arguments.length?([s,i]=e,s=+s,i=+i,g()):[s,i]};n.rangeRound=function(e){return[s,i]=e,s=+s,i=+i,c=true,g()};n.bandwidth=function(){return l};n.step=function(){return r};n.round=function(e){return arguments.length?(c=!!e,g()):c};n.padding=function(e){return arguments.length?(p=Math.min(1,d=+e),g()):p};n.paddingInner=function(e){return arguments.length?(p=Math.min(1,e),g()):p};n.paddingOuter=function(e){return arguments.length?(d=+e,g()):d};n.align=function(e){return arguments.length?(u=Math.max(0,Math.min(1,e)),g()):u};n.copy=function(){return C(o(),[s,i]).round(c).paddingInner(p).paddingOuter(d).align(u)};return t.apply(g(),arguments)}function I(){var e=0,t=1,n,a,r,l,c=o,p=false,d;function u(e){return e==null||isNaN(e=+e)?d:c(r===0?.5:(e=(l(e)-n)*r,p?Math.max(0,Math.min(1,e)):e))}u.domain=function(o){return arguments.length?([e,t]=o,n=l(e=+e),a=l(t=+t),r=n===a?0:1/(a-n),u):[e,t]};u.clamp=function(e){return arguments.length?(p=!!e,u):p};u.interpolator=function(e){return arguments.length?(c=e,u):c};function g(e){return function(t){var n,o;return arguments.length?([n,o]=t,c=e(n,o),u):[c(0),c(1)]}}u.range=g(s);u.rangeRound=g(i);u.unknown=function(e){return arguments.length?(d=e,u):d};return function(o){l=o,n=o(e),a=o(t),r=n===a?0:1/(a-n);return u}}function N(e,t){return t.domain(e.domain()).interpolator(e.interpolator()).clamp(e.clamp()).unknown(e.unknown())}function S(){var e=n(I()(o));e.copy=function(){return N(e,S())};return a.apply(e,arguments)}function R(e){return e<0?-1:1}function T(e,t,n){var o=e._x1-e._x0,a=t-e._x1,s=(e._y1-e._y0)/(o||a<0&&-0),i=(n-e._y1)/(a||o<0&&-0),r=(s*a+i*o)/(o+a);return(R(s)+R(i))*Math.min(Math.abs(s),Math.abs(i),.5*Math.abs(r))||0}function G(e,t){var n=e._x1-e._x0;return n?(3*(e._y1-e._y0)/n-t)/2:t}function H(e,t,n){var o=e._x0,a=e._y0,s=e._x1,i=e._y1,r=(s-o)/3;e._context.bezierCurveTo(o+r,a+r*t,s-r,i-r*n,s,i)}function P(e){this._context=e}P.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN;this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:H(this,this._t0,G(this,this._t0));break}if(this._line||this._line!==0&&this._point===1)this._context.closePath();this._line=1-this._line},point:function(e,t){var n=NaN;e=+e,t=+t;if(e===this._x1&&t===this._y1)return;switch(this._point){case 0:this._point=1;this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3;H(this,G(this,n=T(this,e,t)),n);break;default:H(this,this._t0,n=T(this,e,t));break}this._x0=this._x1,this._x1=e;this._y0=this._y1,this._y1=t;this._t0=n}};Object.create(P.prototype).point=function(e,t){P.prototype.point.call(this,t,e)};function A(e){return new P(e)}async function L(e,t){try{const n=await D(e);O(n);n.genome=e.genome;n.holder=t.style("position","relative");await F(n);Z(n);await B(n);oe(e,n)}catch(e){r(t,e.message||e)}}async function D(e){if(!e.jsonfile)throw".jsonfile missing";const t=await l("textfile",{file:e.jsonfile});if(t.error)throw t.error;return JSON.parse(t.text)}function O(t){if(!t.cells)throw".cells{} missing";if(!t.cells.file)throw".cells.file missing";if(!t.cells.axis2columnidx)throw".cells.axis2columnidx missing";if(t.cells.categories){if(!Array.isArray(t.cells.categories))throw".cells.categories should be an array";if(t.cells.categories.length==0)throw".cells.categories[] is empty array";for(const n of t.cells.categories){if(!Number.isInteger(n.columnidx))throw"columnidx missing from category "+n;if(n.autocolor){n.autocolor=e(_)}}if(!Number.isInteger(t.use_category_index)){t.use_category_index=0}if(!t.cells.categories[t.use_category_index])throw"use_category_index out of bound";if(!t.cells.categories[t.use_category_index].hidden_types)t.cells.categories[t.use_category_index].hidden_types=[]}if(t.gene_expression){if(!t.gene_expression.file)throw".gene_expression.file missing";if(!Number.isInteger(t.cells.barcodecolumnidx))throw".gene_expression in use but .cells.barcodecolumnidx is missing"}if(!t.width)t.width=window.innerWidth*.9;if(!t.height)t.height=window.innerHeight*.9}async function B(e){if(Number.isInteger(e.use_category_index)){if(!e.cells.categories[e.use_category_index].hidden_types)e.cells.categories[e.use_category_index].hidden_types=[]}const t=await W(e);e.data_sphere_r=t.data_sphere_r;if(!e.camera.position.z){e.camera.position.z=e.data_sphere_r*3;e.controls.maxDistance=e.data_sphere_r*4;e.controls.minDistance=e.data_sphere_r/10}const n=new TextEncoder;const o=n.encode(t.pcddata).buffer;V(e,o);U(e,t);a();function a(){requestAnimationFrame(a);e.controls.update();e.renderer.render(e.scene,e.camera)}}async function W(e){const t=e.holder.append("div").style("position","absolute").style("top",0).style("left",0).style("padding","10px").style("font-size","1.5rem").text("Loading data...");const n={genome:e.genome.name,textfile:e.cells.file,delimiter:e.cells.delimiter||"\t",getpcd:{coord:e.cells.axis2columnidx}};if(Number.isInteger(e.use_category_index)){if(!e.cells.categories)throw"using category index but cells.categories[] missing";const t=e.cells.categories[e.use_category_index];if(!t)throw"category array index out of bound";n.getpcd.category_index=t.columnidx;if(t.autocolor){n.getpcd.category_autocolor=true;if(t.values_count)n.getpcd.values_count=t.values_count}else if(t.values){n.getpcd.category_customcolor=true;n.getpcd.cat_values=t.values}else{if(!t.autocolor&&!t.values)throw"categories.values[] are not defined";throw"unknow coloring scheme for category "+t.name}if(t.hidden_types){n.hidden_types=t.hidden_types}if(e.background_color){n.background_color=e.background_color}if(!t.customorder){n.getpcd.category_autoorder=true}else if(t.customorder&&t.values){n.getpcd.category_customorder=true;n.getpcd.cat_values=t.values}else{if(t.customorder&&!t.values)throw"categories.values[] are not defined";throw"unknow ordering scheme for category "+t.name}e.menu_button.html(t.name+"&nbsp;&nbsp;&#9660;")}else if(Number.isInteger(e.use_gene_index)){const t=e.gene_expression.genes[e.use_gene_index];e.menu_button.html("Gene : "+t.gene+"&nbsp;&nbsp;&#9660;");n.getpcd.gene_expression={file:e.gene_expression.file,barcodecolumnidx:e.cells.barcodecolumnidx,chr:t.chr,start:t.start,stop:t.stop,autoscale:true,genename:t.gene,color_min:e.gene_expression.color_min,color_max:e.gene_expression.color_max};if(e.gene_expression.color_no_exp)n.getpcd.gene_expression.color_no_exp=e.gene_expression.color_no_exp}else{throw"unknown method to color the cells"}return l("singlecell",n).then((e=>{if(e.error)throw e.error;t.remove();return e}))}async function F(e){await ne("/static/js/three.js");await ne("/static/js/loaders/PCDLoader.js");await ne("/static/js/controls/TrackballControls.js");await ne("/static/js/WebGL.js");if(WEBGL.isWebGLAvailable()===false){e.holder.node().appendChild(WEBGL.getWebGLErrorMessage());return}e.scene=new THREE.Scene;if(e.background_color){e.scene.background=new THREE.Color(e.background_color)}else{e.scene.background=new THREE.Color(16777215)}const t=e.default_zoom?100-e.default_zoom:45;e.camera=new THREE.PerspectiveCamera(t,e.width/e.height,.1,1e3);e.camera.position.x=e.canvas_2d?0:20;e.camera.position.y=e.canvas_2d?0:-10;if(e.canvas_2d){e.camera.up.set(0,1,0)}else{e.camera.up.set(0,0,1)}e.controls=new THREE.TrackballControls(e.camera);e.controls.rotateSpeed=e.canvas_2d?0:2;e.controls.zoomSpeed=e.canvas_2d?3:.7;e.controls.panSpeed=e.canvas_2d?3:.7;e.controls.noZoom=true;e.controls.noPan=false;e.controls.staticMoving=true;e.controls.dynamicDampingFactor=.3;e.scene.add(e.camera);e.renderer=new THREE.WebGLRenderer({antialias:true,preserveDrawingBuffer:true});e.renderer.setPixelRatio(window.devicePixelRatio);e.renderer.setSize(e.width,e.height);e.renderer.domElement.style.backgroundColor="#ffffff";e.renderer.domElement.style.border="solid #dddddd 2px";e.holder.style("display","inline-block").style("position","relative").node().appendChild(e.renderer.domElement);e.renderer.render(e.scene,e.camera)}function V(e,t){e.scene.children.forEach((function(t,n){if(t.material){t.material.dispose();t.geometry.dispose();e.scene.remove(t)}}));const n=new THREE.PCDLoader;const o=n.parse(t,"");if(e.point_size){o.material.size=e.point_size}else{o.material.size=e.canvas_2d?.3:.05}e.scene.add(o);e.center=o.geometry.boundingSphere.center;e.controls.target.set(e.center.x,e.center.y,e.center.z);e.controls.update()}function Z(e){e.menu=new c;e.menu.d.style("padding","3px");e.settings=new c;e.settings.d.style("padding","3px");const t=e.holder.append("div").style("padding","10px").style("position","absolute").style("border-radius","5px").style("top","20px").style("right","20px").style("background-color","#dddddd");e.menu_button=t.append("button").style("display","inline-block").style("padding","4px").on("click",(()=>J(e)));const n=e.minimize_btn=t.append("div").style("margin-left","10px").style("display","inline-block").style("padding-left","0px").style("padding-right","2px").style("float","right").style("font-size",".6em").classed("active",e.menu_minimized?true:false).text(e.menu_minimized?" SHOW":" HIDE").on("click",(()=>{e.minimize_btn.classed("active",e.minimize_btn.classed("active")?false:true);if(e.minimize_btn.classed("active")){e.minimize_btn.text(" SHOW");e.menu_output.style("display","none")}else{e.minimize_btn.text(" HIDE");e.menu_output.style("display","block")}})).on("mouseover",(()=>{n.style("text-decoration","underline")})).on("mouseout",(()=>{n.style("text-decoration","none")}));e.use_background_color=0;const o=e.settings_btn=t.append("div").style("margin-left","10px").style("display","inline-block").style("padding-left","3px").style("padding-right","3px").style("float","right").style("font-size",".6em").text("CONFIG").on("click",(()=>K(e))).on("mouseover",(()=>{o.style("text-decoration","underline")})).on("mouseout",(()=>{o.style("text-decoration","none")}));e.menu_output=t.append("div").style("margin-top","10px").style("display",e.menu_minimized?"none":"block");e.show_zoom=true}function U(e,t){e.menu_output.selectAll("*").remove();if(t.category2color){const n=e.menu_output.append("div").style("margin","2px");const o=n.append("input").attr("type","checkbox").style("margin-right","10px").style("vertical-align","top").style("display","inline-block").on("change",(()=>{if(o.node().checked){e.cells.categories[e.use_category_index].hidden_types=[];B(e)}else{for(const n in t.category2color){e.cells.categories[e.use_category_index].hidden_types.push(n)}B(e)}}));if(e.cells.categories[e.use_category_index].hidden_types.length==0){o.property("checked",1)}n.append("span").text("Select All").style("font-size",".8em").attr("font-family",p);for(const n in t.category2color){const o=e.menu_output.append("div").style("margin","2px");const a=o.append("input").attr("type","checkbox").property("checked",1).style("margin-right","10px").style("vertical-align","top").style("display","inline-block").on("change",(()=>{if(e.cells.categories[e.use_category_index].hidden_types.includes(n)){const t=e.cells.categories[e.use_category_index].hidden_types.indexOf(n);if(t!==-1)e.cells.categories[e.use_category_index].hidden_types.splice(t,1);a.property("checked",1)}else{e.cells.categories[e.use_category_index].hidden_types.push(n)}B(e)}));if(e.cells.categories[e.use_category_index].hidden_types.includes(n)){a.property("checked",0)}o.append("div").style("display","inline-block").style("height","15px").style("width","15px").style("background-color",t.category2color[n]).style("margin-right","10px");o.append("span").text(n).attr("font-family",p);o.append("span").html("&nbsp;n="+t.categorycount[n]).attr("font-family",p).style("font-size",".8em").style("float","right").style("color","#777")}}else if(t.maxexpvalue){const n=30;const o=150;const a=e.menu_output.append("div").style("margin","10px").style("width","120px").style("height","100px");a.append("div").text("Gene Expression "+e.gene_expression.datatype).style("text-align","center").style("width","150px").style("margin-bottom","20px");const s=a.append("svg").append("g");const i=[e.gene_expression.color_max,e.gene_expression.color_min];const r=d().range(i).domain([t.minexpvalue,t.maxexpvalue]);const p=s.append("defs");const u=p.append("linearGradient").attr("id","linear-gradient");u.append("stop").attr("offset","0%").attr("stop-color",r(t.maxexpvalue));u.append("stop").attr("offset","100%").attr("stop-color",r(t.minexpvalue));s.append("rect").attr("x",0).attr("y",0).attr("width",o).attr("height",n).attr("transform","translate(12, 0)").style("fill","url(#linear-gradient)");const g=d().range([0,o]).domain([t.minexpvalue,t.maxexpvalue]);const m=b().scale(g).ticks(5);s.append("g").attr("class","legend axis").attr("transform","translate(12,"+n+")").call(m);const y=e.menu_output.append("div").style("padding-bottom","20px").style("text-align","center");y.append("p").style("font-size","13px").style("margin","2px 0").html("<b>Cells with Expression Data</b> ");y.append("p").style("font-size","13px").style("margin","2px 0").html(t.numbercellwithgeneexp+" / "+t.numbercelltotal);const x=y.append("div").style("display","block").style("margin-top","10px");x.append("div").style("display","inline-block").style("height","15px").style("width","15px").style("background-color",e.gene_expression.color_no_exp?e.gene_expression.color_no_exp:"#2C2C2C").style("margin-right","10px");x.append("div").style("display","inline-block").style("font-size","13px").html(" Cells without Expression");const f=e.menu_output.append("div");f.append("div").style("display","block").style("padding","5px").html("Violinplot / Boxplot of </br> Expression by");const h=f.append("select").style("display","block");h.append("option").attr("value","none").text("-- Select--");if(e.cells.categories){e.cells.categories.forEach(((e,t)=>{h.append("option").attr("value",e.columnidx).text(e.name)}))}h.on("change",(()=>{const t=e.gene_expression.genes[e.use_gene_index];const n=e.cells.categories[parseInt(h.node().selectedIndex)-1];const o={genome:e.genome.name,getgeneboxplot:{expfile:e.gene_expression.file,chr:t.chr,start:t.start,stop:t.stop,genename:t.gene,cellfile:e.cells.file,barcodecolumnidx:e.cells.barcodecolumnidx,categorycolumnidx:parseInt(h.node().value),delimiter:e.cells.delimiter||"\t",category_customorder:n.customorder&&n.values?true:false,category_autoorder:!n.customorder?true:false,cat_values:n.values,values_count:n.values_count}};l("singlecell",o).then((t=>{if(t.error)throw t.error;e.box_plot=new c;X(t,e,h.node().value)}))}))}q(e)}function q(e){if(e.show_zoom){const t=e.menu_output.append("div").style("display","block").text("Zoom").style("margin","10px 5px 5px 5px").style("padding-top","10px").style("border-top","1px solid #929292");const n=t.append("div").style("margin-left","10px").style("display","inline-block").style("padding-left","0px").style("padding-right","2px").style("float","right").style("font-size",".6em").text("MOVE TO CONFIG").on("click",(()=>{t.node().remove();e.show_zoom=false})).on("mouseover",(()=>{n.style("text-decoration","underline")})).on("mouseout",(()=>{n.style("text-decoration","none")}));e.zoom_slider=t.append("input").style("display","block").style("padding","5px").attr("type","range").attr("min",1).attr("max",100).attr("value",e.camera.fov).style("direction","rtl").on("change",(()=>{e.camera.fov=parseInt(e.zoom_slider.node().value);e.camera.updateProjectionMatrix()})).on("mousedown",(e=>{e.stopPropagation()}))}}function J(e){e.menu.clear().showunder(e.menu_button.node());if(e.cells.categories){e.cells.categories.forEach(((t,n)=>{if(n!=e.use_category_index){e.menu.d.append("div").text(t.name).attr("class","sja_menuoption").on("click",(async()=>{e.menu.hide();e.use_category_index=n;B(e)})).append("span").attr("font-family",p).style("display",t.values_count?"inline-block":"none").style("font-size",".8em").style("float","right").style("color","#777").style("padding","3px 5px").html(t.values_count?"&nbsp;n="+t.values_count:"")}}))}if(e.gene_expression){e.menu.d.append("div").text("Gene expression").attr("class","sja_menuoption").on("click",(()=>{e.menu.clear();const t=e.menu.d.append("div").style("padding","10px");u({div:t.append("div"),resultdiv:t.append("div"),genome:e.genome.name,callback:async t=>{const n=await g(e.genome.name,t);if(n&&n[0]){const o=n[0];if(!e.gene_expression.genes)e.gene_expression.genes=[];const a=e.gene_expression.genes.findIndex((e=>e.gene==t));if(a==-1){e.gene_expression.genes.push({gene:t,chr:o.chr,start:o.start,stop:o.stop});e.use_gene_index=e.gene_expression.genes.length-1}else{e.use_gene_index=a}}e.use_category_index=null;e.menu.hide();B(e)}})}));e.menu.d.append("div").text("Multi-Gene Heatmap").attr("class","sja_menuoption").on("click",(()=>{Q(e)}));if(e.gene_expression.genes){if(e.gene_expression.genes.length>1){e.menu.d.append("div").style("padding","5px 10px").text("Previously Selected")}e.gene_expression.genes.forEach(((t,n)=>{if(n!=e.use_gene_index){e.menu.d.append("div").text("Gene : "+t.gene).attr("class","sja_menuoption").on("click",(async()=>{e.menu.hide();e.use_category_index=null;e.use_gene_index=n;B(e)}))}}))}}}function K(e){e.settings.clear().showunder(e.settings_btn.node());const t=e.settings.d.append("div").style("display","block").text("Background Color").style("margin","5px");const n=t.append("div").style("margin","5px").style("display","block");const o=Math.random(),a=Math.random(),s=Math.random();const i=n.append("input").attr("type","radio").style("display","inline-block").attr("name",o).attr("id",a).on("change",c);n.append("label").style("display","inline-block").style("font-size",".8em").text("Black").style("padding-left","10px").attr("for",a);const r=t.append("div").style("margin","5px").style("display","block");const l=r.append("input").attr("type","radio").style("display","inline-block").attr("name",o).attr("id",s).on("change",c);r.append("label").style("display","inline-block").style("font-size",".8em").text("White").style("padding-left","10px").attr("for",s);if(e.use_background_color==0){l.property("checked",1)}else{i.property("checked",1)}function c(){const t=e.background_color=="black";e.scene.background=new THREE.Color(t?16777215:0);e.use_background_color=t?0:1;e.background_color=t?"white":"black"}const p=e.settings.d.append("div").style("display","block").text("Point Size").style("margin","20px 5px");const d=p.append("input").style("display","block").style("padding","5px").attr("type","range").attr("min",1).attr("max",70).attr("value",e.scene.children[1].material.size*100).on("change",(()=>{e.scene.children[1].material.size=d.node().value/100}));if(e.show_zoom==false){const t=e.settings.d.append("div").style("display","block").text("Zoom").style("margin","20px 5px");const n=t.append("div").style("margin-left","10px").style("display","inline-block").style("padding-left","0px").style("padding-right","2px").style("float","right").style("font-size",".6em").html("MOVE TO </br>LEGEND PANEL").on("click",(()=>{t.node().remove();e.show_zoom=true;q(e)})).on("mouseover",(()=>{n.style("text-decoration","underline")})).on("mouseout",(()=>{n.style("text-decoration","none")}));e.zoom_slider=t.append("input").style("display","block").style("padding","5px").attr("type","range").attr("min",5).attr("max",70).attr("value",e.camera.fov).style("direction","rtl").on("change",(()=>{e.camera.fov=parseInt(e.zoom_slider.node().value);e.camera.updateProjectionMatrix()}))}e.settings.d.append("div").style("margin","5px").text("Panning");e.settings.d.append("div").style("font-size",".8em").style("text-align","center").style("margin-bottom","10px").html('<p style="margin:3px;">Right mouse click </br>+ Mouse move</p>');if(!e.canvas_2d){e.settings.d.append("div").style("margin","5px").text("Rotate");e.settings.d.append("div").style("font-size",".8em").style("text-align","center").style("margin-bottom","10px").html('<p style="margin:3px;">Left mouse click </br>+ Mouse move</p>')}e.settings.d.append("div").attr("class","sja_menuoption").text("Reset view").style("width","80px").style("margin","auto").style("margin-top","15px").style("margin-bottom","15px").on("click",(()=>{l.property("checked",1);e.scene.background=new THREE.Color(e.background_color?e.background_color:16777215);d.node().value=e.point_size?e.point_size*100:e.canvas_2d?30:5;e.scene.children[1].material.size=e.point_size?e.point_size:e.canvas_2d?.3:.05;e.camera.position.z=e.data_sphere_r*3;e.camera.position.x=e.canvas_2d?0:20;e.camera.position.y=e.canvas_2d?0:-10;const t=45;e.camera.fov=parseInt(t);e.camera.updateProjectionMatrix();e.zoom_slider.node().value=t;if(e.canvas_2d){e.camera.up.set(0,1,0)}else{e.camera.up.set(0,0,1)}e.controls.target.set(e.center.x,e.center.y,e.center.z)}));const u=e.settings.d.append("div").attr("class","sja_menuoption").style("padding","5px").style("width","80px").style("margin","auto").style("margin-top","15px").style("margin-bottom","15px").html("<b>&#10697;</b> Capture").on("mousedown",(()=>{const t=e.renderer.domElement.toDataURL();let n=document.createElement("img");n.src=t;u.append("span").style("display","none").html('<a download="scRNA_'+(new Date).toLocaleString()+'.png" href="'+n.src+'" title="ImageName">Camera</a>')})).on("mouseup",(()=>{u.select("a").node().click();u.selectAll("span").remove()}))}function Q(e){e.menu.clear();e.gene_expression.heatmap_genes=[];e.use_heatmap_category_index=null;const t=e.menu.d.append("div").style("display","block").style("padding","10px");const n=t.append("div").style("display","block");const o=n.append("div").style("display","inline-block").style("vertical-align","top").style("padding","10px");o.append("div").style("display","block").style("padding-bottom","5px").text("Add Genes");o.append("textarea").attr("rows","4").attr("cols","20").attr("placeholder","Type gene names seperated by space");const a=t.append("div");a.append("div").style("display","block").style("padding-bottom","5px").style("padding-left","10px").text("Heatmap by");const s=a.append("select").style("display","block").style("margin-left","10px");s.append("option").attr("value","none").text("-- Select--");if(e.cells.categories){e.cells.categories.forEach(((e,t)=>{s.append("option").attr("value",e.columnidx).text(e.name)}))}s.on("change",(()=>{e.use_heatmap_category_index=parseInt(s.node().value)}));t.append("button").text("Heatmap").style("display","block").style("float","right").style("margin","5px").on("click",(async()=>{const t=o.select("textarea").node().value;const n=t.split(" ");for(const t of n){const n=await g(e.genome.name,t);if(n&&n[0]){const o=n[0];if(!e.gene_expression.heatmap_genes)e.gene_expression.heatmap_genes=[];const a=e.gene_expression.heatmap_genes.findIndex((e=>e.gene==t));if(a==-1){e.gene_expression.heatmap_genes.push({gene:t,chr:o.chr,start:o.start,stop:o.stop})}}}const a={genome:e.genome.name,getheatmap:{expfile:e.gene_expression.file,gene_list:e.gene_expression.heatmap_genes,cellfile:e.cells.file,barcodecolumnidx:e.cells.barcodecolumnidx,categorycolumnidx:parseInt(s.node().value),delimiter:e.cells.delimiter||"\t"}};l("singlecell",a).then((t=>{if(t.error)throw t.error;e.menu.hide();ee(t,e,s.node().value)}))}))}function X(e,t,n){const o=t.gene_expression.genes[t.use_gene_index];const a=m({x:600,y:400});const s=t.cells.categories.find((e=>e.columnidx==n));a.header.text("Violinplot/Boxplot for "+o.gene+" Expression by "+s.name);const i=a.pane.append("div").style("margin","10px 10px 10px 15px");const r=a.pane.append("svg").style("margin","10px");const c=i.append("select").style("display","inline-block");c.append("option").attr("value","violin").text("Violin Plot");c.append("option").attr("value","box").text("Box Plot");c.on("change",(()=>{u()}));const p=i.append("div").style("display","inline-block").style("padding-left","15px").text("Cells without expression");const d=p.append("select").style("display","inline-block").style("margin-left","5px");d.append("option").attr("value","include").text("Include");d.append("option").attr("value","exclude").text("Exclude");d.on("change",(()=>{u()}));Y(e,r);function u(){const e=t.gene_expression.genes[t.use_gene_index];const o={genome:t.genome.name,getgeneboxplot:{expfile:t.gene_expression.file,chr:e.chr,start:e.start,stop:e.stop,genename:e.gene,cellfile:t.cells.file,barcodecolumnidx:t.cells.barcodecolumnidx,categorycolumnidx:parseInt(n),delimiter:t.cells.delimiter||"\t",category_customorder:s.customorder&&s.values?true:false,category_autoorder:!s.customorder?true:false,cat_values:s.values,values_count:s.values_count}};if(d.node().value=="exclude"){o.getgeneboxplot.exclude_cells=true}l("singlecell",o).then((e=>{if(e.error)throw e.error;if(c.node().value=="box")$(e,r);else if(c.node().value=="violin")Y(e,r)}))}}function Y(e,t){t.selectAll("*").remove();let n=50,o=200,a=2,s=30;const i=te(e.boxplots,t);const r=d().range([0,o]).domain([e.minexpvalue,e.maxexpvalue]);const l=d().range([n,0]).domain([0,1]);const c=e.boxplots.length*(n+a)+s;const u=o+i+20;t.transition().attr("width",u).attr("height",c);if(e.boxplots){e.boxplots.forEach(((o,c)=>{const d=t.append("g").attr("transform","translate("+i+","+(c*(n+a)+s)+")");d.append("text").text(o.category+" ("+o.numberofcells+")").attr("transform","translate(-4,"+n/2+")").attr("text-anchor","end").attr("font-size",15).attr("font-family",p).attr("dominant-baseline","central");if(o.density){const t=Math.max(...o.density);z().x((function(t,n){return r(n*e.maxexpvalue/o.density.length)})).y((function(e){return l(e/t)/2})).curve(A);const a=E().x((function(t,n){return r(n*e.maxexpvalue/o.density.length)})).y0((function(e){const o=l(e/t)/2;return n-o})).y1((function(e){return l(e/t)/2})).curve(A);d.append("path").datum(o.density).attr("class","area").attr("d",a).style("fill",o.color).style("stroke","black").style("stroke-width",.5)}}));const o=v().scale(r).ticks(5);t.append("g").attr("class","legend axis").attr("transform","translate("+i+","+(s-10)+")").call(o)}}function $(e,t){t.selectAll("*").remove();let n=36,o=200,a=16,s=30;const i=te(e.boxplots,t);const r=d().range([0,o]).domain([e.minexpvalue,e.maxexpvalue]);d().range([n,0]).domain([0,1]);const l=e.boxplots.length*(n+a)+s;const c=o+i+20;t.transition().attr("width",c).attr("height",l);if(e.boxplots){e.boxplots.forEach(((e,o)=>{const l=t.append("g").attr("transform","translate("+i+","+(o*(n+a)+s)+")");l.append("text").text(e.category+" ("+e.numberofcells+")").attr("transform","translate(-4,"+n/2+")").attr("text-anchor","end").attr("font-size",15).attr("font-family",p).attr("dominant-baseline","central");if(e.p75){l.append("line").attr("x1",r(e.w1)).attr("y1",n/2).attr("x2",r(e.w2)).attr("y2",n/2).attr("stroke-width",2).attr("stroke","black");l.append("rect").attr("x",r(e.p25)).attr("y",0).attr("width",r(e.p75-e.p25)).attr("height",n).attr("fill",e.color);l.append("line").attr("x1",r(e.w1)).attr("y1",0).attr("x2",r(e.w1)).attr("y2",n).attr("stroke-width",2).attr("stroke","black");l.append("line").attr("x1",r(e.p50)).attr("y1",0).attr("x2",r(e.p50)).attr("y2",n).attr("stroke-width",2).attr("stroke","white");l.append("line").attr("x1",r(e.w2)).attr("y1",0).attr("x2",r(e.w2)).attr("y2",n).attr("stroke-width",2).attr("stroke","black");if(e.out){for(const t of e.out){l.append("circle").attr("cx",r(t.value)).attr("cy",n/2).attr("r",2).attr("fill","#901739")}}}}));const o=v().scale(r).ticks(5);t.append("g").attr("class","legend axis").attr("transform","translate("+i+","+(s-10)+")").call(o)}}function ee(e,t,n){const o=m({x:600,y:400});const a=t.cells.categories.find((e=>e.columnidx==n));o.header.text("Heatmap for Gene Expression by "+a.name);const s=o.pane.append("svg").style("margin","10px");let i=[];for(const t of e.gene_heatmap)i.push(t.genename);let r=[];e.gene_heatmap.forEach(((t,n)=>{e.gene_heatmap[n].heatmap.forEach((e=>{r.push(e.mean)}))}));const l=Math.max(...r);let c=[];for(const t of e.gene_heatmap[0].heatmap)c.push(t.category+" ("+t.numberofcells+")");let p=20,d=80,u=2,g=30,y=60;const x=te(e.gene_heatmap[0].heatmap,s);const f=(p+u)*c.length+g;const h=(d+u)*i.length+x+y+20;s.transition().attr("width",h).attr("height",f);const _=C().range([0,(d+u)*i.length]).domain(i).padding(.05);s.append("g").style("font-size",15).attr("transform","translate("+x+",0)").call(b(_).tickSize(0)).select(".domain").remove();const v=C().range([(p+u)*c.length,0]).domain(c).padding(.05);s.append("g").style("font-size",15).attr("transform","translate("+x+","+g+")").call(k(v).tickSize(0)).select(".domain").remove();var z=S().interpolator(w).domain([0,l]);const E=o.pane.append("div").style("position","absolute").attr("class","tooltip").style("background-color","white").style("border","solid").style("border-width","2px").style("border-radius","5px").style("padding","5px").style("opacity",0);e.gene_heatmap.forEach(((t,n)=>{e.gene_heatmap[n].heatmap.forEach(((e,n)=>{const o=s.append("g").attr("transform","translate("+x+","+g+")");o.append("rect").attr("x",_(t.genename)).attr("y",v(e.category+" ("+e.numberofcells+")")).attr("width",_.bandwidth()).attr("height",v.bandwidth()).style("fill",z(e.mean)).style("stroke-width",4).style("stroke","none").style("opacity",.8).on("mouseover",(function(t){E.transition().duration(200).style("opacity",.9);E.html("Mean Expression: "+e.mean).style("left",j(t,this)[0]+70+"px").style("top",j(t,this)[1]+20+"px")})).on("mouseout",(function(){E.transition().duration(500).style("opacity",0)}))}))}));const M=z.ticks(10).reverse();M.unshift(l.toFixed(2));const I=s.selectAll(".legend").data(M).enter().append("g").attr("class","legend").attr("transform",(function(e,t){return"translate("+(h-y)+","+(30+t*20)+")"}));I.append("rect").attr("width",20).attr("height",20).style("fill",z).style("opacity",.8);I.append("text").attr("x",26).attr("y",10).attr("dy",".35em").text(String)}function te(e,t){let n=0;for(const o of e){t.append("text").text(o.category+" ("+o.numberofcells+")").attr("font-family",p).attr("font-size",15).each((function(){n=Math.max(n,this.getBBox().width)})).remove()}return n+4}function ne(e){return new Promise(((t,n)=>{const o=document.createElement("script");o.setAttribute("src",sessionStorage.getItem("hostURL")+e);document.head.appendChild(o);o.onload=t}))}async function oe(e,t){if(!e.legendimg)return;const n=t.holder.append("div").style("margin-top","5px");t.legendimg=e.legendimg;t.legend={holder:n,legendcolor:"#7D6836"};let o=!e.foldlegend;n.append("div").text("LEGEND").attr("class","sja_clb").style("display","inline-block").style("font-size",".7em").style("color",t.legend.legendcolor).style("font-family",p).on("click",(()=>{if(o){o=false;y(a)}else{o=true;x(a)}}));const a=t.holder.append("div").style("border-top","solid 1px "+t.legend.legendcolor).style("background-color","#FCFBF7");t.legend.holder=a.append("table").style("border-spacing","15px").style("border-collapse","separate");const[s,i]=h(t,t.legendimg.name||"");const r=await f("img?file="+t.legendimg.file);if(r.error){i.text(r.error);return}let l=true;const c=i.append("img").attr("class","sja_clbb").attr("src",r.src).style("height","80px");c.on("click",(()=>{if(l){l=false;c.transition().style("height",t.legendimg.height?t.legendimg.height+"px":"auto")}else{l=true;c.transition().style("height","80px")}}))}export{L as init};
1
+ import{am as e,b2 as t,bv as n,bw as o,bx as a,a_ as s,by as i,o as r,c as l,M as c,p,l as d,bz as u,bA as g,a0 as m,h as y,g as x,d as f}from"./app-71453429.js";import{l as h}from"./block.legend-cec87c6f.js";import{s as _}from"./legacy-d3-polyfill-bdb2d792.js";import{c as b,d as v,b as k}from"./axis-6cb4f314.js";import{p as w}from"./viridis-81de7bcd.js";import{l as z}from"./line-264f8f9e.js";import{a as E}from"./area-f56e50f9.js";import{p as j}from"./pointer-c7475677.js";import"./vcf-16ba1e06.js";import"./partition-db811f6b.js";import"./arc-3d6751aa.js";import"./constant-426a1483.js";import"./math-2fb199c6.js";function M(e,t,n){e=+e,t=+t,n=(a=arguments.length)<2?(t=e,e=0,1):a<3?1:+n;var o=-1,a=Math.max(0,Math.ceil((t-e)/n))|0,s=new Array(a);while(++o<a){s[o]=e+o*n}return s}function C(){var n=e().unknown(undefined),o=n.domain,a=n.range,s=0,i=1,r,l,c=false,p=0,d=0,u=.5;delete n.unknown;function g(){var e=o().length,t=i<s,n=t?i:s,g=t?s:i;r=(g-n)/Math.max(1,e-p+d*2);if(c)r=Math.floor(r);n+=(g-n-r*(e-p))*u;l=r*(1-p);if(c)n=Math.round(n),l=Math.round(l);var m=M(e).map((function(e){return n+r*e}));return a(t?m.reverse():m)}n.domain=function(e){return arguments.length?(o(e),g()):o()};n.range=function(e){return arguments.length?([s,i]=e,s=+s,i=+i,g()):[s,i]};n.rangeRound=function(e){return[s,i]=e,s=+s,i=+i,c=true,g()};n.bandwidth=function(){return l};n.step=function(){return r};n.round=function(e){return arguments.length?(c=!!e,g()):c};n.padding=function(e){return arguments.length?(p=Math.min(1,d=+e),g()):p};n.paddingInner=function(e){return arguments.length?(p=Math.min(1,e),g()):p};n.paddingOuter=function(e){return arguments.length?(d=+e,g()):d};n.align=function(e){return arguments.length?(u=Math.max(0,Math.min(1,e)),g()):u};n.copy=function(){return C(o(),[s,i]).round(c).paddingInner(p).paddingOuter(d).align(u)};return t.apply(g(),arguments)}function I(){var e=0,t=1,n,a,r,l,c=o,p=false,d;function u(e){return e==null||isNaN(e=+e)?d:c(r===0?.5:(e=(l(e)-n)*r,p?Math.max(0,Math.min(1,e)):e))}u.domain=function(o){return arguments.length?([e,t]=o,n=l(e=+e),a=l(t=+t),r=n===a?0:1/(a-n),u):[e,t]};u.clamp=function(e){return arguments.length?(p=!!e,u):p};u.interpolator=function(e){return arguments.length?(c=e,u):c};function g(e){return function(t){var n,o;return arguments.length?([n,o]=t,c=e(n,o),u):[c(0),c(1)]}}u.range=g(s);u.rangeRound=g(i);u.unknown=function(e){return arguments.length?(d=e,u):d};return function(o){l=o,n=o(e),a=o(t),r=n===a?0:1/(a-n);return u}}function N(e,t){return t.domain(e.domain()).interpolator(e.interpolator()).clamp(e.clamp()).unknown(e.unknown())}function S(){var e=n(I()(o));e.copy=function(){return N(e,S())};return a.apply(e,arguments)}function R(e){return e<0?-1:1}function T(e,t,n){var o=e._x1-e._x0,a=t-e._x1,s=(e._y1-e._y0)/(o||a<0&&-0),i=(n-e._y1)/(a||o<0&&-0),r=(s*a+i*o)/(o+a);return(R(s)+R(i))*Math.min(Math.abs(s),Math.abs(i),.5*Math.abs(r))||0}function G(e,t){var n=e._x1-e._x0;return n?(3*(e._y1-e._y0)/n-t)/2:t}function H(e,t,n){var o=e._x0,a=e._y0,s=e._x1,i=e._y1,r=(s-o)/3;e._context.bezierCurveTo(o+r,a+r*t,s-r,i-r*n,s,i)}function P(e){this._context=e}P.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN;this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:H(this,this._t0,G(this,this._t0));break}if(this._line||this._line!==0&&this._point===1)this._context.closePath();this._line=1-this._line},point:function(e,t){var n=NaN;e=+e,t=+t;if(e===this._x1&&t===this._y1)return;switch(this._point){case 0:this._point=1;this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3;H(this,G(this,n=T(this,e,t)),n);break;default:H(this,this._t0,n=T(this,e,t));break}this._x0=this._x1,this._x1=e;this._y0=this._y1,this._y1=t;this._t0=n}};Object.create(P.prototype).point=function(e,t){P.prototype.point.call(this,t,e)};function A(e){return new P(e)}async function L(e,t){try{const n=await D(e);O(n);n.genome=e.genome;n.holder=t.style("position","relative");await F(n);Z(n);await B(n);oe(e,n)}catch(e){r(t,e.message||e)}}async function D(e){if(!e.jsonfile)throw".jsonfile missing";const t=await l("textfile",{file:e.jsonfile});if(t.error)throw t.error;return JSON.parse(t.text)}function O(t){if(!t.cells)throw".cells{} missing";if(!t.cells.file)throw".cells.file missing";if(!t.cells.axis2columnidx)throw".cells.axis2columnidx missing";if(t.cells.categories){if(!Array.isArray(t.cells.categories))throw".cells.categories should be an array";if(t.cells.categories.length==0)throw".cells.categories[] is empty array";for(const n of t.cells.categories){if(!Number.isInteger(n.columnidx))throw"columnidx missing from category "+n;if(n.autocolor){n.autocolor=e(_)}}if(!Number.isInteger(t.use_category_index)){t.use_category_index=0}if(!t.cells.categories[t.use_category_index])throw"use_category_index out of bound";if(!t.cells.categories[t.use_category_index].hidden_types)t.cells.categories[t.use_category_index].hidden_types=[]}if(t.gene_expression){if(!t.gene_expression.file)throw".gene_expression.file missing";if(!Number.isInteger(t.cells.barcodecolumnidx))throw".gene_expression in use but .cells.barcodecolumnidx is missing"}if(!t.width)t.width=window.innerWidth*.9;if(!t.height)t.height=window.innerHeight*.9}async function B(e){if(Number.isInteger(e.use_category_index)){if(!e.cells.categories[e.use_category_index].hidden_types)e.cells.categories[e.use_category_index].hidden_types=[]}const t=await W(e);e.data_sphere_r=t.data_sphere_r;if(!e.camera.position.z){e.camera.position.z=e.data_sphere_r*3;e.controls.maxDistance=e.data_sphere_r*4;e.controls.minDistance=e.data_sphere_r/10}const n=new TextEncoder;const o=n.encode(t.pcddata).buffer;V(e,o);U(e,t);a();function a(){requestAnimationFrame(a);e.controls.update();e.renderer.render(e.scene,e.camera)}}async function W(e){const t=e.holder.append("div").style("position","absolute").style("top",0).style("left",0).style("padding","10px").style("font-size","1.5rem").text("Loading data...");const n={genome:e.genome.name,textfile:e.cells.file,delimiter:e.cells.delimiter||"\t",getpcd:{coord:e.cells.axis2columnidx}};if(Number.isInteger(e.use_category_index)){if(!e.cells.categories)throw"using category index but cells.categories[] missing";const t=e.cells.categories[e.use_category_index];if(!t)throw"category array index out of bound";n.getpcd.category_index=t.columnidx;if(t.autocolor){n.getpcd.category_autocolor=true;if(t.values_count)n.getpcd.values_count=t.values_count}else if(t.values){n.getpcd.category_customcolor=true;n.getpcd.cat_values=t.values}else{if(!t.autocolor&&!t.values)throw"categories.values[] are not defined";throw"unknow coloring scheme for category "+t.name}if(t.hidden_types){n.hidden_types=t.hidden_types}if(e.background_color){n.background_color=e.background_color}if(!t.customorder){n.getpcd.category_autoorder=true}else if(t.customorder&&t.values){n.getpcd.category_customorder=true;n.getpcd.cat_values=t.values}else{if(t.customorder&&!t.values)throw"categories.values[] are not defined";throw"unknow ordering scheme for category "+t.name}e.menu_button.html(t.name+"&nbsp;&nbsp;&#9660;")}else if(Number.isInteger(e.use_gene_index)){const t=e.gene_expression.genes[e.use_gene_index];e.menu_button.html("Gene : "+t.gene+"&nbsp;&nbsp;&#9660;");n.getpcd.gene_expression={file:e.gene_expression.file,barcodecolumnidx:e.cells.barcodecolumnidx,chr:t.chr,start:t.start,stop:t.stop,autoscale:true,genename:t.gene,color_min:e.gene_expression.color_min,color_max:e.gene_expression.color_max};if(e.gene_expression.color_no_exp)n.getpcd.gene_expression.color_no_exp=e.gene_expression.color_no_exp}else{throw"unknown method to color the cells"}return l("singlecell",n).then((e=>{if(e.error)throw e.error;t.remove();return e}))}async function F(e){await ne("/static/js/three.js");await ne("/static/js/loaders/PCDLoader.js");await ne("/static/js/controls/TrackballControls.js");await ne("/static/js/WebGL.js");if(WEBGL.isWebGLAvailable()===false){e.holder.node().appendChild(WEBGL.getWebGLErrorMessage());return}e.scene=new THREE.Scene;if(e.background_color){e.scene.background=new THREE.Color(e.background_color)}else{e.scene.background=new THREE.Color(16777215)}const t=e.default_zoom?100-e.default_zoom:45;e.camera=new THREE.PerspectiveCamera(t,e.width/e.height,.1,1e3);e.camera.position.x=e.canvas_2d?0:20;e.camera.position.y=e.canvas_2d?0:-10;if(e.canvas_2d){e.camera.up.set(0,1,0)}else{e.camera.up.set(0,0,1)}e.controls=new THREE.TrackballControls(e.camera);e.controls.rotateSpeed=e.canvas_2d?0:2;e.controls.zoomSpeed=e.canvas_2d?3:.7;e.controls.panSpeed=e.canvas_2d?3:.7;e.controls.noZoom=true;e.controls.noPan=false;e.controls.staticMoving=true;e.controls.dynamicDampingFactor=.3;e.scene.add(e.camera);e.renderer=new THREE.WebGLRenderer({antialias:true,preserveDrawingBuffer:true});e.renderer.setPixelRatio(window.devicePixelRatio);e.renderer.setSize(e.width,e.height);e.renderer.domElement.style.backgroundColor="#ffffff";e.renderer.domElement.style.border="solid #dddddd 2px";e.holder.style("display","inline-block").style("position","relative").node().appendChild(e.renderer.domElement);e.renderer.render(e.scene,e.camera)}function V(e,t){e.scene.children.forEach((function(t,n){if(t.material){t.material.dispose();t.geometry.dispose();e.scene.remove(t)}}));const n=new THREE.PCDLoader;const o=n.parse(t,"");if(e.point_size){o.material.size=e.point_size}else{o.material.size=e.canvas_2d?.3:.05}e.scene.add(o);e.center=o.geometry.boundingSphere.center;e.controls.target.set(e.center.x,e.center.y,e.center.z);e.controls.update()}function Z(e){e.menu=new c;e.menu.d.style("padding","3px");e.settings=new c;e.settings.d.style("padding","3px");const t=e.holder.append("div").style("padding","10px").style("position","absolute").style("border-radius","5px").style("top","20px").style("right","20px").style("background-color","#dddddd");e.menu_button=t.append("button").style("display","inline-block").style("padding","4px").on("click",(()=>J(e)));const n=e.minimize_btn=t.append("div").style("margin-left","10px").style("display","inline-block").style("padding-left","0px").style("padding-right","2px").style("float","right").style("font-size",".6em").classed("active",e.menu_minimized?true:false).text(e.menu_minimized?" SHOW":" HIDE").on("click",(()=>{e.minimize_btn.classed("active",e.minimize_btn.classed("active")?false:true);if(e.minimize_btn.classed("active")){e.minimize_btn.text(" SHOW");e.menu_output.style("display","none")}else{e.minimize_btn.text(" HIDE");e.menu_output.style("display","block")}})).on("mouseover",(()=>{n.style("text-decoration","underline")})).on("mouseout",(()=>{n.style("text-decoration","none")}));e.use_background_color=0;const o=e.settings_btn=t.append("div").style("margin-left","10px").style("display","inline-block").style("padding-left","3px").style("padding-right","3px").style("float","right").style("font-size",".6em").text("CONFIG").on("click",(()=>K(e))).on("mouseover",(()=>{o.style("text-decoration","underline")})).on("mouseout",(()=>{o.style("text-decoration","none")}));e.menu_output=t.append("div").style("margin-top","10px").style("display",e.menu_minimized?"none":"block");e.show_zoom=true}function U(e,t){e.menu_output.selectAll("*").remove();if(t.category2color){const n=e.menu_output.append("div").style("margin","2px");const o=n.append("input").attr("type","checkbox").style("margin-right","10px").style("vertical-align","top").style("display","inline-block").on("change",(()=>{if(o.node().checked){e.cells.categories[e.use_category_index].hidden_types=[];B(e)}else{for(const n in t.category2color){e.cells.categories[e.use_category_index].hidden_types.push(n)}B(e)}}));if(e.cells.categories[e.use_category_index].hidden_types.length==0){o.property("checked",1)}n.append("span").text("Select All").style("font-size",".8em").attr("font-family",p);for(const n in t.category2color){const o=e.menu_output.append("div").style("margin","2px");const a=o.append("input").attr("type","checkbox").property("checked",1).style("margin-right","10px").style("vertical-align","top").style("display","inline-block").on("change",(()=>{if(e.cells.categories[e.use_category_index].hidden_types.includes(n)){const t=e.cells.categories[e.use_category_index].hidden_types.indexOf(n);if(t!==-1)e.cells.categories[e.use_category_index].hidden_types.splice(t,1);a.property("checked",1)}else{e.cells.categories[e.use_category_index].hidden_types.push(n)}B(e)}));if(e.cells.categories[e.use_category_index].hidden_types.includes(n)){a.property("checked",0)}o.append("div").style("display","inline-block").style("height","15px").style("width","15px").style("background-color",t.category2color[n]).style("margin-right","10px");o.append("span").text(n).attr("font-family",p);o.append("span").html("&nbsp;n="+t.categorycount[n]).attr("font-family",p).style("font-size",".8em").style("float","right").style("color","#777")}}else if(t.maxexpvalue){const n=30;const o=150;const a=e.menu_output.append("div").style("margin","10px").style("width","120px").style("height","100px");a.append("div").text("Gene Expression "+e.gene_expression.datatype).style("text-align","center").style("width","150px").style("margin-bottom","20px");const s=a.append("svg").append("g");const i=[e.gene_expression.color_max,e.gene_expression.color_min];const r=d().range(i).domain([t.minexpvalue,t.maxexpvalue]);const p=s.append("defs");const u=p.append("linearGradient").attr("id","linear-gradient");u.append("stop").attr("offset","0%").attr("stop-color",r(t.maxexpvalue));u.append("stop").attr("offset","100%").attr("stop-color",r(t.minexpvalue));s.append("rect").attr("x",0).attr("y",0).attr("width",o).attr("height",n).attr("transform","translate(12, 0)").style("fill","url(#linear-gradient)");const g=d().range([0,o]).domain([t.minexpvalue,t.maxexpvalue]);const m=b().scale(g).ticks(5);s.append("g").attr("class","legend axis").attr("transform","translate(12,"+n+")").call(m);const y=e.menu_output.append("div").style("padding-bottom","20px").style("text-align","center");y.append("p").style("font-size","13px").style("margin","2px 0").html("<b>Cells with Expression Data</b> ");y.append("p").style("font-size","13px").style("margin","2px 0").html(t.numbercellwithgeneexp+" / "+t.numbercelltotal);const x=y.append("div").style("display","block").style("margin-top","10px");x.append("div").style("display","inline-block").style("height","15px").style("width","15px").style("background-color",e.gene_expression.color_no_exp?e.gene_expression.color_no_exp:"#2C2C2C").style("margin-right","10px");x.append("div").style("display","inline-block").style("font-size","13px").html(" Cells without Expression");const f=e.menu_output.append("div");f.append("div").style("display","block").style("padding","5px").html("Violinplot / Boxplot of </br> Expression by");const h=f.append("select").style("display","block");h.append("option").attr("value","none").text("-- Select--");if(e.cells.categories){e.cells.categories.forEach(((e,t)=>{h.append("option").attr("value",e.columnidx).text(e.name)}))}h.on("change",(()=>{const t=e.gene_expression.genes[e.use_gene_index];const n=e.cells.categories[parseInt(h.node().selectedIndex)-1];const o={genome:e.genome.name,getgeneboxplot:{expfile:e.gene_expression.file,chr:t.chr,start:t.start,stop:t.stop,genename:t.gene,cellfile:e.cells.file,barcodecolumnidx:e.cells.barcodecolumnidx,categorycolumnidx:parseInt(h.node().value),delimiter:e.cells.delimiter||"\t",category_customorder:n.customorder&&n.values?true:false,category_autoorder:!n.customorder?true:false,cat_values:n.values,values_count:n.values_count}};l("singlecell",o).then((t=>{if(t.error)throw t.error;e.box_plot=new c;X(t,e,h.node().value)}))}))}q(e)}function q(e){if(e.show_zoom){const t=e.menu_output.append("div").style("display","block").text("Zoom").style("margin","10px 5px 5px 5px").style("padding-top","10px").style("border-top","1px solid #929292");const n=t.append("div").style("margin-left","10px").style("display","inline-block").style("padding-left","0px").style("padding-right","2px").style("float","right").style("font-size",".6em").text("MOVE TO CONFIG").on("click",(()=>{t.node().remove();e.show_zoom=false})).on("mouseover",(()=>{n.style("text-decoration","underline")})).on("mouseout",(()=>{n.style("text-decoration","none")}));e.zoom_slider=t.append("input").style("display","block").style("padding","5px").attr("type","range").attr("min",1).attr("max",100).attr("value",e.camera.fov).style("direction","rtl").on("change",(()=>{e.camera.fov=parseInt(e.zoom_slider.node().value);e.camera.updateProjectionMatrix()})).on("mousedown",(e=>{e.stopPropagation()}))}}function J(e){e.menu.clear().showunder(e.menu_button.node());if(e.cells.categories){e.cells.categories.forEach(((t,n)=>{if(n!=e.use_category_index){e.menu.d.append("div").text(t.name).attr("class","sja_menuoption").on("click",(async()=>{e.menu.hide();e.use_category_index=n;B(e)})).append("span").attr("font-family",p).style("display",t.values_count?"inline-block":"none").style("font-size",".8em").style("float","right").style("color","#777").style("padding","3px 5px").html(t.values_count?"&nbsp;n="+t.values_count:"")}}))}if(e.gene_expression){e.menu.d.append("div").text("Gene expression").attr("class","sja_menuoption").on("click",(()=>{e.menu.clear();const t=e.menu.d.append("div").style("padding","10px");u({div:t.append("div"),resultdiv:t.append("div"),genome:e.genome.name,callback:async t=>{const n=await g(e.genome.name,t);if(n&&n[0]){const o=n[0];if(!e.gene_expression.genes)e.gene_expression.genes=[];const a=e.gene_expression.genes.findIndex((e=>e.gene==t));if(a==-1){e.gene_expression.genes.push({gene:t,chr:o.chr,start:o.start,stop:o.stop});e.use_gene_index=e.gene_expression.genes.length-1}else{e.use_gene_index=a}}e.use_category_index=null;e.menu.hide();B(e)}})}));e.menu.d.append("div").text("Multi-Gene Heatmap").attr("class","sja_menuoption").on("click",(()=>{Q(e)}));if(e.gene_expression.genes){if(e.gene_expression.genes.length>1){e.menu.d.append("div").style("padding","5px 10px").text("Previously Selected")}e.gene_expression.genes.forEach(((t,n)=>{if(n!=e.use_gene_index){e.menu.d.append("div").text("Gene : "+t.gene).attr("class","sja_menuoption").on("click",(async()=>{e.menu.hide();e.use_category_index=null;e.use_gene_index=n;B(e)}))}}))}}}function K(e){e.settings.clear().showunder(e.settings_btn.node());const t=e.settings.d.append("div").style("display","block").text("Background Color").style("margin","5px");const n=t.append("div").style("margin","5px").style("display","block");const o=Math.random(),a=Math.random(),s=Math.random();const i=n.append("input").attr("type","radio").style("display","inline-block").attr("name",o).attr("id",a).on("change",c);n.append("label").style("display","inline-block").style("font-size",".8em").text("Black").style("padding-left","10px").attr("for",a);const r=t.append("div").style("margin","5px").style("display","block");const l=r.append("input").attr("type","radio").style("display","inline-block").attr("name",o).attr("id",s).on("change",c);r.append("label").style("display","inline-block").style("font-size",".8em").text("White").style("padding-left","10px").attr("for",s);if(e.use_background_color==0){l.property("checked",1)}else{i.property("checked",1)}function c(){const t=e.background_color=="black";e.scene.background=new THREE.Color(t?16777215:0);e.use_background_color=t?0:1;e.background_color=t?"white":"black"}const p=e.settings.d.append("div").style("display","block").text("Point Size").style("margin","20px 5px");const d=p.append("input").style("display","block").style("padding","5px").attr("type","range").attr("min",1).attr("max",70).attr("value",e.scene.children[1].material.size*100).on("change",(()=>{e.scene.children[1].material.size=d.node().value/100}));if(e.show_zoom==false){const t=e.settings.d.append("div").style("display","block").text("Zoom").style("margin","20px 5px");const n=t.append("div").style("margin-left","10px").style("display","inline-block").style("padding-left","0px").style("padding-right","2px").style("float","right").style("font-size",".6em").html("MOVE TO </br>LEGEND PANEL").on("click",(()=>{t.node().remove();e.show_zoom=true;q(e)})).on("mouseover",(()=>{n.style("text-decoration","underline")})).on("mouseout",(()=>{n.style("text-decoration","none")}));e.zoom_slider=t.append("input").style("display","block").style("padding","5px").attr("type","range").attr("min",5).attr("max",70).attr("value",e.camera.fov).style("direction","rtl").on("change",(()=>{e.camera.fov=parseInt(e.zoom_slider.node().value);e.camera.updateProjectionMatrix()}))}e.settings.d.append("div").style("margin","5px").text("Panning");e.settings.d.append("div").style("font-size",".8em").style("text-align","center").style("margin-bottom","10px").html('<p style="margin:3px;">Right mouse click </br>+ Mouse move</p>');if(!e.canvas_2d){e.settings.d.append("div").style("margin","5px").text("Rotate");e.settings.d.append("div").style("font-size",".8em").style("text-align","center").style("margin-bottom","10px").html('<p style="margin:3px;">Left mouse click </br>+ Mouse move</p>')}e.settings.d.append("div").attr("class","sja_menuoption").text("Reset view").style("width","80px").style("margin","auto").style("margin-top","15px").style("margin-bottom","15px").on("click",(()=>{l.property("checked",1);e.scene.background=new THREE.Color(e.background_color?e.background_color:16777215);d.node().value=e.point_size?e.point_size*100:e.canvas_2d?30:5;e.scene.children[1].material.size=e.point_size?e.point_size:e.canvas_2d?.3:.05;e.camera.position.z=e.data_sphere_r*3;e.camera.position.x=e.canvas_2d?0:20;e.camera.position.y=e.canvas_2d?0:-10;const t=45;e.camera.fov=parseInt(t);e.camera.updateProjectionMatrix();e.zoom_slider.node().value=t;if(e.canvas_2d){e.camera.up.set(0,1,0)}else{e.camera.up.set(0,0,1)}e.controls.target.set(e.center.x,e.center.y,e.center.z)}));const u=e.settings.d.append("div").attr("class","sja_menuoption").style("padding","5px").style("width","80px").style("margin","auto").style("margin-top","15px").style("margin-bottom","15px").html("<b>&#10697;</b> Capture").on("mousedown",(()=>{const t=e.renderer.domElement.toDataURL();let n=document.createElement("img");n.src=t;u.append("span").style("display","none").html('<a download="scRNA_'+(new Date).toLocaleString()+'.png" href="'+n.src+'" title="ImageName">Camera</a>')})).on("mouseup",(()=>{u.select("a").node().click();u.selectAll("span").remove()}))}function Q(e){e.menu.clear();e.gene_expression.heatmap_genes=[];e.use_heatmap_category_index=null;const t=e.menu.d.append("div").style("display","block").style("padding","10px");const n=t.append("div").style("display","block");const o=n.append("div").style("display","inline-block").style("vertical-align","top").style("padding","10px");o.append("div").style("display","block").style("padding-bottom","5px").text("Add Genes");o.append("textarea").attr("rows","4").attr("cols","20").attr("placeholder","Type gene names seperated by space");const a=t.append("div");a.append("div").style("display","block").style("padding-bottom","5px").style("padding-left","10px").text("Heatmap by");const s=a.append("select").style("display","block").style("margin-left","10px");s.append("option").attr("value","none").text("-- Select--");if(e.cells.categories){e.cells.categories.forEach(((e,t)=>{s.append("option").attr("value",e.columnidx).text(e.name)}))}s.on("change",(()=>{e.use_heatmap_category_index=parseInt(s.node().value)}));t.append("button").text("Heatmap").style("display","block").style("float","right").style("margin","5px").on("click",(async()=>{const t=o.select("textarea").node().value;const n=t.split(" ");for(const t of n){const n=await g(e.genome.name,t);if(n&&n[0]){const o=n[0];if(!e.gene_expression.heatmap_genes)e.gene_expression.heatmap_genes=[];const a=e.gene_expression.heatmap_genes.findIndex((e=>e.gene==t));if(a==-1){e.gene_expression.heatmap_genes.push({gene:t,chr:o.chr,start:o.start,stop:o.stop})}}}const a={genome:e.genome.name,getheatmap:{expfile:e.gene_expression.file,gene_list:e.gene_expression.heatmap_genes,cellfile:e.cells.file,barcodecolumnidx:e.cells.barcodecolumnidx,categorycolumnidx:parseInt(s.node().value),delimiter:e.cells.delimiter||"\t"}};l("singlecell",a).then((t=>{if(t.error)throw t.error;e.menu.hide();ee(t,e,s.node().value)}))}))}function X(e,t,n){const o=t.gene_expression.genes[t.use_gene_index];const a=m({x:600,y:400});const s=t.cells.categories.find((e=>e.columnidx==n));a.header.text("Violinplot/Boxplot for "+o.gene+" Expression by "+s.name);const i=a.pane.append("div").style("margin","10px 10px 10px 15px");const r=a.pane.append("svg").style("margin","10px");const c=i.append("select").style("display","inline-block");c.append("option").attr("value","violin").text("Violin Plot");c.append("option").attr("value","box").text("Box Plot");c.on("change",(()=>{u()}));const p=i.append("div").style("display","inline-block").style("padding-left","15px").text("Cells without expression");const d=p.append("select").style("display","inline-block").style("margin-left","5px");d.append("option").attr("value","include").text("Include");d.append("option").attr("value","exclude").text("Exclude");d.on("change",(()=>{u()}));Y(e,r);function u(){const e=t.gene_expression.genes[t.use_gene_index];const o={genome:t.genome.name,getgeneboxplot:{expfile:t.gene_expression.file,chr:e.chr,start:e.start,stop:e.stop,genename:e.gene,cellfile:t.cells.file,barcodecolumnidx:t.cells.barcodecolumnidx,categorycolumnidx:parseInt(n),delimiter:t.cells.delimiter||"\t",category_customorder:s.customorder&&s.values?true:false,category_autoorder:!s.customorder?true:false,cat_values:s.values,values_count:s.values_count}};if(d.node().value=="exclude"){o.getgeneboxplot.exclude_cells=true}l("singlecell",o).then((e=>{if(e.error)throw e.error;if(c.node().value=="box")$(e,r);else if(c.node().value=="violin")Y(e,r)}))}}function Y(e,t){t.selectAll("*").remove();let n=50,o=200,a=2,s=30;const i=te(e.boxplots,t);const r=d().range([0,o]).domain([e.minexpvalue,e.maxexpvalue]);const l=d().range([n,0]).domain([0,1]);const c=e.boxplots.length*(n+a)+s;const u=o+i+20;t.transition().attr("width",u).attr("height",c);if(e.boxplots){e.boxplots.forEach(((o,c)=>{const d=t.append("g").attr("transform","translate("+i+","+(c*(n+a)+s)+")");d.append("text").text(o.category+" ("+o.numberofcells+")").attr("transform","translate(-4,"+n/2+")").attr("text-anchor","end").attr("font-size",15).attr("font-family",p).attr("dominant-baseline","central");if(o.density){const t=Math.max(...o.density);z().x((function(t,n){return r(n*e.maxexpvalue/o.density.length)})).y((function(e){return l(e/t)/2})).curve(A);const a=E().x((function(t,n){return r(n*e.maxexpvalue/o.density.length)})).y0((function(e){const o=l(e/t)/2;return n-o})).y1((function(e){return l(e/t)/2})).curve(A);d.append("path").datum(o.density).attr("class","area").attr("d",a).style("fill",o.color).style("stroke","black").style("stroke-width",.5)}}));const o=v().scale(r).ticks(5);t.append("g").attr("class","legend axis").attr("transform","translate("+i+","+(s-10)+")").call(o)}}function $(e,t){t.selectAll("*").remove();let n=36,o=200,a=16,s=30;const i=te(e.boxplots,t);const r=d().range([0,o]).domain([e.minexpvalue,e.maxexpvalue]);d().range([n,0]).domain([0,1]);const l=e.boxplots.length*(n+a)+s;const c=o+i+20;t.transition().attr("width",c).attr("height",l);if(e.boxplots){e.boxplots.forEach(((e,o)=>{const l=t.append("g").attr("transform","translate("+i+","+(o*(n+a)+s)+")");l.append("text").text(e.category+" ("+e.numberofcells+")").attr("transform","translate(-4,"+n/2+")").attr("text-anchor","end").attr("font-size",15).attr("font-family",p).attr("dominant-baseline","central");if(e.p75){l.append("line").attr("x1",r(e.w1)).attr("y1",n/2).attr("x2",r(e.w2)).attr("y2",n/2).attr("stroke-width",2).attr("stroke","black");l.append("rect").attr("x",r(e.p25)).attr("y",0).attr("width",r(e.p75-e.p25)).attr("height",n).attr("fill",e.color);l.append("line").attr("x1",r(e.w1)).attr("y1",0).attr("x2",r(e.w1)).attr("y2",n).attr("stroke-width",2).attr("stroke","black");l.append("line").attr("x1",r(e.p50)).attr("y1",0).attr("x2",r(e.p50)).attr("y2",n).attr("stroke-width",2).attr("stroke","white");l.append("line").attr("x1",r(e.w2)).attr("y1",0).attr("x2",r(e.w2)).attr("y2",n).attr("stroke-width",2).attr("stroke","black");if(e.out){for(const t of e.out){l.append("circle").attr("cx",r(t.value)).attr("cy",n/2).attr("r",2).attr("fill","#901739")}}}}));const o=v().scale(r).ticks(5);t.append("g").attr("class","legend axis").attr("transform","translate("+i+","+(s-10)+")").call(o)}}function ee(e,t,n){const o=m({x:600,y:400});const a=t.cells.categories.find((e=>e.columnidx==n));o.header.text("Heatmap for Gene Expression by "+a.name);const s=o.pane.append("svg").style("margin","10px");let i=[];for(const t of e.gene_heatmap)i.push(t.genename);let r=[];e.gene_heatmap.forEach(((t,n)=>{e.gene_heatmap[n].heatmap.forEach((e=>{r.push(e.mean)}))}));const l=Math.max(...r);let c=[];for(const t of e.gene_heatmap[0].heatmap)c.push(t.category+" ("+t.numberofcells+")");let p=20,d=80,u=2,g=30,y=60;const x=te(e.gene_heatmap[0].heatmap,s);const f=(p+u)*c.length+g;const h=(d+u)*i.length+x+y+20;s.transition().attr("width",h).attr("height",f);const _=C().range([0,(d+u)*i.length]).domain(i).padding(.05);s.append("g").style("font-size",15).attr("transform","translate("+x+",0)").call(b(_).tickSize(0)).select(".domain").remove();const v=C().range([(p+u)*c.length,0]).domain(c).padding(.05);s.append("g").style("font-size",15).attr("transform","translate("+x+","+g+")").call(k(v).tickSize(0)).select(".domain").remove();var z=S().interpolator(w).domain([0,l]);const E=o.pane.append("div").style("position","absolute").attr("class","tooltip").style("background-color","white").style("border","solid").style("border-width","2px").style("border-radius","5px").style("padding","5px").style("opacity",0);e.gene_heatmap.forEach(((t,n)=>{e.gene_heatmap[n].heatmap.forEach(((e,n)=>{const o=s.append("g").attr("transform","translate("+x+","+g+")");o.append("rect").attr("x",_(t.genename)).attr("y",v(e.category+" ("+e.numberofcells+")")).attr("width",_.bandwidth()).attr("height",v.bandwidth()).style("fill",z(e.mean)).style("stroke-width",4).style("stroke","none").style("opacity",.8).on("mouseover",(function(t){E.transition().duration(200).style("opacity",.9);E.html("Mean Expression: "+e.mean).style("left",j(t,this)[0]+70+"px").style("top",j(t,this)[1]+20+"px")})).on("mouseout",(function(){E.transition().duration(500).style("opacity",0)}))}))}));const M=z.ticks(10).reverse();M.unshift(l.toFixed(2));const I=s.selectAll(".legend").data(M).enter().append("g").attr("class","legend").attr("transform",(function(e,t){return"translate("+(h-y)+","+(30+t*20)+")"}));I.append("rect").attr("width",20).attr("height",20).style("fill",z).style("opacity",.8);I.append("text").attr("x",26).attr("y",10).attr("dy",".35em").text(String)}function te(e,t){let n=0;for(const o of e){t.append("text").text(o.category+" ("+o.numberofcells+")").attr("font-family",p).attr("font-size",15).each((function(){n=Math.max(n,this.getBBox().width)})).remove()}return n+4}function ne(e){return new Promise(((t,n)=>{const o=document.createElement("script");o.setAttribute("src",sessionStorage.getItem("hostURL")+e);document.head.appendChild(o);o.onload=t}))}async function oe(e,t){if(!e.legendimg)return;const n=t.holder.append("div").style("margin-top","5px");t.legendimg=e.legendimg;t.legend={holder:n,legendcolor:"#7D6836"};let o=!e.foldlegend;n.append("div").text("LEGEND").attr("class","sja_clb").style("display","inline-block").style("font-size",".7em").style("color",t.legend.legendcolor).style("font-family",p).on("click",(()=>{if(o){o=false;y(a)}else{o=true;x(a)}}));const a=t.holder.append("div").style("border-top","solid 1px "+t.legend.legendcolor).style("background-color","#FCFBF7");t.legend.holder=a.append("table").style("border-spacing","15px").style("border-collapse","separate");const[s,i]=h(t,t.legendimg.name||"");const r=await f("img?file="+t.legendimg.file);if(r.error){i.text(r.error);return}let l=true;const c=i.append("img").attr("class","sja_clbb").attr("src",r.src).style("height","80px");c.on("click",(()=>{if(l){l=false;c.transition().style("height",t.legendimg.height?t.legendimg.height+"px":"auto")}else{l=true;c.transition().style("height","80px")}}))}export{L as init};
@@ -1 +1 @@
1
- import{S as e,ac as t}from"./app-f91922b4.js";import{r as o}from"./table-d6c411fd.js";const a="hg38";const r="GDC";const l=[{label:"Case"},{label:"Project"},{label:"Primary Site"},{label:"Disease Type"},{label:"Sample Type"}];async function s({holder:e,filter0:t,callbackOnRender:o,debugmode:a=false}){const r={};if(typeof o=="function"){o(r)}const l={errDiv:e.append("div"),controlDiv:e.append("div"),tableDiv:e.append("div"),opts:{filter0:t}};await n(l);return r}async function n(s){s.tableDiv.selectAll("*").remove();const n=s.tableDiv.append("div").text("Loading...");let c;{const o={genome:a,dslabel:r};if(s.opts.filter0)o.filter0=s.opts.filter0;try{c=await e("termdb/singlecellSamples",{body:o});if(c.error)throw c.error}catch(e){n.remove();t(s.errDiv,e);return}}console.log(c);n.remove();const p=[];const d=[];for(const e of c.samples){for(const t of e.experiments){const o=[{value:e.sample},{value:e["case.project.project_id"]},{value:e["case.primary_site"]},{value:e["case.disease_type"]},{value:t.sampleType}];p.push(o);d.push(t.experimentID)}}o({rows:p,columns:l,resize:true,div:s.tableDiv.append("div"),noButtonCallback:e=>{i(d[e],s)}})}async function i(o,l){l.tableDiv.selectAll("*").remove();const s=l.tableDiv.append("div").text("Loading...");let n;{const i={genome:a,dslabel:r,sample:o};try{n=await e("termdb/singlecellData",{body:i});if(n.error)throw n.error}catch(e){s.remove();t(l.errDiv,e);return}}console.log(n);s.remove()}export{s as gdcSinglecellUi};
1
+ import{S as e,ac as t}from"./app-71453429.js";import{r as a}from"./table-1dae543a.js";const o="hg38";const r="GDC";const l=[{label:"Case"},{label:"Project"},{label:"Primary Site"},{label:"Disease Type"},{label:"Sample Type"}];async function s({holder:e,filter0:t,callbackOnRender:a,debugmode:o=false}){const r={};if(typeof a=="function"){a(r)}const l={errDiv:e.append("div"),controlDiv:e.append("div"),tableDiv:e.append("div"),opts:{filter0:t}};await n(l);return r}async function n(s){s.tableDiv.selectAll("*").remove();const n=s.tableDiv.append("div").text("Loading...");let c;{const a={genome:o,dslabel:r};if(s.opts.filter0)a.filter0=s.opts.filter0;try{c=await e("termdb/singlecellSamples",{body:a});if(c.error)throw c.error}catch(e){n.remove();t(s.errDiv,e);return}}console.log(c);n.remove();const p=[];const d=[];for(const e of c.samples){for(const t of e.experiments){const a=[{value:e.sample},{value:e["case.project.project_id"]},{value:e["case.primary_site"]},{value:e["case.disease_type"]},{value:t.sampleType}];p.push(a);d.push(t.experimentID)}}a({rows:p,columns:l,resize:true,div:s.tableDiv.append("div"),noButtonCallback:e=>{i(d[e],s)}})}async function i(a,l){l.tableDiv.selectAll("*").remove();const s=l.tableDiv.append("div").text("Loading...");let n;{const i={genome:o,dslabel:r,sample:a};try{n=await e("termdb/singlecellData",{body:i});if(n.error)throw n.error}catch(e){s.remove();t(l.errDiv,e);return}}console.log(n);s.remove()}export{s as gdcSinglecellUi};
@@ -1 +1 @@
1
- import{aD as t,aC as e}from"./app-f91922b4.js";import{mayRestrictAncestry as i,makeSnpSelect as r}from"./snplst-751cea95.js";import{f as n}from"./FilterStateless-ad3df967.js";import{g as a}from"./FilterRxComp-0e75dd8d.js";import"./snplst.sampleSum-e47d05f0.js";import"./table-d6c411fd.js";const s="Variants in a locus";function o(e){return{getPillName(){return e.term.name},getPillStatus(){if(!e.term||!e.q)return;if(!e.term.snps)throw`Missing term.snps [snplocs.ts getPillStatus()]`;let t=`${e.q.chr}:${e.q.start}-${e.q.stop}, ${e.term.snps.length} variant${e.term.snps.length>1?"s":""}`;if(e.term.reachedVariantLimit){t+='<span style="margin-left: 6px; background:#aaa; font-size:1em;font-style: normal; border-radius: 7px;color:white;padding:0px 5px;">&#9888;<span>'}return{text:t}},validateQ(t){d(t)},showEditMenu(i){return t(this,void 0,void 0,(function*(){yield l(e,i)}))}}}function l(n,o){var l;return t(this,void 0,void 0,(function*(){const d=o.append("div").style("margin","15px");const c=yield i(n,d);const u=e({genome:n.opts.genomeObj,tip:n.dom.tip2,row:d.append("div").style("margin-top","20px"),defaultCoord:n.q&&n.q.chr?{chr:n.q.chr,start:n.q.start,stop:n.q.stop}:null});d.select(".sja_genesearchinput").style("margin","0px");d.append("span").style("margin","5px 0px").style("display","inline-block").style("opacity",.4).style("font-size",".7em").html('"Gene": Gene name (e.g. AKT1)</br>"Position": chr:start-stop (e.g. chr1:5000-6000)</br>"dbSNP": dbSNP accession (e.g. rs1042522)');yield f(n,(l=n.q)===null||l===void 0?void 0:l.variant_filter,d);const[v,h,y]=r(d.append("div").attr("class","sjpp-snp-select").style("margin-top","15px"),n,"snplocus");if(n.usecase.target=="dataDownload")d.select(".sjpp-snp-select").style("display","none");const g=d.append("div").style("margin-top","15px");g.append("button").style("margin-top","15px").text("Submit").on("click",(e=>t(this,void 0,void 0,(function*(){if(!u.chr)return window.alert("Invalid coordinate");e.target.disabled=true;e.target.innerHTML="Validating input...";if(n.term);else{n.term={id:m()}}if(!n.q)n.q={};n.term.type="snplocus";n.q.chr=u.chr;n.q.start=u.start;n.q.stop=u.stop;n.term.name=s;delete n.term.snps;n.q.variant_filter=a(n.variantFilter.active);yield p(n);{const t=Number(v.property("value"));n.q.AFcutoff=t<0||t>=100?5:t}n.q.alleleType=h.property("selectedIndex");n.q.geneticModel=y.property("selectedIndex");if(c){n.q.restrictAncestry=c.node().options[c.property("selectedIndex")].__ancestry_obj}n.runCallback()}))));g.append("span").style("padding-left","15px").style("opacity",.8).style("font-size",".8em").text(n.usecase.target=="dataDownload"?"":"Variants will be treated individually in separate regression models")}))}function p(e){return t(this,void 0,void 0,(function*(){const t=yield e.vocabApi.validateSnps(e.q);if(t.error)throw t.error;e.q.cacheid=t.cacheid;e.term.snps=t.snps;e.term.reachedVariantLimit=t.reachedVariantLimit}))}function d(t){const e=t.q;if(!Number.isFinite(e.AFcutoff))throw"AFcutoff is not number";if(e.AFcutoff<0||e.AFcutoff>100)throw"AFcutoff is not within 0 to 100";if(![0,1].includes(e.alleleType))throw"alleleType value is not one of 0/1";if(![0,1,2,3].includes(e.geneticModel))throw"geneticModel value is not one of 0/1";if(!e.chr)throw"chr missing";if(!Number.isInteger(e.start))throw"start coordinate is not integer";if(!Number.isInteger(e.stop))throw"stop coordinate is not integer";if(e.start<0)throw"start < 0";if(e.stop<=e.start)throw"stop <= start"}function c(e,i){return t(this,void 0,void 0,(function*(){try{d(e)}catch(t){throw"snplocus validateQ(): "+t}if(!e.term.name)e.term.name=s;if(e.id==undefined||e.id==""){if(e.term.id==undefined||e.term.id==""){e.term.id=m()}e.id=e.term.id}else{if(e.term.id==undefined||e.term.id==""){e.term.id=e.id}}yield p({term:e.term,q:e.q,vocabApi:i})}))}function m(){return"snplocus"+Math.random()}function f(e,i,r,a){return t(this,void 0,void 0,(function*(){if(!e.variantFilter){e.variantFilter=yield e.vocabApi.get_variantFilter()}if(!e.variantFilter.terms){return}if(!e.variantFilter.opts)throw"variantFilter.opts{} missing";if(!e.variantFilter.filter)throw".filter missing from variantFilter{}";if(!Array.isArray(e.variantFilter.terms)||e.variantFilter.terms.length==0)throw"variantFilter.terms[] is not non-empty array";if(i){e.variantFilter.active=JSON.parse(JSON.stringify(i))}else{e.variantFilter.active=JSON.parse(JSON.stringify(e.variantFilter.filter))}const s=r.append("div").style("margin-top","15px");s.append("span").text("VARIANT FILTERS").style("font-size",".8em").style("opacity",.5);const o=s.append("div");n({joinWith:e.variantFilter.opts.joinWith,emptyLabel:"+Variant Filter",holder:o,vocab:{terms:e.variantFilter.terms},callback:i=>t(this,void 0,void 0,(function*(){e.variantFilter.active=i;if(a)yield a()}))}).main(e.variantFilter.active)}))}export{c as fillTW,o as getHandler};
1
+ import{aD as t,aC as e}from"./app-71453429.js";import{mayRestrictAncestry as i,makeSnpSelect as r}from"./snplst-2284d5ce.js";import{f as n}from"./FilterStateless-8f30f856.js";import{g as a}from"./FilterRxComp-fc769f34.js";import"./snplst.sampleSum-e47d05f0.js";import"./table-1dae543a.js";const s="Variants in a locus";function o(e){return{getPillName(){return e.term.name},getPillStatus(){if(!e.term||!e.q)return;if(!e.term.snps)throw`Missing term.snps [snplocs.ts getPillStatus()]`;let t=`${e.q.chr}:${e.q.start}-${e.q.stop}, ${e.term.snps.length} variant${e.term.snps.length>1?"s":""}`;if(e.term.reachedVariantLimit){t+='<span style="margin-left: 6px; background:#aaa; font-size:1em;font-style: normal; border-radius: 7px;color:white;padding:0px 5px;">&#9888;<span>'}return{text:t}},validateQ(t){d(t)},showEditMenu(i){return t(this,void 0,void 0,(function*(){yield l(e,i)}))}}}function l(n,o){var l;return t(this,void 0,void 0,(function*(){const d=o.append("div").style("margin","15px");const c=yield i(n,d);const u=e({genome:n.opts.genomeObj,tip:n.dom.tip2,row:d.append("div").style("margin-top","20px"),defaultCoord:n.q&&n.q.chr?{chr:n.q.chr,start:n.q.start,stop:n.q.stop}:null});d.select(".sja_genesearchinput").style("margin","0px");d.append("span").style("margin","5px 0px").style("display","inline-block").style("opacity",.4).style("font-size",".7em").html('"Gene": Gene name (e.g. AKT1)</br>"Position": chr:start-stop (e.g. chr1:5000-6000)</br>"dbSNP": dbSNP accession (e.g. rs1042522)');yield m(n,(l=n.q)===null||l===void 0?void 0:l.variant_filter,d);const[v,h,y]=r(d.append("div").attr("class","sjpp-snp-select").style("margin-top","15px"),n,"snplocus");if(n.usecase.target=="dataDownload")d.select(".sjpp-snp-select").style("display","none");const g=d.append("div").style("margin-top","15px");g.append("button").style("margin-top","15px").text("Submit").on("click",(e=>t(this,void 0,void 0,(function*(){if(!u.chr)return window.alert("Invalid coordinate");e.target.disabled=true;e.target.innerHTML="Validating input...";if(n.term);else{n.term={id:f()}}if(!n.q)n.q={};n.term.type="snplocus";n.q.chr=u.chr;n.q.start=u.start;n.q.stop=u.stop;n.term.name=s;delete n.term.snps;n.q.variant_filter=a(n.variantFilter.active);yield p(n);{const t=Number(v.property("value"));n.q.AFcutoff=t<0||t>=100?5:t}n.q.alleleType=h.property("selectedIndex");n.q.geneticModel=y.property("selectedIndex");if(c){n.q.restrictAncestry=c.node().options[c.property("selectedIndex")].__ancestry_obj}n.runCallback()}))));g.append("span").style("padding-left","15px").style("opacity",.8).style("font-size",".8em").text(n.usecase.target=="dataDownload"?"":"Variants will be treated individually in separate regression models")}))}function p(e){return t(this,void 0,void 0,(function*(){const t=yield e.vocabApi.validateSnps(e.q);if(t.error)throw t.error;e.q.cacheid=t.cacheid;e.term.snps=t.snps;e.term.reachedVariantLimit=t.reachedVariantLimit}))}function d(t){const e=t.q;if(!Number.isFinite(e.AFcutoff))throw"AFcutoff is not number";if(e.AFcutoff<0||e.AFcutoff>100)throw"AFcutoff is not within 0 to 100";if(![0,1].includes(e.alleleType))throw"alleleType value is not one of 0/1";if(![0,1,2,3].includes(e.geneticModel))throw"geneticModel value is not one of 0/1";if(!e.chr)throw"chr missing";if(!Number.isInteger(e.start))throw"start coordinate is not integer";if(!Number.isInteger(e.stop))throw"stop coordinate is not integer";if(e.start<0)throw"start < 0";if(e.stop<=e.start)throw"stop <= start"}function c(e,i){return t(this,void 0,void 0,(function*(){try{d(e)}catch(t){throw"snplocus validateQ(): "+t}if(!e.term.name)e.term.name=s;if(e.id==undefined||e.id==""){if(e.term.id==undefined||e.term.id==""){e.term.id=f()}e.id=e.term.id}else{if(e.term.id==undefined||e.term.id==""){e.term.id=e.id}}yield p({term:e.term,q:e.q,vocabApi:i})}))}function f(){return"snplocus"+Math.random()}function m(e,i,r,a){return t(this,void 0,void 0,(function*(){if(!e.variantFilter){e.variantFilter=yield e.vocabApi.get_variantFilter()}if(!e.variantFilter.terms){return}if(!e.variantFilter.opts)throw"variantFilter.opts{} missing";if(!e.variantFilter.filter)throw".filter missing from variantFilter{}";if(!Array.isArray(e.variantFilter.terms)||e.variantFilter.terms.length==0)throw"variantFilter.terms[] is not non-empty array";if(i){e.variantFilter.active=JSON.parse(JSON.stringify(i))}else{e.variantFilter.active=JSON.parse(JSON.stringify(e.variantFilter.filter))}const s=r.append("div").style("margin-top","15px");s.append("span").text("VARIANT FILTERS").style("font-size",".8em").style("opacity",.5);const o=s.append("div");n({joinWith:e.variantFilter.opts.joinWith,emptyLabel:"+Variant Filter",holder:o,vocab:{terms:e.variantFilter.terms},callback:i=>t(this,void 0,void 0,(function*(){e.variantFilter.active=i;if(a)yield a()}))}).main(e.variantFilter.active)}))}export{c as fillTW,o as getHandler};
@@ -1 +1 @@
1
- import{aD as e}from"./app-f91922b4.js";import{mayRunSnplstTask as t}from"./snplst.sampleSum-e47d05f0.js";function n(t){return{getPillName(){return t.term.name},getPillStatus(){var e;if(!((e=t.term)===null||e===void 0?void 0:e.snps))return;const n=t.term.snps.reduce(((e,t)=>e+(t.invalid||!t.alleles?1:0)),0);if(n)return{text:n+" invalid"}},validateQ(e){c(e)},showEditMenu(n){return e(this,void 0,void 0,(function*(){yield s(t,n)}))}}}function s(t,n){var s,a;return e(this,void 0,void 0,(function*(){const c=n.append("div").style("margin","15px");const f=yield u(t,c);const x=c.append("div");const g=x.append("textarea").attr("rows",5).attr("cols",20).attr("placeholder","Enter variants");const b=x.append("div").style("opacity",.8).style("font-size",".8em");b.append("div").html(`Enter a list of variants (dbSNP accessions). One variant per line. Max 500 allowed.${t.usecase.target=="dataDownload"?"":"<br>Effect alleles (alleles tested against in the analysis) can be specified here or<br>after variant validation."}`);const h=[{id:"rs1641548",effectAllele:"T"},{id:"rs4968204",effectAllele:"C"},{id:"rs9893249",effectAllele:"T"},{id:"rs1042522",effectAllele:"G"}];const A=b.append("ul").style("display","inline-block").style("list-style-type","none").style("padding","0px");const q=b.append("ul").style("display",t.usecase.target=="dataDownload"?"none":"inline-block").style("list-style-type","none").style("padding","0px").style("margin-left","40px");A.append("li").style("text-decoration","underline").text("Example:");q.append("li").style("text-decoration","underline").text("Example (with effect alleles):");for(const e of h){A.append("li").text(e.id);q.append("li").html(`${e.id}&nbsp;${e.effectAllele}`)}const E=x.append("div").style("margin-top","15px").append("button").text("Validate variants").on("click",(()=>e(this,void 0,void 0,(function*(){const e=r(g);if(!e.length)return window.alert("No valid variants");if(!t.term){t.term={id:y(),type:"snplst"}}if(t.term.snps){for(const n of e){if(t.term.snps.find((e=>e.rsid==n.rsid)))continue;t.term.snps.push(n)}}else{t.term.snps=e}t.term.name=o(t.term.snps);if(!t.q)t.q={};t.doNotHideTipInMain=true;if(t.dom.pill_termname){t.dom.pill_termname.text(t.term.name)}E.text("Validating...").property("disabled",true);try{yield p(t)}catch(e){alert("Error: "+(e.message||e));E.text("Validate variants").property("disabled",false);return}if(!Number.isFinite(t.q.AFcutoff)){t.q.AFcutoff=5;I.property("value",t.q.AFcutoff)}if(!Number.isInteger(t.q.alleleType)){t.q.alleleType=e.find((e=>e.effectAllele))?2:0;F.property("selectedIndex",t.q.alleleType);c.select(".sjpp-allele-type-hint").text(v(F))}if(!Number.isInteger(t.q.geneticModel)){t.q.geneticModel=0;T.property("selectedIndex",t.q.geneticModel)}if(!Number.isInteger(t.q.missingGenotype)){t.q.missingGenotype=0;k.property("selectedIndex",t.q.missingGenotype)}if(f){t.q.restrictAncestry=f.node().options[f.property("selectedIndex")].__ancestry_obj}yield d(t);x.style("display","none");w.style("display","");if(t.dom.snplst_table){i(t,F)}else{l(N,t,F)}}))));const w=c.append("div");w.append("p").append("span").html("&laquo; Back to input").attr("class","sja_clbtext").on("click",(()=>{x.style("display","");w.style("display","none");E.text("Validate variants").property("disabled",false)}));const N=w.append("div").style("margin-bottom","25px");const[I,F,T,k]=m(w.append("div").attr("class","sjpp-snp-select"),t,"snplst");if(t.usecase.target=="dataDownload")w.select(".sjpp-snp-select").style("display","none");const _=w.append("div").style("margin-top","20px");_.append("button").text("Submit").on("click",(()=>e(this,void 0,void 0,(function*(){t.term.snps=t.term.snps.filter((e=>!e.tobe_deleted));if(t.term.snps.find((e=>!e.effectAllele)))return window.alert("Effect allele not specified for one or more variants");t.term.name=o(t.term.snps);if(t.dom.pill_termname){t.dom.pill_termname.text(t.term.name)}try{yield p(t)}catch(e){alert("Error: "+(e.message||e))}{const e=Number(I.property("value"));t.q.AFcutoff=e<0||e>=100?5:e}t.q.alleleType=F.property("selectedIndex");t.q.geneticModel=T.property("selectedIndex");t.q.missingGenotype=k.property("selectedIndex");if(f){t.q.restrictAncestry=f.node().options[f.property("selectedIndex")].__ancestry_obj}yield d(t);if(t.dom.snplst_table){i(t,F)}else{l(N,t,F)}delete t.doNotHideTipInMain;t.runCallback();t.updateUI()}))));_.append("span").style("padding-left","15px").style("opacity",.8).style("font-size",".8em").text(t.usecase.target=="dataDownload"?"":"Variants will be treated as separate covariates in the regression model");if((a=(s=t.term)===null||s===void 0?void 0:s.snps)===null||a===void 0?void 0:a.length){l(N,t,F);x.style("display","none")}else{w.style("display","none")}}))}function l(e,t,n){t.dom.snplst_table=e.append("table");i(t,n);e.append("p").style("opacity",.8).style("font-size",".8em").style("display",t.usecase.target=="dataDownload"?"none":"block").html("Effect alleles are highlighted in red. Click on an allele to set as the effect allele.")}function i(e,t){e.dom.snplst_table.selectAll("*").remove();const n=e.dom.snplst_table.append("tr").style("opacity",.4);const s=[{title:"Variants"},{title:"# genotyped<br>samples"},{title:"Reference allele<br>(frequency)"},{title:"Alternative allele(s)<br>(frequency)"},{title:"Genotype<br>(frequency)"},{title:"Delete"}];if(e.usecase.target=="dataDownload")s.splice(4,1);s.forEach((e=>{n.append("td").html(e.title).style("font-size",".8em").style("text-align","center").style("padding","8px")}));if(!e.term.snps)throw`Missing term.snps [snplst.ts renderSnpEditTable()]`;for(const[t,n]of e.term.snps.entries()){let s=false;if(n.invalid||!n.alleles&&!n.gt2count)s="NOT ANNNOTATED IN COHORT";const i=(t+2)%2?"#eee":"#fff";const o=e.dom.snplst_table.append("tr").style("background",i);o.append("td").text(n.rsid).style("padding","8px");const r=s?s:n.gt2count?Object.values(n.gt2count).reduce(((e,t)=>e+t),0):`Missing sample count for snp`;o.append("td").style("text-align","center").text(r);const a=o.append("td");const p=o.append("td");if(!s){if(!n.alleles)throw`Missing alleles for snp = ${n} [snplst.ts renderSnpEditTable()]`;const t=e.q.snp2effAle?e.q.snp2effAle[n.rsid]:undefined;const s=n.alleles.find((e=>e.isRef));const d=n.alleles.filter((e=>!e.isRef));if(e.usecase.target=="dataDownload"){const e=(s.count*100/(r*2)).toFixed(2);const t=`${s.allele} (${e}%)`;a.style("text-align","center").style("padding","8px").text(t);const n=d.map((e=>{const t=(e.count*100/(r*2)).toFixed(2);return`${e.allele} (${t}%)`})).join(", ");p.style("text-align","center").style("padding","8px").text(n)}else{l(s,a,t,r,n,i,o);for(const e of d.values()){l(e,p,t,r,n,i,o)}}}if(e.usecase.target!="dataDownload"){const t=o.append("td");if(!s){const s=e.q.snp2refGrp?e.q.snp2refGrp[n.rsid]:undefined;if(!n.gt2count)throw`Missing gt2count for snp = ${n} [snplst.ts renderSnpEditTable()]`;for(const[e,l]of Object.entries(n.gt2count)){const n=(l*100/r).toFixed(2);const o=t.append("div").style("display","inline-block").style("border",e==s?"3px solid #ff0000":`3px solid ${i}`);o.append("div").style("display","inline-block").style("padding","3px 5px").text(`${e}`);o.append("div").style("display","inline-block").style("padding","0px 6px 0px 2px").style("font-size",".8em").text("("+`${n}%`+")")}}}const d=o.append("td").style("text-align","center").append("input").attr("type","checkbox").on("change",(()=>{n.tobe_deleted=d.node().checked}))}function l(e,n,s,l,i,o,r){const a=(e.count*100/(l*2)).toFixed(2);const p=n.style("text-align","center").append("button").style("display","inline-block").style("margin","0px 3px").style("padding","3px 7px").style("border-radius","3px").style("background-color","#d9ead3").style("border",e.allele==s?"3px solid #ff0000":`3px solid ${o}`).on("mouseover",(()=>{if(i.effectAllele&&i.effectAllele==e.allele)return;else{p.style("background-color","#fff2cc").style("cursor","pointer")}})).on("mouseout",(()=>{if(i.effectAllele&&i.effectAllele==e.allele)return;else{p.style("background","#d9ead3")}})).on("click",(()=>{i.effectAllele=e.allele;r.selectAll("button").style("border","none");p.style("border","3px solid #ff0000").style("background","#d9ead3");t.selectAll("option").nodes()[2].selected="selected"}));p.append("div").style("display","inline-block").text(`${e.allele} `);p.append("div").style("display","inline-block").style("margin","0px 5px").style("font-size",".8em").text("("+`${a}%`+")")}}function o(e){if(e.length==1){const t=e[0];if(t.rsid)return t.rsid;return t.chr+":"+t.pos}return e.length+" variant"+(e.length>1?"s":"")}function r(e){const t=e.property("value");const n=[];for(const e of t.trim().split("\n")){const[t,s]=e.trim().split(/[\s\t]/);if(!t)continue;if(n.find((e=>e.rsid==t)))continue;const l={rsid:t};if(s)l.effectAllele=s;n.push(l)}if(n.length>500)return n.slice(0,500);return n}function a(e){if(!e.term||!e.term.snps)return"";const t=[];for(const n of e.term.snps){const e=n.rsid+(n.effectAllele?" "+n.effectAllele:"");t.push(e)}return t.join("\n")}function p(t){return e(this,void 0,void 0,(function*(){const e=yield t.vocabApi.validateSnps({text:a(t)});if(e.error)throw e.error;t.q.cacheid=e.cacheid;if(!t.term.snps)throw`Missing term.snps [snplst.ts validateInput()]`;for(const[n,s]of t.term.snps.entries()){const t=e.snps[n];s.snpid=t.snpid;s.invalid=t.invalid}}))}function d(n){return e(this,void 0,void 0,(function*(){const e={cacheid:n.q.cacheid};const s=[];let l;if(n.q.restrictAncestry){if(n.filter){l=structuredClone(n.filter);const e=l.lst.findIndex((e=>{var t,s;return((s=(t=e.tvs)===null||t===void 0?void 0:t.term)===null||s===void 0?void 0:s.id)==n.q.restrictAncestry.tvs.term.id}));if(e!=-1){l.lst[e]={type:"tvs",tvs:n.q.restrictAncestry.tvs}}else{s.push({type:"tvs",tvs:n.q.restrictAncestry.tvs})}}else{s.push({type:"tvs",tvs:n.q.restrictAncestry.tvs})}}else{if(n.filter)s.push(n.filter)}const i={type:"tvslst",join:"and",lst:[...s]};if(l)i.lst.push(l);const o=yield n.vocabApi.getCategories(n.term,i,e);t({term:n.term,q:n.q},o)}))}function c(e){if(!Number.isFinite(e.q.AFcutoff))throw"AFcutoff is not number";if(e.q.AFcutoff<0||e.q.AFcutoff>100)throw"AFcutoff is not within 0 to 100";if(![0,1,2].includes(e.q.alleleType))throw"alleleType value is not one of 0/1";if(![0,1,2,3].includes(e.q.geneticModel))throw"geneticModel value is not one of 0/1";if(![0,1].includes(e.q.missingGenotype))throw"missingGenotype value is not one of 0/1"}function f(t,n){return e(this,void 0,void 0,(function*(){try{c(t)}catch(e){throw"snplst validateQ(): "+e}if(!Array.isArray(t.term.snps))throw"tw.term.snps[] is not an array";if(t.term.snps.length==0)throw"tw.term.snps[] array is 0 length";if(!t.term.name)t.term.name=o(t.term.snps);if(t.id==undefined||t.id==""){if(t.term.id==undefined||t.term.id==""){t.term.id=y()}t.id=t.term.id}else{if(t.term.id==undefined||t.term.id==""){t.term.id=t.id}}yield p({term:t.term,q:t.q,vocabApi:n})}))}function y(){return"snplst"+Math.random()}function m(t,n,s){var l,o,r,a;let p,c,f;{p=t.append("div").style("opacity",.5).style("font-size",".8em").style("margin-bottom","2px").text("EFFECT ALLELE FREQUENCY CUTOFF");n.dom.input_AFcutoff_label=p;const e=t.append("div");c=e.append("input").attr("type","number").attr("min",0).attr("max",100).property("value",5).style("border-color","#858585").style("margin","0px");e.append("span").text("%");let l;if(s=="snplst"){l="Variants below this cutoff are discarded"}else{if(n.usecase.regressionType=="linear"){l="Variants below this cutoff are analyzed by the Wilcoxon rank sum test"}else if(n.usecase.regressionType=="logistic"){l="Variants below this cutoff are analyzed by the Fisher's exact test"}else{l="Variants below this cutoff are analyzed by the cumulative incidence test"}}e.append("span").style("margin-left","10px").style("opacity",.5).style("font-size",".7em").style("font-style","italic").text(l)}t.append("div").style("margin-top","15px").style("opacity",.5).style("font-size",".8em").style("margin-bottom","2px").text("SET EFFECT ALLELE AS");const y=t.append("select");y.append("option").text("Minor allele");y.append("option").text("Alternative allele");if(s!=="snplocus"){y.append("option").text("Custom allele")}t.append("div").attr("class","sjpp-allele-type-hint").style("display","inline-block").style("margin-left","15px").style("opacity",.5).style("font-size",".7em").style("font-style","italic").text(v(y));y.on("change",(()=>e(this,void 0,void 0,(function*(){t.select(".sjpp-allele-type-hint").text(v(y));n.q.alleleType=y.property("selectedIndex");if(s!=="snplocus"){if(!n.term.snps)throw`Missing term.snps [snplst.ts makeSnpSelect()]`;for(const e of n.term.snps){e.effectAllele=false}yield d(n);i(n,y)}}))));t.append("div").style("margin-top","15px").style("margin-bottom","2px").style("opacity",.5).style("font-size",".8em").text("GENETIC MODEL");const m=t.append("select");m.append("option").text("Additive: EE=2, EN=1, NN=0");m.append("option").text("Dominant: EE=1, EN=1, NN=0");m.append("option").text("Recessive: EE=1, EN=0, NN=0");m.append("option").text("By genotype: EE and EN compared to NN");t.append("div").style("display","inline-block").style("margin-left","15px").style("opacity",.5).style("font-size",".7em").style("font-style","italic").html("E = effect allele; N = non-effect allele");const u=t.append("div").style("margin-top","15px").style("opacity",.5).style("font-size",".7em");if(s=="snplocus"){u.text("Samples with missing genotypes are dropped.")}else{u.text("MISSING GENOTYPE").style("font-size",".8em").style("margin-bottom","2px");f=t.append("select");f.append("option").text("Impute as homozygous for non-effect allele");f.append("option").text("Drop sample")}if(Number.isInteger((l=n.q)===null||l===void 0?void 0:l.alleleType))y.property("selectedIndex",n.q.alleleType);if(Number.isFinite((o=n.q)===null||o===void 0?void 0:o.AFcutoff))c.property("value",n.q.AFcutoff);if(Number.isInteger((r=n.q)===null||r===void 0?void 0:r.geneticModel))m.property("selectedIndex",n.q.geneticModel);if(f&&Number.isInteger((a=n.q)===null||a===void 0?void 0:a.missingGenotype))f.property("selectedIndex",n.q.missingGenotype);return[c,y,m,f]}function u(t,n){var s;return e(this,void 0,void 0,(function*(){if((s=t.q)===null||s===void 0?void 0:s.doNotRestrictAncestry)return;const e=yield t.vocabApi.getTermdbConfig();if(!e.restrictAncestries)return;const l=n.append("div").style("margin-bottom","15px");t.dom.restrictAncestriesRow=l;l.append("span").text("Restrict analysis to").style("margin-right","5px").style("opacity",.5);const i=l.append("select");for(const t of e.restrictAncestries){const e=i.append("option").text(t.name);e.node().__ancestry_obj=t}if(t.q&&t.q.restrictAncestry){const n=e.restrictAncestries.findIndex((e=>e.name==t.q.restrictAncestry.name));if(n==-1)throw"unknown restrictAncestry: "+t.q.restrictAncestry.name;i.property("selectedIndex",n)}return i}))}function v(e){let t;const n=e.property("selectedIndex");if(n==0){t="For multi-allelic variants, the second most common allele is used as the effect allele"}else if(n==1){t="For multi-allelic variants, the most common alternative allele is used as the effect allele"}else{t=""}return t}export{f as fillTW,n as getHandler,m as makeSnpSelect,u as mayRestrictAncestry};
1
+ import{aD as e}from"./app-71453429.js";import{mayRunSnplstTask as t}from"./snplst.sampleSum-e47d05f0.js";function n(t){return{getPillName(){return t.term.name},getPillStatus(){var e;if(!((e=t.term)===null||e===void 0?void 0:e.snps))return;const n=t.term.snps.reduce(((e,t)=>e+(t.invalid||!t.alleles?1:0)),0);if(n)return{text:n+" invalid"}},validateQ(e){c(e)},showEditMenu(n){return e(this,void 0,void 0,(function*(){yield s(t,n)}))}}}function s(t,n){var s,a;return e(this,void 0,void 0,(function*(){const c=n.append("div").style("margin","15px");const f=yield u(t,c);const x=c.append("div");const g=x.append("textarea").attr("rows",5).attr("cols",20).attr("placeholder","Enter variants");const b=x.append("div").style("opacity",.8).style("font-size",".8em");b.append("div").html(`Enter a list of variants (dbSNP accessions). One variant per line. Max 500 allowed.${t.usecase.target=="dataDownload"?"":"<br>Effect alleles (alleles tested against in the analysis) can be specified here or<br>after variant validation."}`);const h=[{id:"rs1641548",effectAllele:"T"},{id:"rs4968204",effectAllele:"C"},{id:"rs9893249",effectAllele:"T"},{id:"rs1042522",effectAllele:"G"}];const A=b.append("ul").style("display","inline-block").style("list-style-type","none").style("padding","0px");const q=b.append("ul").style("display",t.usecase.target=="dataDownload"?"none":"inline-block").style("list-style-type","none").style("padding","0px").style("margin-left","40px");A.append("li").style("text-decoration","underline").text("Example:");q.append("li").style("text-decoration","underline").text("Example (with effect alleles):");for(const e of h){A.append("li").text(e.id);q.append("li").html(`${e.id}&nbsp;${e.effectAllele}`)}const E=x.append("div").style("margin-top","15px").append("button").text("Validate variants").on("click",(()=>e(this,void 0,void 0,(function*(){const e=r(g);if(!e.length)return window.alert("No valid variants");if(!t.term){t.term={id:y(),type:"snplst"}}if(t.term.snps){for(const n of e){if(t.term.snps.find((e=>e.rsid==n.rsid)))continue;t.term.snps.push(n)}}else{t.term.snps=e}t.term.name=o(t.term.snps);if(!t.q)t.q={};t.doNotHideTipInMain=true;if(t.dom.pill_termname){t.dom.pill_termname.text(t.term.name)}E.text("Validating...").property("disabled",true);try{yield p(t)}catch(e){alert("Error: "+(e.message||e));E.text("Validate variants").property("disabled",false);return}if(!Number.isFinite(t.q.AFcutoff)){t.q.AFcutoff=5;I.property("value",t.q.AFcutoff)}if(!Number.isInteger(t.q.alleleType)){t.q.alleleType=e.find((e=>e.effectAllele))?2:0;F.property("selectedIndex",t.q.alleleType);c.select(".sjpp-allele-type-hint").text(v(F))}if(!Number.isInteger(t.q.geneticModel)){t.q.geneticModel=0;T.property("selectedIndex",t.q.geneticModel)}if(!Number.isInteger(t.q.missingGenotype)){t.q.missingGenotype=0;k.property("selectedIndex",t.q.missingGenotype)}if(f){t.q.restrictAncestry=f.node().options[f.property("selectedIndex")].__ancestry_obj}yield d(t);x.style("display","none");w.style("display","");if(t.dom.snplst_table){i(t,F)}else{l(N,t,F)}}))));const w=c.append("div");w.append("p").append("span").html("&laquo; Back to input").attr("class","sja_clbtext").on("click",(()=>{x.style("display","");w.style("display","none");E.text("Validate variants").property("disabled",false)}));const N=w.append("div").style("margin-bottom","25px");const[I,F,T,k]=m(w.append("div").attr("class","sjpp-snp-select"),t,"snplst");if(t.usecase.target=="dataDownload")w.select(".sjpp-snp-select").style("display","none");const _=w.append("div").style("margin-top","20px");_.append("button").text("Submit").on("click",(()=>e(this,void 0,void 0,(function*(){t.term.snps=t.term.snps.filter((e=>!e.tobe_deleted));if(t.term.snps.find((e=>!e.effectAllele)))return window.alert("Effect allele not specified for one or more variants");t.term.name=o(t.term.snps);if(t.dom.pill_termname){t.dom.pill_termname.text(t.term.name)}try{yield p(t)}catch(e){alert("Error: "+(e.message||e))}{const e=Number(I.property("value"));t.q.AFcutoff=e<0||e>=100?5:e}t.q.alleleType=F.property("selectedIndex");t.q.geneticModel=T.property("selectedIndex");t.q.missingGenotype=k.property("selectedIndex");if(f){t.q.restrictAncestry=f.node().options[f.property("selectedIndex")].__ancestry_obj}yield d(t);if(t.dom.snplst_table){i(t,F)}else{l(N,t,F)}delete t.doNotHideTipInMain;t.runCallback();t.updateUI()}))));_.append("span").style("padding-left","15px").style("opacity",.8).style("font-size",".8em").text(t.usecase.target=="dataDownload"?"":"Variants will be treated as separate covariates in the regression model");if((a=(s=t.term)===null||s===void 0?void 0:s.snps)===null||a===void 0?void 0:a.length){l(N,t,F);x.style("display","none")}else{w.style("display","none")}}))}function l(e,t,n){t.dom.snplst_table=e.append("table");i(t,n);e.append("p").style("opacity",.8).style("font-size",".8em").style("display",t.usecase.target=="dataDownload"?"none":"block").html("Effect alleles are highlighted in red. Click on an allele to set as the effect allele.")}function i(e,t){e.dom.snplst_table.selectAll("*").remove();const n=e.dom.snplst_table.append("tr").style("opacity",.4);const s=[{title:"Variants"},{title:"# genotyped<br>samples"},{title:"Reference allele<br>(frequency)"},{title:"Alternative allele(s)<br>(frequency)"},{title:"Genotype<br>(frequency)"},{title:"Delete"}];if(e.usecase.target=="dataDownload")s.splice(4,1);s.forEach((e=>{n.append("td").html(e.title).style("font-size",".8em").style("text-align","center").style("padding","8px")}));if(!e.term.snps)throw`Missing term.snps [snplst.ts renderSnpEditTable()]`;for(const[t,n]of e.term.snps.entries()){let s=false;if(n.invalid||!n.alleles&&!n.gt2count)s="NOT ANNNOTATED IN COHORT";const i=(t+2)%2?"#eee":"#fff";const o=e.dom.snplst_table.append("tr").style("background",i);o.append("td").text(n.rsid).style("padding","8px");const r=s?s:n.gt2count?Object.values(n.gt2count).reduce(((e,t)=>e+t),0):`Missing sample count for snp`;o.append("td").style("text-align","center").text(r);const a=o.append("td");const p=o.append("td");if(!s){if(!n.alleles)throw`Missing alleles for snp = ${n} [snplst.ts renderSnpEditTable()]`;const t=e.q.snp2effAle?e.q.snp2effAle[n.rsid]:undefined;const s=n.alleles.find((e=>e.isRef));const d=n.alleles.filter((e=>!e.isRef));if(e.usecase.target=="dataDownload"){const e=(s.count*100/(r*2)).toFixed(2);const t=`${s.allele} (${e}%)`;a.style("text-align","center").style("padding","8px").text(t);const n=d.map((e=>{const t=(e.count*100/(r*2)).toFixed(2);return`${e.allele} (${t}%)`})).join(", ");p.style("text-align","center").style("padding","8px").text(n)}else{l(s,a,t,r,n,i,o);for(const e of d.values()){l(e,p,t,r,n,i,o)}}}if(e.usecase.target!="dataDownload"){const t=o.append("td");if(!s){const s=e.q.snp2refGrp?e.q.snp2refGrp[n.rsid]:undefined;if(!n.gt2count)throw`Missing gt2count for snp = ${n} [snplst.ts renderSnpEditTable()]`;for(const[e,l]of Object.entries(n.gt2count)){const n=(l*100/r).toFixed(2);const o=t.append("div").style("display","inline-block").style("border",e==s?"3px solid #ff0000":`3px solid ${i}`);o.append("div").style("display","inline-block").style("padding","3px 5px").text(`${e}`);o.append("div").style("display","inline-block").style("padding","0px 6px 0px 2px").style("font-size",".8em").text("("+`${n}%`+")")}}}const d=o.append("td").style("text-align","center").append("input").attr("type","checkbox").on("change",(()=>{n.tobe_deleted=d.node().checked}))}function l(e,n,s,l,i,o,r){const a=(e.count*100/(l*2)).toFixed(2);const p=n.style("text-align","center").append("button").style("display","inline-block").style("margin","0px 3px").style("padding","3px 7px").style("border-radius","3px").style("background-color","#d9ead3").style("border",e.allele==s?"3px solid #ff0000":`3px solid ${o}`).on("mouseover",(()=>{if(i.effectAllele&&i.effectAllele==e.allele)return;else{p.style("background-color","#fff2cc").style("cursor","pointer")}})).on("mouseout",(()=>{if(i.effectAllele&&i.effectAllele==e.allele)return;else{p.style("background","#d9ead3")}})).on("click",(()=>{i.effectAllele=e.allele;r.selectAll("button").style("border","none");p.style("border","3px solid #ff0000").style("background","#d9ead3");t.selectAll("option").nodes()[2].selected="selected"}));p.append("div").style("display","inline-block").text(`${e.allele} `);p.append("div").style("display","inline-block").style("margin","0px 5px").style("font-size",".8em").text("("+`${a}%`+")")}}function o(e){if(e.length==1){const t=e[0];if(t.rsid)return t.rsid;return t.chr+":"+t.pos}return e.length+" variant"+(e.length>1?"s":"")}function r(e){const t=e.property("value");const n=[];for(const e of t.trim().split("\n")){const[t,s]=e.trim().split(/[\s\t]/);if(!t)continue;if(n.find((e=>e.rsid==t)))continue;const l={rsid:t};if(s)l.effectAllele=s;n.push(l)}if(n.length>500)return n.slice(0,500);return n}function a(e){if(!e.term||!e.term.snps)return"";const t=[];for(const n of e.term.snps){const e=n.rsid+(n.effectAllele?" "+n.effectAllele:"");t.push(e)}return t.join("\n")}function p(t){return e(this,void 0,void 0,(function*(){const e=yield t.vocabApi.validateSnps({text:a(t)});if(e.error)throw e.error;t.q.cacheid=e.cacheid;if(!t.term.snps)throw`Missing term.snps [snplst.ts validateInput()]`;for(const[n,s]of t.term.snps.entries()){const t=e.snps[n];s.snpid=t.snpid;s.invalid=t.invalid}}))}function d(n){return e(this,void 0,void 0,(function*(){const e={cacheid:n.q.cacheid};const s=[];let l;if(n.q.restrictAncestry){if(n.filter){l=structuredClone(n.filter);const e=l.lst.findIndex((e=>{var t,s;return((s=(t=e.tvs)===null||t===void 0?void 0:t.term)===null||s===void 0?void 0:s.id)==n.q.restrictAncestry.tvs.term.id}));if(e!=-1){l.lst[e]={type:"tvs",tvs:n.q.restrictAncestry.tvs}}else{s.push({type:"tvs",tvs:n.q.restrictAncestry.tvs})}}else{s.push({type:"tvs",tvs:n.q.restrictAncestry.tvs})}}else{if(n.filter)s.push(n.filter)}const i={type:"tvslst",join:"and",lst:[...s]};if(l)i.lst.push(l);const o=yield n.vocabApi.getCategories(n.term,i,e);t({term:n.term,q:n.q},o)}))}function c(e){if(!Number.isFinite(e.q.AFcutoff))throw"AFcutoff is not number";if(e.q.AFcutoff<0||e.q.AFcutoff>100)throw"AFcutoff is not within 0 to 100";if(![0,1,2].includes(e.q.alleleType))throw"alleleType value is not one of 0/1";if(![0,1,2,3].includes(e.q.geneticModel))throw"geneticModel value is not one of 0/1";if(![0,1].includes(e.q.missingGenotype))throw"missingGenotype value is not one of 0/1"}function f(t,n){return e(this,void 0,void 0,(function*(){try{c(t)}catch(e){throw"snplst validateQ(): "+e}if(!Array.isArray(t.term.snps))throw"tw.term.snps[] is not an array";if(t.term.snps.length==0)throw"tw.term.snps[] array is 0 length";if(!t.term.name)t.term.name=o(t.term.snps);if(t.id==undefined||t.id==""){if(t.term.id==undefined||t.term.id==""){t.term.id=y()}t.id=t.term.id}else{if(t.term.id==undefined||t.term.id==""){t.term.id=t.id}}yield p({term:t.term,q:t.q,vocabApi:n})}))}function y(){return"snplst"+Math.random()}function m(t,n,s){var l,o,r,a;let p,c,f;{p=t.append("div").style("opacity",.5).style("font-size",".8em").style("margin-bottom","2px").text("EFFECT ALLELE FREQUENCY CUTOFF");n.dom.input_AFcutoff_label=p;const e=t.append("div");c=e.append("input").attr("type","number").attr("min",0).attr("max",100).property("value",5).style("border-color","#858585").style("margin","0px");e.append("span").text("%");let l;if(s=="snplst"){l="Variants below this cutoff are discarded"}else{if(n.usecase.regressionType=="linear"){l="Variants below this cutoff are analyzed by the Wilcoxon rank sum test"}else if(n.usecase.regressionType=="logistic"){l="Variants below this cutoff are analyzed by the Fisher's exact test"}else{l="Variants below this cutoff are analyzed by the cumulative incidence test"}}e.append("span").style("margin-left","10px").style("opacity",.5).style("font-size",".7em").style("font-style","italic").text(l)}t.append("div").style("margin-top","15px").style("opacity",.5).style("font-size",".8em").style("margin-bottom","2px").text("SET EFFECT ALLELE AS");const y=t.append("select");y.append("option").text("Minor allele");y.append("option").text("Alternative allele");if(s!=="snplocus"){y.append("option").text("Custom allele")}t.append("div").attr("class","sjpp-allele-type-hint").style("display","inline-block").style("margin-left","15px").style("opacity",.5).style("font-size",".7em").style("font-style","italic").text(v(y));y.on("change",(()=>e(this,void 0,void 0,(function*(){t.select(".sjpp-allele-type-hint").text(v(y));n.q.alleleType=y.property("selectedIndex");if(s!=="snplocus"){if(!n.term.snps)throw`Missing term.snps [snplst.ts makeSnpSelect()]`;for(const e of n.term.snps){e.effectAllele=false}yield d(n);i(n,y)}}))));t.append("div").style("margin-top","15px").style("margin-bottom","2px").style("opacity",.5).style("font-size",".8em").text("GENETIC MODEL");const m=t.append("select");m.append("option").text("Additive: EE=2, EN=1, NN=0");m.append("option").text("Dominant: EE=1, EN=1, NN=0");m.append("option").text("Recessive: EE=1, EN=0, NN=0");m.append("option").text("By genotype: EE and EN compared to NN");t.append("div").style("display","inline-block").style("margin-left","15px").style("opacity",.5).style("font-size",".7em").style("font-style","italic").html("E = effect allele; N = non-effect allele");const u=t.append("div").style("margin-top","15px").style("opacity",.5).style("font-size",".7em");if(s=="snplocus"){u.text("Samples with missing genotypes are dropped.")}else{u.text("MISSING GENOTYPE").style("font-size",".8em").style("margin-bottom","2px");f=t.append("select");f.append("option").text("Impute as homozygous for non-effect allele");f.append("option").text("Drop sample")}if(Number.isInteger((l=n.q)===null||l===void 0?void 0:l.alleleType))y.property("selectedIndex",n.q.alleleType);if(Number.isFinite((o=n.q)===null||o===void 0?void 0:o.AFcutoff))c.property("value",n.q.AFcutoff);if(Number.isInteger((r=n.q)===null||r===void 0?void 0:r.geneticModel))m.property("selectedIndex",n.q.geneticModel);if(f&&Number.isInteger((a=n.q)===null||a===void 0?void 0:a.missingGenotype))f.property("selectedIndex",n.q.missingGenotype);return[c,y,m,f]}function u(t,n){var s;return e(this,void 0,void 0,(function*(){if((s=t.q)===null||s===void 0?void 0:s.doNotRestrictAncestry)return;const e=yield t.vocabApi.getTermdbConfig();if(!e.restrictAncestries)return;const l=n.append("div").style("margin-bottom","15px");t.dom.restrictAncestriesRow=l;l.append("span").text("Restrict analysis to").style("margin-right","5px").style("opacity",.5);const i=l.append("select");for(const t of e.restrictAncestries){const e=i.append("option").text(t.name);e.node().__ancestry_obj=t}if(t.q&&t.q.restrictAncestry){const n=e.restrictAncestries.findIndex((e=>e.name==t.q.restrictAncestry.name));if(n==-1)throw"unknown restrictAncestry: "+t.q.restrictAncestry.name;i.property("selectedIndex",n)}return i}))}function v(e){let t;const n=e.property("selectedIndex");if(n==0){t="For multi-allelic variants, the second most common allele is used as the effect allele"}else if(n==1){t="For multi-allelic variants, the most common alternative allele is used as the effect allele"}else{t=""}return t}export{f as fillTW,n as getHandler,m as makeSnpSelect,u as mayRestrictAncestry};
@@ -1 +1 @@
1
- import{p as t,a5 as e,bQ as a}from"./app-f91922b4.js";const r="#990000";const n="#00A352";function i(i){const s=i.event;if(!s){i.holder.text(".event missing");return}if(s.a5ss==undefined&&s.a3ss==undefined){i.holder.text("not a5ss or a3ss");return}const l=30;const o=30;const d=20;const f=d-5;const p=20;const x=30;const h=20;const c=i.holder.append("svg");const m=c.append("g").attr("transform","translate("+x+","+h+")");const g=s.sitedist+" nt";let y;m.append("text").text(g).attr("font-size",f).attr("font-family",t).each((function(){y=this.getBBox().width})).remove();const u=5;let w=false;let k=false;let b=false;let z=false;if(s.a5ss){if(s.altinexon)w=true;else b=true}else{if(s.altinexon)k=true;else z=true}let v=0;let E;let L;m.append("rect").attr("fill",e).attr("stroke",e).attr("x",v).attr("y",p).attr("width",l).attr("height",d).attr("shape-rendering","crispEdges");m.append("text").text("e"+(s.exon5idx+1)).attr("text-anchor","middle").attr("x",v+l/2).attr("y",p+d/2).attr("fill","white").attr("dominant-baseline","central").attr("font-size",f).attr("font-family",t);v+=l;if(w){m.append("rect").attr("fill",n).attr("stroke",n).attr("x",v).attr("y",p).attr("width",y+u*2).attr("height",d).attr("shape-rendering","crispEdges");m.append("text").text(g).attr("text-anchor","middle").attr("x",v+y/2+u).attr("y",p+d/2).attr("fill","white").attr("dominant-baseline","central").attr("font-size",f).attr("font-family",t);v+=y+u*2}E=v;if(b||z){if(b);else{v+=o}m.append("rect").attr("fill","none").attr("stroke",e).attr("x",v).attr("y",p).attr("width",y+u*2).attr("height",d).attr("shape-rendering","crispEdges");m.append("text").text(g).attr("text-anchor","middle").attr("x",v+y/2+u).attr("y",p+d/2).attr("font-size",f).attr("font-family",t).attr("dominant-baseline","central");v+=y+u*2;if(b){v+=o}}else{v+=o}L=v;m.append("line").attr("x1",E+(b?y+u*2:0)).attr("y1",p+d/2).attr("x2",L-(z?y+u*2:0)).attr("y2",p+d/2).attr("stroke",e).attr("shape-rendering","crispEdges");if(k){m.append("rect").attr("fill",n).attr("stroke",n).attr("x",v).attr("y",p).attr("width",y+u*2).attr("height",d).attr("shape-rendering","crispEdges");m.append("text").text(g).attr("text-anchor","middle").attr("x",v+y/2+u).attr("y",p+d/2).attr("fill","white").attr("dominant-baseline","central").attr("font-size",f).attr("font-family",t);v+=y+u*2}m.append("rect").attr("fill",e).attr("stroke",e).attr("x",v).attr("y",p).attr("width",l).attr("height",d).attr("shape-rendering","crispEdges");m.append("text").text("e"+(s.exon5idx+1+1)).attr("text-anchor","middle").attr("x",v+l/2).attr("y",p+d/2).attr("fill","white").attr("dominant-baseline","central").attr("font-size",f).attr("font-family",t);{let t,e;if(w||b){e=L;if(w){t=E-y-u*2}else{t=E+y+u*2}}else{t=E;if(z){e=L-y-u*2}else{e=L+y+u*2}}m.append("path").attr("d","M"+t+","+p+"L"+(t+e)/2+",0"+"L"+e+","+p).attr("stroke",r).attr("fill","none");m.append("text").text(s.junctionB.v+(s.frame!=undefined?s.frame==a?", in frame":",out of frame":"")).attr("x",(t+e)/2).attr("y",-1).attr("text-anchor","middle").attr("font-size",f).attr("fill",r)}let j;{const t=m.append("path").attr("d","M"+E+","+(p+d)+"L"+(E+L)/2+","+(p*2+d)+"L"+L+","+(p+d)).attr("stroke",e).attr("fill","none");const a=s.junctionA;if(a){j=m.append("text").text(a.v).attr("x",(E+L)/2).attr("y",p*2+d+1).attr("text-anchor","middle").attr("font-size",f).attr("dominant-baseline","hanging")}else{t.attr("stroke-dasharray","3,3")}}c.attr("width",x*2+l*2+o+y+u*2).attr("height",h*2+p*2+d);return j}export{i as default};
1
+ import{p as t,a5 as e,bQ as a}from"./app-71453429.js";const r="#990000";const n="#00A352";function i(i){const s=i.event;if(!s){i.holder.text(".event missing");return}if(s.a5ss==undefined&&s.a3ss==undefined){i.holder.text("not a5ss or a3ss");return}const l=30;const o=30;const d=20;const f=d-5;const p=20;const x=30;const h=20;const c=i.holder.append("svg");const m=c.append("g").attr("transform","translate("+x+","+h+")");const g=s.sitedist+" nt";let y;m.append("text").text(g).attr("font-size",f).attr("font-family",t).each((function(){y=this.getBBox().width})).remove();const u=5;let w=false;let k=false;let z=false;let b=false;if(s.a5ss){if(s.altinexon)w=true;else z=true}else{if(s.altinexon)k=true;else b=true}let v=0;let E;let L;m.append("rect").attr("fill",e).attr("stroke",e).attr("x",v).attr("y",p).attr("width",l).attr("height",d).attr("shape-rendering","crispEdges");m.append("text").text("e"+(s.exon5idx+1)).attr("text-anchor","middle").attr("x",v+l/2).attr("y",p+d/2).attr("fill","white").attr("dominant-baseline","central").attr("font-size",f).attr("font-family",t);v+=l;if(w){m.append("rect").attr("fill",n).attr("stroke",n).attr("x",v).attr("y",p).attr("width",y+u*2).attr("height",d).attr("shape-rendering","crispEdges");m.append("text").text(g).attr("text-anchor","middle").attr("x",v+y/2+u).attr("y",p+d/2).attr("fill","white").attr("dominant-baseline","central").attr("font-size",f).attr("font-family",t);v+=y+u*2}E=v;if(z||b){if(z);else{v+=o}m.append("rect").attr("fill","none").attr("stroke",e).attr("x",v).attr("y",p).attr("width",y+u*2).attr("height",d).attr("shape-rendering","crispEdges");m.append("text").text(g).attr("text-anchor","middle").attr("x",v+y/2+u).attr("y",p+d/2).attr("font-size",f).attr("font-family",t).attr("dominant-baseline","central");v+=y+u*2;if(z){v+=o}}else{v+=o}L=v;m.append("line").attr("x1",E+(z?y+u*2:0)).attr("y1",p+d/2).attr("x2",L-(b?y+u*2:0)).attr("y2",p+d/2).attr("stroke",e).attr("shape-rendering","crispEdges");if(k){m.append("rect").attr("fill",n).attr("stroke",n).attr("x",v).attr("y",p).attr("width",y+u*2).attr("height",d).attr("shape-rendering","crispEdges");m.append("text").text(g).attr("text-anchor","middle").attr("x",v+y/2+u).attr("y",p+d/2).attr("fill","white").attr("dominant-baseline","central").attr("font-size",f).attr("font-family",t);v+=y+u*2}m.append("rect").attr("fill",e).attr("stroke",e).attr("x",v).attr("y",p).attr("width",l).attr("height",d).attr("shape-rendering","crispEdges");m.append("text").text("e"+(s.exon5idx+1+1)).attr("text-anchor","middle").attr("x",v+l/2).attr("y",p+d/2).attr("fill","white").attr("dominant-baseline","central").attr("font-size",f).attr("font-family",t);{let t,e;if(w||z){e=L;if(w){t=E-y-u*2}else{t=E+y+u*2}}else{t=E;if(b){e=L-y-u*2}else{e=L+y+u*2}}m.append("path").attr("d","M"+t+","+p+"L"+(t+e)/2+",0"+"L"+e+","+p).attr("stroke",r).attr("fill","none");m.append("text").text(s.junctionB.v+(s.frame!=undefined?s.frame==a?", in frame":",out of frame":"")).attr("x",(t+e)/2).attr("y",-1).attr("text-anchor","middle").attr("font-size",f).attr("fill",r)}let j;{const t=m.append("path").attr("d","M"+E+","+(p+d)+"L"+(E+L)/2+","+(p*2+d)+"L"+L+","+(p+d)).attr("stroke",e).attr("fill","none");const a=s.junctionA;if(a){j=m.append("text").text(a.v).attr("x",(E+L)/2).attr("y",p*2+d+1).attr("text-anchor","middle").attr("font-size",f).attr("dominant-baseline","hanging")}else{t.attr("stroke-dasharray","3,3")}}c.attr("width",x*2+l*2+o+y+u*2).attr("height",h*2+p*2+d);return j}export{i as default};
@@ -1 +1 @@
1
- import{a5 as t,p as a,bQ as n}from"./app-f91922b4.js";import{s as e}from"./spliceevent.phrase-7a3bfb00.js";function o(o){const i=o.event;const r=o.holder.append("div").style("vertical-align","top");if(!i.isaltexon&&!i.isskipexon){r.append("div").text(".isskipexon or .isaltexon is not set for event");return}if(!o.nophrase){r.append("div").html(e(i))}const s=o.holder.append("svg").style("display","inline-block");const d=new Map;const l=[];const f=40;const c=20;const p=20;const u=20;const h=20;const x=20;const j=14;const k=s.append("g").attr("transform","translate("+h+","+x+")");const m=i.skippedexon[0];const g=i.skippedexon[i.skippedexon.length-1];let b=false;let y=false;if(i.isskipexon){if(m>1){b=true}if(i.down1junction){y=true}}s.attr("width",h+(b?f+u:0)+f+u+(f+u)*i.skippedexon.length+f+(y?f+u:0)+h).attr("height",x+j+p+c+p+j+x);const B=j+p;const w=new Map;let v=0;if(b){k.append("rect").attr("x",v).attr("y",B).attr("width",f).attr("height",c).attr("fill",t);k.append("text").text("e"+(m-1)).attr("x",v+f/2).attr("y",B+c/2).attr("text-anchor","middle").attr("dominant-baseline","central").attr("fill","white").attr("font-size",j);v+=f+u;let n=true;let e="?";if(i.up1junction){if(i.junctionB.data){if(i.junctionB.data.length==1){const t=i.junctionB.data[0].tkid;if(i.up1junction.data){for(const a of i.up1junction.data){if(a.tkid==t){n=false;e=a.v;break}}}}else if(i.junctionB.data.length>1){let t=0;let a=0;for(const n of i.junctionB.data){for(const e of i.up1junction.data){if(n.tkid==e.tkid){t+=e.v;a++;break}}}if(a>0){n=false;e=Math.ceil(t/a)}}}else{n=false;e=i.up1junction.v}}k.append("path").attr("d","M"+(v-u)+","+(B+c)+"L"+(v-u/2)+","+(B+c+p)+"L"+v+","+(B+c)).attr("stroke",t).attr("stroke-dasharray",n?"2,2":"none").attr("fill","none");if(!n){const t=k.append("text").text(e).attr("x",v-u/2).attr("y",B+c+p+2).attr("font-size",j).attr("fill","black").attr("font-family",a).attr("text-anchor","middle").attr("dominant-baseline","hanging");d.set(i.up1junction.start+"."+i.up1junction.stop,t);l.push([i.up1junction.start,i.up1junction.stop])}}k.append("rect").attr("x",v).attr("y",B).attr("width",f).attr("height",c).attr("fill",t);k.append("text").text("e"+m).attr("x",v+f/2).attr("y",B+c/2).attr("text-anchor","middle").attr("dominant-baseline","central").attr("fill","white").attr("font-size",j);v+=f+u;for(let n=m;n<=g+1;n++){const e=n==g+1;k.append("rect").attr("x",v).attr("y",B).attr("width",f).attr("height",c).attr("fill",e?t:"none").attr("stroke",e?"none":t).attr("shape-rendering","crispEdges");k.append("text").text("e"+(n+1)).attr("x",v+f/2).attr("y",B+c/2).attr("text-anchor","middle").attr("dominant-baseline","central").attr("fill",e?"white":t).attr("font-size",j);const o=i.junctionAlst[n-m];k.append("path").attr("d","M"+(v-u)+","+(B+c)+"L"+(v-u/2)+","+(B+c+p)+"L"+v+","+(B+c)).attr("stroke",t).attr("stroke-dasharray",o?"none":"2,2").attr("fill","none");if(o){let t="?";if(i.junctionB.data){if(i.junctionB.data.length==1){if(!o.data){console.error(".data missing from junctionA")}else{for(const a of o.data){if(a.tkid==i.junctionB.data[0].tkid){t=a.v;break}}}}else if(i.junctionB.data.length>1){t="e"+n+"-"+(n+1);for(const t of i.junctionB.data){if(!w.has(t.tkid)){w.set(t.tkid,{sampleobj:t,readcountlst:[]})}let a=0;for(const n of o.data){if(n.tkid==t.tkid){a=n.v;break}}w.get(t.tkid).readcountlst.push(a)}}}else{t=o.v}const e=k.append("text").text(t).attr("x",v-u/2).attr("y",B+c+p+2).attr("font-size",j).attr("fill","black").attr("font-family",a).attr("text-anchor","middle").attr("dominant-baseline","hanging");d.set(o.start+"."+o.stop,e);l.push([o.start,o.stop])}v+=f+u}{const t=v-f-u-((f+u)*i.skippedexon.length+u)/2;k.append("path").attr("d","M"+((b?f+u:0)+f)+","+B+"L"+t+","+(B-p)+"L"+(v-f-u)+","+B).attr("fill","none").attr("stroke",i.color);let e="?";if(i.junctionB.data){if(i.junctionB.data.length==1){e=i.junctionB.data[0].v}else{e="e"+m+"-"+(g+2);for(const t of i.junctionB.data){if(!w.has(t.tkid)){console.error("sample has junctionB but no junctionA! "+t.tkid);continue}let a=0;for(const n of i.junctionB.data){if(n.tkid==t.tkid){a=n.v;break}}w.get(t.tkid).readcountlst.unshift(a)}}}else{e=i.junctionB.v}if(typeof i.frame=="boolean"){e+=", "+(i.frame==n?"in frame":"out of frame")}k.append("text").text(e).attr("x",t).attr("y",B-p-2).attr("font-size",j).attr("fill",i.color).attr("font-family",a).attr("text-anchor","middle")}if(y){k.append("rect").attr("x",v).attr("y",B).attr("width",f).attr("height",c).attr("fill",t);k.append("text").text("e"+(g+3)).attr("x",v+f/2).attr("y",B+c/2).attr("text-anchor","middle").attr("dominant-baseline","central").attr("fill","white").attr("font-size",j);let n=true;let e="?";if(i.down1junction){if(i.junctionB.data){if(i.junctionB.data.length==1){const t=i.junctionB.data[0].tkid;if(i.down1junction.data){for(const a of i.down1junction.data){if(a.tkid==t){n=false;e=a.v;break}}}}else if(i.junctionB.data.length>1){let t=0;let a=0;for(const n of i.junctionB.data){for(const e of i.down1junction.data){if(n.tkid==e.tkid){t+=e.v;a++;break}}}if(a>0){n=false;e=Math.ceil(t/a)}}}else{n=false;e=i.down1junction.v}}k.append("path").attr("d","M"+(v-u)+","+(B+c)+"L"+(v-u/2)+","+(B+c+p)+"L"+v+","+(B+c)).attr("stroke",t).attr("stroke-dasharray",n?"2,2":"none").attr("fill","none");if(!n){const t=k.append("text").text(e).attr("x",v-u/2).attr("y",B+c+p+2).attr("font-size",j).attr("fill","black").attr("font-family",a).attr("text-anchor","middle").attr("dominant-baseline","hanging");d.set(i.down1junction.start+"."+i.down1junction.stop,t);l.push([i.down1junction.start,i.down1junction.stop])}}return[d,l]}export{o as default};
1
+ import{a5 as t,p as a,bQ as n}from"./app-71453429.js";import{s as e}from"./spliceevent.phrase-186eb050.js";function o(o){const i=o.event;const r=o.holder.append("div").style("vertical-align","top");if(!i.isaltexon&&!i.isskipexon){r.append("div").text(".isskipexon or .isaltexon is not set for event");return}if(!o.nophrase){r.append("div").html(e(i))}const s=o.holder.append("svg").style("display","inline-block");const d=new Map;const l=[];const f=40;const c=20;const p=20;const u=20;const h=20;const x=20;const j=14;const k=s.append("g").attr("transform","translate("+h+","+x+")");const m=i.skippedexon[0];const g=i.skippedexon[i.skippedexon.length-1];let b=false;let y=false;if(i.isskipexon){if(m>1){b=true}if(i.down1junction){y=true}}s.attr("width",h+(b?f+u:0)+f+u+(f+u)*i.skippedexon.length+f+(y?f+u:0)+h).attr("height",x+j+p+c+p+j+x);const B=j+p;const w=new Map;let v=0;if(b){k.append("rect").attr("x",v).attr("y",B).attr("width",f).attr("height",c).attr("fill",t);k.append("text").text("e"+(m-1)).attr("x",v+f/2).attr("y",B+c/2).attr("text-anchor","middle").attr("dominant-baseline","central").attr("fill","white").attr("font-size",j);v+=f+u;let n=true;let e="?";if(i.up1junction){if(i.junctionB.data){if(i.junctionB.data.length==1){const t=i.junctionB.data[0].tkid;if(i.up1junction.data){for(const a of i.up1junction.data){if(a.tkid==t){n=false;e=a.v;break}}}}else if(i.junctionB.data.length>1){let t=0;let a=0;for(const n of i.junctionB.data){for(const e of i.up1junction.data){if(n.tkid==e.tkid){t+=e.v;a++;break}}}if(a>0){n=false;e=Math.ceil(t/a)}}}else{n=false;e=i.up1junction.v}}k.append("path").attr("d","M"+(v-u)+","+(B+c)+"L"+(v-u/2)+","+(B+c+p)+"L"+v+","+(B+c)).attr("stroke",t).attr("stroke-dasharray",n?"2,2":"none").attr("fill","none");if(!n){const t=k.append("text").text(e).attr("x",v-u/2).attr("y",B+c+p+2).attr("font-size",j).attr("fill","black").attr("font-family",a).attr("text-anchor","middle").attr("dominant-baseline","hanging");d.set(i.up1junction.start+"."+i.up1junction.stop,t);l.push([i.up1junction.start,i.up1junction.stop])}}k.append("rect").attr("x",v).attr("y",B).attr("width",f).attr("height",c).attr("fill",t);k.append("text").text("e"+m).attr("x",v+f/2).attr("y",B+c/2).attr("text-anchor","middle").attr("dominant-baseline","central").attr("fill","white").attr("font-size",j);v+=f+u;for(let n=m;n<=g+1;n++){const e=n==g+1;k.append("rect").attr("x",v).attr("y",B).attr("width",f).attr("height",c).attr("fill",e?t:"none").attr("stroke",e?"none":t).attr("shape-rendering","crispEdges");k.append("text").text("e"+(n+1)).attr("x",v+f/2).attr("y",B+c/2).attr("text-anchor","middle").attr("dominant-baseline","central").attr("fill",e?"white":t).attr("font-size",j);const o=i.junctionAlst[n-m];k.append("path").attr("d","M"+(v-u)+","+(B+c)+"L"+(v-u/2)+","+(B+c+p)+"L"+v+","+(B+c)).attr("stroke",t).attr("stroke-dasharray",o?"none":"2,2").attr("fill","none");if(o){let t="?";if(i.junctionB.data){if(i.junctionB.data.length==1){if(!o.data){console.error(".data missing from junctionA")}else{for(const a of o.data){if(a.tkid==i.junctionB.data[0].tkid){t=a.v;break}}}}else if(i.junctionB.data.length>1){t="e"+n+"-"+(n+1);for(const t of i.junctionB.data){if(!w.has(t.tkid)){w.set(t.tkid,{sampleobj:t,readcountlst:[]})}let a=0;for(const n of o.data){if(n.tkid==t.tkid){a=n.v;break}}w.get(t.tkid).readcountlst.push(a)}}}else{t=o.v}const e=k.append("text").text(t).attr("x",v-u/2).attr("y",B+c+p+2).attr("font-size",j).attr("fill","black").attr("font-family",a).attr("text-anchor","middle").attr("dominant-baseline","hanging");d.set(o.start+"."+o.stop,e);l.push([o.start,o.stop])}v+=f+u}{const t=v-f-u-((f+u)*i.skippedexon.length+u)/2;k.append("path").attr("d","M"+((b?f+u:0)+f)+","+B+"L"+t+","+(B-p)+"L"+(v-f-u)+","+B).attr("fill","none").attr("stroke",i.color);let e="?";if(i.junctionB.data){if(i.junctionB.data.length==1){e=i.junctionB.data[0].v}else{e="e"+m+"-"+(g+2);for(const t of i.junctionB.data){if(!w.has(t.tkid)){console.error("sample has junctionB but no junctionA! "+t.tkid);continue}let a=0;for(const n of i.junctionB.data){if(n.tkid==t.tkid){a=n.v;break}}w.get(t.tkid).readcountlst.unshift(a)}}}else{e=i.junctionB.v}if(typeof i.frame=="boolean"){e+=", "+(i.frame==n?"in frame":"out of frame")}k.append("text").text(e).attr("x",t).attr("y",B-p-2).attr("font-size",j).attr("fill",i.color).attr("font-family",a).attr("text-anchor","middle")}if(y){k.append("rect").attr("x",v).attr("y",B).attr("width",f).attr("height",c).attr("fill",t);k.append("text").text("e"+(g+3)).attr("x",v+f/2).attr("y",B+c/2).attr("text-anchor","middle").attr("dominant-baseline","central").attr("fill","white").attr("font-size",j);let n=true;let e="?";if(i.down1junction){if(i.junctionB.data){if(i.junctionB.data.length==1){const t=i.junctionB.data[0].tkid;if(i.down1junction.data){for(const a of i.down1junction.data){if(a.tkid==t){n=false;e=a.v;break}}}}else if(i.junctionB.data.length>1){let t=0;let a=0;for(const n of i.junctionB.data){for(const e of i.down1junction.data){if(n.tkid==e.tkid){t+=e.v;a++;break}}}if(a>0){n=false;e=Math.ceil(t/a)}}}else{n=false;e=i.down1junction.v}}k.append("path").attr("d","M"+(v-u)+","+(B+c)+"L"+(v-u/2)+","+(B+c+p)+"L"+v+","+(B+c)).attr("stroke",t).attr("stroke-dasharray",n?"2,2":"none").attr("fill","none");if(!n){const t=k.append("text").text(e).attr("x",v-u/2).attr("y",B+c+p+2).attr("font-size",j).attr("fill","black").attr("font-family",a).attr("text-anchor","middle").attr("dominant-baseline","hanging");d.set(i.down1junction.start+"."+i.down1junction.stop,t);l.push([i.down1junction.start,i.down1junction.stop])}}return[d,l]}export{o as default};
@@ -0,0 +1 @@
1
+ import{bS as e,bQ as n}from"./app-71453429.js";function o(o){let t=0;for(let i=1;i<o.length;i++){const f=o[i];const r=o[t];if(f.isskipexon&&r.isaltexon){t=i;continue}if(f.frame==e&&r.framenocheck){t=i;continue}if(f.frame==n&&r.frame!=n){t=i;continue}}return t}export{o as e};
@@ -1 +1 @@
1
- import{p as t,a5 as n}from"./app-f91922b4.js";const e=30;const r=5;const i="#990000";const o=20;const a=14;const s=20;const f=15;const x=15;function l(t){const n=t.isoform;if(!n){t.holder.text(".event missing");return}if(!t.ongene){holder.text(".ongene missing");return}let e,r,i,o,a,s;if(t.ongene.exonleft){const i=t.ongene.exonleft.filter((t=>t.isoform==n))[0];if(t.reverse)r=i;else e=i}if(t.ongene.exonright){const i=t.ongene.exonright.filter((t=>t.isoform==n))[0];if(t.reverse)e=i;else r=i}if(t.ongene.exonleftin){const e=t.ongene.exonleftin.filter((t=>t.isoform==n))[0];if(t.reverse)o=e;else i=e}if(t.ongene.exonrightin){const e=t.ongene.exonrightin.filter((t=>t.isoform==n))[0];if(t.reverse)i=e;else o=e}if(t.ongene.intronleft){const e=t.ongene.intronleft.filter((t=>t.isoform==n))[0];if(t.reverse)s=e;else a=e}if(t.ongene.intronright){const e=t.ongene.intronright.filter((t=>t.isoform==n))[0];if(t.reverse)a=e;else s=e}if(t.ongene.leftout){t.ongene.leftout.filter((t=>t.isoform==n))[0];if(t.reverse);}if(t.ongene.rightout){t.ongene.rightout.filter((t=>t.isoform==n))[0];if(t.reverse);}const f=t.holder.append("svg").attr("width",1).attr("height",1);if(e){if(r){c(e,r,f)}else if(o){h(e,o,f)}else if(s){g(e,s,f)}else{p(e,f)}}else if(i){if(r){u(i,r,f)}else if(o){m(i,o,f)}else if(s){w(i,s,f)}else{y(i,f)}}else if(a){if(r){B(a,r,f)}else if(o){v(a,o,f)}else if(s){b(a,s,f)}else{z(a,f)}}else{if(r){k(r,f)}else if(o){E(o,f)}else if(s){O(s,f)}}}function d(n){const r=n.holder.append("svg");const i=r.append("g").attr("transform","translate("+f+","+x+")");let l=0,d=0;let c,h,g;if(n.ongene.exonleft){c=n.ongene.exonleft[0]}else if(n.ongene.exonleftin){h=n.ongene.exonleftin[0]}else if(n.ongene.intronleft){g=n.ongene.intronleft[0]}let p=0;i.append("text").text(c?c.gene:h?h.gene:g?g.gene:"Left gene").attr("x",0).attr("y",s+o/2).attr("dominant-baseline","central").attr("font-size",a).attr("font-family",t).each((function(){p=this.getBBox().width}));p+=5;if(c){const t=M(p,c.exonidx,i);p+=t;l=p}else if(h){const t=M(p,h.exonidx,i);l=p+t/2;p+=t}else if(g){const t=M(p,g.intronidx,i);T(i,p+t,p+t+e);const n=M(p+t+e,g.intronidx+1,i);p+=t;l=p+e/2;p+=e+n}p+=30;let u,m,w;if(n.ongene.exonright){u=n.ongene.exonright[0]}else if(n.ongene.exonrightin){m=n.ongene.exonrightin[0]}else if(n.ongene.intronright){w=n.ongene.intronright[0]}if(u){const t=M(p,u.exonidx,i);d=p;p+=t}else if(m){const t=M(p,m.exonidx,i);d=p+t/2;p+=t}else if(w){const t=M(p,w.intronidx,i);T(i,p+t,p+t+e);const n=M(p+t+e,w.intronidx+1,i);p+=t;d=p+e/2;p+=e+n}p+=5;i.append("text").text(u?u.gene:m?m.gene:w?w.gene:"Right gene").attr("x",p).attr("y",s+o/2).attr("dominant-baseline","central").attr("font-size",a).attr("font-family",t).each((function(){p+=this.getBBox().width}));U(i,l,d,g,w);r.attr("width",f*2+p).attr("height",s+o+x*2)}function c(t,n,r){const i=r.append("g").attr("transform","translate("+f+","+x+")");const a=n.exonidx-t.exonidx==1;const l=L(t.exonidx,i);let d=l;d+=I(d,t.exonidx,n.exonidx,i);if(!a){T(i,d,d+e)}d+=e;const c=M(d,n.exonidx,i);U(i,l,d,false,false,true);r.attr("width",f*2+d+c).attr("height",x*2+s+o)}function h(t,n,r){const i=r.append("g").attr("transform","translate("+f+","+x+")");const a=L(t.exonidx,i);let l=a;l+=I(l,t.exonidx,n.exonidx,i);T(i,l,l+e);l+=e;const d=M(l,n.exonidx,i);l+=d/2;U(i,a,l);r.attr("width",f*2+l+d/2).attr("height",x*2+s+o)}function g(t,n,r){const i=r.append("g").attr("transform","translate("+f+","+x+")");const a=L(t.exonidx,i);let l=a;l+=I(l,t.exonidx,n.intronidx+1,i);T(i,l,l+e);l+=e/2;const d=M(l+e/2,n.intronidx+1,i);U(i,a,l,false,true);r.attr("width",f*2+l+e/2+d).attr("height",x*2+s+o)}function p(n,r){const l=r.append("g").attr("transform","translate("+f+","+x+")");const d=L(n.exonidx,l);const c=d+e;l.append("text").text("OUT").attr("x",c+5).attr("y",s+o/2).attr("fill",i).attr("dominant-baseline","central").attr("font-size",a).attr("font-family",t);U(l,d,c);r.attr("width",f*2+c+40).attr("height",x*2+s+o)}function u(t,n,r){const i=r.append("g").attr("transform","translate("+f+","+x+")");const a=L(t.exonidx,i);const l=a/2;let d=a;d+=I(d,t.exonidx,n.exonidx,i);T(i,d,d+e);d+=e;const c=M(d,n.exonidx,i);U(i,l,d);r.attr("width",f*2+d+c).attr("height",x*2+s+o)}function m(t,n,r){const a=r.append("g").attr("transform","translate("+f+","+x+")");const l=L(t.exonidx,a);if(t.exonidx==n.exonidx){const t=l/3;const n=l*2/3;a.append("path").attr("d","M"+t+","+s+"L"+(t+n)/2+",0"+"L"+n+","+s).attr("stroke",i).attr("fill","none");r.attr("width",f*2+l).attr("height",x*2+s*2+o);return}const d=l/2;let c=l;c+=I(c,t.exonidx,n.exonidx,a);T(a,c,c+e);c+=e;const h=M(c,n.exonidx,a);c+=h/2;U(a,d,c);r.attr("width",f*2+c+h/2).attr("height",x*2+s+o)}function w(t,n,r){const i=r.append("g").attr("transform","translate("+f+","+x+")");const a=L(t.exonidx,i);const l=a/2;let d=a;d+=I(d,t.exonidx,n.intronidx+1,i);T(i,d,d+e);d+=e/2;const c=M(d+e/2,n.intronidx+1,i);U(i,l,d,false,true);r.attr("width",f*2+d+e/2+c).attr("height",x*2+s+o)}function y(n,r){const l=r.append("g").attr("transform","translate("+f+","+x+")");const d=L(n.exonidx,l);const c=d/2;let h=d+e;l.append("text").text("OUT").attr("x",h+5).attr("y",s+o/2).attr("fill",i).attr("dominant-baseline","central").attr("font-size",a).attr("font-family",t);U(l,c,h);r.attr("width",f*2+h+40).attr("height",x*2+s+o)}function B(t,n,r){const i=r.append("g").attr("transform","translate("+f+","+x+")");const a=L(t.intronidx,i);const l=a+e/2;let d=a+e;T(i,a,d);d+=I(d,t.intronidx,n.exonidx,i,true);const c=M(d,n.exonidx,i);U(i,l,d,true);r.attr("width",f*2+d+c).attr("height",x*2+s+o)}function v(t,n,r){const i=r.append("g").attr("transform","translate("+f+","+x+")");const a=L(t.intronidx,i);const l=a+e/2;let d=a+e;T(i,a,d);d+=I(d,t.intronidx,n.exonidx,i,true);const c=M(d,n.exonidx,i);d+=c/2;U(i,l,d,true);r.attr("width",f*2+d+c/2).attr("height",x*2+s+o)}function b(t,n,r){const i=r.append("g").attr("transform","translate("+f+","+x+")");const a=L(t.intronidx,i);if(t.intronidx==n.intronidx){T(i,a,a+30);const t=a+10;const e=a+20;U(i,t,e,true,true);const l=M(e+10,n.intronidx+1,i);r.attr("width",f*2+a+30+l).attr("height",x*2+s+o);return}const l=a+e/2;let d=a+e;T(i,a,d);d+=I(d,t.intronidx,n.intronidx+1,i,true);T(i,d,d+e);d+=e/2;const c=M(d+e/2,n.intronidx+1,i);U(i,l,d,true,true);r.attr("width",f*2+d+e/2+c).attr("height",x*2+s+o)}function z(n,r){const l=r.append("g").attr("transform","translate("+f+","+x+")");const d=L(n.intronidx,l);const c=d+e/2;let h=d+e;T(l,d,h);const g=M(h,n.intronidx+1,l);h+=g+10;l.append("text").text("OUT").attr("x",h).attr("y",s+o/2).attr("fill",i).attr("dominant-baseline","central").attr("font-size",a).attr("font-family",t);U(l,c,h,true);r.attr("width",f*2+h+30).attr("height",x*2+s+o)}function k(n,r){const l=r.append("g").attr("transform","translate("+f+","+x+")");let d;l.append("text").text("OUT").attr("x",0).attr("y",s+o/2).attr("fill",i).attr("dominant-baseline","central").attr("font-size",a).attr("font-family",t).each((function(){d=this.getBBox().width}));const c=d+5;const h=c+e;const g=M(h,n.exonidx,l);U(l,c,h);r.attr("width",f*2+h+g).attr("height",x*2+s+o)}function E(n,r){const l=r.append("g").attr("transform","translate("+f+","+x+")");let d;l.append("text").text("OUT").attr("x",0).attr("y",s+o/2).attr("fill",i).attr("dominant-baseline","central").attr("font-size",a).attr("font-family",t).each((function(){d=this.getBBox().width}));const c=d+5;const h=M(c+e,n.exonidx,l);const g=c+e+h/2;U(l,c,g);r.attr("width",f*2+g+h/2).attr("height",x*2+s+o)}function O(n,r){const l=r.append("g").attr("transform","translate("+f+","+x+")");let d;l.append("text").text("OUT").attr("x",0).attr("y",s+o/2).attr("fill",i).attr("dominant-baseline","central").attr("font-size",a).attr("font-family",t).each((function(){d=this.getBBox().width}));const c=d+5;const h=M(c+30,n.intronidx,l);T(l,c+30+h,c+30+h+e);const g=c+30+h+e/2;const p=M(c+30+h+e,n.intronidx+1,l);U(l,c,g,false,true);r.attr("width",f*2+c+30+h+e+p).attr("height",x*2+s+o)}function T(t,e,r){t.append("line").attr("x1",e).attr("y1",s+o/2).attr("x2",r).attr("y2",s+o/2).attr("stroke",n).attr("shape-rendering","crispEdges")}function U(t,e,r,a,f,x){t.append("path").attr("d","M"+e+","+(s+(a?o/2:0))+"L"+(e+r)/2+",0"+"L"+r+","+(s+(f?o/2:0))).attr("stroke",x?n:i).attr("fill","none")}function L(e,i){const f="e"+(e+1);let x;i.append("text").text(f).attr("font-size",a).attr("font-family",t).each((function(){x=this.getBBox().width})).remove();const l=r*2+x;i.append("rect").attr("fill",n).attr("stroke",n).attr("x",0).attr("y",s).attr("width",l).attr("height",o).attr("shape-rendering","crispEdges");i.append("text").text(f).attr("text-anchor","middle").attr("x",l/2).attr("y",s+o/2).attr("fill","white").attr("dominant-baseline","central").attr("font-size",a).attr("font-family",t);return l}function M(e,i,f){let x;if(Number.isInteger(i)){x="e"+(i+1)}else{x=x}let l;f.append("text").text(x).attr("font-size",a).attr("font-family",t).each((function(){l=this.getBBox().width})).remove();const d=r*2+l;f.append("rect").attr("fill",n).attr("stroke",n).attr("x",e).attr("y",s).attr("width",d).attr("height",o).attr("shape-rendering","crispEdges");f.append("text").text(x).attr("text-anchor","middle").attr("x",e+d/2).attr("y",s+o/2).attr("fill","white").attr("dominant-baseline","central").attr("font-size",a).attr("font-family",t);return d}function j(t){if(t<3)return 12;if(t<6)return 7;return 4}function I(t,e,r,i,a){const f=r-1-e;if(f==0)return 0;const x=j(f);let l=0;for(let f=e+1;f<r;f++){if(!a){i.append("line").attr("x1",t+l).attr("y1",s+o/2).attr("x2",t+l+x).attr("y2",s+o/2).attr("stroke",n).attr("shape-rendering","crispEdges");l+=x}i.append("rect").attr("fill",n).attr("stroke",n).attr("x",t+l).attr("y",s).attr("width",x).attr("height",o).attr("shape-rendering","crispEdges");l+=x;if(a){i.append("line").attr("x1",t+l).attr("y1",s+o/2).attr("x2",t+l+x).attr("y2",s+o/2).attr("stroke",n).attr("shape-rendering","crispEdges");l+=x}}return l}export{d as differentgenes,l as samegene};
1
+ import{p as t,a5 as n}from"./app-71453429.js";const e=30;const r=5;const i="#990000";const o=20;const a=14;const s=20;const f=15;const x=15;function l(t){const n=t.isoform;if(!n){t.holder.text(".event missing");return}if(!t.ongene){holder.text(".ongene missing");return}let e,r,i,o,a,s;if(t.ongene.exonleft){const i=t.ongene.exonleft.filter((t=>t.isoform==n))[0];if(t.reverse)r=i;else e=i}if(t.ongene.exonright){const i=t.ongene.exonright.filter((t=>t.isoform==n))[0];if(t.reverse)e=i;else r=i}if(t.ongene.exonleftin){const e=t.ongene.exonleftin.filter((t=>t.isoform==n))[0];if(t.reverse)o=e;else i=e}if(t.ongene.exonrightin){const e=t.ongene.exonrightin.filter((t=>t.isoform==n))[0];if(t.reverse)i=e;else o=e}if(t.ongene.intronleft){const e=t.ongene.intronleft.filter((t=>t.isoform==n))[0];if(t.reverse)s=e;else a=e}if(t.ongene.intronright){const e=t.ongene.intronright.filter((t=>t.isoform==n))[0];if(t.reverse)a=e;else s=e}if(t.ongene.leftout){t.ongene.leftout.filter((t=>t.isoform==n))[0];if(t.reverse);}if(t.ongene.rightout){t.ongene.rightout.filter((t=>t.isoform==n))[0];if(t.reverse);}const f=t.holder.append("svg").attr("width",1).attr("height",1);if(e){if(r){c(e,r,f)}else if(o){h(e,o,f)}else if(s){g(e,s,f)}else{p(e,f)}}else if(i){if(r){u(i,r,f)}else if(o){m(i,o,f)}else if(s){w(i,s,f)}else{y(i,f)}}else if(a){if(r){B(a,r,f)}else if(o){v(a,o,f)}else if(s){z(a,s,f)}else{b(a,f)}}else{if(r){k(r,f)}else if(o){E(o,f)}else if(s){O(s,f)}}}function d(n){const r=n.holder.append("svg");const i=r.append("g").attr("transform","translate("+f+","+x+")");let l=0,d=0;let c,h,g;if(n.ongene.exonleft){c=n.ongene.exonleft[0]}else if(n.ongene.exonleftin){h=n.ongene.exonleftin[0]}else if(n.ongene.intronleft){g=n.ongene.intronleft[0]}let p=0;i.append("text").text(c?c.gene:h?h.gene:g?g.gene:"Left gene").attr("x",0).attr("y",s+o/2).attr("dominant-baseline","central").attr("font-size",a).attr("font-family",t).each((function(){p=this.getBBox().width}));p+=5;if(c){const t=M(p,c.exonidx,i);p+=t;l=p}else if(h){const t=M(p,h.exonidx,i);l=p+t/2;p+=t}else if(g){const t=M(p,g.intronidx,i);T(i,p+t,p+t+e);const n=M(p+t+e,g.intronidx+1,i);p+=t;l=p+e/2;p+=e+n}p+=30;let u,m,w;if(n.ongene.exonright){u=n.ongene.exonright[0]}else if(n.ongene.exonrightin){m=n.ongene.exonrightin[0]}else if(n.ongene.intronright){w=n.ongene.intronright[0]}if(u){const t=M(p,u.exonidx,i);d=p;p+=t}else if(m){const t=M(p,m.exonidx,i);d=p+t/2;p+=t}else if(w){const t=M(p,w.intronidx,i);T(i,p+t,p+t+e);const n=M(p+t+e,w.intronidx+1,i);p+=t;d=p+e/2;p+=e+n}p+=5;i.append("text").text(u?u.gene:m?m.gene:w?w.gene:"Right gene").attr("x",p).attr("y",s+o/2).attr("dominant-baseline","central").attr("font-size",a).attr("font-family",t).each((function(){p+=this.getBBox().width}));U(i,l,d,g,w);r.attr("width",f*2+p).attr("height",s+o+x*2)}function c(t,n,r){const i=r.append("g").attr("transform","translate("+f+","+x+")");const a=n.exonidx-t.exonidx==1;const l=L(t.exonidx,i);let d=l;d+=I(d,t.exonidx,n.exonidx,i);if(!a){T(i,d,d+e)}d+=e;const c=M(d,n.exonidx,i);U(i,l,d,false,false,true);r.attr("width",f*2+d+c).attr("height",x*2+s+o)}function h(t,n,r){const i=r.append("g").attr("transform","translate("+f+","+x+")");const a=L(t.exonidx,i);let l=a;l+=I(l,t.exonidx,n.exonidx,i);T(i,l,l+e);l+=e;const d=M(l,n.exonidx,i);l+=d/2;U(i,a,l);r.attr("width",f*2+l+d/2).attr("height",x*2+s+o)}function g(t,n,r){const i=r.append("g").attr("transform","translate("+f+","+x+")");const a=L(t.exonidx,i);let l=a;l+=I(l,t.exonidx,n.intronidx+1,i);T(i,l,l+e);l+=e/2;const d=M(l+e/2,n.intronidx+1,i);U(i,a,l,false,true);r.attr("width",f*2+l+e/2+d).attr("height",x*2+s+o)}function p(n,r){const l=r.append("g").attr("transform","translate("+f+","+x+")");const d=L(n.exonidx,l);const c=d+e;l.append("text").text("OUT").attr("x",c+5).attr("y",s+o/2).attr("fill",i).attr("dominant-baseline","central").attr("font-size",a).attr("font-family",t);U(l,d,c);r.attr("width",f*2+c+40).attr("height",x*2+s+o)}function u(t,n,r){const i=r.append("g").attr("transform","translate("+f+","+x+")");const a=L(t.exonidx,i);const l=a/2;let d=a;d+=I(d,t.exonidx,n.exonidx,i);T(i,d,d+e);d+=e;const c=M(d,n.exonidx,i);U(i,l,d);r.attr("width",f*2+d+c).attr("height",x*2+s+o)}function m(t,n,r){const a=r.append("g").attr("transform","translate("+f+","+x+")");const l=L(t.exonidx,a);if(t.exonidx==n.exonidx){const t=l/3;const n=l*2/3;a.append("path").attr("d","M"+t+","+s+"L"+(t+n)/2+",0"+"L"+n+","+s).attr("stroke",i).attr("fill","none");r.attr("width",f*2+l).attr("height",x*2+s*2+o);return}const d=l/2;let c=l;c+=I(c,t.exonidx,n.exonidx,a);T(a,c,c+e);c+=e;const h=M(c,n.exonidx,a);c+=h/2;U(a,d,c);r.attr("width",f*2+c+h/2).attr("height",x*2+s+o)}function w(t,n,r){const i=r.append("g").attr("transform","translate("+f+","+x+")");const a=L(t.exonidx,i);const l=a/2;let d=a;d+=I(d,t.exonidx,n.intronidx+1,i);T(i,d,d+e);d+=e/2;const c=M(d+e/2,n.intronidx+1,i);U(i,l,d,false,true);r.attr("width",f*2+d+e/2+c).attr("height",x*2+s+o)}function y(n,r){const l=r.append("g").attr("transform","translate("+f+","+x+")");const d=L(n.exonidx,l);const c=d/2;let h=d+e;l.append("text").text("OUT").attr("x",h+5).attr("y",s+o/2).attr("fill",i).attr("dominant-baseline","central").attr("font-size",a).attr("font-family",t);U(l,c,h);r.attr("width",f*2+h+40).attr("height",x*2+s+o)}function B(t,n,r){const i=r.append("g").attr("transform","translate("+f+","+x+")");const a=L(t.intronidx,i);const l=a+e/2;let d=a+e;T(i,a,d);d+=I(d,t.intronidx,n.exonidx,i,true);const c=M(d,n.exonidx,i);U(i,l,d,true);r.attr("width",f*2+d+c).attr("height",x*2+s+o)}function v(t,n,r){const i=r.append("g").attr("transform","translate("+f+","+x+")");const a=L(t.intronidx,i);const l=a+e/2;let d=a+e;T(i,a,d);d+=I(d,t.intronidx,n.exonidx,i,true);const c=M(d,n.exonidx,i);d+=c/2;U(i,l,d,true);r.attr("width",f*2+d+c/2).attr("height",x*2+s+o)}function z(t,n,r){const i=r.append("g").attr("transform","translate("+f+","+x+")");const a=L(t.intronidx,i);if(t.intronidx==n.intronidx){T(i,a,a+30);const t=a+10;const e=a+20;U(i,t,e,true,true);const l=M(e+10,n.intronidx+1,i);r.attr("width",f*2+a+30+l).attr("height",x*2+s+o);return}const l=a+e/2;let d=a+e;T(i,a,d);d+=I(d,t.intronidx,n.intronidx+1,i,true);T(i,d,d+e);d+=e/2;const c=M(d+e/2,n.intronidx+1,i);U(i,l,d,true,true);r.attr("width",f*2+d+e/2+c).attr("height",x*2+s+o)}function b(n,r){const l=r.append("g").attr("transform","translate("+f+","+x+")");const d=L(n.intronidx,l);const c=d+e/2;let h=d+e;T(l,d,h);const g=M(h,n.intronidx+1,l);h+=g+10;l.append("text").text("OUT").attr("x",h).attr("y",s+o/2).attr("fill",i).attr("dominant-baseline","central").attr("font-size",a).attr("font-family",t);U(l,c,h,true);r.attr("width",f*2+h+30).attr("height",x*2+s+o)}function k(n,r){const l=r.append("g").attr("transform","translate("+f+","+x+")");let d;l.append("text").text("OUT").attr("x",0).attr("y",s+o/2).attr("fill",i).attr("dominant-baseline","central").attr("font-size",a).attr("font-family",t).each((function(){d=this.getBBox().width}));const c=d+5;const h=c+e;const g=M(h,n.exonidx,l);U(l,c,h);r.attr("width",f*2+h+g).attr("height",x*2+s+o)}function E(n,r){const l=r.append("g").attr("transform","translate("+f+","+x+")");let d;l.append("text").text("OUT").attr("x",0).attr("y",s+o/2).attr("fill",i).attr("dominant-baseline","central").attr("font-size",a).attr("font-family",t).each((function(){d=this.getBBox().width}));const c=d+5;const h=M(c+e,n.exonidx,l);const g=c+e+h/2;U(l,c,g);r.attr("width",f*2+g+h/2).attr("height",x*2+s+o)}function O(n,r){const l=r.append("g").attr("transform","translate("+f+","+x+")");let d;l.append("text").text("OUT").attr("x",0).attr("y",s+o/2).attr("fill",i).attr("dominant-baseline","central").attr("font-size",a).attr("font-family",t).each((function(){d=this.getBBox().width}));const c=d+5;const h=M(c+30,n.intronidx,l);T(l,c+30+h,c+30+h+e);const g=c+30+h+e/2;const p=M(c+30+h+e,n.intronidx+1,l);U(l,c,g,false,true);r.attr("width",f*2+c+30+h+e+p).attr("height",x*2+s+o)}function T(t,e,r){t.append("line").attr("x1",e).attr("y1",s+o/2).attr("x2",r).attr("y2",s+o/2).attr("stroke",n).attr("shape-rendering","crispEdges")}function U(t,e,r,a,f,x){t.append("path").attr("d","M"+e+","+(s+(a?o/2:0))+"L"+(e+r)/2+",0"+"L"+r+","+(s+(f?o/2:0))).attr("stroke",x?n:i).attr("fill","none")}function L(e,i){const f="e"+(e+1);let x;i.append("text").text(f).attr("font-size",a).attr("font-family",t).each((function(){x=this.getBBox().width})).remove();const l=r*2+x;i.append("rect").attr("fill",n).attr("stroke",n).attr("x",0).attr("y",s).attr("width",l).attr("height",o).attr("shape-rendering","crispEdges");i.append("text").text(f).attr("text-anchor","middle").attr("x",l/2).attr("y",s+o/2).attr("fill","white").attr("dominant-baseline","central").attr("font-size",a).attr("font-family",t);return l}function M(e,i,f){let x;if(Number.isInteger(i)){x="e"+(i+1)}else{x=x}let l;f.append("text").text(x).attr("font-size",a).attr("font-family",t).each((function(){l=this.getBBox().width})).remove();const d=r*2+l;f.append("rect").attr("fill",n).attr("stroke",n).attr("x",e).attr("y",s).attr("width",d).attr("height",o).attr("shape-rendering","crispEdges");f.append("text").text(x).attr("text-anchor","middle").attr("x",e+d/2).attr("y",s+o/2).attr("fill","white").attr("dominant-baseline","central").attr("font-size",a).attr("font-family",t);return d}function j(t){if(t<3)return 12;if(t<6)return 7;return 4}function I(t,e,r,i,a){const f=r-1-e;if(f==0)return 0;const x=j(f);let l=0;for(let f=e+1;f<r;f++){if(!a){i.append("line").attr("x1",t+l).attr("y1",s+o/2).attr("x2",t+l+x).attr("y2",s+o/2).attr("stroke",n).attr("shape-rendering","crispEdges");l+=x}i.append("rect").attr("fill",n).attr("stroke",n).attr("x",t+l).attr("y",s).attr("width",x).attr("height",o).attr("shape-rendering","crispEdges");l+=x;if(a){i.append("line").attr("x1",t+l).attr("y1",s+o/2).attr("x2",t+l+x).attr("y2",s+o/2).attr("stroke",n).attr("shape-rendering","crispEdges");l+=x}}return l}export{d as differentgenes,l as samegene};
@@ -1 +1 @@
1
- import{bQ as s,ak as i,bS as o}from"./app-f91922b4.js";function a(a){const d=[];if(a.isaltexon||a.isskipexon){const e=Math.min(...a.skippedexon);const l=Math.max(...a.skippedexon);d.push('<div style="display:inline-block">'+(e==l?"exon "+(e+1):"exons "+(e+1)+"-"+(l+1))+" "+(a.isaltexon?"alternative usage":"skipping")+"</div>");if(a.isaltexon){d.push("<div class=sja_tinylogo_body>"+a.gmB.isoform+", "+a.gmA.isoform+"</div><div class=sja_tinylogo_head>ISOFORMS</div>")}else{d.push("<div class=sja_tinylogo_body>"+a.gm.isoform+"</div><div class=sja_tinylogo_head>ISOFORM</div>")}if(a.junctionB.data){d.push("<div class=sja_tinylogo_body>"+a.junctionB.data.length+"</div><div class=sja_tinylogo_head>SAMPLE"+(a.junctionB.data.length>1?"S":"")+"</div>")}d.push("<div class=sja_tinylogo_body>"+a.percentage+" %</div><div class=sja_tinylogo_head>PERCENT</div>");if(a.framenocheck){if(a.utr3){d.push('<div class=sja_tinylogo_body style="background-color:#ededed">3\' UTR</div>')}else if(a.utr5){d.push('<div class=sja_tinylogo_body style="background-color:#ededed">5\' UTR</div>')}}else if(a.frame==s){d.push('<div class=sja_tinylogo_body style="background-color:'+i+';color:white">IN</div><div class=sja_tinylogo_head>FRAME</div>')}else if(a.frame==o){d.push("<div class=sja_tinylogo_body>OUT</div><div class=sja_tinylogo_head>FRAME</div>")}else{d.push("<div class=sja_tinylogo_body>?</div><div class=sja_tinylogo_head>FRAME</div>")}}else{return"unknown event type!!"}return d.join(" ")}export{a as s};
1
+ import{bQ as s,ak as i,bS as o}from"./app-71453429.js";function a(a){const d=[];if(a.isaltexon||a.isskipexon){const e=Math.min(...a.skippedexon);const l=Math.max(...a.skippedexon);d.push('<div style="display:inline-block">'+(e==l?"exon "+(e+1):"exons "+(e+1)+"-"+(l+1))+" "+(a.isaltexon?"alternative usage":"skipping")+"</div>");if(a.isaltexon){d.push("<div class=sja_tinylogo_body>"+a.gmB.isoform+", "+a.gmA.isoform+"</div><div class=sja_tinylogo_head>ISOFORMS</div>")}else{d.push("<div class=sja_tinylogo_body>"+a.gm.isoform+"</div><div class=sja_tinylogo_head>ISOFORM</div>")}if(a.junctionB.data){d.push("<div class=sja_tinylogo_body>"+a.junctionB.data.length+"</div><div class=sja_tinylogo_head>SAMPLE"+(a.junctionB.data.length>1?"S":"")+"</div>")}d.push("<div class=sja_tinylogo_body>"+a.percentage+" %</div><div class=sja_tinylogo_head>PERCENT</div>");if(a.framenocheck){if(a.utr3){d.push('<div class=sja_tinylogo_body style="background-color:#ededed">3\' UTR</div>')}else if(a.utr5){d.push('<div class=sja_tinylogo_body style="background-color:#ededed">5\' UTR</div>')}}else if(a.frame==s){d.push('<div class=sja_tinylogo_body style="background-color:'+i+';color:white">IN</div><div class=sja_tinylogo_head>FRAME</div>')}else if(a.frame==o){d.push("<div class=sja_tinylogo_body>OUT</div><div class=sja_tinylogo_head>FRAME</div>")}else{d.push("<div class=sja_tinylogo_body>?</div><div class=sja_tinylogo_head>FRAME</div>")}}else{return"unknown event type!!"}return d.join(" ")}export{a as s};
@@ -1 +1 @@
1
- import{az as t}from"./app-f91922b4.js";class e{constructor(t){this.type="stattable"}async init(){this.dom={div:this.opts.holder.append("div").style("margin","10px")};i(this)}getState(t){const e=t.plots.find((t=>t.id===this.id));if(!e){throw`No plot with id='${this.id}' found. Did you set this.id before this.api = getComponentApi(this)?`}return{activeCohort:t.activeCohort,termfilter:t.termfilter,config:{term:e.term,term0:e.term0,term2:e.term2,settings:{common:e.settings.common,barchart:e.settings.barchart}},filter:t.termfilter.filter}}async main(){try{this.config=structuredClone(this.state.config);if(this.state.isVisible){const t=this.getDataRequestOpts();const e=await this.app.vocabApi.getNestedChartSeriesData(t);this.app.vocabApi.syncTermData(this.state.config,e)}if(!this.state.isVisible||!this.data||!this.data.boxplot){this.dom.div.style("display","none");return}this.render(this.data)}catch(t){throw t}}getDataRequestOpts(){const t=this.config;const e={term:t.term,filter:this.state.termfilter.filter};if(t.term2)e.term2=t.term2;if(t.term0)e.term0=t.term0;if(this.state.ssid)e.ssid=this.state.ssid;return e}}function i(t){t.render=function(e){t.dom.div.style("display","block").selectAll("*").remove();let i="";const o=e.boxplot.sd?" ("+e.boxplot.sd.toFixed(2)+") ":"";let s="";if(Number.isFinite(e.boxplot.min)){s+="<tr><td>Minimum</td><td>"+e.boxplot.min.toFixed(2)+"</td></tr>"}if(Number.isFinite(e.boxplot.max)){s+="<tr><td>Maximum</td><td>"+e.boxplot.max.toFixed(2)+"</td></tr>"}s+="<tr><td>Mean (SD)</td><td>"+e.boxplot.mean.toFixed(2)+o+"</td></tr>";if("p50"in e.boxplot){s+="<tr><td>Median (IQR)</td><td>"+e.boxplot.p50.toFixed(2)+" ("+e.boxplot.iqr.toFixed(2)+") </td></tr>"+"<tr><td>5th Percentile</td><td>"+e.boxplot.p05.toFixed(2)+"</td></tr>"+"<tr><td>25th Percentile</td><td>"+e.boxplot.p25.toFixed(2)+"</td></tr>"+"<tr><td>75th Percentile</td><td>"+e.boxplot.p75.toFixed(2)+"</td></tr>"+"<tr><td>95th Percentile</td><td>"+e.boxplot.p95.toFixed(2)+"</td></tr>"}t.dom.div.html("<table><tr><th></th><th>Value</th></tr>"+i+s+"</table>");t.dom.div.selectAll("td, th, table").style("border","1px solid black").style("padding","0").style("border-collapse","collapse");t.dom.div.selectAll("th, td").style("padding","2px 10px")}}const o=t(e);export{o as statTableInit};
1
+ import{az as t}from"./app-71453429.js";class e{constructor(t){this.type="stattable"}async init(){this.dom={div:this.opts.holder.append("div").style("margin","10px")};i(this)}getState(t){const e=t.plots.find((t=>t.id===this.id));if(!e){throw`No plot with id='${this.id}' found. Did you set this.id before this.api = getComponentApi(this)?`}return{activeCohort:t.activeCohort,termfilter:t.termfilter,config:{term:e.term,term0:e.term0,term2:e.term2,settings:{common:e.settings.common,barchart:e.settings.barchart}},filter:t.termfilter.filter}}async main(){try{this.config=structuredClone(this.state.config);if(this.state.isVisible){const t=this.getDataRequestOpts();const e=await this.app.vocabApi.getNestedChartSeriesData(t);this.app.vocabApi.syncTermData(this.state.config,e)}if(!this.state.isVisible||!this.data||!this.data.boxplot){this.dom.div.style("display","none");return}this.render(this.data)}catch(t){throw t}}getDataRequestOpts(){const t=this.config;const e={term:t.term,filter:this.state.termfilter.filter};if(t.term2)e.term2=t.term2;if(t.term0)e.term0=t.term0;if(this.state.ssid)e.ssid=this.state.ssid;return e}}function i(t){t.render=function(e){t.dom.div.style("display","block").selectAll("*").remove();let i="";const o=e.boxplot.sd?" ("+e.boxplot.sd.toFixed(2)+") ":"";let s="";if(Number.isFinite(e.boxplot.min)){s+="<tr><td>Minimum</td><td>"+e.boxplot.min.toFixed(2)+"</td></tr>"}if(Number.isFinite(e.boxplot.max)){s+="<tr><td>Maximum</td><td>"+e.boxplot.max.toFixed(2)+"</td></tr>"}s+="<tr><td>Mean (SD)</td><td>"+e.boxplot.mean.toFixed(2)+o+"</td></tr>";if("p50"in e.boxplot){s+="<tr><td>Median (IQR)</td><td>"+e.boxplot.p50.toFixed(2)+" ("+e.boxplot.iqr.toFixed(2)+") </td></tr>"+"<tr><td>5th Percentile</td><td>"+e.boxplot.p05.toFixed(2)+"</td></tr>"+"<tr><td>25th Percentile</td><td>"+e.boxplot.p25.toFixed(2)+"</td></tr>"+"<tr><td>75th Percentile</td><td>"+e.boxplot.p75.toFixed(2)+"</td></tr>"+"<tr><td>95th Percentile</td><td>"+e.boxplot.p95.toFixed(2)+"</td></tr>"}t.dom.div.html("<table><tr><th></th><th>Value</th></tr>"+i+s+"</table>");t.dom.div.selectAll("td, th, table").style("border","1px solid black").style("padding","0").style("border-collapse","collapse");t.dom.div.selectAll("th, td").style("padding","2px 10px")}}const o=t(e);export{o as statTableInit};
@@ -1 +1 @@
1
- import{s as n}from"./app-f91922b4.js";var p="\n\n\n.sjpp-plus-button, .sjpp-dshandleholder {\n border-radius: 4px;\n}\n\n";var s="\n\n\n.sjpp-plus-button, .sjpp-dshandleholder {\n border-radius: 4px;\n}\n\n";n(p);export{p as default,s as stylesheet};
1
+ import{s as n}from"./app-71453429.js";var p="\n\n\n.sjpp-plus-button, .sjpp-dshandleholder {\n border-radius: 4px;\n}\n\n";var s="\n\n\n.sjpp-plus-button, .sjpp-dshandleholder {\n border-radius: 4px;\n}\n\n";n(p);export{p as default,s as stylesheet};
@@ -1 +1 @@
1
- import{az as t,M as e,aR as i,aS as o}from"./app-f91922b4.js";import{f as r}from"./termsetting-9a7511e6.js";import{r as s}from"./recover-a08c8d01.js";import{getDefaultViolinSettings as a}from"./violin-c1b78717.js";import{getDefaultBarSettings as n}from"./barchart-e2af00a8.js";import{g as p}from"./sampleScatter-031f47de.js";import{i as l}from"./FilterRxComp-0e75dd8d.js";import"path";import"./FilterStateless-ad3df967.js";import"./app-bfce9bf5.js";import"./termInfo-96285f4a.js";import"./table-d6c411fd.js";import"./controls-8d4972c8.js";import"./controls.btns-bad9e4cf.js";import"./controls.config-e0f394cb.js";import"./controls.overlay-3ac8773d.js";import"./controls.term1-008f4be4.js";import"./controls.divide-d8ac5a9b.js";import"./violin.renderer-16540fb8.js";import"./brush-db0ed33a.js";import"./pointer-c7475677.js";import"./nodrag-777a34a5.js";import"./axis-6cb4f314.js";import"./line-264f8f9e.js";import"./constant-426a1483.js";import"./basis-3870f5ba.js";import"./log-4d74231e.js";import"./html.legend-3e428f9e.js";import"./violin.interactivity-534d6993.js";import"./niceNumLabels-8fdc6507.js";import"./bars.settings-64bb4642.js";import"./bars.renderer-f0e5af5a.js";import"./svg.legend-c82b153f.js";import"./barchart.events-272fd122.js";import"./zoom-2d4ede33.js";import"./lasso-393c1570.js";import"./drag-c354e2c6.js";import"./sampleScatter.interactivity-e9c30652.js";import"./downloadTextfile-5723af95.js";import"./sampleView-d6a91293.js";import"./svg.download-56529955.js";import"./symbol-fc7cbd41.js";import"./math-2fb199c6.js";import"./sampleScatter.rendererThree-3e6c032e.js";class c{constructor(t){this.type="summary";this.components={recover:{},plots:{}};this.chartsByType={}}async init(t){const e=this.getState(t);const i=structuredClone(e.config);m(this);this.initUi(this.opts,i);this.components.recover=await s({app:this.app,holder:this.dom.localRecoverDiv,getState:t=>this.getState(t),reactsTo:t=>t.id==this.id&&t.type=="plot_edit"&&t._scope_!="none",plot_id:this.id,maxHistoryLen:10,margin:"5px 10px"})}reactsTo(t){if(t.type.includes("cache_termq"))return true;if(t.type.startsWith("plot_")){return t.id===this.id}if(t.type.startsWith("filter"))return true;if(t.type.startsWith("cohort"))return true;if(t.type=="app_refresh")return true}getState(t){const e=t.plots.find((t=>t.id===this.id));if(!e){throw`No plot with id='${this.id}' found. Did you set this.id before this.api = getComponentApi(this)?`}return{config:e,_scope_:t._scope_}}async main(){this.dom.errdiv.style("display","none");this.config=structuredClone(this.state.config);if(!this.components.plots[this.config.childType]){await this.setComponent(this.config)}for(const t in this.components.plots){this.components.plots[t]}this.render();const t=this.tabsData.findIndex((t=>t.childType==this.config.childType));this.chartToggles.update(t,this.config)}async setComponent(t){let e;if(t.childType=="barchart")e=await import("./barchart-e2af00a8.js");else if(t.childType=="violin")e=await import("./violin-c1b78717.js");else if(t.childType=="table")e=await import("./table-bf604c50.js");else if(t.childType=="boxplot")e=await import("./boxplot-7de25274.js");else if(t.childType=="sampleScatter")e=await import("./sampleScatter-031f47de.js").then((function(t){return t.a}));else throw`unsupported childType='${t.childType}'`;this.dom.plotDivs[t.childType]=this.dom.viz.append("div");this.components.plots[t.childType]=await e.componentInit({app:this.app,holder:this.dom.plotDivs[t.childType],id:this.id,parent:this.api})}destroy(){this.dom.holder.app_div.selectAll("*").remove();this.dom.holder.app_div.remove();for(const t in this.dom){delete this.dom[t]}}}const d=t(c);function m(t){t.initUi=function(o,r){const s=o.holder;try{t.dom={tip:new e({padding:"0px"}),holder:s,body:s.body.style("white-space","nowrap").style("overflow-x","auto"),errdiv:s.body.append("div").style("display","none").style("padding","5px").style("background-color","rgba(255,100,100,0.2)"),viz:s.body.append("div"),plotDivs:{}};s.header.style("padding",0);t.dom.paneTitleDiv=t.dom.holder.header.append("div").style("display","inline-block").style("color","#999").style("padding-left","7px");t.dom.paneTitleDiv.append("div").classed("sjpp-term-header",true).style("display","inline-block").style("vertical-align","sub").html(r.term.term.name);t.tabsData=[{childType:"barchart",label:"Barchart",isVisible:()=>true,disabled:t=>false,getConfig:async()=>{if(!t.config)return;const e={id:t.id,childType:"barchart"};const i=t.config?.term;const o=t.config?.term2;if(i){const o=l(i?.term)?"discrete":i?.q.mode||"discrete";e.term=await t.getWrappedTermCopy(i,o)}if(o){const i=l(o.term)?"discrete":o.q.mode||"discrete";e.term2=await t.getWrappedTermCopy(o,i)}return e},active:true,callback:t.tabClickCallback},{childType:"violin",label:"Violin",disabled:t=>false,isVisible:()=>l(t.config?.term?.term)||l(t.config?.term2?.term),getConfig:async()=>{const e=t.config?.term;const i=t.config.term2;let o,r;l(e?.term)?t.violinContTerm="term":t.violinContTerm="term2";if(t.violinContTerm&&t.violinContTerm==="term"||e.q?.mode=="continuous"){o=await t.getWrappedTermCopy(e,"continuous");r=await t.getWrappedTermCopy(i,"discrete");t.violinContTerm="term"}else if(t.violinContTerm&&t.violinContTerm==="term2"||i?.q?.mode=="continuous"){o=await t.getWrappedTermCopy(e,"discrete");r=await t.getWrappedTermCopy(i,"continuous");t.violinContTerm="term2"}else if(i?.q?.mode=="discrete"){o=await t.getWrappedTermCopy(e,"discrete");r=await t.getWrappedTermCopy(i,"continuous");t.violinContTerm="term2"}else{o=await t.getWrappedTermCopy(e,"continuous");r=await t.getWrappedTermCopy(i,"discrete");t.violinContTerm="term"}const s={childType:"violin",term:o,term2:r};return s},active:false,callback:t.tabClickCallback},{childType:"table",label:"Crosstab - in development",disabled:t=>true,isVisible:()=>false,active:false,callback:t.tabClickCallback},{childType:"boxplot",label:"Boxplot - TODO",disabled:t=>true,isVisible:()=>false,active:false,callback:t.tabClickCallback},{childType:"sampleScatter",label:"Scatter",disabled:t=>false,isVisible:()=>(t.config?.term.term.type==="integer"||t.config?.term.term.type==="float")&&(t.config?.term2?.term.type==="integer"||t.config?.term2?.term.type==="float"),getConfig:async()=>{const e=await t.getWrappedTermCopy(t.config?.term,"continuous");const i=await t.getWrappedTermCopy(t.config?.term2,"continuous");let o={childType:"sampleScatter",term:e,term2:i,groups:[],term0:t.config.term0};return o},active:false,callback:t.tabClickCallback}];t.dom.chartToggles=t.dom.paneTitleDiv.append("div").style("display","inline-block").style("margin-left","10px");t.chartToggles=new i({holder:t.dom.chartToggles,tabs:t.tabsData,noContent:true});t.chartToggles.main();t.dom.localRecoverDiv=t.dom.paneTitleDiv.append("div").style("display","inline-block")}catch(t){throw t}};t.tabClickCallback=async(e,i)=>{if(!i||!i.getConfig)return;const o=await i.getConfig();if(o)t.app.dispatch({type:"plot_edit",id:t.id,config:o})};t.getWrappedTermCopy=async function(e,i){if(!e)return;const o=structuredClone(e);o.q.mode=i;await r(o,t.app.vocabApi);return o};t.render=function(){for(const e in t.components.plots){const i=t.components.plots[e];if(i.type!=t.config.childType){t.dom.plotDivs[i.type].style("display","none")}}t.dom.plotDivs[t.config.childType].style("display","")}}async function f(t,e){if(!t.term)throw"summary 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} [summary getPlotConfig()]`}const i={chartType:"summary",childType:"barchart",term:t.term,groups:[],settings:{controls:{isOpen:false},common:{use_logscale:false,use_percentage:false,barheight:300,barwidth:20,barspace:2},barchart:n(e),violin:a(),sampleScatter:p()},mayAdjustConfig(t,e={}){if(!e.childType){if(t.term?.q?.mode=="continuous"&&t.term2?.q?.mode=="continuous"){t.childType="sampleScatter"}else if(t.term?.q?.mode=="continuous"||t.term2?.q?.mode=="continuous")t.childType="violin";else t.childType="barchart"}}};return o(i,t)}export{f as getPlotConfig,d as summaryInit};
1
+ import{az as t,M as e,aR as i,aS as o}from"./app-71453429.js";import{f as r}from"./termsetting-636d2271.js";import{r as s}from"./recover-b1ec4fed.js";import{getDefaultViolinSettings as a}from"./violin-a41b2e2b.js";import{getDefaultBarSettings as n}from"./barchart-ef4874c8.js";import{g as p}from"./sampleScatter-47dd82cb.js";import{i as c}from"./FilterRxComp-fc769f34.js";import"path";import"./FilterStateless-8f30f856.js";import"./app-fb676934.js";import"./termInfo-4c759483.js";import"./table-1dae543a.js";import"./controls-0467d2ec.js";import"./controls.btns-ad7b28a2.js";import"./controls.config-6cf816fb.js";import"./controls.overlay-3a55c2ec.js";import"./controls.term1-59f4cd60.js";import"./controls.divide-3c0d52d7.js";import"./violin.renderer-149310eb.js";import"./brush-bb4566a3.js";import"./pointer-c7475677.js";import"./nodrag-bed2488c.js";import"./axis-6cb4f314.js";import"./line-264f8f9e.js";import"./constant-426a1483.js";import"./basis-3870f5ba.js";import"./log-ca1e2a74.js";import"./html.legend-ef8066dd.js";import"./violin.interactivity-bcf0ccc2.js";import"./niceNumLabels-ddb76164.js";import"./bars.settings-64bb4642.js";import"./bars.renderer-c46d3f44.js";import"./svg.legend-28652faa.js";import"./barchart.events-e24facf7.js";import"./zoom-a40839cf.js";import"./lasso-ef63631b.js";import"./drag-88d451b4.js";import"./sampleScatter.interactivity-cfa3451d.js";import"./downloadTextfile-5723af95.js";import"./sampleView-30b97c7d.js";import"./svg.download-54c99186.js";import"./symbol-fc7cbd41.js";import"./math-2fb199c6.js";import"./sampleScatter.rendererThree-c5321d24.js";class l{constructor(t){this.type="summary";this.components={recover:{},plots:{}};this.chartsByType={}}async init(t){const e=this.getState(t);const i=structuredClone(e.config);d(this);this.initUi(this.opts,i);this.components.recover=await s({app:this.app,holder:this.dom.localRecoverDiv,getState:t=>this.getState(t),reactsTo:t=>t.id==this.id&&t.type=="plot_edit"&&t._scope_!="none",plot_id:this.id,maxHistoryLen:10,margin:"5px 10px"})}reactsTo(t){if(t.type.includes("cache_termq"))return true;if(t.type.startsWith("plot_")){return t.id===this.id}if(t.type.startsWith("filter"))return true;if(t.type.startsWith("cohort"))return true;if(t.type=="app_refresh")return true}getState(t){const e=t.plots.find((t=>t.id===this.id));if(!e){throw`No plot with id='${this.id}' found. Did you set this.id before this.api = getComponentApi(this)?`}return{config:e,_scope_:t._scope_}}async main(){this.dom.errdiv.style("display","none");this.config=structuredClone(this.state.config);if(!this.components.plots[this.config.childType]){await this.setComponent(this.config)}for(const t in this.components.plots){this.components.plots[t]}this.render();const t=this.tabsData.findIndex((t=>t.childType==this.config.childType));this.chartToggles.update(t,this.config)}async setComponent(t){let e;if(t.childType=="barchart")e=await import("./barchart-ef4874c8.js");else if(t.childType=="violin")e=await import("./violin-a41b2e2b.js");else if(t.childType=="table")e=await import("./table-b4a61573.js");else if(t.childType=="boxplot")e=await import("./boxplot-a2e1ace0.js");else if(t.childType=="sampleScatter")e=await import("./sampleScatter-47dd82cb.js").then((function(t){return t.a}));else throw`unsupported childType='${t.childType}'`;this.dom.plotDivs[t.childType]=this.dom.viz.append("div");this.components.plots[t.childType]=await e.componentInit({app:this.app,holder:this.dom.plotDivs[t.childType],id:this.id,parent:this.api})}destroy(){this.dom.holder.app_div.selectAll("*").remove();this.dom.holder.app_div.remove();for(const t in this.dom){delete this.dom[t]}}}const m=t(l);function d(t){t.initUi=function(o,r){const s=o.holder;try{t.dom={tip:new e({padding:"0px"}),holder:s,body:s.body.style("white-space","nowrap").style("overflow-x","auto"),errdiv:s.body.append("div").style("display","none").style("padding","5px").style("background-color","rgba(255,100,100,0.2)"),viz:s.body.append("div"),plotDivs:{}};s.header.style("padding",0);t.dom.paneTitleDiv=t.dom.holder.header.append("div").style("display","inline-block").style("color","#999").style("padding-left","7px");t.dom.paneTitleDiv.append("div").classed("sjpp-term-header",true).style("display","inline-block").style("vertical-align","sub").html(r.term.term.name);t.tabsData=[{childType:"barchart",label:"Barchart",isVisible:()=>true,disabled:t=>false,getConfig:async()=>{if(!t.config)return;const e={id:t.id,childType:"barchart"};const i=t.config?.term;const o=t.config?.term2;if(i){const o=c(i?.term)?"discrete":i?.q.mode||"discrete";e.term=await t.getWrappedTermCopy(i,o)}if(o){const i=c(o.term)?"discrete":o.q.mode||"discrete";e.term2=await t.getWrappedTermCopy(o,i)}return e},active:true,callback:t.tabClickCallback},{childType:"violin",label:"Violin",disabled:t=>false,isVisible:()=>c(t.config?.term?.term)||c(t.config?.term2?.term),getConfig:async()=>{const e=t.config?.term;const i=t.config.term2;let o,r;c(e?.term)?t.violinContTerm="term":t.violinContTerm="term2";if(t.violinContTerm&&t.violinContTerm==="term"||e.q?.mode=="continuous"){o=await t.getWrappedTermCopy(e,"continuous");r=await t.getWrappedTermCopy(i,"discrete");t.violinContTerm="term"}else if(t.violinContTerm&&t.violinContTerm==="term2"||i?.q?.mode=="continuous"){o=await t.getWrappedTermCopy(e,"discrete");r=await t.getWrappedTermCopy(i,"continuous");t.violinContTerm="term2"}else if(i?.q?.mode=="discrete"){o=await t.getWrappedTermCopy(e,"discrete");r=await t.getWrappedTermCopy(i,"continuous");t.violinContTerm="term2"}else{o=await t.getWrappedTermCopy(e,"continuous");r=await t.getWrappedTermCopy(i,"discrete");t.violinContTerm="term"}const s={childType:"violin",term:o,term2:r};return s},active:false,callback:t.tabClickCallback},{childType:"table",label:"Crosstab - in development",disabled:t=>true,isVisible:()=>false,active:false,callback:t.tabClickCallback},{childType:"boxplot",label:"Boxplot - TODO",disabled:t=>true,isVisible:()=>false,active:false,callback:t.tabClickCallback},{childType:"sampleScatter",label:"Scatter",disabled:t=>false,isVisible:()=>(t.config?.term.term.type==="integer"||t.config?.term.term.type==="float")&&(t.config?.term2?.term.type==="integer"||t.config?.term2?.term.type==="float"),getConfig:async()=>{const e=await t.getWrappedTermCopy(t.config?.term,"continuous");const i=await t.getWrappedTermCopy(t.config?.term2,"continuous");let o={childType:"sampleScatter",term:e,term2:i,groups:[],term0:t.config.term0};return o},active:false,callback:t.tabClickCallback}];t.dom.chartToggles=t.dom.paneTitleDiv.append("div").style("display","inline-block").style("margin-left","10px");t.chartToggles=new i({holder:t.dom.chartToggles,tabs:t.tabsData,noContent:true});t.chartToggles.main();t.dom.localRecoverDiv=t.dom.paneTitleDiv.append("div").style("display","inline-block")}catch(t){throw t}};t.tabClickCallback=async(e,i)=>{if(!i||!i.getConfig)return;const o=await i.getConfig();if(o)t.app.dispatch({type:"plot_edit",id:t.id,config:o})};t.getWrappedTermCopy=async function(e,i){if(!e)return;const o=structuredClone(e);o.q.mode=i;await r(o,t.app.vocabApi);return o};t.render=function(){for(const e in t.components.plots){const i=t.components.plots[e];if(i.type!=t.config.childType){t.dom.plotDivs[i.type].style("display","none")}}t.dom.plotDivs[t.config.childType].style("display","")}}async function f(t,e){if(!t.term)throw"summary 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} [summary getPlotConfig()]`}const i={chartType:"summary",childType:"barchart",term:t.term,groups:[],settings:{controls:{isOpen:false},common:{use_logscale:false,use_percentage:false,barheight:300,barwidth:20,barspace:2},barchart:n(e),violin:a(),sampleScatter:p()},mayAdjustConfig(t,e={}){if(!e.childType){if(t.term?.q?.mode=="continuous"&&t.term2?.q?.mode=="continuous"){t.childType="sampleScatter"}else if(t.term?.q?.mode=="continuous"||t.term2?.q?.mode=="continuous")t.childType="violin";else t.childType="barchart"}}};return o(i,t)}export{f as getPlotConfig,m as summaryInit};