@sjcrh/proteinpaint-client 2.76.2 → 2.77.1

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 (232) hide show
  1. package/dist/{2dmaf-f240211f.js → 2dmaf-dbeff225.js} +1 -1
  2. package/dist/{AppHeader-c9432a24.js → AppHeader-1fc7f7bd.js} +1 -1
  3. package/dist/{ColorScale-b991fc9e.js → ColorScale-23c17654.js} +1 -1
  4. package/dist/{DEanalysis-bbfad00d.js → DEanalysis-a3cf1900.js} +1 -1
  5. package/dist/{Disco-b7c9bf72.js → Disco-b26a0556.js} +1 -1
  6. package/dist/{Disco.UI-a5296c36.js → Disco.UI-891c4c35.js} +1 -1
  7. package/dist/{DragControls-ca3fa0cf.js → DragControls-2fabac26.js} +1 -1
  8. package/dist/{DziViewer-28915c11.js → DziViewer-5b830c31.js} +1 -1
  9. package/dist/FilterRxComp-fb608459.js +1 -0
  10. package/dist/FilterStateless-fc4e4e1b.js +1 -0
  11. package/dist/{HicApp-e713aa40.js → HicApp-5ed85d49.js} +1 -1
  12. package/dist/{OrbitControls-2466d420.js → OrbitControls-604f40af.js} +1 -1
  13. package/dist/{WSIViewer-957695a8.js → WSIViewer-dcce2a10.js} +1 -1
  14. package/dist/{adSandbox-27d93bc0.js → adSandbox-5fa90964.js} +1 -1
  15. package/dist/app-0de0ae35.js +1 -0
  16. package/dist/{app-d215327f.js → app-7f695ce7.js} +1 -1
  17. package/dist/app-977b083f.js +1 -0
  18. package/dist/app.js +1 -1
  19. package/dist/{bam-d67e5315.js → bam-06a5a6a2.js} +1 -1
  20. package/dist/{barchart-2898d229.js → barchart-978fb21a.js} +1 -1
  21. package/dist/{barchart.events-426d737a.js → barchart.events-9b482604.js} +1 -1
  22. package/dist/{bars.renderer-71935d34.js → bars.renderer-d7461d5d.js} +1 -1
  23. package/dist/{block-75d4ff92.js → block-3db9c74c.js} +1 -1
  24. package/dist/block.lazyload-19a55cac.js +1 -0
  25. package/dist/{block.legend-93d85a6e.js → block.legend-97401467.js} +1 -1
  26. package/dist/{block.mds-84b9d1c1.js → block.mds-dc409568.js} +1 -1
  27. package/dist/{block.mds.cnv-a991ed79.js → block.mds.cnv-cdabd3f6.js} +1 -1
  28. package/dist/{block.mds.expressionrank-33b858de.js → block.mds.expressionrank-d768640f.js} +1 -1
  29. package/dist/{block.mds.expressionstat-3093599f.js → block.mds.expressionstat-7e40426f.js} +1 -1
  30. package/dist/{block.mds.geneboxplot-b8391d18.js → block.mds.geneboxplot-dae9cfa3.js} +1 -1
  31. package/dist/{block.mds.junction-69708c7f.js → block.mds.junction-3bc8baea.js} +1 -1
  32. package/dist/{block.mds.svcnv-322baea6.js → block.mds.svcnv-456dc845.js} +1 -1
  33. package/dist/{block.mds.svcnv.share-c5c38237.js → block.mds.svcnv.share-4776459b.js} +1 -1
  34. package/dist/{block.mds2-de4811dd.js → block.mds2-cc586d9d.js} +1 -1
  35. package/dist/{block.svg-ac9fec2d.js → block.svg-adf47e3a.js} +1 -1
  36. package/dist/{block.tk.aicheck-ac4b8d4d.js → block.tk.aicheck-f284f080.js} +1 -1
  37. package/dist/{block.tk.ase-6dc0f9f1.js → block.tk.ase-0477c9f4.js} +1 -1
  38. package/dist/{block.tk.bam-8f68b41d.js → block.tk.bam-d4c998d4.js} +1 -1
  39. package/dist/{block.tk.bedgraphdot-d8878860.js → block.tk.bedgraphdot-0177d836.js} +1 -1
  40. package/dist/{block.tk.bigwig.ui-f6ed051c.js → block.tk.bigwig.ui-95531269.js} +1 -1
  41. package/dist/{block.tk.hicstraw-725bdc8a.js → block.tk.hicstraw-06e97317.js} +1 -1
  42. package/dist/{block.tk.junction-f8b0b51d.js → block.tk.junction-18b6b825.js} +1 -1
  43. package/dist/{block.tk.junction.textmatrixui-252e7d7e.js → block.tk.junction.textmatrixui-ffdbdf81.js} +1 -1
  44. package/dist/{block.tk.ld-11acf730.js → block.tk.ld-2b56500f.js} +1 -1
  45. package/dist/{block.tk.menu-5e04436d.js → block.tk.menu-707a4226.js} +1 -1
  46. package/dist/{block.tk.pgv-fef17dc4.js → block.tk.pgv-63c956c4.js} +1 -1
  47. package/dist/{boxplot-4c9a5479.js → boxplot-1f229616.js} +1 -1
  48. package/dist/{brainImaging-7716bc66.js → brainImaging-a0c72fad.js} +1 -1
  49. package/dist/{brush-9faa7ae7.js → brush-4c775f74.js} +1 -1
  50. package/dist/{categorical-1dea48ba.js → categorical-25b06bc5.js} +1 -1
  51. package/dist/{condition-ebac4f75.js → condition-70084a85.js} +1 -1
  52. package/dist/{controls-268e40e6.js → controls-1f3ac9d0.js} +1 -1
  53. package/dist/controls.btns-5b44e5d0.js +1 -0
  54. package/dist/{controls.config-2f0fa061.js → controls.config-b0339f96.js} +1 -1
  55. package/dist/{cuminc-8dffb765.js → cuminc-6d1de932.js} +1 -1
  56. package/dist/{customdata.inputui-b229d3a0.js → customdata.inputui-5ad0f25c.js} +1 -1
  57. package/dist/{dataDownload-452ae3cd.js → dataDownload-a60d80e4.js} +1 -1
  58. package/dist/databrowser.ui-a5c8194c.js +1 -0
  59. package/dist/{density-09feb0c9.js → density-30dbad8b.js} +1 -1
  60. package/dist/{dictionary-a132a3cc.js → dictionary-d8435ddc.js} +1 -1
  61. package/dist/{drag-2e9c80bb.js → drag-ad04f964.js} +1 -1
  62. package/dist/{e2pca-4f1648e3.js → e2pca-02adebbd.js} +1 -1
  63. package/dist/{ep-1d4c58b4.js → ep-b2e464fe.js} +1 -1
  64. package/dist/{facet-fa4fe49c.js → facet-e7612200.js} +1 -1
  65. package/dist/{filter-b3d3964e.js → filter-67d51c09.js} +1 -1
  66. package/dist/{fusion.parse-7dfd6988.js → fusion.parse-68670e99.js} +1 -1
  67. package/dist/{geneExpClustering-ed9121b8.js → geneExpClustering-d96c27ef.js} +1 -1
  68. package/dist/geneExpression-072e0be1.js +1 -0
  69. package/dist/{geneExpression-394672ff.js → geneExpression-4901955e.js} +1 -1
  70. package/dist/{geneExpression-66208299.js → geneExpression-65346c08.js} +1 -1
  71. package/dist/{geneORA-9456872c.js → geneORA-e3d6619e.js} +1 -1
  72. package/dist/geneVariant-9fc29f37.js +1 -0
  73. package/dist/{geneVariant-beaf9adb.js → geneVariant-f6bbc247.js} +1 -1
  74. package/dist/{genefusion.ui-9238ec7f.js → genefusion.ui-a5a08183.js} +1 -1
  75. package/dist/{genesearch-ffd88bf2.js → genesearch-5fa13afa.js} +1 -1
  76. package/dist/{geneset-0315daf8.js → geneset-c36036bd.js} +1 -1
  77. package/dist/genomeBrowser-d4515002.js +1 -0
  78. package/dist/{genomeBrowser.controls-2601cab5.js → genomeBrowser.controls-b89629b0.js} +1 -1
  79. package/dist/{groupsetting-e3a4ecd5.js → groupsetting-a3de9ec7.js} +1 -1
  80. package/dist/{gsea-0c0cf8de.js → gsea-af1a7cec.js} +1 -1
  81. package/dist/{hierCluster-7ab62ca5.js → hierCluster-8aa2265a.js} +1 -1
  82. package/dist/hierCluster.config-11a176e2.js +1 -0
  83. package/dist/{hierCluster.interactivity-7f475259.js → hierCluster.interactivity-103b2f0f.js} +1 -1
  84. package/dist/{hierCluster.renderers-19b79639.js → hierCluster.renderers-48bdf7a6.js} +1 -1
  85. package/dist/{html.legend-80b2b3ec.js → html.legend-455f7881.js} +1 -1
  86. package/dist/{imagePlot-1ef24562.js → imagePlot-862c7baf.js} +1 -1
  87. package/dist/{lasso-1a02a545.js → lasso-e12204af.js} +1 -1
  88. package/dist/launch.adhoc-b8af0ace.js +1 -0
  89. package/dist/leftlabel.sample-784c5aeb.js +1 -0
  90. package/dist/{legacyDataset-fbaa5ebb.js → legacyDataset-501a0298.js} +1 -1
  91. package/dist/{log-c26b6cfd.js → log-d560d2a5.js} +1 -1
  92. package/dist/{lollipop-3aebe5d3.js → lollipop-aa25084e.js} +1 -1
  93. package/dist/{maf-c439c851.js → maf-13befc91.js} +1 -1
  94. package/dist/{maftimeline-0da64e54.js → maftimeline-f9ee156e.js} +1 -1
  95. package/dist/{matrix-38cd47c3.js → matrix-971b44da.js} +1 -1
  96. package/dist/{matrix.cells-a018d731.js → matrix.cells-92037b17.js} +1 -1
  97. package/dist/{matrix.cluster-a6e713e8.js → matrix.cluster-0bca59fd.js} +1 -1
  98. package/dist/{matrix.config-2c550b5d.js → matrix.config-b8d8faef.js} +1 -1
  99. package/dist/matrix.controls-07c6128c.js +1 -0
  100. package/dist/{matrix.data-2b814c9f.js → matrix.data-1090f6c7.js} +1 -1
  101. package/dist/{matrix.dom-1e0da5b3.js → matrix.dom-1154156c.js} +1 -1
  102. package/dist/{matrix.groups-824a7244.js → matrix.groups-f10a8c05.js} +1 -1
  103. package/dist/{matrix.interactivity-1cb56534.js → matrix.interactivity-99de0399.js} +1 -1
  104. package/dist/{matrix.layout-47e44357.js → matrix.layout-405db70f.js} +1 -1
  105. package/dist/{matrix.legend-9af0c757.js → matrix.legend-d06de359.js} +1 -1
  106. package/dist/{matrix.renderers-337ce240.js → matrix.renderers-2211c4b2.js} +1 -1
  107. package/dist/{matrix.serieses-7b7184c9.js → matrix.serieses-f0803a76.js} +1 -1
  108. package/dist/{matrix.sort-1ac05842.js → matrix.sort-3d376f1a.js} +1 -1
  109. package/dist/{matrix.sorterUi-1c60c145.js → matrix.sorterUi-469ed804.js} +1 -1
  110. package/dist/{mavb-da8d1a0a.js → mavb-e5cbd894.js} +1 -1
  111. package/dist/{mds.fimo-8604c3f8.js → mds.fimo-f9215ef6.js} +1 -1
  112. package/dist/{mds.samplescatterplot-3f09ae0e.js → mds.samplescatterplot-6fce6594.js} +1 -1
  113. package/dist/{mds.survivalplot-1d8f2b7e.js → mds.survivalplot-16e9e8c5.js} +1 -1
  114. package/dist/{metaboliteIntensity-bbb23c76.js → metaboliteIntensity-b47fb792.js} +1 -1
  115. package/dist/{niceNumLabels-29a7c6ca.js → niceNumLabels-1bd7a93b.js} +1 -1
  116. package/dist/{nodrag-b2737073.js → nodrag-0fa60f70.js} +1 -1
  117. package/dist/{notify-0cb8904f.js → notify-42149e65.js} +1 -1
  118. package/dist/{numeric-24dacbee.js → numeric-5b626171.js} +1 -1
  119. package/dist/{numeric.binary-f382cc98.js → numeric.binary-07e15211.js} +1 -1
  120. package/dist/numeric.continuous-76dd29ba.js +1 -0
  121. package/dist/numeric.discrete-6d697c68.js +1 -0
  122. package/dist/{numeric.spline-a35cfbf0.js → numeric.spline-cf331bad.js} +1 -1
  123. package/dist/{numeric.toggle-2f98d6e5.js → numeric.toggle-332c2578.js} +1 -1
  124. package/dist/oncomatrix-7c84c94b.js +1 -0
  125. package/dist/{parseData-292648dd.js → parseData-05ab5f81.js} +1 -1
  126. package/dist/{plot.2dvaf-6ae22dc1.js → plot.2dvaf-1debbf12.js} +1 -1
  127. package/dist/plot.app-0b02df66.js +1 -0
  128. package/dist/{plot.barplot-34841e70.js → plot.barplot-45b57df9.js} +1 -1
  129. package/dist/{plot.boxplot-87ac2ce9.js → plot.boxplot-06cef6e2.js} +1 -1
  130. package/dist/{plot.brainImaging-32a484b6.js → plot.brainImaging-07795744.js} +1 -1
  131. package/dist/{plot.disco-1fdfee3c.js → plot.disco-9c631d77.js} +1 -1
  132. package/dist/{plot.dzi-e3d0f610.js → plot.dzi-a9a81de5.js} +1 -1
  133. package/dist/{plot.ssgq-d33113d5.js → plot.ssgq-02ffde06.js} +1 -1
  134. package/dist/{plot.vaf2cov-9f4f1776.js → plot.vaf2cov-c111c5fb.js} +1 -1
  135. package/dist/{plot.wsi-dea124a7.js → plot.wsi-6ccc7bb2.js} +1 -1
  136. package/dist/{profileBarchart-58f0a8c0.js → profileBarchart-0c97e8c9.js} +1 -1
  137. package/dist/{profileHome-7f404152.js → profileHome-2255d66d.js} +1 -1
  138. package/dist/profilePlot-ba7e03ab.js +1 -0
  139. package/dist/{profilePolar-50b8e40e.js → profilePolar-d38d502f.js} +1 -1
  140. package/dist/{profileRadar-fff0b004.js → profileRadar-f95cfa87.js} +1 -1
  141. package/dist/{profileRadarFacility-d6d34c15.js → profileRadarFacility-7e200a91.js} +1 -1
  142. package/dist/profileSummary-8c41a731.js +1 -0
  143. package/dist/{recover-299ffdb3.js → recover-6f2f3379.js} +1 -1
  144. package/dist/{regression.inputs-14df7c31.js → regression.inputs-b515101d.js} +1 -1
  145. package/dist/{regression.inputs.values.table-d79efa9e.js → regression.inputs.values.table-f8a0cad9.js} +1 -1
  146. package/dist/{regression.results-4767144e.js → regression.results-91a486f0.js} +1 -1
  147. package/dist/{renderPvalueTable-002cc8ff.js → renderPvalueTable-d4d2624c.js} +1 -1
  148. package/dist/sampleScatter-7c2773de.js +1 -0
  149. package/dist/{sampleScatter.rendererThree-ef289434.js → sampleScatter.rendererThree-b6db5a09.js} +2 -2
  150. package/dist/{sampleView-1dff3fca.js → sampleView-8885e86b.js} +1 -1
  151. package/dist/{samplelst-d2db0f24.js → samplelst-83e593da.js} +1 -1
  152. package/dist/{samplematrix-0841387f.js → samplematrix-a8b3f845.js} +1 -1
  153. package/dist/{scatter-f8285107.js → scatter-34d52e2d.js} +1 -1
  154. package/dist/{select2Terms-d48d037e.js → select2Terms-d9320d21.js} +1 -1
  155. package/dist/{selectGenomeWithTklst-9af86d31.js → selectGenomeWithTklst-fed6a2ea.js} +1 -1
  156. package/dist/shapes-21ebfec4.js +1 -0
  157. package/dist/singleCellCellType-e6848f45.js +1 -0
  158. package/dist/{singleCellGeneExpression-537f1157.js → singleCellGeneExpression-d3a5394e.js} +1 -1
  159. package/dist/singleCellPlot-3cad6bd8.js +1 -0
  160. package/dist/{singlecell-38336cbc.js → singlecell-0754aab0.js} +1 -1
  161. package/dist/{singlecell-87b4b9a9.js → singlecell-7c57cd77.js} +1 -1
  162. package/dist/{snp-b81ef740.js → snp-6b23e7a6.js} +1 -1
  163. package/dist/snp-a0cdd2a5.js +1 -0
  164. package/dist/snplocus-c60eab56.js +1 -0
  165. package/dist/{spliceevent.a53ss.diagram-5f8352eb.js → spliceevent.a53ss.diagram-8714f740.js} +1 -1
  166. package/dist/{spliceevent.exonskip.diagram-0d30a735.js → spliceevent.exonskip.diagram-40c1e363.js} +1 -1
  167. package/dist/spliceevent.exonskip.getdefault-4bb6f19f.js +1 -0
  168. package/dist/{spliceevent.noeventdiagram-df9ce4bc.js → spliceevent.noeventdiagram-41a56db9.js} +1 -1
  169. package/dist/{spliceevent.phrase-a8401d53.js → spliceevent.phrase-7f34e3b1.js} +1 -1
  170. package/dist/{stattable-46cde32c.js → stattable-78dc5c34.js} +1 -1
  171. package/dist/{style.gdc-72d730f2.js → style.gdc-cd49882c.js} +1 -1
  172. package/dist/summary-45c56298.js +1 -0
  173. package/dist/{sunburst-fe95832e.js → sunburst-2140e468.js} +1 -1
  174. package/dist/{survival-57ff3c03.js → survival-db972025.js} +1 -1
  175. package/dist/{survival-52714cd3.js → survival-ed4bdad2.js} +1 -1
  176. package/dist/{svg.download-f4aa48e4.js → svg.download-a5e20a92.js} +1 -1
  177. package/dist/{svg.legend-749348e0.js → svg.legend-8d21872d.js} +1 -1
  178. package/dist/{svgraph-b46f1f92.js → svgraph-f6a28b78.js} +1 -1
  179. package/dist/{svmr-9a76c6d4.js → svmr-8b4b4c59.js} +1 -1
  180. package/dist/{table-bf40249b.js → table-1cbe3a36.js} +1 -1
  181. package/dist/{table-0daf2b89.js → table-e2a307e6.js} +1 -1
  182. package/dist/{termInfo-491b10af.js → termInfo-5477ba96.js} +1 -1
  183. package/dist/termdb.bins-7ecc48db.js +1 -0
  184. package/dist/{termsetting-492eefa7.js → termsetting-2e75e729.js} +1 -1
  185. package/dist/tk-a8a4481a.js +1 -0
  186. package/dist/{toggleButtons-c4d6f260.js → toggleButtons-7ce58d97.js} +1 -1
  187. package/dist/{tp.ui-0a476325.js → tp.ui-be14f635.js} +1 -1
  188. package/dist/{tvs.density-034b506d.js → tvs.density-8b953cef.js} +1 -1
  189. package/dist/{tvs.geneVariant-c59c8b54.js → tvs.geneVariant-ecad287d.js} +1 -1
  190. package/dist/{tvs.numeric-aa1f892f.js → tvs.numeric-b56a5aba.js} +1 -1
  191. package/dist/{tvs.samplelst-515f27b9.js → tvs.samplelst-3150e0b7.js} +1 -1
  192. package/dist/{uiUtils-ea7dfea2.js → uiUtils-71cc22de.js} +1 -1
  193. package/dist/{variantBrowser-14d5c3f6.js → variantBrowser-df2f9c22.js} +1 -1
  194. package/dist/{vcf-d357ce08.js → vcf-3e370c9b.js} +1 -1
  195. package/dist/{violin-74d26b75.js → violin-4595cef4.js} +1 -1
  196. package/dist/{violin.interactivity-bf40ddde.js → violin.interactivity-8b63e000.js} +1 -1
  197. package/dist/{violin.renderer-469fa0ff.js → violin.renderer-0b7431a2.js} +1 -1
  198. package/dist/{violinRenderer-14fa200d.js → violinRenderer-7b0a4e98.js} +1 -1
  199. package/dist/{viridis-cc59f478.js → viridis-725f66e0.js} +1 -1
  200. package/dist/{y-59cbff5e.js → y-300bac24.js} +1 -1
  201. package/dist/{zoom-f445cfef.js → zoom-d3d38b3b.js} +1 -1
  202. package/package.json +2 -4
  203. package/dist/FilterRxComp-02e68f1b.js +0 -1
  204. package/dist/FilterStateless-16a33070.js +0 -1
  205. package/dist/app-42f69951.js +0 -1
  206. package/dist/app-6fb77603.js +0 -1
  207. package/dist/block.lazyload-d2951c91.js +0 -1
  208. package/dist/controls.btns-5bf9e7d7.js +0 -1
  209. package/dist/databrowser.ui-2197fc73.js +0 -1
  210. package/dist/downloadTextfile-5723af95.js +0 -1
  211. package/dist/geneExpression-c61e8f1c.js +0 -1
  212. package/dist/geneVariant-f17cda85.js +0 -1
  213. package/dist/genomeBrowser-608b924e.js +0 -1
  214. package/dist/hierCluster.config-f4daaf92.js +0 -1
  215. package/dist/launch.adhoc-e124c993.js +0 -1
  216. package/dist/leftlabel.sample-59f99ef5.js +0 -1
  217. package/dist/matrix.controls-42ad4912.js +0 -1
  218. package/dist/numeric.continuous-6feb34a7.js +0 -1
  219. package/dist/numeric.discrete-ed10bbc1.js +0 -1
  220. package/dist/oncomatrix-c0b2d635.js +0 -1
  221. package/dist/plot.app-2a805759.js +0 -1
  222. package/dist/profilePlot-4db8ca78.js +0 -1
  223. package/dist/profileSummary-04b8b15b.js +0 -1
  224. package/dist/sampleScatter-55d9eb74.js +0 -1
  225. package/dist/singleCellCellType-fd1606b8.js +0 -1
  226. package/dist/singleCellPlot-eff5760b.js +0 -1
  227. package/dist/snp-f6123244.js +0 -1
  228. package/dist/snplocus-acafb1ba.js +0 -1
  229. package/dist/spliceevent.exonskip.getdefault-237c481c.js +0 -1
  230. package/dist/summary-a6c15c9e.js +0 -1
  231. package/dist/termdb.bins-39d11f24.js +0 -1
  232. package/dist/tk-ac524564.js +0 -1
