@sjcrh/proteinpaint-client 2.74.2 → 2.76.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (307) hide show
  1. package/dist/{2dmaf-b2d78c57.js → 2dmaf-74b99126.js} +1 -1
  2. package/dist/AppHeader-cecb39c2.js +1 -0
  3. package/dist/{ColorScale-9c76aef3.js → ColorScale-21cab8d2.js} +1 -1
  4. package/dist/DEanalysis-95bad59a.js +1 -0
  5. package/dist/Disco-a6e921a0.js +1 -0
  6. package/dist/Disco.UI-9ad999ed.js +1 -0
  7. package/dist/{DragControls-586f72db.js → DragControls-e3b6a937.js} +1 -1
  8. package/dist/{DziViewer-6311327c.js → DziViewer-354a790d.js} +1 -1
  9. package/dist/FilterRxComp-701a1480.js +1 -0
  10. package/dist/{FilterStateless-046081c2.js → FilterStateless-54c0b763.js} +1 -1
  11. package/dist/{HicApp-40e44cba.js → HicApp-d5a946bf.js} +1 -1
  12. package/dist/{OrbitControls-0cda1772.js → OrbitControls-694652cd.js} +1 -1
  13. package/dist/WSIViewer-dc7f8eb0.js +1 -0
  14. package/dist/adSandbox-f438e388.js +1 -0
  15. package/dist/app-3320ab6f.js +1 -0
  16. package/dist/app-649f8357.js +1 -0
  17. package/dist/app-b369b169.js +1 -0
  18. package/dist/app.js +1 -1
  19. package/dist/bam-431875ef.js +1 -0
  20. package/dist/barchart-8277ed43.js +1 -0
  21. package/dist/barchart.events-da29c90d.js +1 -0
  22. package/dist/{bars.renderer-5f7a4174.js → bars.renderer-dcfdd59b.js} +1 -1
  23. package/dist/block-6aedd569.js +1 -0
  24. package/dist/block.lazyload-87b12654.js +1 -0
  25. package/dist/block.legend-d3f61ef7.js +1 -0
  26. package/dist/{block.mds-effc078d.js → block.mds-3ad17dfa.js} +1 -1
  27. package/dist/{block.mds.cnv-ec861a26.js → block.mds.cnv-857ba868.js} +1 -1
  28. package/dist/{block.mds.expressionrank-a2ad7c80.js → block.mds.expressionrank-7e3b208c.js} +1 -1
  29. package/dist/{block.mds.expressionstat-31dc5595.js → block.mds.expressionstat-f2d31c86.js} +1 -1
  30. package/dist/{block.mds.geneboxplot-3ca857ce.js → block.mds.geneboxplot-f0fbaf12.js} +1 -1
  31. package/dist/{block.mds.junction-debba938.js → block.mds.junction-7f87f48f.js} +1 -1
  32. package/dist/{block.mds.svcnv-8dc5abdf.js → block.mds.svcnv-ac035c12.js} +1 -1
  33. package/dist/{block.mds.svcnv.share-81e62600.js → block.mds.svcnv.share-886d9479.js} +1 -1
  34. package/dist/block.mds2-7852c1ee.js +1 -0
  35. package/dist/{block.svg-9121e8e7.js → block.svg-9b916fa6.js} +1 -1
  36. package/dist/{block.tk.aicheck-c1b478e9.js → block.tk.aicheck-6770e333.js} +1 -1
  37. package/dist/{block.tk.ase-0f6ded48.js → block.tk.ase-ee807e59.js} +1 -1
  38. package/dist/{block.tk.bam-7cd06aee.js → block.tk.bam-00fba6e8.js} +1 -1
  39. package/dist/{block.tk.bedgraphdot-3ef8b94e.js → block.tk.bedgraphdot-7fda78e9.js} +1 -1
  40. package/dist/{block.tk.bigwig.ui-d1248810.js → block.tk.bigwig.ui-cc1a42f3.js} +1 -1
  41. package/dist/{block.tk.hicstraw-ee731e55.js → block.tk.hicstraw-526470e3.js} +1 -1
  42. package/dist/{block.tk.junction-4d8cab4d.js → block.tk.junction-b43a4cda.js} +1 -1
  43. package/dist/{block.tk.junction.textmatrixui-a6430b27.js → block.tk.junction.textmatrixui-a60ed78a.js} +1 -1
  44. package/dist/{block.tk.ld-8429a18b.js → block.tk.ld-d15bde41.js} +1 -1
  45. package/dist/{block.tk.menu-3f31f958.js → block.tk.menu-3aeb93c6.js} +1 -1
  46. package/dist/{block.tk.pgv-07e46705.js → block.tk.pgv-9af2bd64.js} +1 -1
  47. package/dist/boxplot-e17a17b7.js +1 -0
  48. package/dist/brainImaging-bf2ceee9.js +1 -0
  49. package/dist/{brush-c386fe3d.js → brush-aa175142.js} +1 -1
  50. package/dist/categorical-a52014a1.js +1 -0
  51. package/dist/condition-c646e357.js +1 -0
  52. package/dist/controls-287e6efa.js +1 -0
  53. package/dist/{controls.btns-1cb2bfab.js → controls.btns-79b805dd.js} +1 -1
  54. package/dist/controls.config-28d6d6a8.js +1 -0
  55. package/dist/cuminc-9e275854.js +1 -0
  56. package/dist/{customdata.inputui-cbd712ea.js → customdata.inputui-dc49d94b.js} +1 -1
  57. package/dist/dataDownload-3a3d4f33.js +1 -0
  58. package/dist/databrowser.ui-d8d3f8fd.js +1 -0
  59. package/dist/{density-19266ebf.js → density-a82a8b1c.js} +1 -1
  60. package/dist/dictionary-c5a19d90.js +1 -0
  61. package/dist/{drag-0b968811.js → drag-7b30ba17.js} +1 -1
  62. package/dist/{e2pca-b8752945.js → e2pca-82765817.js} +1 -1
  63. package/dist/{ep-a86b185a.js → ep-d017ec2f.js} +1 -1
  64. package/dist/facet-a9b44ef3.js +1 -0
  65. package/dist/{fusion.parse-244b2b97.js → fusion.parse-d40d0b9d.js} +1 -1
  66. package/dist/geneExpClustering-34c3f518.js +1 -0
  67. package/dist/geneExpression-0d1b7244.js +1 -0
  68. package/dist/{geneExpression-e0430f2e.js → geneExpression-589f485b.js} +1 -1
  69. package/dist/{geneExpression-387205bf.js → geneExpression-7d14983f.js} +1 -1
  70. package/dist/geneORA-903a780f.js +1 -0
  71. package/dist/{geneVariant-7de021b6.js → geneVariant-89601b34.js} +1 -1
  72. package/dist/geneVariant-92c4e870.js +1 -0
  73. package/dist/{genefusion.ui-a331de19.js → genefusion.ui-7e22e811.js} +1 -1
  74. package/dist/{genesearch-ea59f5d4.js → genesearch-a4e19f0d.js} +1 -1
  75. package/dist/geneset-108a39d2.js +1 -0
  76. package/dist/genomeBrowser-12f86a36.js +1 -0
  77. package/dist/genomeBrowser.controls-d5067811.js +1 -0
  78. package/dist/{groupsetting-20ffef77.js → groupsetting-b4416a96.js} +1 -1
  79. package/dist/gsea-543dab25.js +1 -0
  80. package/dist/hierCluster-26e14090.js +1 -0
  81. package/dist/hierCluster.config-98e82dff.js +1 -0
  82. package/dist/{hierCluster.interactivity-9b433033.js → hierCluster.interactivity-e56f6542.js} +1 -1
  83. package/dist/hierCluster.renderers-74a64cf5.js +1 -0
  84. package/dist/{html.legend-abb5452e.js → html.legend-a3f4ebfe.js} +1 -1
  85. package/dist/imagePlot-b9eae4ae.js +1 -0
  86. package/dist/{lasso-55cf4057.js → lasso-f767f634.js} +1 -1
  87. package/dist/launch.adhoc-abca6af3.js +1 -0
  88. package/dist/leftlabel.sample-24c2388d.js +1 -0
  89. package/dist/legacyDataset-e0e201ab.js +1 -0
  90. package/dist/{log-cf45fcf2.js → log-99af3443.js} +1 -1
  91. package/dist/{lollipop-c5b6e615.js → lollipop-806f8fa4.js} +1 -1
  92. package/dist/{maf-7535f1f9.js → maf-b06579e4.js} +1 -1
  93. package/dist/{maftimeline-1292ab62.js → maftimeline-4840a380.js} +1 -1
  94. package/dist/matrix-00bb50ff.js +1 -0
  95. package/dist/matrix.cells-914dd0c6.js +1 -0
  96. package/dist/{matrix.cluster-168bc96b.js → matrix.cluster-783ceab0.js} +1 -1
  97. package/dist/matrix.config-6ce74dfe.js +1 -0
  98. package/dist/matrix.controls-7b2a6f95.js +1 -0
  99. package/dist/{matrix.data-b1d0febe.js → matrix.data-dac4f1b7.js} +1 -1
  100. package/dist/{matrix.dom-00defa30.js → matrix.dom-4e10bbe9.js} +1 -1
  101. package/dist/matrix.groups-b9fca14a.js +1 -0
  102. package/dist/matrix.interactivity-84169b43.js +1 -0
  103. package/dist/{matrix.layout-c2345231.js → matrix.layout-dd5a44fd.js} +1 -1
  104. package/dist/matrix.legend-ac6d45e6.js +1 -0
  105. package/dist/matrix.renderers-78010275.js +1 -0
  106. package/dist/matrix.serieses-9b4fd744.js +1 -0
  107. package/dist/matrix.sort-014d798d.js +1 -0
  108. package/dist/{matrix.sorterUi-a741ba2e.js → matrix.sorterUi-9bf7e6f9.js} +1 -1
  109. package/dist/{mavb-92136d17.js → mavb-c6be46fc.js} +1 -1
  110. package/dist/{mds.fimo-c03115b4.js → mds.fimo-bff6a1ed.js} +1 -1
  111. package/dist/mds.samplescatterplot-9a02b9fb.js +1 -0
  112. package/dist/{mds.survivalplot-366db380.js → mds.survivalplot-055549f4.js} +1 -1
  113. package/dist/{metaboliteIntensity-ddb6e480.js → metaboliteIntensity-fac92f8b.js} +1 -1
  114. package/dist/niceNumLabels-238aabce.js +1 -0
  115. package/dist/{nodrag-2c046d31.js → nodrag-16ad4b03.js} +1 -1
  116. package/dist/{notify-44ebc0df.js → notify-224cccbd.js} +1 -1
  117. package/dist/{numeric-918d4686.js → numeric-b0b17185.js} +1 -1
  118. package/dist/numeric.binary-1f9e93f2.js +1 -0
  119. package/dist/numeric.continuous-ebcd0567.js +1 -0
  120. package/dist/numeric.discrete-7b97044a.js +1 -0
  121. package/dist/numeric.spline-1be88f3d.js +1 -0
  122. package/dist/numeric.toggle-7fa2a770.js +1 -0
  123. package/dist/oncomatrix-351af2a0.js +1 -0
  124. package/dist/{parseData-e66308cd.js → parseData-21fe9822.js} +1 -1
  125. package/dist/partjson.esm-b3f1fc21.js +1 -0
  126. package/dist/{plot.2dvaf-73dbfbd1.js → plot.2dvaf-18a35e4b.js} +1 -1
  127. package/dist/plot.app-30c4b8e5.js +1 -0
  128. package/dist/plot.barplot-7c4865a2.js +1 -0
  129. package/dist/{plot.boxplot-641da058.js → plot.boxplot-fe3046c6.js} +1 -1
  130. package/dist/plot.brainImaging-2ceb6023.js +1 -0
  131. package/dist/plot.disco-6011f87f.js +1 -0
  132. package/dist/{plot.dzi-41ea26e5.js → plot.dzi-6728a7c8.js} +1 -1
  133. package/dist/plot.ssgq-5581dc56.js +1 -0
  134. package/dist/{plot.vaf2cov-80e58833.js → plot.vaf2cov-b2284c64.js} +1 -1
  135. package/dist/{plot.wsi-51cc48ef.js → plot.wsi-9a9d4034.js} +1 -1
  136. package/dist/profileBarchart-0476f1f8.js +1 -0
  137. package/dist/profileHome-32eb9b50.js +1 -0
  138. package/dist/profilePlot-c7e099e8.js +1 -0
  139. package/dist/profilePolar-6b981e63.js +1 -0
  140. package/dist/profileRadar-bca1cc03.js +1 -0
  141. package/dist/profileRadarFacility-bbb1ecd8.js +1 -0
  142. package/dist/profileSummary-b114204f.js +1 -0
  143. package/dist/recover-49e09de0.js +1 -0
  144. package/dist/regression.inputs-a761f40d.js +1 -0
  145. package/dist/regression.inputs.values.table-5929d25a.js +1 -0
  146. package/dist/regression.results-69bc42d0.js +1 -0
  147. package/dist/{renderPvalueTable-895a72c2.js → renderPvalueTable-dc5d15f2.js} +1 -1
  148. package/dist/sampleScatter-2d0ed680.js +1 -0
  149. package/dist/{sampleScatter.rendererThree-5e686004.js → sampleScatter.rendererThree-0b12ac61.js} +2 -2
  150. package/dist/sampleView-484ab133.js +1 -0
  151. package/dist/samplelst-689796e6.js +1 -0
  152. package/dist/{samplematrix-2a1d7d82.js → samplematrix-2b137a05.js} +1 -1
  153. package/dist/scatter-205e013f.js +1 -0
  154. package/dist/{select2Terms-b4fffc50.js → select2Terms-b21e184a.js} +1 -1
  155. package/dist/{selectGenomeWithTklst-acf7e568.js → selectGenomeWithTklst-466995b4.js} +1 -1
  156. package/dist/singleCellCellType-5db730bb.js +1 -0
  157. package/dist/{singleCellGeneExpression-6de17162.js → singleCellGeneExpression-7147a2d0.js} +1 -1
  158. package/dist/singleCellPlot-73b2738f.js +1 -0
  159. package/dist/{singlecell-f76c856a.js → singlecell-24409b72.js} +1 -1
  160. package/dist/singlecell-bca774ed.js +1 -0
  161. package/dist/{snp-9590a1b4.js → snp-37d06246.js} +1 -1
  162. package/dist/snp-a8388ce4.js +1 -0
  163. package/dist/snplocus-7a1ea8c9.js +1 -0
  164. package/dist/{snplst-007a1926.js → snplst-6865d7c7.js} +1 -1
  165. package/dist/{spliceevent.a53ss.diagram-63dfef69.js → spliceevent.a53ss.diagram-e2eab72b.js} +1 -1
  166. package/dist/{spliceevent.exonskip.diagram-76fa9af8.js → spliceevent.exonskip.diagram-4d5df3a1.js} +1 -1
  167. package/dist/spliceevent.exonskip.getdefault-a94aad6e.js +1 -0
  168. package/dist/{spliceevent.noeventdiagram-64a099e0.js → spliceevent.noeventdiagram-ea97b0fb.js} +1 -1
  169. package/dist/{spliceevent.phrase-770c8cac.js → spliceevent.phrase-c5832470.js} +1 -1
  170. package/dist/{stattable-f1189f0f.js → stattable-7c5ecc2f.js} +1 -1
  171. package/dist/{style.gdc-89cfdb0f.js → style.gdc-131f3c77.js} +1 -1
  172. package/dist/summary-5ec455d3.js +1 -0
  173. package/dist/{sunburst-d5379952.js → sunburst-533902a7.js} +1 -1
  174. package/dist/survival-92250664.js +1 -0
  175. package/dist/survival-e16e068f.js +1 -0
  176. package/dist/{svg.download-86850940.js → svg.download-35926549.js} +1 -1
  177. package/dist/{svg.legend-a94b0697.js → svg.legend-8d490df2.js} +1 -1
  178. package/dist/{svgraph-c57b9ae3.js → svgraph-6fac8cbc.js} +1 -1
  179. package/dist/{svmr-cf6f1b27.js → svmr-d07ff695.js} +1 -1
  180. package/dist/table-29d5a973.js +1 -0
  181. package/dist/table-ad744310.js +1 -0
  182. package/dist/termInfo-bf99a37e.js +1 -0
  183. package/dist/{termdb.bins-9faa5170.js → termdb.bins-8b656cc3.js} +1 -1
  184. package/dist/termsetting-33ea66f1.js +1 -0
  185. package/dist/tk-071a7550.js +1 -0
  186. package/dist/{toggleButtons-002aeda1.js → toggleButtons-dbdbad01.js} +1 -1
  187. package/dist/tp.ui-9c2e9fc5.js +1 -0
  188. package/dist/tslib.es6-c3c2d88f.js +1 -0
  189. package/dist/tvs.density-f6128793.js +1 -0
  190. package/dist/{tvs.geneVariant-3a65ad94.js → tvs.geneVariant-ca4bdbb1.js} +1 -1
  191. package/dist/tvs.numeric-0260a825.js +1 -0
  192. package/dist/{tvs.samplelst-1eeb586b.js → tvs.samplelst-cb71b3bf.js} +1 -1
  193. package/dist/{uiUtils-1336bad7.js → uiUtils-f1bd2bcc.js} +1 -1
  194. package/dist/{variantBrowser-f0c812c1.js → variantBrowser-7c540224.js} +1 -1
  195. package/dist/{vcf-c4a23924.js → vcf-5cc55588.js} +1 -1
  196. package/dist/violin-2ba509eb.js +1 -0
  197. package/dist/violin.interactivity-4da6d7a9.js +1 -0
  198. package/dist/{violin.renderer-dafd89fa.js → violin.renderer-ce024265.js} +1 -1
  199. package/dist/{violinRenderer-8215f40d.js → violinRenderer-f7c96a60.js} +1 -1
  200. package/dist/{viridis-ffd14c4d.js → viridis-01ab20c5.js} +1 -1
  201. package/dist/{y-dd197cc9.js → y-67939f83.js} +1 -1
  202. package/dist/{zoom-9c63e74c.js → zoom-25dce8b9.js} +1 -1
  203. package/package.json +6 -4
  204. package/dist/AppHeader-a2a7e518.js +0 -1
  205. package/dist/DEanalysis-a6b50e49.js +0 -1
  206. package/dist/Disco-1c71b7dd.js +0 -1
  207. package/dist/Disco.UI-4c16ee50.js +0 -1
  208. package/dist/FilterRxComp-242f4615.js +0 -1
  209. package/dist/WSIViewer-d90032d7.js +0 -1
  210. package/dist/adSandbox-3528c372.js +0 -1
  211. package/dist/app-07dee349.js +0 -1
  212. package/dist/app-a8c4854a.js +0 -1
  213. package/dist/app-ade9c62a.js +0 -1
  214. package/dist/bam-92483a98.js +0 -1
  215. package/dist/barchart-3e69d094.js +0 -1
  216. package/dist/barchart.events-9b11d97e.js +0 -1
  217. package/dist/block-dcb130fb.js +0 -1
  218. package/dist/block.lazyload-9f031cac.js +0 -1
  219. package/dist/block.legend-b2987cd9.js +0 -1
  220. package/dist/block.mds2-de6e0986.js +0 -1
  221. package/dist/boxplot-1178fffc.js +0 -1
  222. package/dist/brainImaging-98ed7aa2.js +0 -1
  223. package/dist/categorical-26528ce8.js +0 -1
  224. package/dist/condition-b0d74550.js +0 -1
  225. package/dist/controls-0bacec22.js +0 -1
  226. package/dist/controls.config-0ccc9d79.js +0 -1
  227. package/dist/controls.divide-a9fe9466.js +0 -1
  228. package/dist/controls.overlay-fe20d41d.js +0 -1
  229. package/dist/controls.term1-faa2efcf.js +0 -1
  230. package/dist/cuminc-7e2cac2d.js +0 -1
  231. package/dist/dataDownload-ade8d840.js +0 -1
  232. package/dist/databrowser.ui-716f0519.js +0 -1
  233. package/dist/dictionary-3f83ce63.js +0 -1
  234. package/dist/facet-6850cfed.js +0 -1
  235. package/dist/geneExpClustering-7fd3c87e.js +0 -1
  236. package/dist/geneExpression-6462537d.js +0 -1
  237. package/dist/geneORA-7eb818c4.js +0 -1
  238. package/dist/geneVariant-b58e924a.js +0 -1
  239. package/dist/geneset-9f69ad3f.js +0 -1
  240. package/dist/genomeBrowser-1b2b83f7.js +0 -1
  241. package/dist/genomeBrowser.controls-cd8ddeb1.js +0 -1
  242. package/dist/gsea-36376589.js +0 -1
  243. package/dist/hierCluster-f1e30c19.js +0 -1
  244. package/dist/hierCluster.config-da3510b1.js +0 -1
  245. package/dist/hierCluster.renderers-610d8860.js +0 -1
  246. package/dist/imagePlot-7089bdff.js +0 -1
  247. package/dist/launch.adhoc-d229fd55.js +0 -1
  248. package/dist/leftlabel.sample-a919168c.js +0 -1
  249. package/dist/legacyDataset-1cbcb67d.js +0 -1
  250. package/dist/matrix-0614794d.js +0 -1
  251. package/dist/matrix.cells-819d4991.js +0 -1
  252. package/dist/matrix.config-c54ca273.js +0 -1
  253. package/dist/matrix.controls-5eca7822.js +0 -1
  254. package/dist/matrix.groups-4660dd70.js +0 -1
  255. package/dist/matrix.interactivity-23d83183.js +0 -1
  256. package/dist/matrix.legend-2e647224.js +0 -1
  257. package/dist/matrix.renderers-43445f4f.js +0 -1
  258. package/dist/matrix.serieses-972fbe5d.js +0 -1
  259. package/dist/matrix.sort-80d9b788.js +0 -1
  260. package/dist/mds.samplescatterplot-1623e6d0.js +0 -1
  261. package/dist/niceNumLabels-6cfc1508.js +0 -1
  262. package/dist/numeric.binary-80467e8b.js +0 -1
  263. package/dist/numeric.continuous-69a62a15.js +0 -1
  264. package/dist/numeric.discrete-86181905.js +0 -1
  265. package/dist/numeric.spline-1b07fd13.js +0 -1
  266. package/dist/numeric.toggle-37c4bee8.js +0 -1
  267. package/dist/oncomatrix-475271da.js +0 -1
  268. package/dist/plot.app-aa916e0e.js +0 -1
  269. package/dist/plot.barplot-8b440a2b.js +0 -1
  270. package/dist/plot.brainImaging-2f796b0c.js +0 -1
  271. package/dist/plot.disco-43e18d2f.js +0 -1
  272. package/dist/plot.ssgq-e49cb70b.js +0 -1
  273. package/dist/profileBarchart-91463ab6.js +0 -1
  274. package/dist/profileHome-d37a6821.js +0 -1
  275. package/dist/profilePlot-9ca577cb.js +0 -1
  276. package/dist/profilePolar-19c7da5b.js +0 -1
  277. package/dist/profileRadar-8bf094e3.js +0 -1
  278. package/dist/profileRadarFacility-f9fd8971.js +0 -1
  279. package/dist/profileSummary-93999c14.js +0 -1
  280. package/dist/recover-36ada47f.js +0 -1
  281. package/dist/regression.inputs-cb57ece6.js +0 -1
  282. package/dist/regression.inputs.values.table-908bb37a.js +0 -1
  283. package/dist/regression.results-c186a8dc.js +0 -1
  284. package/dist/roundValue-b0d0517c.js +0 -1
  285. package/dist/sampleScatter-9d5b3630.js +0 -1
  286. package/dist/sampleView-2d895023.js +0 -1
  287. package/dist/samplelst-9f8343ff.js +0 -1
  288. package/dist/scatter-b4992f64.js +0 -1
  289. package/dist/singleCellCellType-84a0c2cf.js +0 -1
  290. package/dist/singleCellPlot-2f2b8619.js +0 -1
  291. package/dist/singlecell-90567dde.js +0 -1
  292. package/dist/snp-79ec95ba.js +0 -1
  293. package/dist/snplocus-cb629be1.js +0 -1
  294. package/dist/spliceevent.exonskip.getdefault-31d2950c.js +0 -1
  295. package/dist/summary-b77bef3c.js +0 -1
  296. package/dist/survival-61ab375a.js +0 -1
  297. package/dist/survival-80a0ade9.js +0 -1
  298. package/dist/table-79e3e776.js +0 -1
  299. package/dist/table-eee91e14.js +0 -1
  300. package/dist/termInfo-f851b415.js +0 -1
  301. package/dist/tk-75566002.js +0 -1
  302. package/dist/tp.ui-02911b56.js +0 -1
  303. package/dist/tslib.es6-1f85f553.js +0 -1
  304. package/dist/tvs.density-026fca97.js +0 -1
  305. package/dist/tvs.numeric-3f3d9919.js +0 -1
  306. package/dist/violin-1515c3e6.js +0 -1
  307. package/dist/violin.interactivity-8e2f480d.js +0 -1
