@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 +1 @@
1
- import{a as t}from"./axisstyle-fac7f76b.js";import{b as e,I as a,M as i,a9 as s,u as r,d as l,y as n}from"./app-a8c4854a.js";import{m as o}from"./radiobutton-09bff425.js";import{m as d}from"./checkbox-96437f4d.js";import{d as p}from"./axis-747c801e.js";import{p as c}from"./pointer-c7475677.js";const g=60;const h="#eee";const f="#c7edc5";const m="#9ed19b";const u="#36a32f";const _=15;const x=7;async function y(t,e){e.tkcloakon(t);e.block_setheight();if(t.uninitialized){B(t,e)}const a=[];let i=0;for(let t=e.startidx;t<=e.stopidx;t++){const s=e.rglst[t];a.push({chr:s.chr,start:s.start,stop:s.stop,width:s.width,x:i});i+=s.width+e.regionspace}for(const[t,s]of e.subpanels.entries()){i+=s.leftpad;a.push({chr:s.chr,start:s.start,stop:s.stop,width:s.width,exonsf:s.exonsf,subpanelidx:t,x:i});i+=s.width}t.regions=a;try{if(t.groups){for(const e of t.groups){delete e.partstack;delete e.dom.rightg.vslider.boxy}}const a=await v(t,e);if(a.error)throw a.error;if(a.colorscale){t.colorscale=a.colorscale}if(t.variants){for(let e=0;e<t.variants.length;e++){if(t.variants[e].pos!=a.allele_positions[e]){t.variants[e].pos=a.allele_positions[e];t.variants[e].ref=a.ref_alleles[e];t.variants[e].alt=a.alt_alleles[e]}}}b(a,t,e);e.tkcloakoff(t,{})}catch(a){if(a.stack)console.log(a.stack);if(t.pileup_shown){t.dom.pileup_axis.selectAll("*").remove();t.dom.pileup_img.attr("width",0)}if(t.groups){for(const e of t.groups){e.dom.img_fullstack.attr("width",0).attr("height",0);e.dom.img_partstack.attr("width",0).attr("height",0);e.dom.img_cover.attr("width",0).attr("height",0)}}t.height_main=t.height=100;if(typeof a=="string"&&a.startsWith("No reads in view range")){t.leftlabel_count.text("");t.leftlabel_skip.text("")}e.tkcloakoff(t,{error:a.message||a})}w(t,e);e.block_setheight()}async function v(t,a,i={}){const s={genome:a.genome.name,regions:t.regions,nucleotide_length:a.exonsf,pileupheight:t.pileupheight,...i};if(t.gdcFile){s.gdcFileUUID=t.gdcFile.uuid;s.gdcFilePosition=t.gdcFile.position}if(t.variants){s.variant=t.variants.map((t=>t.chr+"."+t.pos+"."+t.ref+"."+t.alt)).join(".");s.strictness=t.strictness;s.diff_score_plotwidth=t.dom.diff_score_plotwidth;if(Number.isFinite(t.max_diff_score)){s.max_diff_score=t.max_diff_score;s.min_diff_score=t.min_diff_score}}else if(t.sv){if(t.sv[0].strandA=="+"){t.sv[0].strandA="positive"}else if(t.sv[0].strandA=="-"){t.sv[0].strandA="negative"}if(t.sv[0].strandB=="+"){t.sv[0].strandB="positive"}else if(t.sv[0].strandB=="-"){t.sv[0].strandB="negative"}s.sv=t.sv.map((t=>t.chrA+"."+t.startA+"."+t.strandA+"."+t.chrB+"."+t.startB+"."+t.strandB)).join(".")}if(t.variants&&t.alleleAlreadyUpdated){s.alleleAlreadyUpdated=1;s.refseqs=t.variants.refseqs;s.altseqs=t.variants.altseqs;s.leftflankseqs=t.variants.leftflankseqs;s.rightflankseqs=t.variants.rightflankseqs;s.ref_positions=t.variants.ref_positions;s.refalleles=t.variants.refalleles;s.altalleles=t.variants.altalleles}if(t.uninitialized){s.getcolorscale=1;delete t.uninitialized}if(t.asPaired)s.asPaired=1;if("nochr"in t)s.nochr=t.nochr;if(t.file)s.file=t.file;if(t.url)s.url=t.url;if(t.indexURL)s.indexURL=t.indexURL;if(t.drop_pcrduplicates)s.drop_pcrduplicates=1;if(t.drop_supplementary_alignments)s.drop_supplementary_alignments=1;if(window.devicePixelRatio>1)s.devicePixelRatio=window.devicePixelRatio;const r=await e("tkbam",{headers:C(t),body:s});if(t.variants&&!t.alleleAlreadyUpdated){t.variants.refseqs=r.refseqs;t.variants.altseqs=r.altseqs;t.variants.refalleles=r.refalleles;t.variants.altalleles=r.altalleles;t.variants.leftflankseqs=r.leftflankseqs;t.variants.rightflankseqs=r.rightflankseqs;t.variants.ref_positions=r.ref_positions;t.alleleAlreadyUpdated=true}if(r.error)throw r.error;return r}function b(e,i,s){if("nochr"in e)i.nochr=e.nochr;if(e.pileup_data){i.pileup_shown=true;i.dom.pileup_img.attr("xlink:href",e.pileup_data.src).attr("width",e.pileup_data.width).attr("height",i.pileupheight);i.dom.pileup_axis.selectAll("*").remove();const s=a().domain([0,e.pileup_data.maxValue]).range([i.pileupheight,0]);t({axis:i.dom.pileup_axis.call(p().scale(s).ticks(5)),color:"black",showline:true})}else{i.pileup_shown=false;i.dom.pileup_axis.selectAll("*").remove();i.dom.pileup_img.attr("width",0)}if(e.count.read_limit_reached){i.toomanyreads=true;i.dom.read_limit_text.text(`Downsampled to ${e.groups.reduce(((t,e)=>t+e.count.r),0)} from ${e.count.read_limit_reached} reads. Try zooming into a smaller region.`).attr("x",e.pileup_data.width/2).attr("transform","scale(1)")}else{i.toomanyreads=false;i.dom.read_limit_text.attr("transform","scale(0)")}if(!i.groups){i.groups=[];for(const t of e.groups){const a=D(t,i,s,e);i.groups.push(a)}}else{q(e,i,s)}k(e,i,s);for(const t of i.groups){t.dom.message_rowg.selectAll("*").remove();let e=0;for(const a of t.data.messages){const r=t.dom.message_rowg.append("text").attr("x",s.width/2).attr("y",e+_-1).attr("font-size",_).attr("text-anchor","middle").text(a.t);if(a.isheader&&!i.gdcFile){r.attr("class","sja_clbtext2").on("click",(()=>{T(i,t,s)}))}e+=_}}A(i);let r=0,l=0;for(const t of i.groups){r+=t.data.count.r;if(i.asPaired){l+=t.data.count.t}}i.leftlabel_count.text((r?r+" read"+(r>1?"s":""):"")+(l?", "+l+" template"+(l>1?"s":""):""));if(e.count.skipped){i.leftlabel_skip.text(`${e.count.skipped} read${e.count.skipped>1?"s":""} skipped`)}else{i.leftlabel_skip.text("")}i.read_alignment_diff_scores_asc=e.read_alignment_diff_scores_asc}function w(t,e){const a=[t.tklabel.node().getBBox().width,t.leftlabel_count.node().getBBox().width,t.leftlabel_skip.node().getBBox().width,t.leftlabel_about?t.leftlabel_about.node().getBBox().width:0];if(t.show_readnames){for(const e of t.groups)a.push(e.ReadNameMaxwidth)}t.leftLabelMaxwidth=Math.max(...a);e.setllabel()}function k(t,e,a){if(!e.dom.variantg||e.sv)return;let i=0;for(const s of e.groups){if(s.data.type.includes("support_alt")){if(s.variantg){s.variantg.selectAll("*").remove()}else{s.variantg=e.glider.append("g")}let r,l;{const t=a.seekcoord(e.variants[0].chr,e.variants[i].pos);if(t[0]){r=t[0].x-a.exonsf/2}}{const t=a.seekcoord(e.variants[0].chr,e.variants[i].pos+e.variants[i].ref.length);if(t[0]){l=t[0].x-a.exonsf/2}}if(r===undefined||l===undefined||r>=a.width||l<=0)return;let n=l-r;if(l>t.pileup_data.width){n=t.pileup_data.width-r}else if(r<0){n=l}if(e.variants.length==1){s.variantg.append("rect").attr("x",Math.max(0,r)).attr("width",n).attr("height",e.dom.variantrowheight).attr("fill","grey")}else{s.variantg.append("rect").attr("x",Math.max(0,r)).attr("width",n).attr("height",e.dom.variantrowheight).attr("fill",s.data.group_color)}const o=e.variants[0].chr+"."+(t.allele_positions[i]+1).toString()+"."+t.ref_alleles[i]+"."+t.alt_alleles[i];let d=0;const p=10;const c=s.variantg.append("text").attr("y",e.dom.variantrowheight-2).attr("font-size",e.dom.variantrowheight).text(o);const g=c.node().getBBox();if(g.width+p<r){d=r-g.width-p}else if(g.width<n){d=Math.max(0,r)+(n-g.width)/2}else if(l+g.width<t.pileup_data.width){d=l+p}c.attr("x",d);if(t.refalleleerror==true){let a=0;const i=s.variantg.append("text").attr("x",a).attr("y",e.dom.variantrowheight).style("fill","red").attr("font-size",e.dom.variantrowheight).text("Incorrect reference allele");const o=i.node().getBBox();if(d==0&&o.width+p<r-g.width-p){a=g.width+p}else if(d==0&&o.width+p>r-g.width-p){a=l+p}else if(g.width+p<r&&l+o.width+p<t.pileup_data.width){a=l+p}else if(g.width+p<r&&l+o.width+p>=t.pileup_data.width&&o.width+p<n){a=Math.max(0,r)}else if(g.width+p<r&&l+o.width+p>=t.pileup_data.width){a=r-g.width-p*2-o.width}else if(g.width<n&&o.width+p<r){a=r-o.width-p}else if(g.width<n&&o.width+p>=r){a=l+p}else if(l+g.width<t.pileup_data.width&&o.width+p<r){a=r-o.width-p}else if(l+g.width<t.pileup_data.width&&o.width+p>=r){a=l+g.width+2*p}else if(l+g.width<t.pileup_data.width&&o.width<n){a=Math.max(0,r)}i.attr("x",a)}i+=1}}if(e.variants.length==1){e.fs_string.text("FS = "+t.strand_probability);if(t.strand_significance){e.fs_string.style("fill","red")}else{e.fs_string.style("fill","black")}e.fs_string.on("click",(a=>{e.tktip.clear().showunder(a.target);e.tktip.d.append("div").style("width","350px").html(`Fisher strand (FS) analysis score containing p-values in phred scale (-10*log(p-value)). If <a href='https://gatk.broadinstitute.org/hc/en-us/articles/360035890471' target='_blank'>FS>60</a>, the variant maybe a sequencing artifact and highlighted in red.\n\t\t\t\t\t</br></br>\n\t\t\t\t\tTo compute the p-value, Fisher's exact test is used for variants with a sequencing depth <= 300. If depth > 300 and each individual category > 150, chi-squared test is used. Following table displays read counts in each category.`);const i=e.tktip.d.append("table").style("margin-top","20px").style("border-spacing","5px");{const t=i.append("tr").style("font-weight","bold");t.append("td");t.append("td").text("Alternative");t.append("td").text("Reference")}{const e=i.append("tr");e.append("td").text("Forward").style("font-weight","bold");e.append("td").text(t.alternate_forward_count);e.append("td").text(t.reference_forward_count)}{const e=i.append("tr");e.append("td").text("Reverse").style("font-weight","bold");e.append("td").text(t.alternate_reverse_count);e.append("td").text(t.reference_reverse_count)}}))}if(Number.isFinite(t.max_diff_score)&&!e.dom.alleleSimilarityHeaderLabel){e.dom.alleleSimilarityHeaderLabel=e.dom.alleleSimilarityHeaderG.append("text").attr("y",2*e.dom.variantrowheight).attr("font-size",e.dom.variantrowheight).attr("class","sja_clbtext2").text("Allele similarity");const t=["Allele similarity: This chart shows the allele to which the read has maximum sequence similarity. In case of alternative and reference alleles, all reads in the same group have same color. In case of none category, color representing allele with maximum sequence color is displayed. In case of ambiguous category, for each read colors representing each alleles having equal similarity to each other are displayed."];let a=0;t.push("<br>Allele color codes:");let i=e.variants[0].pos;let s=e.variants[0].ref.length;e.is_same_ref=true;let r;for(const l of e.groups){if(l.data.type.includes("support_alt")){let r='<svg width="10" height="10" style = "display:inline-block;"><rect width="10" height="10" style="fill:'+l.data.group_color+';" /> </svg> '+e.variants[a].alt;t.push(r);if(e.variants[a].pos!=i||e.variants[a].ref.length!=s){e.is_same_ref=false}a+=1}else if(l.data.type=="support_ref"){r=l.data.group_color}}if(!r){r="#47C8FF"}if(e.is_same_ref==true){t.push('<svg width="10" height="10" style = "display:inline-block;"><rect width="10" height="10" style="fill:'+r+';" /> </svg> '+e.variants[0].ref)}else{t.push('<svg width="10" height="10" style = "display:inline-block;"><rect width="10" height="10" style="fill:'+r+';" /> </svg> Combined reference allele')}if(!e.gdcFile){t.push("<br><a href='https://proteinpaint.stjude.org/bam' target='_blank'>Click here to view details of this method</a>.")}e.dom.alleleSimilarityHeaderLabel.on("click",(a=>{const i=a.target.getBoundingClientRect();e.tktip.clear().show(i.x-250,i.y);e.tktip.d.append("div").style("width","300px").html(t.join("<br>"))}))}}function A(t){let e=0;if(t.pileup_shown)e+=t.pileupheight+t.pileupbottompad;if(t.toomanyreads){e+=t.dom.read_limit_height;t.dom.read_limit_text.attr("y",e);e+=t.dom.read_limit_bottompad}if(t.dom.variantg){t.dom.variantg.attr("transform","translate(0,"+e+")")}if(t.dom.alleleSimilarityHeaderG){t.dom.alleleSimilarityHeaderG.attr("transform","translate(0,"+(t.pileupheight-t.pileupbottompad*2)+")")}let a=0;for(const i of t.groups){if(i.data.type.includes("support_alt")){i.variantg.attr("transform","translate(0,"+e+")");e+=t.dom.variantrowheight+t.dom.variantrowbottompad;a+=1}i.dom.groupg.transition().attr("transform","translate(0,"+e+")");i.dom.rightg.transition().attr("transform","translate(0,"+e+")");i.msgheight=_*i.data.messages.length;i.dom.leftg.transition().attr("transform","translate(0,"+(e+i.msgheight)+")");i.dom.imgg.transition().attr("transform","translate(0,"+i.msgheight+")");if(t.variants){i.dom.diff_score_barplot_fullstack.transition().attr("transform","translate(0,"+i.msgheight+")")}if(i.partstack){if(t.variants){i.dom.diff_score_barplot_partstack.transition().attr("transform","translate(0,"+i.msgheight+")");i.dom.rightg.vslider.g.transition().attr("transform","translate("+t.dom.diff_score_plotwidth*1.1+","+i.msgheight+") scale(1)")}else{i.dom.rightg.vslider.g.transition().attr("transform","translate(0,0) scale(1)")}}e+=i.data.height+i.msgheight;if(i.data.type.includes("support_alt")&&a<t.variants.length){e+=t.dom.variantrowheight}}t.height_main=t.height=e;t.height_main+=t.toppad+t.bottompad}function q(t,e,a){for(let a=0;a<e.groups.length;a++){const i=t.groups.find((t=>t.type==e.groups[a].data.type));if(!i){S(e.groups[a]);e.groups.splice(a,1)}}for(const i of t.groups){const s=e.groups.find((t=>t.data.type==i.type));if(!s){const s=D(i,e,a,t);e.groups.push(s)}else{s.data=i;R(s,e,a);s.dom.img_fullstack.attr("xlink:href",s.data.src).attr("width",s.data.width).attr("height",s.data.height);if(e.variants){s.ReadNameMaxwidth=0;if(e.show_readnames){if(s.data.templatebox){s.dom.read_names_g.selectAll("*").remove();let t=1;for(const e of s.data.templatebox){const a=s.dom.read_names_g.append("text").attr("x",0).attr("y",s.data.height*t/s.data.templatebox.length).attr("text-anchor","end").style("fill","black").attr("font-size",s.data.height/s.data.templatebox.length).text(e.qname);s.ReadNameMaxwidth=Math.max(s.ReadNameMaxwidth,a.node().getBBox().width);t+=1}}}else{s.dom.read_names_g.selectAll("*").remove();s.ReadNameMaxwidth=0}if(s.my_partstack){if(s.data.allowpartstack){Y(s,e,a,s.my_partstack)}}else{s.dom.diff_score_barplot_fullstack.attr("xlink:href",i.diff_scores_img.src).attr("width",i.diff_scores_img.width).attr("height",i.diff_scores_img.height)}}s.dom.img_partstack.attr("width",0).attr("height",0);if(e.variants){s.dom.diff_score_barplot_partstack.attr("width",0).attr("height",0)}s.dom.rightg.vslider.g.transition().attr("transform","scale(0)");s.dom.img_cover.attr("width",s.data.width).attr("height",s.data.height)}}}function R(t,e,a){t.dom.box_move.attr("width",0);M(t,e,a)}function M(t,e,a){if(!t.data.templatebox){t.dom.box_stay.attr("width",0);return}if(!t.clickedtemplate){t.dom.box_stay.attr("width",0);return}for(const i of t.data.templatebox){if(i.qname==t.clickedtemplate.qname){if(e.asPaired||i.isfirst&&t.clickedtemplate.isfirst||i.islast&&t.clickedtemplate.islast){const e=Math.max(0,i.x1);const s=Math.min(a.width,i.x2);t.dom.box_stay.attr("width",s-e).attr("height",i.y2-i.y1).attr("transform","translate("+e+","+i.y1+")");return}}}t.dom.box_stay.attr("width",0)}function S(t){t.dom.message_rowg.remove();t.dom.img_fullstack.remove();t.dom.img_partstack.remove();t.dom.diff_score_barplot_fullstack?.remove();t.dom.diff_score_barplot_partstack?.remove();t.dom.read_names_g?.remove();t.dom.leftg.remove();t.dom.box_stay?.remove();t.dom.box_move?.remove();t.dom.rightg.remove()}function B(t,e){if(t.gdcFile){e.gdcBamSliceDownloadBtn.style("display","inline-block")}N(t);if(t.drop_pcrduplicates==undefined){t.drop_pcrduplicates=true}t.drop_supplementary_alignments=false;if(t.show_readnames==undefined){t.show_readnames=false}t.config_handle=e.maketkconfighandle(t).attr("y",10+e.labelfontsize).on("click",(()=>{F(t,e)}));t.readMenu=new i;t.readMenu.d.style("max-width","90vw").style("max-height","65vh").attr("class","sjpp_show_scrollbar");t.multiAlignMenu=new i;t.multiAlignMenu.d.style("max-width","90vw").style("max-height","65vh").attr("class","sjpp_show_scrollbar");t.pileupheight=100;t.pileupbottompad=6;t.dom={pileup_g:t.glider.append("g"),pileup_axis:t.glider.append("g"),read_limit_height:15,read_limit_bottompad:6,read_limit_g:t.glider.append("g")};t.dom.pileup_img=t.dom.pileup_g.append("image");t.dom.read_limit_text=t.dom.read_limit_g.append("text").style("fill","red").attr("text-anchor","middle").attr("font-size",t.dom.read_limit_height).attr("transform","scale(0)");if(t.variants){t.dom.variantg=t.glider.append("g");t.dom.alleleSimilarityHeaderG=t.gright.append("g");t.dom.variantrowheight=15;t.dom.variantrowbottompad=5;t.dom.diff_score_plotwidth=20;t.fs_string=e.maketklefthandle(t,t.pileupheight+t.dom.variantrowheight/2)}else if(t.sv){t.dom.variantg=t.glider.append("g");t.dom.variantrowheight=15;t.dom.variantrowbottompad=5}t.asPaired=false;let a=e.labelfontsize+5;t.leftlabel_count=e.maketklefthandle(t,a);a+=e.labelfontsize;t.leftlabel_skip=e.maketklefthandle(t,a).text("");if(t.aboutThisFile){a+=e.labelfontsize;t.leftlabel_about=e.maketklefthandle(t,a).text("About the BAM file").on("mouseover",(e=>{t.tktip.showunder(e.target).clear();s(t.tktip.d,t.aboutThisFile)})).on("mouseout",(()=>{t.tktip.hide()}))}delete t.alleleAlreadyUpdated;if(t.groups){for(const e of t.groups)S(e);delete t.groups}}function N(t,e){const a=r();if(a.has("variant")){t.variants=[];if(typeof a.get("variant")=="string"){const e=a.get("variant").split(".");if(e.length==4){const a=Number(e[1]);if(!Number.isInteger(a))throw"urlparam variant pos is not integer";if(!e[2])throw"ref allele missing";if(!e[3])throw"alt allele missing";t.variants.push({chr:e[0],pos:a-1,ref:e[2],alt:e[3],strictness:1})}}else{const e=a.get("variant");for(const a of e.variants){if(!Number.isInteger(a.pos))throw"urlparam variant pos is not integer";if(!a.ref)throw"ref allele missing";if(!a.alt)throw"alt allele missing";t.variants.push({chr:e.chr,pos:Number(a.pos)-1,ref:a.ref,alt:a.alt})}}if(a.has("strictness")){const e=a.get("strictness");if(!Number.isInteger(Number(e)))throw"strictness must be an integer";t.strictness=Number(e);if(t.strictness!=1&&t.strictness!=0){throw"strictness must be 0 or 1"}}else{t.strictness=1}}else if(a.has("sv")){const e=a.get("sv").split(".");t.sv=[];if(e.length==7){t.sv.push({chrA:e[0],startA:e[1],strandA:e[2],chrB:e[3],startB:e[4],strandB:e[5],contig:e[6]})}else if(e.length==6){t.sv.push({chrA:e[0],startA:e[1],strandA:e[2],chrB:e[3],startB:e[4],strandB:e[5]})}}}function D(t,e,a,i){const s={data:t,dom:{groupg:e.glider.append("g"),rightg:e.gright.append("g"),leftg:e.gleft.append("g")}};s.dom.message_rowg=s.dom.groupg.append("g");s.dom.imgg=s.dom.groupg.append("g");s.dom.rightg.vslider=s.dom.rightg.append("g");s.dom.rightg.vslider.g=s.dom.rightg.vslider.append("g").attr("transform","scale(0)");if(e.variants){s.dom.diff_score_g=s.dom.rightg.append("g");s.dom.read_names_g=s.dom.leftg.append("g");s.dom.diff_score_barplot_fullstack=s.dom.diff_score_g.append("image").attr("xlink:href",t.diff_scores_img.src).attr("width",t.diff_scores_img.width).attr("height",t.diff_scores_img.height);s.dom.diff_score_barplot_partstack=s.dom.diff_score_g.append("image").attr("xlink:href",t.diff_scores_img.src).attr("width",0).attr("height",0);if(!s.allowpartstack&&!Number.isFinite(e.max_diff_score)&&e.variants){e.max_diff_score=i.max_diff_score;e.min_diff_score=i.min_diff_score}e.pileupheight+e.dom.variantrowheight*2;if(e.toomanyreads){e.pileupheight+e.dom.variantrowheight*3}}s.dom.img_fullstack=s.dom.imgg.append("image").attr("xlink:href",s.data.src).attr("width",s.data.width).attr("height",s.data.height);s.dom.img_partstack=s.dom.imgg.append("image").attr("width",0).attr("height",0);s.dom.box_move=s.dom.imgg.append("rect").attr("stroke","black").attr("fill","none");s.dom.box_stay=s.dom.imgg.append("rect").attr("stroke","magenta").attr("fill","none");let r;const n=e.regions[0].x;const o=e.regions[e.regions.length-1].x+e.regions[e.regions.length-1].width;s.dom.img_cover=s.dom.imgg.append("rect").attr("fill","white").attr("fill-opacity",0).attr("width",s.data.width).attr("height",s.data.height).on("mousedown",(t=>{r=t.clientX})).on("mousemove",(t=>{if(s.data.allowpartstack){return}if(!s.data.templatebox)return;const[a,i]=c(t,s.dom.img_cover.node());let r=0;for(const t of s.data.templatebox){r+=1;const l=Math.max(t.x1,n);const d=Math.min(t.x2,o);if(a>l&&a<d&&i>t.y1&&i<t.y2){s.dom.box_move.attr("width",d-l).attr("height",t.y2-t.y1).attr("transform","translate("+l+","+t.y1+")");if(e.readAlignmentTable&&e.readAlignmentTableGroup==s.data.type){z(e,r)}else if(e.readAlignmentTable&&e.readAlignmentTableGroup!=s.data.type){z(e,s.data.templatebox.length+10)}return}}})).on("click",(t=>{if(r!=t.clientX)return;const[i,l]=c(t,s.dom.img_cover.node());s.my_partstack=l;if(s.data.allowpartstack){Y(s,e,a,l);return}if(!s.data.templatebox)return;e.readMenu.clear().show(50,t.clientY);let d=true;for(let t=0;t<e.regions.length;t+=1){for(const r of s.data.templatebox){const p=Math.max(r.x1,n);const c=Math.min(r.x2,o);const g=Math.max(e.regions[t].x,r.x1);const h=Math.min(e.regions[t].x+e.regions[t].width,r.x2);if(i>g&&i<h&&l>r.y1&&l<r.y2){if(s.clickedtemplate&&s.clickedtemplate.qname==r.qname){if(e.asPaired||r.isfirst&&s.clickedtemplate.isfirst||r.islast&&s.clickedtemplate.islast){delete s.clickedtemplate;s.dom.box_stay.attr("width",0);break}}s.clickedtemplate={qname:r.qname};if(e.asPaired){s.clickedtemplate.isfirst=true}else{if(r.isfirst)s.clickedtemplate.isfirst=true;if(r.islast)s.clickedtemplate.islast=true}s.dom.box_stay.attr("width",c-p).attr("height",r.y2-r.y1).attr("transform","translate("+p+","+r.y1+")");I(e,a,r,t);d=false}}}if(d)e.readMenu.hide()}));s.dom.rightg.vslider.bar=s.dom.rightg.vslider.g.append("rect").attr("fill",h).attr("x",10).attr("width",20).on("mouseover",(()=>s.dom.rightg.vslider.bar.attr("fill","#fae8e8"))).on("mouseout",(()=>s.dom.rightg.vslider.bar.attr("fill",h))).on("click",(()=>{delete s.dom.rightg.vslider.boxy;delete s.partstack;if(s.my_partstack){delete s.my_partstack}s.ReadNameMaxwidth=0;s.data=s.data_fullstack;Q(s,e,a);A(e);a.block_setheight()}));s.dom.rightg.vslider.boxg=s.dom.rightg.vslider.g.append("g");s.dom.rightg.vslider.box=s.dom.rightg.vslider.boxg.append("rect").attr("fill",f).attr("width",40).on("mousedown",(t=>{t.preventDefault();s.dom.rightg.vslider.box.attr("fill",m);const i=s.data.height;const r=t.clientY;let n=0;const o=l(document.body);o.on("mousemove",(t=>{const a=t.clientY;const l=a-r;if(l<0){if(s.dom.rightg.vslider.boxy+l<=0)return}else{if(s.dom.rightg.vslider.boxy+l>=i-s.dom.rightg.vslider.boxh)return}n=l;if(e.variants){s.dom.diff_score_barplot_partstack.attr("transform","translate(0,"+(-1*n*s.data_fullstack.stackcount*s.data.stackheight/i+s.msgheight)+")");s.dom.read_names_g.attr("transform","translate(0,"+-1*n*s.data_fullstack.stackcount*s.data.stackheight/i+")")}s.dom.rightg.vslider.boxg.attr("transform","translate(0,"+(s.dom.rightg.vslider.boxy+n)+")");s.dom.img_partstack.attr("y",-(n*s.data_fullstack.stackcount*s.data.stackheight/i));s.dom.box_move.attr("width",0);s.dom.box_stay.attr("width",0)}));o.on("mouseup",(async()=>{s.dom.rightg.vslider.box.attr("fill",f);o.on("mousemove",null).on("mouseup",null);if(n==0)return;s.dom.rightg.vslider.boxy+=n;const t=Math.ceil(s.data_fullstack.stackcount*n/i);s.partstack.start+=t;s.partstack.stop+=t;a.tkcloakon(e);const r=await v(e,a,{stackstart:s.partstack.start,stackstop:s.partstack.stop,grouptype:s.data.type});s.data=r.groups[0];Q(s,e,a);A(e);a.tkcloakoff(e,{});a.block_setheight()}))}));s.dom.rightg.vslider.boxtopline=s.dom.rightg.vslider.boxg.append("line").attr("stroke",m).attr("stroke-width",3).attr("x2",40).on("mouseover",(()=>s.dom.rightg.vslider.boxtopline.attr("stroke",u))).on("mouseout",(()=>s.dom.rightg.vslider.boxtopline.attr("stroke",m))).on("mousedown",(t=>{t.preventDefault();const i=s.data.height;const r=t.clientY;let n=0;const o=l(document.body);o.on("mousemove",(t=>{const e=t.clientY;const a=e-r;if(a<0){if(s.dom.rightg.vslider.boxy+a<=0)return}else{if(s.dom.rightg.vslider.boxh-a<=g*i/s.data_fullstack.stackcount)return}n=a;s.dom.rightg.vslider.boxg.attr("transform","translate(0,"+(s.dom.rightg.vslider.boxy+n)+")");s.dom.rightg.vslider.box.attr("height",s.dom.rightg.vslider.boxh-n);s.dom.rightg.vslider.boxbotline.attr("y1",s.dom.rightg.vslider.boxh-n).attr("y2",s.dom.rightg.vslider.boxh-n)}));o.on("mouseup",(async()=>{o.on("mousemove",null).on("mouseup",null);if(n==0)return;s.dom.rightg.vslider.boxy+=n;s.partstack.start+=Math.ceil(s.data_fullstack.stackcount*n/i);a.tkcloakon(e);const t=await v(e,a,{stackstart:s.partstack.start,stackstop:s.partstack.stop,grouptype:s.data.type});s.data=t.groups[0];Q(s,e,a);a.tkcloakoff(e,{});A(e);a.block_setheight()}))}));s.dom.rightg.vslider.boxbotline=s.dom.rightg.vslider.boxg.append("line").attr("stroke",m).attr("stroke-width",3).attr("x2",40).on("mouseover",(()=>s.dom.rightg.vslider.boxbotline.attr("stroke",u))).on("mouseout",(()=>s.dom.rightg.vslider.boxbotline.attr("stroke",m))).on("mousedown",(t=>{t.preventDefault();const i=s.data.height;const r=t.clientY;let n=0;const o=l(document.body);o.on("mousemove",(t=>{const e=t.clientY;const a=e-r;if(a<0){if(s.dom.rightg.vslider.boxh+a<=g*i/s.data_fullstack.stackcount)return}else{if(s.dom.rightg.vslider.boxy+a>=i-s.dom.rightg.vslider.boxh)return}n=a;s.dom.rightg.vslider.box.attr("height",s.dom.rightg.vslider.boxh+n);s.dom.rightg.vslider.boxbotline.attr("y1",s.dom.rightg.vslider.boxh+n).attr("y2",s.dom.rightg.vslider.boxh+n)}));o.on("mouseup",(async()=>{o.on("mousemove",null).on("mouseup",null);if(n==0)return;s.dom.rightg.vslider.boxh+=n;s.partstack.stop+=Math.ceil(s.data_fullstack.stackcount*n/i);a.tkcloakon(e);const t=await v(e,a,{stackstart:s.partstack.start,stackstop:s.partstack.stop,grouptype:s.data.type});s.data=t.groups[0];Q(s,e,a);A(e);a.tkcloakoff(e,{});a.block_setheight()}))}));return s}async function P(t,a,i){const s={alignOneGroup:a.data.type,genome:i.genome.name,regions:t.regions,variant:t.variants.map((t=>t.chr+"."+t.pos+"."+t.ref+"."+t.alt)).join(".")};if(t.file)s.file=t.file;if(t.url)s.url=t.url;if(t.indexURL)s.indexURL=t.indexURL;if(t.gdcFile){s.gdcFileUUID=t.gdcFile.uuid;s.gdcFilePosition=t.gdcFile.position}if(t.alleleAlreadyUpdated){s.alleleAlreadyUpdated=1;s.refseqs=t.variants.refseqs;s.altseqs=t.variants.altseqs;s.refalleles=t.variants.refalleles;s.altalleles=t.variants.altalleles;s.leftflankseqs=t.variants.leftflankseqs;s.rightflankseqs=t.variants.rightflankseqs;s.ref_positions=t.variants.ref_positions;s.strictness=t.strictness}if(t.asPaired)s.asPaired=1;if("nochr"in t)s.nochr=t.nochr;if(t.drop_pcrduplicates)s.drop_pcrduplicates=1;if(t.drop_supplementary_alignments)s.drop_supplementary_alignments=1;if(a.partstack){s.stackstart=a.partstack.start;s.stackstop=a.partstack.stop;s.grouptype=a.data.type}return await e("tkbam",{headers:C(t),body:s})}function C(t){const e={"Content-Type":"application/json",Accept:"application/json"};if(t.gdcToken)e["X-Auth-Token"]=t.gdcToken;return e}function F(t,e){{const e=t.config_handle.node().getBoundingClientRect();t.tkconfigtip.clear().show(e.x-300,e.y)}const a=t.tkconfigtip.d.append("div").style("max-width","50vw");{const i=a.append("div");i.append("span").html("Show reads as:&nbsp;").style("opacity",.5).style("margin","10px 5px");o({holder:i,options:[{label:"Single",value:false,checked:!t.asPaired},{label:"Paired",value:true,checked:t.asPaired}],styles:{display:"inline-block",margin:"10px 5px"},callback:a=>{t.asPaired=a;y(t,e)}})}{d({holder:a.append("div"),labeltext:"Drop PCR or optical duplicates",checked:t.drop_pcrduplicates,divstyle:{display:"block",margin:"10px 5px",height:"10px","margin-left":"6.5px"},callback:()=>{t.drop_pcrduplicates=!t.drop_pcrduplicates;y(t,e)}})}if(t.variants){d({holder:a.append("div"),labeltext:"Show read names",checked:t.show_readnames,divstyle:{display:"block",margin:"10px 5px",height:"10px","margin-left":"6.5px"},callback:()=>{t.show_readnames=!t.show_readnames;y(t,e)}});if(t.variants[0].strictness==0);else if(!t.variants[0].strictness){t.variants[0].strictness=1}const i=a.append("div");i.append("span").html("Strictness: ").style("display","block").style("height","10px").style("opacity",.5).style("margin","10px 5px").style("margin-top","20px");o({holder:i,options:[{label:'Lenient: "None group" is not generated.',value:0,checked:t.strictness==0},{label:'Strict: "None group" is generated for reads with imperfect match to both reference and alternative alleles.',value:1,checked:t.strictness==1}],styles:{display:"block",margin:"10px 5px",height:"10px","margin-left":"30px"},callback:a=>{t.strictness=a;y(t,e)}})}a.append("div").style("display","inline-block").style("height","10px").style("margin-top","20px").style("font-size",".8em").html(`\n\t<ul style="padding-left:15px">\n\t <li><b>Matches</b> are rendered as gray boxes aligned to the reference.</li>\n\t <li><b>Mismatches</b> will be checked when 1 bp is wider than 1 pixel, and are rendered as red boxes aligned to the reference.</li>\n\t <li><b>Softclips</b> are rendered as blue boxes not aligned to the reference.</li>\n\t <li><b>Base qualities</b> are rendered when 1 bp is wider than 2 pixels. See color scale below. When base quality is not used or is unavailable, full colors are used.</li>\n\t <li><b>Sequences</b> from mismatch and softclip will be printed when 1 bp is wider than 7 pixels.</li>\n\t <li>An <b>insertion</b> with on-screen size wider than 1 pixel will be rendered as cyan text between aligned bases, in either a letter or the number of inserted bp. Text color scales by average base quality when that is in use.</li>\n\t <li><b>Deletions</b> are gaps joined by black horizontal lines.</li>\n\t <li><b>Split reads</b> and splice junctions are indicated by solid gray lines.</li>\n\t <li><b>Read pairs</b> are joined by dashed gray lines.</li>\n <li><b>Discordant reads</b> Discordant reads are colored based on their respective features as described below:<ul style="list-style-type:none;"> <li> <svg width="10" height="10" style = "display:inline-block;"> <rect width="10" height="10" style="fill:#3B7A57;" /> </svg> Read pair has wrong insert size </li> <li> <svg width="10" height="10" style = "display:inline-block;"> <rect width="10" height="10" style="fill:#6B4423;" /> </svg> Mate is unmapped </li> <li> <svg width="10" height="10" style = "display:inline-block;"> <rect width="10" height="10" style="fill:#fc6df3;" /> </svg> Wrong orientation </li> <li> <svg width="10" height="10" style = "display:inline-block;"> <rect width="10" height="10" style="fill:#d48b37;" /> </svg> Mate mapped to different chromosome </li> </ul>\n </li> \n\t</ul>`);a.append("div").style("margin-top","10px").append("img").attr("width",t.colorscale.width).attr("height",t.colorscale.height).attr("src",t.colorscale.src);a.append("div").style("font-size",".8em").html(`\n`)}function T(t,e,a){if(t.variants){U(t,e,a)}}function z(t,e){const a=t.readAlignmentTable._groups[0][0].querySelectorAll("tr");a.forEach((a=>{if(a.rowIndex==e+1&&!t.is_align_gene){a.style.setProperty("font-weight","bold");const t=a.querySelectorAll("td");t.forEach((t=>{if(t.style.backgroundColor.toString()=="rgb(255, 255, 255)"){t.style.setProperty("background-color","yellow")}}))}else if(a.rowIndex==e+2&&t.is_align_gene){a.style.setProperty("font-weight","bold");const t=a.querySelectorAll("td");t.forEach((t=>{if(t.style.backgroundColor.toString()=="rgb(255, 255, 255)"){t.style.setProperty("background-color","yellow")}}))}else{a.style.setProperty("font-weight","normal");const t=a.querySelectorAll("td");t.forEach((t=>{if(t.style.backgroundColor.toString()=="yellow"){t.style.setProperty("background-color","rgb(255, 255, 255)")}}))}}))}async function j(t,e,a,i,s){const r=[];const l=[];const n=[];let o=a.alignmentData.final_read_align[0];let d=t.variants[0].pos-t.variants.leftflankseqs[0].length;t.variants[0].pos+t.variants.rightflankseqs[0].length;if(i.data.type=="support_alt"+s.toString()){d=t.variants[s].pos-t.variants.leftflankseqs[s].length;t.variants[s].pos+t.variants.rightflankseqs[s].length}let p=d;let c=d;let g=0;let h=t.readAlignmentTable.node().children[0];let f=0;let m=false;let u=0;for(const a of o){if(a=="-"){if(m==true){l.push(1);n.push("break");p+=1;c+=1}else{const a=await H(e,t,p,c-1,g);const i={src:a.src,width:g,height:a.height,colspan:f};r.push(i);n.push("gene_model");f=0;p=d+u+1;c=d+u+1;g=0;m=true;l.push(1);n.push("break")}f+=1;g+=h.children[u].getBoundingClientRect().width}else if(i.data.type=="support_alt"+s.toString()&&t.variants[s].alt.length>t.variants[s].ref.length&&t.variants[s].pos<d+u&&t.variants[s].pos+t.variants[s].alt.length-1>=d+u);else if(t.variants[0].pos==d+u&&i.data.type=="support_alt"+s.toString()){if(t.variants[s].ref.length==1&&t.variants[s].alt.length==1){continue}if(t.variants[s].ref.length>=t.variants[s].alt.length){c+=1;f+=1;g+=h.children[u+1].getBoundingClientRect().width}const a=await H(e,t,p,c,g);const i={src:a.src,width:g,height:a.height,colspan:f};r.push(i);n.push("gene_model");f=0;p=d+u+t.variants[s].ref.length;c=d+u+t.variants[s].ref.length;if(t.variants[s].ref.length<t.variants[s].alt.length){l.push(t.variants[0].alt.length);n.push("break")}g=0;m=false}else if(u==o.length-1){c+=1;f+=1;g+=h.children[u].getBoundingClientRect().width;const a=await H(e,t,p,c,g);const i={src:a.src,width:g,height:a.height,colspan:f};r.push(i);n.push("gene_model")}else{c+=1;f+=1;g+=h.children[u].getBoundingClientRect().width;m=false}u+=1}let _=0;let x=0;const y=t.readAlignmentTable.node().insertRow();if(t.readAlignmentTable.node().children.length>=3){const e=t.readAlignmentTable.node().children[2];t.readAlignmentTable.node().insertBefore(y,e)}else{console.log("Possible problem in placing gene model in table. Please check")}for(let t=0;t<n.length;t++){const e=y.insertCell();if(n[t]=="gene_model"){const t=document.createElement("img");t.src=r[x].src;t.width=r[x].width;t.height=r[x].height;e.appendChild(t);e.colSpan=r[x].colspan;x+=1}else if(n[t]=="break"){e.colSpan=l[_];_+=1}}}async function U(t,e,a){t.multiAlignMenu.clear().show(50,100);const i=t.multiAlignMenu.d.append("div").text("Loading...");try{const s=await P(t,e,a);if(s.error){i.remove();n(t.multiAlignMenu.d,"Realignment of reads in ambiguous group is not currently implemented.");setTimeout((()=>t.multiAlignMenu.d.remove()),3e3);return}i.remove();let r=0;let l=[];let o=[];if(e.data.type.includes("support_alt")){for(let a=0;a<t.variants.length;a++){if(e.data.type=="support_alt"+a.toString()){r=a}}}else if(e.data.type=="support_ref"){for(let e=0;e<t.variants.length;e++){l.push({start:t.variants[e].pos,stop:t.variants[e].pos+t.variants[e].ref.length})}l.sort(((t,e)=>t.start-e.start));let e={start:l[0].start,stop:l[0].stop};o.push(l[0].start);let a=false;for(let t=1;t<l.length;t++){if(l[t].start<=e.stop&&e.stop<=l[t].stop){e=l[t]}else if(e.stop>l[t].stop){continue}else{o.push(e.stop);o.push(l[t].start)}}o.push(Math.max(e.stop,l[l.length-1].stop))}if(s.alignmentData.final_read_align.length>0&&(e.data.type.includes("support_alt")||e.data.type=="support_ref")){const i=t.multiAlignMenu.d.append("button").style("margin-left","10px").text("Show gene model").on("click",(async()=>{t.is_align_gene=true;i.property("disabled",true);await j(t,a,s,e,r)}))}L(t,s,e,r,o)}catch(e){i.remove();n(t.multiAlignMenu.d,e)}}function L(t,e,a,i,s){if(!e.alignmentData.read_count){e.alignmentData.read_count=0}if(a.data.type=="support_ref"){t.multiAlignMenu.d.append("div").text("Number of reads aligned to reference allele = "+e.alignmentData.read_count).style("text-align","center")}else if(a.data.type=="support_no"||a.data.type=="support_amb"){t.multiAlignMenu.d.append("div").text("Number of reads aligned = "+e.alignmentData.read_count).style("text-align","center")}else if(a.data.type.includes("support_alt")){let s=0;for(let r=0;r<t.variants.length;r++){if(a.data.type=="support_alt"+r.toString()){s=1;i=r;t.multiAlignMenu.d.append("div").text("Number of reads aligned to alternative allele "+t.variants[r].alt+" = "+e.alignmentData.read_count).style("text-align","center")}}if(s==0){console.log("group.data.type:",a.data.type);console.log("Alternate allele not found")}}if(e.alignmentData.partstack_start){t.multiAlignMenu.d.append("div").text("Reads aligned from "+e.alignmentData.partstack_start+" to "+e.alignmentData.partstack_stop).style("text-align","center")}const r=t.multiAlignMenu.d.append("div").style("margin","20px");t.readAlignmentTable=r.append("table").style("font-family","Courier").style("font-size","0.8em").style("color","#303030").style("margin","5px 5px 20px 5px").style("border-spacing",0).style("border-collapse","separate").style("text-align","center").style("empty-cells","show");let l=t.readAlignmentTable.append("tr").style("color","white").style("background-color","white");l.attr("id","RefAltBar");let n;let o=0;let d=0;let p=0;let c=1;if(a.data.type=="support_alt"+i.toString()){if(t.variants.length==1){n="Alternative allele";if(n.length<t.variants[i].alt.length){c=0}else{n=" Alternative allele"}}else{if(a.data.type=="support_alt"+i.toString()){n="Alternative allele = "+t.variants[i].alt;if(n.length<t.variants[i].alt.length){c=0}else{n=" Alternative allele = "+t.variants[i].alt}}}}else if(a.data.type=="support_ref"){if(t.is_same_ref==false){n="Combined reference allele"}else{n="Reference allele"}if(n.length<s[1]-s[0]){c=0}else{if(t.is_same_ref==false){n=" Combined reference allele"}else{n=" Reference allele"}}}t.readAlignmentTableGroup=a.data.type;if(e.alignmentData.final_read_align.length>0){for(const r of e.alignmentData.final_read_align[0]){o+=1;const r=l.append("td");if(a.data.type=="support_alt"+i.toString()&&o>t.variants.leftflankseqs[i].length+e.alignmentData.gaps_before_variant&&o<=t.variants.leftflankseqs[i].length+t.variants[i].alt.length+e.alignmentData.gaps_before_variant){if(c==1){d=1;r.text(" ").style("text-align","right").style("font-weight","550").style("margin","5px 5px 10px 5px").style("color","black").style("background-color","black")}else{if(p<n.length){r.text(n[p]).style("text-align","right").style("font-weight","550").style("margin","5px 5px 10px 5px").style("color","white").style("background-color","black");p+=1}else{r.text(" ").style("text-align","right").style("font-weight","550").style("margin","5px 5px 10px 5px").style("color","black").style("background-color","black")}}}else if(a.data.type=="support_ref"&&o>t.variants.leftflankseqs[0].length+e.alignmentData.gaps_before_variant&&o<=t.variants.leftflankseqs[0].length+s[1]-s[0]+e.alignmentData.gaps_before_variant){if(c==1){d=1;r.text("").style("text-align","right").style("font-weight","550").style("margin","5px 5px 10px 5px").style("color","black").style("background-color","black")}else{if(p<n.length){r.text(n[p]).style("text-align","right").style("font-weight","550").style("margin","5px 5px 10px 5px").style("color","white").style("background-color","black");p+=1}else{r.text("").style("text-align","right").style("font-weight","550").style("margin","5px 5px 10px 5px").style("color","black").style("background-color","black")}}}else if(d==1&&c==1){r.text(n[p]).style("text-align","right").style("font-weight","550").style("margin","5px 5px 10px 5px").style("color","black").style("background-color","white");p+=1;if(p==n.length){d=0}}else{r.text("").style("text-align","right").style("font-weight","550").style("margin","5px 5px 10px 5px").style("color","white").style("background-color","white")}}let r=0;for(const l of e.alignmentData.final_read_align){let n=0;const o=t.readAlignmentTable.append("tr").style("color","white").style("background-color","white");if(r==0&&(a.data.type=="support_ref"||a.data.type=="support_alt")){o.attr("id","RefAltSeq")}else{o.attr("id",r.toString())}const d=e.alignmentData.qual_r[r].split(",");const p=e.alignmentData.qual_g[r].split(",");const c=e.alignmentData.qual_b[r].split(",");for(const g of l){n+=1;let l;if(r==0&&(a.data.type=="support_ref"||a.data.type.includes("support_alt"))){l=o.append("td").text(g).style("background-color","white").style("color","black").style("font-weight","550")}else{l=o.append("td").text(g).style("background-color","rgb("+d[n-1]+","+p[n-1]+","+c[n-1]+")");if(g!="-"){l.style("color","white")}else{l.style("color","black")}}if(a.data.type=="support_alt"+i.toString()&&n>t.variants.leftflankseqs[i].length+e.alignmentData.gaps_before_variant&&n<=t.variants.leftflankseqs[i].length+t.variants[i].alt.length+e.alignmentData.gaps_before_variant){l.style("color","black")}else if(a.data.type=="support_ref"&&n>t.variants.leftflankseqs[0].length+e.alignmentData.gaps_before_variant&&n<=t.variants.leftflankseqs[0].length+s[1]-s[0]+e.alignmentData.gaps_before_variant){l.style("color","black")}}r+=1}}}async function I(t,a,i,s){const r=t.readMenu.d.append("div").text("Loading...");const o=p(t.variants?{refseqs:t.variants.refseqs,altseqs:t.variants.altseqs,chrom:t.variants[0].chr,ref_positions:t.variants.ref_positions,refalleles:t.variants.refalleles,altalleles:t.variants.altalleles,start:i.start,stop:i.stop,paired:t.asPaired}:{start:i.start,stop:i.stop,paired:t.asPaired});const d=await e("tkbam",o);if(d.error){n(r,d.error);return}r.remove();for(const i of d.lst){const r=t.readMenu.d.append("div").style("margin","10px");const o=r.append("div").html(i.alignment);const g=r.append("div").style("margin-top","10px");g.append("button").text("Copy read sequence").on("click",(function(){navigator.clipboard.writeText(i.seq).then((()=>{}),console.warn);l(this).html("Copy read sequence&nbsp;&check;")}));if(d.lst[0].alignments){l(this).append("span").html("&nbsp;");const e=g.append("button").style("margin-left","10px").text("Align read to variant alleles");let a=true;e.on("click",(()=>{if(a){a=false;for(let e=0;e<t.variants.length;e++){c(f,"Ref",t,d.lst[0].start_readpos-1,e);c(f,"Alt",t,d.lst[0].start_readpos-1,e)}}if(f.style("display")=="none"){f.style("display","block")}else{f.style("display","none")}}))}if(i.unmapped_mate&&!t.asPaired){const i=g.append("button").style("margin-left","10px").text("Show unmapped mate").on("click",(async()=>{i.property("disabled",true);const s=t.readMenu.d.append("div").text("Loading...");const o=await e("tkbam",p({show_unmapped:1}));if(o.error){s.text("");n(s,o.error);i.property("disabled",false);return}s.remove();i.remove();const d=o.lst[0];r.append("div").html(d.alignment);const c=r.append("div").style("margin-top","10px");c.append("button").text("Copy read sequence").on("click",(function(){navigator.clipboard.writeText(d.seq).then((()=>{}),console.warn);l(this).html("Copy read sequence&nbsp;&check;")}));E(d,c,t,a);r.append("div").html(d.info)}))}const h=g.append("button").style("margin-left","10px").text("Show gene model").property("disabled",!i.seq||i.seq=="*").on("click",(async()=>{h.property("disabled",true);let t=0;let e=0;let i=0;let r=d.lst[0].boxes[0].start;let l;let n=0;const p=o.node().children[0].getElementsByTagName("tbody")[0];const c=p.insertRow();const g=c.insertCell();const f=document.createTextNode("");g.appendChild(f);const m=[];const u=[];let _=0;const x=o.node().children[0].children[0].children[0];for(const o of d.lst[0].boxes){if(o.opr=="H"){continue}else if(o.opr=="M"||o.opr=="S"||o.opr=="N"&&o.len<d.lst[0].readpanel_DN_maxlength||o.opr=="D"&&o.len<d.lst[0].readpanel_DN_maxlength){for(let t=0;t<o.len;t++){n+=x.children[e+1].getBoundingClientRect().width;e+=1}i+=o.len}else if(o.opr=="I"||o.opr=="N"&&o.len>=d.lst[0].readpanel_DN_maxlength||o.opr=="D"&&o.len>=d.lst[0].readpanel_DN_maxlength){l=o.start;const t=await G(a,s,r,l,n);const e={src:t.src,width:n,height:t.height,colspan:i};m.push(e);if(o.opr=="I"){u.push(o.len)}else if(o.opr=="N"||o.opr=="D"){u.push(1)}if(o.opr=="D"||o.opr=="N"){r=o.start+o.len}else if(o.opr=="I"){r=o.start}n=0;i=0;_+=1}if(t==d.lst[0].boxes.length-1){l=o.start+o.len;const t=await G(a,s,r,l,n);const e={src:t.src,width:n,height:t.height,colspan:i};m.push(e)}t+=1}const y=_+m.length;let v=0;let b=0;for(let t=0;t<y;t++){const e=c.insertCell();if(t%2==0){const t=document.createElement("img");t.src=m[b].src;t.width=m[b].width;t.height=m[b].height;e.appendChild(t);e.colSpan=m[b].colspan;b+=1}else{e.colSpan=u[v];v+=1}}}));E(i,g,t,a);r.append("div").html(i.info);const f=r.append("div").style("display","none")}function p(e={}){const r=t.regions[s];const l={getread:1,qname:encodeURIComponent(i.qname),genome:a.genome.name,chr:r.chr,start:r.start,stop:r.stop,...e};if(t.gdcFile){l.gdcFileUUID=t.gdcFile.uuid;l.gdcFilePosition=t.gdcFile.position}if(t.nochr)l.nochr=1;if(t.file)l.file=t.file;if(t.url)l.url=t.url;if(t.indexURL)l.indexURL=t.indexURL;if(t.asPaired){l.getpair=1}else{if(i.isfirst){l.getfirst=1}else if(i.islast){l.getlast=1}else{l.unknownorder=1;l.readstart=i.start;l.readstop=i.stop}}return{headers:C(t),body:l}}function c(t,e,a,i,s){let r,l,n;if(e=="Ref"){r=d.lst[0].alignments[s].q_seq_ref;l=d.lst[0].alignments[s].align_ref;n=d.lst[0].alignments[s].r_seq_ref}if(e=="Alt"){r=d.lst[0].alignments[s].q_seq_alt;l=d.lst[0].alignments[s].align_alt;n=d.lst[0].alignments[s].r_seq_alt}if(d.lst[0].alignments.length==1){t.append("span").text(e+" alignment").style("font-family","Courier").style("font-size","15px").style("color","#303030").style("margin","5px 5px 10px 5px")}else{if(e=="Alt"){t.append("span").text("Alignment with Alt allele: "+a.variants[s].alt).style("font-family","Courier").style("font-size","15px").style("color","#303030").style("margin","5px 5px 10px 5px")}else if(e=="Ref"){t.append("span").text("Alignment with Ref allele: "+a.variants[s].ref).style("font-family","Courier").style("font-size","15px").style("color","#303030").style("margin","5px 5px 10px 5px")}else{console.log("Unknown allele, please check")}}const o=t.append("table").style("font-family","Courier").style("font-size","0.8em").style("color","#303030").style("margin","5px 5px 20px 5px");let p=0;const c=o.append("tr");c.append("td").text(e+" allele").style("text-align","right").style("font-weight","550").style("white-space","nowrap");for(const t of n){p+=1;if(e=="Ref"&&p>d.lst[0].alignments[s].red_region_start_ref&&p<=d.lst[0].alignments[s].red_region_stop_ref){c.append("td").text(t).style("color","red")}else if(e=="Alt"&&p>d.lst[0].alignments[s].red_region_start_alt&&p<=d.lst[0].alignments[s].red_region_stop_alt){c.append("td").text(t).style("color","red")}else{c.append("td").text(t)}}const g=o.append("tr");g.append("td");p=0;for(const t of l){p+=1;if(e=="Ref"&&p>d.lst[0].alignments[s].red_region_start_ref&&p<=d.lst[0].alignments[s].red_region_stop_ref){g.append("td").text(t).style("color","red")}else if(e=="Alt"&&p>d.lst[0].alignments[s].red_region_start_alt&&p<=d.lst[0].alignments[s].red_region_stop_alt){g.append("td").text(t).style("color","red")}else{g.append("td").text(t)}}const h=o.append("tr");h.append("td").text("Read").style("text-align","right").style("font-weight","550");p=0;for(const t of r){p+=1;if(e=="Ref"&&p>d.lst[0].alignments[s].red_region_start_ref&&p<=d.lst[0].alignments[s].red_region_stop_ref){h.append("td").text(t).style("color","red")}else if(e=="Alt"&&p>d.lst[0].alignments[s].red_region_start_alt&&p<=d.lst[0].alignments[s].red_region_stop_alt){h.append("td").text(t).style("color","red")}else{h.append("td").text(t)}}}}async function H(t,a,i,s,r){const l=t.genome.tracks.find((t=>t.__isgene));const n={name:l.name,genome:t.genome.name,rglst:[{chr:a.variants[0].chr,start:i,stop:s,width:r}],width:r,stackheight:16,stackspace:1,regionspace:0,file:l.file,devicePixelRatio:window.devicePixelRatio>1?window.devicePixelRatio:1,color:l.color,translatecoding:1,__isgene:true,noNameHover:true};{const e=t.tklst.find((t=>t.name==n.name&&t.type=="bedj"));if(e&&e.filterByName){n.filterByName=e.filterByName}}return await e("tkbedj",{method:"POST",body:JSON.stringify(n)})}async function G(t,a,i,s,r){const l=t.genome.tracks.find((t=>t.__isgene));const n={name:l.name,genome:t.genome.name,rglst:[{chr:t.rglst[a].chr,start:i,stop:s,width:r}],width:r,stackheight:16,stackspace:1,regionspace:0,file:l.file,devicePixelRatio:window.devicePixelRatio>1?window.devicePixelRatio:1,color:l.color,translatecoding:1,__isgene:true,noNameHover:true};{const e=t.tklst.find((t=>t.name==n.name&&t.type=="bedj"));if(e&&e.filterByName){n.filterByName=e.filterByName}}return await e("tkbedj",{method:"POST",body:JSON.stringify(n)})}function E(t,a,i,s){if(!s.genome.blat){return}const r=a.append("button").style("margin-left","10px").text("BLAT").on("click",(async()=>{r.property("disabled",true);l.selectAll("*").remove();const a=l.append("div").text("Loading...");try{const r=await e("blat",{body:{genome:s.genome.name,seq:t.seq,soft_starts:t.soft_starts,soft_stops:t.soft_stops}});if(r.error)throw r.error;if(r.nohit)throw"No hit";if(!r.hits)throw".hits[] missing";a.remove();O(r.hits,l,i,s)}catch(t){a.text(t.message||t);if(t.stack)console.log(t.stack)}r.property("disabled",false)}));const l=a.append("div")}async function Y(t,e,a,i,s){t.data_fullstack=t.data;const r=(t.partstack?t.partstack.start:0)+Math.floor(i/t.data.stackheight);if(r<g/2){t.partstack={start:0,stop:g}}else if(r>t.data_fullstack.stackcount-g/2){t.partstack={start:t.data_fullstack.stackcount-g,stop:t.data_fullstack.stackcount}}else{t.partstack={start:r-g/2,stop:r+g/2}}a.tkcloakon(e);const l=await v(e,a,{stackstart:t.partstack.start,stackstop:t.partstack.stop,grouptype:t.data.type});t.data=l.groups[0];Q(t,e,a);A(e);a.tkcloakoff(e,{});a.block_setheight()}function O(t,e,a,i){const s=e.append("table");const r=s.append("tr").style("opacity",.5).style("font-size",".8em");r.append("td").text("QScore");r.append("td").text("QStart");r.append("td").text("QStop");r.append("td").text("QStrand");r.append("td").text("QAlignLen");r.append("td").text("RChr");r.append("td").text("RStart");r.append("td").text("RStop");r.append("td").text("RAlignLen");for(const e of t){let t=s.append("tr").style("font-size",".8em");t.append("td").text(e.query_match);t.append("td").text(e.query_startpos);t.append("td").text(e.query_stoppos);t.append("td").text(e.query_strand);t.append("td").text(e.query_alignlen);t.append("td").text(e.ref_chr);t.append("td").text(e.ref_startpos);t.append("td").text(e.ref_stoppos);t.append("td").text(e.ref_alignlen)}}function Q(t,e,a){R(t,e,a);if(t.partstack){if(e.variants){t.dom.diff_score_barplot_partstack.attr("xlink:href",t.data.diff_scores_img.src).attr("width",t.data.diff_scores_img.width).attr("height",t.data.diff_scores_img.height);t.ReadNameMaxwidth=0;if(e.show_readnames){t.dom.read_names_g.attr("transform","translate(0,0)");t.dom.read_names_g.selectAll("*").remove();if(t.data.templatebox&&t.data.stackheight>=x){let e=1;for(const a of t.data.templatebox){const i=t.dom.read_names_g.append("text").attr("x",0).attr("y",t.data.height*e/t.data.templatebox.length).attr("text-anchor","end").style("fill","black").attr("font-size",t.data.height/t.data.templatebox.length).text(a.qname);t.ReadNameMaxwidth=Math.max(t.ReadNameMaxwidth,i.node().getBBox().width);e+=1}}}else{t.dom.read_names_g.selectAll("*").remove();t.ReadNameMaxwidth=0}}t.dom.img_partstack.attr("xlink:href",t.data.src).attr("width",t.data.width).attr("height",t.data.height).attr("y",0);t.dom.img_fullstack.attr("width",0).attr("height",0);if(e.variants){t.dom.diff_score_barplot_fullstack.attr("width",0).attr("height",0)}const a=t.data.height;t.dom.rightg.vslider.bar.transition().attr("height",a);t.dom.rightg.vslider.boxy=a*t.partstack.start/t.data_fullstack.stackcount;t.dom.rightg.vslider.boxh=a*(t.partstack.stop-t.partstack.start)/t.data_fullstack.stackcount;t.dom.rightg.vslider.box.transition().attr("height",t.dom.rightg.vslider.boxh);t.dom.rightg.vslider.boxbotline.transition().attr("y1",t.dom.rightg.vslider.boxh).attr("y2",t.dom.rightg.vslider.boxh);t.dom.rightg.vslider.boxg.transition().attr("transform","translate(0,"+t.dom.rightg.vslider.boxy+")")}else{t.dom.img_fullstack.attr("xlink:href",t.data.src).attr("width",t.data.width).attr("height",t.data.height);t.dom.img_partstack.attr("width",0).attr("height",0);if(e.variants){if(t.dom.diff_score_barplot_partstack){t.dom.diff_score_barplot_partstack.attr("width",0).attr("height",0)}t.dom.diff_score_barplot_fullstack.attr("width",t.data.diff_scores_img.width).attr("height",t.data.diff_scores_img.height);if(e.show_readnames){t.dom.read_names_g.selectAll("*").remove()}}t.dom.rightg.vslider.g.transition().attr("transform","scale(0)")}t.dom.img_cover.attr("width",t.data.width).attr("height",t.data.height)}export{y as loadTk};
1
+ import{a as t}from"./axisstyle-fac7f76b.js";import{b as e,I as a,M as i,a9 as s,u as r,d as l,y as n}from"./app-b369b169.js";import{m as o}from"./radiobutton-09bff425.js";import{m as d}from"./checkbox-96437f4d.js";import{d as p}from"./axis-747c801e.js";import{p as c}from"./pointer-c7475677.js";const g=60;const h="#eee";const f="#c7edc5";const m="#9ed19b";const u="#36a32f";const _=15;const x=7;async function y(t,e){e.tkcloakon(t);e.block_setheight();if(t.uninitialized){B(t,e)}const a=[];let i=0;for(let t=e.startidx;t<=e.stopidx;t++){const s=e.rglst[t];a.push({chr:s.chr,start:s.start,stop:s.stop,width:s.width,x:i});i+=s.width+e.regionspace}for(const[t,s]of e.subpanels.entries()){i+=s.leftpad;a.push({chr:s.chr,start:s.start,stop:s.stop,width:s.width,exonsf:s.exonsf,subpanelidx:t,x:i});i+=s.width}t.regions=a;try{if(t.groups){for(const e of t.groups){delete e.partstack;delete e.dom.rightg.vslider.boxy}}const a=await v(t,e);if(a.error)throw a.error;if(a.colorscale){t.colorscale=a.colorscale}if(t.variants){for(let e=0;e<t.variants.length;e++){if(t.variants[e].pos!=a.allele_positions[e]){t.variants[e].pos=a.allele_positions[e];t.variants[e].ref=a.ref_alleles[e];t.variants[e].alt=a.alt_alleles[e]}}}b(a,t,e);e.tkcloakoff(t,{})}catch(a){if(a.stack)console.log(a.stack);if(t.pileup_shown){t.dom.pileup_axis.selectAll("*").remove();t.dom.pileup_img.attr("width",0)}if(t.groups){for(const e of t.groups){e.dom.img_fullstack.attr("width",0).attr("height",0);e.dom.img_partstack.attr("width",0).attr("height",0);e.dom.img_cover.attr("width",0).attr("height",0)}}t.height_main=t.height=100;if(typeof a=="string"&&a.startsWith("No reads in view range")){t.leftlabel_count.text("");t.leftlabel_skip.text("")}e.tkcloakoff(t,{error:a.message||a})}w(t,e);e.block_setheight()}async function v(t,a,i={}){const s={genome:a.genome.name,regions:t.regions,nucleotide_length:a.exonsf,pileupheight:t.pileupheight,...i};if(t.gdcFile){s.gdcFileUUID=t.gdcFile.uuid;s.gdcFilePosition=t.gdcFile.position}if(t.variants){s.variant=t.variants.map((t=>t.chr+"."+t.pos+"."+t.ref+"."+t.alt)).join(".");s.strictness=t.strictness;s.diff_score_plotwidth=t.dom.diff_score_plotwidth;if(Number.isFinite(t.max_diff_score)){s.max_diff_score=t.max_diff_score;s.min_diff_score=t.min_diff_score}}else if(t.sv){if(t.sv[0].strandA=="+"){t.sv[0].strandA="positive"}else if(t.sv[0].strandA=="-"){t.sv[0].strandA="negative"}if(t.sv[0].strandB=="+"){t.sv[0].strandB="positive"}else if(t.sv[0].strandB=="-"){t.sv[0].strandB="negative"}s.sv=t.sv.map((t=>t.chrA+"."+t.startA+"."+t.strandA+"."+t.chrB+"."+t.startB+"."+t.strandB)).join(".")}if(t.variants&&t.alleleAlreadyUpdated){s.alleleAlreadyUpdated=1;s.refseqs=t.variants.refseqs;s.altseqs=t.variants.altseqs;s.leftflankseqs=t.variants.leftflankseqs;s.rightflankseqs=t.variants.rightflankseqs;s.ref_positions=t.variants.ref_positions;s.refalleles=t.variants.refalleles;s.altalleles=t.variants.altalleles}if(t.uninitialized){s.getcolorscale=1;delete t.uninitialized}if(t.asPaired)s.asPaired=1;if("nochr"in t)s.nochr=t.nochr;if(t.file)s.file=t.file;if(t.url)s.url=t.url;if(t.indexURL)s.indexURL=t.indexURL;if(t.drop_pcrduplicates)s.drop_pcrduplicates=1;if(t.drop_supplementary_alignments)s.drop_supplementary_alignments=1;if(window.devicePixelRatio>1)s.devicePixelRatio=window.devicePixelRatio;const r=await e("tkbam",{headers:C(t),body:s});if(t.variants&&!t.alleleAlreadyUpdated){t.variants.refseqs=r.refseqs;t.variants.altseqs=r.altseqs;t.variants.refalleles=r.refalleles;t.variants.altalleles=r.altalleles;t.variants.leftflankseqs=r.leftflankseqs;t.variants.rightflankseqs=r.rightflankseqs;t.variants.ref_positions=r.ref_positions;t.alleleAlreadyUpdated=true}if(r.error)throw r.error;return r}function b(e,i,s){if("nochr"in e)i.nochr=e.nochr;if(e.pileup_data){i.pileup_shown=true;i.dom.pileup_img.attr("xlink:href",e.pileup_data.src).attr("width",e.pileup_data.width).attr("height",i.pileupheight);i.dom.pileup_axis.selectAll("*").remove();const s=a().domain([0,e.pileup_data.maxValue]).range([i.pileupheight,0]);t({axis:i.dom.pileup_axis.call(p().scale(s).ticks(5)),color:"black",showline:true})}else{i.pileup_shown=false;i.dom.pileup_axis.selectAll("*").remove();i.dom.pileup_img.attr("width",0)}if(e.count.read_limit_reached){i.toomanyreads=true;i.dom.read_limit_text.text(`Downsampled to ${e.groups.reduce(((t,e)=>t+e.count.r),0)} from ${e.count.read_limit_reached} reads. Try zooming into a smaller region.`).attr("x",e.pileup_data.width/2).attr("transform","scale(1)")}else{i.toomanyreads=false;i.dom.read_limit_text.attr("transform","scale(0)")}if(!i.groups){i.groups=[];for(const t of e.groups){const a=D(t,i,s,e);i.groups.push(a)}}else{q(e,i,s)}k(e,i,s);for(const t of i.groups){t.dom.message_rowg.selectAll("*").remove();let e=0;for(const a of t.data.messages){const r=t.dom.message_rowg.append("text").attr("x",s.width/2).attr("y",e+_-1).attr("font-size",_).attr("text-anchor","middle").text(a.t);if(a.isheader&&!i.gdcFile){r.attr("class","sja_clbtext2").on("click",(()=>{T(i,t,s)}))}e+=_}}A(i);let r=0,l=0;for(const t of i.groups){r+=t.data.count.r;if(i.asPaired){l+=t.data.count.t}}i.leftlabel_count.text((r?r+" read"+(r>1?"s":""):"")+(l?", "+l+" template"+(l>1?"s":""):""));if(e.count.skipped){i.leftlabel_skip.text(`${e.count.skipped} read${e.count.skipped>1?"s":""} skipped`)}else{i.leftlabel_skip.text("")}i.read_alignment_diff_scores_asc=e.read_alignment_diff_scores_asc}function w(t,e){const a=[t.tklabel.node().getBBox().width,t.leftlabel_count.node().getBBox().width,t.leftlabel_skip.node().getBBox().width,t.leftlabel_about?t.leftlabel_about.node().getBBox().width:0];if(t.show_readnames){for(const e of t.groups)a.push(e.ReadNameMaxwidth)}t.leftLabelMaxwidth=Math.max(...a);e.setllabel()}function k(t,e,a){if(!e.dom.variantg||e.sv)return;let i=0;for(const s of e.groups){if(s.data.type.includes("support_alt")){if(s.variantg){s.variantg.selectAll("*").remove()}else{s.variantg=e.glider.append("g")}let r,l;{const t=a.seekcoord(e.variants[0].chr,e.variants[i].pos);if(t[0]){r=t[0].x-a.exonsf/2}}{const t=a.seekcoord(e.variants[0].chr,e.variants[i].pos+e.variants[i].ref.length);if(t[0]){l=t[0].x-a.exonsf/2}}if(r===undefined||l===undefined||r>=a.width||l<=0)return;let n=l-r;if(l>t.pileup_data.width){n=t.pileup_data.width-r}else if(r<0){n=l}if(e.variants.length==1){s.variantg.append("rect").attr("x",Math.max(0,r)).attr("width",n).attr("height",e.dom.variantrowheight).attr("fill","grey")}else{s.variantg.append("rect").attr("x",Math.max(0,r)).attr("width",n).attr("height",e.dom.variantrowheight).attr("fill",s.data.group_color)}const o=e.variants[0].chr+"."+(t.allele_positions[i]+1).toString()+"."+t.ref_alleles[i]+"."+t.alt_alleles[i];let d=0;const p=10;const c=s.variantg.append("text").attr("y",e.dom.variantrowheight-2).attr("font-size",e.dom.variantrowheight).text(o);const g=c.node().getBBox();if(g.width+p<r){d=r-g.width-p}else if(g.width<n){d=Math.max(0,r)+(n-g.width)/2}else if(l+g.width<t.pileup_data.width){d=l+p}c.attr("x",d);if(t.refalleleerror==true){let a=0;const i=s.variantg.append("text").attr("x",a).attr("y",e.dom.variantrowheight).style("fill","red").attr("font-size",e.dom.variantrowheight).text("Incorrect reference allele");const o=i.node().getBBox();if(d==0&&o.width+p<r-g.width-p){a=g.width+p}else if(d==0&&o.width+p>r-g.width-p){a=l+p}else if(g.width+p<r&&l+o.width+p<t.pileup_data.width){a=l+p}else if(g.width+p<r&&l+o.width+p>=t.pileup_data.width&&o.width+p<n){a=Math.max(0,r)}else if(g.width+p<r&&l+o.width+p>=t.pileup_data.width){a=r-g.width-p*2-o.width}else if(g.width<n&&o.width+p<r){a=r-o.width-p}else if(g.width<n&&o.width+p>=r){a=l+p}else if(l+g.width<t.pileup_data.width&&o.width+p<r){a=r-o.width-p}else if(l+g.width<t.pileup_data.width&&o.width+p>=r){a=l+g.width+2*p}else if(l+g.width<t.pileup_data.width&&o.width<n){a=Math.max(0,r)}i.attr("x",a)}i+=1}}if(e.variants.length==1){e.fs_string.text("FS = "+t.strand_probability);if(t.strand_significance){e.fs_string.style("fill","red")}else{e.fs_string.style("fill","black")}e.fs_string.on("click",(a=>{e.tktip.clear().showunder(a.target);e.tktip.d.append("div").style("width","350px").html(`Fisher strand (FS) analysis score containing p-values in phred scale (-10*log(p-value)). If <a href='https://gatk.broadinstitute.org/hc/en-us/articles/360035890471' target='_blank'>FS>60</a>, the variant maybe a sequencing artifact and highlighted in red.\n\t\t\t\t\t</br></br>\n\t\t\t\t\tTo compute the p-value, Fisher's exact test is used for variants with a sequencing depth <= 300. If depth > 300 and each individual category > 150, chi-squared test is used. Following table displays read counts in each category.`);const i=e.tktip.d.append("table").style("margin-top","20px").style("border-spacing","5px");{const t=i.append("tr").style("font-weight","bold");t.append("td");t.append("td").text("Alternative");t.append("td").text("Reference")}{const e=i.append("tr");e.append("td").text("Forward").style("font-weight","bold");e.append("td").text(t.alternate_forward_count);e.append("td").text(t.reference_forward_count)}{const e=i.append("tr");e.append("td").text("Reverse").style("font-weight","bold");e.append("td").text(t.alternate_reverse_count);e.append("td").text(t.reference_reverse_count)}}))}if(Number.isFinite(t.max_diff_score)&&!e.dom.alleleSimilarityHeaderLabel){e.dom.alleleSimilarityHeaderLabel=e.dom.alleleSimilarityHeaderG.append("text").attr("y",2*e.dom.variantrowheight).attr("font-size",e.dom.variantrowheight).attr("class","sja_clbtext2").text("Allele similarity");const t=["Allele similarity: This chart shows the allele to which the read has maximum sequence similarity. In case of alternative and reference alleles, all reads in the same group have same color. In case of none category, color representing allele with maximum sequence color is displayed. In case of ambiguous category, for each read colors representing each alleles having equal similarity to each other are displayed."];let a=0;t.push("<br>Allele color codes:");let i=e.variants[0].pos;let s=e.variants[0].ref.length;e.is_same_ref=true;let r;for(const l of e.groups){if(l.data.type.includes("support_alt")){let r='<svg width="10" height="10" style = "display:inline-block;"><rect width="10" height="10" style="fill:'+l.data.group_color+';" /> </svg> '+e.variants[a].alt;t.push(r);if(e.variants[a].pos!=i||e.variants[a].ref.length!=s){e.is_same_ref=false}a+=1}else if(l.data.type=="support_ref"){r=l.data.group_color}}if(!r){r="#47C8FF"}if(e.is_same_ref==true){t.push('<svg width="10" height="10" style = "display:inline-block;"><rect width="10" height="10" style="fill:'+r+';" /> </svg> '+e.variants[0].ref)}else{t.push('<svg width="10" height="10" style = "display:inline-block;"><rect width="10" height="10" style="fill:'+r+';" /> </svg> Combined reference allele')}if(!e.gdcFile){t.push("<br><a href='https://proteinpaint.stjude.org/bam' target='_blank'>Click here to view details of this method</a>.")}e.dom.alleleSimilarityHeaderLabel.on("click",(a=>{const i=a.target.getBoundingClientRect();e.tktip.clear().show(i.x-250,i.y);e.tktip.d.append("div").style("width","300px").html(t.join("<br>"))}))}}function A(t){let e=0;if(t.pileup_shown)e+=t.pileupheight+t.pileupbottompad;if(t.toomanyreads){e+=t.dom.read_limit_height;t.dom.read_limit_text.attr("y",e);e+=t.dom.read_limit_bottompad}if(t.dom.variantg){t.dom.variantg.attr("transform","translate(0,"+e+")")}if(t.dom.alleleSimilarityHeaderG){t.dom.alleleSimilarityHeaderG.attr("transform","translate(0,"+(t.pileupheight-t.pileupbottompad*2)+")")}let a=0;for(const i of t.groups){if(i.data.type.includes("support_alt")){i.variantg.attr("transform","translate(0,"+e+")");e+=t.dom.variantrowheight+t.dom.variantrowbottompad;a+=1}i.dom.groupg.transition().attr("transform","translate(0,"+e+")");i.dom.rightg.transition().attr("transform","translate(0,"+e+")");i.msgheight=_*i.data.messages.length;i.dom.leftg.transition().attr("transform","translate(0,"+(e+i.msgheight)+")");i.dom.imgg.transition().attr("transform","translate(0,"+i.msgheight+")");if(t.variants){i.dom.diff_score_barplot_fullstack.transition().attr("transform","translate(0,"+i.msgheight+")")}if(i.partstack){if(t.variants){i.dom.diff_score_barplot_partstack.transition().attr("transform","translate(0,"+i.msgheight+")");i.dom.rightg.vslider.g.transition().attr("transform","translate("+t.dom.diff_score_plotwidth*1.1+","+i.msgheight+") scale(1)")}else{i.dom.rightg.vslider.g.transition().attr("transform","translate(0,0) scale(1)")}}e+=i.data.height+i.msgheight;if(i.data.type.includes("support_alt")&&a<t.variants.length){e+=t.dom.variantrowheight}}t.height_main=t.height=e;t.height_main+=t.toppad+t.bottompad}function q(t,e,a){for(let a=0;a<e.groups.length;a++){const i=t.groups.find((t=>t.type==e.groups[a].data.type));if(!i){S(e.groups[a]);e.groups.splice(a,1)}}for(const i of t.groups){const s=e.groups.find((t=>t.data.type==i.type));if(!s){const s=D(i,e,a,t);e.groups.push(s)}else{s.data=i;R(s,e,a);s.dom.img_fullstack.attr("xlink:href",s.data.src).attr("width",s.data.width).attr("height",s.data.height);if(e.variants){s.ReadNameMaxwidth=0;if(e.show_readnames){if(s.data.templatebox){s.dom.read_names_g.selectAll("*").remove();let t=1;for(const e of s.data.templatebox){const a=s.dom.read_names_g.append("text").attr("x",0).attr("y",s.data.height*t/s.data.templatebox.length).attr("text-anchor","end").style("fill","black").attr("font-size",s.data.height/s.data.templatebox.length).text(e.qname);s.ReadNameMaxwidth=Math.max(s.ReadNameMaxwidth,a.node().getBBox().width);t+=1}}}else{s.dom.read_names_g.selectAll("*").remove();s.ReadNameMaxwidth=0}if(s.my_partstack){if(s.data.allowpartstack){Y(s,e,a,s.my_partstack)}}else{s.dom.diff_score_barplot_fullstack.attr("xlink:href",i.diff_scores_img.src).attr("width",i.diff_scores_img.width).attr("height",i.diff_scores_img.height)}}s.dom.img_partstack.attr("width",0).attr("height",0);if(e.variants){s.dom.diff_score_barplot_partstack.attr("width",0).attr("height",0)}s.dom.rightg.vslider.g.transition().attr("transform","scale(0)");s.dom.img_cover.attr("width",s.data.width).attr("height",s.data.height)}}}function R(t,e,a){t.dom.box_move.attr("width",0);M(t,e,a)}function M(t,e,a){if(!t.data.templatebox){t.dom.box_stay.attr("width",0);return}if(!t.clickedtemplate){t.dom.box_stay.attr("width",0);return}for(const i of t.data.templatebox){if(i.qname==t.clickedtemplate.qname){if(e.asPaired||i.isfirst&&t.clickedtemplate.isfirst||i.islast&&t.clickedtemplate.islast){const e=Math.max(0,i.x1);const s=Math.min(a.width,i.x2);t.dom.box_stay.attr("width",s-e).attr("height",i.y2-i.y1).attr("transform","translate("+e+","+i.y1+")");return}}}t.dom.box_stay.attr("width",0)}function S(t){t.dom.message_rowg.remove();t.dom.img_fullstack.remove();t.dom.img_partstack.remove();t.dom.diff_score_barplot_fullstack?.remove();t.dom.diff_score_barplot_partstack?.remove();t.dom.read_names_g?.remove();t.dom.leftg.remove();t.dom.box_stay?.remove();t.dom.box_move?.remove();t.dom.rightg.remove()}function B(t,e){if(t.gdcFile){e.gdcBamSliceDownloadBtn.style("display","inline-block")}N(t);if(t.drop_pcrduplicates==undefined){t.drop_pcrduplicates=true}t.drop_supplementary_alignments=false;if(t.show_readnames==undefined){t.show_readnames=false}t.config_handle=e.maketkconfighandle(t).attr("y",10+e.labelfontsize).on("click",(()=>{F(t,e)}));t.readMenu=new i;t.readMenu.d.style("max-width","90vw").style("max-height","65vh").attr("class","sjpp_show_scrollbar");t.multiAlignMenu=new i;t.multiAlignMenu.d.style("max-width","90vw").style("max-height","65vh").attr("class","sjpp_show_scrollbar");t.pileupheight=100;t.pileupbottompad=6;t.dom={pileup_g:t.glider.append("g"),pileup_axis:t.glider.append("g"),read_limit_height:15,read_limit_bottompad:6,read_limit_g:t.glider.append("g")};t.dom.pileup_img=t.dom.pileup_g.append("image");t.dom.read_limit_text=t.dom.read_limit_g.append("text").style("fill","red").attr("text-anchor","middle").attr("font-size",t.dom.read_limit_height).attr("transform","scale(0)");if(t.variants){t.dom.variantg=t.glider.append("g");t.dom.alleleSimilarityHeaderG=t.gright.append("g");t.dom.variantrowheight=15;t.dom.variantrowbottompad=5;t.dom.diff_score_plotwidth=20;t.fs_string=e.maketklefthandle(t,t.pileupheight+t.dom.variantrowheight/2)}else if(t.sv){t.dom.variantg=t.glider.append("g");t.dom.variantrowheight=15;t.dom.variantrowbottompad=5}t.asPaired=false;let a=e.labelfontsize+5;t.leftlabel_count=e.maketklefthandle(t,a);a+=e.labelfontsize;t.leftlabel_skip=e.maketklefthandle(t,a).text("");if(t.aboutThisFile){a+=e.labelfontsize;t.leftlabel_about=e.maketklefthandle(t,a).text("About the BAM file").on("mouseover",(e=>{t.tktip.showunder(e.target).clear();s(t.tktip.d,t.aboutThisFile)})).on("mouseout",(()=>{t.tktip.hide()}))}delete t.alleleAlreadyUpdated;if(t.groups){for(const e of t.groups)S(e);delete t.groups}}function N(t,e){const a=r();if(a.has("variant")){t.variants=[];if(typeof a.get("variant")=="string"){const e=a.get("variant").split(".");if(e.length==4){const a=Number(e[1]);if(!Number.isInteger(a))throw"urlparam variant pos is not integer";if(!e[2])throw"ref allele missing";if(!e[3])throw"alt allele missing";t.variants.push({chr:e[0],pos:a-1,ref:e[2],alt:e[3],strictness:1})}}else{const e=a.get("variant");for(const a of e.variants){if(!Number.isInteger(a.pos))throw"urlparam variant pos is not integer";if(!a.ref)throw"ref allele missing";if(!a.alt)throw"alt allele missing";t.variants.push({chr:e.chr,pos:Number(a.pos)-1,ref:a.ref,alt:a.alt})}}if(a.has("strictness")){const e=a.get("strictness");if(!Number.isInteger(Number(e)))throw"strictness must be an integer";t.strictness=Number(e);if(t.strictness!=1&&t.strictness!=0){throw"strictness must be 0 or 1"}}else{t.strictness=1}}else if(a.has("sv")){const e=a.get("sv").split(".");t.sv=[];if(e.length==7){t.sv.push({chrA:e[0],startA:e[1],strandA:e[2],chrB:e[3],startB:e[4],strandB:e[5],contig:e[6]})}else if(e.length==6){t.sv.push({chrA:e[0],startA:e[1],strandA:e[2],chrB:e[3],startB:e[4],strandB:e[5]})}}}function D(t,e,a,i){const s={data:t,dom:{groupg:e.glider.append("g"),rightg:e.gright.append("g"),leftg:e.gleft.append("g")}};s.dom.message_rowg=s.dom.groupg.append("g");s.dom.imgg=s.dom.groupg.append("g");s.dom.rightg.vslider=s.dom.rightg.append("g");s.dom.rightg.vslider.g=s.dom.rightg.vslider.append("g").attr("transform","scale(0)");if(e.variants){s.dom.diff_score_g=s.dom.rightg.append("g");s.dom.read_names_g=s.dom.leftg.append("g");s.dom.diff_score_barplot_fullstack=s.dom.diff_score_g.append("image").attr("xlink:href",t.diff_scores_img.src).attr("width",t.diff_scores_img.width).attr("height",t.diff_scores_img.height);s.dom.diff_score_barplot_partstack=s.dom.diff_score_g.append("image").attr("xlink:href",t.diff_scores_img.src).attr("width",0).attr("height",0);if(!s.allowpartstack&&!Number.isFinite(e.max_diff_score)&&e.variants){e.max_diff_score=i.max_diff_score;e.min_diff_score=i.min_diff_score}e.pileupheight+e.dom.variantrowheight*2;if(e.toomanyreads){e.pileupheight+e.dom.variantrowheight*3}}s.dom.img_fullstack=s.dom.imgg.append("image").attr("xlink:href",s.data.src).attr("width",s.data.width).attr("height",s.data.height);s.dom.img_partstack=s.dom.imgg.append("image").attr("width",0).attr("height",0);s.dom.box_move=s.dom.imgg.append("rect").attr("stroke","black").attr("fill","none");s.dom.box_stay=s.dom.imgg.append("rect").attr("stroke","magenta").attr("fill","none");let r;const n=e.regions[0].x;const o=e.regions[e.regions.length-1].x+e.regions[e.regions.length-1].width;s.dom.img_cover=s.dom.imgg.append("rect").attr("fill","white").attr("fill-opacity",0).attr("width",s.data.width).attr("height",s.data.height).on("mousedown",(t=>{r=t.clientX})).on("mousemove",(t=>{if(s.data.allowpartstack){return}if(!s.data.templatebox)return;const[a,i]=c(t,s.dom.img_cover.node());let r=0;for(const t of s.data.templatebox){r+=1;const l=Math.max(t.x1,n);const d=Math.min(t.x2,o);if(a>l&&a<d&&i>t.y1&&i<t.y2){s.dom.box_move.attr("width",d-l).attr("height",t.y2-t.y1).attr("transform","translate("+l+","+t.y1+")");if(e.readAlignmentTable&&e.readAlignmentTableGroup==s.data.type){z(e,r)}else if(e.readAlignmentTable&&e.readAlignmentTableGroup!=s.data.type){z(e,s.data.templatebox.length+10)}return}}})).on("click",(t=>{if(r!=t.clientX)return;const[i,l]=c(t,s.dom.img_cover.node());s.my_partstack=l;if(s.data.allowpartstack){Y(s,e,a,l);return}if(!s.data.templatebox)return;e.readMenu.clear().show(50,t.clientY);let d=true;for(let t=0;t<e.regions.length;t+=1){for(const r of s.data.templatebox){const p=Math.max(r.x1,n);const c=Math.min(r.x2,o);const g=Math.max(e.regions[t].x,r.x1);const h=Math.min(e.regions[t].x+e.regions[t].width,r.x2);if(i>g&&i<h&&l>r.y1&&l<r.y2){if(s.clickedtemplate&&s.clickedtemplate.qname==r.qname){if(e.asPaired||r.isfirst&&s.clickedtemplate.isfirst||r.islast&&s.clickedtemplate.islast){delete s.clickedtemplate;s.dom.box_stay.attr("width",0);break}}s.clickedtemplate={qname:r.qname};if(e.asPaired){s.clickedtemplate.isfirst=true}else{if(r.isfirst)s.clickedtemplate.isfirst=true;if(r.islast)s.clickedtemplate.islast=true}s.dom.box_stay.attr("width",c-p).attr("height",r.y2-r.y1).attr("transform","translate("+p+","+r.y1+")");I(e,a,r,t);d=false}}}if(d)e.readMenu.hide()}));s.dom.rightg.vslider.bar=s.dom.rightg.vslider.g.append("rect").attr("fill",h).attr("x",10).attr("width",20).on("mouseover",(()=>s.dom.rightg.vslider.bar.attr("fill","#fae8e8"))).on("mouseout",(()=>s.dom.rightg.vslider.bar.attr("fill",h))).on("click",(()=>{delete s.dom.rightg.vslider.boxy;delete s.partstack;if(s.my_partstack){delete s.my_partstack}s.ReadNameMaxwidth=0;s.data=s.data_fullstack;Q(s,e,a);A(e);a.block_setheight()}));s.dom.rightg.vslider.boxg=s.dom.rightg.vslider.g.append("g");s.dom.rightg.vslider.box=s.dom.rightg.vslider.boxg.append("rect").attr("fill",f).attr("width",40).on("mousedown",(t=>{t.preventDefault();s.dom.rightg.vslider.box.attr("fill",m);const i=s.data.height;const r=t.clientY;let n=0;const o=l(document.body);o.on("mousemove",(t=>{const a=t.clientY;const l=a-r;if(l<0){if(s.dom.rightg.vslider.boxy+l<=0)return}else{if(s.dom.rightg.vslider.boxy+l>=i-s.dom.rightg.vslider.boxh)return}n=l;if(e.variants){s.dom.diff_score_barplot_partstack.attr("transform","translate(0,"+(-1*n*s.data_fullstack.stackcount*s.data.stackheight/i+s.msgheight)+")");s.dom.read_names_g.attr("transform","translate(0,"+-1*n*s.data_fullstack.stackcount*s.data.stackheight/i+")")}s.dom.rightg.vslider.boxg.attr("transform","translate(0,"+(s.dom.rightg.vslider.boxy+n)+")");s.dom.img_partstack.attr("y",-(n*s.data_fullstack.stackcount*s.data.stackheight/i));s.dom.box_move.attr("width",0);s.dom.box_stay.attr("width",0)}));o.on("mouseup",(async()=>{s.dom.rightg.vslider.box.attr("fill",f);o.on("mousemove",null).on("mouseup",null);if(n==0)return;s.dom.rightg.vslider.boxy+=n;const t=Math.ceil(s.data_fullstack.stackcount*n/i);s.partstack.start+=t;s.partstack.stop+=t;a.tkcloakon(e);const r=await v(e,a,{stackstart:s.partstack.start,stackstop:s.partstack.stop,grouptype:s.data.type});s.data=r.groups[0];Q(s,e,a);A(e);a.tkcloakoff(e,{});a.block_setheight()}))}));s.dom.rightg.vslider.boxtopline=s.dom.rightg.vslider.boxg.append("line").attr("stroke",m).attr("stroke-width",3).attr("x2",40).on("mouseover",(()=>s.dom.rightg.vslider.boxtopline.attr("stroke",u))).on("mouseout",(()=>s.dom.rightg.vslider.boxtopline.attr("stroke",m))).on("mousedown",(t=>{t.preventDefault();const i=s.data.height;const r=t.clientY;let n=0;const o=l(document.body);o.on("mousemove",(t=>{const e=t.clientY;const a=e-r;if(a<0){if(s.dom.rightg.vslider.boxy+a<=0)return}else{if(s.dom.rightg.vslider.boxh-a<=g*i/s.data_fullstack.stackcount)return}n=a;s.dom.rightg.vslider.boxg.attr("transform","translate(0,"+(s.dom.rightg.vslider.boxy+n)+")");s.dom.rightg.vslider.box.attr("height",s.dom.rightg.vslider.boxh-n);s.dom.rightg.vslider.boxbotline.attr("y1",s.dom.rightg.vslider.boxh-n).attr("y2",s.dom.rightg.vslider.boxh-n)}));o.on("mouseup",(async()=>{o.on("mousemove",null).on("mouseup",null);if(n==0)return;s.dom.rightg.vslider.boxy+=n;s.partstack.start+=Math.ceil(s.data_fullstack.stackcount*n/i);a.tkcloakon(e);const t=await v(e,a,{stackstart:s.partstack.start,stackstop:s.partstack.stop,grouptype:s.data.type});s.data=t.groups[0];Q(s,e,a);a.tkcloakoff(e,{});A(e);a.block_setheight()}))}));s.dom.rightg.vslider.boxbotline=s.dom.rightg.vslider.boxg.append("line").attr("stroke",m).attr("stroke-width",3).attr("x2",40).on("mouseover",(()=>s.dom.rightg.vslider.boxbotline.attr("stroke",u))).on("mouseout",(()=>s.dom.rightg.vslider.boxbotline.attr("stroke",m))).on("mousedown",(t=>{t.preventDefault();const i=s.data.height;const r=t.clientY;let n=0;const o=l(document.body);o.on("mousemove",(t=>{const e=t.clientY;const a=e-r;if(a<0){if(s.dom.rightg.vslider.boxh+a<=g*i/s.data_fullstack.stackcount)return}else{if(s.dom.rightg.vslider.boxy+a>=i-s.dom.rightg.vslider.boxh)return}n=a;s.dom.rightg.vslider.box.attr("height",s.dom.rightg.vslider.boxh+n);s.dom.rightg.vslider.boxbotline.attr("y1",s.dom.rightg.vslider.boxh+n).attr("y2",s.dom.rightg.vslider.boxh+n)}));o.on("mouseup",(async()=>{o.on("mousemove",null).on("mouseup",null);if(n==0)return;s.dom.rightg.vslider.boxh+=n;s.partstack.stop+=Math.ceil(s.data_fullstack.stackcount*n/i);a.tkcloakon(e);const t=await v(e,a,{stackstart:s.partstack.start,stackstop:s.partstack.stop,grouptype:s.data.type});s.data=t.groups[0];Q(s,e,a);A(e);a.tkcloakoff(e,{});a.block_setheight()}))}));return s}async function P(t,a,i){const s={alignOneGroup:a.data.type,genome:i.genome.name,regions:t.regions,variant:t.variants.map((t=>t.chr+"."+t.pos+"."+t.ref+"."+t.alt)).join(".")};if(t.file)s.file=t.file;if(t.url)s.url=t.url;if(t.indexURL)s.indexURL=t.indexURL;if(t.gdcFile){s.gdcFileUUID=t.gdcFile.uuid;s.gdcFilePosition=t.gdcFile.position}if(t.alleleAlreadyUpdated){s.alleleAlreadyUpdated=1;s.refseqs=t.variants.refseqs;s.altseqs=t.variants.altseqs;s.refalleles=t.variants.refalleles;s.altalleles=t.variants.altalleles;s.leftflankseqs=t.variants.leftflankseqs;s.rightflankseqs=t.variants.rightflankseqs;s.ref_positions=t.variants.ref_positions;s.strictness=t.strictness}if(t.asPaired)s.asPaired=1;if("nochr"in t)s.nochr=t.nochr;if(t.drop_pcrduplicates)s.drop_pcrduplicates=1;if(t.drop_supplementary_alignments)s.drop_supplementary_alignments=1;if(a.partstack){s.stackstart=a.partstack.start;s.stackstop=a.partstack.stop;s.grouptype=a.data.type}return await e("tkbam",{headers:C(t),body:s})}function C(t){const e={"Content-Type":"application/json",Accept:"application/json"};if(t.gdcToken)e["X-Auth-Token"]=t.gdcToken;return e}function F(t,e){{const e=t.config_handle.node().getBoundingClientRect();t.tkconfigtip.clear().show(e.x-300,e.y)}const a=t.tkconfigtip.d.append("div").style("max-width","50vw");{const i=a.append("div");i.append("span").html("Show reads as:&nbsp;").style("opacity",.5).style("margin","10px 5px");o({holder:i,options:[{label:"Single",value:false,checked:!t.asPaired},{label:"Paired",value:true,checked:t.asPaired}],styles:{display:"inline-block",margin:"10px 5px"},callback:a=>{t.asPaired=a;y(t,e)}})}{d({holder:a.append("div"),labeltext:"Drop PCR or optical duplicates",checked:t.drop_pcrduplicates,divstyle:{display:"block",margin:"10px 5px",height:"10px","margin-left":"6.5px"},callback:()=>{t.drop_pcrduplicates=!t.drop_pcrduplicates;y(t,e)}})}if(t.variants){d({holder:a.append("div"),labeltext:"Show read names",checked:t.show_readnames,divstyle:{display:"block",margin:"10px 5px",height:"10px","margin-left":"6.5px"},callback:()=>{t.show_readnames=!t.show_readnames;y(t,e)}});if(t.variants[0].strictness==0);else if(!t.variants[0].strictness){t.variants[0].strictness=1}const i=a.append("div");i.append("span").html("Strictness: ").style("display","block").style("height","10px").style("opacity",.5).style("margin","10px 5px").style("margin-top","20px");o({holder:i,options:[{label:'Lenient: "None group" is not generated.',value:0,checked:t.strictness==0},{label:'Strict: "None group" is generated for reads with imperfect match to both reference and alternative alleles.',value:1,checked:t.strictness==1}],styles:{display:"block",margin:"10px 5px",height:"10px","margin-left":"30px"},callback:a=>{t.strictness=a;y(t,e)}})}a.append("div").style("display","inline-block").style("height","10px").style("margin-top","20px").style("font-size",".8em").html(`\n\t<ul style="padding-left:15px">\n\t <li><b>Matches</b> are rendered as gray boxes aligned to the reference.</li>\n\t <li><b>Mismatches</b> will be checked when 1 bp is wider than 1 pixel, and are rendered as red boxes aligned to the reference.</li>\n\t <li><b>Softclips</b> are rendered as blue boxes not aligned to the reference.</li>\n\t <li><b>Base qualities</b> are rendered when 1 bp is wider than 2 pixels. See color scale below. When base quality is not used or is unavailable, full colors are used.</li>\n\t <li><b>Sequences</b> from mismatch and softclip will be printed when 1 bp is wider than 7 pixels.</li>\n\t <li>An <b>insertion</b> with on-screen size wider than 1 pixel will be rendered as cyan text between aligned bases, in either a letter or the number of inserted bp. Text color scales by average base quality when that is in use.</li>\n\t <li><b>Deletions</b> are gaps joined by black horizontal lines.</li>\n\t <li><b>Split reads</b> and splice junctions are indicated by solid gray lines.</li>\n\t <li><b>Read pairs</b> are joined by dashed gray lines.</li>\n <li><b>Discordant reads</b> Discordant reads are colored based on their respective features as described below:<ul style="list-style-type:none;"> <li> <svg width="10" height="10" style = "display:inline-block;"> <rect width="10" height="10" style="fill:#3B7A57;" /> </svg> Read pair has wrong insert size </li> <li> <svg width="10" height="10" style = "display:inline-block;"> <rect width="10" height="10" style="fill:#6B4423;" /> </svg> Mate is unmapped </li> <li> <svg width="10" height="10" style = "display:inline-block;"> <rect width="10" height="10" style="fill:#fc6df3;" /> </svg> Wrong orientation </li> <li> <svg width="10" height="10" style = "display:inline-block;"> <rect width="10" height="10" style="fill:#d48b37;" /> </svg> Mate mapped to different chromosome </li> </ul>\n </li> \n\t</ul>`);a.append("div").style("margin-top","10px").append("img").attr("width",t.colorscale.width).attr("height",t.colorscale.height).attr("src",t.colorscale.src);a.append("div").style("font-size",".8em").html(`\n`)}function T(t,e,a){if(t.variants){U(t,e,a)}}function z(t,e){const a=t.readAlignmentTable._groups[0][0].querySelectorAll("tr");a.forEach((a=>{if(a.rowIndex==e+1&&!t.is_align_gene){a.style.setProperty("font-weight","bold");const t=a.querySelectorAll("td");t.forEach((t=>{if(t.style.backgroundColor.toString()=="rgb(255, 255, 255)"){t.style.setProperty("background-color","yellow")}}))}else if(a.rowIndex==e+2&&t.is_align_gene){a.style.setProperty("font-weight","bold");const t=a.querySelectorAll("td");t.forEach((t=>{if(t.style.backgroundColor.toString()=="rgb(255, 255, 255)"){t.style.setProperty("background-color","yellow")}}))}else{a.style.setProperty("font-weight","normal");const t=a.querySelectorAll("td");t.forEach((t=>{if(t.style.backgroundColor.toString()=="yellow"){t.style.setProperty("background-color","rgb(255, 255, 255)")}}))}}))}async function j(t,e,a,i,s){const r=[];const l=[];const n=[];let o=a.alignmentData.final_read_align[0];let d=t.variants[0].pos-t.variants.leftflankseqs[0].length;t.variants[0].pos+t.variants.rightflankseqs[0].length;if(i.data.type=="support_alt"+s.toString()){d=t.variants[s].pos-t.variants.leftflankseqs[s].length;t.variants[s].pos+t.variants.rightflankseqs[s].length}let p=d;let c=d;let g=0;let h=t.readAlignmentTable.node().children[0];let f=0;let m=false;let u=0;for(const a of o){if(a=="-"){if(m==true){l.push(1);n.push("break");p+=1;c+=1}else{const a=await H(e,t,p,c-1,g);const i={src:a.src,width:g,height:a.height,colspan:f};r.push(i);n.push("gene_model");f=0;p=d+u+1;c=d+u+1;g=0;m=true;l.push(1);n.push("break")}f+=1;g+=h.children[u].getBoundingClientRect().width}else if(i.data.type=="support_alt"+s.toString()&&t.variants[s].alt.length>t.variants[s].ref.length&&t.variants[s].pos<d+u&&t.variants[s].pos+t.variants[s].alt.length-1>=d+u);else if(t.variants[0].pos==d+u&&i.data.type=="support_alt"+s.toString()){if(t.variants[s].ref.length==1&&t.variants[s].alt.length==1){continue}if(t.variants[s].ref.length>=t.variants[s].alt.length){c+=1;f+=1;g+=h.children[u+1].getBoundingClientRect().width}const a=await H(e,t,p,c,g);const i={src:a.src,width:g,height:a.height,colspan:f};r.push(i);n.push("gene_model");f=0;p=d+u+t.variants[s].ref.length;c=d+u+t.variants[s].ref.length;if(t.variants[s].ref.length<t.variants[s].alt.length){l.push(t.variants[0].alt.length);n.push("break")}g=0;m=false}else if(u==o.length-1){c+=1;f+=1;g+=h.children[u].getBoundingClientRect().width;const a=await H(e,t,p,c,g);const i={src:a.src,width:g,height:a.height,colspan:f};r.push(i);n.push("gene_model")}else{c+=1;f+=1;g+=h.children[u].getBoundingClientRect().width;m=false}u+=1}let _=0;let x=0;const y=t.readAlignmentTable.node().insertRow();if(t.readAlignmentTable.node().children.length>=3){const e=t.readAlignmentTable.node().children[2];t.readAlignmentTable.node().insertBefore(y,e)}else{console.log("Possible problem in placing gene model in table. Please check")}for(let t=0;t<n.length;t++){const e=y.insertCell();if(n[t]=="gene_model"){const t=document.createElement("img");t.src=r[x].src;t.width=r[x].width;t.height=r[x].height;e.appendChild(t);e.colSpan=r[x].colspan;x+=1}else if(n[t]=="break"){e.colSpan=l[_];_+=1}}}async function U(t,e,a){t.multiAlignMenu.clear().show(50,100);const i=t.multiAlignMenu.d.append("div").text("Loading...");try{const s=await P(t,e,a);if(s.error){i.remove();n(t.multiAlignMenu.d,"Realignment of reads in ambiguous group is not currently implemented.");setTimeout((()=>t.multiAlignMenu.d.remove()),3e3);return}i.remove();let r=0;let l=[];let o=[];if(e.data.type.includes("support_alt")){for(let a=0;a<t.variants.length;a++){if(e.data.type=="support_alt"+a.toString()){r=a}}}else if(e.data.type=="support_ref"){for(let e=0;e<t.variants.length;e++){l.push({start:t.variants[e].pos,stop:t.variants[e].pos+t.variants[e].ref.length})}l.sort(((t,e)=>t.start-e.start));let e={start:l[0].start,stop:l[0].stop};o.push(l[0].start);let a=false;for(let t=1;t<l.length;t++){if(l[t].start<=e.stop&&e.stop<=l[t].stop){e=l[t]}else if(e.stop>l[t].stop){continue}else{o.push(e.stop);o.push(l[t].start)}}o.push(Math.max(e.stop,l[l.length-1].stop))}if(s.alignmentData.final_read_align.length>0&&(e.data.type.includes("support_alt")||e.data.type=="support_ref")){const i=t.multiAlignMenu.d.append("button").style("margin-left","10px").text("Show gene model").on("click",(async()=>{t.is_align_gene=true;i.property("disabled",true);await j(t,a,s,e,r)}))}L(t,s,e,r,o)}catch(e){i.remove();n(t.multiAlignMenu.d,e)}}function L(t,e,a,i,s){if(!e.alignmentData.read_count){e.alignmentData.read_count=0}if(a.data.type=="support_ref"){t.multiAlignMenu.d.append("div").text("Number of reads aligned to reference allele = "+e.alignmentData.read_count).style("text-align","center")}else if(a.data.type=="support_no"||a.data.type=="support_amb"){t.multiAlignMenu.d.append("div").text("Number of reads aligned = "+e.alignmentData.read_count).style("text-align","center")}else if(a.data.type.includes("support_alt")){let s=0;for(let r=0;r<t.variants.length;r++){if(a.data.type=="support_alt"+r.toString()){s=1;i=r;t.multiAlignMenu.d.append("div").text("Number of reads aligned to alternative allele "+t.variants[r].alt+" = "+e.alignmentData.read_count).style("text-align","center")}}if(s==0){console.log("group.data.type:",a.data.type);console.log("Alternate allele not found")}}if(e.alignmentData.partstack_start){t.multiAlignMenu.d.append("div").text("Reads aligned from "+e.alignmentData.partstack_start+" to "+e.alignmentData.partstack_stop).style("text-align","center")}const r=t.multiAlignMenu.d.append("div").style("margin","20px");t.readAlignmentTable=r.append("table").style("font-family","Courier").style("font-size","0.8em").style("color","#303030").style("margin","5px 5px 20px 5px").style("border-spacing",0).style("border-collapse","separate").style("text-align","center").style("empty-cells","show");let l=t.readAlignmentTable.append("tr").style("color","white").style("background-color","white");l.attr("id","RefAltBar");let n;let o=0;let d=0;let p=0;let c=1;if(a.data.type=="support_alt"+i.toString()){if(t.variants.length==1){n="Alternative allele";if(n.length<t.variants[i].alt.length){c=0}else{n=" Alternative allele"}}else{if(a.data.type=="support_alt"+i.toString()){n="Alternative allele = "+t.variants[i].alt;if(n.length<t.variants[i].alt.length){c=0}else{n=" Alternative allele = "+t.variants[i].alt}}}}else if(a.data.type=="support_ref"){if(t.is_same_ref==false){n="Combined reference allele"}else{n="Reference allele"}if(n.length<s[1]-s[0]){c=0}else{if(t.is_same_ref==false){n=" Combined reference allele"}else{n=" Reference allele"}}}t.readAlignmentTableGroup=a.data.type;if(e.alignmentData.final_read_align.length>0){for(const r of e.alignmentData.final_read_align[0]){o+=1;const r=l.append("td");if(a.data.type=="support_alt"+i.toString()&&o>t.variants.leftflankseqs[i].length+e.alignmentData.gaps_before_variant&&o<=t.variants.leftflankseqs[i].length+t.variants[i].alt.length+e.alignmentData.gaps_before_variant){if(c==1){d=1;r.text(" ").style("text-align","right").style("font-weight","550").style("margin","5px 5px 10px 5px").style("color","black").style("background-color","black")}else{if(p<n.length){r.text(n[p]).style("text-align","right").style("font-weight","550").style("margin","5px 5px 10px 5px").style("color","white").style("background-color","black");p+=1}else{r.text(" ").style("text-align","right").style("font-weight","550").style("margin","5px 5px 10px 5px").style("color","black").style("background-color","black")}}}else if(a.data.type=="support_ref"&&o>t.variants.leftflankseqs[0].length+e.alignmentData.gaps_before_variant&&o<=t.variants.leftflankseqs[0].length+s[1]-s[0]+e.alignmentData.gaps_before_variant){if(c==1){d=1;r.text("").style("text-align","right").style("font-weight","550").style("margin","5px 5px 10px 5px").style("color","black").style("background-color","black")}else{if(p<n.length){r.text(n[p]).style("text-align","right").style("font-weight","550").style("margin","5px 5px 10px 5px").style("color","white").style("background-color","black");p+=1}else{r.text("").style("text-align","right").style("font-weight","550").style("margin","5px 5px 10px 5px").style("color","black").style("background-color","black")}}}else if(d==1&&c==1){r.text(n[p]).style("text-align","right").style("font-weight","550").style("margin","5px 5px 10px 5px").style("color","black").style("background-color","white");p+=1;if(p==n.length){d=0}}else{r.text("").style("text-align","right").style("font-weight","550").style("margin","5px 5px 10px 5px").style("color","white").style("background-color","white")}}let r=0;for(const l of e.alignmentData.final_read_align){let n=0;const o=t.readAlignmentTable.append("tr").style("color","white").style("background-color","white");if(r==0&&(a.data.type=="support_ref"||a.data.type=="support_alt")){o.attr("id","RefAltSeq")}else{o.attr("id",r.toString())}const d=e.alignmentData.qual_r[r].split(",");const p=e.alignmentData.qual_g[r].split(",");const c=e.alignmentData.qual_b[r].split(",");for(const g of l){n+=1;let l;if(r==0&&(a.data.type=="support_ref"||a.data.type.includes("support_alt"))){l=o.append("td").text(g).style("background-color","white").style("color","black").style("font-weight","550")}else{l=o.append("td").text(g).style("background-color","rgb("+d[n-1]+","+p[n-1]+","+c[n-1]+")");if(g!="-"){l.style("color","white")}else{l.style("color","black")}}if(a.data.type=="support_alt"+i.toString()&&n>t.variants.leftflankseqs[i].length+e.alignmentData.gaps_before_variant&&n<=t.variants.leftflankseqs[i].length+t.variants[i].alt.length+e.alignmentData.gaps_before_variant){l.style("color","black")}else if(a.data.type=="support_ref"&&n>t.variants.leftflankseqs[0].length+e.alignmentData.gaps_before_variant&&n<=t.variants.leftflankseqs[0].length+s[1]-s[0]+e.alignmentData.gaps_before_variant){l.style("color","black")}}r+=1}}}async function I(t,a,i,s){const r=t.readMenu.d.append("div").text("Loading...");const o=p(t.variants?{refseqs:t.variants.refseqs,altseqs:t.variants.altseqs,chrom:t.variants[0].chr,ref_positions:t.variants.ref_positions,refalleles:t.variants.refalleles,altalleles:t.variants.altalleles,start:i.start,stop:i.stop,paired:t.asPaired}:{start:i.start,stop:i.stop,paired:t.asPaired});const d=await e("tkbam",o);if(d.error){n(r,d.error);return}r.remove();for(const i of d.lst){const r=t.readMenu.d.append("div").style("margin","10px");const o=r.append("div").html(i.alignment);const g=r.append("div").style("margin-top","10px");g.append("button").text("Copy read sequence").on("click",(function(){navigator.clipboard.writeText(i.seq).then((()=>{}),console.warn);l(this).html("Copy read sequence&nbsp;&check;")}));if(d.lst[0].alignments){l(this).append("span").html("&nbsp;");const e=g.append("button").style("margin-left","10px").text("Align read to variant alleles");let a=true;e.on("click",(()=>{if(a){a=false;for(let e=0;e<t.variants.length;e++){c(f,"Ref",t,d.lst[0].start_readpos-1,e);c(f,"Alt",t,d.lst[0].start_readpos-1,e)}}if(f.style("display")=="none"){f.style("display","block")}else{f.style("display","none")}}))}if(i.unmapped_mate&&!t.asPaired){const i=g.append("button").style("margin-left","10px").text("Show unmapped mate").on("click",(async()=>{i.property("disabled",true);const s=t.readMenu.d.append("div").text("Loading...");const o=await e("tkbam",p({show_unmapped:1}));if(o.error){s.text("");n(s,o.error);i.property("disabled",false);return}s.remove();i.remove();const d=o.lst[0];r.append("div").html(d.alignment);const c=r.append("div").style("margin-top","10px");c.append("button").text("Copy read sequence").on("click",(function(){navigator.clipboard.writeText(d.seq).then((()=>{}),console.warn);l(this).html("Copy read sequence&nbsp;&check;")}));E(d,c,t,a);r.append("div").html(d.info)}))}const h=g.append("button").style("margin-left","10px").text("Show gene model").property("disabled",!i.seq||i.seq=="*").on("click",(async()=>{h.property("disabled",true);let t=0;let e=0;let i=0;let r=d.lst[0].boxes[0].start;let l;let n=0;const p=o.node().children[0].getElementsByTagName("tbody")[0];const c=p.insertRow();const g=c.insertCell();const f=document.createTextNode("");g.appendChild(f);const m=[];const u=[];let _=0;const x=o.node().children[0].children[0].children[0];for(const o of d.lst[0].boxes){if(o.opr=="H"){continue}else if(o.opr=="M"||o.opr=="S"||o.opr=="N"&&o.len<d.lst[0].readpanel_DN_maxlength||o.opr=="D"&&o.len<d.lst[0].readpanel_DN_maxlength){for(let t=0;t<o.len;t++){n+=x.children[e+1].getBoundingClientRect().width;e+=1}i+=o.len}else if(o.opr=="I"||o.opr=="N"&&o.len>=d.lst[0].readpanel_DN_maxlength||o.opr=="D"&&o.len>=d.lst[0].readpanel_DN_maxlength){l=o.start;const t=await G(a,s,r,l,n);const e={src:t.src,width:n,height:t.height,colspan:i};m.push(e);if(o.opr=="I"){u.push(o.len)}else if(o.opr=="N"||o.opr=="D"){u.push(1)}if(o.opr=="D"||o.opr=="N"){r=o.start+o.len}else if(o.opr=="I"){r=o.start}n=0;i=0;_+=1}if(t==d.lst[0].boxes.length-1){l=o.start+o.len;const t=await G(a,s,r,l,n);const e={src:t.src,width:n,height:t.height,colspan:i};m.push(e)}t+=1}const y=_+m.length;let v=0;let b=0;for(let t=0;t<y;t++){const e=c.insertCell();if(t%2==0){const t=document.createElement("img");t.src=m[b].src;t.width=m[b].width;t.height=m[b].height;e.appendChild(t);e.colSpan=m[b].colspan;b+=1}else{e.colSpan=u[v];v+=1}}}));E(i,g,t,a);r.append("div").html(i.info);const f=r.append("div").style("display","none")}function p(e={}){const r=t.regions[s];const l={getread:1,qname:encodeURIComponent(i.qname),genome:a.genome.name,chr:r.chr,start:r.start,stop:r.stop,...e};if(t.gdcFile){l.gdcFileUUID=t.gdcFile.uuid;l.gdcFilePosition=t.gdcFile.position}if(t.nochr)l.nochr=1;if(t.file)l.file=t.file;if(t.url)l.url=t.url;if(t.indexURL)l.indexURL=t.indexURL;if(t.asPaired){l.getpair=1}else{if(i.isfirst){l.getfirst=1}else if(i.islast){l.getlast=1}else{l.unknownorder=1;l.readstart=i.start;l.readstop=i.stop}}return{headers:C(t),body:l}}function c(t,e,a,i,s){let r,l,n;if(e=="Ref"){r=d.lst[0].alignments[s].q_seq_ref;l=d.lst[0].alignments[s].align_ref;n=d.lst[0].alignments[s].r_seq_ref}if(e=="Alt"){r=d.lst[0].alignments[s].q_seq_alt;l=d.lst[0].alignments[s].align_alt;n=d.lst[0].alignments[s].r_seq_alt}if(d.lst[0].alignments.length==1){t.append("span").text(e+" alignment").style("font-family","Courier").style("font-size","15px").style("color","#303030").style("margin","5px 5px 10px 5px")}else{if(e=="Alt"){t.append("span").text("Alignment with Alt allele: "+a.variants[s].alt).style("font-family","Courier").style("font-size","15px").style("color","#303030").style("margin","5px 5px 10px 5px")}else if(e=="Ref"){t.append("span").text("Alignment with Ref allele: "+a.variants[s].ref).style("font-family","Courier").style("font-size","15px").style("color","#303030").style("margin","5px 5px 10px 5px")}else{console.log("Unknown allele, please check")}}const o=t.append("table").style("font-family","Courier").style("font-size","0.8em").style("color","#303030").style("margin","5px 5px 20px 5px");let p=0;const c=o.append("tr");c.append("td").text(e+" allele").style("text-align","right").style("font-weight","550").style("white-space","nowrap");for(const t of n){p+=1;if(e=="Ref"&&p>d.lst[0].alignments[s].red_region_start_ref&&p<=d.lst[0].alignments[s].red_region_stop_ref){c.append("td").text(t).style("color","red")}else if(e=="Alt"&&p>d.lst[0].alignments[s].red_region_start_alt&&p<=d.lst[0].alignments[s].red_region_stop_alt){c.append("td").text(t).style("color","red")}else{c.append("td").text(t)}}const g=o.append("tr");g.append("td");p=0;for(const t of l){p+=1;if(e=="Ref"&&p>d.lst[0].alignments[s].red_region_start_ref&&p<=d.lst[0].alignments[s].red_region_stop_ref){g.append("td").text(t).style("color","red")}else if(e=="Alt"&&p>d.lst[0].alignments[s].red_region_start_alt&&p<=d.lst[0].alignments[s].red_region_stop_alt){g.append("td").text(t).style("color","red")}else{g.append("td").text(t)}}const h=o.append("tr");h.append("td").text("Read").style("text-align","right").style("font-weight","550");p=0;for(const t of r){p+=1;if(e=="Ref"&&p>d.lst[0].alignments[s].red_region_start_ref&&p<=d.lst[0].alignments[s].red_region_stop_ref){h.append("td").text(t).style("color","red")}else if(e=="Alt"&&p>d.lst[0].alignments[s].red_region_start_alt&&p<=d.lst[0].alignments[s].red_region_stop_alt){h.append("td").text(t).style("color","red")}else{h.append("td").text(t)}}}}async function H(t,a,i,s,r){const l=t.genome.tracks.find((t=>t.__isgene));const n={name:l.name,genome:t.genome.name,rglst:[{chr:a.variants[0].chr,start:i,stop:s,width:r}],width:r,stackheight:16,stackspace:1,regionspace:0,file:l.file,devicePixelRatio:window.devicePixelRatio>1?window.devicePixelRatio:1,color:l.color,translatecoding:1,__isgene:true,noNameHover:true};{const e=t.tklst.find((t=>t.name==n.name&&t.type=="bedj"));if(e&&e.filterByName){n.filterByName=e.filterByName}}return await e("tkbedj",{method:"POST",body:JSON.stringify(n)})}async function G(t,a,i,s,r){const l=t.genome.tracks.find((t=>t.__isgene));const n={name:l.name,genome:t.genome.name,rglst:[{chr:t.rglst[a].chr,start:i,stop:s,width:r}],width:r,stackheight:16,stackspace:1,regionspace:0,file:l.file,devicePixelRatio:window.devicePixelRatio>1?window.devicePixelRatio:1,color:l.color,translatecoding:1,__isgene:true,noNameHover:true};{const e=t.tklst.find((t=>t.name==n.name&&t.type=="bedj"));if(e&&e.filterByName){n.filterByName=e.filterByName}}return await e("tkbedj",{method:"POST",body:JSON.stringify(n)})}function E(t,a,i,s){if(!s.genome.blat){return}const r=a.append("button").style("margin-left","10px").text("BLAT").on("click",(async()=>{r.property("disabled",true);l.selectAll("*").remove();const a=l.append("div").text("Loading...");try{const r=await e("blat",{body:{genome:s.genome.name,seq:t.seq,soft_starts:t.soft_starts,soft_stops:t.soft_stops}});if(r.error)throw r.error;if(r.nohit)throw"No hit";if(!r.hits)throw".hits[] missing";a.remove();O(r.hits,l,i,s)}catch(t){a.text(t.message||t);if(t.stack)console.log(t.stack)}r.property("disabled",false)}));const l=a.append("div")}async function Y(t,e,a,i,s){t.data_fullstack=t.data;const r=(t.partstack?t.partstack.start:0)+Math.floor(i/t.data.stackheight);if(r<g/2){t.partstack={start:0,stop:g}}else if(r>t.data_fullstack.stackcount-g/2){t.partstack={start:t.data_fullstack.stackcount-g,stop:t.data_fullstack.stackcount}}else{t.partstack={start:r-g/2,stop:r+g/2}}a.tkcloakon(e);const l=await v(e,a,{stackstart:t.partstack.start,stackstop:t.partstack.stop,grouptype:t.data.type});t.data=l.groups[0];Q(t,e,a);A(e);a.tkcloakoff(e,{});a.block_setheight()}function O(t,e,a,i){const s=e.append("table");const r=s.append("tr").style("opacity",.5).style("font-size",".8em");r.append("td").text("QScore");r.append("td").text("QStart");r.append("td").text("QStop");r.append("td").text("QStrand");r.append("td").text("QAlignLen");r.append("td").text("RChr");r.append("td").text("RStart");r.append("td").text("RStop");r.append("td").text("RAlignLen");for(const e of t){let t=s.append("tr").style("font-size",".8em");t.append("td").text(e.query_match);t.append("td").text(e.query_startpos);t.append("td").text(e.query_stoppos);t.append("td").text(e.query_strand);t.append("td").text(e.query_alignlen);t.append("td").text(e.ref_chr);t.append("td").text(e.ref_startpos);t.append("td").text(e.ref_stoppos);t.append("td").text(e.ref_alignlen)}}function Q(t,e,a){R(t,e,a);if(t.partstack){if(e.variants){t.dom.diff_score_barplot_partstack.attr("xlink:href",t.data.diff_scores_img.src).attr("width",t.data.diff_scores_img.width).attr("height",t.data.diff_scores_img.height);t.ReadNameMaxwidth=0;if(e.show_readnames){t.dom.read_names_g.attr("transform","translate(0,0)");t.dom.read_names_g.selectAll("*").remove();if(t.data.templatebox&&t.data.stackheight>=x){let e=1;for(const a of t.data.templatebox){const i=t.dom.read_names_g.append("text").attr("x",0).attr("y",t.data.height*e/t.data.templatebox.length).attr("text-anchor","end").style("fill","black").attr("font-size",t.data.height/t.data.templatebox.length).text(a.qname);t.ReadNameMaxwidth=Math.max(t.ReadNameMaxwidth,i.node().getBBox().width);e+=1}}}else{t.dom.read_names_g.selectAll("*").remove();t.ReadNameMaxwidth=0}}t.dom.img_partstack.attr("xlink:href",t.data.src).attr("width",t.data.width).attr("height",t.data.height).attr("y",0);t.dom.img_fullstack.attr("width",0).attr("height",0);if(e.variants){t.dom.diff_score_barplot_fullstack.attr("width",0).attr("height",0)}const a=t.data.height;t.dom.rightg.vslider.bar.transition().attr("height",a);t.dom.rightg.vslider.boxy=a*t.partstack.start/t.data_fullstack.stackcount;t.dom.rightg.vslider.boxh=a*(t.partstack.stop-t.partstack.start)/t.data_fullstack.stackcount;t.dom.rightg.vslider.box.transition().attr("height",t.dom.rightg.vslider.boxh);t.dom.rightg.vslider.boxbotline.transition().attr("y1",t.dom.rightg.vslider.boxh).attr("y2",t.dom.rightg.vslider.boxh);t.dom.rightg.vslider.boxg.transition().attr("transform","translate(0,"+t.dom.rightg.vslider.boxy+")")}else{t.dom.img_fullstack.attr("xlink:href",t.data.src).attr("width",t.data.width).attr("height",t.data.height);t.dom.img_partstack.attr("width",0).attr("height",0);if(e.variants){if(t.dom.diff_score_barplot_partstack){t.dom.diff_score_barplot_partstack.attr("width",0).attr("height",0)}t.dom.diff_score_barplot_fullstack.attr("width",t.data.diff_scores_img.width).attr("height",t.data.diff_scores_img.height);if(e.show_readnames){t.dom.read_names_g.selectAll("*").remove()}}t.dom.rightg.vslider.g.transition().attr("transform","scale(0)")}t.dom.img_cover.attr("width",t.data.width).attr("height",t.data.height)}export{y as loadTk};
@@ -1 +1 @@
1
- import{q as e,I as t,W as o,ag as a,aB as n,aC as r,p,ac as l}from"./app-a8c4854a.js";import{b as i}from"./axis-747c801e.js";async function s(e,t){t.tkcloakon(e);t.block_setheight();const o=c(e,t);try{if(e.uninitialized){d(e,t);delete e.uninitialized}await f(e,t);o({})}catch(t){e.height_main=50;o({error:t.message||t});if(t.stack)console.log(t.stack);return}}function c(e,t){return o=>{t.tkcloakoff(e,{error:o.error});t.block_setheight();t.setllabel()}}function d(e,t){if(!e.scale)e.scale={};if(Number.isFinite(e.scale.min)&&Number.isFinite(e.scale.max));else{e.scale.auto=true}if(!Number.isFinite(e.barheight))e.barheight=100;e.height_main=e.toppad+e.barheight+e.bottompad;if(!e.ncolor)e.ncolor="#BD005E";if(!e.ncolor2)e.ncolor2="#5E00BD";if(!e.pcolor)e.pcolor="#005EBD";if(!e.pcolor2)e.pcolor2="#FA7D00";e.leftaxis=e.gleft.append("g");e.config_handle=t.maketkconfighandle(e).on("click",(()=>{e.tkconfigtip.clear().showunder(e.config_handle.node())}))}async function f(n,r){r.tkcloakon(n);const p=r.tkarg_q(n);p.rglst=m(n,r);p.genome=r.genome.name;n.height_main=n.toppad+n.barheight+n.bottompad;n.glider.selectAll("*").remove();const l=await e("tkbedgraphdot",p);if(l.error)throw l.error;n.tklabel.transition().attr("y",n.barheight/2);for(const e of l.rglst){n.glider.append("g").attr("transform","translate("+e.xoff+","+n.toppad+")").append("image").attr("width",e.width).attr("height",n.barheight).attr("xlink:href",e.img)}n.leftaxis.selectAll("*").remove();if(l.nodata){throw"no data in view range"}if(l.minv!=undefined){n.scale.min=l.minv;n.scale.max=l.maxv}const s=t().domain([n.scale.min,n.scale.max]).range([n.barheight,0]);const c=i().scale(s).tickValues([n.scale.min,n.scale.max]);if(n.integer4axis){c.tickFormat(o("d"))}a({axis:n.leftaxis.call(c),color:"black",showline:true})}function u(e,t,o,a){const i={pcolor:{},ncolor:{},pcolor2:{},ncolor2:{},dotplot:{},dividefactor:{}};{const t=o.append("div").style("margin-bottom","15px");t.append("span").html("Height&nbsp;&nbsp;");t.append("input").attr("size",5).property("value",e.barheight).on("keyup",(t=>{if(t.code!="Enter")return;const o=t.target.value;if(o=="")return;const r=Number.parseInt(o);if(Number.isNaN(r)||r<=1){alert("track height must be positive integer");return}e.barheight=r;a(n.height)}))}i.pcolor.row=o.append("div").style("margin-bottom","15px");i.pcolor.lab=i.pcolor.row.append("span").text("Positive value color").style("padding-right","10px");i.pcolor.row.append("input").attr("type","color").property("value",r(e.pcolor)).on("change",(t=>{e.pcolor=t.target.value;a(n.pcolor)}));i.ncolor.row=o.append("div").style("margin-bottom","15px");i.ncolor.lab=i.ncolor.row.append("span").text("Negative value color").style("padding-right","10px");i.ncolor.row.append("input").attr("type","color").property("value",r(e.ncolor)).on("change",(t=>{e.ncolor=t.target.value;a(n.ncolor)}));if(!e.scale.auto){i.pcolor2.row=o.append("div").style("margin-bottom","15px");i.pcolor2.lab=i.pcolor2.row.append("span").html("&ge;Max color").style("padding-right","10px");i.pcolor2.row.append("input").attr("type","color").property("value",r(e.pcolor2)).on("change",(t=>{e.pcolor2=t.target.value;a(n.pcolor2)}));i.ncolor2.row=o.append("div").style("margin-bottom","15px");i.ncolor2.lab=i.ncolor2.row.append("span").html("&le;Min color").style("padding-right","10px");i.ncolor2.row.append("input").attr("type","color").property("value",r(e.ncolor2)).on("change",(t=>{e.ncolor2=t.target.value;a(n.ncolor2)}))}{const t=o.append("div").style("margin-bottom","15px");t.append("span").html("Y scale&nbsp;&nbsp;");const r=t.append("select");const p=r.append("option").text("automatic");const l=r.append("option").text("fixed");const i=r.append("option").text("percentile");r.on("change",(t=>{const o=t.target.selectedIndex;if(o==0){d.style("display","none");f.style("display","none");e.scale.auto=1;a(n.autoscale);return}if(o==1){d.style("display","block");f.style("display","none");return}d.style("display","none");f.style("display","block")}));let s=false,c=false;if(e.scale.auto){p.property("selected",1)}else{if(e.scale.percentile){c=true;i.property("selected",1)}else{s=true;l.property("selected",1)}}const d=t.append("div").style("margin","10px").style("display",s?"block":"none");{const t=d.append("div");t.append("span").html("Max&nbsp;").style("font-family","Courier").style("font-size",".9em");const o=t.append("input").attr("size",5);if(s){o.property("value",e.scale.max)}const r=d.append("div");r.append("span").html("Min&nbsp;").style("font-family","Courier").style("font-size",".9em");const p=r.append("input").attr("size",5);if(s){p.property("value",e.scale.min)}r.append("button").text("Set").style("margin-left","5px").on("click",(()=>{const t=o.property("value");if(t==""){return}const r=Number.parseFloat(t);if(Number.isNaN(r)){alert("invalid max value");return}const l=p.property("value");if(l==""){return}const i=Number.parseFloat(l);if(Number.isNaN(i)){alert("invalid min value");return}delete e.scale.auto;delete e.scale.percentile;e.scale.max=r;e.scale.min=i;a(n.fixedscale)}))}const f=t.append("div").style("margin-top","6px").style("display",c?"block":"none");{f.append("span").html("Percentile&nbsp;").style("font-family","Courier").style("font-size",".9em");const t=f.append("input").attr("size",5);if(c){t.property("value",e.scale.percentile)}const o=t=>{if(t=="")return;const o=Number.parseInt(t);if(Number.isNaN(o)||o<=0||o>100){alert("percentile should be integer within range 0-100");return}delete e.scale.auto;e.scale.percentile=o;a(n.percentilescale)};t.on("keyup",(e=>{if(e.code!="Enter")return;o(t.property("value"))}));f.append("button").text("Set").style("margin-left","5px").on("click",(()=>{o(t.property("value"))}))}}{i.dotplot.row=o.append("div").style("margin-bottom","15px");i.dotplot.row.append("span").html("Dot plot&nbsp;&nbsp;");const t=i.dotplot.row.append("select").on("change",(t=>{const o=t.target.selectedIndex;if(o==0){delete e.dotplotfactor}else{e.dotplotfactor=Number.parseInt(t.target.options[o].innerHTML)}a(o==0?n.nodotplot:n.usedotplot)}));let r=t.append("option").text("no");if(!e.dotplotfactor){r.property("selected",1)}r=t.append("option").text("5");if(e.dotplotfactor==5){r.property("selected",1)}r=t.append("option").text("10");if(e.dotplotfactor==10){r.property("selected",1)}r=t.append("option").text("15");if(e.dotplotfactor==15){r.property("selected",1)}r=t.append("option").text("20");if(e.dotplotfactor==20){r.property("selected",1)}}i.dividefactor.row=o.append("div");{const t=Math.random().toString();const o=i.dividefactor.row.append("input").attr("type","checkbox").attr("id",t);if(!e.normalize.disable){o.property("checked",1)}i.dividefactor.row.append("label").html("&nbsp;Apply normalization").attr("for",t);const r=i.dividefactor.row.append("div").style("margin","5px 10px 0px 20px").style("display",e.normalize.disable?"none":"block");r.append("span").html("Divide raw value by&nbsp;");const s=r.append("input").attr("type","number").style("width","60px").property("value",e.normalize.dividefactor).on("keyup",(t=>{if(t.code!="Enter"&&t.code!="NumpadEnter")return;const o=t.target.value;if(o<=0){return}e.normalize.dividefactor=o;a(n.usedividefactor)}));r.append("div").text("Enter a value above zero").style("font-size",".7em").style("color","#858585");o.on("change",(t=>{if(t.target.checked){p(r);delete e.normalize.disable;s.property("value",e.normalize.dividefactor);a(n.usedividefactor);return}l(r);e.normalize.disable=1;a(n.nodividefactor)}))}return i}function m(e,t){let o=t.tkarg_rglst(e);if(t.usegm){const e=o[0];e.usegm_isoform=t.usegm.isoform;for(let a=1;a<o.length;a++){const n=o[a];e.width+=n.width+t.regionspace;e.start=Math.min(e.start,n.start);e.stop=Math.max(e.stop,n.stop)}o=[e]}let a=0;for(const e of o){e.xoff=0;a+=e.width+t.regionspace}if(t.subpanels.length==e.subpanels.length){for(const e of t.subpanels){o.push({chr:e.chr,start:e.start,stop:e.stop,width:e.width,exonsf:e.exonsf,xoff:a});a+=e.width+e.leftpad}}return o}export{u as bigwigconfigpanel,s as loadTk,f as loadTk_do};
1
+ import{q as e,I as t,W as o,ag as a,aB as n,aC as r,p,ac as l}from"./app-b369b169.js";import{b as i}from"./axis-747c801e.js";async function s(e,t){t.tkcloakon(e);t.block_setheight();const o=c(e,t);try{if(e.uninitialized){d(e,t);delete e.uninitialized}await f(e,t);o({})}catch(t){e.height_main=50;o({error:t.message||t});if(t.stack)console.log(t.stack);return}}function c(e,t){return o=>{t.tkcloakoff(e,{error:o.error});t.block_setheight();t.setllabel()}}function d(e,t){if(!e.scale)e.scale={};if(Number.isFinite(e.scale.min)&&Number.isFinite(e.scale.max));else{e.scale.auto=true}if(!Number.isFinite(e.barheight))e.barheight=100;e.height_main=e.toppad+e.barheight+e.bottompad;if(!e.ncolor)e.ncolor="#BD005E";if(!e.ncolor2)e.ncolor2="#5E00BD";if(!e.pcolor)e.pcolor="#005EBD";if(!e.pcolor2)e.pcolor2="#FA7D00";e.leftaxis=e.gleft.append("g");e.config_handle=t.maketkconfighandle(e).on("click",(()=>{e.tkconfigtip.clear().showunder(e.config_handle.node())}))}async function f(n,r){r.tkcloakon(n);const p=r.tkarg_q(n);p.rglst=m(n,r);p.genome=r.genome.name;n.height_main=n.toppad+n.barheight+n.bottompad;n.glider.selectAll("*").remove();const l=await e("tkbedgraphdot",p);if(l.error)throw l.error;n.tklabel.transition().attr("y",n.barheight/2);for(const e of l.rglst){n.glider.append("g").attr("transform","translate("+e.xoff+","+n.toppad+")").append("image").attr("width",e.width).attr("height",n.barheight).attr("xlink:href",e.img)}n.leftaxis.selectAll("*").remove();if(l.nodata){throw"no data in view range"}if(l.minv!=undefined){n.scale.min=l.minv;n.scale.max=l.maxv}const s=t().domain([n.scale.min,n.scale.max]).range([n.barheight,0]);const c=i().scale(s).tickValues([n.scale.min,n.scale.max]);if(n.integer4axis){c.tickFormat(o("d"))}a({axis:n.leftaxis.call(c),color:"black",showline:true})}function u(e,t,o,a){const i={pcolor:{},ncolor:{},pcolor2:{},ncolor2:{},dotplot:{},dividefactor:{}};{const t=o.append("div").style("margin-bottom","15px");t.append("span").html("Height&nbsp;&nbsp;");t.append("input").attr("size",5).property("value",e.barheight).on("keyup",(t=>{if(t.code!="Enter")return;const o=t.target.value;if(o=="")return;const r=Number.parseInt(o);if(Number.isNaN(r)||r<=1){alert("track height must be positive integer");return}e.barheight=r;a(n.height)}))}i.pcolor.row=o.append("div").style("margin-bottom","15px");i.pcolor.lab=i.pcolor.row.append("span").text("Positive value color").style("padding-right","10px");i.pcolor.row.append("input").attr("type","color").property("value",r(e.pcolor)).on("change",(t=>{e.pcolor=t.target.value;a(n.pcolor)}));i.ncolor.row=o.append("div").style("margin-bottom","15px");i.ncolor.lab=i.ncolor.row.append("span").text("Negative value color").style("padding-right","10px");i.ncolor.row.append("input").attr("type","color").property("value",r(e.ncolor)).on("change",(t=>{e.ncolor=t.target.value;a(n.ncolor)}));if(!e.scale.auto){i.pcolor2.row=o.append("div").style("margin-bottom","15px");i.pcolor2.lab=i.pcolor2.row.append("span").html("&ge;Max color").style("padding-right","10px");i.pcolor2.row.append("input").attr("type","color").property("value",r(e.pcolor2)).on("change",(t=>{e.pcolor2=t.target.value;a(n.pcolor2)}));i.ncolor2.row=o.append("div").style("margin-bottom","15px");i.ncolor2.lab=i.ncolor2.row.append("span").html("&le;Min color").style("padding-right","10px");i.ncolor2.row.append("input").attr("type","color").property("value",r(e.ncolor2)).on("change",(t=>{e.ncolor2=t.target.value;a(n.ncolor2)}))}{const t=o.append("div").style("margin-bottom","15px");t.append("span").html("Y scale&nbsp;&nbsp;");const r=t.append("select");const p=r.append("option").text("automatic");const l=r.append("option").text("fixed");const i=r.append("option").text("percentile");r.on("change",(t=>{const o=t.target.selectedIndex;if(o==0){d.style("display","none");f.style("display","none");e.scale.auto=1;a(n.autoscale);return}if(o==1){d.style("display","block");f.style("display","none");return}d.style("display","none");f.style("display","block")}));let s=false,c=false;if(e.scale.auto){p.property("selected",1)}else{if(e.scale.percentile){c=true;i.property("selected",1)}else{s=true;l.property("selected",1)}}const d=t.append("div").style("margin","10px").style("display",s?"block":"none");{const t=d.append("div");t.append("span").html("Max&nbsp;").style("font-family","Courier").style("font-size",".9em");const o=t.append("input").attr("size",5);if(s){o.property("value",e.scale.max)}const r=d.append("div");r.append("span").html("Min&nbsp;").style("font-family","Courier").style("font-size",".9em");const p=r.append("input").attr("size",5);if(s){p.property("value",e.scale.min)}r.append("button").text("Set").style("margin-left","5px").on("click",(()=>{const t=o.property("value");if(t==""){return}const r=Number.parseFloat(t);if(Number.isNaN(r)){alert("invalid max value");return}const l=p.property("value");if(l==""){return}const i=Number.parseFloat(l);if(Number.isNaN(i)){alert("invalid min value");return}delete e.scale.auto;delete e.scale.percentile;e.scale.max=r;e.scale.min=i;a(n.fixedscale)}))}const f=t.append("div").style("margin-top","6px").style("display",c?"block":"none");{f.append("span").html("Percentile&nbsp;").style("font-family","Courier").style("font-size",".9em");const t=f.append("input").attr("size",5);if(c){t.property("value",e.scale.percentile)}const o=t=>{if(t=="")return;const o=Number.parseInt(t);if(Number.isNaN(o)||o<=0||o>100){alert("percentile should be integer within range 0-100");return}delete e.scale.auto;e.scale.percentile=o;a(n.percentilescale)};t.on("keyup",(e=>{if(e.code!="Enter")return;o(t.property("value"))}));f.append("button").text("Set").style("margin-left","5px").on("click",(()=>{o(t.property("value"))}))}}{i.dotplot.row=o.append("div").style("margin-bottom","15px");i.dotplot.row.append("span").html("Dot plot&nbsp;&nbsp;");const t=i.dotplot.row.append("select").on("change",(t=>{const o=t.target.selectedIndex;if(o==0){delete e.dotplotfactor}else{e.dotplotfactor=Number.parseInt(t.target.options[o].innerHTML)}a(o==0?n.nodotplot:n.usedotplot)}));let r=t.append("option").text("no");if(!e.dotplotfactor){r.property("selected",1)}r=t.append("option").text("5");if(e.dotplotfactor==5){r.property("selected",1)}r=t.append("option").text("10");if(e.dotplotfactor==10){r.property("selected",1)}r=t.append("option").text("15");if(e.dotplotfactor==15){r.property("selected",1)}r=t.append("option").text("20");if(e.dotplotfactor==20){r.property("selected",1)}}i.dividefactor.row=o.append("div");{const t=Math.random().toString();const o=i.dividefactor.row.append("input").attr("type","checkbox").attr("id",t);if(!e.normalize.disable){o.property("checked",1)}i.dividefactor.row.append("label").html("&nbsp;Apply normalization").attr("for",t);const r=i.dividefactor.row.append("div").style("margin","5px 10px 0px 20px").style("display",e.normalize.disable?"none":"block");r.append("span").html("Divide raw value by&nbsp;");const s=r.append("input").attr("type","number").style("width","60px").property("value",e.normalize.dividefactor).on("keyup",(t=>{if(t.code!="Enter"&&t.code!="NumpadEnter")return;const o=t.target.value;if(o<=0){return}e.normalize.dividefactor=o;a(n.usedividefactor)}));r.append("div").text("Enter a value above zero").style("font-size",".7em").style("color","#858585");o.on("change",(t=>{if(t.target.checked){p(r);delete e.normalize.disable;s.property("value",e.normalize.dividefactor);a(n.usedividefactor);return}l(r);e.normalize.disable=1;a(n.nodividefactor)}))}return i}function m(e,t){let o=t.tkarg_rglst(e);if(t.usegm){const e=o[0];e.usegm_isoform=t.usegm.isoform;for(let a=1;a<o.length;a++){const n=o[a];e.width+=n.width+t.regionspace;e.start=Math.min(e.start,n.start);e.stop=Math.max(e.stop,n.stop)}o=[e]}let a=0;for(const e of o){e.xoff=0;a+=e.width+t.regionspace}if(t.subpanels.length==e.subpanels.length){for(const e of t.subpanels){o.push({chr:e.chr,start:e.start,stop:e.stop,width:e.width,exonsf:e.exonsf,xoff:a});a+=e.width+e.leftpad}}return o}export{u as bigwigconfigpanel,s as loadTk,f as loadTk_do};
@@ -1 +1 @@
1
- import{m as e,a as t,b as n,c as i,i as a,d as s,e as l}from"./uiUtils-1336bad7.js";import{T as o}from"./toggleButtons-002aeda1.js";import{d as r,f as p,aT as c}from"./app-a8c4854a.js";import"./tslib.es6-1f85f553.js";async function d(n,i){const a=i.append("div").style("margin","5px 5px 5px 20px").style("font-family","'Lucida Sans', 'Lucida Sans Regular', 'Lucida Grande', 'Lucida Sans Unicode', Geneva, Verdana, sans-serif").classed("sjpp-bw-ui",true).style("overflow","hidden");const s={};e(a,"Select Genome").style("font-size","1.15em").style("padding","10px 0px").style("color","#003366");m(a,n,s);e(a,"Provide Data").style("font-size","1.15em").style("padding","20px 0px 10px 0px").style("color","#003366");const l=a.append("div").style("margin-left","40px");g(l,s);const o=a.append("div").style("display","flex").style("align-items","center").style("margin","40px 0px 40px 130px");b(o,s,i,n);t(o,s,".sjpp_bigwigUI_input").style("margin","0px 20px 20px 0px");k(a)}function g(t,n){const i=[{label:"Single Track",callback:async(t,i)=>{i.contentHolder.style("border","none").style("display","block");const a=i.contentHolder.append("div").style("border","none");c(i.contentHolder);e(a,"Name");u(a,n);e(a,"File Path");f(a,n);delete i.callback}},{label:"Multiple Tracks",callback:async(e,t)=>{t.contentHolder.style("border","none").style("display","block");c(t.contentHolder);t.contentHolder.append("div").html('<p style="margin-left: 10px;">Enter one track per line in the following format: [track name],[path/to/file.bw or URL]</p><p style="margin-left: 20px; color: #7d7c7c;">e.g. BigWig Track, proteinpaint_demo/hg19/bigwig/file.bw</p>');y(t.contentHolder,n);delete t.callback}}];new o({holder:t,tabs:i}).main()}async function m(e,t,i){const a=e.append("div").style("margin-left","40px");const s=n(a,t).style("border","1px solid rgb(138, 177, 212)");i.genomeselect=s.node()}function u(e,t){const n=e.append("div").style("margin-left","10px");const i=s(n,"BigWig track").style("border","1px solid rgb(138, 177, 212)").classed("sjpp_bigwigUI_input",true).on("keyup",(async()=>{t.trackname=i.property("value").trim()}))}function f(e,t){const n=e.append("div").style("margin-left","10px");const i=s(n).style("border","1px solid rgb(138, 177, 212)").classed("sjpp_bigwigUI_input",true).on("keyup",(async()=>{t.filepath=i.property("value").trim();t.tabInUse="single"}))}function y(e,t){const n=e.append("div").style("display","block");const i=l({div:n}).style("border","1px solid rgb(138, 177, 212)").style("margin","0px 0px 0px 20px").classed("sjpp_bigwigUI_input",true).on("keyup",(async()=>{t.multitrackdata=i.property("value").trim();t.tabInUse="multi"}))}function b(e,t,n,a){const s=i({div:e,text:"Submit"});s.style("margin","0px 20px 20px 60px").style("font-size","16px").on("click",(()=>{const e={holder:n.append("div").style("margin","20px").node(),host:sessionStorage.getItem("hostURL")};const i=x(t,a);if(!i)return;r(".sjpp-bw-ui").remove();runproteinpaint(Object.assign(e,i))}))}function x(e,t){if(!e.filepath&&!e.multitrackdata){alert("Provide data for either a single track or multiple tracks.");return}let n=e.genomeselect.options[e.genomeselect.selectedIndex].text;const i={block:true,nobox:1,noheader:true,genome:n,tracks:[]};const s=t[n];if(e.tabInUse=="single"){let t,n;if(a(e.filepath))n=e.filepath;else t=e.filepath;const l={type:"bigwig",name:e.trackname||"BigWig track",file:t,url:n,scale:{auto:1}};i.tracks.push(l);p(s,i.tracks);return i}if(e.tabInUse=="multi"){for(const t of e.multitrackdata.split(/[\r\n]/)){const e=t.split(",");if(e[0]&&!e[1])alert("Problem with submission. Are commas between the track names and filepaths?");if(e[0]&&e[1]){let t,n;const s=e[1].trim();if(a(s))n=s;else t=s;const l={type:"bigwig",name:e[0].trim(),file:t,url:n,scale:{auto:1},iscustom:true};i.tracks.push(l)}}p(s,i.tracks);return i}throw"unknown option"}function k(e){e.append("div").style("margin","10px").style("opacity","0.65").style("line-height","1.5").html(`<ul>\n <li>\n <a href=https://docs.google.com/document/d/1ZnPZKSSajWyNISSLELMozKxrZHQbdxQkkkQFnxw6zTs/edit#heading=h.6spyog171fm9 target=_blank>BigWig track documentation</a>\n </li>\n <li>\n <a href=https://proteinpaint.stjude.org/ppdemo/hg19/bigwig/file.bw target=_blank>Example file</a>\n </li>\n <li>\n Please see the <a href=https://genome.ucsc.edu/goldenpath/help/bigWig.html target=_blank>UCSC documention</a> for information on bigWig file formatting.\n </li>\n </ul>`)}export{d as bigwigUI};
1
+ import{m as e,a as t,b as n,c as i,i as a,d as s,e as l}from"./uiUtils-f1bd2bcc.js";import{T as o}from"./toggleButtons-dbdbad01.js";import{d as r,f as p,aT as c}from"./app-b369b169.js";import"./tslib.es6-c3c2d88f.js";async function d(n,i){const a=i.append("div").style("margin","5px 5px 5px 20px").style("font-family","'Lucida Sans', 'Lucida Sans Regular', 'Lucida Grande', 'Lucida Sans Unicode', Geneva, Verdana, sans-serif").classed("sjpp-bw-ui",true).style("overflow","hidden");const s={};e(a,"Select Genome").style("font-size","1.15em").style("padding","10px 0px").style("color","#003366");m(a,n,s);e(a,"Provide Data").style("font-size","1.15em").style("padding","20px 0px 10px 0px").style("color","#003366");const l=a.append("div").style("margin-left","40px");g(l,s);const o=a.append("div").style("display","flex").style("align-items","center").style("margin","40px 0px 40px 130px");y(o,s,i,n);t(o,s,".sjpp_bigwigUI_input").style("margin","0px 20px 20px 0px");k(a)}function g(t,n){const i=[{label:"Single Track",callback:async(t,i)=>{i.contentHolder.style("border","none").style("display","block");const a=i.contentHolder.append("div").style("border","none");c(i.contentHolder);e(a,"Name");u(a,n);e(a,"File Path");f(a,n);delete i.callback}},{label:"Multiple Tracks",callback:async(e,t)=>{t.contentHolder.style("border","none").style("display","block");c(t.contentHolder);t.contentHolder.append("div").html('<p style="margin-left: 10px;">Enter one track per line in the following format: [track name],[path/to/file.bw or URL]</p><p style="margin-left: 20px; color: #7d7c7c;">e.g. BigWig Track, proteinpaint_demo/hg19/bigwig/file.bw</p>');b(t.contentHolder,n);delete t.callback}}];new o({holder:t,tabs:i}).main()}async function m(e,t,i){const a=e.append("div").style("margin-left","40px");const s=n(a,t).style("border","1px solid rgb(138, 177, 212)");i.genomeselect=s.node()}function u(e,t){const n=e.append("div").style("margin-left","10px");const i=s(n,"BigWig track").style("border","1px solid rgb(138, 177, 212)").classed("sjpp_bigwigUI_input",true).on("keyup",(async()=>{t.trackname=i.property("value").trim()}))}function f(e,t){const n=e.append("div").style("margin-left","10px");const i=s(n).style("border","1px solid rgb(138, 177, 212)").classed("sjpp_bigwigUI_input",true).on("keyup",(async()=>{t.filepath=i.property("value").trim();t.tabInUse="single"}))}function b(e,t){const n=e.append("div").style("display","block");const i=l({div:n}).style("border","1px solid rgb(138, 177, 212)").style("margin","0px 0px 0px 20px").classed("sjpp_bigwigUI_input",true).on("keyup",(async()=>{t.multitrackdata=i.property("value").trim();t.tabInUse="multi"}))}function y(e,t,n,a){const s=i({div:e,text:"Submit"});s.style("margin","0px 20px 20px 60px").style("font-size","16px").on("click",(()=>{const e={holder:n.append("div").style("margin","20px").node(),host:sessionStorage.getItem("hostURL")};const i=x(t,a);if(!i)return;r(".sjpp-bw-ui").remove();runproteinpaint(Object.assign(e,i))}))}function x(e,t){if(!e.filepath&&!e.multitrackdata){alert("Provide data for either a single track or multiple tracks.");return}let n=e.genomeselect.options[e.genomeselect.selectedIndex].text;const i={block:true,nobox:1,noheader:true,genome:n,tracks:[]};const s=t[n];if(e.tabInUse=="single"){let t,n;if(a(e.filepath))n=e.filepath;else t=e.filepath;const l={type:"bigwig",name:e.trackname||"BigWig track",file:t,url:n,scale:{auto:1}};i.tracks.push(l);p(s,i.tracks);return i}if(e.tabInUse=="multi"){for(const t of e.multitrackdata.split(/[\r\n]/)){const e=t.split(",");if(e[0]&&!e[1])alert("Problem with submission. Are commas between the track names and filepaths?");if(e[0]&&e[1]){let t,n;const s=e[1].trim();if(a(s))n=s;else t=s;const l={type:"bigwig",name:e[0].trim(),file:t,url:n,scale:{auto:1},iscustom:true};i.tracks.push(l)}}p(s,i.tracks);return i}throw"unknown option"}function k(e){e.append("div").style("margin","10px").style("opacity","0.65").style("line-height","1.5").html(`<ul>\n <li>\n <a href=https://docs.google.com/document/d/1ZnPZKSSajWyNISSLELMozKxrZHQbdxQkkkQFnxw6zTs/edit#heading=h.6spyog171fm9 target=_blank>BigWig track documentation</a>\n </li>\n <li>\n <a href=https://proteinpaint.stjude.org/ppdemo/hg19/bigwig/file.bw target=_blank>Example file</a>\n </li>\n <li>\n Please see the <a href=https://genome.ucsc.edu/goldenpath/help/bigWig.html target=_blank>UCSC documention</a> for information on bigWig file formatting.\n </li>\n </ul>`)}export{d as bigwigUI};
@@ -1 +1 @@
1
- import{a7 as t,ae as e,r as o}from"./app-a8c4854a.js";import{a as i,b as n}from"./parseData-e66308cd.js";import{C as r}from"./ColorScale-9c76aef3.js";import"./tslib.es6-1f85f553.js";import"./axisstyle-fac7f76b.js";import"./axis-747c801e.js";const a="NONE";const s=200;const l=200;const c=5;const d="102,102,102";const f="https://docs.google.com/document/d/1MQ0Z_AD5moDmaSx2tcn7DyVKGp49TS63pO0cceGL_Ns/edit#heading=h.kr6p4w2zhhwq";function p(e,o){o.tkcloakon(e);o.block_setheight();Promise.resolve().then((()=>import("./HicApp-40e44cba.js").then((t=>{})))).then((()=>{if(!e.uninitialized)return;delete e.uninitialized;_(e,o);if(e.textdata||e.bedfile||e.bedurl)return;return t("hicstat?"+(e.file?"file="+e.file:"url="+e.url)).then((t=>{if(t.error)throw t.error;const o=i(e.hic,t.out);if(o)throw o}))})).then((()=>h(e,o))).then((()=>m(e))).then((()=>{if(e.textdata)return u(e,o);if(e.bedfile||e.bedurl)return b(e,o);return y(e,o)})).then((()=>{if(e.data.length==0){e.height_main=100;e.img.attr("width",0);throw e.name+": no data in view range"}v(e,o)})).catch((t=>{if(t.stack){console.log(t.stack)}return typeof t=="string"?t:t.message})).then((t=>{o.tkcloakoff(e,{error:t});o.block_setheight()}))}function h(o,i){const r=[];let a=0;for(let t=i.startidx;t<=i.stopidx;t++){const e=i.rglst[t];r.push({chr:e.chr,start:e.start,stop:e.stop,width:e.width,x:a+(t==0?0:1)*i.regionspace});a+=i.regionspace+e.width}for(const t of i.subpanels){r.push({chr:t.chr,start:t.start,stop:t.stop,width:t.width,x:a+t.leftpad});a+=t.leftpad+t.width}o.regions=r;if(o.textdata||o.bedfile||o.bedurl){return}const c=Math.max(...r.map((t=>t.stop-t.start)));let d=null;for(const t of o.hic.bpresolution){if(c/t>s){d=t;break}}return Promise.resolve().then((()=>{var e;if(d){return}if(!o.hic.enzymefile||!((e=o.hic.fragresolution)===null||e===void 0?void 0:e.length)){d=o.hic.bpresolution[o.hic.bpresolution.length-1];return}const i=[];for(const e of r){const r={getdata:1,getBED:1,file:o.hic.enzymefile,rglst:[{chr:e.chr,start:e.start,stop:e.stop}]};i.push(t("tkbedj",{method:"POST",body:JSON.stringify(r)}).then((t=>{if(t.error)throw t.error;if(!t.items)throw".items[] missing at mapping coord to fragment index";const[o,i,r,a]=n(t.items);if(o)throw o;e.frag={id2coord:i,startidx:r,stopidx:a};return})))}return Promise.all(i)})).then((()=>{let t;if(!d){const e=Math.max(...r.map((t=>t.frag.stopidx-t.frag.startidx)));for(const i of o.hic.fragresolution){if(e/i>l){t=i;break}}if(!t){t=o.hic.fragresolution[o.hic.fragresolution.length-1]}}o.resolution_bp=d;o.resolution_frag=t;if(d){o.label_resolution.text("Resolution: "+e(d))}else{o.label_resolution.text("Resolution: "+t+" fragment"+(t>1?"s":""))}return}))}function m(e){if(!e.domainoverlay||!e.domainoverlay.inuse)return;return Promise.resolve().then((()=>{const o=[];for(const i of e.regions){const n={getdata:1,getBED:1,rglst:[{chr:i.chr,start:i.start,stop:i.stop}]};if(e.domainoverlay.file){n.file=e.domainoverlay.file}else{n.url=e.domainoverlay.url}o.push(t("tkbedj",{method:"POST",body:JSON.stringify(n)}).then((t=>{if(t.error)throw t.error;if(!t.items||t.items.length==0)return;i.domainlst=t.items})))}return Promise.all(o)}))}function u(t,e){t.data=[];for(const o of t.textdata.lst){const i=g(o.chr1,o.start1,o.stop1,o.chr2,o.start2,o.stop2,e);if(i){i.push(o.value);t.data.push(i)}}}function g(t,e,o,i,n,r,a){let s=x(t,e,a);let l=x(t,o,a);if(s==-1&&l==-1)return;if(s==-1)s=l;else if(l==-1)l=s;let c=x(i,n,a);let d=x(i,r,a);if(c==-1&&d==-1)return;if(c==-1)c=d;else if(d==-1)d=c;if(s<c)return[s,l,c,d];return[c,d,s,l]}function x(t,e,o){const i=o.seekcoord(t,e);for(const t of i){if(t.ridx!=undefined){if(t.x>0&&t.x<o.width)return t.x}else if(t.subpanelidx!=undefined){return t.x}}return-1}function b(e,o){const i={getdata:1,getBED:1,rglst:e.regions.map((t=>({chr:t.chr,start:t.start,stop:t.stop})))};if(e.bedfile){i.file=e.bedfile}else{i.url=e.bedurl;if(e.bedindexURL)i.indexURL=e.bedindexURL}return t("tkbedj",{method:"POST",body:JSON.stringify(i)}).then((t=>{if(t.error)throw t.error;e.data=[];if(!t.items){return}const i=new Set;for(const n of t.items){const t=n.chr+" "+n.start+" "+n.stop+" "+n.rest[0]+" "+n.rest[1]+" "+n.rest[2];if(i.has(t))continue;const r=n.rest[0]+" "+n.rest[1]+" "+n.rest[2]+" "+n.chr+" "+n.start+" "+n.stop;i.add(r);const a=n.rest[0];const s=Number.parseInt(n.rest[1]);const l=Number.parseInt(n.rest[2]);if(Number.isNaN(s))throw"invalid start2 position: "+n.rest[1];if(Number.isNaN(l))throw"invalid stop2 position: "+n.rest[2];const c=Number.parseFloat(n.rest[3]);if(Number.isNaN(c))throw"invalid value: "+n.rest[3];const d=g(n.chr,n.start,n.stop,a,s,l,o);if(d){d.push(c);e.data.push(d)}}}))}function y(e,o){const i=e.resolution_bp;const n=e.resolution_frag;for(const t of e.regions){t._str=(e.hic.nochr?t.chr.replace("chr",""):t.chr)+":"+(i?t.start+":"+t.stop:t.frag.startidx+":"+t.frag.stopidx)}const r=[];for(const[a,s]of e.regions.entries()){const l={jwt:o.jwt,file:e.file,url:e.url,pos1:s._str,pos2:s._str,nmeth:e.normalizationmethod,mincutoff:e.mincutoff};if(i){l.resolution=i}else{l.resolution=n;l.isfrag=true}r.push(t("hicdata",{method:"POST",body:JSON.stringify(l)}).then((t=>{if(t.error)throw t.error;if(!t.items||t.items.length==0){return null}return{items:t.items,regionidx:a}})))}for(let a=0;a<e.regions.length-1;a++){for(let s=a+1;s<e.regions.length;s++){const l={jwt:o.jwt,file:e.file,url:e.url,pos1:e.regions[a]._str,pos2:e.regions[s]._str,nmeth:e.normalizationmethod,mincutoff:e.mincutoff};if(i){l.resolution=i}else{l.resolution=n;l.isfrag=true}r.push(t("hicdata",{method:"POST",body:JSON.stringify(l)}).then((t=>{if(t.error)throw{message:t.error};if(!t.items||t.items.length==0){return null}return{items:t.items,leftregionidx:a,rightregionidx:s}})))}}return Promise.all(r).then((t=>w(t,i,n,e,o)))}function w(t,e,o,i,n){i.data=[];for(const n of t){if(!n){continue}let t,r,a,s;let l=false;if(n.regionidx!=undefined){t=r=i.regions[n.regionidx];a=s=t.width/(t.stop-t.start);l=true}else{t=i.regions[n.leftregionidx];a=t.width/(t.stop-t.start);r=i.regions[n.rightregionidx];s=r.width/(r.stop-r.start);l=i.hic.chrorder.indexOf(t.chr)<i.hic.chrorder.indexOf(r.chr)}for(const[c,d,f]of n.items){let p,h,m,u;if(o){const e=l?c:d;const i=l?d:c;let a=t.frag.id2coord.get(e);if(!a){a=r.frag.id2coord.get(e);if(!a)return"unknown frag id in region "+n.leftregionidx+": "+e}p=a[0];m=a[1]-a[0];if(t.frag.id2coord.has(e+o)){const i=t.frag.id2coord.get(e+o);m=i[1]-p}let s=r.frag.id2coord.get(i);if(!s){s=t.frag.id2coord.get(i);if(!s)return"unknown frag id in region "+n.rightregionidx+": "+i}h=s[0];u=s[1]-s[0];if(r.frag.id2coord.has(i+o)){const t=r.frag.id2coord.get(i+o);u=t[1]-h}}else{p=l?c:d;h=l?d:c;m=u=e}let g=false;if(i.domainoverlay&&i.domainoverlay.inuse){if(n.regionidx!=undefined){if(t.domainlst){if(t.domainlst.find((t=>t.start<=p&&t.stop>=h))){g=true}}}}if(n.leftregionidx!=undefined&&t.chr==r.chr){if(p>t.start-m&&p<t.stop&&h>r.start-u&&h<r.stop){const e=t.x+a*(p-t.start);const o=e+a*m;const n=r.x+s*(h-r.start);const l=n+s*u;i.data.push([e,o,n,l,f,g])}if(h>t.start-u&&h<t.stop&&p>r.start&&p<r.stop){const e=t.x+a*(h-t.start);const o=e+a*u;const n=r.x+s*(p-r.start);const l=n+s*m;i.data.push([e,o,n,l,f,g])}}else{const e=t.x+a*(p-t.start);const o=e+a*m;const n=r.x+s*(h-r.start);const l=n+s*u;i.data.push([e,o,n,l,f,g])}}}v(i,n);return}function v(t,e){if(t.data.length==0)return;let i;{const e=o(t.color);i=e.r+","+e.g+","+e.b}const n=t.hiddencanvas.node();const r=e.width+e.subpanels.reduce(((t,e)=>t+e.leftpad+e.width),0);let a=0;if(t.mode_hm){a=Math.min(r,t.data.reduce(((t,e)=>Math.max(t,(e[3]-e[0])/2)),0))}else if(t.mode_arc){for(const e of t.data){const o=(e[2]+e[3])/2-(e[0]+e[1])/2;const i=o/2/Math.tan((Math.PI-t.arcangle/2)/2);a=Math.max(a,i)}}n.width=r;n.height=a;const s=n.getContext("2d");if(window.devicePixelRatio>1){n.width=r*window.devicePixelRatio;n.height=a*window.devicePixelRatio;s.scale(window.devicePixelRatio,window.devicePixelRatio)}let l;{const e=t.data.map((t=>t[4]));e.sort(((t,e)=>t-e));l=e[Math.floor(e.length*t.percentile_max/100)]}k(t,e);for(const[e,o,n,r,c,f]of t.data){if(c<t.mincutoff){continue}let p;if(f){p="rgba("+d+","+(c/l).toFixed(2)+")"}else{p="rgba("+i+","+(c/l).toFixed(2)+")"}if(t.mode_hm){s.fillStyle=p;s.beginPath();let i,l,c,d,f,h,m,u;if(t.pyramidup){i=(e+r)/2;l=a-(r-e)/2;c=(e+n)/2;d=a-(n-e)/2;f=(o+n)/2;h=a-(n-o)/2;m=(o+r)/2;u=a-(r-o)/2}else{i=(o+n)/2;l=(n-o)/2;c=(e+n)/2;d=(n-e)/2;f=(e+r)/2;h=(r-e)/2;m=(o+r)/2;u=(r-o)/2}s.moveTo(i,l);s.lineTo(c,d);s.lineTo(f,h);s.lineTo(m,u);s.closePath();s.fill()}else if(t.mode_arc){const i=(e+o)/2;const l=(n+r)/2;const c=Math.abs(i-l);const d=Math.min(i,l)+c/2;const f=c/2/Math.sin(t.arcangle/2);let h,m,u;if(t.pyramidup){h=a+f*Math.cos(t.arcangle/2);m=Math.PI+(Math.PI-t.arcangle)/2;u=m+t.arcangle}else{h=-f*Math.cos(t.arcangle/2);m=(Math.PI-t.arcangle)/2;u=m+t.arcangle}s.strokeStyle=p;s.beginPath();s.arc(d,h,f,m,u);s.stroke()}}t.img.attr("width",r).attr("height",a).attr("xlink:href",n.toDataURL());t.colorScale.data=[0,l];t.colorScale.markedValue=t.mincutoff;t.colorScale.updateScale();t.height_main=t.toppad+Math.max(t.left_labelheight,a)+t.bottompad}function k(t,e){t.leftLabelMaxwidth=t.colorScale.barwidth;t.tklabel.each((function(){t.leftLabelMaxwidth=Math.max(t.leftLabelMaxwidth,this.getBBox().width)}));if(t.label_resolution){t.label_resolution.each((function(){t.leftLabelMaxwidth=Math.max(t.leftLabelMaxwidth,this.getBBox().width)}))}e.setllabel()}function _(t,e){if(t.textdata){if(!t.textdata.raw)throw".raw missing from textdata";const o=M(t,e);if(o)throw"Error with text data: "+o}if(t.mode_hm==undefined)t.mode_hm=true;if(t.mode_arc==undefined)t.mode_arc=false;if(t.mode_hm&&t.mode_arc){t.mode_arc=false}else if(!t.mode_hm&&!t.mode_arc){t.mode_hm=true}if(!t.color)t.color="#ff0000";t.arcangle=Math.PI/2;if(t.pyramidup==undefined)t.pyramidup=true;t.hic.genome=e.genome;if(t.hic.enzyme){if(e.genome.hicenzymefragment){const o=e.genome.hicenzymefragment.find((e=>e.enzyme.toUpperCase()==t.hic.enzyme.toUpperCase()));if(o){t.hic.enzymefile=o.file}else{e.error("unknown Hi-C enzyme: "+t.hic.enzyme);delete t.hic.enzyme}}else{e.error("Hi-C enzyme fragment not available for this genome");delete t.hic.enzyme}}if(!t.percentile_max){t.percentile_max=90}if(t.mincutoff==undefined){t.mincutoff=0}if(!t.normalizationmethod){t.normalizationmethod=a}let o=c+e.labelfontsize;if(t.file||t.url){t.label_resolution=e.maketklefthandle(t,o).attr("class",null);o+=c+e.labelfontsize}{const i=14;const n=100;const a=1;const s=t.gleft.append("g").attr("transform",`scale(1), translate(${e.tkleftlabel_xshift-n}, ${o})`);t.colorScale=new r({barheight:i,barwidth:n,data:[0,1],fontSize:12,height:45,width:120,holder:s,endColor:t.color,position:`6,${i+a}`,ticks:2,tickSize:2,markedValue:t.mincutoff});t.colorScale.render();o+=i+10+e.labelfontsize}o+=10;t.left_labelheight=o;t.img=t.glider.append("image");t.hiddencanvas=e.holder.append("canvas").style("display","none");t.config_handle=e.maketkconfighandle(t).on("click",(()=>{N(t,e)}))}function N(t,e){t.tkconfigtip.clear().showunder(t.config_handle.node());if(t.textdata){t.tkconfigtip.d.append("div").attr("class","sja_menuoption").style("margin-bottom","10px").text("Edit interaction data").on("click",(()=>{z(t,e)}))}{const o=t.tkconfigtip.d.append("div").style("margin-bottom","10px");o.append("span").text("Change color");o.append("input").style("margin-left","5px").attr("type","color").property("value",t.color).on("change",(o=>{t.color=o.target.value;t.colorScale.endColor=t.color;t.colorScale.updateScale();v(t,e)}))}{const o=t.tkconfigtip.d.append("div").style("margin-bottom","10px");o.append("input").attr("type","number").style("width","40px").property("value",t.percentile_max).on("keyup",(o=>{if(o.code!="Enter"&&o.code!="NumpadEnter")return;const i=Number.parseFloat(o.target.value);if(Number.isNaN(i)||i<=0||i>=100){alert("Please enter a value between 0 and 100");return}t.percentile_max=i;v(t,e)}));o.append("span").html("&nbsp;percentile for color scale max")}{const o=t.tkconfigtip.d.append("div").style("margin-bottom","10px");o.append("input").attr("type","number").style("width","50px").property("value",t.mincutoff).on("keyup",(o=>{if(o.code!="Enter"&&o.code!="NumpadEnter")return;const i=Number.parseFloat(o.target.value);if(Number.isNaN(i)){alert("Please enter a valid number");return}t.mincutoff=i;p(t,e)}));o.append("span").html("&nbsp;for minimum cutoff value");o.append("div").style("font-size",".8em").style("opacity",.5).html("Interactions with scores &le; cutoff will not be shown.")}if(t.file||t.url){const o=t.hic.normalization;const i=t.tkconfigtip.d.append("div").style("margin-bottom","10px");i.append("span").html("Normalization&nbsp;");if(t.hic.normalization.length>0){const n=i.append("select").on("change",(()=>{const o=n.node();t.normalizationmethod=o.options[o.selectedIndex].innerHTML;p(t,e)}));for(const t of o)n.append("option").text(t);for(const e of n.node().options){if(e.innerHTML==t.normalizationmethod){e.selected=true;break}}}else{i.append("span").text("NONE")}}if(t.domainoverlay){const o=t.tkconfigtip.d.append("div").style("margin-bottom","10px");o.append("span").html("Overlay with "+t.domainoverlay.name+" domains&nbsp;");o.append("button").text(t.domainoverlay.inuse?"No":"Yes").on("click",(()=>{t.tkconfigtip.hide();t.domainoverlay.inuse=!t.domainoverlay.inuse;p(t,e)}))}{const o=t.tkconfigtip.d.append("div").style("margin-bottom","10px");const i=Math.random().toString();o.append("input").attr("name",i).attr("id",i+"1").attr("type","radio").property("checked",t.mode_hm).on("change",(o=>{if(o.target.checked){t.mode_hm=true;t.mode_arc=false}else{t.mode_hm=false;t.mode_arc=true}v(t,e);e.block_setheight()}));o.append("label").attr("for",i+"1").attr("class","sja_clbtext").html("&nbsp;Heatmap");o.append("input").style("margin-left","10px").attr("name",i).attr("id",i+"2").attr("type","radio").property("checked",t.mode_arc).on("change",(o=>{if(o.target.checked){t.mode_hm=false;t.mode_arc=true}else{t.mode_hm=true;t.mode_arc=false}v(t,e);e.block_setheight()}));o.append("label").attr("for",i+"2").attr("class","sja_clbtext").html("&nbsp;Arc");o.append("span").style("margin-left","10px").style("opacity",.5).text("for showing interactions.")}{t.tkconfigtip.d.append("div").style("margin","20px 0px").append("button").text("Point "+(t.pyramidup?"down":"up")).on("click",(()=>{t.pyramidup=!t.pyramidup;v(t,e);t.tkconfigtip.hide()}))}if(t.hic.version){t.tkconfigtip.d.append("div").style("opacity",.5).text("HiC file version: "+t.hic.version)}}function z(t,e){t.tkconfigtip.d.transition().style("left",Number.parseInt(t.tkconfigtip.d.style("left"))-500+"px");t.tkconfigtip.clear();const o=t.tkconfigtip.d.append("div");const i=o.append("textarea").attr("cols",50).attr("rows",10);i.property("value",t.textdata.raw);const n=o.append("div").style("margin-top","10px");n.append("button").text("Update").on("click",(()=>{const o=i.property("value");if(!o){window.alert("Enter text interaction data");return}t.textdata.raw=o;const n=M(t,e);if(n){window.alert(n);return}p(t,e);t.tkconfigtip.hide()}));n.append("span").style("margin-left","5px").html("<a href="+f+" target=_blank>Text data format</a>");n.append("button").style("margin-left","30px").text("Cancel").on("click",(()=>t.tkconfigtip.hide()))}function M(t,e){t.textdata.lst=[];const o=t.textdata.raw.trim().split(/\r?\n/);for(let i=0;i<o.length;i++){const n=o[i].trim();if(!n)continue;const r=n.split(/[\t\s]+/);const a=r[0];if(!e.genome.chrlookup[a.toUpperCase()])return"wrong chrA name at line "+(i+1);const s=Number.parseInt(r[1]);if(Number.isNaN(s))return"invalid startA at line "+(i+1);const l=Number.parseInt(r[2]);if(Number.isNaN(l))return"invalid stopA name at line "+(i+1);const c=r[3];if(!e.genome.chrlookup[c.toUpperCase()])return"wrong chrB name at line "+(i+1);const d=Number.parseInt(r[4]);if(Number.isNaN(d))return"invalid startB at line "+(i+1);const f=Number.parseInt(r[5]);if(Number.isNaN(f))return"invalid stopB at line "+(i+1);const p=Number.parseFloat(r[7]);if(Number.isNaN(p))return"invalid value (8th column) at line "+(i+1);t.textdata.lst.push({chr1:a,start1:s,stop1:l,chr2:c,start2:d,stop2:f,value:p})}if(t.textdata.lst.length==0)return"No data points from text input"}export{p as loadTk};
1
+ import{a7 as t,ae as e,r as o}from"./app-b369b169.js";import{a as i,b as n}from"./parseData-21fe9822.js";import{C as r}from"./ColorScale-21cab8d2.js";import"./tslib.es6-c3c2d88f.js";import"./axisstyle-fac7f76b.js";import"./axis-747c801e.js";const a="NONE";const s=200;const l=200;const c=5;const d="102,102,102";const f="https://docs.google.com/document/d/1MQ0Z_AD5moDmaSx2tcn7DyVKGp49TS63pO0cceGL_Ns/edit#heading=h.kr6p4w2zhhwq";function p(e,o){o.tkcloakon(e);o.block_setheight();Promise.resolve().then((()=>import("./HicApp-d5a946bf.js").then((t=>{})))).then((()=>{if(!e.uninitialized)return;delete e.uninitialized;_(e,o);if(e.textdata||e.bedfile||e.bedurl)return;return t("hicstat?"+(e.file?"file="+e.file:"url="+e.url)).then((t=>{if(t.error)throw t.error;const o=i(e.hic,t.out);if(o)throw o}))})).then((()=>h(e,o))).then((()=>m(e))).then((()=>{if(e.textdata)return u(e,o);if(e.bedfile||e.bedurl)return b(e,o);return y(e,o)})).then((()=>{if(e.data.length==0){e.height_main=100;e.img.attr("width",0);throw e.name+": no data in view range"}v(e,o)})).catch((t=>{if(t.stack){console.log(t.stack)}return typeof t=="string"?t:t.message})).then((t=>{o.tkcloakoff(e,{error:t});o.block_setheight()}))}function h(o,i){const r=[];let a=0;for(let t=i.startidx;t<=i.stopidx;t++){const e=i.rglst[t];r.push({chr:e.chr,start:e.start,stop:e.stop,width:e.width,x:a+(t==0?0:1)*i.regionspace});a+=i.regionspace+e.width}for(const t of i.subpanels){r.push({chr:t.chr,start:t.start,stop:t.stop,width:t.width,x:a+t.leftpad});a+=t.leftpad+t.width}o.regions=r;if(o.textdata||o.bedfile||o.bedurl){return}const c=Math.max(...r.map((t=>t.stop-t.start)));let d=null;for(const t of o.hic.bpresolution){if(c/t>s){d=t;break}}return Promise.resolve().then((()=>{var e;if(d){return}if(!o.hic.enzymefile||!((e=o.hic.fragresolution)===null||e===void 0?void 0:e.length)){d=o.hic.bpresolution[o.hic.bpresolution.length-1];return}const i=[];for(const e of r){const r={getdata:1,getBED:1,file:o.hic.enzymefile,rglst:[{chr:e.chr,start:e.start,stop:e.stop}]};i.push(t("tkbedj",{method:"POST",body:JSON.stringify(r)}).then((t=>{if(t.error)throw t.error;if(!t.items)throw".items[] missing at mapping coord to fragment index";const[o,i,r,a]=n(t.items);if(o)throw o;e.frag={id2coord:i,startidx:r,stopidx:a};return})))}return Promise.all(i)})).then((()=>{let t;if(!d){const e=Math.max(...r.map((t=>t.frag.stopidx-t.frag.startidx)));for(const i of o.hic.fragresolution){if(e/i>l){t=i;break}}if(!t){t=o.hic.fragresolution[o.hic.fragresolution.length-1]}}o.resolution_bp=d;o.resolution_frag=t;if(d){o.label_resolution.text("Resolution: "+e(d))}else{o.label_resolution.text("Resolution: "+t+" fragment"+(t>1?"s":""))}return}))}function m(e){if(!e.domainoverlay||!e.domainoverlay.inuse)return;return Promise.resolve().then((()=>{const o=[];for(const i of e.regions){const n={getdata:1,getBED:1,rglst:[{chr:i.chr,start:i.start,stop:i.stop}]};if(e.domainoverlay.file){n.file=e.domainoverlay.file}else{n.url=e.domainoverlay.url}o.push(t("tkbedj",{method:"POST",body:JSON.stringify(n)}).then((t=>{if(t.error)throw t.error;if(!t.items||t.items.length==0)return;i.domainlst=t.items})))}return Promise.all(o)}))}function u(t,e){t.data=[];for(const o of t.textdata.lst){const i=g(o.chr1,o.start1,o.stop1,o.chr2,o.start2,o.stop2,e);if(i){i.push(o.value);t.data.push(i)}}}function g(t,e,o,i,n,r,a){let s=x(t,e,a);let l=x(t,o,a);if(s==-1&&l==-1)return;if(s==-1)s=l;else if(l==-1)l=s;let c=x(i,n,a);let d=x(i,r,a);if(c==-1&&d==-1)return;if(c==-1)c=d;else if(d==-1)d=c;if(s<c)return[s,l,c,d];return[c,d,s,l]}function x(t,e,o){const i=o.seekcoord(t,e);for(const t of i){if(t.ridx!=undefined){if(t.x>0&&t.x<o.width)return t.x}else if(t.subpanelidx!=undefined){return t.x}}return-1}function b(e,o){const i={getdata:1,getBED:1,rglst:e.regions.map((t=>({chr:t.chr,start:t.start,stop:t.stop})))};if(e.bedfile){i.file=e.bedfile}else{i.url=e.bedurl;if(e.bedindexURL)i.indexURL=e.bedindexURL}return t("tkbedj",{method:"POST",body:JSON.stringify(i)}).then((t=>{if(t.error)throw t.error;e.data=[];if(!t.items){return}const i=new Set;for(const n of t.items){const t=n.chr+" "+n.start+" "+n.stop+" "+n.rest[0]+" "+n.rest[1]+" "+n.rest[2];if(i.has(t))continue;const r=n.rest[0]+" "+n.rest[1]+" "+n.rest[2]+" "+n.chr+" "+n.start+" "+n.stop;i.add(r);const a=n.rest[0];const s=Number.parseInt(n.rest[1]);const l=Number.parseInt(n.rest[2]);if(Number.isNaN(s))throw"invalid start2 position: "+n.rest[1];if(Number.isNaN(l))throw"invalid stop2 position: "+n.rest[2];const c=Number.parseFloat(n.rest[3]);if(Number.isNaN(c))throw"invalid value: "+n.rest[3];const d=g(n.chr,n.start,n.stop,a,s,l,o);if(d){d.push(c);e.data.push(d)}}}))}function y(e,o){const i=e.resolution_bp;const n=e.resolution_frag;for(const t of e.regions){t._str=(e.hic.nochr?t.chr.replace("chr",""):t.chr)+":"+(i?t.start+":"+t.stop:t.frag.startidx+":"+t.frag.stopidx)}const r=[];for(const[a,s]of e.regions.entries()){const l={jwt:o.jwt,file:e.file,url:e.url,pos1:s._str,pos2:s._str,nmeth:e.normalizationmethod,mincutoff:e.mincutoff};if(i){l.resolution=i}else{l.resolution=n;l.isfrag=true}r.push(t("hicdata",{method:"POST",body:JSON.stringify(l)}).then((t=>{if(t.error)throw t.error;if(!t.items||t.items.length==0){return null}return{items:t.items,regionidx:a}})))}for(let a=0;a<e.regions.length-1;a++){for(let s=a+1;s<e.regions.length;s++){const l={jwt:o.jwt,file:e.file,url:e.url,pos1:e.regions[a]._str,pos2:e.regions[s]._str,nmeth:e.normalizationmethod,mincutoff:e.mincutoff};if(i){l.resolution=i}else{l.resolution=n;l.isfrag=true}r.push(t("hicdata",{method:"POST",body:JSON.stringify(l)}).then((t=>{if(t.error)throw{message:t.error};if(!t.items||t.items.length==0){return null}return{items:t.items,leftregionidx:a,rightregionidx:s}})))}}return Promise.all(r).then((t=>w(t,i,n,e,o)))}function w(t,e,o,i,n){i.data=[];for(const n of t){if(!n){continue}let t,r,a,s;let l=false;if(n.regionidx!=undefined){t=r=i.regions[n.regionidx];a=s=t.width/(t.stop-t.start);l=true}else{t=i.regions[n.leftregionidx];a=t.width/(t.stop-t.start);r=i.regions[n.rightregionidx];s=r.width/(r.stop-r.start);l=i.hic.chrorder.indexOf(t.chr)<i.hic.chrorder.indexOf(r.chr)}for(const[c,d,f]of n.items){let p,h,m,u;if(o){const e=l?c:d;const i=l?d:c;let a=t.frag.id2coord.get(e);if(!a){a=r.frag.id2coord.get(e);if(!a)return"unknown frag id in region "+n.leftregionidx+": "+e}p=a[0];m=a[1]-a[0];if(t.frag.id2coord.has(e+o)){const i=t.frag.id2coord.get(e+o);m=i[1]-p}let s=r.frag.id2coord.get(i);if(!s){s=t.frag.id2coord.get(i);if(!s)return"unknown frag id in region "+n.rightregionidx+": "+i}h=s[0];u=s[1]-s[0];if(r.frag.id2coord.has(i+o)){const t=r.frag.id2coord.get(i+o);u=t[1]-h}}else{p=l?c:d;h=l?d:c;m=u=e}let g=false;if(i.domainoverlay&&i.domainoverlay.inuse){if(n.regionidx!=undefined){if(t.domainlst){if(t.domainlst.find((t=>t.start<=p&&t.stop>=h))){g=true}}}}if(n.leftregionidx!=undefined&&t.chr==r.chr){if(p>t.start-m&&p<t.stop&&h>r.start-u&&h<r.stop){const e=t.x+a*(p-t.start);const o=e+a*m;const n=r.x+s*(h-r.start);const l=n+s*u;i.data.push([e,o,n,l,f,g])}if(h>t.start-u&&h<t.stop&&p>r.start&&p<r.stop){const e=t.x+a*(h-t.start);const o=e+a*u;const n=r.x+s*(p-r.start);const l=n+s*m;i.data.push([e,o,n,l,f,g])}}else{const e=t.x+a*(p-t.start);const o=e+a*m;const n=r.x+s*(h-r.start);const l=n+s*u;i.data.push([e,o,n,l,f,g])}}}v(i,n);return}function v(t,e){if(t.data.length==0)return;let i;{const e=o(t.color);i=e.r+","+e.g+","+e.b}const n=t.hiddencanvas.node();const r=e.width+e.subpanels.reduce(((t,e)=>t+e.leftpad+e.width),0);let a=0;if(t.mode_hm){a=Math.min(r,t.data.reduce(((t,e)=>Math.max(t,(e[3]-e[0])/2)),0))}else if(t.mode_arc){for(const e of t.data){const o=(e[2]+e[3])/2-(e[0]+e[1])/2;const i=o/2/Math.tan((Math.PI-t.arcangle/2)/2);a=Math.max(a,i)}}n.width=r;n.height=a;const s=n.getContext("2d");if(window.devicePixelRatio>1){n.width=r*window.devicePixelRatio;n.height=a*window.devicePixelRatio;s.scale(window.devicePixelRatio,window.devicePixelRatio)}let l;{const e=t.data.map((t=>t[4]));e.sort(((t,e)=>t-e));l=e[Math.floor(e.length*t.percentile_max/100)]}k(t,e);for(const[e,o,n,r,c,f]of t.data){if(c<t.mincutoff){continue}let p;if(f){p="rgba("+d+","+(c/l).toFixed(2)+")"}else{p="rgba("+i+","+(c/l).toFixed(2)+")"}if(t.mode_hm){s.fillStyle=p;s.beginPath();let i,l,c,d,f,h,m,u;if(t.pyramidup){i=(e+r)/2;l=a-(r-e)/2;c=(e+n)/2;d=a-(n-e)/2;f=(o+n)/2;h=a-(n-o)/2;m=(o+r)/2;u=a-(r-o)/2}else{i=(o+n)/2;l=(n-o)/2;c=(e+n)/2;d=(n-e)/2;f=(e+r)/2;h=(r-e)/2;m=(o+r)/2;u=(r-o)/2}s.moveTo(i,l);s.lineTo(c,d);s.lineTo(f,h);s.lineTo(m,u);s.closePath();s.fill()}else if(t.mode_arc){const i=(e+o)/2;const l=(n+r)/2;const c=Math.abs(i-l);const d=Math.min(i,l)+c/2;const f=c/2/Math.sin(t.arcangle/2);let h,m,u;if(t.pyramidup){h=a+f*Math.cos(t.arcangle/2);m=Math.PI+(Math.PI-t.arcangle)/2;u=m+t.arcangle}else{h=-f*Math.cos(t.arcangle/2);m=(Math.PI-t.arcangle)/2;u=m+t.arcangle}s.strokeStyle=p;s.beginPath();s.arc(d,h,f,m,u);s.stroke()}}t.img.attr("width",r).attr("height",a).attr("xlink:href",n.toDataURL());t.colorScale.data=[0,l];t.colorScale.markedValue=t.mincutoff;t.colorScale.updateScale();t.height_main=t.toppad+Math.max(t.left_labelheight,a)+t.bottompad}function k(t,e){t.leftLabelMaxwidth=t.colorScale.barwidth;t.tklabel.each((function(){t.leftLabelMaxwidth=Math.max(t.leftLabelMaxwidth,this.getBBox().width)}));if(t.label_resolution){t.label_resolution.each((function(){t.leftLabelMaxwidth=Math.max(t.leftLabelMaxwidth,this.getBBox().width)}))}e.setllabel()}function _(t,e){if(t.textdata){if(!t.textdata.raw)throw".raw missing from textdata";const o=M(t,e);if(o)throw"Error with text data: "+o}if(t.mode_hm==undefined)t.mode_hm=true;if(t.mode_arc==undefined)t.mode_arc=false;if(t.mode_hm&&t.mode_arc){t.mode_arc=false}else if(!t.mode_hm&&!t.mode_arc){t.mode_hm=true}if(!t.color)t.color="#ff0000";t.arcangle=Math.PI/2;if(t.pyramidup==undefined)t.pyramidup=true;t.hic.genome=e.genome;if(t.hic.enzyme){if(e.genome.hicenzymefragment){const o=e.genome.hicenzymefragment.find((e=>e.enzyme.toUpperCase()==t.hic.enzyme.toUpperCase()));if(o){t.hic.enzymefile=o.file}else{e.error("unknown Hi-C enzyme: "+t.hic.enzyme);delete t.hic.enzyme}}else{e.error("Hi-C enzyme fragment not available for this genome");delete t.hic.enzyme}}if(!t.percentile_max){t.percentile_max=90}if(t.mincutoff==undefined){t.mincutoff=0}if(!t.normalizationmethod){t.normalizationmethod=a}let o=c+e.labelfontsize;if(t.file||t.url){t.label_resolution=e.maketklefthandle(t,o).attr("class",null);o+=c+e.labelfontsize}{const i=14;const n=100;const a=1;const s=t.gleft.append("g").attr("transform",`scale(1), translate(${e.tkleftlabel_xshift-n}, ${o})`);t.colorScale=new r({barheight:i,barwidth:n,data:[0,1],fontSize:12,height:45,width:120,holder:s,endColor:t.color,position:`6,${i+a}`,ticks:2,tickSize:2,markedValue:t.mincutoff});t.colorScale.render();o+=i+10+e.labelfontsize}o+=10;t.left_labelheight=o;t.img=t.glider.append("image");t.hiddencanvas=e.holder.append("canvas").style("display","none");t.config_handle=e.maketkconfighandle(t).on("click",(()=>{N(t,e)}))}function N(t,e){t.tkconfigtip.clear().showunder(t.config_handle.node());if(t.textdata){t.tkconfigtip.d.append("div").attr("class","sja_menuoption").style("margin-bottom","10px").text("Edit interaction data").on("click",(()=>{z(t,e)}))}{const o=t.tkconfigtip.d.append("div").style("margin-bottom","10px");o.append("span").text("Change color");o.append("input").style("margin-left","5px").attr("type","color").property("value",t.color).on("change",(o=>{t.color=o.target.value;t.colorScale.endColor=t.color;t.colorScale.updateScale();v(t,e)}))}{const o=t.tkconfigtip.d.append("div").style("margin-bottom","10px");o.append("input").attr("type","number").style("width","40px").property("value",t.percentile_max).on("keyup",(o=>{if(o.code!="Enter"&&o.code!="NumpadEnter")return;const i=Number.parseFloat(o.target.value);if(Number.isNaN(i)||i<=0||i>=100){alert("Please enter a value between 0 and 100");return}t.percentile_max=i;v(t,e)}));o.append("span").html("&nbsp;percentile for color scale max")}{const o=t.tkconfigtip.d.append("div").style("margin-bottom","10px");o.append("input").attr("type","number").style("width","50px").property("value",t.mincutoff).on("keyup",(o=>{if(o.code!="Enter"&&o.code!="NumpadEnter")return;const i=Number.parseFloat(o.target.value);if(Number.isNaN(i)){alert("Please enter a valid number");return}t.mincutoff=i;p(t,e)}));o.append("span").html("&nbsp;for minimum cutoff value");o.append("div").style("font-size",".8em").style("opacity",.5).html("Interactions with scores &le; cutoff will not be shown.")}if(t.file||t.url){const o=t.hic.normalization;const i=t.tkconfigtip.d.append("div").style("margin-bottom","10px");i.append("span").html("Normalization&nbsp;");if(t.hic.normalization.length>0){const n=i.append("select").on("change",(()=>{const o=n.node();t.normalizationmethod=o.options[o.selectedIndex].innerHTML;p(t,e)}));for(const t of o)n.append("option").text(t);for(const e of n.node().options){if(e.innerHTML==t.normalizationmethod){e.selected=true;break}}}else{i.append("span").text("NONE")}}if(t.domainoverlay){const o=t.tkconfigtip.d.append("div").style("margin-bottom","10px");o.append("span").html("Overlay with "+t.domainoverlay.name+" domains&nbsp;");o.append("button").text(t.domainoverlay.inuse?"No":"Yes").on("click",(()=>{t.tkconfigtip.hide();t.domainoverlay.inuse=!t.domainoverlay.inuse;p(t,e)}))}{const o=t.tkconfigtip.d.append("div").style("margin-bottom","10px");const i=Math.random().toString();o.append("input").attr("name",i).attr("id",i+"1").attr("type","radio").property("checked",t.mode_hm).on("change",(o=>{if(o.target.checked){t.mode_hm=true;t.mode_arc=false}else{t.mode_hm=false;t.mode_arc=true}v(t,e);e.block_setheight()}));o.append("label").attr("for",i+"1").attr("class","sja_clbtext").html("&nbsp;Heatmap");o.append("input").style("margin-left","10px").attr("name",i).attr("id",i+"2").attr("type","radio").property("checked",t.mode_arc).on("change",(o=>{if(o.target.checked){t.mode_hm=false;t.mode_arc=true}else{t.mode_hm=true;t.mode_arc=false}v(t,e);e.block_setheight()}));o.append("label").attr("for",i+"2").attr("class","sja_clbtext").html("&nbsp;Arc");o.append("span").style("margin-left","10px").style("opacity",.5).text("for showing interactions.")}{t.tkconfigtip.d.append("div").style("margin","20px 0px").append("button").text("Point "+(t.pyramidup?"down":"up")).on("click",(()=>{t.pyramidup=!t.pyramidup;v(t,e);t.tkconfigtip.hide()}))}if(t.hic.version){t.tkconfigtip.d.append("div").style("opacity",.5).text("HiC file version: "+t.hic.version)}}function z(t,e){t.tkconfigtip.d.transition().style("left",Number.parseInt(t.tkconfigtip.d.style("left"))-500+"px");t.tkconfigtip.clear();const o=t.tkconfigtip.d.append("div");const i=o.append("textarea").attr("cols",50).attr("rows",10);i.property("value",t.textdata.raw);const n=o.append("div").style("margin-top","10px");n.append("button").text("Update").on("click",(()=>{const o=i.property("value");if(!o){window.alert("Enter text interaction data");return}t.textdata.raw=o;const n=M(t,e);if(n){window.alert(n);return}p(t,e);t.tkconfigtip.hide()}));n.append("span").style("margin-left","5px").html("<a href="+f+" target=_blank>Text data format</a>");n.append("button").style("margin-left","30px").text("Cancel").on("click",(()=>t.tkconfigtip.hide()))}function M(t,e){t.textdata.lst=[];const o=t.textdata.raw.trim().split(/\r?\n/);for(let i=0;i<o.length;i++){const n=o[i].trim();if(!n)continue;const r=n.split(/[\t\s]+/);const a=r[0];if(!e.genome.chrlookup[a.toUpperCase()])return"wrong chrA name at line "+(i+1);const s=Number.parseInt(r[1]);if(Number.isNaN(s))return"invalid startA at line "+(i+1);const l=Number.parseInt(r[2]);if(Number.isNaN(l))return"invalid stopA name at line "+(i+1);const c=r[3];if(!e.genome.chrlookup[c.toUpperCase()])return"wrong chrB name at line "+(i+1);const d=Number.parseInt(r[4]);if(Number.isNaN(d))return"invalid startB at line "+(i+1);const f=Number.parseInt(r[5]);if(Number.isNaN(f))return"invalid stopB at line "+(i+1);const p=Number.parseFloat(r[7]);if(Number.isNaN(p))return"invalid value (8th column) at line "+(i+1);t.textdata.lst.push({chr1:a,start1:s,stop1:l,chr2:c,start2:d,stop2:f,value:p})}if(t.textdata.lst.length==0)return"No data points from text input"}export{p as loadTk};