@@ -0,0 +1 @@
1
+ import{b as t,y as e,F as s,h as o,P as i,M as n,L as l,N as a,d as r,C as p,I as c,r as d,Q as h}from"./app-0de0ae35.js";import{d as g}from"./zoom-d3d38b3b.js";import{r as m}from"./table-e2a307e6.js";import{controlsInit as f}from"./controls-1f3ac9d0.js";import{d as y}from"./svg.download-a5e20a92.js";import{a as u}from"./genesearch-5fa13afa.js";import{T as v,c as b}from"./termsetting-2e75e729.js";import{a as x,b as C,c as w}from"./axis-747c801e.js";import"./pointer-c7475677.js";import"./nodrag-0fa60f70.js";import"./tslib.es6-c3c2d88f.js";import"./controls.btns-5b44e5d0.js";import"./controls.config-b0339f96.js";import"path";class D{constructor(){this.type="singleCellPlot";this.tip=new n({padding:"4px",offsetX:10,offsetY:0});this.tip.d.style("max-height","300px").style("overflow","scroll").style("font-size","0.9em");this.startGradient={};this.stopGradient={}}async init(e){const s=this.getState(e);const o=s.termdbConfig.queries;this.tableOnPlot=e.nav?.header_mode=="hidden";this.opts.holder.style("position","relative");this.insertBeforeId=`${this.id}-sandbox`;const i=this.opts.holder.insert("div").style("display","inline-block").style("vertical-align","top").attr("id",this.insertBeforeId);const p=i.append("div").style("display","inline-block").style("vertical-align","top");const c=p.append("div").attr("class","pp-termdb-plot-controls");const d=p.append("div");const h=d.append("div").style("margin","20px");const g=750;l["zoomIn"](h,{handler:()=>{for(const t of this.plots)t.zoom.scaleBy(t.svg.transition().duration(g),1.1)},title:"Zoom in"});const f=d.append("div").style("margin","20px");l["zoomOut"](f,{handler:()=>{for(const t of this.plots)t.zoom.scaleBy(t.svg.transition().duration(g),.9)},title:"Zoom out"});const y=d.append("div").style("margin","20px");l["restart"](y,{handler:()=>{for(const t of this.plots){t.svg.transition().duration(g).call(t.zoom.transform,a)}},title:"Reset plot to defaults"});const x=i.append("div").style("display","inline-block").style("vertical-align","top");const C=x.append("div").style("padding","10px");const w=x.append("div").style("display",this.tableOnPlot?"block":"none").style("padding",this.tableOnPlot?"10px":"0px");const D=x.append("div");if(this.tableOnPlot){C.append("input").attr("id",`showSamples`).attr("type","checkbox").property("checked",true).on("change",(t=>{this.app.dispatch({type:"plot_edit",id:this.id,config:{settings:{singleCellPlot:{showSamples:t.target.checked}}}})}));C.append("label").text("Show samples").attr("for",`showSamples`)}if(s.config.plots.length>1)for(const t of s.config.plots){const e=t.name.replace(/\s+/g,"");C.append("input").attr("id",`show${e}`).attr("type","checkbox").property("checked",true).on("change",(t=>{this.app.dispatch({type:"plot_edit",id:this.id,config:{settings:{singleCellPlot:{[`show${e}`]:t.target.checked}}}})}));C.append("label").text(t.name).attr("for",`show${e}`)}if(o.singleCell?.geneExpression){D.append("label").html("Gene expression:");const t=u({tip:new n({padding:"0px"}),genome:this.app.opts.genome,row:D,searchOnly:"gene",placeholder:s.config.gene||"Gene",callback:()=>{o?.style("display","inline-block");e?.style("display","inline-block");const s=t.geneSymbol;this.app.dispatch({type:"plot_edit",id:this.id,config:{gene:s}})},emptyInputCallback:()=>{o.style("display","none");e.style("display","none");this.app.dispatch({type:"plot_edit",id:this.id,config:{gene:null}})},hideHelp:true,focusOff:true});const e=D.append("select").style("display",s.config.gene?"inline-block":"none");for(const t of s.termdbConfig?.queries.singleCell.data.plots){e.append("option").text(t.colorColumn)}e.on("change",(async()=>{const t=s.termdbConfig?.queries.singleCell.data.plots[0];const o=t.columnName;const i={sample:s.config.sample.sampleName,columnName:o,category:e.node().value};await this.app.vocabApi.getTopTermsByType(i)}));const o=D.append("button").text("Open violin").style("margin-left","2px").style("display",s.config.gene?"inline-block":"none");o.on("click",(()=>{const o=t.geneSymbol||s.config.gene;const i=this.state.config.plots.find((t=>t.colorColumn==e.node().value)).name;const n=this.plots.find((t=>t.name==i));const l={};for(const t of n.clusters){l[t]={key:t,value:t}}this.app.dispatch({type:"plot_create",config:{chartType:"violin",settings:{violin:{plotThickness:50}},term:{term:{type:v.SINGLECELL_GENE_EXPRESSION,id:o,gene:o,name:o,sample:s.config.sample}},term2:{term:{type:v.SINGLECELL_CELLTYPE,id:v.SINGLECELL_CELLTYPE,name:"Cell type",sample:s.config.sample,plot:n.name,values:l}}}})}))}const k=D.append("div").style("padding","10px");const S=x.append("div").style("display","inline-block");const A=S.append("div").style("display","flex").style("flex-wrap","wrap").style("justify-content","flex-start").style("width","92vw");const _=this.opts.holder.append("div").style("position","absolute").style("top",0).style("left",0).style("width","100%").style("height","100%").style("background-color","rgba(255, 255, 255, 0.8)").style("text-align","center");_.append("div").attr("class","sjpp-spinner");this.dom={header:this.opts.header,mainDiv:i,loadingDiv:_,tip:new n({padding:"0px"}),tooltip:new n({padding:"2px",offsetX:10,offsetY:0}),controlsHolder:c,tableDiv:w,deDiv:k,plotsDiv:A,plotsDivParent:S};const E=80;this.axisOffset={x:E,y:30};if(o.singleCell?.DEgenes){this.dom.deDiv.append("label").html("View differentially expresed genes of a cluster vs rest of cells:&nbsp;");this.dom.deselect=this.dom.deDiv.append("select");if(this.app.opts.genome.termdbs)this.dom.GSEAbt=this.dom.deDiv.append("button").style("margin-left","5px").style("display","none").text("Gene set enrichment analysis").on("click",(t=>{const e={genes:this.genes,fold_change:this.fold_changes,genome:this.app.vocabApi.opts.state.vocab.genome};const s={chartType:"gsea",gsea_params:e,insertBefore:this.app.opts?.app?.getPlotHolder?this.insertBeforeId:this.id};this.app.dispatch({type:"plot_create",config:s})}));const e=this.dom.deDiv.append("div").style("padding-top","5px");this.dom.DETableDiv=e;this.dom.deselect.append("option").text("");this.dom.deselect.on("change",(async o=>{e.selectAll("*").remove();const i=this.dom.deselect.node().value.split(" ")?.[1];if(this.dom.GSEAbt)this.dom.GSEAbt.style("display",i?"inline-block":"none");if(!i)return;const n=s.termdbConfig.queries.singleCell.DEgenes.columnName;const l=this.state.config.experimentID||this.state.config.sample||this.samples[0]?.experiments[0]?.experimentID;const a={genome:s.genome,dslabel:s.dslabel,categoryName:i,sample:l,columnName:n};this.dom.loadingDiv.selectAll("*").remove();this.dom.loadingDiv.style("display","").append("div").attr("class","sjpp-spinner");const r=await t("termdb/singlecellDEgenes",{body:a});this.dom.loadingDiv.style("display","none");if(r.error){e.text(r.error);return}if(!Array.isArray(r.genes)){e.text(".genes[] missing");return}const p=[{label:"Gene"},{label:"Log2FC"},{label:"Adjusted P-value"}];const c=[];this.genes=[];this.fold_changes=[];r.genes.sort(((t,e)=>e.avg_log2FC-t.avg_log2FC));for(const t of r.genes){const e=[{value:t.name},{value:b(t.avg_log2FC)},{value:b(t.p_val_adj)}];c.push(e);this.genes.push(t.name);this.fold_changes.push(t.avg_log2FC)}m({rows:c,columns:p,maxWidth:"40vw",div:e})}))}this.settings={};document.addEventListener("scroll",(t=>this?.tip?.hide()));r(".sjpp-output-sandbox-content").on("scroll",(t=>this.tip.hide()));await this.setControls(s)}async setControls(t){const e=[{label:"Chart width",type:"number",chartType:"singleCellPlot",settingsKey:"svgw",min:300,max:1e3},{label:"Chart height",type:"number",chartType:"singleCellPlot",settingsKey:"svgh",min:300,max:1e3},{label:"Show borders",type:"checkbox",chartType:"singleCellPlot",settingsKey:"showBorders",boxLabel:""}];if(this.tableOnPlot)e.push({label:"Show samples",type:"checkbox",chartType:"singleCellPlot",settingsKey:"showSamples",boxLabel:""});this.components={controls:await f({app:this.app,id:this.id,holder:this.dom.controlsHolder,inputs:e})};this.components.controls.on("downloadClick.singleCellPlot",(()=>{for(const t of this.plots)y(t.svg,"plot.svg",this.opts.holder.node())}))}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)?`}this.prevFilter0=this.state?.termfilter.filter0;return{config:e,dslabel:t.vocab.dslabel,genome:t.vocab.genome,termdbConfig:t.termdbConfig,termfilter:t.termfilter}}async main(){this.config=structuredClone(this.state.config);i(this.settings,this.config.settings.singleCellPlot);this.dom.tableDiv.style("display",this.settings.showSamples?"block":"none");if(this.tableOnPlot){await S(this.dom.tableDiv,this,this.state,this.state.dslabel,this.state.genome);if(!this.samples?.length){this.showNoMatchingDataMessage();return}}this.dom.loadingDiv.selectAll("*").remove();this.dom.loadingDiv.style("display","").append("div").attr("class","sjpp-spinner");this.dom.mainDiv.style("opacity",1).style("display","");this.legendRendered=false;const t=await this.getData();this.dom.plotsDivParent.style("display","inline-block");this.renderPlots(t);this.dom.loadingDiv.style("display","none");if(this.dom.header)this.dom.header.html(`Single Cell Data`)}async getData(){const s=[];for(const t of this.config.plots){const e=t.name.replace(/\s+/g,"");const o=this.settings[`show${e}`];if(o)s.push(t.name)}const o={genome:this.state.genome,dslabel:this.state.dslabel,plots:s,filter0:this.state.termfilter.filter0};if(this.state.config.sample){this.state.config.sample;o.sample=this.state.config.experimentID||this.state.config.sample}else{this.samples[0].sample;o.sample=this.samples[0].experiments?.[0]?.experimentID||this.samples[0].sample}if(this.state.config.gene)o.gene=this.state.config.gene;try{const e=await t("termdb/singlecellData",{body:o});if(e.error)throw e.error;this.refName=e.refName;return e}catch(t){if(t.stack)console.log(t.stack);e(this.dom.plotsDiv,t);return}}showNoMatchingDataMessage(){this.dom.mainDiv.style("opacity",.001).style("display","none");this.dom.loadingDiv.style("display","").html("");this.dom.loadingDiv.append("div").style("display","inline-block").style("text-align","center").style("position","relative").style("left","-150px").style("font-size","1.2em").style("margin","2em 1em").html("No matching cohort data.")}renderPlots(t){this.dom.plotsDiv.selectAll("*").remove();this.plots=[];for(const e of t.plots){e.id=e.name.replace(/\s+/g,"");this.renderPlot(e)}}renderPlot(t){const e={};let s=new Set(t.cells.map((t=>t.category)));t.clusters=Array.from(s).sort(((t,e)=>{const s=parseInt(t.split(" ")[1]);const o=parseInt(e.split(" ")[1]);return s-o}));if(this.dom.deselect&&!this.legendRendered){this.dom.deselect.selectAll("*").remove();this.dom.deselect.append("option").text("");for(const e of t.clusters)this.dom.deselect.append("option").text(e)}const o=p(t.clusters.length+2);for(const s of t.clusters)e[s]=s=="ref"||s=="No"?"#F2F2F2":t.colorMap?.[s]?t.colorMap[s]:o(s);t.colorMap=e;this.initAxes(t);t.plotDiv=this.dom.plotsDiv.append("div").style("overflow","hidden").style("display","inline-block").style("padding","10px").style("flex-grow",1);if(this.state.config.settings.singleCellPlot.showBorders)t.plotDiv.style("border","1px solid #aaa");this.renderLegend(t);t.svg=t.plotDiv.append("div").style("display","inline-block").style("overflow","hidden").append("svg").attr("width",this.settings.svgw).attr("height",this.settings.svgh+40).on("mouseover",(e=>{if(this.state.config.gene&&!this.onClick)this.showTooltip(e,t)})).on("click",(e=>this.showTooltip(e,t)));t.zoom=g().scaleExtent([.5,5]).on("zoom",(e=>this.handleZoom(e,t))).filter((t=>{if(t.type==="wheel")return t.ctrlKey;return true}));t.svg.call(t.zoom);this.plots.push(t);const i=t.svg.selectAll("g").data(t.cells);i.enter().append("g").attr("transform",(e=>`translate(${t.xAxisScale(e.x)}, ${t.yAxisScale(e.y)+40})`)).append("circle").attr("r",1.5).attr("fill",(e=>this.getColor(e,t))).style("fill-opacity",(t=>this.getOpacity(t)))}getOpacity(t){if(this.config.hiddenClusters.includes(t.category))return 0;return.7}getColor(t,e){const s="#FAFAFA";if(this.state.config.gene){if(!t.geneExp)return s;if(e.colorGenerator)return e.colorGenerator(t.geneExp);return s}return e.colorMap[t.category]}handleZoom(t,e){e.svg.attr("transform",t.transform);e.zoomK=t.transform.scale(1).k}initAxes(t){if(!t.cells.length)return;const e=t.cells[0];const[s,o,i,n]=t.cells.reduce(((t,e)=>[e.x<t[0]?e.x:t[0],e.x>t[1]?e.x:t[1],e.y<t[2]?e.y:t[2],e.y>t[3]?e.y:t[3]]),[e.x,e.x,e.y,e.y]);const l=5;t.xAxisScale=c().domain([s,o]).range([0+l,this.settings.svgh+l]);t.axisBottom=x(t.xAxisScale);t.yAxisScale=c().domain([n,i]).range([0+l,this.settings.svgh+l]);t.axisLeft=C(t.yAxisScale);t.zoomK=1}renderLegend(t){const e=t.colorMap;let s=t.legendSVG;if(!t.legendSVG){s=t.plotDiv.append("svg").attr("width",250).attr("height",this.settings.svgh).style("vertical-align","top");t.legendSVG=s}s.selectAll("*").remove();s.append("text").attr("transform",`translate(0, 20)`).style("font-size","0.9em").text(t.name);if(this.state.termdbConfig.queries.singleCell.data.sameLegend&&this.legendRendered)return;this.legendRendered=true;const o=s.append("g").attr("transform",`translate(25, 50)`).style("font-size","0.8em");if(this.state.config.gene){this.renderColorGradient(t,o);return}o.append("text").attr("transform",`translate(${0}, ${25})`).style("font-weight","bold").text(`${t.colorBy}`);const i=20;let n=50;let l=0;for(const s in e){const r=t.cells.filter((t=>t.category==s));const p=this.config.hiddenClusters.includes(s);const c=r.length;const d=e[s];const h=o.append("g").attr("transform",(t=>`translate(${l}, ${n})`));h.append("circle").attr("r",3).attr("fill",d);h.append("g").attr("transform",`translate(${l+10}, ${5})`).append("text").text(`${s=="ref"?this.state.termdbConfig.queries.singleCell.data.refName:s=="query"?this.state.config.sample:s} n=${c}`).style("text-decoration",p?"line-through":"none").on("click",(t=>a(this,t,s)));n+=i}function a(t,e,s,o){const i=e.target;const n=i.style["text-decoration"]=="line-through";i.style["text-decoration"]=n?"none":"line-through";let l=t.config.hiddenClusters;if(!n)l.push(s);else l.splice(l.indexOf(s),1);t.app.dispatch({type:"plot_edit",id:t.id,config:{hiddenClusters:l}})}}renderColorGradient(t,e){if(t.cells.length==0)return;const s=d(h);if(!this.config.startColor[t.name])this.config.startColor[t.name]=s.brighter(1).toString();if(!this.config.stopColor[t.name])this.config.stopColor[t.name]=s.darker(3).toString();const o=this.config.startColor[t.name];const i=this.config.stopColor[t.name];const n=e.append("defs").append("linearGradient").attr("id",`linear-gradient-${t.id}`).attr("x1","0%").attr("y1","0%").attr("x2","100%").attr("y2","0%");this.startGradient[t.name]=n.append("stop").attr("offset","0%").attr("stop-color",o);this.stopGradient[t.name]=n.append("stop").attr("offset","100%").attr("stop-color",i);let l,a;const r=t.cells[0]?.geneExp==undefined?[]:t.cells.map((t=>t.geneExp));if(r.length==0){t.colorGenerator=null;return}else[l,a]=r.reduce(((t,e)=>[e<t[0]?e:t[0],e>t[1]?e:t[1]]),[r[0],r[0]]);t.colorGenerator=c().domain([l,a]).range([o,i]);const p=100;const g=c().domain([l,a]).range([0,p]);const m=(a-l)/4;const f=[l,l+m,l+2*m,l+3*m,a];const y=w(g).tickValues(f);e.append("g").attr("transform",`translate(0, 100)`).call(y);t.startRect=e.append("rect").attr("x",-25).attr("y",100).attr("width",20).attr("height",20).style("fill",o).on("click",(e=>this.editColor(t,"startColor",t.startRect)));t.stopRect=e.append("rect").attr("x",p+5).attr("y",100).attr("width",20).attr("height",20).style("fill",i).on("click",(e=>this.editColor(t,"stopColor",t.stopRect)));e.append("rect").attr("x",0).attr("y",100).attr("width",p).attr("height",20).style("fill",`url(#linear-gradient-${t.id})`)}editColor(t,e,s){const o=this.config[e][t.name];const i=new n({padding:"3px"});const l=i.clear().d.append("Label").text("Color:").append("input").attr("type","color").attr("value",d(o).formatHex()).on("change",(()=>{const o=l.node().value;this.changeGradientColor(t,e,s,o);i.hide()}));i.showunder(s.node(),false)}changeGradientColor=function(t,e,s,o){this.config[e][t.name]=o;this.app.dispatch({type:"plot_edit",id:this.id,config:this.config})};distance(t,e,s,o,i){const n=i.xAxisScale(s)-i.xAxisScale(t);const l=i.yAxisScale(o)-i.yAxisScale(e);const a=Math.sqrt(Math.pow(n,2)+Math.pow(l,2));return a}showTooltip(t,e){if(this.onClick&&t.type=="click"){this.onClick=false;this.tip.hide();return}if(t.target.tagName=="circle"){this.onClick=t.type=="click";const s=t.target.__data__;const o=this.tip.clear();const i=o.d.append("table");let n=i.append("tr");n.append("td").style("color","#aaa").text(e.colorBy);const l=n.append("td");const a=l.append("svg").attr("width",150).attr("height",20);const r=10;const p=12;const c=a.append("g").attr("transform",`translate(${r}, ${p})`);c.append("circle").attr("fill",this.getColor(s,e)).attr("r",4);a.append("g").attr("transform",`translate(${r+15}, ${p+4})`).append("text").text(s.category);if("geneExp"in s){n=i.append("tr");n.append("td").style("color","#aaa").text("Gene expression");n.append("td").text(b(s.geneExp))}o.show(t.clientX,t.clientY,true,true)}else this.onMouseOut(t)}onMouseOut(t){this.tip.hide()}}async function k(t,e){const s=t.append("div").style("padding","5px");S(s,e,e.state,e.state.vocab.dslabel,e.state.vocab.genome)}async function S(o,i,n,l,a){const r={genome:a,dslabel:l,filter0:n.termfilter.filter0||null};let p;try{p=await t("termdb/singlecellSamples",{body:r});if(p.error)throw p.error}catch(t){e(o,t);return}const c=p.samples;i.samples=c;if(i.tableOnPlot){if(c.length==0){i.dom.plotsDiv.selectAll("*").remove();return}if(i.table&&s(i.state.termfilter.filter0,i.prevFilter0))return}o.selectAll("*").remove();c.sort(((t,e)=>{const s=t.primarySite?.localeCompare(e.primarySite);if(s==1||s==-1)return s;else return t.sample.localeCompare(e.sample)}));const[d,h]=await A(i,c,n);const g=[];let f="40vh";if(i.tableOnPlot){const t=i.config.sample;const e=i.samples.findIndex((e=>e.sample==t));const s=e==-1?0:e;g.push(s);f="20vh"}i.table=m({rows:d,columns:h,resize:true,singleMode:true,div:o,maxHeight:f,noButtonCallback:t=>{if(i.dom.DETableDiv){i.dom.deselect.node().value="";i.dom.DETableDiv.selectAll("*").remove();if(i.dom.GSEAbt)i.dom.GSEAbt.style("display","none")}const e=d[t][0].value;const s={chartType:"singleCellPlot",sample:e};if(d[t][0].__experimentID){s.experimentID=d[t][0].__experimentID}if(i.tableOnPlot){i.app.dispatch({type:"plot_edit",id:i.id,config:s})}else{i.dom.tip.hide();i.app.dispatch({type:"plot_create",config:s})}},selectedRows:g})}async function A(t,e,s){const o=[];for(const t of e){if(t.experiments)for(const e of t.experiments){const i=[{value:t.sample,__experimentID:e.experimentID}];for(const e of s.termdbConfig.queries.singleCell.samples.sampleColumns||[]){i.push({value:t[e.termid]})}for(const e of s.termdbConfig.queries.singleCell.samples.experimentColumns||[]){i.push({value:t[e.label]})}i.push({value:e.experimentID});o.push(i)}else{const e=[{value:t.sample}];for(const o of s.termdbConfig.queries.singleCell.samples.sampleColumns||[]){e.push({value:t[o.termid]})}o.push(e)}}const i=[{label:s.termdbConfig.queries.singleCell.samples.firstColumnName||"Sample"}];for(const e of s.termdbConfig.queries.singleCell.samples.sampleColumns||[]){i.push({label:(await t.app.vocabApi.getterm(e.termid)).name,width:"15vw"})}for(const t of s.termdbConfig.queries.singleCell.samples.experimentColumns||[]){i.push({label:t.label,width:"20vw"})}if(e.some((t=>t.experiments))){i.push({label:"Experiment"})}return[o,i]}const _=o(D);const E=_;async function P(t,e){try{const s=e.vocabApi.termdbConfig?.queries?.singleCell?.data;const o=s?.plots;let n=G();if(s.width)n.svgw=s.width;if(s.height)n.svgh=s.height;for(const t of o){const e=t.name.replace(/\s+/g,"");const s=`show${e}`;n[s]=true}const l={hiddenClusters:[],settings:{singleCellPlot:n},startColor:{},stopColor:{},plots:o};const a=i(l,t);return a}catch(t){console.log(t);throw`${t} [singleCellPlot getPlotConfig()]`}}function G(){return{svgw:420,svgh:420,showBorders:false,showSamples:true}}export{E as componentInit,G as getDefaultSingleCellSettings,P as getPlotConfig,k as makeChartBtnMenu,_ as scatterInit};
@@ -1 +1 @@
1
- import{P as e,n as t,d as o,b as s,y as r}from"./app-6fb77603.js";import{r as l}from"./table-0daf2b89.js";import{appInit as i}from"./plot.app-2a805759.js";import"./tslib.es6-c3c2d88f.js";import"./recover-299ffdb3.js";import"./termsetting-492eefa7.js";import"path";import"./FilterRxComp-02e68f1b.js";import"./partjson.esm-b3f1fc21.js";import"./termdb.bins-39d11f24.js";import"./FilterStateless-16a33070.js";import"./app-d215327f.js";import"./termInfo-491b10af.js";import"./toggleButtons-c4d6f260.js";import"./genesearch-ffd88bf2.js";import"./checkbox-96437f4d.js";import"./rehydrateFilter-12d118cb.js";const a="hg38";const p="GDC";const n=[{label:"Case"},{label:"Project"},{label:"Primary Site"},{label:"Disease Type"},{label:"Sample Type"}];async function d(s,r,l){const n=await i({holder:r,state:{genome:a,dslabel:p,termfilter:{filter0:s.filter0},plots:[{chartType:"singleCellPlot"}]},noheader:true,nobox:true,hide_dsHandles:true,genome:l[a],app:e({getPlotHolder:(e,s)=>{if(e.chartType=="gsea"){const r=t(o(s.select(`#${e.insertBefore}`).node().parentNode),{close:()=>{n.dispatch({type:"plot_delete",id:e.id})},plotId:e.id,beforePlotId:e.insertBefore||null,style:{width:"98.5%"}});r.header.text("GENE SET ENRICHMENT ANALYSIS");return r.body.style("white-space","nowrap")}else{return s.append("div")}}},s.opts?.app||{}),singleCellPlot:s.opts?.singleCell||{}});const d={update:async e=>{if("filter0"in e){n.dispatch({type:"app_refresh",subactions:[{type:"filter_replace",filter0:e.filter0},{type:"plot_edit",id:n.getState().plots[0].id,config:{sample:undefined}}]})}else{console.log(75,n);n.dispatch({type:"plot_edit",id:n.getState().plots[0].id,config:e})}}};return d}async function c({holder:e,filter0:t,callbackOnRender:o,debugmode:s=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 f(l);return r}async function f(e){e.tableDiv.selectAll("*").remove();const t=e.tableDiv.append("div").text("Loading...");let o;{const l={genome:a,dslabel:p};if(e.opts.filter0)l.filter0=e.opts.filter0;try{o=await s("termdb/singlecellSamples",{body:l});if(o.error)throw o.error}catch(o){t.remove();r(e.errDiv,o);return}}console.log(o);t.remove();const i=[];const d=[];for(const e of o.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}];i.push(o);d.push(t.experimentID)}}l({rows:i,columns:n,resize:true,singleMode:true,div:e.tableDiv.append("div"),noButtonCallback:t=>{console.log(160);e.api.update({sample:d[t]})}})}export{c as gdcSinglecellUi,d as init};
1
+ import{P as e,n as t,d as o,b as s,y as r}from"./app-0de0ae35.js";import{r as l}from"./table-e2a307e6.js";import{appInit as i}from"./plot.app-0b02df66.js";import"./tslib.es6-c3c2d88f.js";import"./recover-6f2f3379.js";import"./termsetting-2e75e729.js";import"path";import"./FilterRxComp-fb608459.js";import"./partjson.esm-b3f1fc21.js";import"./termdb.bins-7ecc48db.js";import"./FilterStateless-fc4e4e1b.js";import"./app-7f695ce7.js";import"./termInfo-5477ba96.js";import"./toggleButtons-7ce58d97.js";import"./genesearch-5fa13afa.js";import"./checkbox-96437f4d.js";import"./rehydrateFilter-12d118cb.js";const a="hg38";const p="GDC";const n=[{label:"Case"},{label:"Project"},{label:"Primary Site"},{label:"Disease Type"},{label:"Sample Type"}];async function c(s,r,l){const n=await i({holder:r,state:{genome:a,dslabel:p,termfilter:{filter0:s.filter0},plots:[{chartType:"singleCellPlot"}]},noheader:true,nobox:true,hide_dsHandles:true,genome:l[a],app:e({getPlotHolder:(e,s)=>{if(e.chartType=="gsea"){const r=t(o(s.select(`#${e.insertBefore}`).node().parentNode),{close:()=>{n.dispatch({type:"plot_delete",id:e.id})},plotId:e.id,beforePlotId:e.insertBefore||null,style:{width:"98.5%"}});r.header.text("GENE SET ENRICHMENT ANALYSIS");return r.body.style("white-space","nowrap")}else{return s.append("div")}}},s.opts?.app||{}),singleCellPlot:s.opts?.singleCell||{}});const c={update:async e=>{if("filter0"in e){n.dispatch({type:"app_refresh",subactions:[{type:"filter_replace",filter0:e.filter0},{type:"plot_edit",id:n.getState().plots[0].id,config:{sample:undefined}}]})}else{console.log(75,n);n.dispatch({type:"plot_edit",id:n.getState().plots[0].id,config:e})}}};return c}async function d({holder:e,filter0:t,callbackOnRender:o,debugmode:s=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 f(l);return r}async function f(e){e.tableDiv.selectAll("*").remove();const t=e.tableDiv.append("div").text("Loading...");let o;{const l={genome:a,dslabel:p};if(e.opts.filter0)l.filter0=e.opts.filter0;try{o=await s("termdb/singlecellSamples",{body:l});if(o.error)throw o.error}catch(o){t.remove();r(e.errDiv,o);return}}console.log(o);t.remove();const i=[];const c=[];for(const e of o.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}];i.push(o);c.push(t.experimentID)}}l({rows:i,columns:n,resize:true,singleMode:true,div:e.tableDiv.append("div"),noButtonCallback:t=>{console.log(160);e.api.update({sample:c[t]})}})}export{d as gdcSinglecellUi,c as init};
@@ -1 +1 @@
1
- import{a8 as e,a3 as t,bs as n,bt as o,bu as a,$ as s,bv as i,j as r,q as l,M as c,ah as p,I as d,bw as u,bx as g,Z as m,ac as y,p as x,a7 as f}from"./app-6fb77603.js";import{l as h}from"./block.legend-93d85a6e.js";import{s as _}from"./legacy-d3-polyfill-bdb2d792.js";import{a as b,c as v,b as k}from"./axis-747c801e.js";import{p as w}from"./viridis-cc59f478.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-d357ce08.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 I(){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 I(o(),[s,i]).round(c).paddingInner(p).paddingOuter(d).align(u)};return t.apply(g(),arguments)}function C(){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(C()(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 L(e){return new P(e)}async function A(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);q(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",(()=>$(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 q(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;Q(t,e,h.node().value)}))}))}U(e)}function U(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",(()=>{K(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 $(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;U(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 K(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 Q(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()}));X(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")Y(e,r);else if(c.node().value=="violin")X(e,r)}))}}function X(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(L);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(L);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 Y(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 _=I().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=I().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 C=s.selectAll(".legend").data(M).enter().append("g").attr("class","legend").attr("transform",(function(e,t){return"translate("+(h-y)+","+(30+t*20)+")"}));C.append("rect").attr("width",20).attr("height",20).style("fill",z).style("opacity",.8);C.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{A as init};
1
+ import{a8 as e,a3 as t,bs as n,bt as o,bu as a,$ as s,bv as i,j as r,q as l,M as c,ah as p,I as d,bw as u,bx as g,Z as m,ac as y,p as x,a7 as h}from"./app-0de0ae35.js";import{l as f}from"./block.legend-97401467.js";import{s as _}from"./legacy-d3-polyfill-bdb2d792.js";import{a as b,c as v,b as k}from"./axis-747c801e.js";import{p as w}from"./viridis-725f66e0.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-3e370c9b.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 I(){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 I(o(),[s,i]).round(c).paddingInner(p).paddingOuter(d).align(u)};return t.apply(g(),arguments)}function C(){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(C()(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 L(e){return new P(e)}async function A(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);q(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",(()=>$(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 q(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 h=e.menu_output.append("div");h.append("div").style("display","block").style("padding","5px").html("Violinplot / Boxplot of </br> Expression by");const f=h.append("select").style("display","block");f.append("option").attr("value","none").text("-- Select--");if(e.cells.categories){e.cells.categories.forEach(((e,t)=>{f.append("option").attr("value",e.columnidx).text(e.name)}))}f.on("change",(()=>{const t=e.gene_expression.genes[e.use_gene_index];const n=e.cells.categories[parseInt(f.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(f.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;Q(t,e,f.node().value)}))}))}U(e)}function U(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",(()=>{K(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 $(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;U(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 K(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 Q(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()}));X(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")Y(e,r);else if(c.node().value=="violin")X(e,r)}))}}function X(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(L);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(L);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 Y(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 h=(p+u)*c.length+g;const f=(d+u)*i.length+x+y+20;s.transition().attr("width",f).attr("height",h);const _=I().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=I().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 C=s.selectAll(".legend").data(M).enter().append("g").attr("class","legend").attr("transform",(function(e,t){return"translate("+(f-y)+","+(30+t*20)+")"}));C.append("rect").attr("width",20).attr("height",20).style("fill",z).style("opacity",.8);C.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]=f(t,t.legendimg.name||"");const r=await h("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{A as init};
@@ -1 +1 @@
1
- import{_ as t}from"./tslib.es6-c3c2d88f.js";import{getHandler as e}from"./categorical-1dea48ba.js";import{P as r}from"./app-6fb77603.js";import{s as i}from"./termsetting-492eefa7.js";import"./groupsetting-e3a4ecd5.js";import"path";function o(r){return t(this,void 0,void 0,(function*(){return e(r)}))}function s(e,o,s=null){return t(this,void 0,void 0,(function*(){if(typeof e.term!=="object")throw"tw.term is not an object";if(!e.term.id||!e.term.name)throw"missing snp id/name";if(!e.term.chr||!Number.isInteger(e.term.start)||!Number.isInteger(e.term.stop))throw"incomplete position information";if(!e.term.ref||!e.term.alt);if(!Object.keys(e.q).includes("type"))e.q.type="values";if(!e.term.groupsetting)e.term.groupsetting={disabled:false};if(e.q.type=="predefined-groupset"){if(!Number.isInteger(e.q.predefined_groupset_idx))throw"predefined_groupset_idx is not an integer"}if(e.q.type=="custom-groupset"){if(!e.q.customset)throw"invalid customset"}if(s){r(e.q,s)}i(e.q,e.term)}))}export{s as fillTW,o as getHandler};
1
+ import{_ as t}from"./tslib.es6-c3c2d88f.js";import{getHandler as e}from"./categorical-25b06bc5.js";import{P as r}from"./app-0de0ae35.js";import{s as i}from"./termsetting-2e75e729.js";import"./groupsetting-a3de9ec7.js";import"path";function o(r){return t(this,void 0,void 0,(function*(){return e(r)}))}function s(e,o,s=null){return t(this,void 0,void 0,(function*(){if(typeof e.term!=="object")throw"tw.term is not an object";if(!e.term.id||!e.term.name)throw"missing snp id/name";if(!e.term.chr||!Number.isInteger(e.term.start)||!Number.isInteger(e.term.stop))throw"incomplete position information";if(!e.term.ref||!e.term.alt);if(!Object.keys(e.q).includes("type"))e.q.type="values";if(!e.term.groupsetting)e.term.groupsetting={disabled:false};if(e.q.type=="predefined-groupset"){if(!Number.isInteger(e.q.predefined_groupset_idx))throw"predefined_groupset_idx is not an integer"}if(e.q.type=="custom-groupset"){if(!e.q.customset)throw"invalid customset"}if(s){r(e.q,s)}i(e.q,e.term)}))}export{s as fillTW,o as getHandler};
@@ -0,0 +1 @@
1
+ import{_ as s}from"./tslib.es6-c3c2d88f.js";import{M as t}from"./app-0de0ae35.js";import{a}from"./genesearch-5fa13afa.js";class o{init(s){this.callback=s.callback;const o=a({tip:new t({padding:"0px"}),genome:s.genomeObj,row:s.holder,searchOnly:"snp",allowVariant:true,callback:()=>this.selectSnp(o)})}selectSnp(t){return s(this,void 0,void 0,(function*(){const{chr:s,ref:a,alt:o,fromWhat:e}=t;if(!s||!a||!o||!e)throw"missing chr, ref, alt, or fromWhat of snp";let r,i;if(!t.start&&!t.stop){if(t.pos){r=t.pos-1;i=t.pos}else{throw"missing coordinate of snp"}}else{r=t.start;i=t.stop}const n={id:e,chr:s,start:r,stop:i,name:e,ref:a,alt:typeof o=="string"?[o]:o,type:"snp"};this.callback(n)}))}}export{o as SearchHandler};
@@ -0,0 +1 @@
1
+ import{_ as t}from"./tslib.es6-c3c2d88f.js";import{mayRestrictAncestry as e,makeSnpSelect as i}from"./snplst-6865d7c7.js";import{f as r}from"./FilterStateless-fc4e4e1b.js";import{g as n}from"./FilterRxComp-fb608459.js";import"./termsetting-2e75e729.js";import"./app-0de0ae35.js";import{a}from"./genesearch-5fa13afa.js";import"./snplst.sampleSum-e47d05f0.js";import"./table-e2a307e6.js";import"./partjson.esm-b3f1fc21.js";import"./termdb.bins-7ecc48db.js";import"path";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(r,o){var l;return t(this,void 0,void 0,(function*(){const d=o.append("div").style("margin","15px");const c=yield e(r,d);const u=a({genome:r.opts.genomeObj,tip:r.dom.tip2,row:d.append("div").style("margin-top","20px"),defaultCoord:r.q&&r.q.chr?{chr:r.q.chr,start:r.q.start,stop:r.q.stop}:undefined});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(r,(l=r.q)===null||l===void 0?void 0:l.variant_filter,d);const[v,h,y]=i(d.append("div").attr("class","sjpp-snp-select").style("margin-top","15px"),r,"snplocus");if(r.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(r.term);else{r.term={id:m()}}if(!r.q)r.q={};r.term.type="snplocus";r.q.chr=u.chr;r.q.start=u.start;r.q.stop=u.stop;r.term.name=s;delete r.term.snps;r.q.variant_filter=n(r.variantFilter.active);yield p(r);{const t=Number(v.property("value"));r.q.AFcutoff=t<0||t>=100?5:t}r.q.alleleType=h.property("selectedIndex");r.q.geneticModel=y.property("selectedIndex");if(c){r.q.restrictAncestry=c.node().options[c.property("selectedIndex")].__ancestry_obj}r.runCallback()}))));g.append("span").style("padding-left","15px").style("opacity",.8).style("font-size",".8em").text(r.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,n,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=n.append("div").style("margin-top","15px");s.append("span").text("VARIANT FILTERS").style("font-size",".8em").style("opacity",.5);const o=s.append("div");r({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{ah as t,a_ as e,bV as a}from"./app-6fb77603.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{ah as t,a_ as e,bV as a}from"./app-0de0ae35.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{a_ as t,ah as a,bV as n}from"./app-6fb77603.js";import{s as e}from"./spliceevent.phrase-a8401d53.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{a_ as t,ah as a,bV as n}from"./app-0de0ae35.js";import{s as e}from"./spliceevent.phrase-7f34e3b1.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{bX as e,bV as n}from"./app-0de0ae35.js";function o(o){let t=0;for(let i=1;i<o.length;i++){const a=o[i];const f=o[t];if(a.isskipexon&&f.isaltexon){t=i;continue}if(a.frame==e&&f.framenocheck){t=i;continue}if(a.frame==n&&f.frame!=n){t=i;continue}}return t}export{o as e};
@@ -1 +1 @@
1
- import{ah as t,a_ as n}from"./app-6fb77603.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{ah as t,a_ as n}from"./app-0de0ae35.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{bV as s,ba as i,bX as o}from"./app-6fb77603.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{bV as s,ba as i,bX as o}from"./app-0de0ae35.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{h as t}from"./app-6fb77603.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{h as t}from"./app-0de0ae35.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-6fb77603.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-0de0ae35.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};
@@ -0,0 +1 @@
1
+ import{h as t,P as e,M as i}from"./app-0de0ae35.js";import{f as o,i as s}from"./termsetting-2e75e729.js";import{r}from"./recover-6f2f3379.js";import{getDefaultViolinSettings as a}from"./violin-4595cef4.js";import{getDefaultBarSettings as n}from"./barchart-978fb21a.js";import{g as p}from"./sampleScatter-7c2773de.js";import{T as l}from"./toggleButtons-7ce58d97.js";import"./tslib.es6-c3c2d88f.js";import"path";import"./FilterRxComp-fb608459.js";import"./table-e2a307e6.js";import"./partjson.esm-b3f1fc21.js";import"./termdb.bins-7ecc48db.js";import"./FilterStateless-fc4e4e1b.js";import"./app-7f695ce7.js";import"./termInfo-5477ba96.js";import"./genesearch-5fa13afa.js";import"./checkbox-96437f4d.js";import"./rehydrateFilter-12d118cb.js";import"./controls-1f3ac9d0.js";import"./controls.btns-5b44e5d0.js";import"./controls.config-b0339f96.js";import"./violin.renderer-0b7431a2.js";import"./brush-4c775f74.js";import"./pointer-c7475677.js";import"./nodrag-0fa60f70.js";import"./axis-747c801e.js";import"./line-264f8f9e.js";import"./constant-426a1483.js";import"./basis-3870f5ba.js";import"./log-d560d2a5.js";import"./html.legend-455f7881.js";import"./violin.interactivity-8b63e000.js";import"./niceNumLabels-1bd7a93b.js";import"./bars.settings-64bb4642.js";import"./bars.renderer-d7461d5d.js";import"./svg.legend-8d21872d.js";import"./barchart.events-9b482604.js";import"./zoom-d3d38b3b.js";import"./lasso-e12204af.js";import"./drag-ad04f964.js";import"./shapes-21ebfec4.js";import"./sampleView-8885e86b.js";import"./select2Terms-d9320d21.js";import"./svg.download-a5e20a92.js";import"./sampleScatter.rendererThree-b6db5a09.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 r({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);const e=this.tabsData.filter((t=>t.isVisible())).length;if(e>1)this.dom.chartToggles.style("display","inline-block");else this.dom.chartToggles.style("display","none")}async setComponent(t){let e;if(t.childType=="barchart")e=await import("./barchart-978fb21a.js");else if(t.childType=="violin")e=await import("./violin-4595cef4.js");else if(t.childType=="table")e=await import("./table-1cbe3a36.js");else if(t.childType=="boxplot")e=await import("./boxplot-1f229616.js");else if(t.childType=="sampleScatter")e=await import("./sampleScatter-7c2773de.js").then((function(t){return t.b}));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(e,o){const r=e.holder;try{t.dom={tip:new i({padding:"0px"}),holder:r,body:r.body.style("white-space","nowrap").style("overflow-x","auto"),errdiv:r.body.append("div").style("display","none").style("padding","5px").style("background-color","rgba(255,100,100,0.2)"),viz:r.body.append("div"),plotDivs:{}};r.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(o.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=s(i?.term)?"discrete":i?.q.mode||"discrete";e.term=await t.getWrappedTermCopy(i,o)}if(o){const i=s(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:()=>s(t.config?.term?.term)||s(t.config?.term2?.term),getConfig:async()=>{const e=t.config?.term;const i=t.config.term2;let o,r;s(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 a={childType:"violin",term:o,term2:r};return a},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:()=>s(t.config?.term.term)&&s(t.config?.term2?.term),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 l({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 s=structuredClone(e);s.q.mode=i;await o(s,t.app.vocabApi);return s};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 h(t,i){if(!t.term)throw"summary getPlotConfig: opts.term{} missing";try{await o(t.term,i.vocabApi);if(t.term2)await o(t.term2,i.vocabApi);if(t.term0)await o(t.term0,i.vocabApi)}catch(t){throw`${t} [summary getPlotConfig()]`}const s={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(i),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 e(s,t)}export{h as getPlotConfig,d as summaryInit};
@@ -1 +1 @@
1
- import{a8 as t,af as a,aL as e,r,aW as n,d as i}from"./app-6fb77603.js";import{p as o}from"./partition-db811f6b.js";import{d as s}from"./arc-3d6751aa.js";import"./constant-426a1483.js";import"./math-2fb199c6.js";const l=500;const c=250;function f(f){const{occurrence:p,boxyoff:u,boxheight:m,boxwidth:g,svgheight:y,g:x,pica:b,cx:v,cy:w,nodes:M,chartlabel:A,click_ring:k,click_listbutton:z}=f;x.attr("transform","translate("+v+","+w+")");const _=t(a);const j=x.append("g");const F=x.append("g");const E={g:x,eye:j,ring:F,pica:b,busy:false,boxyoff:u,svgheight:y,cx:v,cy:w};const I=Math.max(m*.2,Math.min(m*.42,Math.log(p)*24));if(v<I){E.cx=I}else if(v+I>g){E.cx=g-I}if(w<I){E.cy=I}else if(w+I>m){E.cy=m-I}x.transition().delay(l+c).attr("transform","translate("+E.cx+","+E.cy+")");const P=e()(M);P.sum((t=>t.value));P.sort(((t,a)=>a.value-t.value));o().size([1,Math.pow(I,2)])(P);j.append("circle").attr("r",I).attr("fill","white").attr("fill-opacity",0);let B;const q=s().startAngle((t=>Math.PI*2*t.x0)).endAngle((t=>Math.PI*2*t.x1)).innerRadius((t=>{if(!t.parent){B=Math.sqrt(t.y1)-I/15;return B}return Math.sqrt(t.y0)})).outerRadius((t=>{t.outradius=Math.sqrt(t.y1);return t.outradius}));F.selectAll().data(P.descendants()).enter().append("path").attr("d",q).attr("stroke","white").attr("fill",(t=>{if(!t.parent){return"white"}let a;if(t.children){a=t.id}else{if(!t.parent.parent){a=t.id}else{a=t.parent.id}}const e=_(a);t._color=e;return e})).on("mouseover",((t,a)=>{if(!a.parent)return;if(E.busy)return;t.target.setAttribute("fill",r(a._color).darker(.5).toString());h(a,E)})).on("mouseout",((t,a)=>{b.g.selectAll("*").remove();if(!a.parent)return;t.target.setAttribute("fill",a._color)})).on("click",(async(t,a)=>{if(!k)return;if(E.busy)return;E.busy=true;await k(t,a);E.busy=false}));const X=B*2;F.attr("transform","scale(.3,.3)").attr("fill-opacity",0).transition().duration(l).attr("transform","scale(1,1)").attr("fill-opacity",1).on("end",(()=>{j.shutter=j.append("rect").attr("x",-B).attr("y",-B).attr("width",B*2).attr("height",0).attr("fill","#ededed").on("click",(()=>d(E)));j.shutter.transition().duration(c).attr("height",B*2).on("end",(()=>{j.fore=j.append("g");const t=Math.min(X/(A.length*n),B*.6);j.fore.append("text").text(A).attr("text-anchor","middle").attr("dominant-baseline","central").attr("fill","#858585").attr("font-weight","bold").attr("font-family","Arial").attr("font-size",t);const a=Math.min(18,Math.min(B*.7/(p.toString().length*n),(B-t/2)*.7));j.fore.append("text").text(p).attr("text-anchor","middle").attr("fill","#858585").attr("y",-t/2-2).attr("font-family","Arial").attr("font-size",a);j.append("rect").attr("x",-B).attr("y",-B).attr("width",B*2).attr("height",B*2).attr("fill","black").attr("fill-opacity",0).on("click",(()=>{if(E.busy)return;d(E)})).on("mousedown",(t=>{t.preventDefault();t.stopPropagation();const a=t.clientX,e=t.clientY,r=i(document.body);let n=E.cx,o=E.cy;r.on("mousemove",(t=>{E.busy=true;E.cx=n+t.clientX-a;E.cy=o+t.clientY-e;x.attr("transform","translate("+E.cx+","+E.cy+")")})).on("mouseup",(()=>{setTimeout((()=>E.busy=false),10);r.on("mousemove",null).on("mouseup",null)}))}));if(z){E.listbutt=j.append("g").attr("transform","translate(0,"+t/2+")");const e=E.listbutt.append("rect").attr("x",-X/2).attr("width",X).attr("height",B-t/2).attr("fill","#d9d9d9");const r=E.listbutt.append("text").text("Info").attr("y",(B-t/2)/2).attr("dominant-baseline","central").attr("text-anchor","middle").attr("font-family","Arial").attr("fill","#858585").attr("font-size",Math.min(18,a));E.listbutt.append("rect").classed("sja_info_click",true).attr("x",-X/2).attr("width",X).attr("height",B-t/2).attr("fill-opacity",0).on("mouseover",(()=>{e.attr("fill","#bababa");r.attr("fill","white")})).on("mouseout",(()=>{e.attr("fill","#d9d9d9");r.attr("fill","#858585")})).on("click",(t=>{d(E);const a=t.clientX-I,e=t.clientY-I;setTimeout((()=>z(a,e)),l)}))}}))}))}function d(t){t.busy=true;if(t.eye.fore){t.eye.fore.remove()}if(t.listbutt){t.listbutt.remove()}if(t.eye.shutter){t.eye.shutter.transition().attr("height",0).on("end",(()=>{t.ring.transition().attr("transform","scale(.5,.5)").attr("fill-opacity",0).on("end",(()=>{t.g.remove();t.pica.g.selectAll("*").remove()}))}))}else{t.ring.transition().attr("transform","scale(.5,.5)").attr("fill-opacity",0).on("end",(()=>{t.g.remove();t.pica.g.selectAll("*").remove()}))}t.pica.g.selectAll("*").remove()}function h(t,a){const e=13;const r=10;const n=1;let i=(t.x0+t.x1)/2;if(i>=.375&&i<=.625){const e=a.boxyoff+a.cy+t.outradius;if(e>=a.svgheight-30){if(i<=.5){i=Math.max(.25,t.x0)}else{i=Math.min(.75,t.x1)}}}a.pica.g.selectAll("*").remove();const o=a.cx+(t.outradius+5)*Math.sin(Math.PI*2*i);const s=a.cy-(t.outradius+5)*Math.cos(Math.PI*2*i);a.pica.g.attr("transform","translate("+o+","+s+")");const l=60;let c=null;const f=t.data.cohortsize;if(Number.isFinite(f)){c=a.pica.g.append("g");c.append("rect").attr("width",l+4).attr("height",r+4).attr("fill","white").attr("shape-rendering","crispEdges");c.append("rect").attr("x",2).attr("y",2).attr("width",l).attr("height",r).attr("fill","#ECE5FF").attr("shape-rendering","crispEdges");c.append("rect").attr("x",2).attr("y",2).attr("width",l*t.value/f).attr("height",r).attr("fill","#9F80FF").attr("shape-rendering","crispEdges")}const d=a.pica.g.append("text").attr("stroke","white").attr("stroke-width",3).attr("font-size",e).attr("font-family","Arial");const h=a.pica.g.append("text").attr("fill","black").attr("fill-opacity",1).attr("font-size",e).attr("font-family","Arial");t.data.name+", "+t.value+" sample"+(t.value>1?"s":"");d.text(t.data.name);h.text(t.data.name);const p=a.pica.g.append("text").attr("stroke","white").attr("stroke-width",3).attr("font-size",e).attr("font-family","Arial");const u=a.pica.g.append("text").attr("fill","black").attr("fill-opacity",1).attr("font-size",e).attr("font-family","Arial");const m=t.value+" sample"+(t.value>1?"s":"")+(c?" ("+f+" total)":"");p.text(m);u.text(m);Math.max(h.node().getBBox().width,u.node().getBBox().width);if(i<.25){p.attr("y",c?-3-r-n:0);u.attr("y",c?-3-r-n:0);d.attr("y",(c?-3-r-n:0)-e-n);h.attr("y",(c?-3-r-n:0)-e-n);if(c){c.attr("transform","translate(0,-"+r+")")}}else if(i<.5){d.attr("dominant-baseline","hanging").attr("y",0);h.attr("dominant-baseline","hanging").attr("y",0);p.attr("dominant-baseline","hanging").attr("y",n+e);u.attr("dominant-baseline","hanging").attr("y",n+e);if(c){c.attr("transform","translate(0,"+(e+n)*2+")")}}else if(i<.75){d.attr("dominant-baseline","hanging").attr("text-anchor","end").attr("y",0);h.attr("dominant-baseline","hanging").attr("text-anchor","end").attr("y",0);p.attr("dominant-baseline","hanging").attr("text-anchor","end").attr("y",n+e);u.attr("dominant-baseline","hanging").attr("text-anchor","end").attr("y",n+e);if(c){c.attr("transform","translate(-"+l+","+(e+n)*2+")")}}else{p.attr("text-anchor","end").attr("y",c?-3-r-n:0);u.attr("text-anchor","end").attr("y",c?-3-r-n:0);d.attr("text-anchor","end").attr("y",(c?-3-r-n:0)-e-n);h.attr("text-anchor","end").attr("y",(c?-3-r-n:0)-e-n);if(c){c.attr("transform","translate(-"+l+",-"+r+")")}}}export{f as default};
1
+ import{a8 as t,af as a,aL as e,r,aW as n,d as i}from"./app-0de0ae35.js";import{p as o}from"./partition-db811f6b.js";import{d as s}from"./arc-3d6751aa.js";import"./constant-426a1483.js";import"./math-2fb199c6.js";const l=500;const c=250;function f(f){const{occurrence:p,boxyoff:u,boxheight:m,boxwidth:g,svgheight:y,g:x,pica:b,cx:v,cy:w,nodes:M,chartlabel:A,click_ring:k,click_listbutton:z}=f;x.attr("transform","translate("+v+","+w+")");const _=t(a);const j=x.append("g");const F=x.append("g");const E={g:x,eye:j,ring:F,pica:b,busy:false,boxyoff:u,svgheight:y,cx:v,cy:w};const I=Math.max(m*.2,Math.min(m*.42,Math.log(p)*24));if(v<I){E.cx=I}else if(v+I>g){E.cx=g-I}if(w<I){E.cy=I}else if(w+I>m){E.cy=m-I}x.transition().delay(l+c).attr("transform","translate("+E.cx+","+E.cy+")");const P=e()(M);P.sum((t=>t.value));P.sort(((t,a)=>a.value-t.value));o().size([1,Math.pow(I,2)])(P);j.append("circle").attr("r",I).attr("fill","white").attr("fill-opacity",0);let B;const q=s().startAngle((t=>Math.PI*2*t.x0)).endAngle((t=>Math.PI*2*t.x1)).innerRadius((t=>{if(!t.parent){B=Math.sqrt(t.y1)-I/15;return B}return Math.sqrt(t.y0)})).outerRadius((t=>{t.outradius=Math.sqrt(t.y1);return t.outradius}));F.selectAll().data(P.descendants()).enter().append("path").attr("d",q).attr("stroke","white").attr("fill",(t=>{if(!t.parent){return"white"}let a;if(t.children){a=t.id}else{if(!t.parent.parent){a=t.id}else{a=t.parent.id}}const e=_(a);t._color=e;return e})).on("mouseover",((t,a)=>{if(!a.parent)return;if(E.busy)return;t.target.setAttribute("fill",r(a._color).darker(.5).toString());h(a,E)})).on("mouseout",((t,a)=>{b.g.selectAll("*").remove();if(!a.parent)return;t.target.setAttribute("fill",a._color)})).on("click",(async(t,a)=>{if(!k)return;if(E.busy)return;E.busy=true;await k(t,a);E.busy=false}));const X=B*2;F.attr("transform","scale(.3,.3)").attr("fill-opacity",0).transition().duration(l).attr("transform","scale(1,1)").attr("fill-opacity",1).on("end",(()=>{j.shutter=j.append("rect").attr("x",-B).attr("y",-B).attr("width",B*2).attr("height",0).attr("fill","#ededed").on("click",(()=>d(E)));j.shutter.transition().duration(c).attr("height",B*2).on("end",(()=>{j.fore=j.append("g");const t=Math.min(X/(A.length*n),B*.6);j.fore.append("text").text(A).attr("text-anchor","middle").attr("dominant-baseline","central").attr("fill","#858585").attr("font-weight","bold").attr("font-family","Arial").attr("font-size",t);const a=Math.min(18,Math.min(B*.7/(p.toString().length*n),(B-t/2)*.7));j.fore.append("text").text(p).attr("text-anchor","middle").attr("fill","#858585").attr("y",-t/2-2).attr("font-family","Arial").attr("font-size",a);j.append("rect").attr("x",-B).attr("y",-B).attr("width",B*2).attr("height",B*2).attr("fill","black").attr("fill-opacity",0).on("click",(()=>{if(E.busy)return;d(E)})).on("mousedown",(t=>{t.preventDefault();t.stopPropagation();const a=t.clientX,e=t.clientY,r=i(document.body);let n=E.cx,o=E.cy;r.on("mousemove",(t=>{E.busy=true;E.cx=n+t.clientX-a;E.cy=o+t.clientY-e;x.attr("transform","translate("+E.cx+","+E.cy+")")})).on("mouseup",(()=>{setTimeout((()=>E.busy=false),10);r.on("mousemove",null).on("mouseup",null)}))}));if(z){E.listbutt=j.append("g").attr("transform","translate(0,"+t/2+")");const e=E.listbutt.append("rect").attr("x",-X/2).attr("width",X).attr("height",B-t/2).attr("fill","#d9d9d9");const r=E.listbutt.append("text").text("Info").attr("y",(B-t/2)/2).attr("dominant-baseline","central").attr("text-anchor","middle").attr("font-family","Arial").attr("fill","#858585").attr("font-size",Math.min(18,a));E.listbutt.append("rect").classed("sja_info_click",true).attr("x",-X/2).attr("width",X).attr("height",B-t/2).attr("fill-opacity",0).on("mouseover",(()=>{e.attr("fill","#bababa");r.attr("fill","white")})).on("mouseout",(()=>{e.attr("fill","#d9d9d9");r.attr("fill","#858585")})).on("click",(t=>{d(E);const a=t.clientX-I,e=t.clientY-I;setTimeout((()=>z(a,e)),l)}))}}))}))}function d(t){t.busy=true;if(t.eye.fore){t.eye.fore.remove()}if(t.listbutt){t.listbutt.remove()}if(t.eye.shutter){t.eye.shutter.transition().attr("height",0).on("end",(()=>{t.ring.transition().attr("transform","scale(.5,.5)").attr("fill-opacity",0).on("end",(()=>{t.g.remove();t.pica.g.selectAll("*").remove()}))}))}else{t.ring.transition().attr("transform","scale(.5,.5)").attr("fill-opacity",0).on("end",(()=>{t.g.remove();t.pica.g.selectAll("*").remove()}))}t.pica.g.selectAll("*").remove()}function h(t,a){const e=13;const r=10;const n=1;let i=(t.x0+t.x1)/2;if(i>=.375&&i<=.625){const e=a.boxyoff+a.cy+t.outradius;if(e>=a.svgheight-30){if(i<=.5){i=Math.max(.25,t.x0)}else{i=Math.min(.75,t.x1)}}}a.pica.g.selectAll("*").remove();const o=a.cx+(t.outradius+5)*Math.sin(Math.PI*2*i);const s=a.cy-(t.outradius+5)*Math.cos(Math.PI*2*i);a.pica.g.attr("transform","translate("+o+","+s+")");const l=60;let c=null;const f=t.data.cohortsize;if(Number.isFinite(f)){c=a.pica.g.append("g");c.append("rect").attr("width",l+4).attr("height",r+4).attr("fill","white").attr("shape-rendering","crispEdges");c.append("rect").attr("x",2).attr("y",2).attr("width",l).attr("height",r).attr("fill","#ECE5FF").attr("shape-rendering","crispEdges");c.append("rect").attr("x",2).attr("y",2).attr("width",l*t.value/f).attr("height",r).attr("fill","#9F80FF").attr("shape-rendering","crispEdges")}const d=a.pica.g.append("text").attr("stroke","white").attr("stroke-width",3).attr("font-size",e).attr("font-family","Arial");const h=a.pica.g.append("text").attr("fill","black").attr("fill-opacity",1).attr("font-size",e).attr("font-family","Arial");t.data.name+", "+t.value+" sample"+(t.value>1?"s":"");d.text(t.data.name);h.text(t.data.name);const p=a.pica.g.append("text").attr("stroke","white").attr("stroke-width",3).attr("font-size",e).attr("font-family","Arial");const u=a.pica.g.append("text").attr("fill","black").attr("fill-opacity",1).attr("font-size",e).attr("font-family","Arial");const m=t.value+" sample"+(t.value>1?"s":"")+(c?" ("+f+" total)":"");p.text(m);u.text(m);Math.max(h.node().getBBox().width,u.node().getBBox().width);if(i<.25){p.attr("y",c?-3-r-n:0);u.attr("y",c?-3-r-n:0);d.attr("y",(c?-3-r-n:0)-e-n);h.attr("y",(c?-3-r-n:0)-e-n);if(c){c.attr("transform","translate(0,-"+r+")")}}else if(i<.5){d.attr("dominant-baseline","hanging").attr("y",0);h.attr("dominant-baseline","hanging").attr("y",0);p.attr("dominant-baseline","hanging").attr("y",n+e);u.attr("dominant-baseline","hanging").attr("y",n+e);if(c){c.attr("transform","translate(0,"+(e+n)*2+")")}}else if(i<.75){d.attr("dominant-baseline","hanging").attr("text-anchor","end").attr("y",0);h.attr("dominant-baseline","hanging").attr("text-anchor","end").attr("y",0);p.attr("dominant-baseline","hanging").attr("text-anchor","end").attr("y",n+e);u.attr("dominant-baseline","hanging").attr("text-anchor","end").attr("y",n+e);if(c){c.attr("transform","translate(-"+l+","+(e+n)*2+")")}}else{p.attr("text-anchor","end").attr("y",c?-3-r-n:0);u.attr("text-anchor","end").attr("y",c?-3-r-n:0);d.attr("text-anchor","end").attr("y",(c?-3-r-n:0)-e-n);h.attr("text-anchor","end").attr("y",(c?-3-r-n:0)-e-n);if(c){c.attr("transform","translate(-"+l+",-"+r+")")}}}export{f as default};
@@ -1 +1 @@
1
- import{_ as t}from"./tslib.es6-c3c2d88f.js";import{o as e}from"./termsetting-492eefa7.js";import{getHandler as o}from"./numeric.toggle-2f98d6e5.js";import"./app-6fb77603.js";import"path";import"./toggleButtons-c4d6f260.js";function i(i){return{showEditMenu(e){return t(this,void 0,void 0,(function*(){const t=yield o(i);yield t.showEditMenu(e)}))},getPillStatus(){},getPillName(t){return e(i,t)}}}function r(t,e){}export{r as fillTW,i as getHandler};
1
+ import{_ as t}from"./tslib.es6-c3c2d88f.js";import{o as e}from"./termsetting-2e75e729.js";import{getHandler as o}from"./numeric.toggle-332c2578.js";import"./app-0de0ae35.js";import"path";import"./toggleButtons-7ce58d97.js";function i(i){return{showEditMenu(e){return t(this,void 0,void 0,(function*(){const t=yield o(i);yield t.showEditMenu(e)}))},getPillStatus(){},getPillName(t){return e(i,t)}}}function r(t,e){}export{r as fillTW,i as getHandler};