@@ -1 +0,0 @@
1
- import{h as t,U as e,I as o,W as a,ag as s,a8 as i,af as r,ah as n}from"./app-a8c4854a.js";import{controlsInit as l}from"./controls-0bacec22.js";import{s as p}from"./legacy-d3-polyfill-bdb2d792.js";import{b as d}from"./axis-747c801e.js";import"./controls.btns-1cb2bfab.js";import"./controls.config-0ccc9d79.js";import"./controls.overlay-fe20d41d.js";import"./roundValue-b0d0517c.js";import"./tslib.es6-1f85f553.js";import"path";import"./FilterRxComp-242f4615.js";import"./table-79e3e776.js";import"./termdb.bins-9faa5170.js";import"./controls.term1-faa2efcf.js";import"./controls.divide-a9fe9466.js";class c{constructor(t){this.type="boxplot"}async init(){const t=this.opts.holder;const e=this.opts.controls?t:t.append("div");const o=e.append("svg").style("margin-right","20px").style("display","inline-block");this.dom={header:this.opts.header,controls:this.opts.controls?null:t.append("div"),div:e,svg:o,yaxis_g:o.append("g"),graph_g:o.append("g")};if(this.dom.header)this.dom.header.html("Boxplot");await this.setControls();h(this);m(this)}async setControls(){if(this.opts.controls){this.opts.controls.on("downloadClick.boxplot",this.download)}else{this.components={controls:await l({app:this.app,id:this.id,holder:this.dom.controls.attr("class","pp-termdb-plot-controls"),inputs:["term1","overlay","divideBy"]})};this.components.controls.on("downloadClick.boxplot",this.download)}}getState(t,e){const o=t.plots.find((t=>t.id===this.id));if(!o){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:o.term,term2:o.term2,settings:{common:o.settings.common,boxplot:o.settings.boxplot}}}}async main(){try{this.config=structuredClone(this.state.config);const t=this.config.term2;if(!t||!t.termtype=="float"){this.dom.div.style("display","none");throw`${t?"numeric ":""}term2 is required for boxplot view`}if(this.dom.header)this.dom.header.html(this.config.term.term.name+" vs "+t.term.name);const e=this.getDataRequestOpts();this.data=await this.app.vocabApi.getNestedChartSeriesData(e);this.app.vocabApi.syncTermData(this.state.config,this.data);const[o,a]=this.processData(this.data);this.dom.div.style("display","block");this.render(o.filter((t=>t!=null)),a)}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}processData(t){t.refs.rows;let e=0;const o=t.refs.cols.map((o=>{const a=t.charts[0].serieses.find((t=>t.seriesId==o));if(!a)return null;if(e<a.max)e=a.max;return{label:o,vvalue:o,value:a.total,boxplot:a.boxplot}}));return[o,e]}}function h(t){t.download=()=>{if(!t.state||!t.state.isVisible)return;const o=t.config.term.term.name+" boxplot";e(t.dom.svg.node(),o,{apply_dom_styles:true})}}function m(t){t.render=function(e,l){t.items=e;t.config.settings.boxplot.yscale_max=l;const c=t.config.settings.common;const h=t.config.settings.boxplot;const m=t.get_max_labelheight(h);const b=4;const f=t.items.length*(h.barwidth+h.barspace)+h.yaxis_width;const g=h.toppad+h.barheight+m+b;t.y_scale=o().domain([h.yscale_max,0]).range([0,h.barheight]);t.dom.svg.transition().attr("width",f).attr("height",g);t.dom.yaxis_g.attr("transform","translate("+(h.yaxis_width-2)+","+h.toppad+")").transition().call(d().scale(t.y_scale).ticks(10,a("d")));s({axis:t.dom.yaxis_g,showline:true,fontsize:h.barwidth*.8,color:"black"});if(t.items[0].lst){const e=new Set;for(const o of t.items){for(const t of o.lst){e.add(t.label)}}if(e.size>10){i(p)}else{i(r)}}let x=h.yaxis_width+h.barspace+h.barwidth/2;t.dom.graph_g.attr("transform","translate("+x+","+(h.toppad+h.barheight)+")").selectAll("*").remove();t.items.forEach(((e,o)=>{if(!e.boxplot)return;const a=t.dom.graph_g.append("g").datum(e).attr("transform","translate("+o*(h.barwidth+h.barspace)+",0)");const s=a.append("text").text(e.label).attr("transform","translate(0,"+b+") rotate(-65)").attr("text-anchor","end").attr("font-size",h.label_fontsize).attr("font-family",n).attr("dominant-baseline","central");let i="";if("w1"in e.boxplot){a.append("line").attr("x1",0).attr("y1",t.y_scale(e.boxplot.w1)-h.barheight).attr("x2",0).attr("y2",t.y_scale(e.boxplot.w2)-h.barheight).attr("stroke-width",2).attr("stroke","black");a.append("rect").attr("x",-h.barwidth/2).attr("y",t.y_scale(e.boxplot.p75)-h.barheight).attr("width",h.barwidth).attr("height",h.barheight-t.y_scale(c.use_logscale?e.boxplot.p75/e.boxplot.p25:e.boxplot.p75-e.boxplot.p25)).attr("fill","#901739").on("mouseover",(o=>{t.app.tip.clear().show(o.clientX,o.clientY).d.append("div").html(`<table class='sja_simpletable'>\n\t <tr>\n\t <td style='padding: 3px; color:#aaa'>${t.config.term.term.name}</td>\n\t <td style='padding: 3px'>${e.label}</td>\n\t </tr>\n\t <tr>\n\t <td style='padding: 3px; color:#aaa'>Mean</td>\n\t <td style='padding: 3px'>${e.boxplot.mean.toPrecision(4)}</td>\n\t </tr>\n\t <tr>\n\t <td style='padding: 3px; color:#aaa'>Median</td>\n\t <td style='padding: 3px'>${e.boxplot.p50.toPrecision(4)}</td>\n\t </tr>\n\t <tr>\n\t <td style='padding: 3px; color:#aaa'>1st to 3rd Quartile</td>\n\t <td style='padding: 3px'>${e.boxplot.p25.toPrecision(4)} to ${e.boxplot.p75.toPrecision(4)}</td>\n\t </tr>\n\t <tr>\n\t <td style='padding: 3px; color:#aaa'>Std. Deviation</td>\n\t <td style='padding: 3px'>${e.boxplot.sd.toPrecision(4)}</td>\n\t </tr>\n\t </table>`)})).on("mouseout",(()=>t.app.tip.hide()));a.append("line").attr("x1",-h.barwidth/2.2).attr("y1",t.y_scale(e.boxplot.w1)-h.barheight).attr("x2",h.barwidth/2.2).attr("y2",t.y_scale(e.boxplot.w1)-h.barheight).attr("stroke-width",2).attr("stroke","black");a.append("line").attr("x1",-h.barwidth/2.2).attr("y1",t.y_scale(e.boxplot.p50)-h.barheight).attr("x2",h.barwidth/2.2).attr("y2",t.y_scale(e.boxplot.p50)-h.barheight).attr("stroke-width",1.5).attr("stroke","white");a.append("line").attr("x1",-h.barwidth/2.2).attr("y1",t.y_scale(e.boxplot.w2)-h.barheight).attr("x2",h.barwidth/2.2).attr("y2",t.y_scale(e.boxplot.w2)-h.barheight).attr("stroke-width",2).attr("stroke","black")}for(const o of e.boxplot.out){a.append("circle").attr("cx",0).attr("cy",t.y_scale(o.value)-h.barheight).attr("r",2).attr("fill","#901739").on("mouseover",(e=>{t.app.tip.clear().show(e.clientX,e.clientY).d.append("div").html(t.config.term2.term.name+" "+o.value.toPrecision(4))})).on("mouseout",(()=>{t.app.tip.hide()}))}if(e.lst){s.on("mouseover",(o=>{t.app.tip.clear().show(o.clientX,o.clientY).d.append("div").html(t.config.term.term.name+": "+e.label+"<br>"+"# patients: "+e.value+"<br>"+i)})).on("mouseout",(()=>{t.app.tip.hide()}))}else{s.on("mouseover",(o=>{t.app.tip.clear().show(o.clientX,o.clientY).d.append("div").html(t.config.term.term.name+": "+e.label+"<br>"+"# patients: "+e.value)})).on("mouseout",(()=>{t.app.tip.hide()}))}}))};t.get_max_labelheight=function(e){let o=0;for(const a of t.items){t.dom.svg.append("text").text(a.label).attr("font-family",n).attr("font-size",e.label_fontsize).each((function(){o=Math.max(o,this.getBBox().width)})).remove()}return o}}const b=t(c);export{b as boxplotInit};
@@ -1 +0,0 @@
1
- import{h as t,P as i,K as a,b as e}from"./app-a8c4854a.js";import{topBarInit as n}from"./controls.btns-1cb2bfab.js";import{configUiInit as s}from"./controls.config-0ccc9d79.js";import"./controls.overlay-fe20d41d.js";import"./roundValue-b0d0517c.js";import"./tslib.es6-1f85f553.js";import"path";import"./FilterRxComp-242f4615.js";import"./table-79e3e776.js";import"./termdb.bins-9faa5170.js";import"./controls.term1-faa2efcf.js";import"./controls.divide-a9fe9466.js";class o{constructor(t){this.opts=t;this.type="brainImaging";this.isOpen=true}async init(){const t=this.opts.holder;const i=t.append("div").style("display","inline-block").style("vertical-align","top");const e=i.append("div");const o=i.append("div");const r=this.getConfigInputsOptions();this.features=await a({topbar:n({app:this.app,id:this.id,downloadHandler:()=>{const i=t.select('div[id="sjpp_brainImaging_holder_div"] img').node();const a="brainImaging";const e=document.createElement("a");document.body.appendChild(e);e.addEventListener("click",(()=>{e.download=a+".png";e.href=i.src;document.body.removeChild(e)}),false);e.click()},callback:()=>this.toggleVisibility(this.isOpen),isOpen:()=>this.isOpen,holder:e}),config:s({app:this.app,id:this.id,holder:o,isOpen:()=>this.isOpen,inputs:r})})}getConfigInputsOptions(){const t=[];const i=[{label:"Sagittal",type:"number",chartType:"brainImaging",settingsKey:"brainImageL",title:"Sagittal",min:0,max:192},{label:"Coronal",type:"number",chartType:"brainImaging",settingsKey:"brainImageF",title:"Coronal",min:0,max:228},{label:"Axial",type:"number",chartType:"brainImaging",settingsKey:"brainImageT",title:"Axial",min:0,max:192}];t.push(...i);return t}async main(){const t=this.state.settings;this.isOpen=t.brainImaging.isOpen;const i=this.opts.holder;i.select('div[id="sjpp_brainImaging_holder_div"]').remove();const a=i.append("div").attr("id","sjpp_brainImaging_holder_div").style("display","inline-block");const n=this.app.getState();for(const t in this.features){this.features[t].update({state:this.state,appState:n})}const s={genome:n.genome,dslabel:n.dslabel,NIdata:{dataType:n.args.queryKey,sample:n.args.sampleName+".nii"},l:t.brainImaging.brainImageL,f:t.brainImaging.brainImageF,t:t.brainImaging.brainImageT};const o=await e("mds3",{body:s});if(o.error)throw o.error;const r=await o.text();const p=new Image;p.onload=()=>{a.append("img").attr("width",p.width*2).attr("height",p.height*2).attr("src",r)};p.src=r}getState(t){return t.plots.find((t=>t.id===this.id))}toggleVisibility(t){this.app.dispatch({type:"plot_edit",id:this.opts.id,config:{settings:{brainImaging:{isOpen:!t}}}})}}const r=t(o);const p=r;async function d(t){const a={brainImaging:{brainImageL:76,brainImageF:116,brainImageT:80}};const e={chartType:"brainImaging",settings:a};return i(e,t)}export{r as brainImaging,p as componentInit,d as getPlotConfig};
@@ -1 +0,0 @@
1
- import{_ as e}from"./tslib.es6-1f85f553.js";import{GroupSettingMethods as t}from"./groupsetting-20ffef77.js";import{m as r,s as i}from"./roundValue-b0d0517c.js";import{P as o}from"./app-a8c4854a.js";import"path";function s(i){return e(this,void 0,void 0,(function*(){n(i);return{getPillName(e){return r(i,e)},getPillStatus(){var e;if(((e=i.usecase)===null||e===void 0?void 0:e.target)=="regression"){return i.q.mode=="binary"?{text:"binary"}:{text:"categorical"}}return i.validateGroupsetting()},validateQ(e){var t;const r=e.term;const o=e.q;if(o.type=="values"){if(!r.values)i.error="no term.values defined";if(o.mode=="binary"){if(Object.keys(r.values).length!=2)i.error="term.values must have exactly two keys";if(e.sampleCounts){for(const t in r.values){if(!e.sampleCounts.find((e=>e.key===t)))i.error=`there are no samples for the required binary value=${t}`}}}}else if(o.type=="predefined-groupset"||o.type=="custom-groupset"){let i;if(o.type=="predefined-groupset"){if(!r.groupsetting)throw"no term.groupsetting";if(!((t=r.groupsetting.lst)===null||t===void 0?void 0:t.length))throw"term.groupsetting.lst is empty";i=r.groupsetting.lst[o.predefined_groupset_idx];if(!i)throw"no groupset entry for groupsetting.lst[predefined_groupset_idx]"}else{i=o.customset;if(!i)throw"invalid q.customset"}if(i.groups.some((e=>e.name===undefined)))throw"every group in groupset must have .name defined";if(o.mode=="binary"){if(i.groups.length!=2)throw"there must be exactly two groups";if(e.sampleCounts){for(const t of i.groups){if(!e.sampleCounts.find((e=>e.label===t.name)))throw`there are no samples for the required binary value=${t.name}`}}}}},showEditMenu(){return e(this,void 0,void 0,(function*(){yield new t(i).main()}))},postMain(){var t,r;return e(this,void 0,void 0,(function*(){const e=((r=(t=i.opts).getBodyParams)===null||r===void 0?void 0:r.call(t))||{};const o=yield i.vocabApi.getCategories(i.term,i.filter,e);i.category2samplecount=o.lst}))}}}))}function n(e){e.validateGroupsetting=function(){var t,r;if(e.q.type=="values")return{text:""};const i=e.q.name||e.q.reuseId;if(i)return{text:i};if(e.q.type=="predefined-groupset"){if(!Number.isInteger(e.q.predefined_groupset_idx))return{text:"q.predefined_groupset_idx is not an integer",bgcolor:"red"};if(!((r=(t=e.term.groupsetting)===null||t===void 0?void 0:t.lst)===null||r===void 0?void 0:r.length))return{text:"term.groupsetting is empty",bgcolor:"red"};const i=e.term.groupsetting.lst[e.q.predefined_groupset_idx];if(!i)return{text:"term.groupsetting.lst entry is missing",bgcolor:"red"};return{text:i.name}}if(e.q.type=="custom-groupset"){if(!e.q.customset)return{text:"q.customset is missing",bgcolor:"red"};const t=e.q.customset.groups.length;return{text:"Divided into "+t+" groups"}}return{text:"Unknown setting for groupsetting",bgcolor:"red"}}}function u(e,t,r=null){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(r){r.isAtomic=true;o(e.q,r)}i(e.q,e.term)}export{u as fillTW,s as getHandler,n as setCategoryMethods};
@@ -1 +0,0 @@
1
- import{_ as e}from"./tslib.es6-1f85f553.js";import{m as t,s as r}from"./roundValue-b0d0517c.js";import{m as a}from"./radiobutton-09bff425.js";import{t as n,y as i,P as o}from"./app-a8c4854a.js";import"path";const s=[1,2,3,4,5];function l(e){return{getPillName(r){return t(e,r)},getPillStatus(){return d(e)},showEditMenu(t){if(e.q.mode=="discrete"){return p(e,t)}if(e.q.mode=="binary"||e.q.mode=="cuminc"||e.q.mode=="cox"){return u(e,t)}console.error("invalid q.mode:",e.q.mode);throw"invalid q.mode"}}}function d(e){var t,r,a,i;const o=((t=e.q)===null||t===void 0?void 0:t.name)||((r=e.q)===null||r===void 0?void 0:r.reuseId);if(o)return{text:o};if(e.q.mode=="discrete"){if((a=e.q.breaks)===null||a===void 0?void 0:a.length){return{text:e.q.breaks.length+1+" groups"}}else{if(e.q.bar_by_grade){if(e.q.value_by_max_grade)return{text:"Max. Grade"};if(e.q.value_by_most_recent)return{text:"Most Recent Grade"};if(e.q.value_by_computable_grade)return{text:"Any Grade"};return{text:"Error: unknown grade setting",bgcolor:"red"}}if(e.q.bar_by_children)return{text:"Sub-condition"}}}if(e.q.mode=="binary"){return{text:((i=e.usecase)===null||i===void 0?void 0:i.target)=="regression"?e.data.q.groups.find((t=>t.name!=e.data.refGrp)).name:"binary"}}if(e.q.mode=="cuminc"||e.q.mode=="cox"){if(!e.q.breaks||e.q.breaks.length==0)n("Missing q.breaks");return{text:`Grades ${e.q.breaks[0]}-5`}}return{}}function p(t,r){var a;return e(this,void 0,void 0,(function*(){const e=r.append("div").style("margin","10px 0px 10px 5px").style("border-left","solid 1px #ededed");e.append("div").style("display","inline-block").style("margin","0px 0px 5px 5px").style("color","rgb(136, 136, 136)").text("Grade type:");const o=e.append("select").style("display","inline").style("margin","0px 10px").on("change",(()=>{const e=o.property("selectedIndex");t.q.bar_by_grade=e!=3;t.q.bar_by_children=e==3;t.q.value_by_max_grade=e==0;t.q.value_by_most_recent=e==1;t.q.value_by_computable_grade=e==2||e==3;t.dom.tip.hide();t.runCallback()}));o.append("option").text("Max grade per patient");o.append("option").text("Most recent grade per patient");o.append("option").text("Any grade per patient");if(t.term.subconditions){o.append("option").text("Sub-conditions")}o.property("selectedIndex",t.q.bar_by_children?3:t.q.value_by_computable_grade?2:t.q.value_by_most_recent?1:0);if(t.q.bar_by_children){return}const s=r.append("div").style("margin","20px 0px 10px 5px").style("border-left","solid 1px #ededed");s.append("div").text("Divide grades into groups (optional):").style("margin","0px 0px 10px 5px").style("color","rgb(136, 136, 136)");const l=s.append("div").style("display","flex").style("align-items","start").style("margin-left","10px").style("width","100%");const d=l.append("div").style("margin-right","20px");const p=l.append("div").style("display","grid").style("grid-template-columns","auto auto").style("column-gap","20px").style("align-items","center").style("margin-right","5px");d.append("div").style("margin-bottom","5px").style("color","rgb(136, 136, 136)").text("Cutoff grades");const u=d.append("textarea").style("width","100px").style("height","70px").on("keyup",m);d.append("div").style("font-size",".6em").style("margin-left","1px").style("color","#858585").html("Enter numeric values </br>seperated by ENTER");if((a=t.q.breaks)===null||a===void 0?void 0:a.length){u.property("value",t.q.breaks.join("\n"))}m();function m(){p.selectAll("*").remove();const e=b();if(!e.length){delete t.q.breaks;delete t.q.groups;return}if(!t.term.values)n(`Missing term values`);const r=Object.keys(t.term.values).filter((e=>{var r;return!((r=t.term.values)===null||r===void 0?void 0:r[e].uncomputable)})).map(Number).sort(((e,t)=>e-t));const a=c(r,e);p.append("div").style("margin-bottom","3px").style("color","rgb(136, 136, 136)").text("Range");p.append("div").style("margin-bottom","3px").style("color","rgb(136, 136, 136)").text("Label");for(const[e,t]of a.entries()){p.append("div").text(t.name.replace(/Grades* /,""));p.append("div").append("input").attr("type","text").property("value",t.name).style("margin","2px 0px").on("change",(function(){a[e].name=this.value}))}t.q.breaks=e;t.q.groups=a}function b(){const e=u.property("value").trim();if(!e)return[];const t=[...new Set(e.split("\n"))];const a=[];for(const e of t){const t=Number(e);if(!Number.isInteger(t)){i(r,"cutoff grade must be an integer value");return[]}if(t<1||t>5){i(r,`cutoff grade must be within grades 1-5`);return[]}a.push(t)}if(!a.length)return[];return a.sort(((e,t)=>e-t))}r.append("button").text("Apply").style("margin","10px").on("click",(e=>{e.target.disabled=true;e.target.innerHTML="Loading...";t.runCallback()}))}))}function u(e,t){var r;const i=t.append("div").style("margin","10px").style("display","grid").style("grid-template-columns","auto auto").style("gap","20px");i.append("div").text("Grade cutoff").style("opacity",.4);const o=i.append("div");const l=o.append("select").on("change",u);for(const t of s){l.append("option").text((r=e.term.values)===null||r===void 0?void 0:r[t].label)}l.property("selectedIndex",e.q.breaks[0]-1);i.append("div").text(e.q.mode=="binary"?"Group 1":"Censored").style("opacity",.4);const d=i.append("div").style("opacity",.4);i.append("div").text(e.q.mode=="binary"?"Group 2":"Event").style("opacity",.4);const p=i.append("div").style("opacity",.4);u();function u(){var t,r;const a=l.property("selectedIndex")+1;d.selectAll("*").remove();p.selectAll("*").remove();const n=Object.keys(e.term.values).map(Number).sort(((e,t)=>e-t));for(const i of n){if(i<a){d.append("div").text((t=e.term.values)===null||t===void 0?void 0:t[i].label)}else{p.append("div").text((r=e.term.values)===null||r===void 0?void 0:r[i].label)}}}const m=e.vocabApi.termdbConfig.timeUnit;let b;if(e.q.mode=="cox"){b=e.q.timeScale;i.append("div").text("Time axis").style("opacity",.4);const t=[{label:m.charAt(0).toUpperCase()+m.slice(1),value:"time"},{label:"Age",value:"age"}];if(e.q.timeScale=="age"){t[1].checked=true}else{t[0].checked=true}a({holder:i.append("div"),options:t,styles:{margin:""},callback:e=>b=e})}t.append("button").text("Apply").style("margin","10px").on("click",(t=>{if(!e.q.breaks||e.q.breaks.length==0)n("Missing q.breaks");const r=l.property("selectedIndex")+1;e.q.breaks[0]=r;if(e.q.mode=="binary"){const t=Object.keys(e.term.values).map(Number).sort(((e,t)=>e-t));e.q.groups=c(t,e.q.breaks);e.refGrp=e.q.groups[0].name}if(e.q.mode=="cox")e.q.timeScale=b;t.target.disabled=true;t.target.innerHTML="Loading...";e.runCallback()}))}function c(e,t){e.sort(((e,t)=>e-t));const r=[];let a={values:[]};let n;for(const i of e){if(t.includes(i)){n=i;const e=Math.max(...a.values);if(!r.length){if(a.values.length==1){if(a.values[0]!==0)throw"unexpected group value";a.name="Grade 0"}else{if(a.values.length==2&&a.values.includes(-1)&&a.values.includes(0)){a.name="Not tested/Grade 0"}else{a.name=a.values.includes(-1)?`Not tested/Grade 0 - Grade ${e}`:`Grades 0-${e}`}}}else{a.name=a.values.length==1?`Grade ${a.values[0]}`:`${a.name}-${e}`}r.push(a);a={name:`Grade ${n}`,values:[i]}}else{a.values.push(i)}}a.name=`Grades ${n}-5`;r.push(a);return r}function m(e,t,a){var n,i;r(e.q,e.term);if(a){o(e.q,a)}if(!Object.keys(e.q).includes("mode"))e.q.mode="discrete";if(e.q.value_by_max_grade||e.q.value_by_most_recent||e.q.value_by_computable_grade);else{e.q.value_by_max_grade=true}if(e.q.bar_by_grade||e.q.bar_by_children);else{e.q.bar_by_grade=true}if(e.q.mode=="binary"||e.q.mode=="cox"||e.q.mode=="cuminc"){const t=e.q.mode=="binary"?1:3;if(!((n=e.q.breaks)===null||n===void 0?void 0:n.length))e.q.breaks=[t];if(e.q.breaks.length!=1||![1,2,3,4,5].includes(e.q.breaks[0]))throw"invalid tw.q.breaks"}if((i=e.q.breaks)===null||i===void 0?void 0:i.length){if(!e.term.values)throw"missing term.values";if(e.q.mode=="discrete"||e.q.mode=="binary"){const t=Object.keys(e.term.values).filter((t=>{var r;return e.q.mode=="discrete"?!((r=e.term.values)===null||r===void 0?void 0:r[t].uncomputable):t})).map(Number).sort(((e,t)=>e-t));e.q.groups=c(t,e.q.breaks)}}if(e.q.mode=="cox"){if(!e.q.timeScale)e.q.timeScale="time";if(!["age","time"].includes(e.q.timeScale))throw"invalid q.timeScale"}}export{m as fillTW,l as getHandler};
@@ -1 +0,0 @@
1
- import{h as t,K as i}from"./app-a8c4854a.js";import{topBarInit as s}from"./controls.btns-1cb2bfab.js";import{configUiInit as o}from"./controls.config-0ccc9d79.js";import"./controls.overlay-fe20d41d.js";import"./roundValue-b0d0517c.js";import"./tslib.es6-1f85f553.js";import"path";import"./FilterRxComp-242f4615.js";import"./table-79e3e776.js";import"./termdb.bins-9faa5170.js";import"./controls.term1-faa2efcf.js";import"./controls.divide-a9fe9466.js";const e="#fdfaf4";class n{constructor(t){this.opts=t;this.type="plotControls";this.customEvents=["downloadClick","infoClick","helpClick"];this.isOpen=false;a(this);r(this)}async init(){try{this.setDom();this.features=await i({topbar:s({app:this.app,id:this.id,holder:this.dom.topbar,callback:this.toggleVisibility,isOpen:()=>this.isOpen,downloadHandler:()=>this.bus.emit("downloadClick"),infoHandler:t=>this.app.dispatch({type:"plot_edit",id:this.opts.id,config:{settings:{termInfo:{isVisible:t}}}}),helpHandler:()=>this.bus.emit("helpClick")}),config:o({app:this.app,id:this.id,holder:this.dom.config_div,isOpen:()=>this.isOpen,tip:this.app.tip,inputs:this.opts.inputs})})}catch(t){throw t}}setDom(){const t=this.opts.holder.append("div");const i=this.opts.holder.append("div");this.dom={holder:this.opts.holder.style("vertical-align","top").style("transition","0.5s"),topbar:t,config_div:i}}getState(t){const i=t.plots.find((t=>t.id===this.id));if(!i){throw`No plot with id='${this.id}' found.`}return{genome:t.genome,dslabel:t.dslabel,activeCohort:t.activeCohort,termfilter:t.termfilter,config:i}}main(t=undefined){if(!this.state)return;if(typeof t=="boolean")this.isOpen=t;else{const t=this.state.config.settings.controls;if(t&&"isOpen"in t)this.isOpen=t.isOpen}this.render();const i=this.app.getState();for(const t in this.features){this.features[t].update({state:this.state,appState:i})}}}const p=t(n);function r(t){t.render=function(){t.dom.holder.style("background",t.isOpen?e:"")}}function a(t){t.toggleVisibility=()=>{const i=t.state.config.settings.controls;if(i&&"isOpen"in i){t.app.dispatch({type:"plot_edit",id:t.id,config:{settings:{controls:{isOpen:!i.isOpen}}},_scope_:"none"})}else{t.main(!t.isOpen)}}}export{p as controlsInit};
@@ -1 +0,0 @@
1
- import{d as t,h as e,K as s,r as i}from"./app-a8c4854a.js";import{overlayInit as n}from"./controls.overlay-fe20d41d.js";import{term1uiInit as l}from"./controls.term1-faa2efcf.js";import{divideInit as o}from"./controls.divide-a9fe9466.js";import{h as a}from"./roundValue-b0d0517c.js";import"./FilterRxComp-242f4615.js";import"./table-79e3e776.js";import"./tslib.es6-1f85f553.js";import"./termdb.bins-9faa5170.js";import"path";function p(e){const s=e.holder.selectAll("div").data(e.options,(t=>t.value)).style("display","block");s.exit().each((function(e){t(this).on("input",null).on("click",null).remove()}));const i=s.enter().append("div").attr("title",(t=>t.title)).style("display","block").style("padding",e.styles&&"padding"in e.styles?e.styles.padding:"5px").append("label");if(e.styles){for(const t in e.styles){i.style(t,e.styles[t])}}const n=i.append("input").attr("type","radio").attr("name",e.name).attr("value",(t=>t.value)).style("vertical-align","top").style("margin-top","2px").style("margin-right",0).property("checked",e.isCheckedFxn).on("mouseup",e.listeners.input).on("keyup",e.listeners.input);i.append("span").style("vertical-align","top").html((t=>"&nbsp;"+t.label)).on("mouseup",e.listeners.input).on("keyup",e.listeners.input);function l(t){return t.value==o.currValue}const o={main(t){o.currValue=t;n.property("checked",l)},dom:{divs:e.holder.selectAll("div"),labels:e.holder.selectAll("label").select("span"),inputs:i.selectAll("input")}};return o}let r=0;class d{constructor(t){this.type="controlsConfig";this.app=t.app;this.id=t.id;this.instanceNum=r++;u(this)}async init(){try{const t=this.app.dispatch;const e=this.setDom();const i=this.opts.debug;this.inputs={};const n={};for(const e of this.opts.inputs){if(typeof e=="object"){const s=e;if(s.type in K){this.inputs[s.settingsKey||s.configKey]=await K[s.type](Object.assign({},s,{holder:this.dom.table.append("tr"),dispatch:t,id:this.id,instanceNum:this.instanceNum,debug:this.opts.debug,parent:this}))}else if(s.type in j){n[s.type]=await j[s.type]({app:this.app,holder:this.dom.table.append("tr"),id:this.id,usecase:s.usecase,defaultQ4fillTW:s.defaultQ4fillTW,numericEditMenuVersion:s.numericEditMenuVersion,debug:this.opts.debug})}}else if(e in K){this.inputs[e]=await K[e]({holder:this.dom.table.append("tr"),dispatch:t,id:this.id,instanceNum:this.instanceNum,debug:this.opts.debug,parent:this})}else if(e in j){n[e]=await j[e]({app:this.app,holder:this.dom.table.append("tr"),id:this.id,debug:this.opts.debug})}else{throw`unsupported opts.inputs[] entry of '${e}' for controlsInit()`}}this.components=await s(n)}catch(t){throw t}}setDom(){this.dom={holder:this.opts.holder.style("max-width","50px").style("height",0).style("vertical-align","top").style("transition","0.2s ease-in-out").style("overflow","hidden").style("visibility","hidden").style("transition","0.2s")};this.dom.table=this.dom.holder.append("table").attr("cellpadding",0).attr("cellspacing",0);return this.dom.table}getState(t){const e=t.plots.find((t=>t.id===this.id));return{genome:t.genome,dslabel:t.dslabel,activeCohort:t.activeCohort,termfilter:t.termfilter,config:e,isOpen:this.opts.isOpen()}}main(){const t=this.state.config;const e=this.opts.isOpen();this.render(e);for(const e in this.inputs){const s=this.inputs[e];s.main(s.usestate?this.state:t)}}render(t){this.dom.holder.style("visibility",t?"visible":"hidden").style("max-width",t?"660px":"50px").style("height",t?"":0);this.dom.table.selectAll("tr").filter(this.rowIsVisible).selectAll("td").style("border-top","2px solid #FFECDD").style("padding","5px 10px")}}const c=e(d);function u(t){t.rowIsVisible=function(){return this.style.display!="none"}}function y(t){const e={dom:{row:t.holder.style("display","table-row"),labelTd:t.holder.append("td").html(t.label).attr("class","sja-termdb-config-row-label").attr("title",t.title),inputs:{}},values:{}};if(!t.inputs)t.inputs=[{min:t.min,max:t.max,step:t.step,width:t.width,settingsKey:t.settingsKey}];const s=t.debounceInterval||("debounceInterval"in t.parent?.app.opts?t.parent?.app.opts.debounceInterval:100);for(const n of t.inputs){let l;function o(t=false){if(l)clearTimeout(l);if(!t)l=setTimeout(a,s)}function a(){let s=Number(e.dom.inputs[n.settingsKey].property("value"));if(n.max&&n.max<s)s=n.max;if(n.min&&n.min>s)s=n.min;if(t.callback)t.callback(s);else{t.dispatch({type:"plot_edit",id:t.id,config:{settings:{[t.chartType]:{[n.settingsKey]:t.processInput?t.processInput(s):s}}}})}}const p=t.holder.append("td").style("text-align",t.align||"").attr("colspan",t.colspan||"");if(!n.settingsKey){p.style("color","#999").style("cursor","default").html(n.label)}else{e.dom.inputs[n.settingsKey]=p.append("input").attr("type","number").attr("min","min"in n?n.min:null).attr("max","max"in n?n.max:null).attr("step",n.step||t.step||null).style("width",(n.width||t.width||100)+"px").on("keyup",(s=>{const i=e.values[t.settingsKey]!==Number(e.dom.inputs[n.settingsKey].property("value"));o(s.key!=="Enter"&&i)})).on("change",(t=>{o(false)}))}}const i={main(s){const i=t.getDisplayStyle?.(s)||"table-row";t.holder.style("display",i);for(const i in e.dom.inputs){const n=s.settings[t.chartType][i];e.dom.inputs[i].property("value",n);e.values[i]=n}}};if(t.debug)i.Inner=e;return Object.freeze(i)}function h(t){const e={dom:{row:t.holder.style("display","table-row"),labelTd:t.holder.append("td").html(t.label).attr("class","sja-termdb-config-row-label").attr("title",t.title),inputTd:t.holder.append("td")}};const s={};e.dom.input=e.dom.inputTd.append("input").attr("type","text").style("width",(t.width||100)+"px").on("change",(()=>{const i=e.dom.input.property("value");const n=Number(i);if(isNaN(n))throw`non-numeric value for ${t.settingsKey}='${i}'`;s[n]=i;t.dispatch({type:"plot_edit",id:t.id,config:{settings:{[t.chartType]:{[t.settingsKey]:n}}}})}));const i={main(i){const n=i.settings[t.chartType][t.settingsKey];const l=typeof n=="number"?n:Number(n);if(typeof n!="number")s[l]=n;e.dom.input.property("value",n in s?s[l]:n)}};if(t.debug)i.Inner=e;return Object.freeze(i)}function m(t){const e={dom:{row:t.holder.style("display","table-row"),labelTd:t.holder.append("td").html(t.label).attr("class","sja-termdb-config-row-label").attr("title",t.title),inputTd:t.holder.append("td")}};e.dom.input=e.dom.inputTd.append("input").attr("type","text").attr("placeholder",t.placeholder).style("width",(t.width||100)+"px").on("change",(()=>{const s=e.dom.input.property("value");t.dispatch({type:"plot_edit",id:t.id,config:{settings:{[t.chartType]:{[t.settingsKey]:t.processInput?t.processInput(s):s}}}})}));const s={main(s){e.dom.input.property("value",s.settings[t.chartType][t.settingsKey])}};if(t.debug)s.Inner=e;return Object.freeze(s)}function b(t){const e={dom:{row:t.holder.style("display","table-row").attr("title",t.title),labelTd:t.holder.append("td").html(t.label).attr("class","sja-termdb-config-row-label"),inputTd:t.holder.append("td").attr("colspan",t.colspan||"").style("text-align",t.align||"")}};e.dom.input=e.dom.inputTd.append("input").attr("type","color").on("change",(()=>{const s=e.dom.input.property("value");t.dispatch({type:"plot_edit",id:t.id,config:{settings:{[t.chartType]:{[t.settingsKey]:t.processInput?t.processInput(s):s}}}})}));const s={main(s){const n=s.settings[t.chartType][t.settingsKey];e.dom.input.property("value",i(n).formatHex());t.holder.style("display",t.getDisplayStyle?.(s)||"table-row")}};if(t.debug)s.Inner=e;return Object.freeze(s)}function g(t){const e={dom:{row:t.holder,labelTdb:t.holder.append("td").html(t.label).attr("title",t.title).attr("class","sja-termdb-config-row-label")},inputs:{}};const s=t.inputs?t.inputs:[{settingsKey:t.settingsKey,options:t.options}];if(!("instanceNum"in t))t.instanceNum=`sjpp-${Math.random().toString().slice(-7)}-${Date.now()}`;const i=t.styles||{};for(const n of s){e.inputs[n.settingsKey]=p({name:`pp-control-${n.settingsKey}-${t.instanceNum}`,holder:t.holder.append("td").attr("colspan",t.colspan||"").style("text-align",t.align||""),options:n.options,getDisplayStyle:()=>"block",styles:i,listeners:{input(e,s){if(e.key&&e.key!=="Enter")return;if(t.callback){t.callback(s.value)}else{t.dispatch({type:"plot_edit",id:t.id,config:{settings:{[t.chartType]:{[n.settingsKey]:s.value}}}})}}}})}const n={main(s){const i=t.getDisplayStyle?.(s)||"table-row";e.dom.row.style("display",i);if(i=="none")return;for(const i in e.inputs){const n=e.inputs[i];n.main(s.settings[t.chartType][i]);n.dom.divs.style("display",(e=>e.getDisplayStyle?e.getDisplayStyle(s):t.labelDisplay||"inline-block"));if(t.setRadioLabel)n.dom.labels.html(t.setRadioLabel)}}};if(t.debug)n.Inner=e;return Object.freeze(n)}function f(t){const e={dom:{row:t.holder.style("display","table-row"),labelTd:t.holder.append("td").html(t.label).attr("class","sja-termdb-config-row-label"),inputTd:t.holder.append("td")}};e.dom.select=e.dom.inputTd.append("select").property("disabled",t.disabled).on("change",(()=>{const s=e.dom.select.property("value");if(t.callback)t.callback(s);else t.dispatch({type:"plot_edit",id:t.id,config:{settings:{[t.chartType]:{[t.settingsKey]:s}}}})}));e.dom.select.style("max-width","300px");e.dom.select.selectAll("option").data(t.options).enter().append("option").property("disabled",(t=>t.disabled)).attr("value",(t=>t.value)).attr("selected",(t=>t.selected)).html((t=>"&nbsp;"+t.label+"&nbsp;"));const s={main(s){t.holder.style("display",t.getDisplayStyle?.(s)||"table-row");e.dom.select.property("value",s.settings[t.chartType][t.settingsKey])}};if(t.debug)s.Inner=e;return Object.freeze(s)}function v(t){const e={dom:{row:t.holder.style("display","table-row").attr("title",t.title),labelTdb:t.holder.append("td").html(t.label).attr("class","sja-termdb-config-row-label"),inputTd:t.holder.append("td").attr("colspan",t.colspan||"").style("text-align",t.align||"")}};const s=e.dom.inputTd.append("label");e.dom.input=s.append("input").attr("type","checkbox").on("change",(()=>{const s=e.dom.input.property("checked");if(t.callback)t.callback(s);t.dispatch({type:"plot_edit",id:t.id,config:{settings:{[t.chartType]:{[t.settingsKey]:t.processInput?t.processInput(s):s}}}})}));s.append("span").html("&nbsp;"+t.boxLabel);const i={main(s){const i=s.settings[t.chartType][t.settingsKey];e.dom.input.property("checked",t.processInput?t.processInput(i):i);t.holder.style("display",t.getDisplayStyle?.(s)||"table-row")}};if(t.debug)i.Inner=e;return Object.freeze(i)}function w(e){const s={dom:{row:e.holder.style("display","table-row").attr("title",e.title),labelTdb:e.holder.append("td").html(e.label).attr("class","sja-termdb-config-row-label"),inputTd:e.holder.append("td").attr("colspan",e.colspan||"").style("padding","5px").style("text-align",e.align||"")}};s.dom.labels=s.dom.inputTd.selectAll("label").data(e.options).enter().append("label").style("margin-right","8px").each((function(i){const n=t(this);s.dom.input=n.append("input").attr("type","checkbox").attr("value",(t=>t.value)).on("change",(()=>{const t=[];s.dom.labels.selectAll("input").each((function(e){if(this.checked)t.push(e.value)}));e.dispatch({type:"plot_edit",id:e.id,config:{settings:{[e.chartType]:{[e.settingsKey]:t}}}})}));n.append("span").html(i.label)}));s.dom.inputs=s.dom.labels.selectAll("input");const i={main(t){const i=t.settings[e.chartType][e.settingsKey];s.dom.inputs.property("checked",(t=>i.includes(t.value)));s.dom.labels.style("display",(e=>e.getDisplayStyle?.(t)||""));e.holder.style("display",e.getDisplayStyle?.(t)||"table-row")}};if(e.debug)i.Inner=s;return Object.freeze(i)}function T(t){const e={dom:{row:t.holder.style("display","table-row"),labelTd:t.holder.append("td").html(t.label).attr("class","sja-termdb-config-row-label").attr("title",t.title).style("vertical-align","top"),inputTd:t.holder.append("td")}};e.api=t.init(e);if(t.debug)e.api.Inner=e;return Object.freeze(e.api)}async function x(e){const s={dom:{row:e.holder.style("display","table-row"),labelTd:e.holder.append("td").html(e.label).attr("class","sja-termdb-config-row-label").attr("title",e.title),inputTd:e.holder.append("td")}};const i=await a({menuOptions:e.menuOptions||"*",numericEditMenuVersion:e.numericEditMenuVersion,vocabApi:e.vocabApi,vocab:e.state?.vocab,activeCohort:e.state?.activeCohort,holder:s.dom.inputTd.append("div"),debug:e.debug,usecase:e.usecase,getBodyParams:e.getBodyParams,callback:async s=>{const n=t(e.holder.node().closest("div"));n.style("display","none");if(e.parent.dom.loadingDiv&&e.parent.dom.svg){e.parent.dom.loadingDiv.selectAll("*").remove();e.parent.dom.loadingDiv.html("").style("display","").style("position","relative").style("left","45%");e.parent.dom.loadingDiv.html("Processing data ...");e.parent.dom.svg.style("opacity",.1).style("pointer-events","none")}if(s&&!s.q)throw"data.q{} missing from pill callback";if(e.processInput)await e.processInput(s);await i.main(s?s:{term:null,q:null});const l=!(s&&e.parent.chartType=="hierCluster"&&e.configKey=="divideBy")?{[e.configKey]:s}:Object.assign({[e.configKey]:s},{settings:{hierCluster:{yDendrogramHeight:0,clusterSamples:false}}});if(e.processConfig)e.processConfig(l);e.dispatch({type:"plot_edit",id:e.id,config:l})}});const n={usestate:true,main(t){const s=e.getDisplayStyle?.(t)||"table-row";e.holder.style("display",s);const{config:n,activeCohort:l,termfilter:o}=JSON.parse(JSON.stringify(t));const a=t[e.configKey]||n&&n[e.configKey]||{};const p={term:a.term||null,q:a.q,activeCohort:l,filter:o&&o.filter};if("$id"in a)p.$id=a.$id;i.main(p)}};if(e.debug)n.Inner=s;return Object.freeze(n)}const K={number:y,math:h,text:m,color:b,radio:g,dropdown:f,checkbox:v,multiCheckbox:w,custom:T,term:x};const j={term1:l,overlay:n,divideBy:o};export{c as configUiInit,K as initByInput};
@@ -1 +0,0 @@
1
- import{h as t,M as e}from"./app-a8c4854a.js";import{T as i,h as s,b as r}from"./roundValue-b0d0517c.js";import{g as o}from"./FilterRxComp-242f4615.js";import"./tslib.es6-1f85f553.js";import"path";import"./table-79e3e776.js";import"./termdb.bins-9faa5170.js";class l{constructor(t){this.type="divideByInput";this.dom={tr:t.holder};d(this);this.initUI();this.usedTerms=[]}validateOpts(t){if(!("id"in t))throw"opts.id missing";if(!t.holder)throw"opts.holder missing"}initPill(){if(!this.opts.defaultQ4fillTW)this.opts.defaultQ4fillTW={};this.opts.defaultQ4fillTW[i.GENE_VARIANT]={type:"predefined-groupset"};this.opts.defaultQ4fillTW[i.GENE_EXPRESSION]={mode:"discrete"};this.pill=s({vocabApi:this.app.vocabApi,vocab:this.state.vocab,usecase:this.opts.usecase,activeCohort:this.state.activeCohort,holder:this.dom.pilldiv,use_bins_less:true,debug:this.opts.debug,menuOptions:"all",defaultQ4fillTW:this.opts.defaultQ4fillTW,geneVariantEditMenuOnlyGrp:true,getBodyParams:this.opts.getBodyParams,callback:t=>{this.app.dispatch({type:"plot_edit",id:this.opts.id,config:{term0:t}})}})}getState(t){const e={vocab:t.vocab,activeCohort:t.activeCohort,termfilter:t.termfilter,config:t.plots.find((t=>t.id===this.id))};if(t.termfilter&&t.termfilter.filter){e.filter=o(t.termfilter.filter)}return e}main(){this.dom.tip.hide();this.mayRegisterTerm(this.state.config.term0);this.updateUI()}mayRegisterTerm(t){if(!t||!t.term)return;if(t.term.id==this.state.config.term.id)return;if(this.usedTerms.find((e=>e.term.id==t.term.id)))return;this.usedTerms.push({term:t.term,q:t.q})}updatePill(){const t=this.state.config;const e={activeCohort:this.state.activeCohort,filter:this.state.filter,disable_terms:[t.term]};if(t.term0){const i=r(t.term0.term.type);e.term=i?t.term0.term:structuredClone(t.term0.term);e.q=i?t.term0.q:structuredClone(t.term0.q||{});e.disable_terms.push(t.term0)}if(t.term2)e.disable_terms.push(t.term2);if(!this.pill)this.initPill();this.pill.main(e)}}const a=t(l);function d(t){t.initUI=function(){t.dom.tr.append("td").text("Divide by").attr("class","sja-termdb-config-row-label");const i=t.dom.tr.append("td");t.dom.menuBtn=i.append("div").attr("class","sja_clbtext2").on("click",t.showMenu);t.dom.pilldiv=i.append("div");t.dom.tip=new e({padding:"0px"})};t.updateUI=function(){const e=this.state.config;t.dom.tr.style("display","");if(e?.term?.term?.type=="geneVariant"||e?.term2?.term?.type=="geneVariant"){t.dom.tr.style("display","none")}if(!e.term0){t.dom.pilldiv.style("display","none");t.dom.menuBtn.style("display","inline-block");t.updatePill();return t.dom.menuBtn.html("None &#9660;")}t.dom.menuBtn.style("display","none");t.dom.pilldiv.style("display","inline-block");t.updatePill()};t.showMenu=function(){t.pill.showTree(t.dom.menuBtn.node())}}export{a as divideInit};
@@ -1 +0,0 @@
1
- import{h as t,M as e}from"./app-a8c4854a.js";import{T as i,h as s,b as r}from"./roundValue-b0d0517c.js";import{g as o}from"./FilterRxComp-242f4615.js";import"./tslib.es6-1f85f553.js";import"path";import"./table-79e3e776.js";import"./termdb.bins-9faa5170.js";class n{constructor(t){this.type="overlayInput";this.dom={tr:t.holder};a(this);this.initUI();this.usedTerms=[]}validateOpts(t){if(!("id"in t))throw"opts.id missing";if(!t.holder)throw"opts.holder missing"}initPill(){if(!this.opts.defaultQ4fillTW)this.opts.defaultQ4fillTW={};this.opts.defaultQ4fillTW[i.GENE_VARIANT]={type:"predefined-groupset"};this.opts.defaultQ4fillTW[i.GENE_EXPRESSION]={mode:"discrete"};this.opts.defaultQ4fillTW[i.METABOLITE_INTENSITY]={mode:"discrete"};this.pill=s({vocabApi:this.app.vocabApi,vocab:this.state.vocab,usecase:this.opts.usecase,activeCohort:this.state.activeCohort,holder:this.dom.pilldiv,use_bins_less:true,debug:this.opts.debug,menuOptions:"all",defaultQ4fillTW:this.opts.defaultQ4fillTW,numericEditMenuVersion:this.opts.numericEditMenuVersion||["continuous","discrete"],geneVariantEditMenuOnlyGrp:true,callback:t=>{this.app.dispatch({type:"plot_edit",id:this.opts.id,config:{term2:t},usecase:this.opts.usecase})}})}getState(t){const e=t.plots.find((t=>t.id===this.id));if(!e){throw`No plot with id='${this.id}' found.`}const i={allowedTermTypes:t.termdbConfig.allowedTermTypes,vocab:t.vocab,activeCohort:t.activeCohort,config:e,ssid:t.ssid};if(t.termfilter&&t.termfilter.filter){i.filter=o(t.termfilter.filter)}return i}main(){this.dom.tip.hide();this.mayRegisterTerm(this.state.config.term2);this.dom.tr.style("display","table-row");this.updateUI()}mayRegisterTerm(t){if(!t||!t.term)return;if(t.term.id==this.state.config.term.id)return;if(this.usedTerms.find((e=>e.term.id==t.term.id)))return;this.usedTerms.push({term:t.term,q:t.q})}updatePill(){const t=this.state.config;const e={activeCohort:this.state.activeCohort,filter:this.state.filter,disable_terms:[t.term]};{const t=this.app.getState();if(t.activeCohort!=undefined){e.activeCohort=t.activeCohort}}if(t.term2){const i=r(t.term2.term.type);e.term=i?t.term2.term:structuredClone(t.term2.term);e.q=i?t.term2.q:structuredClone(t.term2.q||{});e.disable_terms.push(t.term2)}if(t.term0)e.disable_terms.push(t.term0);if(!this.pill)this.initPill();this.pill.main(e)}}const l=t(n);function a(t){t.initUI=function(){t.dom.tr.append("td").text("Overlay").attr("class","sja-termdb-config-row-label");const i=t.dom.tr.append("td");t.dom.menuBtn=i.append("div").attr("class","sja_clbtext2").on("click",t.showMenu);t.dom.pilldiv=i.append("div");t.dom.tip=new e({padding:"0px"})};t.updateUI=function(){if(this.state.ssid){t.dom.menuBtn.style("display","none");t.dom.pilldiv.style("display","inline-block");t.dom.pilldiv.text(this.state.ssid.mutation_name);return}const e=this.state.config;if(!e.term2||e.term2&&e.term2.term.iscondition&&e.term2.id==e.term.id){t.dom.pilldiv.style("display","none");t.dom.menuBtn.style("display","inline-block");if(!e.term2){t.updatePill();return t.dom.menuBtn.html("None &#9660;")}if(e.term2.q.bar_by_grade){return t.dom.menuBtn.html('Max grade <span style="font-size:.7em;text-transform:uppercase;opacity:.6">'+e.term.term.name+"</span> &#9660;")}if(e.term2.q.bar_by_children){return t.dom.menuBtn.html('Sub-conditions <span style="font-size:.7em;text-transform:uppercase;opacity:.6">'+e.term.term.name+"</span> &#9660;")}return t.dom.menuBtn.html("ERROR: unknown type of overlay &#9660;")}t.dom.menuBtn.style("display","none");t.dom.pilldiv.style("display","inline-block");t.updatePill()};t.showMenu=function(){t.pill.showTree(t.dom.menuBtn.node())}}export{l as overlayInit};
@@ -1 +0,0 @@
1
- import{h as t}from"./app-a8c4854a.js";import{h as e,T as i,b as s}from"./roundValue-b0d0517c.js";import{g as r}from"./FilterRxComp-242f4615.js";import"./tslib.es6-1f85f553.js";import"path";import"./table-79e3e776.js";import"./termdb.bins-9faa5170.js";class o{constructor(t){this.type="term1Input";this.dom={tr:t.holder};m(this);this.initUI()}validateOpts(t){if(!("id"in t))throw"opts.id missing";if(!t.holder)throw"opts.holder missing"}getState(t){const e=t.plots.find((t=>t.id===this.id));if(!e){throw`No plot with id='${this.id}' found.`}const i={vocab:t.vocab,activeCohort:t.activeCohort,plot:e};if(t.termfilter&&t.termfilter.filter){i.filter=r(t.termfilter.filter)}return i}async main(){this.dom.tr.style("display","table-row");await this.render()}setPill(){this.pill=e({vocabApi:this.app.vocabApi,vocab:this.state.vocab,usecase:this.opts.usecase,activeCohort:this.state.activeCohort,holder:this.dom.td2.append("div").style("display","inline-block"),debug:this.opts.debug,numericEditMenuVersion:["continuous","discrete"],callback:t=>{if(!t.q)throw"data.q{} missing from pill callback";this.app.dispatch({type:"plot_edit",id:this.opts.id,config:{term:{isAtomic:true,term:JSON.parse(JSON.stringify(this.state.plot.term.term)),q:t.q}}})}})}}const a=t(o);function m(t){t.initUI=function(){t.dom.td1=t.dom.tr.append("td").attr("class","sja-termdb-config-row-label");t.dom.td2=t.dom.tr.append("td")};t.render=async function(){const e=this.state.plot;if(!e.term)throw"state.plot.term{} is missing";if(!e.term.q)throw"state.plot.term.q{} is missing";if((e.term.q.type=="predefined-groupset"||e.term.q.type=="custom-groupset")&&e.term.term.groupsetting.disabled){this.dom.tr.style("display","none");return}switch(e.term.term.type){case"categorical":t.dom.td1.text("Group categories");break;case"condition":t.dom.td1.text("Customize");break;case"integer":case"float":t.dom.td1.text("Customize bins");break;case"survival":break;case"geneVariant":t.dom.td1.text("Group variants");break;case"samplelst":break;case i.SNP:t.dom.td1.text("Group genotypes");break;case i.GENE_EXPRESSION:break;case i.METABOLITE_INTENSITY:break;case i.SINGLECELL_GENE_EXPRESSION:break;case i.SINGLECELL_CELLTYPE:break;default:throw"unknown term type"}if(!t.pill)t.setPill();const r=s(e.term.term.type);const o=r?e.term.term:structuredClone(e.term.term);const a=r?e.term.q:structuredClone(e.term.q);await t.pill.main({term:o,q:a,activeCohort:this.state.activeCohort,filter:this.state.filter})}}export{a as term1uiInit};
@@ -1 +0,0 @@
1
- import{P as e,M as t,a8 as s,af as i,r as n,h as a,d as r,I as o}from"./app-a8c4854a.js";import{controlsInit as c}from"./controls-0bacec22.js";import{f as l}from"./roundValue-b0d0517c.js";import{s as d}from"./legacy-d3-polyfill-bdb2d792.js";import{h as p}from"./html.legend-abb5452e.js";import{h}from"./FilterRxComp-242f4615.js";import{s as m,r as u,a as g,g as f}from"./renderPvalueTable-895a72c2.js";import{l as y}from"./line-264f8f9e.js";import{a as v}from"./area-f56e50f9.js";import{a as x,b}from"./axis-747c801e.js";import"./controls.btns-1cb2bfab.js";import"./controls.config-0ccc9d79.js";import"./controls.overlay-fe20d41d.js";import"./tslib.es6-1f85f553.js";import"path";import"./table-79e3e776.js";import"./termdb.bins-9faa5170.js";import"./controls.term1-faa2efcf.js";import"./controls.divide-a9fe9466.js";import"./pointer-c7475677.js";import"./constant-426a1483.js";class I{constructor(s){this.type="cuminc";this.pj=_(this);this.state={config:e({settings:JSON.parse(C)},s.config)};const i=s.holder;this.dom={holder:i,chartsDiv:i.append("div").style("margin","10px"),legendDiv:i.append("div").style("margin","5px"),hiddenDiv:i.append("div").style("margin","5px 5px 15px 5px")};this.tip=new t({padding:"5px"});this.lineFxn=y().curve(m).x((e=>e.scaledX)).y((e=>e.scaledY));this.hidePlotTitle=true;w(this);this.legendRenderer=p(this.dom.legendDiv,{settings:{legendOrientation:"vertical"},handlers:{legend:{click:e=>this.legendClick(e.target.__data__,e.clientX,e.clientY)}}})}main(e){this.config=structuredClone(this.state.config);if(this.config.term.term.type!="condition")throw"cuminc term is not a condition term";this.settings=this.config.settings.cuminc;this.settings.xTitleLabel="Years since entry into the cohort";this.settings.atRiskVisible=false;this.processResults(e);this.pj.refresh({data:this.currData});this.setTerm2Color(this.pj.tree.charts);this.render()}processResults(e){const t=Object.keys(e);if(t.length!=1)throw"must be a single chart";const s=t[0];const i=e[s];this.currData=[];this.uniqueSeriesIds=new Set;for(const e in i.estimates){const t=i.estimates[e];for(const i of t){const{time:t,est:n,low:a,up:r,nrisk:o,nevent:c,ncensor:l}=i;const d={chartId:s,seriesId:e,time:t,cuminc:n*100,low:a*100,high:r*100,nrisk:o,nevent:c,ncensor:l};this.currData.push(d);this.uniqueSeriesIds.add(d.seriesId)}}this.tests={};if(i.tests?.length!=1)throw"must have a single test";const n=i.tests[0];this.tests[s]=[{pvalue:{id:"pvalue",text:n.permutation?n.pvalue+"*":n.pvalue},series1:{id:n.series1},series2:{id:n.series2},permutation:n.permutation}];this.refs={}}setTerm2Color(e){if(!e)return;if(e.length!=1)throw"should be a single chart";const t=e[0];this.term2toColor={};this.colorScale=this.uniqueSeriesIds.size<11?s(i):s(d);const a=[];for(const e of t.serieses){const t=this.config.term2?.term.values?.[e.seriesId]?.color;const s={orig:t||(e.seriesId==""?this.settings.defaultColor:this.colorScale(e.seriesId))};s.rgb=n(s.orig);s.adjusted=s.rgb.toString();this.term2toColor[e.seriesId]=s;if(!a.find((t=>t.seriesId==e.seriesId))){a.push({seriesId:e.seriesId,text:e.seriesLabel,color:this.term2toColor[e.seriesId].adjusted})}}if(this.config.term2&&a.length){this.legendData=[{name:this.config.term2.term.name,items:a}]}else{this.legendData=[]}const r=this.tests[t.chartId];if(r.length!=1)throw"should have one test";const o=r[0];for(const e in o){if(e=="pvalue"){o[e].color="#000"}else if(e.startsWith("series")){const t=a.find((t=>t.seriesId==o[e].id));o[e].color=t.color;o[e].text=t.text}else{continue}}}}class k{constructor(e){this.type="cuminc";this.chartIncrement=0}async init(e){const s=this.opts;const i=this.opts.controls?null:s.holder.append("div");const n=s.controls?s.holder:s.holder.append("div");this.dom={loadingDiv:n.append("div").style("position","absolute").style("display","none").style("padding","20px").html("Loading ..."),header:s.header,controls:i,holder:n,chartsDiv:n.append("div").style("margin","10px"),legendDiv:n.append("div").style("margin","5px"),hiddenDiv:n.append("div").style("margin","5px 5px 15px 5px")};this.tip=new t({padding:"5px"});if(this.dom.header)this.dom.header.html("Cumulative Incidence Plot");this.settings=Object.assign({},this.opts.settings);this.pj=_(this);this.lineFxn=y().curve(m).x((e=>e.scaledX)).y((e=>e.scaledY));T(this);w(this);this.legendRenderer=p(this.dom.legendDiv,{settings:{legendOrientation:"vertical"},handlers:{legend:{click:e=>this.legendClick(e.target.__data__,e.clientX,e.clientY)}}});this.hiddenRenderer=p(this.dom.hiddenDiv,{settings:{legendOrientation:"vertical"},handlers:{legend:{click:e=>this.hideLegendItem(e.target.__data__)}}});await this.setControls(e)}async setControls(e){const t=e.plots.find((e=>e.id===this.id));if(this.opts.controls){this.opts.controls.on("downloadClick.boxplot",this.download)}else{this.dom.holder.attr("class","pp-termdb-plot-viz").style("display","inline-block").style("min-width","300px").style("margin-left","50px");const e=[];for(const s in t.term.term.values){const i=t.term.term.values[s];if(i.uncomputable)continue;e.push({label:i.label,value:s})}this.components={controls:await c({app:this.app,id:this.id,holder:this.dom.controls.attr("class","pp-termdb-plot-controls").style("display","inline-block"),inputs:["term1",{label:"Overlay",title:"Overlay",type:"overlay",numericEditMenuVersion:["discrete"],defaultQ4fillTW:{numeric:{isAtomic:true,mode:"discrete",type:"custom-bin",preferredBins:"median"}}},{label:"Divide by",title:"Divide by",type:"divideBy",defaultQ4fillTW:{numeric:{isAtomic:true,mode:"discrete",type:"custom-bin",preferredBins:"median"}}},{label:"Minimum sample size of series",type:"number",chartType:"cuminc",settingsKey:"minSampleSize"},{label:"Minimum at-risk count of event",type:"number",chartType:"cuminc",settingsKey:"minAtRisk"},{label:"Chart width",type:"number",chartType:"cuminc",settingsKey:"svgw",title:"The internal width of the chart plot"},{label:"Chart height",type:"number",chartType:"cuminc",settingsKey:"svgh",title:"The internal height of the chart plot"},{label:"X-axis ticks",type:"text",chartType:"cuminc",settingsKey:"xTickValues",placeholder:"tick,tick,...",processInput:e=>e?e.split(",").map(Number):[]},{label:"Y-axis ticks",type:"text",chartType:"cuminc",settingsKey:"yTickValues",placeholder:"tick,tick,...",processInput:e=>e?e.split(",").map(Number):[]},{label:"At-risk counts",boxLabel:"Visible",type:"checkbox",chartType:"cuminc",settingsKey:"atRiskVisible",title:"Display the at-risk counts"},{label:"95% confidence interval",boxLabel:"Visible",type:"checkbox",chartType:"cuminc",settingsKey:"ciVisible"},{label:"Default color",type:"color",chartType:"cuminc",settingsKey:"defaultColor"}]})};this.components.controls.on("downloadClick.boxplot",this.download)}}getState(e){const t=e.plots.find((e=>e.id===this.id));if(!t){throw`No plot with id='${this.id}' found. Did you set this.id before this.api = getComponentApi(this)?`}return{genome:this.app.vocabApi.vocab.genome,dslabel:this.app.vocabApi.vocab.dslabel,activeCohort:e.activeCohort,termfilter:e.termfilter,config:{term:JSON.parse(JSON.stringify(t.term)),term0:t.term0?JSON.parse(JSON.stringify(t.term0)):null,term2:t.term2?JSON.parse(JSON.stringify(t.term2)):null,settings:t.settings.cuminc}}}async main(){try{this.config=structuredClone(this.state.config);if(this.dom.header)this.dom.header.html(this.state.config.term.term.name+' <span style="opacity:.6;font-size:.7em;margin-left:10px;">CUMULATIVE INCIDENCE</span>');if(this.config.term.term.type!="condition")throw"cuminc term is not a condition term";this.toggleLoadingDiv();Object.assign(this.settings,this.config.settings);this.settings.defaultHidden=this.getDefaultHidden();this.settings.hidden=this.settings.customHidden||this.settings.defaultHidden;this.settings.xTitleLabel="Years since diagnosis";const e=this.getDataRequestOpts();const t=await this.app.vocabApi.getNestedChartSeriesData(e);if(t.error)throw t.error;this.toggleLoadingDiv("none");this.app.vocabApi.syncTermData(this.config,t);this.processResults(t);this.pj.refresh({data:this.currData});this.sortSerieses(this.pj.tree.charts);this.setTerm2Color(this.pj.tree.charts);this.render()}catch(e){console.error(e)}}getDataRequestOpts(){const e=this.config;const t={chartType:"cuminc",term:e.term,filter:this.state.termfilter.filter,minSampleSize:e.settings.minSampleSize};if(e.term2)t.term2=e.term2;if(e.term0)t.term0=e.term0;if(this.state.ssid)t.ssid=this.state.ssid;return t}getDefaultHidden(){const e=[];const t=this.config.term2;if(!t)return e;const s=t.q.hiddenValues;if(s&&Object.keys(s).length){for(const i in s){e.push(t.term.values[i].label)}}return e}processResults(e){const t=this.settings;const s=this.config;const i={};const n={};const a=e.lowSampleSize;const r=e.noEvents;this.currData=[];this.uniqueSeriesIds=new Set;this.tests={};this.noData=[];this.refs=e.refs;for(const s in e.data){const a=e.data[s];if(a.estimates){for(const e in a.estimates){const n=a.estimates[e];if(!n.filter((e=>e.nrisk>=t.minAtRisk&&e.est>0)).length){s in r?r[s].push(e):r[s]=[e];continue}s in i?i[s][e]=n:i[s]={[e]:n}}if(!(s in i))this.noData.push(s)}else{this.noData.push(s)}if(a.tests){n[s]=a.tests.filter((e=>e.series1 in i[s]&&e.series2 in i[s]&&!t.hidden.includes(e.series1)&&!t.hidden.includes(e.series2)))}}for(const e in i){const s=i[e];for(const i in s){const n=s[i];for(const s of n){const{time:n,est:a,low:r,up:o,nrisk:c,nevent:l,ncensor:d}=s;const p={chartId:e,seriesId:i,time:n,cuminc:a*100,low:r*100,high:o*100,nrisk:c,nevent:l,ncensor:d};if(p.nrisk<t.minAtRisk){this.currData.push(p);break}this.currData.push(p);this.uniqueSeriesIds.add(p.seriesId)}}}for(const e in n){for(const t of n[e]){const s={pvalue:{id:"pvalue",text:t.permutation?t.pvalue+"*":t.pvalue},series1:{id:t.series1},series2:{id:t.series2},permutation:t.permutation};e in this.tests?this.tests[e].push(s):this.tests[e]=[s]}}this.lowSampleSize={};for(const e in a){this.lowSampleSize[e]=a[e].map((e=>s.term2?.term.values?.[e]?.label||e))}this.noEvents={};for(const e in r){this.noEvents[e]=r[e].map((e=>s.term2?.term.values?.[e]?.label||e))}}sortSerieses(e){if(!e)return;for(const t of e){const e=t.serieses.map((e=>e.seriesId));const s=[...e.filter((e=>!this.settings.defaultHidden.includes(e))),...e.filter((e=>this.settings.defaultHidden.includes(e)))];t.serieses.sort(((e,t)=>s.indexOf(e.seriesId)-s.indexOf(t.seriesId)))}}setTerm2Color(e){if(!e){this.legendData=[];return}this.term2toColor={};this.colorScale=this.uniqueSeriesIds.size<11?s(i):s(d);const t=[];for(const s of e){for(const e of s.serieses){const s=this.config.term2?.term.values?.[e.seriesId]?.color;const i={orig:s||(e.seriesId==""?this.settings.defaultColor:this.colorScale(e.seriesId))};i.rgb=n(i.orig);i.adjusted=i.rgb.toString();this.term2toColor[e.seriesId]=i;if(!t.find((t=>t.seriesId==e.seriesId))){t.push({seriesId:e.seriesId,text:e.seriesLabel,color:this.term2toColor[e.seriesId].adjusted,isHidden:this.settings.hidden.includes(e.seriesId)})}}}if(this.config.term2&&t.length){this.legendData=[{name:this.config.term2.term.name,items:t.filter((e=>!e.isHidden))}];this.hiddenData=[{name:`<span style='color:#aaa; font-weight:400'><span>Hidden categories</span><span style='font-size:0.8rem'> CLICK TO SHOW</span></span>`,items:t.filter((e=>e.isHidden)).map((e=>Object.assign({},e,{isHidden:false})))}]}else{this.legendData=[]}for(const e in this.tests){const s=this.tests[e];for(const e of s){for(const s in e){if(s=="pvalue"){e[s].color="#000"}else if(s.startsWith("series")){const i=t.find((t=>t.seriesId==e[s].id));e[s].color=i.color;e[s].text=i.text}else{continue}}}}}toggleLoadingDiv(e=""){if(e!="none"){this.dom.loadingDiv.style("opacity",0).style("display",e).transition().duration("loadingWait"in this?this.loadingWait:0).style("opacity",1)}else{this.dom.loadingDiv.style("display",e)}this.loadingWait=1e3}}const S=a(k);const j=S;function w(e){e.render=function(){const t=e.pj.tree.charts||[{}];if(e.noData?.length){t.push(...e.noData.map((t=>{let s=t;const i=e.config.term0;if(i.q?.type=="predefined-groupset"||i.q?.type=="custom-groupset")return{chartId:t,chartTitle:s};if(i.term.values){const e=i.term.values[t];if(e&&e.label)s=e.label}return{chartId:t,chartTitle:s}})))}const s=e.dom.chartsDiv.selectAll(".pp-cuminc-chart").data(t,(e=>e.chartId));s.exit().remove();s.each(e.updateCharts);s.enter().each(e.addCharts);e.dom.holder.style("display","inline-block");e.dom.chartsDiv.on("mouseover",e.mouseover).on("mouseout",e.mouseout);e.legendRenderer(e.settings.atRiskVisible?[]:e.legendData);if(!e.hiddenData?.[0]?.items.length||!e.config.term2)e.dom.hiddenDiv.style("display","none");else{e.dom.hiddenDiv.style("display","");e.hiddenRenderer(e.hiddenData)}};e.addCharts=function(n){const a=e.settings;const o=r(this).append("div").attr("class","pp-cuminc-chart").style("opacity",n.serieses?0:1).style("display","inline-block").style("margin",a.chartMargin+"px").style("padding","10px").style("top",0).style("left",0).style("text-align","center").style("vertical-align","top").style("background",n.color);o.append("div").attr("class","sjpcb-cuminc-title").style("text-align","center").style("width",`${a.svgw+50}px`).style("height",a.chartTitleDivHt+"px").style("font-weight","600").style("margin","5px").datum(n.chartId).html(n.chartTitle);if(e.hidePlotTitle)o.select(".sjpcb-cuminc-title").style("display","none");o.append("div").attr("class","pp-cuminc-chart-noData").style("display","none").style("width",`${a.svgw+50}px`).style("margin","40px 5px").text("No cumulative incidence data");if(n.serieses){t(n,a);const e=o.append("svg").attr("class","pp-cuminc-svg");s(e,n,a);o.style("opacity",1)}else{o.select(".pp-cuminc-chart-noData").style("display","block")}o.append("div").attr("class","pp-cuminc-chartLegends").style("vertical-align","top").style("text-align",n.serieses?"left":"center").style("margin",n.serieses?"10px 30px 0px 20px":"0px").style("display","none");if(e.tests&&n.chartId in e.tests){const t=o.select(".pp-cuminc-chartLegends").style("display","inline-block").append("div").style("margin-bottom","30px");u({title:"Group comparisons (Gray's test)",holder:t,plot:"cuminc",tests:e.tests[n.chartId],s:a,bins:e.refs.bins})}if(e.noEvents&&n.chartId in e.noEvents){const t=o.select(".pp-cuminc-chartLegends").style("display","inline-block").append("div").style("margin-bottom","30px");const s="Skipped series (no events)";i(t,s,e.noEvents[n.chartId],a)}if(e.lowSampleSize&&n.chartId in e.lowSampleSize){const t=o.select(".pp-cuminc-chartLegends").style("display","inline-block").append("div").style("margin-bottom","30px");const s="Skipped series (low sample size)";i(t,s,e.lowSampleSize[n.chartId],a)}};function t(e,t){e.visibleSerieses=t.hidden?e.serieses.filter((e=>!t.hidden.includes(e.seriesId))):e.serieses}e.updateCharts=function(n){const a=e.settings;const o=r(this);o.style("background",n.color);o.select(".sjpcb-cuminc-title").style("width",`${a.svgw+50}px`).style("height",a.chartTitleDivHt+"px").datum(n.chartId).html(n.chartTitle);if(e.hidePlotTitle)o.select(".sjpcb-cuminc-title").style("display","none");o.selectAll(".sjpcb-lock-icon").style("display",a.scale=="byChart"?"block":"none");o.selectAll(".sjpcb-unlock-icon").style("display",a.scale=="byChart"?"none":"block");if(n.serieses){o.select(".pp-cuminc-chart-noData").style("display","none");t(n,a);s(o.select("svg"),n,a)}else{o.select(".pp-cuminc-chart-noData").style("display","block").style("width",`${a.svgw+50}px`)}o.select(".pp-cuminc-chartLegends").selectAll("*").remove();if(e.tests&&n.chartId in e.tests){const t=o.select(".pp-cuminc-chartLegends").style("display","inline-block").append("div").style("margin-bottom","30px");u({title:"Group comparisons (Gray's test)",holder:t,plot:"cuminc",tests:e.tests[n.chartId],s:a,bins:e.refs.bins})}if(e.noEvents&&n.chartId in e.noEvents){const t=o.select(".pp-cuminc-chartLegends").style("display","inline-block").append("div").style("margin-bottom","30px");const s="Skipped series (no events)";i(t,s,e.noEvents[n.chartId],a)}if(e.lowSampleSize&&n.chartId in e.lowSampleSize){const t=o.select(".pp-cuminc-chartLegends").style("display","inline-block").append("div").style("margin-bottom","30px");const s="Skipped series (low sample size)";i(t,s,e.lowSampleSize[n.chartId],a)}};function s(t,s,i){const c=i.atRiskVisible?i.axisTitleFontSize+4+s.visibleSerieses.length*2*i.axisTitleFontSize:0;t.attr("width",i.svgw).attr("height",i.svgh+c).style("overflow","visible").style("padding-left","20px");const[l,d,p,h,m,u,f,y,v,x,b]=n(t);l.attr("x",0).attr("width",i.svgw-i.svgPadding.left-i.svgPadding.right).attr("y",0).attr("height",i.svgh-i.svgPadding.top-i.svgPadding.bottom+i.xAxisOffset);const I=i.svgPadding.left;p.attr("transform","translate("+I+","+i.svgPadding.top+")");const k=h.selectAll(".sjpcb-cuminc-series").data(s.visibleSerieses,(e=>e&&e[0]?e[0].seriesId:""));k.exit().remove();k.each((function(e,t){a(r(this),e,i)}));k.enter().append("g").attr("class","sjpcb-cuminc-series").each((function(e,t){a(r(this),e,i)}));o(u,y,f,v,i,s);g({g:x,s:i,chart:s,term2values:e.config.term2?.values,term2toColor:e.term2toColor,onSerieClick:e.legendClick});b.attr("x",0).attr("width",i.svgw-i.svgPadding.left-i.svgPadding.right).attr("y",0).attr("height",i.svgh-i.svgPadding.top-i.svgPadding.bottom+i.xAxisOffset);t.seriesTip.update({xScale:s.xScale,xTitleLabel:i.xTitleLabel,decimals:i.seriesTipDecimals,serieses:s.visibleSerieses.map((t=>{const s=t.seriesLabel?`${t.seriesLabel}:`:"Cumulative Incidence:";const i=e.term2toColor[t.seriesId].adjusted;return{data:t.data.map((e=>({x:e.x,html:`<span style='color: ${i}'>`+`${s} ${e.y.toFixed(2)} (${e.low.toFixed(2)} - ${e.high.toFixed(2)})`+`</span>`})))}}))})}function i(e,t,s,i){const n=i.axisTitleFontSize-2;e.selectAll("*").remove();e.append("div").style("padding-bottom","5px").style("font-size",n+"px").style("font-weight","bold").text(t);const a=e.append("div").style("padding-bottom","5px").style("font-size",n+"px");a.selectAll("div").data(s).enter().append("div").attr("class","pp-cuminc-chartLegends-skipped").text((e=>e))}function n(t,s){let i,n,a,r,o,c,l,d,p,h,m,u;if(!t.select(".sjpcb-cuminc-mainG").size()){const s=`${e.id}-${e.chartIncrement++}`;i=t.append("defs").append("clipPath").attr("id",s).append("rect");n=t.append("g").attr("class","sjpcb-cuminc-clipG");a=t.append("g").attr("class","sjpcb-cuminc-mainG").attr("data-testid","sja-cuminc-main-g");r=a.append("g").attr("class","sjpcb-cuminc-seriesesG").attr("clip-path",`url(#${s})`);o=a.append("g").attr("class","sjpcb-cuminc-axis");c=o.append("g").attr("class","sjpcb-cuminc-x-axis");l=o.append("g").attr("class","sjpcb-cuminc-y-axis");d=o.append("g").attr("class","sjpcb-cuminc-x-title");p=o.append("g").attr("class","sjpcb-cuminc-y-title");h=a.append("g").attr("class","sjpp-cuminc-atrisk");u=a.append("line").attr("class","sjpcb-plot-tip-line").attr("stroke","#000").attr("stroke-width","2px");m=a.append("rect").attr("class","sjpcb-plot-tip-rect").style("fill","transparent")}else{i=t.select("defs clipPath rect");n=t.select(".sjpcb-cuminc-clipG");a=t.select(".sjpcb-cuminc-mainG");r=a.select(".sjpcb-cuminc-seriesesG");o=a.select(".sjpcb-cuminc-axis");c=o.select(".sjpcb-cuminc-x-axis");l=o.select(".sjpcb-cuminc-y-axis");d=o.select(".sjpcb-cuminc-x-title");p=o.select(".sjpcb-cuminc-y-title");h=a.select(".sjpp-cuminc-atrisk");m=a.select(".sjpcb-plot-tip-rect");u=a.select(".sjpcb-plot-tip-line")}if(!t.seriesTip){t.seriesTip=f(u,m,e.app?.tip)}return[i,n,a,r,o,c,l,d,p,h,m]}function a(t,s,i){t.selectAll("path").remove();t.append("path").attr("d",e.lineFxn(s.data.map((e=>({scaledX:e.scaledX,scaledY:e.scaledY[0]}))))).style("fill","none").style("stroke",e.term2toColor[s.seriesId].adjusted).style("stroke-width",2).style("stroke-linecap","square").style("opacity",1).style("stroke-opacity",1);t.append("path").attr("d",v().curve(m).x((e=>e.scaledX)).y0((e=>e.scaledY[1])).y1((e=>e.scaledY[2]))(s.data)).style("display",i.ciVisible?"":"none").style("fill",e.term2toColor[s.seriesId].adjusted).style("opacity","0.15").style("stroke","none")}function o(e,t,s,i,n,a){const r=x(a.xScale).tickValues(a.xTickValues);const o=b(a.yScale).tickValues(a.yTickValues);const c=-.5;e.attr("transform",`translate(${c}, ${n.svgh-n.svgPadding.top-n.svgPadding.bottom+n.xAxisOffset+c})`).call(r);s.attr("transform",`translate(${n.yAxisOffset+c}, ${c})`).call(o);t.select("text, title").remove();t.attr("transform","translate("+(n.svgw-n.svgPadding.left-n.svgPadding.right)/2+","+(n.svgh-n.axisTitleFontSize-4)+")").append("text").style("text-anchor","middle").style("font-size",n.axisTitleFontSize+"px").text(n.xTitleLabel);const l="Cumulative Incidence (%)";i.select("text, title").remove();i.attr("transform","translate("+(-n.svgPadding.left/2-n.axisTitleFontSize)+","+(n.svgh-n.svgPadding.top-n.svgPadding.bottom)/2+")rotate(-90)").append("text").style("text-anchor","middle").style("font-size",n.axisTitleFontSize+"px").text(l)}}function T(e){e.mouseover=function(e){e.target.__data__};e.mouseout=function(){e.app.tip.hide()};e.legendClick=function(t,s,i){if(t===undefined)return;const a=e.tip.clear();if(e.config.term2==null){const t=n(e.settings.defaultColor).formatHex();const r=a.d.append("div").attr("class","sja_sharp_border").style("padding","0px 10px").text("Edit color:");const o=r.append("input").attr("type","color").attr("value",t).on("change",(()=>{const t=o.node().value;e.app.dispatch({type:"plot_edit",id:e.id,config:{settings:{cuminc:{defaultColor:t}}}});a.hide()}));a.show(s,i);return}if(!t.seriesId)return;a.d.append("div").attr("class","sja_menuoption sja_sharp_border").text(`Hide`).on("click",(async s=>{a.hide();e.hideLegendItem(t)}));let r=e.term2toColor[t.seriesId]?.adjusted;if(r){r=n(r).formatHex();const s=a.d.append("div").attr("class","sja_sharp_border").style("padding","0px 10px").text("Edit color:");const i=s.append("input").attr("type","color").attr("value",r).on("change",(()=>{const s=e.config.term2;const n=structuredClone(s);if(!n.term.values)n.term.values={[t.seriesId]:{}};else if(!n.term.values[t.seriesId])n.term.values[t.seriesId]={};n.term.values[t.seriesId].color=i.node().value;e.app.dispatch({type:"plot_edit",id:e.id,config:{term2:n}});a.hide()}))}a.show(event.clientX,event.clientY)};e.hideLegendItem=function(t){const s=e.settings.hidden.slice();const i=s.indexOf(t.seriesId);i==-1?s.push(t.seriesId):s.splice(i,1);e.app.dispatch({type:"plot_edit",id:e.id,config:{settings:{cuminc:{customHidden:s}}}})}}const C=JSON.stringify({controls:{term2:null,term0:null},cuminc:{minSampleSize:10,minAtRisk:10,atRiskVisible:true,atRiskLabelOffset:-10,seriesTipDecimals:0,ciVisible:true,radius:5,fill:"#fff",stroke:"#000",fillOpacity:0,chartMargin:10,svgw:400,svgh:300,svgPadding:{top:20,left:55,right:20,bottom:50},axisTitleFontSize:16,xAxisOffset:5,yAxisOffset:-5,defaultColor:"#2077b4"}});async function D(t,s){if(!t.term)throw"cuminc: opts.term{} missing";try{await l(t.term,s.vocabApi,{condition:{mode:"cuminc"}});if(t.term2)await l(t.term2,s.vocabApi);if(t.term0)await l(t.term0,s.vocabApi)}catch(e){throw`${e} [cuminc getPlotConfig()]`}const i={id:t.term.term.id,settings:JSON.parse(C)};return e(i,t)}function _(e){const t=new h({template:{xMin:">=x()",xMax:"<=x()",yMin:">=yMin()",yMax:"<=yMax()",charts:[{chartId:"@key",chartTitle:"=chartTitle()",xMin:">=x()",xMax:"<=x()","__:xTickValues":"=xTickValues()","__:yTickValues":"=yTickValues()","__:xScale":"=xScale()","__:yScale":"=yScale()",yMin:">=yMin()",yMax:"<=yMax()",serieses:[{chartId:"@parent.@parent.@key",seriesId:"@key","__:seriesLabel":"=seriesLabel()",data:[{"__:seriesId":"@parent.@parent.seriesId",x:"$time",y:"$cuminc",low:"$low",high:"$high","_1:scaledX":"=scaledX()","_1:scaledY":"=scaledY()",nrisk:"$nrisk",nevent:"$nevent",ncensor:"$ncensor"},"$time"]},"$seriesId"],"@done()":"=sortSerieses()"},"$chartId"]},"=":{chartTitle(t){if(!e.state?.config?.term)return t.chartId;e.settings;const s=e.config.term.q.breaks[0];if(!t.chartId||t.chartId=="-"){return s==5?"CTCAE grade 5":`CTCAE grade ${s}-5`}const i=e.config.term0;if(!i||!i.term.values)return t.chartId;if(i.q?.type=="predefined-groupset"||i.q?.type=="custom-groupset")return t.chartId;const n=e.config.term0.term.values[t.chartId];return n&&n.label?n.label:t.chartId},seriesLabel(t,s){const i=e.config?.term2;if(!i)return s.self.seriesId;const n=s.self.seriesId;if(i?.q?.type=="predefined-groupset"||i?.q?.type=="custom-groupset")return n;if(i&&i.term.values&&n in i.term.values)return i.term.values[n].label;return n},x(t){if(e.settings.hidden?.includes(t.seriesId))return;return t.time},yMin(t){if(e.settings.hidden?.includes(t.seriesId))return;return e.settings.ciVisible?t.low:t.cuminc},yMax(t){if(e.settings.hidden?.includes(t.seriesId))return;return e.settings.ciVisible?t.high:t.cuminc},xTickValues(t,s){const i=e.settings;if(i.xTickValues?.length){return i.xTickValues}else{const e=s.root.xMin;const t=s.root.xMax;return O(e,t)}},xScale(t,s){const i=e.settings;const n=Math.min(...s.self.xTickValues);const a=Math.max(...s.self.xTickValues);return o().domain([n,a]).range([0,i.svgw-i.svgPadding.left-i.svgPadding.right])},scaledX(e,t){const s=t.context.context.context.parent.xScale.clamp(false);return s(t.self.x)},yTickValues(t,s){const i=e.settings;if(i.yTickValues?.length){return i.yTickValues}else{const e=s.root.yMin;const t=s.root.yMax;return O(e,t)}},yScale(t,s){const i=e.settings;const n=Math.min(...s.self.yTickValues);const a=Math.max(...s.self.yTickValues);return o().domain([a,n]).range([0,i.svgh-i.svgPadding.top-i.svgPadding.bottom])},scaledY(e,t){const s=t.context.context.context.parent.yScale.clamp(false);const i=t.self;return[s(i.y),s(i.low),s(i.high)]},sortSerieses(t){if(!e.refs.bins)return;const s=e.refs.bins.map((e=>e.label));t.serieses.sort(((e,t)=>s.indexOf(e.seriesId)-s.indexOf(t.seriesId)))}}});return t}function O(e,t){const s=(t-e)/5;const i=Math.floor(Math.log10(s));const n=Math.round(s/(5*10**i))*(5*10**i)||1*10**i;const a=[];let r=e;while(r<=Math.min(100,t+n)){a.push(r);r=r+n}if(!a.includes(0))a.unshift(0);return a}export{I as Cuminc,j as componentInit,S as cumincInit,D as getPlotConfig};
@@ -1 +0,0 @@
1
- import{h as t,P as e,y as i,d as s}from"./app-a8c4854a.js";import{f as o,h as a}from"./roundValue-b0d0517c.js";import"./tslib.es6-1f85f553.js";import"path";class n{constructor(t){this.type="dataDownload";this.genomeObj=t.app.opts.genome;this.pillBy$id={}}async init(t){h(this);p(this);this.dom={header:this.opts.header,errordiv:this.opts.holder.append("div"),titleDiv:this.opts.holder.append("div").style("margin","10px"),terms:this.opts.holder.append("div").style("white-space","normal"),submitDiv:this.opts.holder.append("div").style("margin","10px")};this.dom.submitBtn=this.dom.submitDiv.append("button").html("Download").on("click",this.download);this.dom.submitNote=this.dom.submitDiv.append("span").style("margin-left","5px").style("font-style","italic")}getState(t,e){const i=t.plots.find((t=>t.id===this.id));if(!i){throw`No plot with id='${this.id}' found. Did you set this.id before this.api = getComponentApi(this)?`}this.termdbConfig=t.termdbConfig;return{vocab:t.vocab,activeCohort:t.activeCohort,termfilter:t.termfilter,config:i,hasVerifiedToken:this.app.vocabApi.hasVerifiedToken(),tokenVerificationPayload:this.app.vocabApi.tokenVerificationPayload}}async main(){try{this.config=structuredClone(this.state.config);this.mayUpdateSandboxHeader();if(this.mayRequireToken())return;const t=await this.getDataRequestOpts();this.data=await this.app.vocabApi.getAnnotatedSampleData(t);this.processData();const e=this.activeSamples.length;this.dom.submitBtn.property("disabled",e<1);this.dom.submitNote.html(e?`${e} samples`:"no sample data");this.render()}catch(t){i(this.dom.errordiv,"Error: "+(t.error||t));if(t.stack)console.log(t.stack)}}mayUpdateSandboxHeader(){if(!this.dom.header)return;this.dom.header.html("<span>Data download</span>")}mayRequireToken(){if(this.state.hasVerifiedToken){this.dom.titleDiv.style("color","").html("Selected terms");this.dom.terms.style("display","");this.dom.submitDiv.style("display","");return false}else{const t=this.state.tokenVerificationPayload;const e=t?.error=="Missing access"&&this.termdbConfig.dataDownloadCatch?.missingAccess;const i=e?.message?.replace("MISSING-ACCESS-LINK",e?.links[t?.linkKey]);const s=this.termdbConfig.dataDownloadCatch?.helpLink;this.dom.titleDiv.style("color","#e44").html(i||(this.state.tokenVerificationMessage||"Requires sign-in")+(s?` <a href='${s}' target=_blank>Tutorial</a>`:""));this.dom.terms.style("display","none");this.dom.submitDiv.style("display","none");return true}}async getDataRequestOpts(){const t=this.config.terms;return{terms:t,filter:this.state.termfilter.filter}}processData(){const{lst:t,bySampleId:e}=this.data;this.activeSamples=[];for(const e of t){for(const t of this.config.terms){if(t.term&&t.$id in e){this.activeSamples.push(e);break}}}}async getNewPill(t,e){const i=await a({placeholder:"+Add variable",holder:t,menuOptions:"all",vocabApi:this.app.vocabApi,activeCohort:this.state.activeCohort,debug:this.app.opts.debug,usecase:{target:"dataDownload"},numericEditMenuVersion:["continuous","discrete"],noTermPromptOptions:this.getNoTermPromptOptions(),genomeObj:this.genomeObj,abbrCutoff:50,defaultQ4fillTW:{condition:{mode:"cuminc"},numeric:{mode:"continuous"}},callback:t=>{const i=this.config.terms.slice(0);const s=this.config.terms.findIndex((t=>t.$id===e.tw.$id));if(!t?.term){i.splice(s,1)}else if(s===-1){t.$id=e.tw.$id;if(!t.q?.mode&&(t.term.type=="integer"||t.term.type=="float")){t.q.mode="continuous"}i.push(t)}else{t.$id=e.tw.$id;i[s]=t}this.app.dispatch({type:"plot_edit",id:this.id,chartType:"dataDownload",config:{terms:i}})}});this.pillBy$id[e.tw.$id]=i;return i}getNoTermPromptOptions(){const t=[];if(this.termdbConfig.allowedTermTypes.includes("snplst")){t.push({termtype:"snplst",text:"A list of variants",q:{doNotRestrictAncestry:1,geneticModel:3,AFcutoff:0}})}if(this.termdbConfig.allowedTermTypes.includes("snplocus")){t.push({termtype:"snplocus",text:"Variants from a locus",q:{doNotRestrictAncestry:1,geneticModel:3,AFcutoff:0}})}if(t.length)t.unshift({isDictionary:true,text:"Dictionary variable"});return t}}const r=t(n);const d=r;const l=`_ts_${(+new Date).toString().slice(-8)}_${Math.random().toString().slice(-6)}`;let c=0;function m(){return`${c++}${l}`}function p(t){t.render=function(){const e=t.config.terms.map((e=>({tw:e,pill:t.pillBy$id[e.$id]})));e.push({tw:{$id:m()}});const i=t.dom.terms.selectAll(":scope>.sja-data-download-term").data(e,(t=>t.tw?.$id));i.exit().remove();i.each(t.renderTerm);i.enter().append("div").attr("class","sja-data-download-term").each(t.addTerm)};t.addTerm=async function(e){const i=s(this).style("display",e.tw?.term?"inline-block":"block").style("width","fit-content").style("margin","10px").style("padding","5px");e.pill=await t.getNewPill(i,e);await e.pill.main({term:e.tw?.term,q:e.tw?.q,filter:t.state.termfilter.filter,activeCohort:t.state.activeCohort,numericEditMenuVersion:["continuous","discrete"]})};t.renderTerm=async function(e){if(!e.pill)throw`no pill on update renderTerm()`;s(this).style("display",e.tw.term?"inline-block":"block");await e.pill.main({term:e.tw?.term,q:e.tw.q,filter:t.state.termfilter.filter,activeCohort:t.state.activeCohort})}}function h(t){t.download=async()=>{const e=["sample"];for(const i of t.config.terms){if(i.term.type=="condition"){e.push(`${i.term.name}_event (0=censored, 1=grade ${i.q.breaks[0]}-5, 2=non-${i.term.name} death)`);e.push(`${i.term.name}_time (years from diagnosis to event)`)}else if(i.term.snps){for(const t of i.term.snps){e.push(t.snpid)}}else{e.push(i.term.name)}}const i=[e];for(const e of t.activeSamples){const s=[e.sampleName||t.data.refs.bySampleId[e.sample]?.label];for(const i of t.config.terms){if(!e[i.$id])s.push("");else{if(i.term.type=="condition"){s.push(e[i.$id].key,e[i.$id].value)}else if(i.term.snps){for(const t of i.term.snps){s.push(e[i.$id]?.[t.snpid]||".")}}else{const t=i.term.values?.[e[i.$id].key]||e[i.$id];s.push(t.label||t.key)}}}i.push(s)}const s=i.map((t=>t.join("\t"))).join("\n");const o=document.createElement("a");document.body.appendChild(o);o.addEventListener("click",(function(){o.download="cohortData.txt";o.href=URL.createObjectURL(new Blob([s],{type:"text/tab-separated-values"}));document.body.removeChild(o)}),false);o.click();t.app.vocabApi.trackDsAction({action:"download",details:{terms:t.config.terms.map((t=>!("id"in t.term)?t.term.name:t.term.id)),filter:t.state.termfilter.filter}})}}let f=1;async function u(t,i){const s="id"in t?t.id:`_DATADOWNLOAD_${f++}`;const a={id:s,terms:[]};e(a,t);for(const t of a.terms){await o(t,i.vocabApi)}return a}export{d as componentInit,r as dataDownloadInit,u as getPlotConfig};
@@ -1 +0,0 @@
1
- import{a as e,m as t,c as n,d as o,i,f as r,e as s}from"./uiUtils-1336bad7.js";import{j as a,aT as l}from"./app-a8c4854a.js";import{T as c}from"./toggleButtons-002aeda1.js";import{appInit as d}from"./app-07dee349.js";import"./tslib.es6-1f85f553.js";import"./recover-36ada47f.js";import"./roundValue-b0d0517c.js";import"path";import"./FilterRxComp-242f4615.js";import"./table-79e3e776.js";import"./termdb.bins-9faa5170.js";import"./FilterStateless-046081c2.js";import"./app-ade9c62a.js";import"./termInfo-f851b415.js";import"./genesearch-ea59f5d4.js";import"./checkbox-96437f4d.js";import"./rehydrateFilter-12d118cb.js";import"./sampleScatter-9d5b3630.js";import"./controls-0bacec22.js";import"./controls.btns-1cb2bfab.js";import"./controls.config-0ccc9d79.js";import"./controls.overlay-fe20d41d.js";import"./controls.term1-faa2efcf.js";import"./controls.divide-a9fe9466.js";import"./zoom-9c63e74c.js";import"./pointer-c7475677.js";import"./nodrag-2c046d31.js";import"./lasso-55cf4057.js";import"./drag-0b968811.js";import"./downloadTextfile-5723af95.js";import"./sampleView-2d895023.js";import"./select2Terms-b4fffc50.js";import"./svg.download-86850940.js";import"./sampleScatter.rendererThree-5e686004.js";import"./axis-747c801e.js";import"./line-264f8f9e.js";import"./constant-426a1483.js";import"./summary-b77bef3c.js";import"./violin-1515c3e6.js";import"./violin.renderer-dafd89fa.js";import"./brush-c386fe3d.js";import"./basis-3870f5ba.js";import"./log-cf45fcf2.js";import"./html.legend-abb5452e.js";import"./violin.interactivity-8e2f480d.js";import"./niceNumLabels-6cfc1508.js";import"./barchart-3e69d094.js";import"./bars.settings-64bb4642.js";import"./bars.renderer-5f7a4174.js";import"./svg.legend-a94b0697.js";import"./barchart.events-9b11d97e.js";function p(e){const t={};const n=e.trim().split(/\r?\n/);const o=n[0].split("\t");const i=o.findIndex((e=>e.toLowerCase().includes("term_id")));const r=o.findIndex((e=>e.toLowerCase().includes("variable")));if(i!=-1)s(n,o);if(r!=-1)a(n,o);if(r==-1&&i==-1){throw`Unrecognized file format. Please check the header names.`}function s(e,n){const o=n.findIndex((e=>e.toLowerCase().includes("parent_id")));if(o==-1){throw`Missing required 'parent_id' header`}const r=n.findIndex((e=>e.toLowerCase().includes("name")));if(r==-1){throw`Missing required 'Name' header`}const s=n.findIndex((e=>e.toLowerCase().includes("type")));if(s==-1){throw`Missing required 'Type' header`}const a=n.findIndex((e=>e.toLowerCase().includes("values")));if(a==-1){throw`Missing required 'Values' header`}if(o==-1||r==-1||s==-1||a==-1){throw`Missing required header(s)`}const l=new Set;for(const[n,c]of e.entries()){if(n===0)continue;const e=n+1;try{const n=c.split("\t");for(const[t,o]of n.entries()){const n=t+1;let i;if(t==a)continue;if(o==""||o=="-"){i=true;throw`Blank or '-' entered for line ${e}, column ${n}`}if(i==true)throw`Invalid entry for line ${e}, column ${n}`}const d=n[i];const p=n[s];t[d]={id:d,name:n[r].trim().replace(/"/g,""),parent_id:n[o]!="root"?n[o]:null,type:n[s]!="non graphable"?n[s]:null};l.add(t[d].parent_id);if(p=="categorical"){t[d].values={}}const f=n[a].trim().replace(/"/g,"").split(";");for(const n of f){const o=n.trim();if(o=="")continue;const i=o.split("=");const r=i.shift();const s=i.join("=");if(!s)throw`Values="${o}" in line ${e} not in a key = value format.`;if(!t[d].values)t[d].values={};t[d].values[r]={label:s}}const m=Object.keys(t[d].values).length;t[d].groupsetting={disabled:m<3};u(t[d])}catch(t){throw`Line ${e} error: ${t}`}}for(const e in t)t[e].isleaf=!l.has(t[e].id)}function a(e,n){if(r==-1){throw`Missing required 'Variable' header`}const o=n.findIndex((e=>e.toLowerCase().includes("type")));if(o==-1){throw`Missing required 'Type' header`}const i=n.findIndex((e=>e.toLowerCase().includes("categories")));const s=n.map(((e,t)=>e.toLowerCase().includes("level_")?t:-1)).filter((e=>e!=-1));if(!s.length)s.push(r);const a=n.findIndex((e=>e.toLowerCase().includes("additional attributes")));const l={};const c=new Set;const d=new Map;d.set(null,[]);for(const[n,p]of e.entries()){if(n===0)continue;const e=n+1;try{const n=p.split("\t");const m=s.map((e=>n[e].trim().replace(/"/g,""))).filter((e=>e!="-"));if(m.length!=new Set(m).size){throw`Non-unique levels in line ${e}: ${JSON.stringify(m)}`}for(const[e,t]of m.entries()){if(e==0){if(d.get(null).indexOf(t)==-1)d.get(null).push(t)}if(e!=m.length-1){if(!d.has(t))d.set(t,[])}for(const n of m){if(e==m.indexOf(n)-1){if(d.get(t).indexOf(n)==-1)d.get(t).push(n)}}}const u=m.pop();const y=n.indexOf("-");if(y!=-1&&y<n.indexOf(u)){throw`Blank or '-' value detected between levels in line ${e}`}const b=f(n[o],n[i],n[a],e,u);const h=n[r]||u;if(h in t){const n=t[h];throw`Error: Multiple config rows for term.id='${h}': lines# ${n.lineNum} and ${e}`}t[h]={id:h,name:u,type:b.type,values:b.values,groupsetting:b.groupsetting,ancestry:m.slice(),parent_name:m.pop()||null,lineNum:e,additionalAttributes:b.attributes};l[u]=h;c.add(t[h].parent_name)}catch(t){throw`Line ${e} error: ${t}`}}m(l,t,c);for(const e in t){const n=t[e];n.child_order=d.get(n.parent_name).indexOf(n.name)+1;n.isleaf=!c.has(n.name);n.parent_id=l[n.parent_name]||null;delete n.parent_name;delete n.lineNum;delete n.ancestry}}return{terms:Object.values(t)}}function f(e,t,n,o,i){if(!e)throw`No type provided for variable: ${i} on line ${o}`;const r={type:e,values:t==""||t==undefined?{}:JSON.parse(t),attributes:n==""||n==undefined?{}:JSON.parse(n)};u(r);if(r.type=="categorical"){const e=Object.keys(r.values).length;r.groupsetting={disabled:e<3}}return r}function m(e,t,n,o){for(const o in t){const i=t[o];for(const[o,r]of i.ancestry.entries()){if(r in e){const n=e[r];const s=t[n];if(o-1<0&&s.parent_name||s.parent_name!=i.ancestry[o-1]){throw`Different parents for term=${r}, '${i.ancestry[o-1]}' and '${s.parent_name}'`}continue}t[r]={id:r,name:r,isleaf:false,ancestry:i.ancestry.slice(0,o)};t[r].parent_name=t[r].ancestry.slice(-1)[0]||null;e[r]=r;n.add(r)}}}function u(e){if(e.type!="integer"&&e.type!="float")return;if(!e.values)return;if(typeof e.values!="object")throw"numeric .values{} is not object";for(const t in e.values){if(t=="")throw"Cannot use empty string as an uncomputable category";const n=Number(t);if(Number.isNaN(n)){throw`Uncomputable category of a numeric term is required to be a number (here uses non-numeric value of ${t}).`}e.values[t].uncomputable=true}}function y(t,n){const o=t.append("div").style("margin","20px 20px 20px 40px").style("font-family","'Lucida Sans', 'Lucida Sans Regular', 'Lucida Grande', 'Lucida Sans Unicode', Geneva, Verdana, sans-serif").style("place-items","center left").style("overflow","hidden").classed("sjpp-app-ui",true);const i={};b(o);h(o,"Data Dictionary");const r=o.append("div").style("margin-left","2vw");g(r,i);const s=o.append("div").style("display","flex").style("align-items","center").style("margin","40px 0px 40px 130px");x(s,i,o,t);e(s,i,".databrowser_input");if(n)window.doms=i;return i}function b(e){e.append("div").style("margin","10px").style("opacity","0.65").html(`\n\t\t\t<ul>\n <li>\n Please see the <a href="https://github.com/stjude/proteinpaint/wiki/Data-Browser" target="_blank">documentation</a> for more information.\n </li>\n\t\t\t\t<li>\n\t\t\t\t\tDownload an example data dictionary <a href="https://proteinpaint.stjude.org/ppdemo/databrowser/dictionaryDemoData.tar.gz" target="_self" "download>here</a>.\n\t\t\t\t</li>\n </ul>`)}function h(e,n){const o=t(e,n);o.style("font-size","1.5em").style("color","#003366").style("margin","20px 10px 40px 10px").classed("sjpp-databrowser-section-header",true);const i=e.append("hr");i.style("color","ligthgrey").style("margin","-30px 0px 15px 0px").style("width","50vw").style("opacity","0.4")}function g(e,n){const o=[{label:"Select File",active:true,width:95,callback:async(e,t)=>{t.contentHolder.style("border","none").style("display","block");l(t.contentHolder);t.contentHolder.append("div").html(`<p style="margin-left: 10px; opacity: 0.65;">Select a file from your computer.</p>`);v(t.contentHolder,n);delete t.callback}},{label:"Paste Data",active:false,width:95,callback:async(e,t)=>{t.contentHolder.style("border","none").style("display","block");l(t.contentHolder);t.contentHolder.append("div").html(`<p style="margin-left: 10px; opacity: 0.65;">Paste data dictionary or phenotree in a tab delimited format.</p>`);j(t.contentHolder,n);delete t.callback}},{label:"File Path",active:false,width:95,callback:async(e,o)=>{o.contentHolder.style("border","none").style("display","block");l(o.contentHolder);o.contentHolder.append("div").html(`<p style="margin-left: 10px; opacity: 0.65;">Provide a URL file path.</p>`);t(o.contentHolder,"URL");w(o.contentHolder,n);delete o.callback}}];new c({holder:e,tabs:o}).main()}function w(e,t){const n=e.append("div").style("display","inline-block");const r=o(n).style("border","1px solid rgb(138, 177, 212)").classed("databrowser_input",true).on("keyup",(async()=>{const e=r.property("value").trim();if(i(e)){await fetch(e).then((e=>e.text())).then((e=>{t.data=p(e)}))}}))}function v(e,t){const n=e.append("div").style("display","inline-block");const o=r(n).classed("databrowser_input",true);o.on("change",(e=>{const n=e.target.files[0];const o=new FileReader;o.onload=e=>{t.data=p(e.target.result)};o.readAsText(n,"utf8")}))}function j(e,t){const n=e.append("div").style("display","block");const o=s({div:n,rows:10}).style("border","1px solid rgb(138, 177, 212)").style("margin","0px 0px 0px 20px").classed("databrowser_input",true).on("keyup",(async()=>{t.data=p(o.property("value").trim())}))}function x(e,t,o,i){const r=n({div:e,text:"Create Data Browser",color:"white",backgroundColor:"#001aff",border:"2px solid #001aff"});const s=e.append("div");r.style("margin-right","10px").style("font-size","16px").classed("sjpp-ui-submitBtn",true).attr("type","submit").on("click",(()=>{if(!t.data||t.data==undefined){const e=s.append("div").style("display","inline-block").style("max-width","20vw");a(e,"Please provide data");setTimeout((()=>e.remove()),3e3)}else{o.remove();d({holder:i,state:{vocab:{terms:t.data.terms},plots:[{chartType:"dictionary"}]}})}}))}export{y as init_databrowserUI};
@@ -1 +0,0 @@
1
- import{h as t,P as e}from"./app-a8c4854a.js";import{appInit as r}from"./app-ade9c62a.js";import"./roundValue-b0d0517c.js";import"./tslib.es6-1f85f553.js";import"path";import"./FilterRxComp-242f4615.js";import"./table-79e3e776.js";import"./termdb.bins-9faa5170.js";import"./termInfo-f851b415.js";import"./toggleButtons-002aeda1.js";class s{constructor(t){this.type="tree";this.dom={holder:t.holder.style("padding","20px"),header:t.header}}async init(t){this.tree=await r({vocabApi:this.app.vocabApi,holder:this.dom.holder,state:this.getState(t),tree:{click_term:t=>{const e=t.term||t;this.app.dispatch({type:"plot_create",config:{chartType:e.type=="survival"?"survival":"summary",term:t.term?t:{term:e}}});this.app.dispatch({type:"plot_delete",id:this.id})}}})}getState(t){return{tree:{usecase:{target:"dictionary"}},vocab:t.vocab,activeCohort:t.activeCohort,termfilter:t.termfilter,selectdTerms:t.selectedTerms,customTerms:t.customTerms}}main(){if(this.dom.header)this.dom.header.html("Data Dictionary");this.tree.dispatch({type:"app_refresh",state:this.state})}}const a=t(s);const i=a;function o(t,r){const s={};return e(s,t)}export{i as componentInit,a as dictInit,o as getPlotConfig};
@@ -1 +0,0 @@
1
- import{h as t,P as e,M as s}from"./app-a8c4854a.js";import{f as o,i as a}from"./roundValue-b0d0517c.js";import{controlsInit as i}from"./controls-0bacec22.js";import{s as r}from"./select2Terms-b4fffc50.js";import{b as l,a as n,d as c}from"./recover-36ada47f.js";import"./tslib.es6-1f85f553.js";import"path";import"./controls.btns-1cb2bfab.js";import"./controls.config-0ccc9d79.js";import"./controls.overlay-fe20d41d.js";import"./FilterRxComp-242f4615.js";import"./table-79e3e776.js";import"./termdb.bins-9faa5170.js";import"./controls.term1-faa2efcf.js";import"./controls.divide-a9fe9466.js";import"./FilterStateless-046081c2.js";import"./app-ade9c62a.js";import"./termInfo-f851b415.js";import"./toggleButtons-002aeda1.js";import"./genesearch-ea59f5d4.js";import"./checkbox-96437f4d.js";import"./rehydrateFilter-12d118cb.js";class p{constructor(t){this.type="facet";const e=t.holder;const o=e.append("div").style("display","inline-block");const a=e.append("div").style("display","inline-block");this.dom={holder:t.holder.style("padding","20px"),header:t.header,controlsHolder:o,mainDiv:a,tip:t.tip||new s}}async init(t){await this.setControls()}getState(t){const e=t.plots.find((t=>t.id===this.id));if(this.dom.header)this.dom.header.html(`${e.columnTw.term.name} <span style="font-size:.8em">(COLUMN)</span> ${e.rowTw.term.name} <span style="font-size:.8em">(ROW) &nbsp; FACET TABLE</span>`);return{config:e,vocab:t.vocab,termfilter:t.termfilter,groups:t.groups}}async main(){this.config=JSON.parse(JSON.stringify(this.state.config));await this.renderTable()}async renderTable(){const t=this.config;this.dom.mainDiv.selectAll("*").remove();this.dom.tip.clear().hide();const e=this.dom.mainDiv.append("table");const s=e.append("tbody");const o=s.append("tr").style("text-align","center");o.append("th");const a=this.app.vocabApi.hasVerifiedToken();if(a){e.style("border-spacing","0px");const{result:a,categories:i,categories2:r}=await this.getSampleTableData(t);if(!i.length||!r.length){this.showNoSampleMessage(this.dom.mainDiv);return}for(const e of i){const s=t.columnTw.term.values?.[e]?.label||e;this.addHeader(o,s)}this.renderSampleTable(s,t,a,i,r)}else{e.style("border-spacing","5px");const{rows:a,filteredCols:i}=await this.getStaticTableData(t);if(!a.size||!i.length){this.showNoSampleMessage(this.dom.mainDiv);return}for(const e of i){const s=t.columnTw.term.values?.[e.seriesId]?.label||e.seriesId;this.addHeader(o,s)}this.renderStaticTable(s,t,a,i)}}renderSampleTable(t,e,s,o,a){const i={};for(const n of a){i[n]={};const c=t.append("tr");const p=e.rowTw.term.values?.[n]?.label||n;this.addRowLabel(c,p);for(const p of o){const d=s.lst.filter((t=>t[e.columnTw.$id]?.key==p&&t[e.rowTw.$id]?.key==n));i[n][p]={samples:d,selected:false};const m=c.append("td");if(!d.length)m.classed("highlightable-cell",true);if(d.length>0){const e=o.indexOf(p)+2;m.classed("sja_menuoption",true).style("text-align","center").style("border","2.5px solid white").text(d.length).on("mouseover",(()=>{this.highlightColRow(t,c,e,"#fffec8")})).on("mouseout",(()=>{this.highlightColRow(t,c,e,"transparent")})).on("click",(()=>{const t=i[n][p].selected=!i[n][p].selected;if(t){m.style("border","1px solid blue")}else{m.style("border","2.5px solid white")}for(const t of a){for(const e of o){if(i[t][e].selected){l.style("display","");r.text("Choose how to use samples:");return}}}l.style("display","none");r.text("Click on cells to select samples")}))}}}const r=this.dom.mainDiv.append("div").attr("data-testid","sjpp-facet-start-prompt").style("margin","20px 0px 0px 15px").style("opacity","0.7").text("Click on cells to select samples");const l=this.dom.mainDiv.append("div").style("margin","20px 0px 0px 25px").style("display","none");const n=[{text:"Show samples view",callback:()=>{const t=this.getSelectedSamples(o,a,i);this.app.dispatch({type:"plot_create",config:{chartType:"sampleView",samples:t.map((t=>({sampleId:t.sample,sampleName:s.refs.bySampleId[t.sample].label})))}})}},{text:"List samples",callback:()=>{const t=this.getSelectedSamples(o,a,i);const r=t.map((t=>[s.refs.bySampleId[t.sample].label,t[e.columnTw.$id].key,t[e.rowTw.$id].key]));this.dom.tip.clear().showunder(l.node());const n=this.dom.tip.d.append("table").append("tbody");const c=n.append("tr").style("text-align","center");c.append("th").text("Sample");c.append("th").text(e.columnTw.term.name);c.append("th").text(e.rowTw.term.name);for(const t of r){const e=n.append("tr");e.append("td").text(t[0]);e.append("td").text(t[1]);e.append("td").text(t[2])}}},{text:"Create group",callback:()=>{this.addGroup(o,a,i)}}];for(const t of n){this.addBtn(l,t)}}highlightColRow=(t,e,s,o)=>{t.selectAll(`td.highlightable-cell:nth-child(${s})`).style("background-color",`${o}`).style("border",`2.5px solid ${o}`);t.select(`th:nth-child(${s})`).style("background-color",`${o}`).style("border",`2.5px solid ${o}`);e.style("background-color",`${o}`)};addBtn(t,e){return t.append("button").classed("sja_menuoption",true).style("padding","0px 10px").style("margin","0px 5px").text(e.text).on("click",e.callback)}addGroup(t,e,s){const o={name:"Group",items:this.getSelectedSamples(t,e,s)};const a=l(n([o]));c(this.app,a,this.state.groups);return a}getSelectedSamples(t,e,s){const o=[];for(const a of e){for(const e of t){if(s[a][e].selected){o.push(...s[a][e].samples)}}}return o}async getSampleTableData(t){const e=await this.app.vocabApi.getAnnotatedSampleData({filter:this.state.termfilter.filter,terms:[t.columnTw,t.rowTw]});const s=this.getCategories(t.columnTw,e.lst);const o=this.getCategories(t.rowTw,e.lst);return{result:e,categories:s,categories2:o}}getCategories(t,e){let s=[];for(const o of e){let e=o[t.$id]?.key;if(e){if(!isNaN(e))e=Number(e);s.push(e)}}const o=new Set(s);s=Array.from(o).sort();if(a(t.term)){Object.values(t.term.values).forEach((t=>{if(t?.uncomputable){const e=s.indexOf(t.label);if(e>-1)s.splice(e,1)}}));s=this.orderColNames(s)}return s}orderColNames(t){const e=[];const s=[];for(const o of t){const t=o.split(" to ");const a=t[0].replace(/[\>\≥\<\≤]/g,"");const i=Number(a);if(!isNaN(i)){const s=!t[1]&&(o.includes("<")||o.includes("≤"))?i-1:!t[1]&&(o.includes("≥")||o.includes(">"))?i+1:i;e.push({key:s,label:o})}else s.push(a)}return[...e.sort(((t,e)=>t.key-e.key)).map((t=>t.label)),...s.sort()]}renderStaticTable(t,e,s){for(const o of s){const s=t.append("tr");const a=e.rowTw.term.values?.[o[0]]?.label||o[0];this.addRowLabel(s,a);for(const t of o[1]){const e=t[1].value>0?t[1].value:"";s.append("td").style("background-color","#FAFAFA").style("text-align","center").text(e)}}}async getStaticTableData(t){const e={term:t.columnTw,term2:t.rowTw,filter:this.state.termfilter.filter};if(this.state.termfilter.filter0)e.filter0=this.state.termfilter.filter0;await this.getDescrStats(e.term);await this.getDescrStats(e.term2);const s=await this.app.vocabApi.getNestedChartSeriesData(e);const o=new Map;const a=s.data.refs.cols.map((t=>s.data.charts[0].serieses.find((e=>e.seriesId==t))));s.data.refs.rows.forEach((t=>{o.set(t,new Map);for(const e of a){o.get(t).set(e.seriesId,{value:e.data.find((e=>e.dataId==t))?.total||0,selected:false})}}));return{rows:o,filteredCols:a}}async getDescrStats(t){if(a(t.term)){const e=await this.app.vocabApi.getDescrStats(t,this.state.termfilter);if(e.error)throw e.error;t.q.descrStats=e.values}}showNoSampleMessage(t){t.append("div").style("padding","0px 50px").style("font-size","1.15em").text("No overlapping samples");return}addHeader(t,e){t.append("th").attr("data-testid","sjpp-facet-col-header").style("border","2.5px solid white").style("padding","0px 25px").text(e)}addRowLabel(t,e){t.append("td").attr("data-testid","sjpp-facet-row-label").style("border","2.5px solid white").style("font-weight","bold").text(e)}async setControls(){const t=[{type:"term",configKey:"columnTw",chartType:this.type,usecase:{target:this.type},title:"Facet column categories",label:"Columns",vocabApi:this.app.vocabApi,numericEditMenuVersion:["discrete"]},{type:"term",configKey:"rowTw",chartType:this.type,usecase:{target:this.type},title:"Facet row categories",label:"Rows",vocabApi:this.app.vocabApi,numericEditMenuVersion:["discrete"]}];this.components={controls:await i({app:this.app,id:this.id,holder:this.dom.controlsHolder,inputs:t})}}}function d(t,e){const s=(t,s)=>{const o={chartType:"facet",columnTw:{term:t},rowTw:{term:s}};if(a(t))o.columnTw.term.q={mode:"discrete"};if(a(s))o.rowTw.term.q={mode:"discrete"};e.app.dispatch({type:"plot_create",config:o})};r(e.dom.tip,e.app,"facet","",s)}const m=t(p);const h=m;async function f(t,s){const a={settings:{}};if(!t.columnTw)throw".columnTw{} missing";await o(t.columnTw,s.vocabApi);if(!t.rowTw)throw".rowTw{} missing";await o(t.rowTw,s.vocabApi);const i=e(a,t);return i}export{h as componentInit,m as facetInit,f as getPlotConfig,d as makeChartBtnMenu};
@@ -1 +0,0 @@
1
- import{appInit as e}from"./plot.app-aa916e0e.js";import{d as t,P as r}from"./app-a8c4854a.js";import{T as s,f as i}from"./roundValue-b0d0517c.js";import{v as o}from"./FilterRxComp-242f4615.js";import"./recover-36ada47f.js";import"./FilterStateless-046081c2.js";import"./app-ade9c62a.js";import"./termInfo-f851b415.js";import"./tslib.es6-1f85f553.js";import"./toggleButtons-002aeda1.js";import"path";import"./table-79e3e776.js";import"./termdb.bins-9faa5170.js";import"./genesearch-ea59f5d4.js";import"./checkbox-96437f4d.js";import"./rehydrateFilter-12d118cb.js";const n="hg38";const a="GDC";async function p(p,l,d){try{const l=d[n];if(!l)throw n+" missing";const f=p.settings||{};if(typeof f!="object")throw"arg.settings{} not object";if(!f.hierCluster)f.hierCluster={};if(typeof f.hierCluster!="object")throw"arg.settings.hierCluster{} not object";if(!Number.isInteger(f.hierCluster.maxGenes))f.hierCluster.maxGenes=1e3;if(p.filter0&&typeof p.filter0!="object")throw"arg.filter0 not object";const c=await o({state:{vocab:{genome:n,dslabel:a}}});c.getTermdbConfig();const m=await e({debug:p.debug,holder:t(p.holder).select(".sja_root_holder"),genome:l,state:{genome:n,dslabel:a,termfilter:{filter0:p.filter0},plots:[{chartType:"geneset",toolName:"Gene Expression Clustering",settings:{maxGenes:f.hierCluster.maxGenes}}]},app:p.opts?.app||{},hierCluster:r({reactsTo(e){if(e.type.startsWith("plot_"))return e.id===this.id;if(e.type.startsWith("filter"))return true;if(e.type=="app_refresh")return true},callbacks:{"firstRender.gdcHierCluster":async e=>{e.on("firstRender.gdcHierCluster",null);if(!g)return;m.dispatch({type:"plot_delete",id:g.id});g=undefined}}},p.opts?.hierCluster||{}),matrix:p.opts?.matrix||{},geneset:{mode:"geneExpression",genome:l,genes:p.genes,reactsTo(e){if(e.type.startsWith("plot_"))return e.id===this.id;if(e.type.startsWith("filter"))return true;if(e.type=="app_refresh")return true},showWaitMessage(e){e.style("margin","20px");e.append("div").text("Loading genes that are top variably expressed in current cohort...");e.append("div").style("font-size",".8em").html(`\n\t\t\t\t\t\tOnly up to 1000 cases with gene expression data will be used to select genes.<br>\n\t\t\t\t\t\tGenes are selected from all protein-coding genes, may take over 1 minute.\n\t\t\t\t\t`)},async callback(e,t){if(!e)return;g=e;if(!u){const e=m.getState().plots.find((e=>e.chartType=="hierCluster"));if(e)u=m.getComponents(`plots.${e.id}`)}const r=[{name:"Gene Expression",type:"hierCluster",lst:t},...p.termgroups||[]];if(u){m.dispatch({type:"plot_edit",id:u.id,config:{termgroups:r}})}else{m.dispatch({type:"plot_create",config:{chartType:"hierCluster",termgroups:r,divideBy:p.divideBy||undefined,settings:f,dataType:s.GENE_EXPRESSION}})}}},recover:{undoHtml:"Undo",redoHtml:"Redo",resetHtml:"Restore",hide(e){return e.plots[0]?.chartType!="hierCluster"},adjustTrackedState:e=>{const t=structuredClone(e);delete t.termfilter.filter0;if(t.plots){for(const e of t.plots){if(!e.termgroups)continue;for(const t of e.termgroups){if(!t.lst)continue;for(const e of t.lst){if(!e?.term)continue;delete e.term.category2samplecount;delete e.term.values}}}}return t}}});let u,g;const h={type:"hierCluster",update:async e=>{const t=m.getState().plots.find((e=>e.chartType=="hierCluster"));if(!u){if(t)u=m.getComponents(`plots.${t.id}`)}if(e.genes){const r=t.termgroups.find((e=>e.type=="hierCluster"));m.dispatch({type:"plot_edit",id:u.id,config:{termgroups:[{name:r.name,type:"hierCluster",lst:await Promise.all(e.genes.map((async e=>await i({term:{gene:e.gene,type:"geneExpression",name:e.gene}},c))))}]}})}else if("filter0"in e){m.dispatch({type:"filter_replace",filter0:e.filter0})}else if(u){m.dispatch({type:"plot_edit",id:u.id,config:e})}}};return h}catch(e){throw e}}export{p as init};
@@ -1 +0,0 @@
1
- import{_ as e}from"./tslib.es6-1f85f553.js";import{M as a}from"./app-a8c4854a.js";import{a as o}from"./genesearch-ea59f5d4.js";import{T as s}from"./roundValue-b0d0517c.js";import"path";class t{init(e){this.callback=e.callback;this.app=e.app;const s=o({tip:new a({padding:"0px"}),genome:e.genomeObj,row:e.holder,searchOnly:"gene",callback:()=>this.selectGene(s.geneSymbol)})}selectGene(a){return e(this,void 0,void 0,(function*(){if(!a)throw new Error("No gene selected");this.callback({gene:a,type:s.GENE_EXPRESSION,name:a})}))}}export{t as SearchHandler};
@@ -1 +0,0 @@
1
- import{r as e}from"./table-79e3e776.js";import{M as t,P as s,h as a,n as o,d as l,D as i,b as n}from"./app-a8c4854a.js";import{controlsInit as r}from"./controls-0bacec22.js";import"./tslib.es6-1f85f553.js";import"./controls.btns-1cb2bfab.js";import"./controls.config-0ccc9d79.js";import"./controls.overlay-fe20d41d.js";import"./roundValue-b0d0517c.js";import"path";import"./FilterRxComp-242f4615.js";import"./termdb.bins-9faa5170.js";import"./controls.term1-faa2efcf.js";import"./controls.divide-a9fe9466.js";new t;class p{constructor(){this.type="geneORA"}async init(e){if(!this.opts.holder||!this.opts.header){const e=o(l(this.opts.holder.node().parentNode));this.opts.header=e.header;this.opts.holder=e.body}const t=this.opts.holder.append("div").style("display","inline-block");const s=this.opts.holder.append("div").style("display","inline-block").style("margin-left","50px");const a=s.append("div").style("display","inline-block");const i=s.append("div").style("display","inline-block").style("vertical-align","top").style("margin-top","50px");const n=this.opts.holder.append("div").style("margin-left","50px");this.dom={holder:a,header:this.opts.header,controlsDiv:t,detailsDiv:i,tableDiv:n}}async setControls(){this.dom.controlsDiv.selectAll("*").remove();const e=[{label:"P-value filter cutoff (linear scale)",type:"number",chartType:"geneORA",settingsKey:"pvalue",title:"P-value significance",min:0,max:1},{label:"P-value filter type",type:"radio",chartType:"geneORA",settingsKey:"adjusted_original_pvalue",title:"Toggle between original and adjusted pvalues for volcano plot",options:[{label:"adjusted",value:"adjusted"},{label:"original",value:"original"}]}];const t={label:"Gene set group",type:"dropdown",chartType:"geneORA",settingsKey:"pathway",title:"Display table showing original and adjusted pvalues corresponding to each significant pathway",boxLabel:"",options:[{label:"BP: subset of GO",value:"BP: subset of GO"},{label:"MF: subset of GO",value:"MF: subset of GO"},{label:"CC: subset of GO",value:"CC: subset of GO"},{label:"WikiPathways subset of CP",value:"WikiPathways subset of CP"},{label:"REACTOME subset of CP",value:"REACTOME subset of CP"},{label:"H: hallmark gene sets",value:"H: hallmark gene sets"}]};if(!this.settings.pathway){t.options.unshift({label:"-",value:"-"});this.settings.pathway="-"}e.push(t);this.components={controls:await r({app:this.app,id:this.id,holder:this.dom.controlsDiv,inputs:e})};this.components.controls.on("downloadClick.geneORA",(()=>{downloadTable(this.table_rows,this.table_cols)}))}getState(e){const t=e.plots.find((e=>e.id===this.id));if(!t)throw`No plot with id='${this.id}' found`;return{config:t}}async main(){this.config=JSON.parse(JSON.stringify(this.state.config));this.settings=this.config.settings.geneORA;await this.setControls();this.dom.header.style("opacity",.6).style("padding-left","10px").style("font-size","0.75em").text("GENE SET OVERREPRESENTATION ANALYSIS");d(this)}}async function d(t){if(t.settings.pathway!="-"){t.dom.detailsDiv.selectAll("*").remove();t.config.geneORAparams.geneSetGroup=t.settings.pathway;const s=await f(t.config.geneORAparams);const a=i({holder:t.dom.detailsDiv});const[o,l]=a.addRow();l.style("text-align","center").style("font-size","0.8em").style("opacity","0.8").text("COUNT");const n=[{label:"Sample genes",values:t.config.geneORAparams.sample_genes.split(",").length},{label:"Gene sets analyzed",values:s.num_pathways}];if(t.config.geneORAparams.background_genes){n.push({label:"Background genes",values:t.config.geneORAparams.background_genes.split(",").length})}for(const e of n){const[t,s]=a.addRow();t.text(e.label);s.style("text-align","end").text(e.values)}t.gene_ora_table_cols=[{label:"Gene set group"},{label:"Original p-value (linear scale)"},{label:"Adjusted p-value (linear scale)"}];t.gene_ora_table_rows=[];for(const e of s.pathways){if(t.settings.adjusted_original_pvalue=="adjusted"&&t.settings.pvalue>=e.p_value_adjusted){t.gene_ora_table_rows.push([{value:e.pathway_name},{value:e.p_value_original.toPrecision(4)},{value:e.p_value_adjusted.toPrecision(4)}])}else if(t.settings.adjusted_original_pvalue=="original"&&t.settings.pvalue>=e.p_value_original){t.gene_ora_table_rows.push([{value:e.pathway_name},{value:e.p_value_original.toPrecision(4)},{value:e.p_value_adjusted.toPrecision(4)}])}}t.dom.tableDiv.selectAll("*").remove();const r=t.dom.tableDiv.append("div");e({columns:t.gene_ora_table_cols,rows:t.gene_ora_table_rows,div:r,showLines:true,maxHeight:"30vh",resize:true})}}async function c(e,t){try{const t={settings:{geneORA:{pvalue:1,adjusted_original_pvalue:"adjusted",pathway:undefined},controls:{isOpen:true}}};return s(t,e)}catch(e){throw`${e} [geneORA getPlotConfig()]`}}const u=a(p);const g=u;function h(e,t){t.prepPlot({config:{chartType:"geneORA"}})}async function f(e){return await n("genesetOverrepresentation",{body:e})}export{g as componentInit,u as geneORAInit,c as getPlotConfig,h as makeChartBtnMenu};
@@ -1 +0,0 @@
1
- import{_ as e,a as t}from"./tslib.es6-1f85f553.js";import{B as i,P as n,bT as o,ak as s,z as r,ap as p,at as d}from"./app-a8c4854a.js";import{m as l,s as a}from"./roundValue-b0d0517c.js";import{m as u}from"./radiobutton-09bff425.js";import{GroupSettingMethods as c}from"./groupsetting-20ffef77.js";import"path";function f(t){return{getPillName(e){return l(t,e)},getPillStatus(){var e,n,o,s;if(t.q.type=="predefined-groupset"||t.q.type=="custom-groupset"){const s=[];s.push(i[t.q.dt]);const r=(n=(e=t.vocabApi.termdbConfig.assayAvailability)===null||e===void 0?void 0:e.byDt[t.q.dt])===null||n===void 0?void 0:n.byOrigin;if(r)s.push(((o=r[t.q.origin])===null||o===void 0?void 0:o.label)||t.q.origin);if(t.q.type=="predefined-groupset"){const e=t.term.groupsetting.lst[t.q.predefined_groupset_idx];s.push(e.name)}else if(t.q.type=="custom-groupset"){const e=t.q.customset.groups.length;s.push(`Divided into ${e} groups`)}else{throw"unknown setting for groupsetting"}return{text:s.join(" - ")}}else{return{text:((s=t.q.exclude)===null||s===void 0?void 0:s.length)?"matching variants":"any variant class"}}},showEditMenu(i){return e(this,void 0,void 0,(function*(){yield m(t,i)}))},postMain(){var i,n;return e(this,void 0,void 0,(function*(){const e=((n=(i=t.opts).getBodyParams)===null||n===void 0?void 0:n.call(i))||{};const o=yield t.vocabApi.getCategories(t.term,t.filter,e);t.category2samplecount=o.lst}))}}}function g(e,t,i=null){var s,r,p,d;if(!e.term.id)e.term.id=e.term.name;if(!e.term.kind){const t=e.term;if(t.gene||t.name&&!t.chr)t.kind="gene";else if(t.chr)t.kind="coord";else throw"unable to assign geneVariant term.kind"}if(e.term.kind=="gene"){if(!e.term.gene)e.term.gene=e.term.name;if(!e.term.name)e.term.name=e.term.gene;if(!e.term.gene||!e.term.name)throw"missing gene/name"}else if(e.term.kind=="coord"){if(!e.term.chr||!Number.isInteger(e.term.start)||!Number.isInteger(e.term.stop))throw"no position specified";if(!e.term.name){e.term.name=`${e.term.chr}:${e.term.start+1}-${e.term.stop}`}}else{throw"cannot recognize tw.term.kind"}if(!Object.keys(e.q).includes("type"))e.q.type="values";if(i){i.isAtomic=true;n(e.q,i)}if(!e.term.groupsetting)e.term.groupsetting=o;if(e.q.type=="predefined-groupset"||e.q.type=="custom-groupset"){if(!e.q.dt){const i=v(t.termdbConfig.queries);e.q.dt=i[0]}const i=(r=(s=t.termdbConfig.assayAvailability)===null||s===void 0?void 0:s.byDt[e.q.dt])===null||r===void 0?void 0:r.byOrigin;if(i&&!e.q.origin)e.q.origin="somatic";if(e.q.type=="predefined-groupset"){if(!Number.isInteger(e.q.predefined_groupset_idx)){const t=y(e.q.dt);e.q.predefined_groupset_idx=t[0]}}}{const i=(p=t.termdbConfig.customTwQByType)===null||p===void 0?void 0:p.geneVariant;if(i&&e.term.name){Object.assign(e.q,i.default||{},((d=i.byGene)===null||d===void 0?void 0:d[e.term.name])||{},e.q)}}if("cnvMaxLength"in e.q){if(!Number.isInteger(e.q.cnvMaxLength))throw"cnvMaxLength is not integer"}else{e.q.cnvMaxLength=2e6}if("cnvGainCutoff"in e.q){if(!Number.isFinite(e.q.cnvGainCutoff))throw"cnvGainCutoff is not finite";if(e.q.cnvGainCutoff&&e.q.cnvGainCutoff<0)throw"cnvGainCutoff is not positive"}else{e.q.cnvGainCutoff=.2}if("cnvLossCutoff"in e.q){if(!Number.isFinite(e.q.cnvLossCutoff))throw"cnvLossCutoff is not finite";if(e.q.cnvLossCutoff&&e.q.cnvLossCutoff>0)throw"cnvLossCutoff is not negative"}else{e.q.cnvLossCutoff=-.2}a(e.q,e.term)}function m(n,o){return e(this,void 0,void 0,(function*(){const p=o.append("div").style("padding","8px");p.append("div").style("font-size","1.2rem").text(n.term.name);const d=p.append("div").style("margin-top","10px");const l=p.append("div").style("display","none").style("margin","5px 0px 0px 30px").style("vertical-align","top");const a=l.append("div");const f=l.append("div").style("margin-top","15px");const g=l.append("div").style("margin-top","15px");const m=p.append("div").style("display","none").style("margin-left","20px").style("vertical-align","top");d.append("div").style("font-weight","bold").text("Group variants");const b=n.q.type=="predefined-groupset"||n.q.type=="custom-groupset";const h=u({holder:d,options:[{label:"No variant grouping",value:"noGroup",checked:!b},{label:"Assign variants to groups",value:"group",checked:b}],callback:t=>e(this,void 0,void 0,(function*(){if(t=="group"){yield k()}else{q(n);delete n.q.dt;delete n.q.origin;l.style("display","none");m.style("display","none")}}))});if(n.opts.geneVariantEditMenuOnlyGrp){d.style("display","none");l.style("margin","10px 0px 0px 00px")}const x=h.inputs.filter((e=>e.checked));if(x.property("value")=="group")yield k();function k(){return e(this,void 0,void 0,(function*(){l.style("display","inline-block");_();C();const e=y(n.q.dt);if(n.q.dt==s){w(e);yield G()}else{j(e)}}))}function _(){a.selectAll("*").remove();a.append("div").style("font-weight","bold").text("Variant type");const t=v(n.vocabApi.termdbConfig.queries);if(!n.q.dt)n.q.dt=t[0];u({holder:a,options:t.map((e=>({label:i[e],value:e,checked:e==n.q.dt}))),callback:t=>e(this,void 0,void 0,(function*(){n.q.dt=t;q(n);yield k()}))})}function C(){var t,i;const o=(i=(t=n.vocabApi.termdbConfig.assayAvailability)===null||t===void 0?void 0:t.byDt[n.q.dt])===null||i===void 0?void 0:i.byOrigin;if(!o){delete n.q.origin;f.style("display","none");return}if(!n.q.origin)n.q.origin="somatic";f.style("display","block");f.selectAll("*").remove();f.append("div").style("font-weight","bold").text("Variant origin");u({holder:f,options:["somatic","germline"].map((e=>({label:o[e].label,value:e,checked:e==n.q.origin}))),callback:t=>e(this,void 0,void 0,(function*(){n.q.origin=t;q(n);yield k()}))})}function w(t){g.selectAll("*").remove();g.append("div").style("font-weight","bold").text("Variant grouping");if(n.q.type!="predefined-groupset"&&n.q.type!="custom-groupset"){n.q=Object.assign(Object.assign({},O(n.q)),{type:"predefined-groupset",predefined_groupset_idx:t[0]})}const i=u({holder:g,options:[{label:"Predefined groups",value:"predefined",checked:n.q.type=="predefined-groupset"},{label:"Custom groups",value:"custom",checked:n.q.type=="custom-groupset"}],callback:i=>e(this,void 0,void 0,(function*(){if(i=="predefined"){n.q=Object.assign(Object.assign({},O(n.q)),{type:"predefined-groupset",predefined_groupset_idx:t[0]})}else{o.style("display","none");A()}yield k()}))});const o=i.divs.filter((e=>e.value=="predefined")).append("div").style("margin","5px 0px 0px 30px");const s=i.inputs.filter((e=>e.checked));if(s.property("value")=="predefined"){const i=n.q;u({holder:o,options:t.map((e=>{const t=n.term.groupsetting.lst[e];return{label:t.name,value:e,checked:e==i.predefined_groupset_idx}})),callback:t=>e(this,void 0,void 0,(function*(){i.predefined_groupset_idx=t;yield k()}))})}else{o.style("display","none")}}function j(e){m.style("display","none");delete n.groupSettingInstance;g.selectAll("*").remove();g.append("div").style("font-weight","bold").text("Variant grouping");n.q=Object.assign(Object.assign({},O(n.q)),{type:"predefined-groupset",predefined_groupset_idx:e[0]});const t=n.term.groupsetting.lst[n.q.predefined_groupset_idx];g.append("div").style("margin","5px 0px 0px 10px").text(t.name)}function O(e){if(e.type=="values"){const i=t(e,["type"]);return i}else if(e.type=="predefined-groupset"){const i=t(e,["type","predefined_groupset_idx"]);return i}else{const i=t(e,["type","customset"]);return i}}function A(){const e=n.category2samplecount.find((e=>e.dt==n.q.dt));const t=e.classes.byOrigin?e.classes.byOrigin[n.q.origin]:e.classes;const i=[{name:"Group 1",type:"values",values:Object.keys(t).map((e=>({key:e,label:r[e].label})))},{name:"Group 2",type:"values",values:[]}];n.q=Object.assign(Object.assign({},O(n.q)),{type:"custom-groupset",customset:{groups:i}})}function G(){return e(this,void 0,void 0,(function*(){m.style("display","inline-block");m.selectAll("*").remove();n.groupSettingInstance=new c(n,{holder:m,hideApply:true});yield n.groupSettingInstance.main()}))}p.append("button").style("margin-top","20px").style("display","block").text("Apply").on("click",(()=>{if((n.q.type=="predefined-groupset"||n.q.type=="custom-groupset")&&n.groupSettingInstance)n.groupSettingInstance.processDraggables();n.runCallback()}))}))}function v(e){const t=[];for(const i of Object.keys(e)){if(i=="snvindel")t.push(s);else if(i=="cnv")t.push(p);else if(i=="svfusion")t.push(d);else continue}return t}function y(e){const t=e==s?[0,1,2]:e==p?[3]:e==d?[4]:[];if(!t.length)throw"groupset_idxs is empty";return t}function q(e){e.q.type="values";delete e.q.predefined_groupset_idx;delete e.q.customset;delete e.groupSettingInstance}export{g as fillTW,f as getHandler};
@@ -1 +0,0 @@
1
- import{h as e,P as t,b as s}from"./app-a8c4854a.js";import{G as i}from"./recover-36ada47f.js";import{f as o}from"./roundValue-b0d0517c.js";import"./FilterRxComp-242f4615.js";import"./table-79e3e776.js";import"./tslib.es6-1f85f553.js";import"./termdb.bins-9faa5170.js";import"./FilterStateless-046081c2.js";import"./app-ade9c62a.js";import"./termInfo-f851b415.js";import"./toggleButtons-002aeda1.js";import"path";import"./genesearch-ea59f5d4.js";import"./checkbox-96437f4d.js";import"./rehydrateFilter-12d118cb.js";class a{constructor(e){this.type="geneset";this.dom={holder:e.holder.style("position","relative").style("min-height","300px"),body:e.holder.append("div"),loadingOverlay:e.holder.append("div").attr("class","sjpp-spinner").style("display","none").style("position","absolute").style("background-color","#fff").style("z-index",10).style("opacity","0.5")}}init(){if(this.opts.reactsTo)this.reactsTo=this.opts.reactsTo}getState(e){const t=e.plots.find((e=>e.id===this.id));return{vocab:e.vocab,filter0:e.termfilter.filter0,config:t}}async main(){this.dom.body.selectAll("*").remove();this.dom.loadingOverlay.style("display","");this.noWait().catch(console.warn)}async noWait(){const e=new AbortController;try{const[t,s]=await this.api.detectStale((()=>this.getGenes({signal:e.signal})),{abortCtrl:e});if(s)return;if(!t?.length)this.render();else this.opts.callback(this.api,t)}catch(e){if(e=="stale sequenceId"||e.name=="AbortError")return;else{if(this.opts.showWaitMessage){this.dom.body.style("margin","20px").html(e)}throw e}}}async getGenes({signal:e}){this.opts.genes;const t=this.state.config.settings;if(this.opts.genes){if(!Array.isArray(this.opts.genes)||this.opts.genes.length==0)throw".genes[] is not non-empty array";return await this.getTwLst(this.opts.genes)}let i;if(this.opts.showWaitMessage){i=this.dom.body.append("div").style("margin","20px");this.opts.showWaitMessage(i)}let o;if(this.opts.mode=="geneVariant"){const i={};if(t.maxGenes)i.maxGenes=t.maxGenes;if(t.geneFilter)i.geneFilter=t.geneFilter;if(this.state.filter0)i.filter0=this.state.filter0;o=await s("gdc/topMutatedGenes",{body:i,signal:e},{cacheAs:"decoded"})}else if(this.opts.mode=="geneExpression"){const i={genome:this.state.vocab.genome,dslabel:this.state.vocab.dslabel,maxGenes:t.maxGenes};if(this.state.filter0)i.filter0=this.state.filter0;o=await s("termdb/topVariablyExpressedGenes",{body:i,signal:e},{cacheAs:"decoded"})}else{throw"unknown opts.mode [geneset.js]"}if(!o)throw"invalid server response";if(o.error)throw o.error;if(!o.genes)return[];i.remove();this.dom.loadingOverlay?.style("display","none");return await this.getTwLst(o.genes)}async getTwLst(e){return await Promise.all(e.map((async e=>typeof e=="string"?await o({term:{gene:e,type:this.opts.mode}},this.app.vocabApi):await o({term:{gene:e.gene||e.name,type:this.opts.mode}},this.app.vocabApi))))}async render(){if(!this.dom?.holder)return;this.dom.body.append("p").text(`No default genes. Please change the cohort or define a gene set to launch ${this.state.config.toolName}.`);new i({holder:this.dom.body.append("div"),genome:this.opts.genome,mode:this.opts.mode,vocabApi:this.app.vocabApi,callback:async e=>{const t=await Promise.all(e.geneList.map((async e=>o({term:{gene:e.gene||e.name||e,type:"geneVariant"}},this.app.vocabApi))));this.opts.callback(this.api,t)}});this.dom.loadingOverlay?.style("display","none")}destroy(){this.dom.holder.selectAll("*").remove();this.dom.holder.remove();for(const e in this.dom){delete this.dom[e]}}}const n=e(a);const r=n;async function l(e={},s){const i=t({chartType:"geneset"},e);return i}export{r as componentInit,n as genesetInit,l as getPlotConfig};
@@ -1 +0,0 @@
1
- import{M as t,h as e,P as s,y as a,b as o,f as i}from"./app-a8c4854a.js";import{a as n}from"./genesearch-ea59f5d4.js";import"./roundValue-b0d0517c.js";import{g as r}from"./FilterRxComp-242f4615.js";import{mayUpdateGroupTestMethodsIdx as l,gbControlsInit as c}from"./genomeBrowser.controls-cd8ddeb1.js";import"./tslib.es6-1f85f553.js";import"path";import"./table-79e3e776.js";import"./termdb.bins-9faa5170.js";import"./checkbox-96437f4d.js";import"./FilterStateless-046081c2.js";import"./toggleButtons-002aeda1.js";import"./app-ade9c62a.js";import"./termInfo-f851b415.js";const p=new t({padding:"0px"});class f{constructor(){this.type="genomeBrowser"}async init(){const e=this.opts.holder.append("div");this.opts.header.append("div").style("opacity",.6).style("padding-left","10px").style("font-size","0.75em").text("GENOME BROWSER");const s=e.append("div");const a=e.append("div").style("margin-left","25px");a.append("span").html("&nbsp;");this.dom={tip:new t,holder:e,errDiv:s,loadingDiv:a.append("span").text("Loading..."),controlsDiv:e.append("div").style("margin-left","25px"),blockHolder:e.append("div")};this.components={gbControls:await c({app:this.app,id:this.id,holder:this.dom.controlsDiv})}}getState(t){const e=t.plots.find((t=>t.id===this.id));if(!e)throw`No plot with id='${this.id}' found`;return{config:e,termdbConfig:t.termdbConfig,filter:r(t.termfilter.filter)}}async main(){this.dom.loadingDiv.style("display","inline");try{if(this.state.config?.snvindel?.details){await this.launchCustomMds3tk()}else if(this.state.config?.trackLst){await this.launchBlockWithTracks(this.state.config.trackLst)}else{const t={type:"mds3",dslabel:this.app.opts.state.vocab.dslabel,newChartHolder:this.opts.plotDiv};if(this.state.filter?.lst?.length>0){t.filterObj=structuredClone(this.state.filter)}await this.launchBlockWithTracks([t])}this.updateLDtrack()}catch(t){a(this.dom.errDiv,t.message||t);if(t.stack)console.log(t.stack)}this.dom.loadingDiv.style("display","none")}async launchCustomMds3tk(){const t=await this.preComputeData();this.mayDisplaySampleCountInControls(t);if(this.blockInstance){const e=this.blockInstance.tklst.find((t=>t.type=="mds3"));e.custom_variants=t.mlst;b(this,e.skewer.viewModes.find((t=>t.type=="numeric")));e.load();return}const e={type:"numeric",inuse:true,byAttribute:"nm_axis_value"};b(this,e);const s={type:"mds3",dslabel:this.app.opts.state.vocab.dslabel,name:"Variants",custom_variants:t.mlst,skewerModes:[e]};await this.launchBlockWithTracks([s])}mayDisplaySampleCountInControls(t){if(Number.isInteger(t.totalSampleCount_group1)||Number.isInteger(t.totalSampleCount_group2)){const e={appState:{plots:[{id:this.components.gbControls.id,_partialData:{groupSampleCounts:[t.totalSampleCount_group1,t.totalSampleCount_group2],pop2average:t.pop2average}}]}};this.components.gbControls.update(e)}}async preComputeData(){const t={genome:this.app.opts.state.vocab.genome,dslabel:this.app.opts.state.vocab.dslabel,for:"mds3variantData",chr:this.state.config.geneSearchResult.chr,start:this.state.config.geneSearchResult.start,stop:this.state.config.geneSearchResult.stop,details:this.state.config.snvindel.details,filter:this.state.filter,variantFilter:this.state.config.variantFilter?.filter};const e=await o("termdb",{body:t});if(e.error)throw e.error;return e}async launchBlockWithTracks(t){this.dom.blockHolder.selectAll("*").remove();const e={holder:this.dom.blockHolder,genome:this.app.opts.genome,nobox:true,tklst:await this.getTracks2show(t),debugmode:true};if(this.state.termdbConfig?.queries.defaultBlock2GeneMode&&this.state.config.geneSearchResult.geneSymbol){e.query=this.state.config.geneSearchResult.geneSymbol;const t=await import("./app-a8c4854a.js").then((function(t){return t.c3}));await t.default(e);this.blockInstance=e.__blockInstance;this.opts.header.text(e.query);return}e.chr=this.state.config.geneSearchResult.chr;e.start=this.state.config.geneSearchResult.start;e.stop=this.state.config.geneSearchResult.stop;i(this.app.opts.genome,e.tklst);e.onCoordinateChange=async t=>{await this.app.dispatch({type:"plot_edit",id:this.id,config:{geneSearchResult:{chr:t[0].chr,start:t[0].start,stop:t[0].stop}}})};const s=await import("./block-dcb130fb.js").then((function(t){return t.c}));this.blockInstance=new s.Block(e)}async getTracks2show(t){const e=[];for(const s of t){if(s.isfacet){const t=JSON.parse(JSON.stringify(s));if(!this.app.opts.genome.tkset)this.app.opts.genome.tkset=[];if(!t.tklst)throw".tklst[] missing from a facet table";if(!Array.isArray(t.tklst))throw".tklst[] not an array from a facet table";for(const s of t.tklst){if(!s.assay)throw".assay missing from a facet track";if(!s.sample)throw".sample missing from a facet track";s.tkid=Math.random().toString();if(s.defaultShown)e.push(s)}this.app.opts.genome.tkset.push(t)}else{e.push(s)}}return e}updateLDtrack(){if(!this.state.config.ld)return;if(!this.blockInstance)return;for(const t of this.state.config.ld.tracks){const e=this.blockInstance.tklst.findIndex((e=>e.file==t.file0));if(t.shown){if(e==-1){const e={type:"ld",name:t.name,file:t.file0};const s=this.blockInstance.block_addtk_template(e);this.blockInstance.tk_load(s)}continue}if(e==-1)continue;this.blockInstance.tk_remove(e)}}}const d=e(f);const h=d;async function u(t,e){try{return await g(e.vocabApi,t)}catch(t){throw`${t} [genomeBrowser getPlotConfig()]`}}function m(t,e){const s=e.app.opts.genome;if(typeof s!="object")throw"chartsInstance.app.opts.genome not an object and needed for gene search box";const a={tip:p,genome:s,row:t.append("div").style("margin","10px"),callback:async()=>{try{const t=await g(e.app.vocabApi);t.chartType="genomeBrowser";t.geneSearchResult=o;const s={config:t};e.prepPlot(s)}catch(e){t.append("div").text("Error: "+(e.message||e));console.log(e)}}};if(!e.state.termdbConfig.queries.defaultBlock2GeneMode){a.defaultCoord=e.state.termdbConfig.queries.defaultCoord}else{a.searchOnly="gene"}const o=n(a)}async function g(t,e){const a=await t.getMds3queryDetails();const o=await t.get_variantFilter();if(o?.filter){a.variantFilter=o}const i=e?s(a,e):a;if(i.snvindel?.details){l({state:{config:i}},i.snvindel.details)}return i}function b(t,e){delete e.tooltipPrintValue;const[s,a]=t.state.config.snvindel.details.groups;if(s&&a){if(s.type=="info"||a.type=="info"){e.label="Value difference";return}const o=t.state.config.snvindel.details.groupTestMethods[t.state.config.snvindel.details.groupTestMethodsIdx];e.label=o.axisLabel||o.name;if(o.name=="Allele frequency difference"){e.tooltipPrintValue=t=>[{k:"AF diff",v:t.nm_axis_value}]}else if(o.name=="Fisher's exact test"){e.tooltipPrintValue=t=>[{k:"p-value",v:t.p_value}]}else;return}if(s.type=="info"){const a=t.state.config.variantFilter?.terms?.find((t=>t.id==s.infoKey));e.label=a?.name||s.infoKey;e.tooltipPrintValue=t=>[{k:e.label,v:t.info[s.infoKey]}];return}if(s.type=="filter"){e.label="Allele frequency";e.tooltipPrintValue=t=>[{k:"Allele frequency",v:t.nm_axis_value}];return}if(s.type=="population"){e.label="Allele frequency";e.tooltipPrintValue=t=>[{k:"Allele frequency",v:t.nm_axis_value}];return}throw"unknown type of the only group"}export{h as componentInit,d as genomeBrowserInit,u as getPlotConfig,m as makeChartBtnMenu};
@@ -1 +0,0 @@
1
- import{M as t,h as e}from"./app-a8c4854a.js";import{m as i}from"./checkbox-96437f4d.js";import{f as n}from"./FilterStateless-046081c2.js";import{g as s,a as o}from"./FilterRxComp-242f4615.js";import"./roundValue-b0d0517c.js";import{T as a}from"./toggleButtons-002aeda1.js";import{appInit as r}from"./app-ade9c62a.js";import"./table-79e3e776.js";import"./tslib.es6-1f85f553.js";import"./termdb.bins-9faa5170.js";import"path";import"./termInfo-f851b415.js";const l=new t({padding:"0px"});class p{constructor(t){this.type="gbControls";this.filterUI={}}async init(t){this.initUI(this.getState(t))}getState(t){const e=t.plots.find((t=>t.id===this.id));if(!e)throw`No plot with id='${this.id}' found`;if(e._partialData){this._partialData=e._partialData;return}return{config:e,termdbConfig:t.termdbConfig,filter:s(t.termfilter.filter)}}async main(){const t=this.state.config.snvindel?.details?.groups;if(t){this.render1group(0);this.render1group(1);if(this.state.config.snvindel.details.groupTestMethods){this.renderTestMethod()}}if(this.state.config.variantFilter){if(!this.variantFilterRendered){this.variantFilterRendered=true;this.makeVariantFilter()}}}async makeVariantFilter(){n({joinWith:this.state.config.variantFilter.opts.joinWith,emptyLabel:"+Add Filter",holder:this.dom.variantFilterHolder,vocab:{terms:this.state.config.variantFilter.terms},callback:async t=>{await this.app.dispatch({type:"plot_edit",id:this.id,config:{variantFilter:{filter:t}}})}}).main(this.state.config.variantFilter.filter)}render1group(t){const e=this.state.config.snvindel.details.groups[t];const i=t==0?this.dom.group1div:this.dom.group2div;let n=false;if(e?.type=="filter"&&this.filterUI[t]){n=true}else{delete this.filterUI[t];i.selectAll("*").remove()}if(!e){h(this,t,i);return}if(!n)m(this,t,i);if(e.type=="info")return c(this,t,e,i);if(e.type=="population")return f(this,t,e,i);if(e.type=="filter")return u(this,t,e,i);throw"render1group: unknown group type"}renderTestMethod(){const t=this.dom.testMethodDiv;t.selectAll("*").remove();const[e,i]=this.state.config.snvindel.details.groups;if(!i){return}t.append("span").text("TEST METHOD").style("font-size",".8em").style("opacity",.6);if(e.type!="filter"&&i.type!="filter"){t.append("span").style("padding-left","10px").text("Value difference").style("opacity",.6);return}const n=t.append("select").style("margin-left","10px").on("change",(()=>{this.app.dispatch({type:"plot_edit",id:this.id,config:{snvindel:{details:{groupTestMethodsIdx:n.property("selectedIndex")}}}})}));for(const t of this.state.config.snvindel.details.groupTestMethods){n.append("option").text(t.name)}n.property("selectedIndex",this.state.config.snvindel.details.groupTestMethodsIdx)}initUI(t){this.dom={};const e=[];if(t.config.snvindel?.details){e.push({label:"Variant values",active:true})}if(t.config.variantFilter){e.push({label:"Variant filter"})}if(t.config.ld){e.push({label:"LD map"})}if(e.length==0){return}const n=new a({holder:this.opts.holder.append("div").style("border-bottom","solid 1px #ccc").style("padding-bottom","20px"),tabs:e});n.main();{const t=e[0].contentHolder.append("div");this.dom.group1div=t.append("div");this.dom.group2div=t.append("div");this.dom.testMethodDiv=t.append("div").style("margin-top","3px")}let s=1;if(t.config.variantFilter){this.dom.variantFilterHolder=e[s++].contentHolder.append("div").style("white-space","normal")}if(t.config.ld){const n=structuredClone(t.config.ld.tracks);const o=e[s++].contentHolder.append("div");o.append("div").text("Show/hide linkage disequilibrium map from an ancestry:").style("opacity",.5);for(const[t,e]of n.entries()){i({labeltext:e.name,checked:e.shown,holder:o,callback:()=>{n[t].shown=!n[t].shown;this.app.dispatch({type:"plot_edit",id:this.id,config:{ld:{tracks:n}}})}})}}}}const d=e(p);function c(t,e,i,n){let s=i.infoKey;if(t.state.config.variantFilter?.terms){const e=t.state.config.variantFilter.terms.find((t=>t.id==i.infoKey));if(e&&e.name)s=e.name}n.append("span").text(s).attr("class","sja_menuoption").on("click",(n=>{if(t.state.config.variantFilter.terms.length<=1){return}l.clear().showunder(n.target).d.append("div").text("Replace with:").style("margin","10px").style("font-size",".8em");for(const n of t.state.config.variantFilter.terms){if(n.type!="integer"&&n.type!="float")continue;if(n.id==i.infoKey)continue;l.d.append("div").text(n.name).attr("class","sja_menuoption").on("click",(()=>{l.hide();const i=structuredClone(t.state.config.snvindel.details.groups);i[e].infoKey=n.id;i[e].type="info";t.app.dispatch({type:"plot_edit",id:t.id,config:{snvindel:{details:{groups:i}}}})}))}}));n.append("span").text("PER-VARIANT NUMERICAL VALUES").style("font-size",".7em").style("opacity",.6).style("margin-left","10px")}function f(t,e,i,n){n.append("span").text(i.label).attr("class","sja_menuoption").on("click",(n=>{if(t.state.config.snvindel.populations.length<=1){return}l.clear().showunder(n.target).d.append("div").text("Replace with:").style("margin","10px").style("font-size",".8em");for(const n of t.state.config.snvindel.populations){if(n.key==i.key)continue;l.d.append("div").text(n.label).attr("class","sja_menuoption").on("click",(()=>{l.hide();const i=structuredClone(t.state.config.snvindel.details.groups);i[e]=structuredClone(n);i[e].type="population";t.app.dispatch({type:"plot_edit",id:t.id,config:{snvindel:{details:{groups:i}}}})}))}}));n.append("span").text(`POPULATION${i.adjust_race?", RACE ADJUSTED":""}`).style("font-size",".7em").style("margin-left","10px").style("opacity",.6);if(t._partialData?.pop2average){if(t.state.config.snvindel.details.groups[e==1?0:1]?.type=="filter"){const s=[];for(const e in t._partialData.pop2average){const i=t._partialData.pop2average[e];if(!Number.isFinite(i))continue;s.push(`${e}=${i.toFixed(2)}`)}if(s.length){n.append("span").text(`Group ${e==1?1:2} average admixture: ${s.join(", ")}`).style("margin-left","20px").attr("class","sja_clbtext").on("click",(t=>{l.clear().showunder(t.target).d.append("div").style("margin","10px").style("width","500px").html(`These are average admixture coefficients based on current Group ${e==1?1:2} samples.\n\t\t\t\t\t\tThey are used to adjust variant allele counts of matching ancestries from <span class=sja_menuoption style="padding:2px 5px">${i.label}</span>,\n\t\t\t\t\t\tso that the adjusted allele counts can be compared against Group ${e==1?1:2} allele counts.\n\t\t\t\t\t\tThis allows to account for ancestry composition difference between the two groups.\n\t\t\t\t\t\t`)}))}}}}async function u(t,e,i,s){if(!t.filterUI[e]){t.filterUI[e]=await n({holder:s,vocab:t.app.opts.state.vocab,emptyLabel:"Entire cohort",termdbConfig:t.state.termdbConfig,callback:async i=>{const n=JSON.parse(JSON.stringify(t.state.config.snvindel.details.groups));n[e].filter=i;t.app.dispatch({type:"plot_edit",id:t.id,config:{snvindel:{details:{groups:n}}}})}})}t.filterUI[e].main(g(t,i));s.select(".sjpp-gb-filter-count").remove();const o=t._partialData?.groupSampleCounts?.[e];if(Number.isInteger(o)){s.append("span").attr("class","sjpp-gb-filter-count").style("margin-left","10px").style("opacity",.5).style("font-size",".9em").text("n="+o)}}function g(t,e){const i=structuredClone(t.state.filter||{type:"tvslst",in:true,join:"",lst:[]});const n=structuredClone(e.filter);n.tag="filterUiRoot";i.lst.push(n);i.join="and";return i}function h(t,e,i){i.append("div").style("display","inline-block").text("Create Group 2").attr("class","sja_clbtext").style("margin","10px").on("click",(i=>{l.showunder(i.target).clear();y(t,e,l.d)}))}function m(t,e,i){i.append("div").style("display","inline-block").text("Group "+(e+1)).attr("class","sja_menuoption").style("margin-right","10px").on("click",(i=>{l.showunder(i.target).clear();if(e==0){y(t,0,l.d);return}l.d.append("div").text("Change").attr("class","sja_menuoption").style("border-radius","0px").on("click",(()=>{y(t,1,l.clear().d)}));l.d.append("div").text("Delete").attr("class","sja_menuoption").style("border-radius","0px").on("click",(()=>{l.hide();const e=[t.state.config.snvindel.details.groups[0]];t.app.dispatch({type:"plot_edit",id:t.id,config:{snvindel:{details:{groups:e}}}})}))}))}function y(t,e,i){const n={holder:i.append("div").style("margin","5px"),tabs:t.state.config.snvindel.details.groupTypes.map((t=>({label:t.name}))),tabsPosition:"vertical",linePosition:"right"};new a(n).main();for(const[i,s]of t.state.config.snvindel.details.groupTypes.entries()){const o=n.tabs[i];o.contentHolder.style("margin","10px");if(s.type=="info"){if(!t.state.config.variantFilter?.terms)throw"looking for snvindel info fields but self.state.config.variantFilter.terms[] missing";for(const i of t.state.config.variantFilter.terms){if(i.type!="integer"&&i.type!="float")continue;o.contentHolder.append("div").text(i.name).attr("class","sja_menuoption").on("click",(()=>{l.hide();const n={type:"info",infoKey:i.id};const s=v(t,n,e);b(t,s);t.app.dispatch({type:"plot_edit",id:t.id,config:{snvindel:{details:s}}})}))}continue}if(s.type=="population"){if(!t.state.config.snvindel.populations)throw"state.config.snvindel.populations missing";for(const i of t.state.config.snvindel.populations){o.contentHolder.append("div").text(i.label).attr("class","sja_menuoption").on("click",(()=>{l.hide();const n={type:"population",key:i.key,label:i.label,allowto_adjust_race:i.allowto_adjust_race,adjust_race:i.adjust_race};const s=v(t,n,e);b(t,s);t.app.dispatch({type:"plot_edit",id:t.id,config:{snvindel:{details:s}}})}))}continue}if(s.type=="filter"){const i={holder:o.contentHolder,vocabApi:t.app.vocabApi,state:{termfilter:{filter:t.state.filter}},tree:{click_term2select_tvs:i=>{l.hide();const n={type:"filter",filter:{in:true,join:"",type:"tvslst",lst:[{type:"tvs",tvs:i}]}};const s=v(t,n,e);b(t,s);t.app.dispatch({type:"plot_edit",id:t.id,config:{snvindel:{details:s}}})}}};const n=x(t);if(Number.isInteger(n))i.state.activeCohort=n;r(i);continue}throw"unknown group type"}}function v(t,e,i){const n={groups:JSON.parse(JSON.stringify(t.state.config.snvindel.details.groups))};n.groups[i]=e;return n}function b(t,e){if(e.groups.length!=2)return;const[i,n]=e.groups;if(i.type=="info"||n.type=="info"||i.type=="population"&&n.type=="population"){const i=t.state.config.snvindel.details.groupTestMethods.findIndex((t=>t.name=="Allele frequency difference"));if(i==-1)throw"Allele frequency difference not found";e.groupTestMethodsIdx=i}}function x(t){if(!t.state.config.filter)return;const e=o(t.config.filter,"cohortFilter");if(e&&t.state.termdbConfig.selectCohort){const i=e.tvs.values.map((t=>t.key)).sort().join(",");const n=t.state.termdbConfig.selectCohort.values.findIndex((t=>t.keys.sort().join(",")==i));if(n==-1)throw"subcohort key is not in selectCohort.values[]";return n}}export{d as gbControlsInit,b as mayUpdateGroupTestMethodsIdx};
@@ -1 +0,0 @@
1
- import{r as e}from"./table-79e3e776.js";import{M as t,P as s,h as a,D as l,b as o}from"./app-a8c4854a.js";import{controlsInit as i}from"./controls-0bacec22.js";import"./tslib.es6-1f85f553.js";import"./controls.btns-1cb2bfab.js";import"./controls.config-0ccc9d79.js";import"./controls.overlay-fe20d41d.js";import"./roundValue-b0d0517c.js";import"path";import"./FilterRxComp-242f4615.js";import"./termdb.bins-9faa5170.js";import"./controls.term1-faa2efcf.js";import"./controls.divide-a9fe9466.js";new t;const n=[{label:"Pathway name"},{label:"enrichment score"},{label:"normalized enrichment score"},{label:"Geneset size"},{label:"pvalue"},{label:"sidak"},{label:"FDR"},{label:"Leading edge"}];class r{constructor(){this.type="gsea"}async init(e){e.plots.find((e=>e.id===this.id));const t=this.opts.holder.append("div").style("display","inline-block");const s=this.opts.holder.append("div").style("display","inline-block").style("margin-left","50px");const a=s.append("div").style("display","inline-block");const l=s.append("div").style("display","inline-block").style("vertical-align","top").style("margin-top","50px");const o=this.opts.holder.append("div").style("margin-left","50px");this.dom={holder:a,header:this.opts.header,controlsDiv:t,detailsDiv:l,tableDiv:o}}async setControls(){this.dom.controlsDiv.selectAll("*").remove();const e=[{label:"P-value filter cutoff (linear scale)",type:"number",chartType:"gsea",settingsKey:"pvalue",title:"P-value significance",min:0,max:1},{label:"P-value filter type",type:"radio",chartType:"gsea",settingsKey:"adjusted_original_pvalue",title:"Toggle between original and adjusted pvalues for volcano plot",options:[{label:"adjusted",value:"adjusted"},{label:"original",value:"original"}]}];const t={label:"Gene set group",type:"dropdown",chartType:"gsea",settingsKey:"pathway",title:"Display table showing original and adjusted pvalues corresponding to each significant pathway",boxLabel:"",options:[{label:"BP: subset of GO",value:"BP: subset of GO"},{label:"MF: subset of GO",value:"MF: subset of GO"},{label:"CC: subset of GO",value:"CC: subset of GO"},{label:"WikiPathways subset of CP",value:"WikiPathways subset of CP"},{label:"REACTOME subset of CP",value:"REACTOME subset of CP"},{label:"H: hallmark gene sets",value:"H: hallmark gene sets"}]};if(!this.settings.pathway){t.options.unshift({label:"-",value:"-"});this.settings.pathway="-"}e.push(t);this.components={controls:await i({app:this.app,id:this.id,holder:this.dom.controlsDiv,inputs:e})};this.components.controls.on("downloadClick.gsea",(()=>{downloadTable(this.table_rows,this.table_cols)}))}getState(e){const t=e.plots.find((e=>e.id===this.id));if(!t)throw`No plot with id='${this.id}' found`;return{config:t}}async main(){this.config=structuredClone(this.state.config);this.settings=this.config.settings.gsea;await this.setControls();this.dom.header.style("opacity",.6).style("padding-left","10px").style("font-size","0.75em").text("GENE SET ENRICHMENT ANALYSIS");d(this)}}async function d(t){if(t.settings.pathway!="-"){t.dom.detailsDiv.selectAll("*").remove();t.dom.holder.selectAll("*").remove();t.dom.tableDiv.selectAll("*").remove();t.config.gsea_params.geneSetGroup=t.settings.pathway;const s=t.dom.detailsDiv.append("div").text("Loading...");let a;try{a=await f(t.config.gsea_params);s.remove();if(a.error){throw a.error}}catch(e){alert("Error: "+e);return}const o=l({holder:t.dom.detailsDiv});const[i,r]=o.addRow();r.style("text-align","center").style("font-size","0.8em").style("opacity","0.8").text("COUNT");const d=[{label:"Gene sets analyzed",values:Object.keys(a.data).length}];for(const e of d){const[t,s]=o.addRow();t.text(e.label);s.style("text-align","end").text(e.values)}t.gsea_table_rows=[];for(const e of Object.keys(a.data)){const s=a.data[e];if(t.settings.adjusted_original_pvalue=="adjusted"&&t.settings.pvalue>=s.fdr){let a;if(s.es){a=s.es.toPrecision(4)}else{a=s.es}let l;if(s.nes){l=s.nes.toPrecision(4)}else{l=s.nes}let o;if(s.pval){o=s.pval.toPrecision(4)}else{o=s.pval}let i;if(s.sidak){i=s.sidak.toPrecision(4)}else{i=s.sidak}let n;if(s.fdr){n=s.fdr.toPrecision(4)}else{n=s.fdr}t.gsea_table_rows.push([{value:e},{value:a},{value:l},{value:s.geneset_size},{value:o},{value:i},{value:n},{value:s.leading_edge}])}else if(t.settings.adjusted_original_pvalue=="original"&&t.settings.pvalue>=s.pval){let a;if(s.pval){a=s.pval.toPrecision(4)}else{a=s.pval}let l;if(s.sidak){l=s.sidak.toPrecision(4)}else{l=s.sidak}let o;if(s.fdr){o=s.fdr.toPrecision(4)}else{o=s.fdr}t.gsea_table_rows.push([{value:e},{value:s.es.toPrecision(4)},{value:s.nes.toPrecision(4)},{value:s.geneset_size},{value:a},{value:l},{value:o},{value:s.leading_edge}])}}t.dom.tableDiv.selectAll("*").remove();const c=t.dom.tableDiv.append("div");e({columns:n,rows:t.gsea_table_rows,div:c,showLines:true,maxHeight:"30vh",singleMode:true,resize:true,noButtonCallback:async e=>{const s={genome:t.config.gsea_params.genome,geneset_name:t.gsea_table_rows[e][0].value,genes:t.config.gsea_params.genes,fold_change:t.config.gsea_params.fold_change,geneSetGroup:t.config.gsea_params.geneSetGroup,pickle_file:a.pickle_file};const l=t.dom.holder;l.selectAll("*").remove();const o=l.append("div").text("Loading...");const i=await f(s);o.remove();if(i.error)throw i.error;const n=URL.createObjectURL(i);const r=600;const d=400;l.append("img").attr("width",r).attr("height",d).attr("src",n)}})}}async function c(e,t){try{const t={settings:{gsea:{pvalue:1,adjusted_original_pvalue:"adjusted",pathway:undefined},controls:{isOpen:true}}};return s(t,e)}catch(e){throw`${e} [gsea getPlotConfig()]`}}const p=a(r);const g=p;function u(e,t){t.prepPlot({config:{chartType:"gsea"}})}async function f(e){return await o("genesetEnrichment",{body:e})}export{g as componentInit,c as getPlotConfig,p as gseaInit,u as makeChartBtnMenu};
@@ -1 +0,0 @@
1
- import{Matrix as e}from"./matrix-0614794d.js";import{F as t,b as r,I as s,bR as i,h as a}from"./app-a8c4854a.js";import{r as o}from"./hierCluster.renderers-610d8860.js";import{c as l,d as n,i as c}from"./hierCluster.interactivity-9b433033.js";import{k as d}from"./roundValue-b0d0517c.js";import{g as m,c as h}from"./FilterRxComp-242f4615.js";export{getPlotConfig}from"./hierCluster.config-da3510b1.js";import"./matrix.dom-00defa30.js";import"./matrix.interactivity-23d83183.js";import"./table-79e3e776.js";import"./tslib.es6-1f85f553.js";import"./pointer-c7475677.js";import"./matrix.renderers-43445f4f.js";import"./matrix.cluster-168bc96b.js";import"./matrix.controls-5eca7822.js";import"./controls.config-0ccc9d79.js";import"./controls.overlay-fe20d41d.js";import"path";import"./termdb.bins-9faa5170.js";import"./controls.term1-faa2efcf.js";import"./controls.divide-a9fe9466.js";import"./matrix.sorterUi-a741ba2e.js";import"./radiobutton-09bff425.js";import"./checkbox-96437f4d.js";import"./recover-36ada47f.js";import"./FilterStateless-046081c2.js";import"./app-ade9c62a.js";import"./termInfo-f851b415.js";import"./toggleButtons-002aeda1.js";import"./genesearch-ea59f5d4.js";import"./rehydrateFilter-12d118cb.js";import"./svg.legend-a94b0697.js";import"./matrix.data-b1d0febe.js";import"./matrix.layout-c2345231.js";import"./axis-747c801e.js";import"./matrix.serieses-972fbe5d.js";import"./matrix.cells-819d4991.js";import"./matrix.legend-2e647224.js";import"./legacy-d3-polyfill-bdb2d792.js";import"./matrix.groups-4660dd70.js";import"./filter-b3d3964e.js";import"./matrix.sort-80d9b788.js";import"./matrix.config-c54ca273.js";function p(e,t){let r;let s;if(t===undefined){for(const t of e){if(t!=null){if(r===undefined){if(t>=t)r=s=t}else{if(r>t)r=t;if(s<t)s=t}}}}else{let i=-1;for(let a of e){if((a=t(a,++i,e))!=null){if(r===undefined){if(a>=a)r=s=a}else{if(r>a)r=a;if(s<a)s=a}}}}return[r,s]}class f extends e{constructor(e){super(e);this.type="hierCluster";this.chartType="hierCluster"}async init(e){await super.init(e);this.maySetSandboxHeader();this.hcClipId=this.seriesClipId+"-hc";this.dom.hcClipRect=this.dom.svg.select("defs").append("clipPath").attr("id",this.hcClipId).attr("clipPathUnits","userSpaceOnUse").append("rect").attr("display","block");this.dom.topDendrogram=this.dom.svg.insert("g","g").attr("clip-path",`url(#${this.hcClipId})`).append("g").attr("class","sjpp-matrix-dendrogram").attr("data-testid","hierCluster_top_dendrogram").on("click",(e=>{const t=this.getClusterFromTopDendrogram(e);if(t){this.clickedClusterIds=this.getAllChildrenClusterIds(t);this.clickedClusterIds.push(t);const r=this.hierClusterData.clustering.col.mergedClusters.get(t);const s=r.children.map((e=>e.name));this.addSelectedSamplesOptions(s,e)}else{delete this.clickedClusterIds}if(this.clickedLeftClusterIds){delete this.clickedLeftClusterIds;this.plotDendrogramHclust()}else this.plotDendrogramHclust("top")}));this.dom.leftDendrogram=this.dom.svg.insert("g","g").attr("class","sjpp-matrix-dendrogram").attr("data-testid","hierCluster_left_dendrogram").on("click",(e=>{const t=this.getClusterFromLeftDendrogram(e);if(t){this.clickedLeftClusterIds=this.getAllChildrenClusterIds(t,true);this.clickedLeftClusterIds.push(t);const r=this.hierClusterData.clustering.row.mergedClusters.get(t);const s=r.children.map((e=>e.name));this.addSelectedRowsOptions(s,e)}else{delete this.clickedLeftClusterIds}if(this.clickedClusterIds){delete this.clickedClusterIds;this.plotDendrogramHclust()}else this.plotDendrogramHclust("left")}))}async setHierClusterData(e={}){this.prevServerData=this.currServerData;const r=new AbortController;const[s,i]=await this.api.detectStale((()=>this.requestData({signal:r.signal})),{abortCtrl:r});if(i)throw`stale sequenceId`;if(s.error)throw s.error;this.currServerData=structuredClone(s);if(!t(this.prevServerData,this.currServerData)){delete this.clickedClusterIds}const a=this.settings.hierCluster;const o=this.hcTermGroup.lst;if(!s.clustering){if(s.gene){throw`Cannot do clustering: data is only available for 1 gene (${s.gene}). Try again by adding more genes.`}}this.hierClusterData=s;const l=this.hierClusterData.clustering;this.setHierColorScale(l);this.settings.hierCluster.zScoreCap;const n={};for(const[e,t]of l.col.order.entries()){n[t.name]={sample:t.name};for(const[r,s]of l.row.order.entries()){const i=o.find((e=>e.term.name===s.name));const c=l.matrix[r][e];n[t.name][i.$id]={key:i.term.name,values:[{sample:t.name,dt:d[this.state.config.dataType],label:a.termGroupName,value:c}]}}}this.hcTermNameOrder=l.row.order.map((e=>e.name));this.hcTermSorter=(e,t)=>{const r=this.hcTermNameOrder.indexOf(e.tw.term.name);const s=this.hcTermNameOrder.indexOf(t.tw.term.name);if(r==-1&&s==-1)return 0;if(r==-1)return 1;if(s==-1)return-1;return r-s};this.hcSampleNameOrder=l.col.order.map((e=>e.name));this.hcSampleSorter=(e,t)=>{const r=this.hcSampleNameOrder.indexOf(e.sample);const s=this.hcSampleNameOrder.indexOf(t.sample);if(r==-1&&s==-1)return 0;if(r==-1)return 1;if(s==-1)return-1;return r-s};const c={};for(const e of o){if(s.byTermId[e.term.name])c[e.$id]=s.byTermId[e.term.name]}this.hierClusterSamples={refs:{byTermId:c,bySampleId:s.bySampleId},lst:l.col.order.map((e=>n[e.name])),samples:n}}async requestData({signal:e}){const t=this.currRequestOpts?.hierCluster||this.getHCRequestBody(this.state);const s=await r("termdb/cluster",{body:t,signal:e});return s}getHCRequestBody(e){this.hcTermGroup=this.config.termgroups.find((e=>e.type=="hierCluster"))||this.termOrder?.find((e=>e.grp.type=="hierCluster"))?.grp;const t=e.config.settings.hierCluster;const r={type:"tvslst",in:true,join:"and",lst:e.config.legendValueFilter.lst.filter((e=>!e.tvs.legendFilterType))};const s=this.getClusterRowTermsAsParameter();if(!s.length)throw"no data";if(!l.find((e=>e.value==t.clusterMethod)))throw"Invalid cluster method";if(!n.find((e=>e.value==t.distanceMethod)))throw"Invalid distance method";const i={genome:e.vocab.genome,dslabel:e.vocab.dslabel,dataType:e.config.dataType,clusterMethod:t.clusterMethod,distanceMethod:t.distanceMethod,terms:s,filter:m(h([e.filter,r])),filter0:e.filter0};return i}combineData(){if(!this.hierClusterSamples)return;const e=this.data;const t={};const r=[];for(const s in this.hierClusterSamples.samples){const i=this.hierClusterSamples.samples[s];t[s]=i;r.push(i);if(s in e.samples)Object.assign(i,e.samples[s]);const a=this.hierClusterSamples.refs.bySampleId[s]||{};if(!i._ref_)i._ref_=a;else Object.assign(i._ref_,a)}const s=this.hierClusterSamples.refs.byTermId;for(const t of Object.keys(s)){e.refs.byTermId[t]=Object.assign({},e.refs.byTermId[t]||{},s[t])}this.data={samples:t,lst:r,refs:e.refs}}setHierColorScale(e){const t=this.settings.hierCluster;const r=s(i[t.colorScale].domain,i[t.colorScale].range).clamp(true);const a=[];for(const t of e.matrix){a.push(...p(t))}const o=Math.min(t.zScoreCap,Math.max(...p(a).map(Math.abs)));const[l,n]=[-o,o];this.hierClusterValues={scale:r,min:l,max:n}}getValueColor(e){const t=this.settings.hierCluster.zScoreCap;return this.hierClusterValues.scale((e- -t)/(t*2))}getClusterRowTermsAsParameter(){const e=[...this.hcTermGroup.lst.map((e=>e.term))];e.sort(((e,t)=>e.name<t.name?-1:1));return e}}for(const e of[o,c]){for(const t in e)f.prototype[t]=e[t]}const u=a(f);const g=u;export{f as HierCluster,g as componentInit,u as hierClusterInit};
@@ -1 +0,0 @@
1
- import{P as e}from"./app-a8c4854a.js";import{getPlotConfig as t}from"./matrix.config-c54ca273.js";import{T as r,f as s}from"./roundValue-b0d0517c.js";import"./matrix.sort-80d9b788.js";import"./tslib.es6-1f85f553.js";import"path";async function a(a={},i){a.chartType="hierCluster";const o=await t(a,i);delete o.genes;o.settings.hierCluster={dataType:o.dataType,clusterSamples:true,clusterMethod:"average",distanceMethod:"euclidean",zScoreCap:5,xDendrogramHeight:100,yDendrogramHeight:200,colorScale:"blueWhiteRed"};const n=i.vocabApi.termdbConfig.hierCluster||{};e(o.settings.hierCluster,n.settings,a.settings?.hierCluster||{});{const e=o.settings.hierCluster.colorScale;if(!e)throw"colorScale missing"}o.settings.matrix.collabelpos="top";const p=o.settings.hierCluster.termGroupName;const m=o.termgroups.find((e=>e.type=="hierCluster"||e.name==p))||{name:p};m.type="hierCluster";if(!m.lst?.length){if(!Array.isArray(a.terms))throw"opts.terms[] not array (may show geneset edit ui)";const e=[];for(const t of a.terms){const a=t.term?t:{term:t};if(!a.term.type){if(o.dataType==r.GENE_EXPRESSION||o.dataType==r.METABOLITE_INTENSITY){a.term.type=o.dataType}else{throw`term type missing and cannot be assigned by dataType`}}else if(!["geneExpression","metaboliteIntensity","float"].includes(a.term.type)){throw"term type not supported in hierCluster"}else if(o.dataType&&a.term.type!==o.dataType){throw`cannot have term type ${a.term.type} in ${o.dataType} term group`}e.push(s(a,i.vocabApi))}m.lst=await Promise.all(e);if(o.termgroups.indexOf(m)==-1)o.termgroups.unshift(m)}o.settings.matrix.maxSample=1e5;return o}export{a as getPlotConfig};
@@ -1 +0,0 @@
1
- import{T as e}from"./roundValue-b0d0517c.js";function t(){if(!this.dom.header)return;switch(this.config.dataType){case e.GENE_EXPRESSION:this.dom.header.text("Gene Expression Clustering");break;case e.METABOLITE_INTENSITY:this.dom.header.text("Metabolite Intensity Clustering");break;default:throw`dataType '${this.config.dataType}' not recognized`}}function n(e){const t=this.dimensions;const n=this.config.settings.matrix;t.seriesXoffset;const s=window.devicePixelRatio<=1?1:window.devicePixelRatio;const r=this.hierClusterData.clustering;const a=r.row;const c=r.col;const h=this.settings.matrix.clusterRowh,{xDendrogramHeight:l,yDendrogramHeight:d}=this.settings.hierCluster,u=this.dimensions.dx;if(e!=="left"){if(!this.settings.hierCluster.clusterSamples){this.dom.topDendrogram.selectAll("*").remove()}else{const e=o(c.height,d);const t=d+1e-7;const r=u*c.inputOrder.length;const a=new OffscreenCanvas(r*s,t*s);const h=a.getContext("2d");h.scale(s,s);h.imageSmoothingEnabled=false;h.imageSmoothingQuality="high";h.strokeStyle="black";const g=new Map;for(const[t,n]of c.merge.entries()){const s=t+1;const o=[];const r=[];let a,l,m,p;if(n.n1<0){const[e,t]=i(n.n1,c.inputOrder,c.order);a=u*(t+.5);m=d;o.push({name:e})}else{if(!g.has(n.n1))throw"pair.n1 is positive but not seen before";const e=g.get(n.n1);a=e.x;m=e.y;o.push(...e.children);r.push(n.n1)}if(n.n2<0){const[e,t]=i(n.n2,c.inputOrder,c.order);l=u*(t+.5);p=d;o.push({name:e})}else{if(!g.has(n.n2))throw"pair.n1 is positive but not seen before";const e=g.get(n.n2);l=e.x;p=e.y;o.push(...e.children);r.push(n.n2)}const f=d-c.height[t].height*e;const x=this.clickedClusterIds?.includes(s);h.strokeStyle=x?"red":"black";h.beginPath();h.moveTo(a,m);h.lineTo(a,f);h.lineTo(l,f);h.lineTo(l,p);h.stroke();h.closePath();g.set(s,{x:(a+l)/2,y:f,children:o,childrenClusters:r,clusterPosition:{x1:a,x2:l,y1:m,y2:p,clusterY:f}})}this.renderImage(this.dom.topDendrogram,a,r,t,l+.5*u,n.margin.top+n.scrollHeight);c.mergedClusters=g}}if(e!=="top"){const e=o(a.height,l);const t=l+1e-7;const r=h*a.inputOrder.length;const c=new OffscreenCanvas(t*s,r*s);const u=c.getContext("2d");u.scale(s,s);u.imageSmoothingEnabled=false;u.imageSmoothingQuality="high";u.strokeStyle="black";const g=new Map;for(const[t,n]of a.merge.entries()){const s=t+1;const o=[];const r=[];let c,d,m,p;if(n.n1<0){const[e,t]=i(n.n1,a.inputOrder,a.order);m=h*(t+.5);c=l;o.push({name:e})}else{if(!g.has(n.n1))throw"pair.n1 is positive but not seen before";const e=g.get(n.n1);c=e.x;m=e.y;o.push(...e.children);r.push(n.n1)}if(n.n2<0){const[e,t]=i(n.n2,a.inputOrder,a.order);p=h*(t+.5);d=l;o.push({name:e})}else{if(!g.has(n.n2))throw"pair.n1 is positive but not seen before";const e=g.get(n.n2);d=e.x;p=e.y;o.push(...e.children);r.push(n.n2)}const f=l-a.height[t].height*e;const x=this.clickedLeftClusterIds?.includes(s);u.strokeStyle=x?"red":"black";u.beginPath();u.moveTo(c,m);u.lineTo(f,m);u.lineTo(f,p);u.lineTo(d,p);u.stroke();u.closePath();g.set(s,{x:f,y:(m+p)/2,children:o,childrenClusters:r,clusterPosition:{x1:c,x2:d,y1:m,y2:p,clusterX:f}})}const m=this.termOrder.find((e=>e.grp.type=="hierCluster"||e.grp.name==this.hcTermGroup.name));const p=m.grpIndex*n.rowgspace+m.prevGrpTotalIndex*n.rowh+m.totalHtAdjustments+n.margin.top+n.scrollHeight+d;this.renderImage(this.dom.leftDendrogram,c,t,r,0,p);a.mergedClusters=g}}async function s(e,t,n,s,o,i){const r=new FileReader;r.addEventListener("load",(()=>{e.selectAll("*").remove();e.append("image").attr("x",o+.033).attr("y",i+.033).attr("xlink:href",r.result).attr("width",n).attr("height",s)}),false);const a=await t.convertToBlob({quality:1});r.readAsDataURL(a)}function o(e,t){let n=e[0].height;for(const t of e)n=Math.max(n,t.height);return t/n}function i(e,t,n){const s=t[-e-1];if(!s)throw"minus not in inputOrder";const o=n.findIndex((e=>e.name==s));if(o==-1)throw"name not found in hc$order";return[s,o]}var r=Object.freeze({__proto__:null,maySetSandboxHeader:t,plotDendrogramHclust:n,renderImage:s});export{r};
@@ -1 +0,0 @@
1
- import{P as t,h as i}from"./app-a8c4854a.js";import{controlsInit as s}from"./controls-0bacec22.js";import"./controls.btns-1cb2bfab.js";import"./controls.config-0ccc9d79.js";import"./controls.overlay-fe20d41d.js";import"./roundValue-b0d0517c.js";import"./tslib.es6-1f85f553.js";import"path";import"./FilterRxComp-242f4615.js";import"./table-79e3e776.js";import"./termdb.bins-9faa5170.js";import"./controls.term1-faa2efcf.js";import"./controls.divide-a9fe9466.js";class o{constructor(){this.type="imagePlot"}async init(t){const i=t.plots.find((t=>t.id===this.id));this.getState(t);const s=this.opts.holder.append("div");this.dom={holder:s,controlsHolder:s.append("div").style("display","inline-block"),imageHolder:s.append("div").style("display","inline-block")};this.setControls();const o=await this.app.vocabApi.getSampleImages(i.sample.sampleId);if(o.error)throw o.error;for(const t of o.images){this.dom.imageHolder.append("img").style("padding","10px").attr("src",t.src).attr("width",i.settings.imagePlot.width).attr("height",i.settings.imagePlot.height)}}async setControls(){this.components={controls:await s({app:this.app,id:this.id,holder:this.dom.controlsHolder,inputs:[{label:"Chart width",type:"number",chartType:this.type,settingsKey:"width"},{label:"Chart height",type:"number",chartType:this.type,settingsKey:"height"}]})}}getState(t){const i=t.plots.find((t=>t.id===this.id));if(!i){throw`No plot with id='${this.id}' found. Did you set this.id before this.api = getComponentApi(this)?`}return{config:i,termfilter:t.termfilter,vocab:t.vocab}}}async function e(i,s){let o=a();if(i.settings)t(o,i.settings);const e={settings:{controls:{isOpen:false},imagePlot:o}};const r=t(e,i);return r}function a(){return{width:500,height:500}}const r=i(o);const n=r;async function p(t,i,s){const o={holder:i,state:{vocab:t.vocab,plots:[{chartType:"imagePlot",sample:s}]}};const e=await import("./plot.app-aa916e0e.js");await e.appInit(o)}export{n as componentInit,a as getDefaultImagePlotSettings,e as getPlotConfig,r as imagePlotInit,p as renderImagePlot};
@@ -1 +0,0 @@
1
- import{_ as t}from"./tslib.es6-1f85f553.js";import{appInit as e}from"./plot.app-aa916e0e.js";import{ai as o,z as s}from"./app-a8c4854a.js";import"./recover-36ada47f.js";import"./roundValue-b0d0517c.js";import"path";import"./FilterRxComp-242f4615.js";import"./table-79e3e776.js";import"./termdb.bins-9faa5170.js";import"./FilterStateless-046081c2.js";import"./app-ade9c62a.js";import"./termInfo-f851b415.js";import"./toggleButtons-002aeda1.js";import"./genesearch-ea59f5d4.js";import"./checkbox-96437f4d.js";import"./rehydrateFilter-12d118cb.js";function n(s,n,i){return t(this,void 0,void 0,(function*(){const[t,c]=yield r(s);if(c===null||c===void 0?void 0:c.length){return o(c,i)}const u={holder:i,vocabApi:{vocab:{terms:[]},main:()=>{},getTermdbConfig:()=>({})},state:{args:{data:t,genome:n},plots:[{chartType:"Disco",subfolder:"disco",extension:"ts"}]}};const a=yield e(u);return a}))}function r(e){return t(this,void 0,void 0,(function*(){if(Array.isArray(e.mlst)){return[e.mlst,null]}const t=[];const o=[];if(e.snvText)i(e.snvText,t,o);if(e.svText)c(e.svText,t,o);if(e.cnvText)u(e.cnvText,t,o);return[t,o]}))}function i(t,e,o){for(const s of t.trim().split("\n")){const t=s.trim().split("\t");if(t.length!=5){o.push("snv input not equal to 5 columns");continue}let n;try{n={dt:1,chr:t[0],position:Number(t[1]),gene:t[2],mname:t[3],class:a(t[4],o)}}catch(t){o.push(t);continue}e.push(n)}}function c(t,e,o){for(const s of t.trim().split("\n")){const t=s.trim().split("\t");if(t.length<4||t.length>6){o.push("sv input not equal to 4 or 6 columns");continue}let n;try{const e=t.length;if(e==4){n={dt:2,chrA:t[0],posA:Number(t[1]),chrB:t[2],posB:Number(t[3])}}else{n={dt:2,chrA:t[0],posA:Number(t[1]),geneA:t[2],chrB:t[3],posB:Number(t[4]),geneB:t[5]}}}catch(t){o.push(t);continue}e.push(n)}}function u(t,e,o){for(const s of t.trim().split("\n")){const t=s.trim().split("\t");if(t.length!=4){o.push("cnv input not equal to 4 columns");continue}let n;try{n={dt:4,chr:t[0],start:Number(t[1]),stop:Number(t[2]),value:Number(t[3])}}catch(t){o.push(t);continue}e.push(n)}}function a(t,e){const o=t.toLowerCase();const n=Object.values(s).find((t=>t.key.toLowerCase()===o||t.label.toLowerCase()===o));if(n){return n.key}else{e.push(`Invalid mutation class: ${t}`)}}export{n as launch};
@@ -1 +0,0 @@
1
- import{m as t,g as e,d as s}from"./tk-75566002.js";import{T as a}from"./toggleButtons-002aeda1.js";import{aN as l}from"./app-a8c4854a.js";import{r as o}from"./table-79e3e776.js";import{f as n}from"./FilterStateless-046081c2.js";import{g as i}from"./FilterRxComp-242f4615.js";import"./roundValue-b0d0517c.js";import{v as r}from"./violinRenderer-8215f40d.js";import"./block.legend-b2987cd9.js";import"./vcf-c4a23924.js";import"./partition-db811f6b.js";import"./arc-3d6751aa.js";import"./constant-426a1483.js";import"./math-2fb199c6.js";import"./axis-747c801e.js";import"./legacy-d3-polyfill-bdb2d792.js";import"./regression.results-c186a8dc.js";import"./axisstyle-fac7f76b.js";import"./ColorScale-9c76aef3.js";import"./log-cf45fcf2.js";import"./block-dcb130fb.js";import"./checkbox-96437f4d.js";import"./pointer-c7475677.js";import"./downloadTextfile-5723af95.js";import"./radiobutton-09bff425.js";import"./niceNumLabels-6cfc1508.js";import"./rehydrateFilter-12d118cb.js";import"./tslib.es6-1f85f553.js";import"./termdb.bins-9faa5170.js";import"path";import"./brush-c386fe3d.js";import"./nodrag-2c046d31.js";import"./line-264f8f9e.js";import"./basis-3870f5ba.js";function m(e,s,a,l){if(!s.leftlabels.doms.samples){s.leftlabels.doms.samples=t(s,a,l)}if(e.sampleTotalNumber){s.leftlabels.doms.samples.attr("class","sja_clbtext2").style("opacity",1).text(`${e.sampleTotalNumber} sample${e.sampleTotalNumber>1?"s":""}`).attr("data-testid","sjpp_mds3tk_samples_label").on("click",(async t=>{s.menutip.clear().showunder(t.target);await d(s,a);const l=s.menutip.d.append("div").style("margin","10px");g(l,e,s,a)}))}else{s.leftlabels.doms.samples.text("No samples").attr("class","").style("opacity",.5).on("click",null)}}function c(s,a,l,o){if(!a.leftlabels.doms.filterObj){a.leftlabels.doms.filterObj=t(a,l,o)}a.leftlabels.doms.filterObj.text(e(a.filterObj)).on("click",(async t=>{a.menutip.clear().showunder(t.target);const e={holder:a.menutip.d.append("div").style("margin","10px"),vocabApi:a.mds.termdb.vocabApi,callback:t=>{a.filterObj=t;a.load()}};p(e,l);n(e).main(a.filterObj)}))}function p(t,e){if(e.usegm){t.getCategoriesArguments={currentGeneNames:[e.usegm.name]}}else{t.getCategoriesArguments={rglst:structuredClone(e.rglst)}}}async function d(t,e){if(!t.mds.variant2samples.twLst){return}const s=t.menutip.d.append("div").style("margin","10px");const a=s.append("div").text("Loading...");try{const{summary:l}=await t.mds.getSamples({isSummary:true});t.leftlabels.__samples_data=l;a.remove();await f(l,s.append("div").attr("class","sja_mds3samplesummarydiv"),t,e)}catch(t){a.text(`Error: ${t.message||t}`);if(t.stack)console.log(t.stack)}}async function f(t,e,s,l){const o=[];for(const{termid:e,numbycategory:a}of t){o.push({label:s.mds.variant2samples.twLst.find((t=>t.term.id==e)).term.name+(a?`<span style="opacity:.8;font-size:.8em;float:right;margin-left: 5px;">n=${a.length}</span>`:"")})}new a({holder:e,tabsPosition:"vertical",linePosition:"right",tabs:o}).main();for(const[e,a]of t.entries()){const t=o[e].contentHolder.style("padding-left","20px");if(a.numbycategory){t.append("div").text("Click a category to create new track.").style("margin-bottom","10px").style("font-size",".8em").style("opacity",.5);u(a.termid,t,a.numbycategory,s,l);continue}if(a.density_data){if(!Number.isFinite(a.density_data.minvalue)||!Number.isFinite(a.density_data.maxvalue)){t.append("div").text("No data");continue}t.append("div").text("Select a range to create new track.").style("margin-bottom","10px").style("font-size",".8em").style("opacity",.5);y(a.termid,t,a,s,l);continue}throw"unknown summary data"}}function u(t,e,s,a,n){const i=a.mds.variant2samples.twLst.find((e=>e.term.id==t));if(!i)throw"showSummary4oneTerm(): tw not found from variant2samples.twLst";const r=[];for(const[t,e,a]of s){const s=[{value:i.term.values?.[t]?.label||t},{html:a==undefined?"":l(null,{f:e/a,v1:e,v2:a})},{html:e+(a?' <span style="font-size:.8em">/ '+a+"</span>":"")}];r.push(s)}o({div:e,rows:r,columns:[{nowrap:true},{},{}],showHeader:false,singleMode:true,noRadioBtn:true,noButtonCallback:t=>{m(s[t][0])}});async function m(e){a.menutip.clear();const l=await a.mds.termdb.vocabApi.getterm(t);if(!l.values||Object.keys(l.values).length==0){l.values={};for(const t of s){l.values[t[0]]={label:t[0],samplecount:t[1]}}}const o={type:"tvs",tvs:{term:l,values:[{key:e}]}};const i={type:"mds3",dslabel:a.dslabel,filter0:a.filter0,showCloseLeftlabel:true,filterObj:b(a,o),allow2selectSamples:a.allow2selectSamples};const r=n.block_addtk_template(i);n.tk_load(r)}}function b(t,e){if(t.filterObj){return i({type:"tvslst",join:"and",in:true,lst:[t.filterObj,e]})}return{type:"tvslst",in:true,join:"",lst:[e]}}async function y(t,e,s,a,l){const o=await a.mds.termdb.vocabApi.getterm(t);const n=async t=>{a.menutip.clear();const e={type:"tvs",tvs:{term:o,ranges:[{start:t.range_start,stop:t.range_end}]}};const s={type:"mds3",dslabel:a.dslabel,filter0:a.filter0,showCloseLeftlabel:true,filterObj:b(a,e),allow2selectSamples:a.allow2selectSamples};const n=l.block_addtk_template(s);l.tk_load(n)};const i=o.valueConversion?o.valueConversion.scaleFactor:1;const m=new r(e,s.density_data,400,100,10,20,n,i);m.render()}function g(t,e,a,l){t.append("div").text(`List ${e.sampleTotalNumber} sample${e.sampleTotalNumber>1?"s":""}`).attr("class","sja_menuoption sja_mds3_slb_sampletablebtn").on("click",(async()=>{a.menutip.clear();const t=a.menutip.d.append("div").text("Loading...").style("margin","15px");try{const{samples:e}=await a.mds.getSamples();await s(e,{div:a.menutip.d,tk:a,block:l});t.remove()}catch(e){t.text(e.message||e);console.log(e)}}))}export{c as makeSampleFilterLabel,m as makeSampleLabel};
@@ -1 +0,0 @@
1
- import{aM as t,aL as o,a8 as r}from"./app-a8c4854a.js";import{s as a}from"./legacy-d3-polyfill-bdb2d792.js";function n(n){if(n.geneexpression){if(n.geneexpression.maf){try{n.geneexpression.maf.get=new Function(...n.geneexpression.maf.get)}catch(t){return"invalid Javascript for get() of expression.maf of "+n.label}}}if(n.cohort){if(n.cohort.raw&&n.cohort.tosampleannotation){if(!n.cohort.key4annotation){return"cohort.tosampleannotation in use by .key4annotation missing of "+n.label}if(!n.cohort.annotation){n.cohort.annotation={}}let t=0;for(const o of n.cohort.raw){const r=o[n.cohort.tosampleannotation.samplekey];if(r){const t={};for(const r in o){t[r]=o[r]}n.cohort.annotation[r]=t}else{t++}}if(t)return t+" rows has no sample name from sample annotation of "+n.label;delete n.cohort.tosampleannotation}if(n.cohort.levels){if(n.cohort.raw){const r=t(n.cohort.raw,n.cohort.levels);n.cohort.root=o()(r);n.cohort.root.sum((t=>t.value))}}if(n.cohort.raw){delete n.cohort.raw}n.cohort.suncolor=r(a)}if(n.snvindel_attributes){for(const t of n.snvindel_attributes){if(t.get){try{t.get=new Function(...t.get)}catch(o){return"invalid Javascript for getter of "+JSON.stringify(t)}}else if(t.lst){for(const o of t.lst){if(o.get){try{o.get=new Function(...o.get)}catch(t){return"invalid Javascript for getter of "+JSON.stringify(o)}}}}}}if(n.stratify){if(!Array.isArray(n.stratify)){return"stratify is not an array in "+n.label}for(const t of n.stratify){if(!t.label){return"stratify method lacks label in "+n.label}if(t.bycohort){if(!n.cohort){return"stratify method "+t.label+" using cohort but no cohort in "+n.label}}else{if(!t.attr1){return"stratify method "+t.label+" not using cohort but no attr1 in "+n.label}if(!t.attr1.label){return".attr1.label missing in "+t.label+" in "+n.label}if(!t.attr1.k){return".attr1.k missing in "+t.label+" in "+n.label}}}}if(n.url4variant){for(const t of n.url4variant){t.makelabel=new Function(...t.makelabel);t.makeurl=new Function(...t.makeurl)}}}export{n as validate_oldds};