@sjcrh/proteinpaint-client 2.79.1-1 → 2.79.3

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 (551) hide show
  1. package/dist/{2dmaf-GVN2X7BX.js → 2dmaf-A6RIVKAO.js} +4 -4
  2. package/dist/{AppHeader-FL3D4RB2.js → AppHeader-C3P6JEJM.js} +20 -20
  3. package/dist/{DEanalysis-7H32HYCF.js → DEanalysis-JTHRIPB3.js} +14 -14
  4. package/dist/{Disco-LBAKW4SJ.js → Disco-R7TQCAUG.js} +14 -14
  5. package/dist/Disco-R7TQCAUG.js.map +7 -0
  6. package/dist/{Disco.UI-ODRH7X6T.js → Disco.UI-QDKOBLMM.js} +21 -21
  7. package/dist/Disco.UI-QDKOBLMM.js.map +7 -0
  8. package/dist/{HicApp-SZPXJVFW.js → HicApp-OMCFNTGD.js} +7 -7
  9. package/dist/{WSIViewer-ADLNYPJL.js → WSIViewer-3KHJY7AK.js} +2 -2
  10. package/dist/{adSandbox-BBS4OM2T.js → adSandbox-46L7TX4W.js} +6 -6
  11. package/dist/{app-JWDAF7TM.js → app-E2BLDPB6.js} +34 -34
  12. package/dist/{app-NVJFOYXK.js → app-JUWSY746.js} +17 -17
  13. package/dist/app.js +13 -13
  14. package/dist/{bam-ELURQUXQ.js → bam-KSN24N6G.js} +9 -9
  15. package/dist/{barchart-Z53N4TKJ.js → barchart-BDDD4C34.js} +20 -20
  16. package/dist/{barchart.data-5WXPL7D7.js → barchart.data-XBEWTQJP.js} +9 -9
  17. package/dist/{barchart.events-3CVNWK74.js → barchart.events-6SWY2U7S.js} +17 -17
  18. package/dist/{bars.renderer-GBP25M6J.js → bars.renderer-JPXY7XBC.js} +4 -4
  19. package/dist/{block-MURPD3CS.js → block-SQHL5Q3U.js} +31 -31
  20. package/dist/{block.init-3UN4YIUW.js → block.init-DJTY2UO2.js} +5 -5
  21. package/dist/{block.mds.cnv-DFCJCWB6.js → block.mds.cnv-4XUBYXCD.js} +9 -9
  22. package/dist/{block.mds.expressionrank-EFCWSUF6.js → block.mds.expressionrank-DWULBKAI.js} +6 -6
  23. package/dist/{block.mds.geneboxplot-LZO4BIN2.js → block.mds.geneboxplot-OPPTIXY3.js} +5 -5
  24. package/dist/{block.mds.junction-DRJPVSP7.js → block.mds.junction-54MGK3OR.js} +15 -15
  25. package/dist/{block.mds.svcnv-UM7MVALD.js → block.mds.svcnv-IVTPMLEM.js} +20 -20
  26. package/dist/{block.mds2-FDO2K5WR.js → block.mds2-ADKR53ZH.js} +24 -24
  27. package/dist/{block.svg-AYRDRN33.js → block.svg-ANUBV43U.js} +4 -4
  28. package/dist/{block.tk.aicheck-AUSKWMBC.js → block.tk.aicheck-KKUBGLPB.js} +4 -4
  29. package/dist/{block.tk.ase-FNHGM2I3.js → block.tk.ase-BJSR6VEY.js} +6 -6
  30. package/dist/{block.tk.bam-YUPXJTGV.js → block.tk.bam-KOCVKDGY.js} +4 -4
  31. package/dist/{block.tk.bedgraphdot-FCODL5CT.js → block.tk.bedgraphdot-25ZADEDX.js} +4 -4
  32. package/dist/{block.tk.bigwig.ui-RQE2XGT6.js → block.tk.bigwig.ui-B7RNUMJK.js} +4 -4
  33. package/dist/{block.tk.hicstraw-RG6Y4MGK.js → block.tk.hicstraw-USIWYO5A.js} +7 -7
  34. package/dist/{block.tk.junction-XASPK7BU.js → block.tk.junction-NMVEMNO6.js} +11 -11
  35. package/dist/{block.tk.junction.textmatrixui-U4QHOZCH.js → block.tk.junction.textmatrixui-ML2OFSAI.js} +5 -5
  36. package/dist/{block.tk.ld-2N7NAAFC.js → block.tk.ld-RITO4UAI.js} +11 -11
  37. package/dist/{block.tk.menu-JUIJBOED.js → block.tk.menu-WS4N7ZKL.js} +4 -4
  38. package/dist/{block.tk.pgv-3OG3ODVO.js → block.tk.pgv-GREPS34R.js} +10 -10
  39. package/dist/{boxplot-FVMWGT3R.js → boxplot-LSWUXMG3.js} +14 -14
  40. package/dist/{brainImaging-XEVUUAFW.js → brainImaging-ZHKFDENA.js} +13 -13
  41. package/dist/{categorical-W66S7CR2.js → categorical-AMY4Q2GJ.js} +14 -14
  42. package/dist/{chunk-ZFPQJIVT.js → chunk-22PFUERI.js} +9 -9
  43. package/dist/{chunk-BO5QXXJP.js → chunk-2JPSZLBQ.js} +2 -2
  44. package/dist/chunk-2JPSZLBQ.js.map +7 -0
  45. package/dist/{chunk-LT2RTOVA.js → chunk-2UX4ALJE.js} +8 -8
  46. package/dist/chunk-2UX4ALJE.js.map +7 -0
  47. package/dist/{chunk-R4HGXSAB.js → chunk-3KACDHMK.js} +2 -2
  48. package/dist/{chunk-H56REZKF.js → chunk-3OQMDDNE.js} +2 -2
  49. package/dist/chunk-3OQMDDNE.js.map +7 -0
  50. package/dist/{chunk-2JZM3KOM.js → chunk-3P3VYLB7.js} +3 -3
  51. package/dist/chunk-3P3VYLB7.js.map +7 -0
  52. package/dist/{chunk-N66AE4F4.js → chunk-4JKWPJXS.js} +3 -3
  53. package/dist/{chunk-R4QYADIG.js → chunk-4Z6MSGRV.js} +5 -5
  54. package/dist/{chunk-VTNXIEUY.js → chunk-542K2WZ7.js} +4 -4
  55. package/dist/{chunk-VTNXIEUY.js.map → chunk-542K2WZ7.js.map} +1 -1
  56. package/dist/{chunk-YPSAAUCG.js → chunk-5B4CKPSF.js} +81 -81
  57. package/dist/{chunk-LBX7K73F.js → chunk-5NK4VI2A.js} +3 -3
  58. package/dist/{chunk-LBX7K73F.js.map → chunk-5NK4VI2A.js.map} +1 -1
  59. package/dist/{chunk-IFL4KQWX.js → chunk-5PGCBACL.js} +88 -88
  60. package/dist/{chunk-FCO47PWR.js → chunk-5UENVM6X.js} +1 -1
  61. package/dist/chunk-5UENVM6X.js.map +7 -0
  62. package/dist/{chunk-RK4DIB5L.js → chunk-6SQGQWCR.js} +9 -9
  63. package/dist/{chunk-RK4DIB5L.js.map → chunk-6SQGQWCR.js.map} +1 -1
  64. package/dist/{chunk-V3CUFGBV.js → chunk-6UY7Z6CM.js} +24 -22
  65. package/dist/{chunk-V3CUFGBV.js.map → chunk-6UY7Z6CM.js.map} +3 -3
  66. package/dist/{chunk-LWFDXRX5.js → chunk-6ZJSKPSP.js} +87 -87
  67. package/dist/{chunk-2NAE6B4K.js → chunk-7KNOQBI5.js} +11 -11
  68. package/dist/{chunk-MLJXUYDM.js → chunk-7NO3B22I.js} +7 -7
  69. package/dist/{chunk-RZI76G5X.js → chunk-7UTOSCQM.js} +23 -23
  70. package/dist/{chunk-PYG7VYV6.js → chunk-7YKZQGKZ.js} +7 -7
  71. package/dist/chunk-7YKZQGKZ.js.map +7 -0
  72. package/dist/{chunk-UID2IBJW.js → chunk-7YTE6X7M.js} +3 -3
  73. package/dist/{chunk-JDEMV2DY.js → chunk-AIP75V7T.js} +3 -3
  74. package/dist/{chunk-6RIWWJ7N.js → chunk-BRFTJKS5.js} +2 -2
  75. package/dist/{chunk-SHYGLBEM.js → chunk-CTQFEFIV.js} +2 -2
  76. package/dist/{chunk-SHYGLBEM.js.map → chunk-CTQFEFIV.js.map} +1 -1
  77. package/dist/{chunk-YYVCX5YB.js → chunk-CTTFIY7S.js} +6 -6
  78. package/dist/chunk-CTTFIY7S.js.map +7 -0
  79. package/dist/{chunk-Y445OJFF.js → chunk-CUJMPEQF.js} +81 -81
  80. package/dist/{chunk-FGVPD57E.js → chunk-CXHKRFRQ.js} +11 -11
  81. package/dist/{chunk-KO4BBRVI.js → chunk-CYU5MMAX.js} +3 -3
  82. package/dist/chunk-CYU5MMAX.js.map +7 -0
  83. package/dist/{chunk-F4JJZQTT.js → chunk-DVKAU4C4.js} +7 -7
  84. package/dist/{chunk-IP4XDZE5.js → chunk-EFRBLOIY.js} +8 -8
  85. package/dist/{chunk-MCXHNZHB.js → chunk-EG3MKQQH.js} +2 -2
  86. package/dist/{chunk-MCXHNZHB.js.map → chunk-EG3MKQQH.js.map} +1 -1
  87. package/dist/{chunk-27TPEEBE.js → chunk-F2V5677L.js} +2 -2
  88. package/dist/{chunk-AZ43JQUH.js → chunk-F62WPE3A.js} +2 -2
  89. package/dist/{chunk-2LX4NGJ3.js → chunk-FO77IYY4.js} +3 -3
  90. package/dist/{chunk-GIHTT3NN.js → chunk-FZXMYGIE.js} +4 -4
  91. package/dist/chunk-FZXMYGIE.js.map +7 -0
  92. package/dist/{chunk-KUUVHWOH.js → chunk-GDM36JZF.js} +2 -2
  93. package/dist/{chunk-AFUEQSU6.js → chunk-GQ47JIT2.js} +4 -4
  94. package/dist/{chunk-62TFT43H.js → chunk-H23H6ZHI.js} +45 -45
  95. package/dist/{chunk-T7PUEPBT.js → chunk-HD63NDLD.js} +2 -2
  96. package/dist/{chunk-T7PUEPBT.js.map → chunk-HD63NDLD.js.map} +1 -1
  97. package/dist/{chunk-FVWCEZS2.js → chunk-IQIXGTQV.js} +2 -2
  98. package/dist/{chunk-FVWCEZS2.js.map → chunk-IQIXGTQV.js.map} +1 -1
  99. package/dist/{chunk-A3RJV2TI.js → chunk-J4L5RHSK.js} +2 -2
  100. package/dist/chunk-J4L5RHSK.js.map +7 -0
  101. package/dist/{chunk-7K35DD3D.js → chunk-JEBLRUTI.js} +2 -2
  102. package/dist/{chunk-JSGFPXR6.js → chunk-JS4PIGRN.js} +2 -2
  103. package/dist/chunk-JS4PIGRN.js.map +7 -0
  104. package/dist/{chunk-FDQMY6QO.js → chunk-JV46GMPM.js} +7 -7
  105. package/dist/{chunk-R4AKYUS5.js → chunk-K43XPRMC.js} +2 -2
  106. package/dist/{chunk-EOCH4CCO.js → chunk-KLOUJVT5.js} +4 -4
  107. package/dist/{chunk-J7OTLF3N.js → chunk-KMUY4VM6.js} +2 -2
  108. package/dist/{chunk-LIOAKTZG.js → chunk-L6CG64V7.js} +4 -4
  109. package/dist/{chunk-RXIX2PTB.js → chunk-LBLNW4O4.js} +7 -7
  110. package/dist/{chunk-AZYWRYTG.js → chunk-LRF2E7AI.js} +3 -3
  111. package/dist/{chunk-CLA4CYDQ.js → chunk-MKETHON7.js} +2 -2
  112. package/dist/{chunk-PCO4AEUF.js → chunk-MWACWA3L.js} +7 -7
  113. package/dist/{chunk-PCO4AEUF.js.map → chunk-MWACWA3L.js.map} +1 -1
  114. package/dist/{chunk-WW5X6DGZ.js → chunk-N5BYUCEI.js} +4 -4
  115. package/dist/{chunk-C357ZWQ3.js → chunk-NC5FXKWS.js} +2 -2
  116. package/dist/{chunk-EHQT46QU.js → chunk-NVKTQ7YX.js} +4 -4
  117. package/dist/{chunk-3TBJHRHB.js → chunk-NZ7FIKRZ.js} +2 -2
  118. package/dist/{chunk-DFBJTBFS.js → chunk-OPXTD3S3.js} +2 -2
  119. package/dist/{chunk-TAKR45RQ.js → chunk-PFXJAXUY.js} +10 -10
  120. package/dist/{chunk-WDUN3JSR.js → chunk-PLAW4ARO.js} +2 -2
  121. package/dist/{chunk-ZXNPSDVH.js → chunk-Q55KKWQB.js} +2 -2
  122. package/dist/{chunk-ZXNPSDVH.js.map → chunk-Q55KKWQB.js.map} +1 -1
  123. package/dist/{chunk-KTT5URCV.js → chunk-Q5Y3WFEE.js} +7 -7
  124. package/dist/{chunk-3XDCQ7KY.js → chunk-Q6KNH2PT.js} +13 -13
  125. package/dist/chunk-Q6KNH2PT.js.map +7 -0
  126. package/dist/{chunk-GP3Z7OF6.js → chunk-QIJ6EKRX.js} +26 -26
  127. package/dist/{chunk-GP3Z7OF6.js.map → chunk-QIJ6EKRX.js.map} +1 -1
  128. package/dist/{chunk-GAHBWEYS.js → chunk-QRS3A2BQ.js} +2 -2
  129. package/dist/{chunk-6LE66B4B.js → chunk-RO2SHECM.js} +5 -5
  130. package/dist/{chunk-QVLBOKVS.js → chunk-SA43RJZF.js} +83 -83
  131. package/dist/{chunk-OKHARHT2.js → chunk-SHT7MUYK.js} +4 -4
  132. package/dist/{chunk-SBIYP4PZ.js → chunk-SNI54OAB.js} +4 -4
  133. package/dist/{chunk-424OMXYN.js → chunk-SNJ7HF7A.js} +2 -2
  134. package/dist/{chunk-A7ZFF252.js → chunk-SY4F3ZHY.js} +3 -3
  135. package/dist/{chunk-EPBPM7OO.js → chunk-T2XNCFWP.js} +2 -2
  136. package/dist/{chunk-EPBPM7OO.js.map → chunk-T2XNCFWP.js.map} +1 -1
  137. package/dist/{chunk-FGV7DX37.js → chunk-T6CH7Q6G.js} +2 -2
  138. package/dist/{chunk-T4O3CEMI.js → chunk-TACGYMDL.js} +2 -2
  139. package/dist/{chunk-TRWKFVMG.js → chunk-TLIXHORR.js} +3 -3
  140. package/dist/{chunk-PZ2QQHOR.js → chunk-TNWYWD33.js} +4 -4
  141. package/dist/{chunk-JX2PRR6F.js → chunk-UC2QEVCP.js} +15 -15
  142. package/dist/{chunk-JX2PRR6F.js.map → chunk-UC2QEVCP.js.map} +1 -1
  143. package/dist/{chunk-ZHUXQIOS.js → chunk-UR3MYAAQ.js} +2 -2
  144. package/dist/{chunk-6S4SHPQA.js → chunk-URE7FSEB.js} +2 -2
  145. package/dist/{chunk-KDO5R43U.js → chunk-UUTONA35.js} +12 -12
  146. package/dist/{chunk-QXBRPFSA.js → chunk-VQNLRIAH.js} +3 -3
  147. package/dist/{chunk-3EF4ZHVC.js → chunk-WI5YRY7W.js} +7 -7
  148. package/dist/{chunk-MPUJBL2R.js → chunk-WKC4QIJW.js} +3 -3
  149. package/dist/{chunk-UKTWDFWK.js → chunk-WMJZQUYY.js} +2 -2
  150. package/dist/{chunk-CIYZX4QQ.js → chunk-XFJLVKCK.js} +3 -3
  151. package/dist/{chunk-FZQKYSHP.js → chunk-XG475QKA.js} +3 -3
  152. package/dist/{chunk-KSBNOE4E.js → chunk-XNPZE2WZ.js} +2 -2
  153. package/dist/{chunk-KSBNOE4E.js.map → chunk-XNPZE2WZ.js.map} +1 -1
  154. package/dist/{chunk-G6GOOI6P.js → chunk-XTHRDSH4.js} +3 -3
  155. package/dist/{chunk-CZXMN5X4.js → chunk-YWTKUB62.js} +15 -15
  156. package/dist/{chunk-CZXMN5X4.js.map → chunk-YWTKUB62.js.map} +1 -1
  157. package/dist/{chunk-FCTWOWMS.js → chunk-ZJQK3PZP.js} +14 -14
  158. package/dist/{chunk-KTJDPQYT.js → chunk-ZQN7RJDL.js} +1 -1
  159. package/dist/chunk-ZQN7RJDL.js.map +7 -0
  160. package/dist/{chunk-ETCTZFTA.js → chunk-ZW54ZHQV.js} +2 -2
  161. package/dist/{condition-6F4H4UDC.js → condition-7262WRUN.js} +12 -12
  162. package/dist/condition-7262WRUN.js.map +7 -0
  163. package/dist/{controls-PP7BYYIW.js → controls-2BZ4S2AV.js} +14 -14
  164. package/dist/{controls.config-44LEL2J2.js → controls.config-PDFKL6ML.js} +13 -13
  165. package/dist/{cuminc-XDNMYEEU.js → cuminc-CGEUIYZQ.js} +14 -14
  166. package/dist/{customdata.inputui-X7DNVBPR.js → customdata.inputui-YEVKBPFY.js} +4 -4
  167. package/dist/{dataDownload-TXV35BZ4.js → dataDownload-BC3LERJV.js} +12 -12
  168. package/dist/{databrowser.ui-PSHYNFKR.js → databrowser.ui-KWWFYSEX.js} +34 -34
  169. package/dist/{density-VNA5QEGH.js → density-BSCDN4GB.js} +5 -5
  170. package/dist/{dictionary-XXRUN7UM.js → dictionary-O23JEFJS.js} +17 -17
  171. package/dist/{e2pca-C7HISRT5.js → e2pca-ZHATZNUP.js} +4 -4
  172. package/dist/{ep-RI4E7UYW.js → ep-GEJTMSB6.js} +5 -5
  173. package/dist/{expclust.gdc.spec-KZ7CHSC5.js → expclust.gdc.spec-TPBVH4NK.js} +15 -15
  174. package/dist/{facet-A3HUV7B2.js → facet-UPVNGNCZ.js} +21 -21
  175. package/dist/{geneExpClustering-IZYNEJJC.js → geneExpClustering-7UHMJ3PB.js} +20 -20
  176. package/dist/{geneExpression-2I7KXQXT.js → geneExpression-D2QG3X42.js} +6 -6
  177. package/dist/geneExpression-D2QG3X42.js.map +7 -0
  178. package/dist/{geneExpression-IJMVTJ6T.js → geneExpression-LAHHCMR4.js} +2 -2
  179. package/dist/{geneExpression-LOQFCRH2.js → geneExpression-LFEAYU2L.js} +9 -9
  180. package/dist/{geneORA-27VO4T2S.js → geneORA-OZWHBV3W.js} +14 -14
  181. package/dist/{geneVariant-RA3XNRAN.js → geneVariant-LZAYE7PQ.js} +5 -5
  182. package/dist/{geneVariant-36ZUVREY.js → geneVariant-OJP7KLJ2.js} +13 -13
  183. package/dist/geneVariant-OJP7KLJ2.js.map +7 -0
  184. package/dist/{genefusion.ui-WXSPZ3UL.js → genefusion.ui-5YKNKD4Y.js} +4 -4
  185. package/dist/{geneset-DZPTBSW6.js → geneset-DXNWZT75.js} +12 -12
  186. package/dist/{genomeBrowser-QBD2U4LQ.js → genomeBrowser-UXF6G2WQ.js} +21 -21
  187. package/dist/{genomeBrowser.controls-YCCXIGBQ.js → genomeBrowser.controls-ULYRP5M6.js} +18 -18
  188. package/dist/{genomeBrowser.spec-NMV43M64.js → genomeBrowser.spec-5C67EL3K.js} +15 -15
  189. package/dist/{groupsetting-3452HUCN.js → groupsetting-X6E2Z5GU.js} +3 -3
  190. package/dist/{gsea-S7LGRKTT.js → gsea-KAH5MLVI.js} +14 -14
  191. package/dist/hierCluster-EYFVXMHY.js +73 -0
  192. package/dist/hierCluster-ZIYNLFRX.js +77 -0
  193. package/dist/{hierCluster.config-SCFEX4MC.js → hierCluster.config-MSRHVPEQ.js} +15 -15
  194. package/dist/{hierCluster.integration.spec-WP6P47EV.js → hierCluster.integration.spec-ZLOFQ4GM.js} +30 -30
  195. package/dist/{hierCluster.interactivity-IOG3FQQS.js → hierCluster.interactivity-YJSUAQGE.js} +10 -10
  196. package/dist/{hierCluster.renderers-FJNHTWF7.js → hierCluster.renderers-NSF7TTND.js} +4 -4
  197. package/dist/{imagePlot-XEZLFTVD.js → imagePlot-KEDJ7KXV.js} +15 -15
  198. package/dist/{launch.adhoc-XJSQEN6J.js → launch.adhoc-NBSO6GA5.js} +21 -21
  199. package/dist/{leftlabel.sample-VYLQ7OU6.js → leftlabel.sample-F2FGASJO.js} +25 -25
  200. package/dist/{legacyDataset-U3QB6JES.js → legacyDataset-LM4FFTW3.js} +2 -2
  201. package/dist/{lollipop-HEICLXOG.js → lollipop-P544RLZQ.js} +6 -6
  202. package/dist/{maf-IYIZCRDV.js → maf-AZLCV4SH.js} +3 -3
  203. package/dist/{maftimeline-RNASDCKI.js → maftimeline-6Z6MWZO7.js} +4 -4
  204. package/dist/{matrix-UAFUVTXR.js → matrix-E3WJC32T.js} +28 -28
  205. package/dist/{matrix-ZF7KLLU4.js → matrix-VYJA7EPK.js} +28 -28
  206. package/dist/{matrix.cells-H5MGR6PD.js → matrix.cells-7U52Y5BI.js} +5 -5
  207. package/dist/{matrix.config-QYC57OIA.js → matrix.config-RJZD5MCA.js} +14 -14
  208. package/dist/{matrix.controls-C7BURVDH.js → matrix.controls-R3FQUGZZ.js} +15 -15
  209. package/dist/{matrix.data-ZGFMAFWC.js → matrix.data-2E3NABS7.js} +7 -7
  210. package/dist/{matrix.groups-G62TZX5X.js → matrix.groups-BEZWVOUJ.js} +6 -6
  211. package/dist/{matrix.interactivity-QFB4OVO4.js → matrix.interactivity-WLXDO4E7.js} +13 -13
  212. package/dist/{matrix.layout-QQFOSV4M.js → matrix.layout-UY3I75BL.js} +3 -3
  213. package/dist/{matrix.legend-ZEICNYUI.js → matrix.legend-VUOGBBSH.js} +4 -4
  214. package/dist/{matrix.renderers-UYDHBRPZ.js → matrix.renderers-BBNGL2Y3.js} +13 -13
  215. package/dist/{matrix.serieses-DHJFTBTE.js → matrix.serieses-CJTRU4IC.js} +6 -6
  216. package/dist/{matrix.sort-ZNJ4LHYD.js → matrix.sort-XURIXHRR.js} +4 -4
  217. package/dist/{matrix.sort.unit.spec-S4YOZYJ5.js → matrix.sort.unit.spec-BWHYCA3Y.js} +14 -14
  218. package/dist/{matrix.sorterUi-VMNFCIAP.js → matrix.sorterUi-AHQ6OQSM.js} +3 -3
  219. package/dist/{matrix.sorterUi.unit.spec-XECZAWFQ.js → matrix.sorterUi.unit.spec-LYZCCILZ.js} +16 -16
  220. package/dist/{mavb-44EFWISZ.js → mavb-MWQWHKVK.js} +5 -5
  221. package/dist/{mds.fimo-ALNZ7L6I.js → mds.fimo-QXMA43K5.js} +4 -4
  222. package/dist/{mds.samplescatterplot-FG4RNUIH.js → mds.samplescatterplot-L4QNPAIQ.js} +19 -19
  223. package/dist/{mds.survivalplot-EQS4VYY4.js → mds.survivalplot-AG2BBY6G.js} +4 -4
  224. package/dist/{metaboliteIntensity-IKJWK2NU.js → metaboliteIntensity-WVYSSMUK.js} +6 -6
  225. package/dist/metaboliteIntensity-WVYSSMUK.js.map +7 -0
  226. package/dist/{numeric-SRR5M4GO.js → numeric-IFOVYMUH.js} +6 -6
  227. package/dist/numeric-IFOVYMUH.js.map +7 -0
  228. package/dist/{numeric.binary-RUQJRJRF.js → numeric.binary-ZMPITID3.js} +18 -18
  229. package/dist/numeric.binary-ZMPITID3.js.map +7 -0
  230. package/dist/{numeric.continuous-I5GIADRX.js → numeric.continuous-JZXDGRVI.js} +15 -15
  231. package/dist/numeric.continuous-JZXDGRVI.js.map +7 -0
  232. package/dist/{numeric.discrete-5ABBJ7DB.js → numeric.discrete-B5MP2BUL.js} +18 -18
  233. package/dist/{numeric.spline-EAMKY67E.js → numeric.spline-ETGKU6I5.js} +17 -17
  234. package/dist/numeric.spline-ETGKU6I5.js.map +7 -0
  235. package/dist/{numeric.toggle-IM7QQZD6.js → numeric.toggle-XRVFQ433.js} +13 -13
  236. package/dist/{oncomatrix-MCYODZNP.js → oncomatrix-JG3KOWBI.js} +20 -20
  237. package/dist/{oncomatrix.spec-QM5XGK5I.js → oncomatrix.spec-44YTEL5I.js} +15 -15
  238. package/dist/{plot.2dvaf-OLZ5MI6A.js → plot.2dvaf-KPMTW35R.js} +4 -4
  239. package/dist/{plot.app-AVHKZLGU.js → plot.app-MUUTGFEI.js} +20 -20
  240. package/dist/{plot.barplot-DTBAEBEB.js → plot.barplot-G54C36DD.js} +4 -4
  241. package/dist/{plot.boxplot-G7OWZHCN.js → plot.boxplot-22FLAAEO.js} +4 -4
  242. package/dist/{plot.brainImaging-FQS26KXZ.js → plot.brainImaging-5FZV4AFV.js} +2 -2
  243. package/dist/{plot.disco-ZYKOETLU.js → plot.disco-OMEUWQWQ.js} +4 -4
  244. package/dist/{plot.dzi-7BVBJYDC.js → plot.dzi-J2XN5ULJ.js} +2 -2
  245. package/dist/{plot.ssgq-AGUFLISK.js → plot.ssgq-J4CF7M3Y.js} +5 -5
  246. package/dist/{plot.vaf2cov-7IRCKHQF.js → plot.vaf2cov-SNR6WIFM.js} +4 -4
  247. package/dist/{plot.wsi-4GCUCEWM.js → plot.wsi-BYAW3RN7.js} +2 -2
  248. package/dist/{profile.spec-JDVUXPWF.js → profile.spec-PLYXELSM.js} +15 -15
  249. package/dist/{profileBarchart-YJ5GSHY6.js → profileBarchart-3QFQXXR6.js} +22 -22
  250. package/dist/{profileHome-2BOYGPNA.js → profileHome-PC4FWY5S.js} +18 -18
  251. package/dist/{profilePlot-PQ7WCZLF.js → profilePlot-LXZ5LJ6K.js} +22 -22
  252. package/dist/{profilePolar-AQLFISZZ.js → profilePolar-AUORGGMZ.js} +22 -22
  253. package/dist/{profileRadar-G3PDCA7Z.js → profileRadar-5O3EYPFO.js} +22 -22
  254. package/dist/{profileRadarFacility-C2FIWQRF.js → profileRadarFacility-SSF7EUE4.js} +22 -22
  255. package/dist/{profileSummary-5E4YWA2R.js → profileSummary-IBXAA4NM.js} +22 -22
  256. package/dist/{regression-W7AH7GGH.js → regression-J3EBHQMP.js} +31 -31
  257. package/dist/{regression.inputs-34NF76QT.js → regression.inputs-LTXJXZCF.js} +31 -31
  258. package/dist/{regression.inputs.term-DI2VHC72.js → regression.inputs.term-ARDNSN3Q.js} +31 -31
  259. package/dist/{regression.inputs.values.table-OBHO6EEK.js → regression.inputs.values.table-NYZJWWMO.js} +27 -27
  260. package/dist/{regression.results-DONR5MBF.js → regression.results-2BYNCT66.js} +7 -7
  261. package/dist/{sampleScatter-FBP47EXM.js → sampleScatter-NWJ256HC.js} +25 -25
  262. package/dist/{sampleScatter.interactivity-2OPX3WZC.js → sampleScatter.interactivity-DOZE22IQ.js} +22 -22
  263. package/dist/{sampleScatter.renderer-M4HJTA4R.js → sampleScatter.renderer-HMMA3M7U.js} +25 -25
  264. package/dist/{sampleScatter.rendererThree-GXUEF6OS.js → sampleScatter.rendererThree-WTT6WOCJ.js} +2 -2
  265. package/dist/{sampleView-YISI5MYU.js → sampleView-4MLTN5GF.js} +19 -19
  266. package/dist/{samplelst-NPOZBEBI.js → samplelst-4SU4NCUQ.js} +12 -12
  267. package/dist/samplelst-4SU4NCUQ.js.map +7 -0
  268. package/dist/{samplematrix-H2E7CZIY.js → samplematrix-7I7JKW7N.js} +7 -7
  269. package/dist/{scatter-OXADO3QA.js → scatter-EHOB46YH.js} +14 -14
  270. package/dist/{selectGenomeWithTklst-EPUATRO5.js → selectGenomeWithTklst-OB52OSAC.js} +6 -6
  271. package/dist/{singleCellCellType-VPZBQH2L.js → singleCellCellType-QYMOMGQP.js} +14 -14
  272. package/dist/singleCellCellType-QYMOMGQP.js.map +7 -0
  273. package/dist/{singleCellGeneExpression-ELSTYZWJ.js → singleCellGeneExpression-E5ZHVY7D.js} +6 -6
  274. package/dist/singleCellGeneExpression-E5ZHVY7D.js.map +7 -0
  275. package/dist/{singleCellPlot-PG5PS7PS.js → singleCellPlot-NZAN6M47.js} +15 -15
  276. package/dist/{singlecell-ZVE5JTAM.js → singlecell-6G7FG4K7.js} +20 -20
  277. package/dist/{singlecell-77SRCZMZ.js → singlecell-QFZDQTR7.js} +9 -9
  278. package/dist/{snp-GZZDBIWY.js → snp-FNSUOQ62.js} +5 -5
  279. package/dist/{snp-TR2ZGR6M.js → snp-GFN7WXB3.js} +14 -14
  280. package/dist/snp-GFN7WXB3.js.map +7 -0
  281. package/dist/{snplocus-4HR6V747.js → snplocus-NPECYKJH.js} +18 -18
  282. package/dist/snplocus-NPECYKJH.js.map +7 -0
  283. package/dist/{snplst-22J2SHZ3.js → snplst-FXPYZ4OB.js} +3 -3
  284. package/dist/{snplst.sampleSum-UT4IMXOE.js → snplst.sampleSum-TBBVCDAQ.js} +2 -2
  285. package/dist/{spliceevent.a53ss.diagram-DBUWYYY2.js → spliceevent.a53ss.diagram-VE25I555.js} +4 -4
  286. package/dist/{spliceevent.exonskip.diagram-LW37WZ7C.js → spliceevent.exonskip.diagram-72KJP7B4.js} +5 -5
  287. package/dist/{spliceevent.noeventdiagram-QVWGZ2FO.js → spliceevent.noeventdiagram-XJS7ZJXL.js} +4 -4
  288. package/dist/{summary-JCMPN74Q.js → summary-W2QL6PM7.js} +32 -32
  289. package/dist/{sunburst-BZJ3WQ7P.js → sunburst-6URJ5KYE.js} +4 -4
  290. package/dist/{survival-5GCXDFFV.js → survival-FA3G7XLP.js} +13 -13
  291. package/dist/survival-FA3G7XLP.js.map +7 -0
  292. package/dist/{survival-5VIYLYEP.js → survival-RZZTK42D.js} +15 -15
  293. package/dist/{svgraph-K74KGY34.js → svgraph-DUVEYHIB.js} +4 -4
  294. package/dist/{svmr-XLVOFHNZ.js → svmr-TAWEAX74.js} +7 -7
  295. package/dist/{table-GMAXVQVL.js → table-MQU2SECH.js} +14 -14
  296. package/dist/{tk-SBAYQMQD.js → tk-TJ5NUFSM.js} +21 -21
  297. package/dist/{tp.ui-JZJ7U6QZ.js → tp.ui-72N452KI.js} +14 -14
  298. package/dist/{tvs.density-WDTTMX2Z.js → tvs.density-7GBQ3HWE.js} +3 -3
  299. package/dist/{tvs.geneVariant-INUKTDTT.js → tvs.geneVariant-J6BU4QWJ.js} +2 -2
  300. package/dist/{tvs.numeric-IKHBJWRP.js → tvs.numeric-3EKVOHHT.js} +6 -6
  301. package/dist/{violin-E3FZQ3XB.js → violin-J5BLRUNO.js} +22 -22
  302. package/dist/{violin.interactivity-YRUD2ACP.js → violin.interactivity-74PJP2A2.js} +18 -18
  303. package/dist/{violin.renderer-2EB4LTOF.js → violin.renderer-X7IYO5OZ.js} +3 -3
  304. package/dist/{vocabulary-3QEBWWLD.js → vocabulary-KWPXN3UB.js} +16 -16
  305. package/package.json +8 -6
  306. package/dist/Disco-LBAKW4SJ.js.map +0 -7
  307. package/dist/Disco.UI-ODRH7X6T.js.map +0 -7
  308. package/dist/chunk-2JZM3KOM.js.map +0 -7
  309. package/dist/chunk-3XDCQ7KY.js.map +0 -7
  310. package/dist/chunk-A3RJV2TI.js.map +0 -7
  311. package/dist/chunk-BO5QXXJP.js.map +0 -7
  312. package/dist/chunk-FCO47PWR.js.map +0 -7
  313. package/dist/chunk-GIHTT3NN.js.map +0 -7
  314. package/dist/chunk-H56REZKF.js.map +0 -7
  315. package/dist/chunk-JSGFPXR6.js.map +0 -7
  316. package/dist/chunk-KO4BBRVI.js.map +0 -7
  317. package/dist/chunk-KTJDPQYT.js.map +0 -7
  318. package/dist/chunk-LT2RTOVA.js.map +0 -7
  319. package/dist/chunk-PYG7VYV6.js.map +0 -7
  320. package/dist/chunk-YYVCX5YB.js.map +0 -7
  321. package/dist/condition-6F4H4UDC.js.map +0 -7
  322. package/dist/geneExpression-2I7KXQXT.js.map +0 -7
  323. package/dist/geneVariant-36ZUVREY.js.map +0 -7
  324. package/dist/hierCluster-BPHQY7KZ.js +0 -73
  325. package/dist/hierCluster-FXSDLLKJ.js +0 -77
  326. package/dist/metaboliteIntensity-IKJWK2NU.js.map +0 -7
  327. package/dist/numeric-SRR5M4GO.js.map +0 -7
  328. package/dist/numeric.binary-RUQJRJRF.js.map +0 -7
  329. package/dist/numeric.continuous-I5GIADRX.js.map +0 -7
  330. package/dist/numeric.spline-EAMKY67E.js.map +0 -7
  331. package/dist/samplelst-NPOZBEBI.js.map +0 -7
  332. package/dist/singleCellCellType-VPZBQH2L.js.map +0 -7
  333. package/dist/singleCellGeneExpression-ELSTYZWJ.js.map +0 -7
  334. package/dist/snp-TR2ZGR6M.js.map +0 -7
  335. package/dist/snplocus-4HR6V747.js.map +0 -7
  336. package/dist/survival-5GCXDFFV.js.map +0 -7
  337. /package/dist/{2dmaf-GVN2X7BX.js.map → 2dmaf-A6RIVKAO.js.map} +0 -0
  338. /package/dist/{AppHeader-FL3D4RB2.js.map → AppHeader-C3P6JEJM.js.map} +0 -0
  339. /package/dist/{DEanalysis-7H32HYCF.js.map → DEanalysis-JTHRIPB3.js.map} +0 -0
  340. /package/dist/{HicApp-SZPXJVFW.js.map → HicApp-OMCFNTGD.js.map} +0 -0
  341. /package/dist/{WSIViewer-ADLNYPJL.js.map → WSIViewer-3KHJY7AK.js.map} +0 -0
  342. /package/dist/{adSandbox-BBS4OM2T.js.map → adSandbox-46L7TX4W.js.map} +0 -0
  343. /package/dist/{app-JWDAF7TM.js.map → app-E2BLDPB6.js.map} +0 -0
  344. /package/dist/{app-NVJFOYXK.js.map → app-JUWSY746.js.map} +0 -0
  345. /package/dist/{bam-ELURQUXQ.js.map → bam-KSN24N6G.js.map} +0 -0
  346. /package/dist/{barchart-Z53N4TKJ.js.map → barchart-BDDD4C34.js.map} +0 -0
  347. /package/dist/{barchart.data-5WXPL7D7.js.map → barchart.data-XBEWTQJP.js.map} +0 -0
  348. /package/dist/{barchart.events-3CVNWK74.js.map → barchart.events-6SWY2U7S.js.map} +0 -0
  349. /package/dist/{bars.renderer-GBP25M6J.js.map → bars.renderer-JPXY7XBC.js.map} +0 -0
  350. /package/dist/{block-MURPD3CS.js.map → block-SQHL5Q3U.js.map} +0 -0
  351. /package/dist/{block.init-3UN4YIUW.js.map → block.init-DJTY2UO2.js.map} +0 -0
  352. /package/dist/{block.mds.cnv-DFCJCWB6.js.map → block.mds.cnv-4XUBYXCD.js.map} +0 -0
  353. /package/dist/{block.mds.expressionrank-EFCWSUF6.js.map → block.mds.expressionrank-DWULBKAI.js.map} +0 -0
  354. /package/dist/{block.mds.geneboxplot-LZO4BIN2.js.map → block.mds.geneboxplot-OPPTIXY3.js.map} +0 -0
  355. /package/dist/{block.mds.junction-DRJPVSP7.js.map → block.mds.junction-54MGK3OR.js.map} +0 -0
  356. /package/dist/{block.mds.svcnv-UM7MVALD.js.map → block.mds.svcnv-IVTPMLEM.js.map} +0 -0
  357. /package/dist/{block.mds2-FDO2K5WR.js.map → block.mds2-ADKR53ZH.js.map} +0 -0
  358. /package/dist/{block.svg-AYRDRN33.js.map → block.svg-ANUBV43U.js.map} +0 -0
  359. /package/dist/{block.tk.aicheck-AUSKWMBC.js.map → block.tk.aicheck-KKUBGLPB.js.map} +0 -0
  360. /package/dist/{block.tk.ase-FNHGM2I3.js.map → block.tk.ase-BJSR6VEY.js.map} +0 -0
  361. /package/dist/{block.tk.bam-YUPXJTGV.js.map → block.tk.bam-KOCVKDGY.js.map} +0 -0
  362. /package/dist/{block.tk.bedgraphdot-FCODL5CT.js.map → block.tk.bedgraphdot-25ZADEDX.js.map} +0 -0
  363. /package/dist/{block.tk.bigwig.ui-RQE2XGT6.js.map → block.tk.bigwig.ui-B7RNUMJK.js.map} +0 -0
  364. /package/dist/{block.tk.hicstraw-RG6Y4MGK.js.map → block.tk.hicstraw-USIWYO5A.js.map} +0 -0
  365. /package/dist/{block.tk.junction-XASPK7BU.js.map → block.tk.junction-NMVEMNO6.js.map} +0 -0
  366. /package/dist/{block.tk.junction.textmatrixui-U4QHOZCH.js.map → block.tk.junction.textmatrixui-ML2OFSAI.js.map} +0 -0
  367. /package/dist/{block.tk.ld-2N7NAAFC.js.map → block.tk.ld-RITO4UAI.js.map} +0 -0
  368. /package/dist/{block.tk.menu-JUIJBOED.js.map → block.tk.menu-WS4N7ZKL.js.map} +0 -0
  369. /package/dist/{block.tk.pgv-3OG3ODVO.js.map → block.tk.pgv-GREPS34R.js.map} +0 -0
  370. /package/dist/{boxplot-FVMWGT3R.js.map → boxplot-LSWUXMG3.js.map} +0 -0
  371. /package/dist/{brainImaging-XEVUUAFW.js.map → brainImaging-ZHKFDENA.js.map} +0 -0
  372. /package/dist/{categorical-W66S7CR2.js.map → categorical-AMY4Q2GJ.js.map} +0 -0
  373. /package/dist/{chunk-ZFPQJIVT.js.map → chunk-22PFUERI.js.map} +0 -0
  374. /package/dist/{chunk-R4HGXSAB.js.map → chunk-3KACDHMK.js.map} +0 -0
  375. /package/dist/{chunk-N66AE4F4.js.map → chunk-4JKWPJXS.js.map} +0 -0
  376. /package/dist/{chunk-R4QYADIG.js.map → chunk-4Z6MSGRV.js.map} +0 -0
  377. /package/dist/{chunk-YPSAAUCG.js.map → chunk-5B4CKPSF.js.map} +0 -0
  378. /package/dist/{chunk-IFL4KQWX.js.map → chunk-5PGCBACL.js.map} +0 -0
  379. /package/dist/{chunk-LWFDXRX5.js.map → chunk-6ZJSKPSP.js.map} +0 -0
  380. /package/dist/{chunk-2NAE6B4K.js.map → chunk-7KNOQBI5.js.map} +0 -0
  381. /package/dist/{chunk-MLJXUYDM.js.map → chunk-7NO3B22I.js.map} +0 -0
  382. /package/dist/{chunk-RZI76G5X.js.map → chunk-7UTOSCQM.js.map} +0 -0
  383. /package/dist/{chunk-UID2IBJW.js.map → chunk-7YTE6X7M.js.map} +0 -0
  384. /package/dist/{chunk-JDEMV2DY.js.map → chunk-AIP75V7T.js.map} +0 -0
  385. /package/dist/{chunk-6RIWWJ7N.js.map → chunk-BRFTJKS5.js.map} +0 -0
  386. /package/dist/{chunk-Y445OJFF.js.map → chunk-CUJMPEQF.js.map} +0 -0
  387. /package/dist/{chunk-FGVPD57E.js.map → chunk-CXHKRFRQ.js.map} +0 -0
  388. /package/dist/{chunk-F4JJZQTT.js.map → chunk-DVKAU4C4.js.map} +0 -0
  389. /package/dist/{chunk-IP4XDZE5.js.map → chunk-EFRBLOIY.js.map} +0 -0
  390. /package/dist/{chunk-27TPEEBE.js.map → chunk-F2V5677L.js.map} +0 -0
  391. /package/dist/{chunk-AZ43JQUH.js.map → chunk-F62WPE3A.js.map} +0 -0
  392. /package/dist/{chunk-2LX4NGJ3.js.map → chunk-FO77IYY4.js.map} +0 -0
  393. /package/dist/{chunk-KUUVHWOH.js.map → chunk-GDM36JZF.js.map} +0 -0
  394. /package/dist/{chunk-AFUEQSU6.js.map → chunk-GQ47JIT2.js.map} +0 -0
  395. /package/dist/{chunk-62TFT43H.js.map → chunk-H23H6ZHI.js.map} +0 -0
  396. /package/dist/{chunk-7K35DD3D.js.map → chunk-JEBLRUTI.js.map} +0 -0
  397. /package/dist/{chunk-FDQMY6QO.js.map → chunk-JV46GMPM.js.map} +0 -0
  398. /package/dist/{chunk-R4AKYUS5.js.map → chunk-K43XPRMC.js.map} +0 -0
  399. /package/dist/{chunk-EOCH4CCO.js.map → chunk-KLOUJVT5.js.map} +0 -0
  400. /package/dist/{chunk-J7OTLF3N.js.map → chunk-KMUY4VM6.js.map} +0 -0
  401. /package/dist/{chunk-LIOAKTZG.js.map → chunk-L6CG64V7.js.map} +0 -0
  402. /package/dist/{chunk-RXIX2PTB.js.map → chunk-LBLNW4O4.js.map} +0 -0
  403. /package/dist/{chunk-AZYWRYTG.js.map → chunk-LRF2E7AI.js.map} +0 -0
  404. /package/dist/{chunk-CLA4CYDQ.js.map → chunk-MKETHON7.js.map} +0 -0
  405. /package/dist/{chunk-WW5X6DGZ.js.map → chunk-N5BYUCEI.js.map} +0 -0
  406. /package/dist/{chunk-C357ZWQ3.js.map → chunk-NC5FXKWS.js.map} +0 -0
  407. /package/dist/{chunk-EHQT46QU.js.map → chunk-NVKTQ7YX.js.map} +0 -0
  408. /package/dist/{chunk-3TBJHRHB.js.map → chunk-NZ7FIKRZ.js.map} +0 -0
  409. /package/dist/{chunk-DFBJTBFS.js.map → chunk-OPXTD3S3.js.map} +0 -0
  410. /package/dist/{chunk-TAKR45RQ.js.map → chunk-PFXJAXUY.js.map} +0 -0
  411. /package/dist/{chunk-WDUN3JSR.js.map → chunk-PLAW4ARO.js.map} +0 -0
  412. /package/dist/{chunk-KTT5URCV.js.map → chunk-Q5Y3WFEE.js.map} +0 -0
  413. /package/dist/{chunk-GAHBWEYS.js.map → chunk-QRS3A2BQ.js.map} +0 -0
  414. /package/dist/{chunk-6LE66B4B.js.map → chunk-RO2SHECM.js.map} +0 -0
  415. /package/dist/{chunk-QVLBOKVS.js.map → chunk-SA43RJZF.js.map} +0 -0
  416. /package/dist/{chunk-OKHARHT2.js.map → chunk-SHT7MUYK.js.map} +0 -0
  417. /package/dist/{chunk-SBIYP4PZ.js.map → chunk-SNI54OAB.js.map} +0 -0
  418. /package/dist/{chunk-424OMXYN.js.map → chunk-SNJ7HF7A.js.map} +0 -0
  419. /package/dist/{chunk-A7ZFF252.js.map → chunk-SY4F3ZHY.js.map} +0 -0
  420. /package/dist/{chunk-FGV7DX37.js.map → chunk-T6CH7Q6G.js.map} +0 -0
  421. /package/dist/{chunk-T4O3CEMI.js.map → chunk-TACGYMDL.js.map} +0 -0
  422. /package/dist/{chunk-TRWKFVMG.js.map → chunk-TLIXHORR.js.map} +0 -0
  423. /package/dist/{chunk-PZ2QQHOR.js.map → chunk-TNWYWD33.js.map} +0 -0
  424. /package/dist/{chunk-ZHUXQIOS.js.map → chunk-UR3MYAAQ.js.map} +0 -0
  425. /package/dist/{chunk-6S4SHPQA.js.map → chunk-URE7FSEB.js.map} +0 -0
  426. /package/dist/{chunk-KDO5R43U.js.map → chunk-UUTONA35.js.map} +0 -0
  427. /package/dist/{chunk-QXBRPFSA.js.map → chunk-VQNLRIAH.js.map} +0 -0
  428. /package/dist/{chunk-3EF4ZHVC.js.map → chunk-WI5YRY7W.js.map} +0 -0
  429. /package/dist/{chunk-MPUJBL2R.js.map → chunk-WKC4QIJW.js.map} +0 -0
  430. /package/dist/{chunk-UKTWDFWK.js.map → chunk-WMJZQUYY.js.map} +0 -0
  431. /package/dist/{chunk-CIYZX4QQ.js.map → chunk-XFJLVKCK.js.map} +0 -0
  432. /package/dist/{chunk-FZQKYSHP.js.map → chunk-XG475QKA.js.map} +0 -0
  433. /package/dist/{chunk-G6GOOI6P.js.map → chunk-XTHRDSH4.js.map} +0 -0
  434. /package/dist/{chunk-FCTWOWMS.js.map → chunk-ZJQK3PZP.js.map} +0 -0
  435. /package/dist/{chunk-ETCTZFTA.js.map → chunk-ZW54ZHQV.js.map} +0 -0
  436. /package/dist/{controls-PP7BYYIW.js.map → controls-2BZ4S2AV.js.map} +0 -0
  437. /package/dist/{controls.config-44LEL2J2.js.map → controls.config-PDFKL6ML.js.map} +0 -0
  438. /package/dist/{cuminc-XDNMYEEU.js.map → cuminc-CGEUIYZQ.js.map} +0 -0
  439. /package/dist/{customdata.inputui-X7DNVBPR.js.map → customdata.inputui-YEVKBPFY.js.map} +0 -0
  440. /package/dist/{dataDownload-TXV35BZ4.js.map → dataDownload-BC3LERJV.js.map} +0 -0
  441. /package/dist/{databrowser.ui-PSHYNFKR.js.map → databrowser.ui-KWWFYSEX.js.map} +0 -0
  442. /package/dist/{density-VNA5QEGH.js.map → density-BSCDN4GB.js.map} +0 -0
  443. /package/dist/{dictionary-XXRUN7UM.js.map → dictionary-O23JEFJS.js.map} +0 -0
  444. /package/dist/{e2pca-C7HISRT5.js.map → e2pca-ZHATZNUP.js.map} +0 -0
  445. /package/dist/{ep-RI4E7UYW.js.map → ep-GEJTMSB6.js.map} +0 -0
  446. /package/dist/{expclust.gdc.spec-KZ7CHSC5.js.map → expclust.gdc.spec-TPBVH4NK.js.map} +0 -0
  447. /package/dist/{facet-A3HUV7B2.js.map → facet-UPVNGNCZ.js.map} +0 -0
  448. /package/dist/{geneExpClustering-IZYNEJJC.js.map → geneExpClustering-7UHMJ3PB.js.map} +0 -0
  449. /package/dist/{geneExpression-IJMVTJ6T.js.map → geneExpression-LAHHCMR4.js.map} +0 -0
  450. /package/dist/{geneExpression-LOQFCRH2.js.map → geneExpression-LFEAYU2L.js.map} +0 -0
  451. /package/dist/{geneORA-27VO4T2S.js.map → geneORA-OZWHBV3W.js.map} +0 -0
  452. /package/dist/{geneVariant-RA3XNRAN.js.map → geneVariant-LZAYE7PQ.js.map} +0 -0
  453. /package/dist/{genefusion.ui-WXSPZ3UL.js.map → genefusion.ui-5YKNKD4Y.js.map} +0 -0
  454. /package/dist/{geneset-DZPTBSW6.js.map → geneset-DXNWZT75.js.map} +0 -0
  455. /package/dist/{genomeBrowser-QBD2U4LQ.js.map → genomeBrowser-UXF6G2WQ.js.map} +0 -0
  456. /package/dist/{genomeBrowser.controls-YCCXIGBQ.js.map → genomeBrowser.controls-ULYRP5M6.js.map} +0 -0
  457. /package/dist/{genomeBrowser.spec-NMV43M64.js.map → genomeBrowser.spec-5C67EL3K.js.map} +0 -0
  458. /package/dist/{groupsetting-3452HUCN.js.map → groupsetting-X6E2Z5GU.js.map} +0 -0
  459. /package/dist/{gsea-S7LGRKTT.js.map → gsea-KAH5MLVI.js.map} +0 -0
  460. /package/dist/{hierCluster-BPHQY7KZ.js.map → hierCluster-EYFVXMHY.js.map} +0 -0
  461. /package/dist/{hierCluster-FXSDLLKJ.js.map → hierCluster-ZIYNLFRX.js.map} +0 -0
  462. /package/dist/{hierCluster.config-SCFEX4MC.js.map → hierCluster.config-MSRHVPEQ.js.map} +0 -0
  463. /package/dist/{hierCluster.integration.spec-WP6P47EV.js.map → hierCluster.integration.spec-ZLOFQ4GM.js.map} +0 -0
  464. /package/dist/{hierCluster.interactivity-IOG3FQQS.js.map → hierCluster.interactivity-YJSUAQGE.js.map} +0 -0
  465. /package/dist/{hierCluster.renderers-FJNHTWF7.js.map → hierCluster.renderers-NSF7TTND.js.map} +0 -0
  466. /package/dist/{imagePlot-XEZLFTVD.js.map → imagePlot-KEDJ7KXV.js.map} +0 -0
  467. /package/dist/{launch.adhoc-XJSQEN6J.js.map → launch.adhoc-NBSO6GA5.js.map} +0 -0
  468. /package/dist/{leftlabel.sample-VYLQ7OU6.js.map → leftlabel.sample-F2FGASJO.js.map} +0 -0
  469. /package/dist/{legacyDataset-U3QB6JES.js.map → legacyDataset-LM4FFTW3.js.map} +0 -0
  470. /package/dist/{lollipop-HEICLXOG.js.map → lollipop-P544RLZQ.js.map} +0 -0
  471. /package/dist/{maf-IYIZCRDV.js.map → maf-AZLCV4SH.js.map} +0 -0
  472. /package/dist/{maftimeline-RNASDCKI.js.map → maftimeline-6Z6MWZO7.js.map} +0 -0
  473. /package/dist/{matrix-UAFUVTXR.js.map → matrix-E3WJC32T.js.map} +0 -0
  474. /package/dist/{matrix-ZF7KLLU4.js.map → matrix-VYJA7EPK.js.map} +0 -0
  475. /package/dist/{matrix.cells-H5MGR6PD.js.map → matrix.cells-7U52Y5BI.js.map} +0 -0
  476. /package/dist/{matrix.config-QYC57OIA.js.map → matrix.config-RJZD5MCA.js.map} +0 -0
  477. /package/dist/{matrix.controls-C7BURVDH.js.map → matrix.controls-R3FQUGZZ.js.map} +0 -0
  478. /package/dist/{matrix.data-ZGFMAFWC.js.map → matrix.data-2E3NABS7.js.map} +0 -0
  479. /package/dist/{matrix.groups-G62TZX5X.js.map → matrix.groups-BEZWVOUJ.js.map} +0 -0
  480. /package/dist/{matrix.interactivity-QFB4OVO4.js.map → matrix.interactivity-WLXDO4E7.js.map} +0 -0
  481. /package/dist/{matrix.layout-QQFOSV4M.js.map → matrix.layout-UY3I75BL.js.map} +0 -0
  482. /package/dist/{matrix.legend-ZEICNYUI.js.map → matrix.legend-VUOGBBSH.js.map} +0 -0
  483. /package/dist/{matrix.renderers-UYDHBRPZ.js.map → matrix.renderers-BBNGL2Y3.js.map} +0 -0
  484. /package/dist/{matrix.serieses-DHJFTBTE.js.map → matrix.serieses-CJTRU4IC.js.map} +0 -0
  485. /package/dist/{matrix.sort-ZNJ4LHYD.js.map → matrix.sort-XURIXHRR.js.map} +0 -0
  486. /package/dist/{matrix.sort.unit.spec-S4YOZYJ5.js.map → matrix.sort.unit.spec-BWHYCA3Y.js.map} +0 -0
  487. /package/dist/{matrix.sorterUi-VMNFCIAP.js.map → matrix.sorterUi-AHQ6OQSM.js.map} +0 -0
  488. /package/dist/{matrix.sorterUi.unit.spec-XECZAWFQ.js.map → matrix.sorterUi.unit.spec-LYZCCILZ.js.map} +0 -0
  489. /package/dist/{mavb-44EFWISZ.js.map → mavb-MWQWHKVK.js.map} +0 -0
  490. /package/dist/{mds.fimo-ALNZ7L6I.js.map → mds.fimo-QXMA43K5.js.map} +0 -0
  491. /package/dist/{mds.samplescatterplot-FG4RNUIH.js.map → mds.samplescatterplot-L4QNPAIQ.js.map} +0 -0
  492. /package/dist/{mds.survivalplot-EQS4VYY4.js.map → mds.survivalplot-AG2BBY6G.js.map} +0 -0
  493. /package/dist/{numeric.discrete-5ABBJ7DB.js.map → numeric.discrete-B5MP2BUL.js.map} +0 -0
  494. /package/dist/{numeric.toggle-IM7QQZD6.js.map → numeric.toggle-XRVFQ433.js.map} +0 -0
  495. /package/dist/{oncomatrix-MCYODZNP.js.map → oncomatrix-JG3KOWBI.js.map} +0 -0
  496. /package/dist/{oncomatrix.spec-QM5XGK5I.js.map → oncomatrix.spec-44YTEL5I.js.map} +0 -0
  497. /package/dist/{plot.2dvaf-OLZ5MI6A.js.map → plot.2dvaf-KPMTW35R.js.map} +0 -0
  498. /package/dist/{plot.app-AVHKZLGU.js.map → plot.app-MUUTGFEI.js.map} +0 -0
  499. /package/dist/{plot.barplot-DTBAEBEB.js.map → plot.barplot-G54C36DD.js.map} +0 -0
  500. /package/dist/{plot.boxplot-G7OWZHCN.js.map → plot.boxplot-22FLAAEO.js.map} +0 -0
  501. /package/dist/{plot.brainImaging-FQS26KXZ.js.map → plot.brainImaging-5FZV4AFV.js.map} +0 -0
  502. /package/dist/{plot.disco-ZYKOETLU.js.map → plot.disco-OMEUWQWQ.js.map} +0 -0
  503. /package/dist/{plot.dzi-7BVBJYDC.js.map → plot.dzi-J2XN5ULJ.js.map} +0 -0
  504. /package/dist/{plot.ssgq-AGUFLISK.js.map → plot.ssgq-J4CF7M3Y.js.map} +0 -0
  505. /package/dist/{plot.vaf2cov-7IRCKHQF.js.map → plot.vaf2cov-SNR6WIFM.js.map} +0 -0
  506. /package/dist/{plot.wsi-4GCUCEWM.js.map → plot.wsi-BYAW3RN7.js.map} +0 -0
  507. /package/dist/{profile.spec-JDVUXPWF.js.map → profile.spec-PLYXELSM.js.map} +0 -0
  508. /package/dist/{profileBarchart-YJ5GSHY6.js.map → profileBarchart-3QFQXXR6.js.map} +0 -0
  509. /package/dist/{profileHome-2BOYGPNA.js.map → profileHome-PC4FWY5S.js.map} +0 -0
  510. /package/dist/{profilePlot-PQ7WCZLF.js.map → profilePlot-LXZ5LJ6K.js.map} +0 -0
  511. /package/dist/{profilePolar-AQLFISZZ.js.map → profilePolar-AUORGGMZ.js.map} +0 -0
  512. /package/dist/{profileRadar-G3PDCA7Z.js.map → profileRadar-5O3EYPFO.js.map} +0 -0
  513. /package/dist/{profileRadarFacility-C2FIWQRF.js.map → profileRadarFacility-SSF7EUE4.js.map} +0 -0
  514. /package/dist/{profileSummary-5E4YWA2R.js.map → profileSummary-IBXAA4NM.js.map} +0 -0
  515. /package/dist/{regression-W7AH7GGH.js.map → regression-J3EBHQMP.js.map} +0 -0
  516. /package/dist/{regression.inputs-34NF76QT.js.map → regression.inputs-LTXJXZCF.js.map} +0 -0
  517. /package/dist/{regression.inputs.term-DI2VHC72.js.map → regression.inputs.term-ARDNSN3Q.js.map} +0 -0
  518. /package/dist/{regression.inputs.values.table-OBHO6EEK.js.map → regression.inputs.values.table-NYZJWWMO.js.map} +0 -0
  519. /package/dist/{regression.results-DONR5MBF.js.map → regression.results-2BYNCT66.js.map} +0 -0
  520. /package/dist/{sampleScatter-FBP47EXM.js.map → sampleScatter-NWJ256HC.js.map} +0 -0
  521. /package/dist/{sampleScatter.interactivity-2OPX3WZC.js.map → sampleScatter.interactivity-DOZE22IQ.js.map} +0 -0
  522. /package/dist/{sampleScatter.renderer-M4HJTA4R.js.map → sampleScatter.renderer-HMMA3M7U.js.map} +0 -0
  523. /package/dist/{sampleScatter.rendererThree-GXUEF6OS.js.map → sampleScatter.rendererThree-WTT6WOCJ.js.map} +0 -0
  524. /package/dist/{sampleView-YISI5MYU.js.map → sampleView-4MLTN5GF.js.map} +0 -0
  525. /package/dist/{samplematrix-H2E7CZIY.js.map → samplematrix-7I7JKW7N.js.map} +0 -0
  526. /package/dist/{scatter-OXADO3QA.js.map → scatter-EHOB46YH.js.map} +0 -0
  527. /package/dist/{selectGenomeWithTklst-EPUATRO5.js.map → selectGenomeWithTklst-OB52OSAC.js.map} +0 -0
  528. /package/dist/{singleCellPlot-PG5PS7PS.js.map → singleCellPlot-NZAN6M47.js.map} +0 -0
  529. /package/dist/{singlecell-ZVE5JTAM.js.map → singlecell-6G7FG4K7.js.map} +0 -0
  530. /package/dist/{singlecell-77SRCZMZ.js.map → singlecell-QFZDQTR7.js.map} +0 -0
  531. /package/dist/{snp-GZZDBIWY.js.map → snp-FNSUOQ62.js.map} +0 -0
  532. /package/dist/{snplst-22J2SHZ3.js.map → snplst-FXPYZ4OB.js.map} +0 -0
  533. /package/dist/{snplst.sampleSum-UT4IMXOE.js.map → snplst.sampleSum-TBBVCDAQ.js.map} +0 -0
  534. /package/dist/{spliceevent.a53ss.diagram-DBUWYYY2.js.map → spliceevent.a53ss.diagram-VE25I555.js.map} +0 -0
  535. /package/dist/{spliceevent.exonskip.diagram-LW37WZ7C.js.map → spliceevent.exonskip.diagram-72KJP7B4.js.map} +0 -0
  536. /package/dist/{spliceevent.noeventdiagram-QVWGZ2FO.js.map → spliceevent.noeventdiagram-XJS7ZJXL.js.map} +0 -0
  537. /package/dist/{summary-JCMPN74Q.js.map → summary-W2QL6PM7.js.map} +0 -0
  538. /package/dist/{sunburst-BZJ3WQ7P.js.map → sunburst-6URJ5KYE.js.map} +0 -0
  539. /package/dist/{survival-5VIYLYEP.js.map → survival-RZZTK42D.js.map} +0 -0
  540. /package/dist/{svgraph-K74KGY34.js.map → svgraph-DUVEYHIB.js.map} +0 -0
  541. /package/dist/{svmr-XLVOFHNZ.js.map → svmr-TAWEAX74.js.map} +0 -0
  542. /package/dist/{table-GMAXVQVL.js.map → table-MQU2SECH.js.map} +0 -0
  543. /package/dist/{tk-SBAYQMQD.js.map → tk-TJ5NUFSM.js.map} +0 -0
  544. /package/dist/{tp.ui-JZJ7U6QZ.js.map → tp.ui-72N452KI.js.map} +0 -0
  545. /package/dist/{tvs.density-WDTTMX2Z.js.map → tvs.density-7GBQ3HWE.js.map} +0 -0
  546. /package/dist/{tvs.geneVariant-INUKTDTT.js.map → tvs.geneVariant-J6BU4QWJ.js.map} +0 -0
  547. /package/dist/{tvs.numeric-IKHBJWRP.js.map → tvs.numeric-3EKVOHHT.js.map} +0 -0
  548. /package/dist/{violin-E3FZQ3XB.js.map → violin-J5BLRUNO.js.map} +0 -0
  549. /package/dist/{violin.interactivity-YRUD2ACP.js.map → violin.interactivity-74PJP2A2.js.map} +0 -0
  550. /package/dist/{violin.renderer-2EB4LTOF.js.map → violin.renderer-X7IYO5OZ.js.map} +0 -0
  551. /package/dist/{vocabulary-3QEBWWLD.js.map → vocabulary-KWPXN3UB.js.map} +0 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../plots/disco/arc/FullArcRenderer.ts", "../plots/disco/menu/MenuProvider.ts", "../plots/disco/fusion/FusionColorProvider.ts", "../plots/disco/fusion/FusionRenderer.ts", "../plots/disco/DiscoRenderer.ts", "../plots/disco/interactions/DiscoInteractions.ts", "../plots/disco/chromosome/Reference.ts", "../plots/disco/data/DataObjectMapper.ts", "../plots/disco/data/PercentileMapper.ts", "../plots/disco/data/DataMapper.ts", "../plots/disco/legend/Legend.ts", "../plots/disco/fusion/Fusion.ts", "../plots/disco/fusion/FusionSubgroup.ts", "../plots/disco/fusion/FusionMapper.ts", "../plots/disco/loh/GradientColorProvider.ts", "../plots/disco/loh/LohLegend.ts", "../plots/disco/viewmodel/ViewModel.ts", "../plots/disco/ring/Ring.ts", "../plots/disco/label/MLabel.ts", "../plots/disco/snv/SnvLegendElement.ts", "../plots/disco/snv/SnvArcsMapper.ts", "../plots/disco/cnv/CnvLegend.ts", "../plots/disco/cnv/CnvColorProvider.ts", "../plots/disco/cnv/CnvArcsMapper.ts", "../plots/disco/label/Line.ts", "../plots/disco/label/LabelFactory.ts", "../plots/disco/label/LabelsMapper.ts", "../plots/disco/label/Labels.ts", "../plots/disco/snv/NonExonicSnvArcsMapper.ts", "../plots/disco/loh/LohArcMapper.ts", "../plots/disco/ring/Rings.ts", "../plots/disco/viewmodel/ViewModelProvider.ts", "../plots/disco/viewmodel/ViewModelMapper.ts", "../plots/disco/legend/LegendJSONMapper.ts", "../plots/disco/legend/LegendRenderer.ts", "../plots/disco/chromosome/ChromosomesRenderer.ts", "../plots/disco/label/LabelsRenderer.ts", "../plots/disco/defaults.ts", "../plots/disco/snv/NonExonicSnvRenderer.ts", "../plots/disco/snv/SnvRenderer.ts", "../plots/disco/loh/LohRenderer.ts", "../plots/disco/cnv/CnvBarRenderer.ts", "../plots/disco/cnv/CnvHeatmapRenderer.ts", "../plots/disco/Disco.ts"],
4
+ "sourcesContent": ["import * as d3 from 'd3'\nimport Arc from './Arc.ts'\n\nexport default class FullArcRenderer {\n\tprivate radius: number\n\tprivate width: number\n\tprivate color: string\n\tconstructor(radius: number, width: number, color: string) {\n\t\tthis.radius = radius\n\t\tthis.width = width\n\t\tthis.color = color\n\t}\n\trender(holder: any) {\n\t\tconst donutGenerator = d3.arc<Arc>()\n\t\tconst arc: Arc = {\n\t\t\tstartAngle: 0,\n\t\t\tendAngle: Math.PI * 2,\n\t\t\tinnerRadius: this.radius,\n\t\t\touterRadius: this.radius + this.width,\n\t\t\tcolor: this.color,\n\t\t\ttext: 'No label'\n\t\t}\n\n\t\tconst array: Array<Arc> = []\n\t\tarray.push(arc)\n\t\tconst donutArc = holder.append('g')\n\t\tdonutArc\n\t\t\t.selectAll('path')\n\t\t\t.data(array)\n\t\t\t.enter()\n\t\t\t.append('path')\n\t\t\t.attr('d', (d: Arc) => donutGenerator(d))\n\t\t\t.attr('fill', (d: Arc) => d.color)\n\t}\n}\n", "import { Menu } from '#dom/menu'\n\nexport default class MenuProvider {\n\tstatic create(): Menu {\n\t\tconst menu = new Menu({ padding: 5 })\n\t\tmenu.d.style('border', '1px solid #FFF').style('position', 'absolute').style('z-index', 1001)\n\n\t\treturn menu\n\t}\n}\n", "import { FusionLegend } from '#plots/disco/fusion/FusionLegend.ts'\n\nexport default class FusionColorProvider {\n\tstatic getColor(chrA: string, chrB: string) {\n\t\tif (chrA != chrB) {\n\t\t\treturn FusionLegend.Interchromosomal.valueOf()\n\t\t} else {\n\t\t\treturn FusionLegend.Intrachromosomal.valueOf()\n\t\t}\n\t}\n}\n", "import * as d3 from 'd3'\nimport FullArcRenderer from '#plots/disco/arc/FullArcRenderer.ts'\nimport Fusion from './Fusion.ts'\nimport MenuProvider from '#plots/disco/menu/MenuProvider.ts'\nimport FusionColorProvider from '#plots/disco/fusion/FusionColorProvider.ts'\nimport { table2col } from '#dom/table2col'\n\n// TODO extract constants from this file.\nexport default class FusionRenderer {\n\trender(holder: any, fusions: Array<Fusion>) {\n\t\tlet radius = 0\n\t\tif (fusions.length > 0) {\n\t\t\tradius = fusions[0].target.radius\n\t\t\tconst fullArcRenderer = new FullArcRenderer(radius, 2, '#6464641A')\n\t\t\tfullArcRenderer.render(holder)\n\t\t}\n\n\t\tconst ribboon = d3.ribbon().radius(radius)\n\n\t\tconst ribbons = holder.selectAll('.chord').data(fusions)\n\n\t\tconst menu = MenuProvider.create()\n\n\t\tribbons\n\t\t\t.enter()\n\t\t\t.append('path')\n\t\t\t.attr('class', 'chord')\n\t\t\t.attr('d', ribboon)\n\t\t\t.attr('fill', (fusion: Fusion) => {\n\t\t\t\treturn FusionColorProvider.getColor(\n\t\t\t\t\tfusion.source.positionInChromosome.chromosome,\n\t\t\t\t\tfusion.target.positionInChromosome.chromosome\n\t\t\t\t)\n\t\t\t})\n\t\t\t.on('mouseover', (mouseEvent: MouseEvent, fusion: Fusion) => {\n\t\t\t\tconst table = table2col({ holder: menu.d })\n\t\t\t\tthis.createTooltip(table, fusion)\n\t\t\t\tmenu.show(mouseEvent.x, mouseEvent.y)\n\t\t\t})\n\t\t\t.on('mouseout', () => {\n\t\t\t\tmenu.clear()\n\t\t\t\tmenu.hide()\n\t\t\t})\n\t}\n\n\tcreateTooltip(table: any, fusion: Fusion) {\n\t\t{\n\t\t\tconst [td1, td2] = table.addRow()\n\t\t\ttd1.text('Data type')\n\t\t\ttd2.append('span').style('margin-left', '5px').text('Fusion transcript')\n\t\t}\n\t\t{\n\t\t\tconst positionInChromosomeSource = fusion.source.positionInChromosome\n\t\t\tconst positionInChromosomeTarget = fusion.target.positionInChromosome\n\n\t\t\tconst [td1, td2] = table.addRow()\n\n\t\t\ttd1.text('Position')\n\t\t\ttd2\n\t\t\t\t.append('span')\n\t\t\t\t.style('margin-left', '5px')\n\t\t\t\t.text(\n\t\t\t\t\t` ${fusion.source.gene ? fusion.source.gene : ''} ${positionInChromosomeSource.chromosome}:${\n\t\t\t\t\t\tpositionInChromosomeSource.position\n\t\t\t\t\t} ${fusion.source.strand == '+' ? 'forward' : 'reverse'} > ` +\n\t\t\t\t\t\t` ${fusion.target.gene ? fusion.target.gene : ''} ${positionInChromosomeTarget.chromosome}:${\n\t\t\t\t\t\t\tpositionInChromosomeTarget.position\n\t\t\t\t\t\t} ${fusion.target.strand == '+' ? 'forward' : 'reverse'} `\n\t\t\t\t)\n\t\t}\n\t}\n}\n", "import IRenderer from './IRenderer.ts'\nimport ViewModel from './viewmodel/ViewModel.ts'\nimport LegendRenderer from './legend/LegendRenderer.ts'\nimport { RingType } from './ring/RingType.ts'\nimport FusionRenderer from './fusion/FusionRenderer.ts'\n\nexport class DiscoRenderer {\n\tprivate renders: Map<RingType, IRenderer>\n\tprivate legendRenderer: LegendRenderer\n\tprivate fusionRenderer: FusionRenderer\n\n\tconstructor(renders: Map<RingType, IRenderer>, legendRenderer: LegendRenderer) {\n\t\tthis.renders = renders\n\t\tthis.legendRenderer = legendRenderer\n\t\tthis.fusionRenderer = new FusionRenderer()\n\t}\n\n\trender(holder: any, viewModel: ViewModel) {\n\t\tconst svgDiv = holder.append('div').style('display', 'inline-block').style('font-family', 'Arial')\n\n\t\tconst svg = svgDiv\n\t\t\t.append('svg')\n\t\t\t.attr('id', 'sjpp_disco_plot')\n\t\t\t.attr('data-testid', 'sjpp_disco_plot')\n\t\t\t.attr('width', viewModel.width)\n\t\t\t.attr('height', viewModel.height + viewModel.legendHeight)\n\n\t\tconst mainG = svg\n\t\t\t.append('g')\n\t\t\t.attr('class', 'mainG')\n\t\t\t.attr(\n\t\t\t\t'transform',\n\t\t\t\t`translate(${\n\t\t\t\t\tviewModel.settings.rings.labelLinesInnerRadius + viewModel.settings.rings.labelsToLinesDistance + 100\n\t\t\t\t},${viewModel.height / 2})`\n\t\t\t)\n\n\t\tfor (const [ringType, renderer] of this.renders) {\n\t\t\tconst elements = viewModel.getElements(ringType)\n\t\t\tconst collisions = viewModel.getCollisions(ringType)\n\n\t\t\trenderer.render(mainG, elements, collisions)\n\t\t}\n\n\t\tthis.fusionRenderer.render(mainG, viewModel.fusions)\n\n\t\tthis.legendRenderer.render(\n\t\t\tmainG,\n\t\t\tviewModel.legend,\n\t\t\t-1 * (viewModel.settings.rings.labelLinesInnerRadius + viewModel.settings.rings.labelsToLinesDistance + 50),\n\t\t\tviewModel.width,\n\t\t\tviewModel.height / 2\n\t\t)\n\t}\n}\n", "export class DiscoInteractions {\n\tdiscoApp: any\n\n\tdownloadClickListener: (d: any) => void\n\tgeneClickListener: (gene: string, mnames: Array<string>) => void\n\n\tconstructor(discoApp: any) {\n\t\t// note: discoApp will be set when discoApp.state{} is created\n\t\tthis.discoApp = discoApp\n\n\t\tthis.downloadClickListener = (svg: any) => {\n\t\t\tconst downloadImgName = this.discoApp.state.settings.downloadImgName || 'disco.plot'\n\t\t\tconst a = document.createElement('a')\n\t\t\tdocument.body.appendChild(a)\n\n\t\t\ta.addEventListener(\n\t\t\t\t'click',\n\t\t\t\t() => {\n\t\t\t\t\t// must use arrow function but not \"function()\", so this.downloadImgName is accessible\n\t\t\t\t\tconst serializer = new XMLSerializer()\n\t\t\t\t\tconst svg_blob = new Blob([serializer.serializeToString(svg)], {\n\t\t\t\t\t\ttype: 'image/svg+xml'\n\t\t\t\t\t})\n\t\t\t\t\ta.download = downloadImgName + '.svg'\n\t\t\t\t\ta.href = URL.createObjectURL(svg_blob)\n\t\t\t\t\tdocument.body.removeChild(a)\n\t\t\t\t},\n\t\t\t\tfalse\n\t\t\t)\n\t\t\ta.click()\n\t\t}\n\n\t\tthis.geneClickListener = async (gene: string, mnames: Array<string>) => {\n\t\t\tconst { filter, filter0 } = this.discoApp.app.getState().termfilter\n\t\t\tconst arg = {\n\t\t\t\tholder: this.discoApp.app.opts.holder,\n\t\t\t\tgenome: this.discoApp.app.opts.state.args.genome,\n\t\t\t\tnobox: true,\n\t\t\t\tquery: gene,\n\t\t\t\ttklst: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: 'mds3',\n\t\t\t\t\t\tdslabel: this.discoApp.app.opts.state.dslabel,\n\t\t\t\t\t\thlaachange: mnames.join(','),\n\t\t\t\t\t\tfilter0,\n\t\t\t\t\t\tfilterObj: filter\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t\tconst _ = await import('#src/block.init')\n\t\t\tawait _.default(arg)\n\t\t}\n\t}\n}\n", "import Chromosome from './Chromosome.ts'\n\nexport default class Reference {\n\tchromosomes: Array<Chromosome> = []\n\tchromosomesOrder: Array<string> = []\n\ttotalSize: number\n\n\ttotalPadAngle: number\n\ttotalChromosomesAngle: number\n\n\tprivate keysArray: Array<string> = []\n\tprivate totalSizeArray: Array<number> = []\n\tprivate chrSizesArray: Array<number> = []\n\n\tprivate settings: any\n\n\tconstructor(settings: any, chromosomes: any, chromosomesOverride?: any) {\n\t\tconst chrSizes = chromosomesOverride || chromosomes\n\n\t\tthis.settings = settings\n\n\t\tthis.chromosomesOrder = []\n\t\tlet totalSize = 0\n\t\tthis.totalPadAngle = Object.keys(chrSizes).length * this.settings.padAngle\n\t\tthis.totalChromosomesAngle = 2 * Math.PI - this.totalPadAngle\n\n\t\tfor (const chr in chrSizes) {\n\t\t\tconst key = chr.slice(0, 3) === 'chr' ? chr.slice(3) : chr\n\t\t\tthis.chromosomesOrder.push(chr)\n\t\t\tthis.keysArray.push(key)\n\t\t\tthis.totalSizeArray.push(totalSize)\n\t\t\tthis.chrSizesArray.push(chrSizes[chr])\n\n\t\t\ttotalSize += chrSizes[chr]\n\t\t}\n\n\t\tthis.totalSize = totalSize\n\n\t\tlet lastAngle = 0\n\n\t\tfor (let i = 0; i < this.keysArray.length; i++) {\n\t\t\tconst chromosomeAngle = this.totalChromosomesAngle * (this.chrSizesArray[i] / totalSize)\n\n\t\t\tconst startAngle = i == 0 ? this.settings.padAngle / 2 : lastAngle + this.settings.padAngle\n\t\t\tconst endAngle =\n\t\t\t\ti == 0 ? this.settings.padAngle / 2 + chromosomeAngle : lastAngle + this.settings.padAngle + chromosomeAngle\n\t\t\tconst chromosome: Chromosome = {\n\t\t\t\tstart: this.totalSizeArray[i],\n\t\t\t\tsize: this.chrSizesArray[i],\n\t\t\t\tfactor: 1,\n\t\t\t\tstartAngle: startAngle,\n\t\t\t\tendAngle: endAngle,\n\t\t\t\tangle: (startAngle + endAngle) / 2,\n\t\t\t\tinnerRadius: this.settings.chromosomeInnerRadius,\n\t\t\t\touterRadius: this.settings.chromosomeInnerRadius + this.settings.chromosomeWidth,\n\t\t\t\tcolor: '#AAA',\n\t\t\t\ttext: this.keysArray[i]\n\t\t\t}\n\n\t\t\tthis.chromosomes.push(chromosome)\n\n\t\t\tif (chromosome.endAngle != null) {\n\t\t\t\tlastAngle = chromosome.endAngle\n\t\t\t}\n\t\t}\n\t}\n}\n", "import Data from './Data.ts'\n\nexport default class DataObjectMapper {\n\tprivate sampleName: string\n\tprivate prioritizedGenes: Array<string>\n\n\tconstructor(sampleName: string, prioritizedGenes: Array<string>) {\n\t\tthis.sampleName = sampleName\n\t\tthis.prioritizedGenes = prioritizedGenes\n\t}\n\n\tmap(dObject: any): Data {\n\t\treturn {\n\t\t\tdt: dObject.dt,\n\t\t\tmname: dObject.mname,\n\t\t\tmClass: dObject.class,\n\t\t\tgene: dObject.gene,\n\t\t\tchr: dObject.chr,\n\t\t\tref: dObject.ref,\n\t\t\talt: dObject.alt,\n\t\t\tposition: dObject.pos ? dObject.pos : dObject.position,\n\t\t\tposchr: dObject.poschr,\n\t\t\tposbins: dObject.posbins,\n\t\t\tposlabel: dObject.poslabel,\n\t\t\tsampleName: this.sampleName,\n\t\t\tssm_id: dObject.ssm_id,\n\t\t\tstart: dObject.start,\n\t\t\tstop: dObject.stop,\n\t\t\tvalue: dObject.value,\n\t\t\tsegmean: dObject.segmean,\n\t\t\tisPrioritized: this.prioritizedGenes.some(cancerGene => cancerGene == dObject.gene),\n\t\t\tchrA: dObject.chrA,\n\t\t\tchrB: dObject.chrB,\n\t\t\tgeneA: dObject.geneA,\n\t\t\tgeneB: dObject.geneB,\n\t\t\tposA: dObject.posA,\n\t\t\tposB: dObject.posB,\n\t\t\tstrandA: dObject.strandA,\n\t\t\tstrandB: dObject.strandB\n\t\t}\n\t}\n}\n", "import Data from '#plots/disco/data/Data.ts'\n\nexport class PercentileMapper {\n\tmap(data: Array<number>, percentile: number) {\n\t\treturn this.calculatePercentileForPositivesAndNegatives(data, percentile)\n\t}\n\n\tprivate calculatePercentileForPositivesAndNegatives(\n\t\tdata: Array<number>,\n\t\tpercentile: number\n\t): {\n\t\tpositive: number\n\t\tnegative: number\n\t} {\n\t\t// Filter positive and negative numbers\n\t\tconst positives = data.filter(x => x > 0)\n\t\tconst negatives = data.filter(x => x < 0).map(x => -1 * x)\n\n\t\tlet positive = NaN\n\t\tlet negative = NaN\n\n\t\tif (positives.length > 0) {\n\t\t\tpositive = this.calculatePercentile(positives, percentile)\n\t\t}\n\n\t\tif (negatives.length > 0) {\n\t\t\tnegative = -1 * this.calculatePercentile(negatives, percentile)\n\t\t}\n\n\t\treturn { positive: positive, negative: negative }\n\t}\n\n\tprivate calculatePercentile(data: Array<number>, percentile: number): number {\n\t\tif (data.length === 0) {\n\t\t\tthrow new Error('Array must contain at least one element.')\n\t\t}\n\n\t\tconst sortedValues = data.sort((a, b) => a - b)\n\t\tconst index = (percentile / 100) * (sortedValues.length - 1)\n\n\t\tconst lowerIndex = Math.floor(index)\n\t\tconst upperIndex = Math.ceil(index)\n\t\tconst fraction = index - lowerIndex\n\n\t\tif (lowerIndex === upperIndex) {\n\t\t\treturn sortedValues[lowerIndex]\n\t\t}\n\n\t\treturn sortedValues[lowerIndex] + fraction * (sortedValues[upperIndex] - sortedValues[lowerIndex])\n\t}\n}\n", "import Data from './Data.ts'\nimport Reference from '#plots/disco/chromosome/Reference.ts'\nimport DataObjectMapper from './DataObjectMapper.ts'\nimport Settings from '#plots/disco/Settings.ts'\nimport { ViewModelMapper } from '#plots/disco/viewmodel/ViewModelMapper.ts'\nimport { DataHolder } from '#plots/disco/data/DataHolder.ts'\nimport { dtsnvindel, dtfusionrna, dtsv, dtcnv, dtloh } from '#shared/common.js'\nimport { PercentileMapper } from '#plots/disco/data/PercentileMapper.ts'\n\nexport default class DataMapper {\n\t// remove fields and extract filters to seperate classes\n\n\tprivate labelData: Array<Data> = []\n\n\tprivate nonExonicSnvData: Array<Data> = []\n\tprivate nonExonicInnerRadius = 0\n\n\tprivate snvRingDataMap: Map<number, Array<Data>> = new Map()\n\tprivate snvInnerRadius = 0\n\n\tprivate snvData: Array<Data> = []\n\tprivate bpx = 0\n\tprivate onePxArcAngle = 0\n\tprivate filteredSnvData: Array<Data> = []\n\n\tprivate lohData: Array<Data> = []\n\tprivate lohInnerRadius = 0\n\n\tprivate cnvData: Array<Data> = []\n\tprivate cnvInnerRadius = 0\n\n\tprivate fusionData: Array<Data> = []\n\tprivate fusionRadius = 0\n\n\tprivate hasPrioritizedGenes = false\n\n\tprivate cnvLossMaxValue = 0\n\tprivate cnvGainMaxValue = 0\n\tprivate gainCapped: number\n\tprivate lossCapped: number\n\tprivate cappedCnvMaxAbsValue?: number\n\tprivate percentilePositive = 0\n\tprivate percentileNegative = 0\n\tprivate cnvMaxPercentileAbs = 0\n\n\tprivate lohMaxValue?: number = undefined\n\tprivate lohMinValue?: number = undefined\n\n\tprivate settings: Settings\n\tprivate reference: Reference\n\tprivate sample: string\n\n\tprivate nonExonicFilter: (data: Data) => boolean\n\tprivate snvRingFilter: (data: Data) => boolean\n\tprivate dataObjectMapper: DataObjectMapper\n\tprivate lastInnerRadious: number\n\n\tprivate snvFilter = (data: Data) => data.dt == dtsnvindel\n\tprivate fusionFilter = (data: Data) => data.dt == dtfusionrna || data.dt == dtsv\n\n\tprivate cnvFilter = (data: Data) => data.dt == dtcnv\n\tprivate lohFilter = (data: Data) => data.dt == dtloh\n\n\tprivate compareData = (a, b) => {\n\t\tconst chrDiff = this.reference.chromosomesOrder.indexOf(a.chr) - this.reference.chromosomesOrder.indexOf(b.chr)\n\t\tif (chrDiff != 0) {\n\t\t\treturn chrDiff\n\t\t}\n\n\t\tconst aPos = a.pos ? a.pos : a.start\n\n\t\tconst bPos = b.pos ? b.pos : b.start\n\n\t\treturn aPos - bPos\n\t}\n\n\tconstructor(settings: Settings, reference: Reference, sample: string, prioritizedGenes: Array<string> = []) {\n\t\tthis.settings = settings\n\t\tthis.reference = reference\n\t\tthis.sample = sample\n\t\tthis.lastInnerRadious = this.settings.rings.chromosomeInnerRadius\n\n\t\tthis.gainCapped = this.settings.Disco.cnvCapping\n\t\tthis.lossCapped = -1 * this.settings.Disco.cnvCapping\n\n\t\tthis.nonExonicFilter = (data: Data) => {\n\t\t\tif (prioritizedGenes.length > 0 && this.settings.Disco.prioritizeGeneLabelsByGeneSets) {\n\t\t\t\treturn (\n\t\t\t\t\tprioritizedGenes.includes(data.gene) &&\n\t\t\t\t\tsettings.rings.nonExonicFilterValues.includes(ViewModelMapper.snvClassLayer[data.mClass])\n\t\t\t\t)\n\t\t\t} else {\n\t\t\t\treturn settings.rings.nonExonicFilterValues.includes(ViewModelMapper.snvClassLayer[data.mClass])\n\t\t\t}\n\t\t}\n\n\t\tthis.snvRingFilter = (data: Data) => {\n\t\t\tif (prioritizedGenes.length > 0 && this.settings.Disco.prioritizeGeneLabelsByGeneSets) {\n\t\t\t\treturn (\n\t\t\t\t\tprioritizedGenes.includes(data.gene) &&\n\t\t\t\t\tsettings.rings.snvRingFilters.includes(ViewModelMapper.snvClassLayer[data.mClass])\n\t\t\t\t)\n\t\t\t} else {\n\t\t\t\treturn settings.rings.snvRingFilters.includes(ViewModelMapper.snvClassLayer[data.mClass])\n\t\t\t}\n\t\t}\n\n\t\tthis.dataObjectMapper = new DataObjectMapper(sample, prioritizedGenes)\n\t}\n\n\tmap(data: any) {\n\t\tconst dataArray: Array<Data> = []\n\n\t\tdata.forEach(dObject => {\n\t\t\tconst index = this.reference.chromosomesOrder.indexOf(dObject.chr)\n\t\t\tconst indexA = this.reference.chromosomesOrder.indexOf(dObject.chrA)\n\t\t\tconst indexB = this.reference.chromosomesOrder.indexOf(dObject.chrB)\n\n\t\t\tif (dObject.dt == dtsnvindel) {\n\t\t\t\tif (index != -1 && this.snvData.length < this.settings.snv.maxMutationCount) {\n\t\t\t\t\tthis.addData(dObject, dataArray)\n\t\t\t\t}\n\t\t\t} else if (dObject.dt == dtfusionrna || dObject.dt == dtsv) {\n\t\t\t\tif (indexA != -1 && indexB != -1) {\n\t\t\t\t\tthis.addData(dObject, dataArray)\n\t\t\t\t}\n\t\t\t} else if ([dtcnv, dtloh].includes(Number(dObject.dt))) {\n\t\t\t\tthis.addData(dObject, dataArray)\n\t\t\t} else {\n\t\t\t\tthrow Error('Unknown mutation type!')\n\t\t\t}\n\t\t})\n\n\t\tconst sortedData = dataArray.sort(this.compareData)\n\n\t\tif (this.settings.rings.nonExonicRingEnabled) {\n\t\t\tsortedData.forEach(data => {\n\t\t\t\tthis.filterNonExonicSnvData(data)\n\t\t\t})\n\t\t}\n\n\t\tif (this.nonExonicSnvData.length > 0) {\n\t\t\tthis.nonExonicInnerRadius = this.lastInnerRadious - this.settings.rings.nonExonicRingWidth\n\t\t\tthis.lastInnerRadious = this.nonExonicInnerRadius\n\t\t}\n\n\t\tsortedData.forEach(data => {\n\t\t\tthis.filterSnvs(data)\n\t\t})\n\n\t\tsortedData.forEach(data => {\n\t\t\tthis.filterLohs(data)\n\t\t})\n\n\t\tif (this.lohData.length > 0) {\n\t\t\tthis.lohInnerRadius = this.lastInnerRadious - this.settings.rings.lohRingWidth\n\t\t\tthis.lastInnerRadious = this.lohInnerRadius\n\t\t}\n\n\t\tsortedData.forEach(data => {\n\t\t\tthis.filterCnvs(data)\n\t\t})\n\n\t\tif (this.cnvData.length > 0) {\n\t\t\tthis.cnvInnerRadius = this.lastInnerRadious - this.settings.rings.cnvRingWidth\n\t\t\tthis.lastInnerRadious = this.cnvInnerRadius\n\n\t\t\tthis.cappedCnvMaxAbsValue = Math.min(\n\t\t\t\tthis.settings.Disco.cnvCapping,\n\t\t\t\tMath.max(\n\t\t\t\t\tMath.abs(DataMapper.capMaxValue(this.cnvLossMaxValue, this.gainCapped, this.lossCapped)),\n\t\t\t\t\tMath.abs(DataMapper.capMaxValue(this.cnvGainMaxValue, this.gainCapped, this.lossCapped))\n\t\t\t\t)\n\t\t\t)\n\n\t\t\tconst percentilePair = new PercentileMapper().map(\n\t\t\t\tthis.cnvData.map(data => data.value),\n\t\t\t\tthis.settings.Disco.cnvPercentile\n\t\t\t)\n\t\t\tthis.percentilePositive = DataMapper.capMaxValue(percentilePair.positive, this.gainCapped, this.lossCapped)\n\t\t\tthis.percentileNegative = DataMapper.capMaxValue(percentilePair.negative, this.gainCapped, this.lossCapped)\n\n\t\t\tthis.cnvMaxPercentileAbs = Math.min(\n\t\t\t\tthis.settings.Disco.cnvCapping,\n\t\t\t\tMath.max(this.percentilePositive, Math.abs(this.percentileNegative))\n\t\t\t)\n\t\t}\n\n\t\tsortedData.forEach(data => {\n\t\t\tthis.filterFusion(data)\n\t\t})\n\n\t\tif (this.fusionData.length > 0) {\n\t\t\tthis.fusionRadius = this.lastInnerRadious\n\t\t}\n\n\t\tconst dataHolder: DataHolder = {\n\t\t\tlabelData: this.labelData,\n\t\t\tnonExonicSnvData: this.nonExonicSnvData,\n\t\t\tnonExonicInnerRadius: this.nonExonicInnerRadius,\n\t\t\tsnvRingDataMap: this.snvRingDataMap,\n\t\t\tsnvInnerRadius: this.snvInnerRadius,\n\n\t\t\tsnvData: this.snvData,\n\t\t\tbpx: this.bpx,\n\t\t\tonePxArcAngle: this.onePxArcAngle,\n\t\t\tfilteredSnvData: this.filteredSnvData,\n\n\t\t\tlohData: this.lohData,\n\t\t\tlohInnerRadius: this.lohInnerRadius,\n\n\t\t\tcnvData: this.cnvData,\n\t\t\tcnvInnerRadius: this.cnvInnerRadius,\n\n\t\t\tfusionData: this.fusionData,\n\t\t\tfusionRadius: this.fusionRadius,\n\n\t\t\thasPrioritizedGenes: this.hasPrioritizedGenes,\n\n\t\t\tcnvGainMaxValue: this.cnvGainMaxValue,\n\t\t\tcnvLossMaxValue: this.cnvLossMaxValue,\n\t\t\tcappedCnvMaxAbsValue: this.cappedCnvMaxAbsValue,\n\t\t\tpercentilePositive: this.percentilePositive,\n\t\t\tpercentileNegative: this.percentileNegative,\n\t\t\tcnvMaxPercentileAbs: this.cnvMaxPercentileAbs,\n\n\t\t\tlohMaxValue: this.lohMaxValue,\n\t\t\tlohMinValue: this.lohMinValue\n\t\t}\n\n\t\treturn dataHolder\n\t}\n\n\tprivate addData(dObject, dataArray: Array<Data>) {\n\t\tconst instance = this.dataObjectMapper.map(dObject)\n\n\t\tif (instance.isPrioritized) {\n\t\t\tthis.hasPrioritizedGenes = true\n\t\t}\n\n\t\tdataArray.push(instance)\n\t}\n\n\tprivate filterNonExonicSnvData(data: Data) {\n\t\tif (this.snvFilter(data)) {\n\t\t\tif (this.settings.rings.nonExonicRingEnabled && this.nonExonicFilter(data)) {\n\t\t\t\tthis.nonExonicSnvData.push(data)\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate filterSnvs(data: Data) {\n\t\tif (this.snvFilter(data)) {\n\t\t\tthis.snvData.push(data)\n\n\t\t\tif (this.snvRingFilter(data)) {\n\t\t\t\tif (this.snvInnerRadius == 0) {\n\t\t\t\t\tthis.snvInnerRadius = this.lastInnerRadious - this.settings.rings.snvRingWidth\n\t\t\t\t\tthis.lastInnerRadious = this.snvInnerRadius\n\n\t\t\t\t\t// number of base pairs per pixel\n\t\t\t\t\t// TODO verify place of bpx calculation\n\t\t\t\t\tthis.bpx = Math.floor(this.reference.totalSize / (this.reference.totalChromosomesAngle * this.snvInnerRadius))\n\t\t\t\t\tthis.onePxArcAngle = 1 / this.snvInnerRadius\n\t\t\t\t}\n\n\t\t\t\tthis.filteredSnvData.push(data)\n\t\t\t\tthis.labelData.push(data)\n\n\t\t\t\tconst arcAngle = this.calculateArcAngle(data)\n\t\t\t\tlet dataArray = this.snvRingDataMap.get(arcAngle)\n\t\t\t\tif (!dataArray) {\n\t\t\t\t\tdataArray = new Array<Data>()\n\t\t\t\t}\n\t\t\t\tdataArray.push(data)\n\t\t\t\tthis.snvRingDataMap.set(arcAngle, dataArray)\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate filterFusion(data: Data) {\n\t\tif (this.fusionFilter(data)) {\n\t\t\tdata.isPrioritized = true\n\t\t\tthis.fusionData.push(data)\n\t\t\tthis.labelData.push(data)\n\t\t}\n\t}\n\n\tprivate filterLohs(data: Data) {\n\t\tif (this.lohFilter(data)) {\n\t\t\tif (this.lohMaxValue == undefined || this.lohMaxValue < data.value) {\n\t\t\t\tthis.lohMaxValue = data.segmean\n\t\t\t}\n\n\t\t\tif (this.lohMinValue == undefined || this.lohMinValue > data.value) {\n\t\t\t\tthis.lohMinValue = data.segmean\n\t\t\t}\n\n\t\t\tthis.lohData.push(data)\n\t\t}\n\t}\n\n\tprivate filterCnvs(data: Data) {\n\t\tif (this.cnvFilter(data)) {\n\t\t\tif (this.cnvGainMaxValue == undefined || this.cnvGainMaxValue < data.value) {\n\t\t\t\tthis.cnvGainMaxValue = data.value\n\t\t\t}\n\n\t\t\tif (this.cnvLossMaxValue == undefined || this.cnvLossMaxValue > data.value) {\n\t\t\t\tthis.cnvLossMaxValue = data.value\n\t\t\t}\n\n\t\t\tthis.cnvData.push(data)\n\t\t}\n\t}\n\n\tprivate calculateArcAngle(data: Data) {\n\t\tconst currentChromosome =\n\t\t\tthis.reference.chromosomes[\n\t\t\t\tthis.reference.chromosomesOrder.findIndex(chromosomeOrder => data.chr == chromosomeOrder)\n\t\t\t]\n\n\t\tconst dataAnglePos = Math.floor(data.position / this.bpx)\n\n\t\treturn currentChromosome.startAngle + dataAnglePos * this.onePxArcAngle\n\t}\n\n\tstatic capMaxValue(value: number, gainCapped: number, lossCapped: number) {\n\t\tif (value && Math.sign(value) == 1) {\n\t\t\treturn value > gainCapped ? gainCapped : value\n\t\t}\n\n\t\tif (Math.sign(value) == -1) {\n\t\t\treturn value < lossCapped ? lossCapped : value\n\t\t}\n\n\t\treturn 0\n\t}\n\n\tstatic capMinValue(value: number, capMinValue = 1) {\n\t\tif (Math.sign(value) == 1) {\n\t\t\treturn value > capMinValue ? value : capMinValue\n\t\t}\n\n\t\tif (Math.sign(value) == -1) {\n\t\t\treturn value < -1 * capMinValue ? value : -1 * capMinValue\n\t\t}\n\n\t\treturn 1\n\t}\n}\n", "import SnvLegendElement from '#plots/disco/snv/SnvLegendElement.ts'\nimport CnvLegend from '#plots/disco/cnv/CnvLegend.ts'\nimport LohLegend from '#plots/disco/loh/LohLegend.ts'\nimport { CnvType } from '#plots/disco/cnv/CnvType.ts'\n\nexport default class Legend {\n\tsnvTitle: string\n\tsnvClassMap: Map<string, SnvLegendElement>\n\n\tcnvTitle: string\n\tcnvClassMap: Map<CnvType, CnvLegend>\n\n\tlohTitle: string\n\tlohLegend?: LohLegend\n\n\tfusionTitle: string\n\tfusionLegend: boolean\n\tcnvRenderingType: string\n\n\tconstructor(\n\t\tsnvTitle: string,\n\t\tcnvTitle: string,\n\t\tlohTitle: string,\n\t\tfusionTitle: string,\n\t\tsnvClassMap: Map<string, SnvLegendElement>,\n\t\tcnvClassMap: Map<CnvType, CnvLegend>,\n\t\tcnvRenderingType: string,\n\t\tfusionLegend: boolean,\n\t\tlohLegend?: LohLegend\n\t) {\n\t\tthis.snvTitle = snvTitle\n\t\tthis.cnvTitle = cnvTitle\n\t\tthis.lohTitle = lohTitle\n\t\tthis.fusionTitle = fusionTitle\n\t\tthis.snvClassMap = snvClassMap\n\t\tthis.cnvClassMap = cnvClassMap\n\t\tthis.cnvRenderingType = cnvRenderingType\n\t\tthis.lohLegend = lohLegend\n\t\tthis.fusionLegend = fusionLegend\n\t}\n\n\tlegendCount(): number {\n\t\treturn (\n\t\t\t(this.snvClassMap.size > 0 ? 1 : 0) +\n\t\t\t(this.cnvClassMap.size > 0 ? 1 : 0) +\n\t\t\t(this.lohLegend ? 1 : 0) +\n\t\t\t(this.fusionLegend ? 1 : 0)\n\t\t)\n\t}\n}\n", "import { Ribbon } from 'd3'\nimport FusionSubgroup from './FusionSubgroup.ts'\n\nexport default class Fusion implements Ribbon {\n\tsource: FusionSubgroup\n\ttarget: FusionSubgroup\n\tgenes: string\n\tcount: number\n\tendpts: string\n\n\tconstructor(source: FusionSubgroup, target: FusionSubgroup, genes: string, count: number, endpts: string) {\n\t\tthis.source = source\n\t\tthis.target = target\n\t\tthis.genes = genes\n\t\tthis.count = count\n\t\tthis.endpts = endpts\n\t}\n}\n", "import { RibbonSubgroup } from 'd3'\nimport PositionInChromosome from './PositionInChromosome.ts'\n\nexport default class FusionSubgroup implements RibbonSubgroup {\n\tstartAngle: number\n\tendAngle: number\n\tradius: number\n\n\tgene: string\n\tvalue: number\n\tgenes: Set<string>\n\tpositionInChromosome: PositionInChromosome\n\tstrand: string\n\n\tconstructor(\n\t\tstartAngle: number,\n\t\tendAngle: number,\n\t\tradius: number,\n\t\tgene: string,\n\t\tvalue: number,\n\t\tgenes: Set<string>,\n\t\tpositionInChromosome: PositionInChromosome,\n\t\tstrand: string\n\t) {\n\t\tthis.startAngle = startAngle\n\t\tthis.endAngle = endAngle\n\t\tthis.radius = radius\n\t\tthis.gene = gene\n\t\tthis.value = value\n\t\tthis.genes = genes\n\t\tthis.positionInChromosome = positionInChromosome\n\t\tthis.strand = strand\n\t}\n}\n", "import Reference from '#plots/disco/chromosome/Reference.ts'\nimport Data from '#plots/disco/data/Data.ts'\nimport Fusion from './Fusion.ts'\nimport FusionSubgroup from './FusionSubgroup.ts'\n\nexport default class FusionMapper {\n\tprivate radius: number\n\tprivate sampleName: string\n\tprivate reference: Reference\n\n\tconstructor(radius: number, sampleName: string, reference: Reference) {\n\t\tthis.radius = radius\n\t\tthis.sampleName = sampleName\n\t\tthis.reference = reference\n\t}\n\n\tmap(fusionData: Array<Data>): Array<Fusion> {\n\t\tconst fusions: Array<Fusion> = []\n\n\t\tfusionData.forEach(data => {\n\t\t\tconst genes = new Set<string>()\n\t\t\tgenes.add(data.geneA)\n\t\t\tgenes.add(data.geneB)\n\n\t\t\tconst source = new FusionSubgroup(\n\t\t\t\tthis.calculateStartAngle(data.chrA, data.posA),\n\t\t\t\tthis.calculateEndAngle(data.chrA, data.posA),\n\t\t\t\tthis.radius,\n\t\t\t\tdata.geneA,\n\t\t\t\tdata.value,\n\t\t\t\tgenes,\n\t\t\t\t{\n\t\t\t\t\tchromosome: data.chrA,\n\t\t\t\t\tposition: data.posA\n\t\t\t\t},\n\t\t\t\tdata.strandA\n\t\t\t)\n\n\t\t\tconst target = new FusionSubgroup(\n\t\t\t\tthis.calculateStartAngle(data.chrB, data.posB),\n\t\t\t\tthis.calculateEndAngle(data.chrB, data.posB),\n\t\t\t\tthis.radius,\n\t\t\t\tdata.geneB,\n\t\t\t\tdata.value,\n\t\t\t\tgenes,\n\t\t\t\t{\n\t\t\t\t\tchromosome: data.chrB,\n\t\t\t\t\tposition: data.posB\n\t\t\t\t},\n\t\t\t\tdata.strandB\n\t\t\t)\n\n\t\t\tconst fusion = new Fusion(source, target, 'genes', -1, 'Endpoints')\n\n\t\t\tfusions.push(fusion)\n\t\t})\n\n\t\treturn fusions\n\t}\n\n\tcalculateStartAngle(chr: string, pos: number) {\n\t\tconst index = this.reference.chromosomesOrder.indexOf(chr)\n\t\tconst chromosome = this.reference.chromosomes[index]\n\t\t// TODO calculate 0.01 base on BPs\n\t\treturn (\n\t\t\tchromosome.startAngle + (chromosome.endAngle - chromosome.startAngle) * (Number(pos) / chromosome.size) - 0.01\n\t\t)\n\t}\n\n\tprivate calculateEndAngle(chr: string, pos: number) {\n\t\tconst index = this.reference.chromosomesOrder.indexOf(chr)\n\t\tconst chromosome = this.reference.chromosomes[index]\n\t\t// TODO calculate 0.01 base on BPs\n\t\treturn (\n\t\t\t0.01 + chromosome.startAngle + (chromosome.endAngle - chromosome.startAngle) * (Number(pos) / chromosome.size)\n\t\t)\n\t}\n}\n", "export default class GradientColorProvider {\n static provide(value: number): string {\n const clampedValue = Math.min(Math.max(value, 0), 1);\n\n const colorValue = Math.round(clampedValue * 255);\n\n return `rgb(${colorValue}, ${colorValue}, ${colorValue})`;\n }\n}", "import GradientColorProvider from './GradientColorProvider.ts'\n\nexport default class LohLegend {\n\tminValue: number\n\tmaxValue: number\n\tcolorStartValue: string\n\tcolorEndValue: string\n\tconstructor(minValue: number, maxValue: number) {\n\t\tthis.minValue = minValue\n\t\tthis.maxValue = maxValue\n\t\tthis.colorStartValue = GradientColorProvider.provide(minValue)\n\t\tthis.colorEndValue = GradientColorProvider.provide(maxValue)\n\t}\n}\n", "import Rings from '#plots/disco/ring/Rings.ts'\nimport Legend from '#plots/disco/legend/Legend.ts'\nimport { RingType } from '#plots/disco/ring/RingType.ts'\nimport Arc from '#plots/disco/arc/Arc.ts'\nimport Settings from '#plots/disco/Settings.ts'\nimport Fusion from '#plots/disco/fusion/Fusion.ts'\nimport { DataHolder } from '#plots/disco/data/DataHolder.ts'\n\nexport default class ViewModel {\n\twidth: number\n\theight: number\n\tlegendHeight: number\n\n\trings: Rings\n\tlegend: Legend\n\n\tfusions: Array<Fusion>\n\n\tsettings: Settings\n\tsnvDataLength: number\n\tfilteredSnvDataLength: number\n\tsnvDataLengthAll: number\n\tgenesetName: string\n\tcnvMaxValue?: number\n\tcnvMinValue?: number\n\tcappedCnvMaxAbsValue?: number\n\tnegativePercentile80?: number\n\tpositivePercentile80?: number\n\n\tconstructor(\n\t\tsettings: Settings,\n\t\trings: Rings,\n\t\tlegend: Legend,\n\t\tfusions: Array<Fusion>,\n\t\tdataHolder: DataHolder,\n\t\tgenesetName: string,\n\t\t// TODO do we need this?\n\t\tsnvDataLengthAll: number\n\t) {\n\t\tthis.settings = settings\n\t\tthis.rings = rings\n\t\tthis.legend = legend\n\t\tthis.fusions = fusions\n\t\tthis.genesetName = genesetName\n\n\t\tthis.width =\n\t\t\t1.2 *\n\t\t\t(this.settings.horizontalPadding +\n\t\t\t\tthis.settings.rings.labelLinesInnerRadius +\n\t\t\t\tthis.settings.rings.labelsToLinesDistance)\n\t\tthis.height =\n\t\t\t2 *\n\t\t\t(this.settings.rings.labelLinesInnerRadius +\n\t\t\t\tthis.settings.rings.labelsToLinesDistance +\n\t\t\t\tthis.settings.verticalPadding)\n\n\t\tthis.legendHeight = this.calculateLegendHeight(legend)\n\t\tthis.snvDataLength = dataHolder.snvData.length\n\t\tthis.filteredSnvDataLength = dataHolder.filteredSnvData.length\n\t\tthis.snvDataLengthAll = snvDataLengthAll\n\n\t\tthis.cnvMaxValue = dataHolder.cnvGainMaxValue\n\t\tthis.cnvMinValue = dataHolder.cnvLossMaxValue\n\t\tthis.cappedCnvMaxAbsValue = dataHolder.cappedCnvMaxAbsValue\n\t\tthis.negativePercentile80 = dataHolder.percentileNegative\n\t\tthis.positivePercentile80 = dataHolder.percentilePositive\n\t}\n\n\tgetElements(ringType: RingType): Array<Arc> {\n\t\tswitch (ringType) {\n\t\t\tcase RingType.CHROMOSOME:\n\t\t\t\treturn this.rings.chromosomesRing ? this.rings.chromosomesRing.elements : []\n\t\t\tcase RingType.LABEL:\n\t\t\t\treturn this.rings.labelsRing.elementsToDisplay\n\t\t\tcase RingType.NONEXONICSNV:\n\t\t\t\treturn this.rings.nonExonicArcRing ? this.rings.nonExonicArcRing.elements : []\n\t\t\tcase RingType.SNV:\n\t\t\t\treturn this.rings.snvArcRing ? this.rings.snvArcRing.elements : []\n\t\t\tcase RingType.CNV:\n\t\t\t\treturn this.rings.cnvArcRing ? this.rings.cnvArcRing.elements : []\n\t\t\tcase RingType.LOH:\n\t\t\t\treturn this.rings.lohArcRing ? this.rings.lohArcRing.elements : []\n\t\t\tdefault:\n\t\t\t\tthrow new Error(`ringType ${ringType} not defined`)\n\t\t}\n\t}\n\n\tgetCollisions(ringType: RingType): Array<Arc> | undefined {\n\t\tif (ringType == RingType.LABEL) {\n\t\t\treturn this.rings.labelsRing.collisions\n\t\t} else {\n\t\t\treturn undefined\n\t\t}\n\t}\n\n\tprivate calculateLegendHeight(legend: Legend): number {\n\t\tconst rawHeight = this.settings.legend.rowHeight\n\n\t\treturn rawHeight * legend.legendCount()\n\t}\n}\n", "import Arc from '#plots/disco/arc/Arc.ts'\n\nexport default class Ring<T extends Arc> {\n\twidth: number\n\n\tinnerRadius: number\n\touterRadius: number\n\n\telements: Array<T>\n\n\tconstructor(innerRadius: number, width: number, elements: Array<T>) {\n\t\tthis.innerRadius = innerRadius\n\t\tthis.outerRadius = innerRadius + width\n\t\tthis.width = width\n\t\tthis.elements = elements\n\t}\n}\n", "import { mclass } from '#shared/common.js'\nexport default class MLabel {\n\tprivate static instance: MLabel\n\treadonly mlabel\n\n\t/**\n\t * The Singleton's constructor should always be private to prevent direct\n\t * construction calls with the `new` operator.\n\t */\n\tprivate constructor() {\n\t\tconst mlabel = {}\n\t\tfor (const key in mclass) {\n\t\t\tmlabel[mclass[key].label] = mclass[key]\n\t\t\tmlabel[key] = mclass[key]\n\t\t}\n\n\t\tthis.mlabel = mlabel\n\t}\n\n\t/**\n\t * The static method that controls the access to the singleton instance.\n\t *\n\t * This implementation let you subclass the Singleton class while keeping\n\t * just one instance of each subclass around.\n\t */\n\tpublic static getInstance(): MLabel {\n\t\tif (!MLabel.instance) {\n\t\t\tMLabel.instance = new MLabel()\n\t\t}\n\n\t\treturn MLabel.instance\n\t}\n}\n", "export default class SnvLegendElement {\n snvType: string\n color: string\n count: number;\n\n constructor(snvType: string, color: string, count: number) {\n this.snvType = snvType;\n this.color = color;\n this.count = count\n }\n}", "import Reference from '#plots/disco/chromosome/Reference.ts'\nimport Data from '#plots/disco/data/Data.ts'\nimport SnvArc from './SnvArc.ts'\nimport MLabel from '#plots/disco/label/MLabel.ts'\nimport SnvLegendElement from './SnvLegendElement.ts'\n\nexport default class SnvArcsMapper {\n\tsnvClassMap: Map<string, SnvLegendElement> = new Map()\n\n\tprivate sampleName: string\n\tprivate reference: Reference\n\n\tprivate onePxArcAngle: number\n\tprivate bpx: number\n\tprivate svnInnerRadius: number\n\tprivate svnWidth: number\n\n\tconstructor(svnInnerRadius: number, svnWidth: number, sampleName: string, reference: Reference) {\n\t\tthis.svnInnerRadius = svnInnerRadius\n\t\tthis.svnWidth = svnWidth\n\t\tthis.sampleName = sampleName\n\t\tthis.reference = reference\n\n\t\t// number of base pairs per pixel\n\t\tthis.bpx = Math.floor(this.reference.totalSize / (this.reference.totalChromosomesAngle * svnInnerRadius))\n\t\tthis.onePxArcAngle = 1 / svnInnerRadius\n\t}\n\n\tmap(exonicSnvDataMap: Map<number, Array<Data>>): Array<SnvArc> {\n\t\tconst snvArray: Array<SnvArc> = []\n\t\tfor (const angle of exonicSnvDataMap.keys()) {\n\t\t\tconst array = exonicSnvDataMap.get(angle)\n\t\t\tif (array) {\n\t\t\t\tconst arraySize = array.length\n\n\t\t\t\tfor (let i = 0; i < array.length; i++) {\n\t\t\t\t\tconst data = array[i]\n\t\t\t\t\tconst snvLegendElement = this.snvClassMap.get(data.mClass)\n\t\t\t\t\tif (snvLegendElement) {\n\t\t\t\t\t\tthis.snvClassMap.set(data.mClass, this.createSnvLegend(data.mClass, ++snvLegendElement.count))\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.snvClassMap.set(data.mClass, this.createSnvLegend(data.mClass, 1))\n\t\t\t\t\t}\n\n\t\t\t\t\tconst startAngle = angle\n\t\t\t\t\tconst endAngle = angle + this.onePxArcAngle\n\n\t\t\t\t\tconst mLabel = MLabel.getInstance().mlabel ? MLabel.getInstance().mlabel[data.mClass] : undefined\n\n\t\t\t\t\tconst arc: SnvArc = {\n\t\t\t\t\t\tstartAngle: startAngle,\n\t\t\t\t\t\tendAngle: endAngle,\n\t\t\t\t\t\tinnerRadius: this.svnInnerRadius + (i * this.svnWidth) / arraySize,\n\t\t\t\t\t\touterRadius: this.svnInnerRadius + ((i + 1) * this.svnWidth) / arraySize,\n\t\t\t\t\t\tcolor: mLabel.color,\n\t\t\t\t\t\ttext: data.gene,\n\t\t\t\t\t\tdataClass: mLabel.label,\n\t\t\t\t\t\tmname: data.mname,\n\t\t\t\t\t\tchr: data.chr,\n\t\t\t\t\t\tpos: data.position,\n\t\t\t\t\t\tsampleName: [data.sampleName]\n\t\t\t\t\t}\n\t\t\t\t\tsnvArray.push(arc)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn snvArray\n\t}\n\n\tprivate createSnvLegend(dataClass: string, count: number) {\n\t\tconst mClass = MLabel.getInstance().mlabel[dataClass]\n\t\treturn new SnvLegendElement(mClass.label, mClass.color, count)\n\t}\n}\n", "import { CnvType } from './CnvType.ts'\n\nexport default class CnvLegend {\n\ttext: string\n\tcnvType: CnvType\n\tcolor: string\n\tvalue: number\n\n\tconstructor(text: string, cnvType: CnvType, color: string, value: number) {\n\t\tthis.text = text\n\t\tthis.cnvType = cnvType\n\t\tthis.color = color\n\t\tthis.value = value\n\t}\n}\n", "import Settings from '#plots/disco/Settings.ts'\nimport { CnvRenderingType } from '#plots/disco/cnv/CnvRenderingType.ts'\n\nexport default class CnvColorProvider {\n\tstatic getColor(value: number, settings: Settings, cnvMaxPercentileAbs = 0) {\n\t\tconst cnv = settings.cnv\n\t\tconst gainCapped =\n\t\t\tsettings.Disco.cnvRenderingType == CnvRenderingType.heatmap ? settings.Disco.cnvCapping : cnvMaxPercentileAbs\n\t\tconst lossCapped =\n\t\t\tsettings.Disco.cnvRenderingType == CnvRenderingType.heatmap\n\t\t\t\t? -1 * settings.Disco.cnvCapping\n\t\t\t\t: -1 * cnvMaxPercentileAbs\n\t\tif (value < lossCapped) {\n\t\t\treturn cnv.cappedLossColor\n\t\t} else if (value >= lossCapped && value <= 0) {\n\t\t\treturn cnv.lossColor\n\t\t} else if (value > 0 && value <= gainCapped) {\n\t\t\treturn cnv.ampColor\n\t\t} else {\n\t\t\treturn cnv.cappedAmpColor\n\t\t}\n\t}\n}\n", "import Data from '#plots/disco/data/Data.ts'\nimport Reference from '#plots/disco/chromosome/Reference.ts'\nimport CnvArc from './CnvArc.ts'\nimport CnvLegend from './CnvLegend.ts'\nimport { CnvType } from './CnvType.ts'\nimport Settings from '#plots/disco/Settings.ts'\nimport CnvColorProvider from '#plots/disco/cnv/CnvColorProvider.ts'\nimport { CnvRenderingType } from '#plots/disco/cnv/CnvRenderingType.ts'\nimport DataMapper from '#plots/disco/data/DataMapper.ts'\n\nexport default class CnvArcsMapper {\n\tcnvClassMap: Map<CnvType, CnvLegend> = new Map()\n\n\tprivate settings: Settings\n\tprivate sampleName: string\n\tprivate reference: Reference\n\tprivate cnvMaxValue: number\n\tprivate cnvMinValue: number\n\tprivate cnvUnit: string\n\n\tprivate onePxArcAngle: number\n\tprivate lossOnly: boolean\n\tprivate gainOnly: boolean\n\tprivate gainCapped: number\n\tprivate lossCapped: number\n\tprivate cnvMaxAbsValue: number\n\tprivate cnvInnerRadius: number\n\tprivate cnvWidth: number\n\tprivate cnvRenderingType: string\n\tprivate cnvAbsPercentile: number\n\n\tconstructor(\n\t\tcnvInnerRadius: number,\n\t\tcnvWidth: number,\n\t\tsettings: Settings,\n\t\tsampleName: string,\n\t\treference: Reference,\n\t\tcnvMaxValue = 0,\n\t\tcnvMinValue = 0,\n\t\tcnvMaxAbsValue = 0,\n\t\tcnvAbsPercentile = 0,\n\t\tcnvUnit = '',\n\t\tcnvRenderingType: string\n\t) {\n\t\tthis.cnvInnerRadius = cnvInnerRadius\n\t\tthis.cnvWidth = cnvWidth\n\t\tthis.settings = settings\n\t\tthis.sampleName = sampleName\n\t\tthis.reference = reference\n\t\tthis.cnvMaxValue = cnvMaxValue\n\t\tthis.cnvMinValue = cnvMinValue\n\t\tthis.cnvMaxAbsValue = cnvMaxAbsValue\n\t\tthis.cnvAbsPercentile = cnvAbsPercentile\n\t\tthis.cnvUnit = cnvUnit\n\t\tthis.cnvRenderingType = cnvRenderingType\n\n\t\tthis.gainCapped = Math.min(cnvAbsPercentile, this.settings.Disco.cnvCapping)\n\t\tthis.lossCapped = -1 * Math.min(cnvAbsPercentile, this.settings.Disco.cnvCapping)\n\n\t\tthis.lossOnly = cnvMaxValue <= 0\n\t\tthis.gainOnly = cnvMinValue >= 0\n\n\t\tthis.onePxArcAngle = 1 / this.cnvInnerRadius\n\n\t\tconst gain = new CnvLegend(\n\t\t\t'Max',\n\t\t\tcnvMaxValue > 0 ? CnvType.Gain : CnvType.Loss,\n\t\t\tthis.getColor(cnvMaxValue),\n\t\t\tcnvMaxValue\n\t\t)\n\t\tconst loss = new CnvLegend(\n\t\t\t'Min',\n\t\t\tcnvMinValue > 0 ? CnvType.Gain : CnvType.Loss,\n\t\t\tthis.getColor(cnvMinValue),\n\t\t\tcnvMinValue\n\t\t)\n\t\tconst cap = new CnvLegend(\n\t\t\t'Capping',\n\t\t\tCnvType.Loss,\n\t\t\tthis.getColor(cnvMinValue > 0 ? cnvMinValue : cnvMaxValue),\n\t\t\tthis.settings.Disco.cnvCapping\n\t\t)\n\n\t\tthis.cnvClassMap.set(CnvType.Gain, gain)\n\t\tthis.cnvClassMap.set(CnvType.Loss, loss)\n\t\tthis.cnvClassMap.set(CnvType.Cap, cap)\n\t}\n\n\tmap(arcData: Array<Data>): Array<CnvArc> {\n\t\tconst arcs: Array<CnvArc> = []\n\n\t\tarcData.forEach(data => {\n\t\t\tlet startAngle = this.calculateStartAngle(data)\n\t\t\tlet endAngle = this.calculateEndAngle(data)\n\n\t\t\tif (endAngle - startAngle < this.onePxArcAngle) {\n\t\t\t\tconst restAngle = this.onePxArcAngle - (endAngle - startAngle)\n\t\t\t\tstartAngle = startAngle - restAngle / 2\n\t\t\t\tendAngle = startAngle + restAngle / 2\n\t\t\t}\n\n\t\t\tconst innerRadius = this.calculateInnerRadius(data)\n\n\t\t\tconst outerRadius = this.calculateOuterRadius(data)\n\n\t\t\tconst color = this.getColor(data.value)\n\n\t\t\tconst arc: CnvArc = {\n\t\t\t\tstartAngle: startAngle,\n\t\t\t\tendAngle: endAngle,\n\t\t\t\tinnerRadius: innerRadius,\n\t\t\t\touterRadius: outerRadius,\n\t\t\t\tcolor: color,\n\t\t\t\ttext: data.gene,\n\t\t\t\tchr: data.chr,\n\t\t\t\tstart: data.start,\n\t\t\t\tstop: data.stop,\n\t\t\t\tvalue: data.value,\n\t\t\t\tunit: this.cnvUnit,\n\t\t\t\tsampleName: [this.sampleName]\n\t\t\t}\n\n\t\t\tarcs.push(arc)\n\t\t})\n\n\t\treturn arcs\n\t}\n\n\tcalculateStartAngle(data: Data) {\n\t\tconst index = this.reference.chromosomesOrder.indexOf(data.chr)\n\t\tconst chromosome = this.reference.chromosomes[index]\n\t\treturn (\n\t\t\tchromosome.startAngle + (chromosome.endAngle - chromosome.startAngle) * (Number(data.start) / chromosome.size)\n\t\t)\n\t}\n\n\tprivate calculateEndAngle(data: Data) {\n\t\tconst index = this.reference.chromosomesOrder.indexOf(data.chr)\n\t\tconst chromosome = this.reference.chromosomes[index]\n\t\treturn chromosome.startAngle + (chromosome.endAngle - chromosome.startAngle) * (Number(data.stop) / chromosome.size)\n\t}\n\n\tgetColor(value: number) {\n\t\treturn CnvColorProvider.getColor(value, this.settings, this.cnvAbsPercentile)\n\t}\n\n\tprivate calculateInnerRadius(data: Data) {\n\t\tif (this.cnvRenderingType == CnvRenderingType.heatmap) {\n\t\t\treturn this.cnvInnerRadius\n\t\t}\n\n\t\tif (this.gainOnly) {\n\t\t\treturn this.cnvInnerRadius\n\t\t}\n\n\t\tif (this.lossOnly) {\n\t\t\tconst outerRadius = this.cnvInnerRadius + this.cnvWidth\n\n\t\t\treturn (\n\t\t\t\touterRadius +\n\t\t\t\tDataMapper.capMinValue(\n\t\t\t\t\t(this.cnvWidth * DataMapper.capMaxValue(data.value, this.gainCapped, this.lossCapped)) / this.cnvAbsPercentile\n\t\t\t\t)\n\t\t\t)\n\t\t}\n\n\t\tconst centerRadius = this.cnvInnerRadius + this.cnvWidth / 2\n\n\t\tif (Math.sign(data.value) == 1) {\n\t\t\treturn centerRadius\n\t\t}\n\n\t\tif (Math.sign(data.value) == -1) {\n\t\t\treturn (\n\t\t\t\tcenterRadius +\n\t\t\t\tDataMapper.capMinValue(\n\t\t\t\t\t(DataMapper.capMaxValue(data.value, this.gainCapped, this.lossCapped) / this.cnvAbsPercentile) *\n\t\t\t\t\t\t(this.cnvWidth / 2)\n\t\t\t\t)\n\t\t\t)\n\t\t}\n\n\t\treturn 1\n\t}\n\n\tprivate calculateOuterRadius(data: Data) {\n\t\tconst maxOuterRadius = this.cnvInnerRadius + this.cnvWidth\n\n\t\tif (this.cnvRenderingType == CnvRenderingType.heatmap) {\n\t\t\treturn maxOuterRadius\n\t\t}\n\n\t\tif (this.gainOnly) {\n\t\t\treturn (\n\t\t\t\tthis.cnvInnerRadius +\n\t\t\t\tDataMapper.capMinValue(\n\t\t\t\t\t(this.cnvWidth * DataMapper.capMaxValue(data.value, this.gainCapped, this.lossCapped)) / this.cnvAbsPercentile\n\t\t\t\t)\n\t\t\t)\n\t\t}\n\n\t\tif (this.lossOnly) {\n\t\t\treturn maxOuterRadius\n\t\t}\n\n\t\tconst centerRadius = this.cnvInnerRadius + this.cnvWidth / 2\n\n\t\tif (Math.sign(data.value) == 1) {\n\t\t\treturn (\n\t\t\t\tcenterRadius +\n\t\t\t\tDataMapper.capMinValue(\n\t\t\t\t\t(DataMapper.capMaxValue(data.value, this.gainCapped, this.lossCapped) / this.cnvMaxAbsValue) *\n\t\t\t\t\t\t(this.cnvWidth / 2)\n\t\t\t\t)\n\t\t\t)\n\t\t}\n\n\t\tif (Math.sign(data.value) == -1) {\n\t\t\treturn centerRadius\n\t\t}\n\t\treturn 1\n\t}\n}\n", "import Point from './Point.ts'\n\nexport default class Line {\n\tcolor: string\n\tpoints = new Array<Point>()\n\n\tconstructor(points: Array<Point>, color: string) {\n\t\tthis.points = points\n\t\tthis.color = color\n\t}\n}\n", "import Label from './Label.ts'\nimport Point from './Point.ts'\nimport Line from './Line.ts'\nimport MutationTooltip from '#plots/disco/label/MutationTooltip.ts'\nimport FusionTooltip from '#plots/disco/fusion/FusionTooltip.ts'\n\nexport default class LabelFactory {\n\tstatic createLabel(\n\t\tstartAngle: number,\n\t\tendAngle: number,\n\t\tinnerRadius: number,\n\t\touterRadius: number,\n\t\tvalue: number,\n\t\tgene: string,\n\t\tcolor: string,\n\t\tdataClass: string,\n\t\tchr: string,\n\t\tposition: number,\n\t\tisPrioritized = false,\n\t\tlabelsToLinesGap: number,\n\t\tmutationTooltip?: MutationTooltip,\n\t\tfusionTooltip?: FusionTooltip\n\t) {\n\t\tconst angle = (startAngle + endAngle) / 2\n\t\tconst ccAngle = angle - Math.PI / 2\n\t\tconst transform = `rotate(${(angle * 180) / Math.PI - 90}) translate(${outerRadius})${\n\t\t\tangle > Math.PI ? 'rotate(180)' : ''\n\t\t}`\n\t\tconst textAnchor = angle > Math.PI ? 'end' : ''\n\t\tconst r0 = innerRadius\n\t\tconst r1 = outerRadius - labelsToLinesGap\n\n\t\tconst points: Array<Point> = []\n\t\tconst point0: Point = {\n\t\t\tx: r0 * Math.cos(ccAngle),\n\t\t\ty: r0 * Math.sin(ccAngle)\n\t\t}\n\t\tconst point1: Point = {\n\t\t\tx: r1 * Math.cos(ccAngle),\n\t\t\ty: r1 * Math.sin(ccAngle)\n\t\t}\n\n\t\tpoints.push(point0)\n\t\tpoints.push(point1)\n\n\t\tconst line = new Line(points, color)\n\n\t\tconst label: Label = {\n\t\t\tstartAngle,\n\t\t\tendAngle,\n\t\t\tinnerRadius,\n\t\t\touterRadius,\n\t\t\tangle,\n\t\t\tvalue,\n\t\t\ttext: gene,\n\t\t\tcolor,\n\t\t\ttransform,\n\t\t\ttextAnchor,\n\t\t\tccAngle,\n\t\t\tline,\n\t\t\tisPrioritized,\n\t\t\tstart: position,\n\t\t\tstop: position,\n\t\t\tchr: chr,\n\t\t\tmutationsTooltip: mutationTooltip ? [mutationTooltip] : undefined,\n\t\t\tfusionTooltip: fusionTooltip ? [fusionTooltip] : undefined\n\t\t}\n\n\t\treturn label\n\t}\n\n\tstatic createMovedLabel(element: Label, overlap: number): Label {\n\t\tconst startAngle = element.startAngle + overlap\n\t\tconst endAngle = element.endAngle + overlap\n\n\t\tconst angle = (startAngle + endAngle) / 2\n\t\tconst ccAngle = angle - Math.PI / 2\n\n\t\tconst r0 = element.innerRadius\n\t\tconst r1 = element.outerRadius - 2\n\t\tconst dr = (r1 - r0) / 3\n\t\tconst cos0 = Math.cos(element.ccAngle)\n\t\tconst sin0 = Math.sin(element.ccAngle)\n\t\tconst cos1 = Math.cos(element.ccAngle + overlap)\n\t\tconst sin1 = Math.sin(element.ccAngle + overlap)\n\n\t\tconst points: Array<Point> = []\n\n\t\tconst point0: Point = {\n\t\t\tx: r0 * cos0,\n\t\t\ty: r0 * sin0\n\t\t}\n\t\tconst point1: Point = {\n\t\t\tx: (r0 + dr) * cos0,\n\t\t\ty: (r0 + dr) * sin0\n\t\t}\n\t\tconst point2: Point = {\n\t\t\tx: (r0 + 2 * dr) * cos1,\n\t\t\ty: (r0 + 2 * dr) * sin1\n\t\t}\n\n\t\tconst point3: Point = {\n\t\t\tx: (r0 + 3 * dr) * cos1,\n\t\t\ty: (r0 + 3 * dr) * sin1\n\t\t}\n\n\t\tpoints.push(point0)\n\t\tpoints.push(point1)\n\t\tpoints.push(point2)\n\t\tpoints.push(point3)\n\n\t\tconst line = new Line(points, element.color)\n\n\t\tconst transform: string =\n\t\t\t'rotate(' +\n\t\t\t((angle * 180) / Math.PI - 90) +\n\t\t\t')' +\n\t\t\t'translate(' +\n\t\t\telement.outerRadius +\n\t\t\t')' +\n\t\t\t(angle > Math.PI ? 'rotate(180)' : '')\n\n\t\tconst textAnchor = angle > Math.PI ? 'end' : ''\n\n\t\tconst color = element.mutationsTooltip\n\t\t\t? element.mutationsTooltip[0].color\n\t\t\t: element.fusionTooltip\n\t\t\t? element.fusionTooltip[0].color\n\t\t\t: undefined\n\n\t\tconst label: Label = {\n\t\t\tstartAngle: startAngle,\n\t\t\tendAngle: endAngle,\n\t\t\tinnerRadius: element.innerRadius,\n\t\t\touterRadius: element.outerRadius,\n\t\t\tangle: angle,\n\t\t\tvalue: element.value,\n\t\t\ttext: element.text,\n\t\t\ttransform: transform,\n\t\t\ttextAnchor: textAnchor,\n\t\t\tccAngle: ccAngle,\n\t\t\tcolor: color,\n\t\t\tline: line,\n\t\t\tisPrioritized: element.isPrioritized,\n\t\t\tstart: element.start,\n\t\t\tstop: element.stop,\n\t\t\tchr: element.chr,\n\t\t\tmutationsTooltip: element.mutationsTooltip,\n\t\t\tfusionTooltip: element.fusionTooltip\n\t\t}\n\n\t\treturn label\n\t}\n}\n", "import Data from '#plots/disco/data/Data.ts'\nimport Reference from '#plots/disco/chromosome/Reference.ts'\nimport Label from './Label.ts'\nimport LabelFactory from './LabelFactory.ts'\nimport MLabel from './MLabel.ts'\nimport MutationTooltip from '#plots/disco/label/MutationTooltip.ts'\nimport Settings from '#plots/disco/Settings.ts'\nimport FusionColorProvider from '#plots/disco/fusion/FusionColorProvider.ts'\nimport FusionTooltip from '#plots/disco/fusion/FusionTooltip.ts'\nimport CnvTooltip from '#plots/disco/cnv/CnvTooltip.ts'\nimport CnvColorProvider from '#plots/disco/cnv/CnvColorProvider.ts'\nimport { dtsnvindel, dtfusionrna } from '#shared/common.js'\n\nexport default class LabelsMapper {\n\tprivate settings: Settings\n\tprivate sampleName: string\n\tprivate reference: Reference\n\n\tprivate labelMap: Map<string, Label> = new Map()\n\tprivate cnvMaxPercentileAbs: number\n\n\tconstructor(settings: Settings, sampleName: string, reference: Reference, cnvMaxPercentileAbs = 0) {\n\t\tthis.settings = settings\n\t\tthis.sampleName = sampleName\n\t\tthis.reference = reference\n\t\tthis.cnvMaxPercentileAbs = cnvMaxPercentileAbs\n\t}\n\n\tmap(data: Array<Data>, cnvData: Array<Data> = []): Array<Label> {\n\t\tconst innerRadius = this.settings.rings.labelLinesInnerRadius\n\t\tconst outerRadius = innerRadius + this.settings.rings.labelsToLinesDistance\n\n\t\tdata.forEach(data => {\n\t\t\tif (data.dt == dtsnvindel) {\n\t\t\t\tconst startAngle = this.calculateStartAngle(data.chr, data.position)\n\t\t\t\tconst endAngle = this.calculateEndAngle(data.chr, data.position)\n\n\t\t\t\tconst mLabel = MLabel.getInstance().mlabel ? MLabel.getInstance().mlabel[data.mClass] : undefined\n\n\t\t\t\tthis.addLabelOrMutation(\n\t\t\t\t\tdata,\n\t\t\t\t\tdata.gene,\n\t\t\t\t\tdata.mname,\n\t\t\t\t\tstartAngle,\n\t\t\t\t\tendAngle,\n\t\t\t\t\tinnerRadius,\n\t\t\t\t\touterRadius,\n\t\t\t\t\tmLabel.color,\n\t\t\t\t\tmLabel.label\n\t\t\t\t)\n\t\t\t}\n\n\t\t\tif (data.dt == dtfusionrna) {\n\t\t\t\tconst color = FusionColorProvider.getColor(data.chrA, data.chrB)\n\t\t\t\tif (data.geneA) {\n\t\t\t\t\tconst startAngleSource = this.calculateStartAngle(data.chrA, data.posA)\n\t\t\t\t\tconst endAngleSource = this.calculateEndAngle(data.chrA, data.posA)\n\n\t\t\t\t\tthis.addLabelOrFusion(\n\t\t\t\t\t\tdata,\n\t\t\t\t\t\tdata.geneA,\n\t\t\t\t\t\tdata.posA,\n\t\t\t\t\t\tstartAngleSource,\n\t\t\t\t\t\tendAngleSource,\n\t\t\t\t\t\tinnerRadius,\n\t\t\t\t\t\touterRadius,\n\t\t\t\t\t\tcolor\n\t\t\t\t\t)\n\t\t\t\t}\n\n\t\t\t\tif (data.geneB && data.geneA != data.geneB) {\n\t\t\t\t\tconst startAngleTarget = this.calculateStartAngle(data.chrB, data.posB)\n\t\t\t\t\tconst endAngleTarget = this.calculateEndAngle(data.chrB, data.posB)\n\n\t\t\t\t\tthis.addLabelOrFusion(\n\t\t\t\t\t\tdata,\n\t\t\t\t\t\tdata.geneB,\n\t\t\t\t\t\tdata.posB,\n\t\t\t\t\t\tstartAngleTarget,\n\t\t\t\t\t\tendAngleTarget,\n\t\t\t\t\t\tinnerRadius,\n\t\t\t\t\t\touterRadius,\n\t\t\t\t\t\tcolor\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\n\t\tconst labelsArray = Array.from(this.labelMap.values())\n\t\tlabelsArray.forEach((label: Label) => {\n\t\t\tcnvData.forEach((cnv: Data) => {\n\t\t\t\tif (label.stop >= cnv.start && cnv.stop >= label.start && label.chr == cnv.chr) {\n\t\t\t\t\tconst mutation: CnvTooltip = {\n\t\t\t\t\t\tvalue: cnv.value,\n\t\t\t\t\t\tcolor: CnvColorProvider.getColor(cnv.value, this.settings, this.cnvMaxPercentileAbs),\n\t\t\t\t\t\tchr: cnv.chr,\n\t\t\t\t\t\tstart: cnv.start,\n\t\t\t\t\t\tstop: cnv.stop\n\t\t\t\t\t}\n\t\t\t\t\tif (label.cnvTooltip) {\n\t\t\t\t\t\tlabel.cnvTooltip.push(mutation)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tlabel.cnvTooltip = []\n\t\t\t\t\t\tlabel.cnvTooltip.push(mutation)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t})\n\n\t\treturn Array.from(this.labelMap.values())\n\t}\n\n\tprivate addLabelOrMutation(\n\t\tdata: Data,\n\t\tgene: string,\n\t\tmname: string,\n\t\tstartAngle: number,\n\t\tendAngle: number,\n\t\tinnerRadius,\n\t\touterRadius,\n\t\tcolor,\n\t\tdataClass\n\t) {\n\t\tconst label = this.labelMap.get(gene)\n\t\tconst mutation: MutationTooltip = {\n\t\t\tmname: mname,\n\t\t\tcolor: color,\n\t\t\tdataClass: dataClass,\n\t\t\tchr: data.chr,\n\t\t\tposition: data.position\n\t\t}\n\t\tif (!label) {\n\t\t\tthis.labelMap.set(\n\t\t\t\tgene,\n\t\t\t\tLabelFactory.createLabel(\n\t\t\t\t\tstartAngle,\n\t\t\t\t\tendAngle,\n\t\t\t\t\tinnerRadius,\n\t\t\t\t\touterRadius,\n\t\t\t\t\tdata.value,\n\t\t\t\t\tgene,\n\t\t\t\t\tcolor,\n\t\t\t\t\tdataClass,\n\t\t\t\t\tdata.chr,\n\t\t\t\t\tdata.position,\n\t\t\t\t\tdata.isPrioritized,\n\t\t\t\t\tthis.settings.rings.labelsToLinesGap,\n\t\t\t\t\tmutation\n\t\t\t\t)\n\t\t\t)\n\t\t} else {\n\t\t\tif (label.mutationsTooltip) {\n\t\t\t\tlabel.start = Math.min(label.start, data.position)\n\t\t\t\tlabel.stop = Math.max(label.stop, data.position)\n\t\t\t\tlabel.mutationsTooltip.push(mutation)\n\t\t\t} else {\n\t\t\t\tlabel.mutationsTooltip = []\n\t\t\t\tlabel.start = Math.min(label.start, data.position)\n\t\t\t\tlabel.stop = Math.max(label.stop, data.position)\n\t\t\t\tlabel.mutationsTooltip.push(mutation)\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate addLabelOrFusion(\n\t\tdata: Data,\n\t\tgene: string,\n\t\tposition: number,\n\t\tstartAngle: number,\n\t\tendAngle: number,\n\t\tinnerRadius,\n\t\touterRadius,\n\t\tcolor\n\t) {\n\t\tconst label = this.labelMap.get(gene)\n\t\tconst fusionTooltip: FusionTooltip = {\n\t\t\tcolor: color,\n\t\t\tchrA: data.chrA,\n\t\t\tchrB: data.chrB,\n\t\t\tposA: data.posA,\n\t\t\tposB: data.posB,\n\t\t\tgeneA: data.geneA,\n\t\t\tgeneB: data.geneB,\n\t\t\tstrandA: data.strandA,\n\t\t\tstrandB: data.strandB\n\t\t}\n\t\tif (!label) {\n\t\t\tthis.labelMap.set(\n\t\t\t\tgene,\n\t\t\t\tLabelFactory.createLabel(\n\t\t\t\t\tstartAngle,\n\t\t\t\t\tendAngle,\n\t\t\t\t\tinnerRadius,\n\t\t\t\t\touterRadius,\n\t\t\t\t\tdata.value,\n\t\t\t\t\tgene,\n\t\t\t\t\tcolor,\n\t\t\t\t\t'Fusion transcript',\n\t\t\t\t\tdata.chr,\n\t\t\t\t\tdata.position,\n\t\t\t\t\tdata.isPrioritized,\n\t\t\t\t\tthis.settings.rings.labelsToLinesGap,\n\t\t\t\t\tundefined,\n\t\t\t\t\tfusionTooltip\n\t\t\t\t)\n\t\t\t)\n\t\t} else {\n\t\t\tif (label.fusionTooltip) {\n\t\t\t\tlabel.start = Math.min(label.start, position)\n\t\t\t\tlabel.stop = Math.max(label.stop, position)\n\t\t\t\tlabel.fusionTooltip.push(fusionTooltip)\n\t\t\t} else {\n\t\t\t\tlabel.fusionTooltip = []\n\t\t\t\tlabel.start = Math.min(label.start, position)\n\t\t\t\tlabel.stop = Math.max(label.stop, position)\n\t\t\t\tlabel.fusionTooltip.push(fusionTooltip)\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate calculateStartAngle(chr: string, position: number) {\n\t\tconst index = this.reference.chromosomesOrder.findIndex(element => element == chr)\n\t\tconst chromosome = this.reference.chromosomes[index]\n\n\t\treturn chromosome.startAngle + (chromosome.endAngle - chromosome.startAngle) * (Number(position) / chromosome.size)\n\t}\n\n\tprivate calculateEndAngle(chr: string, position: number) {\n\t\tconst index = this.reference.chromosomesOrder.findIndex(element => element == chr)\n\t\tconst chromosome = this.reference.chromosomes[index]\n\n\t\treturn chromosome.startAngle + (chromosome.endAngle - chromosome.startAngle) * (Number(position) / chromosome.size)\n\t}\n}\n", "import Ring from '#plots/disco/ring/Ring.ts'\nimport Label from './Label.ts'\nimport LabelFactory from './LabelFactory.ts'\nimport Settings from '#plots/disco/Settings.ts'\n\nexport default class Labels extends Ring<Label> {\n\tcollisions?: Array<Label>\n\tsettings: any\n\telementsToDisplay: Array<Label> = []\n\n\tprivate hasPrioritizedGenes: boolean\n\tprivate overlapAngle: number\n\n\tconstructor(settings: Settings, elements: Array<Label>, hasPrioritizedGenes: boolean) {\n\t\tsuper(\n\t\t\tsettings.rings.labelLinesInnerRadius,\n\t\t\tsettings.rings.labelsToLinesDistance,\n\t\t\telements.sort((a, b) => {\n\t\t\t\treturn a.startAngle < b.startAngle ? -1 : a.startAngle > b.startAngle ? 1 : 0\n\t\t\t})\n\t\t)\n\n\t\tthis.settings = settings\n\t\tthis.hasPrioritizedGenes = hasPrioritizedGenes\n\n\t\tconst circumference = 2 * Math.PI * (settings.rings.labelLinesInnerRadius + settings.rings.labelsToLinesDistance)\n\t\tthis.overlapAngle = (this.settings.label.overlapAngleFactor * this.settings.label.fontSize) / circumference\n\n\t\tthis.calculateCollisions()\n\t}\n\n\tprivate calculateCollisions() {\n\t\tthis.collisions = []\n\n\t\tlet hasPrioritizedGenesList: Array<Label> = []\n\t\thasPrioritizedGenesList = this.elements.filter(label => label.isPrioritized)\n\n\t\tif (this.settings.label.prioritizeGeneLabelsByGeneSets) {\n\t\t\tthis.elementsToDisplay = this.getLabelsWithPrioritizedGenes(hasPrioritizedGenesList)\n\t\t} else if (this.hasPrioritizedGenes) {\n\t\t\tconst prioritizedGenesList = this.elements.filter(label => label.isPrioritized)\n\t\t\tconst filteredPrioritizedGenesList = this.getLabelsWithPrioritizedGenes(prioritizedGenesList)\n\n\t\t\tconst withoutPrioritizedGenesList = this.elements.filter(label => !label.isPrioritized)\n\n\t\t\tconst combinedAndSortedList = [...withoutPrioritizedGenesList, ...filteredPrioritizedGenesList].sort(\n\t\t\t\t(a, b) => a.startAngle - b.startAngle\n\t\t\t)\n\n\t\t\tthis.elementsToDisplay = this.getAllLabels(combinedAndSortedList)\n\t\t} else {\n\t\t\tthis.elementsToDisplay = this.getLabelsWithPrioritizedGenes(this.elements)\n\t\t}\n\t}\n\n\tprivate getLabelsWithPrioritizedGenes(elemenets: Array<Label>) {\n\t\tconst filteredList: Array<Label> = []\n\n\t\tlet prev = { endAngle: 0 }\n\t\telemenets.forEach((element, index) => {\n\t\t\tif (index == 0) {\n\t\t\t\tfilteredList.push(element)\n\t\t\t\tprev = element\n\t\t\t} else {\n\t\t\t\tconst overlap = prev.endAngle - element.startAngle + this.overlapAngle\n\n\t\t\t\tif (overlap > 0 && overlap < this.settings.label.maxDeltaAngle) {\n\t\t\t\t\tconst labelCopy = LabelFactory.createMovedLabel(element, overlap)\n\t\t\t\t\tfilteredList?.push(labelCopy)\n\t\t\t\t\tprev = labelCopy\n\t\t\t\t}\n\n\t\t\t\tif (overlap <= 0) {\n\t\t\t\t\tfilteredList.push(element)\n\t\t\t\t\tprev = element\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\n\t\treturn filteredList\n\t}\n\n\tprivate getAllLabels(elemenets: Array<Label>) {\n\t\tconst filteredList: Array<Label> = []\n\t\tlet prev = { endAngle: 0 }\n\t\tconst elemenetsLength = elemenets.length\n\t\tlet lastCancerGeneLabelIndex = -1\n\n\t\tfor (let index = 0; index < elemenets.length; index++) {\n\t\t\tconst element = elemenets[index]\n\t\t\tif (element.isPrioritized) {\n\t\t\t\tfilteredList.push(element)\n\t\t\t\tlastCancerGeneLabelIndex = index\n\t\t\t\tprev = element\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tif (index == 0) {\n\t\t\t\tif (elemenetsLength > 1) {\n\t\t\t\t\tif (this.isElementOverlappingNextCancerGene(elemenets, lastCancerGeneLabelIndex, element, 0)) {\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\t\t\t\t\tfilteredList.push(element)\n\t\t\t\t\tprev = element\n\t\t\t\t}\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tconst prevOverlap = prev.endAngle - element.startAngle + this.overlapAngle\n\n\t\t\tif (prevOverlap > 0 && prevOverlap < this.settings.label.maxDeltaAngle) {\n\t\t\t\tif (index == length - 1) {\n\t\t\t\t\t// last element\n\t\t\t\t\tfilteredList.push(element)\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\tif (this.isElementOverlappingNextCancerGene(elemenets, lastCancerGeneLabelIndex, element, prevOverlap)) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\tconst labelCopy = LabelFactory.createMovedLabel(element, prevOverlap)\n\t\t\t\tthis.collisions?.push(labelCopy)\n\t\t\t\tfilteredList.push(element)\n\t\t\t\tprev = labelCopy\n\t\t\t}\n\n\t\t\tif (prevOverlap <= 0) {\n\t\t\t\tif (this.isElementOverlappingNextCancerGene(elemenets, lastCancerGeneLabelIndex, element, 0)) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\tfilteredList.push(element)\n\t\t\t\tprev = element\n\t\t\t}\n\t\t}\n\t\treturn filteredList\n\t}\n\n\tprivate isElementOverlappingNextCancerGene(\n\t\telemenets: Array<Label>,\n\t\tlastCancerGeneLabelIndex: number,\n\t\telement: Label,\n\t\tprevOverlap: number\n\t) {\n\t\tconst nextLabelWithCancerGene = this.getNextLabelWithCancerGene(elemenets, lastCancerGeneLabelIndex)\n\t\tif (nextLabelWithCancerGene) {\n\t\t\tconst nextOverlap = element.endAngle + prevOverlap - nextLabelWithCancerGene.startAngle + this.overlapAngle\n\t\t\tif (nextOverlap > 0) {\n\t\t\t\t// skip element\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\n\t\treturn false\n\t}\n\n\tprivate getNextLabelWithCancerGene(elemenets: Array<Label>, lastCancerGeneLabelIndex: number) {\n\t\treturn elemenets.find((label, index) => label.isPrioritized && index > lastCancerGeneLabelIndex)\n\t}\n}\n", "import Reference from '#plots/disco/chromosome/Reference.ts'\nimport Data from '#plots/disco/data/Data.ts'\nimport MLabel from '#plots/disco/label/MLabel.ts'\nimport SnvArc from './SnvArc.ts'\n\nexport default class NonExonicSnvArcsMapper {\n\tprivate sampleName: string\n\tprivate reference: Reference\n\tprivate onePxArcAngle: number\n\tprivate nonExonicInnerRadius: number\n\tprivate nonExonicWidht: number\n\n\tconstructor(nonExonicInnerRadius: number, nonExonicWidht: number, sampleName: string, reference: Reference) {\n\t\tthis.nonExonicInnerRadius = nonExonicInnerRadius\n\t\tthis.nonExonicWidht = nonExonicWidht\n\t\tthis.sampleName = sampleName\n\t\tthis.reference = reference\n\n\t\tthis.onePxArcAngle = 1 / nonExonicInnerRadius\n\t}\n\n\tmap(arcData: Array<Data>): Array<SnvArc> {\n\t\tconst innerRadius = this.nonExonicInnerRadius\n\t\tconst outerRadius = innerRadius + this.nonExonicWidht\n\n\t\tconst arcs: Array<SnvArc> = []\n\n\t\tarcData.forEach(data => {\n\t\t\tconst mLabel = MLabel.getInstance().mlabel ? MLabel.getInstance().mlabel[data.mClass] : undefined\n\n\t\t\tconst startAngle = this.calculateStartAngle(data)\n\t\t\tconst endAngle = this.calculateEndAngle(data)\n\t\t\tconst arc: SnvArc = {\n\t\t\t\tstartAngle: startAngle,\n\t\t\t\tendAngle: endAngle,\n\t\t\t\tinnerRadius: innerRadius,\n\t\t\t\touterRadius: outerRadius,\n\t\t\t\tcolor: mLabel.color,\n\t\t\t\ttext: data.gene,\n\t\t\t\tdataClass: mLabel.label,\n\t\t\t\tmname: data.mname,\n\t\t\t\tchr: data.chr,\n\t\t\t\tpos: data.position,\n\t\t\t\tsampleName: [data.sampleName]\n\t\t\t}\n\n\t\t\tarcs.push(arc)\n\t\t})\n\n\t\treturn arcs\n\t}\n\n\tcalculateStartAngle(data: Data) {\n\t\tconst index = this.reference.chromosomesOrder.indexOf(data.chr)\n\t\tconst chromosome = this.reference.chromosomes[index]\n\t\treturn (\n\t\t\tchromosome.startAngle +\n\t\t\t(chromosome.endAngle - chromosome.startAngle) * (Number(data.position) / chromosome.size) -\n\t\t\tthis.onePxArcAngle\n\t\t)\n\t}\n\n\tprivate calculateEndAngle(data: Data) {\n\t\tconst index = this.reference.chromosomesOrder.indexOf(data.chr)\n\t\tconst chromosome = this.reference.chromosomes[index]\n\t\treturn (\n\t\t\tthis.onePxArcAngle +\n\t\t\tchromosome.startAngle +\n\t\t\t(chromosome.endAngle - chromosome.startAngle) * (Number(data.position) / chromosome.size)\n\t\t)\n\t}\n}\n", "import Reference from '#plots/disco/chromosome/Reference.ts'\nimport Data from '#plots/disco/data/Data.ts'\nimport LohArc from './LohArc.ts'\nimport GradientColorProvider from './GradientColorProvider.ts'\n\nexport default class LohArcMapper {\n\tprivate sampleName: string\n\tprivate reference: Reference\n\tprivate lohInnerRadius: number\n\tprivate lohWidth: number\n\n\tconstructor(lohInnerRadius: number, lohWidth: number, sampleName: string, reference: Reference) {\n\t\tthis.lohInnerRadius = lohInnerRadius\n\t\tthis.lohWidth = lohWidth\n\t\tthis.sampleName = sampleName\n\t\tthis.reference = reference\n\t}\n\n\tmap(arcData: Array<Data>): Array<LohArc> {\n\t\tconst arcs: Array<LohArc> = []\n\n\t\tarcData.forEach(data => {\n\t\t\tconst startAngle = this.calculateStartAngle(data)\n\t\t\tconst endAngle = this.calculateEndAngle(data)\n\n\t\t\tconst innerRadius = this.lohInnerRadius\n\t\t\tconst outerRadius = innerRadius + this.lohWidth\n\t\t\tconst color = GradientColorProvider.provide(data.segmean)\n\n\t\t\tconst arc: LohArc = {\n\t\t\t\tstartAngle: startAngle,\n\t\t\t\tendAngle: endAngle,\n\t\t\t\tinnerRadius: innerRadius,\n\t\t\t\touterRadius: outerRadius,\n\t\t\t\tcolor: color,\n\t\t\t\ttext: data.gene,\n\t\t\t\tchr: data.chr,\n\t\t\t\tstart: data.start,\n\t\t\t\tstop: data.stop,\n\t\t\t\tvalue: data.segmean\n\t\t\t}\n\n\t\t\tarcs.push(arc)\n\t\t})\n\n\t\treturn arcs\n\t}\n\n\tprivate calculateStartAngle(data: Data) {\n\t\tconst index = this.reference.chromosomesOrder.indexOf(data.chr)\n\t\tconst chromosome = this.reference.chromosomes[index]\n\t\treturn (\n\t\t\tchromosome.startAngle + (chromosome.endAngle - chromosome.startAngle) * (Number(data.start) / chromosome.size)\n\t\t)\n\t}\n\n\tprivate calculateEndAngle(data: Data) {\n\t\tconst index = this.reference.chromosomesOrder.indexOf(data.chr)\n\t\tconst chromosome = this.reference.chromosomes[index]\n\t\treturn chromosome.startAngle + (chromosome.endAngle - chromosome.startAngle) * (Number(data.stop) / chromosome.size)\n\t}\n}\n", "import Ring from './Ring.ts'\nimport Chromosome from '#plots/disco/chromosome/Chromosome.ts'\nimport Labels from '#plots/disco/label/Labels.ts'\nimport SnvArc from '#plots/disco/snv/SnvArc.ts'\nimport CnvArc from '#plots/disco/cnv/CnvArc.ts'\nimport LohArc from '#plots/disco/loh/LohArc.ts'\n\nexport default class Rings {\n\tlabelsRing: Labels\n\tchromosomesRing: Ring<Chromosome>\n\tnonExonicArcRing?: Ring<SnvArc>\n\tsnvArcRing?: Ring<SnvArc>\n\tcnvArcRing?: Ring<CnvArc>\n\tlohArcRing?: Ring<LohArc>\n\n\tconstructor(\n\t\tlabelsRing: Labels,\n\t\tchromosomesRing: Ring<Chromosome>,\n\t\tnonExonicArcRing?: Ring<SnvArc>,\n\t\tsnvArcRing?: Ring<SnvArc>,\n\t\tcnvArcRing?: Ring<CnvArc>,\n\t\tlohArcRing?: Ring<LohArc>\n\t) {\n\t\tthis.labelsRing = labelsRing\n\t\tthis.chromosomesRing = chromosomesRing\n\t\tthis.nonExonicArcRing = nonExonicArcRing\n\t\tthis.snvArcRing = snvArcRing\n\t\tthis.cnvArcRing = cnvArcRing\n\t\tthis.lohArcRing = lohArcRing\n\t}\n}\n", "import Settings from '#plots/disco/Settings.ts'\nimport Reference from '#plots/disco/chromosome/Reference.ts'\nimport Legend from '#plots/disco/legend/Legend.ts'\nimport FusionMapper from '#plots/disco/fusion/FusionMapper.ts'\nimport LohLegend from '#plots/disco/loh/LohLegend.ts'\nimport ViewModel from './ViewModel.ts'\nimport DataMapper from '#plots/disco/data/DataMapper.ts'\nimport Ring from '#plots/disco/ring/Ring.ts'\nimport SnvArcsMapper from '#plots/disco/snv/SnvArcsMapper.ts'\nimport SnvArc from '#plots/disco/snv/SnvArc.ts'\nimport LohArc from '#plots/disco/loh/LohArc.ts'\nimport CnvArcsMapper from '#plots/disco/cnv/CnvArcsMapper.ts'\nimport CnvArc from '#plots/disco/cnv/CnvArc.ts'\nimport LabelsMapper from '#plots/disco/label/LabelsMapper.ts'\nimport Labels from '#plots/disco/label/Labels.ts'\nimport NonExonicSnvArcsMapper from '#plots/disco/snv/NonExonicSnvArcsMapper.ts'\nimport LohArcMapper from '#plots/disco/loh/LohArcMapper.ts'\nimport Rings from '#plots/disco/ring/Rings.ts'\nimport { dtsnvindel } from '#shared/common.js'\n\nexport default class ViewModelProvider {\n\tprivate settings: Settings\n\tprivate reference: Reference\n\tprivate sampleName: string\n\tprivate genesetName: string\n\tprivate dataMapper: DataMapper\n\n\tprivate nonExonicArcRing?: Ring<SnvArc> = undefined\n\tprivate snvArcsMapper?: SnvArcsMapper\n\tprivate snvArcRing?: Ring<SnvArc>\n\tprivate lohArcRing?: Ring<LohArc>\n\tprivate cnvArcsMapper?: CnvArcsMapper\n\tprivate cnvArcRing?: Ring<CnvArc>\n\n\tconstructor(\n\t\tsettings: Settings,\n\t\tdataMapper: DataMapper,\n\t\treference: Reference,\n\t\tsampleName: string,\n\t\tgenesetName: string\n\t) {\n\t\tthis.settings = settings\n\t\tthis.dataMapper = dataMapper\n\t\tthis.reference = reference\n\t\tthis.sampleName = sampleName\n\t\tthis.genesetName = genesetName\n\t}\n\n\tmap(data: Array<any>) {\n\t\tconst dataHolder = this.dataMapper.map(data)\n\n\t\tconst labelsMapper = new LabelsMapper(\n\t\t\tthis.settings,\n\t\t\tthis.sampleName,\n\t\t\tthis.reference,\n\t\t\tdataHolder.cnvMaxPercentileAbs\n\t\t)\n\n\t\tconst labelsData = labelsMapper.map(dataHolder.labelData, dataHolder.cnvData)\n\n\t\tconst labelsRing = new Labels(this.settings, labelsData, dataHolder.hasPrioritizedGenes)\n\n\t\tconst chromosomesRing = new Ring(\n\t\t\tthis.settings.rings.chromosomeInnerRadius,\n\t\t\tthis.settings.rings.chromosomeWidth,\n\t\t\tthis.reference.chromosomes\n\t\t)\n\n\t\tconst nonExonicSnvArcsMapper = new NonExonicSnvArcsMapper(\n\t\t\tdataHolder.nonExonicInnerRadius,\n\t\t\tthis.settings.rings.nonExonicRingWidth,\n\t\t\tthis.sampleName,\n\t\t\tthis.reference\n\t\t)\n\n\t\tconst nonExonicData = nonExonicSnvArcsMapper.map(dataHolder.nonExonicSnvData)\n\n\t\tif (nonExonicData.length > 0) {\n\t\t\tthis.nonExonicArcRing = new Ring(\n\t\t\t\tdataHolder.nonExonicInnerRadius,\n\t\t\t\tthis.settings.rings.nonExonicRingWidth,\n\t\t\t\tnonExonicData\n\t\t\t)\n\t\t}\n\n\t\tthis.snvArcsMapper = new SnvArcsMapper(\n\t\t\tdataHolder.snvInnerRadius,\n\t\t\tthis.settings.rings.snvRingWidth,\n\t\t\tthis.sampleName,\n\t\t\tthis.reference\n\t\t)\n\t\tconst snvData = this.snvArcsMapper.map(dataHolder.snvRingDataMap)\n\t\tif (snvData.length > 0) {\n\t\t\tthis.snvArcRing = new Ring(dataHolder.snvInnerRadius, this.settings.rings.snvRingWidth, snvData)\n\t\t}\n\n\t\tconst lohMapper = new LohArcMapper(\n\t\t\tdataHolder.lohInnerRadius,\n\t\t\tthis.settings.rings.lohRingWidth,\n\t\t\tthis.sampleName,\n\t\t\tthis.reference\n\t\t)\n\t\tconst lohData = lohMapper.map(dataHolder.lohData)\n\t\tif (lohData.length > 0) {\n\t\t\tthis.lohArcRing = new Ring(dataHolder.lohInnerRadius, this.settings.rings.lohRingWidth, lohData)\n\t\t}\n\n\t\tthis.cnvArcsMapper = new CnvArcsMapper(\n\t\t\tdataHolder.cnvInnerRadius,\n\t\t\tthis.settings.rings.cnvRingWidth,\n\t\t\tthis.settings,\n\t\t\tthis.sampleName,\n\t\t\tthis.reference,\n\t\t\tdataHolder.percentilePositive,\n\t\t\tdataHolder.percentileNegative,\n\t\t\tdataHolder.cappedCnvMaxAbsValue,\n\t\t\tdataHolder.cnvMaxPercentileAbs,\n\t\t\tthis.settings.cnv.unit,\n\t\t\tthis.settings.Disco.cnvRenderingType\n\t\t)\n\n\t\tconst cnvData = this.cnvArcsMapper.map(dataHolder.cnvData)\n\t\tif (cnvData.length > 0) {\n\t\t\tthis.cnvArcRing = new Ring(dataHolder.cnvInnerRadius, this.settings.rings.cnvRingWidth, cnvData)\n\t\t}\n\n\t\tconst fusionMapper = new FusionMapper(dataHolder.fusionRadius, this.sampleName, this.reference)\n\n\t\tconst fusions = fusionMapper.map(dataHolder.fusionData)\n\n\t\tlet lohLegend: LohLegend | undefined\n\n\t\tif (this.settings.legend.lohLegendEnabled && dataHolder.lohMinValue && dataHolder.lohMaxValue) {\n\t\t\tlohLegend = new LohLegend(dataHolder.lohMinValue, dataHolder.lohMaxValue)\n\t\t}\n\n\t\tconst legend = new Legend(\n\t\t\tthis.settings.legend.snvTitle,\n\t\t\tthis.settings.legend.cnvTitle,\n\t\t\tthis.settings.legend.lohTitle,\n\t\t\tthis.settings.legend.fusionTitle,\n\t\t\tthis.snvArcsMapper ? this.snvArcsMapper.snvClassMap : new Map(),\n\t\t\tthis.cnvArcsMapper ? this.cnvArcsMapper.cnvClassMap : new Map(),\n\t\t\tthis.settings.Disco.cnvRenderingType,\n\t\t\tfusions.length > 0,\n\t\t\tlohLegend\n\t\t)\n\n\t\tconst rings = new Rings(\n\t\t\tlabelsRing,\n\t\t\tchromosomesRing,\n\t\t\tthis.nonExonicArcRing,\n\t\t\tthis.snvArcRing,\n\t\t\tthis.cnvArcRing,\n\t\t\tthis.lohArcRing\n\t\t)\n\n\t\treturn new ViewModel(\n\t\t\tthis.settings,\n\t\t\trings,\n\t\t\tlegend,\n\t\t\tfusions,\n\t\t\tdataHolder,\n\t\t\tthis.genesetName,\n\t\t\tdata.filter(i => i.dt == dtsnvindel).length\n\t\t)\n\t}\n}\n", "import ViewModel from '#plots/disco/viewmodel/ViewModel.ts'\nimport Reference from '#plots/disco/chromosome/Reference.ts'\nimport DataMapper from '#plots/disco/data/DataMapper.ts'\nimport Settings from '#plots/disco/Settings.ts'\nimport ViewModelProvider from './ViewModelProvider.ts'\n\nexport class ViewModelMapper {\n\tstatic snvClassLayer = {\n\t\tM: 'exonic',\n\t\tE: 'exonic',\n\t\tF: 'exonic',\n\t\tN: 'exonic',\n\t\tS: 'exonic',\n\t\tD: 'exonic',\n\t\tI: 'exonic',\n\t\tP: 'exonic',\n\t\tL: 'exonic',\n\t\tUtr3: 'exonic',\n\t\tUtr5: 'exonic',\n\t\tProteinAltering: 'exonic',\n\t\tmnv: 'non-exonic',\n\t\tITD: 'non-exonic',\n\t\tinsertion: 'non-exonic',\n\t\tdeletion: 'non-exonic',\n\t\tIntron: 'non-exonic',\n\t\tX: 'non-exonic',\n\t\tnoncoding: 'non-exonic'\n\t}\n\n\tprivate settings: Settings\n\n\tconstructor(settings: Settings) {\n\t\tthis.settings = settings\n\t}\n\n\tmap(opts: any): ViewModel {\n\t\tconst chromosomesOverride = opts.args.chromosomes\n\n\t\tconst chrSizes = opts.args.genome.majorchr\n\n\t\tconst sampleName = opts.args.sampleName\n\n\t\tconst genome = opts.args.genome\n\n\t\tconst prioritizedGenes = genome?.geneset?.[0] ? genome.geneset[0].lst : []\n\n\t\tconst genesetName = genome?.geneset?.[0] ? genome.geneset[0].name : ''\n\n\t\tconst data: Array<any> = opts.args.data\n\n\t\tconst reference = new Reference(this.settings, chrSizes, chromosomesOverride)\n\n\t\tconst dataMapper = new DataMapper(this.settings, reference, sampleName, prioritizedGenes)\n\n\t\treturn new ViewModelProvider(this.settings, dataMapper, reference, sampleName, genesetName).map(data)\n\t}\n}\n", "import Legend from './Legend.ts'\nimport { CnvType } from '#plots/disco/cnv/CnvType.ts'\nimport { FusionLegend } from '#plots/disco/fusion/FusionLegend.ts'\nimport { CnvRenderingType } from '#plots/disco/cnv/CnvRenderingType.ts'\nimport { scaleLinear } from 'd3-scale'\n\nexport default class LegendJSONMapper {\n\tprivate cappedCnvMaxAbsValue: number\n\n\tconstructor(cappedCnvMaxAbsValue: number) {\n\t\tthis.cappedCnvMaxAbsValue = cappedCnvMaxAbsValue\n\t}\n\n\tmap(legend: Legend) {\n\t\tconst legendJSON: Array<any> = []\n\n\t\tlet order = 0\n\t\tif (legend.snvClassMap) {\n\t\t\tthis.mapSnv(legend, legendJSON, order++)\n\t\t}\n\n\t\tif (legend.cnvRenderingType == CnvRenderingType.heatmap) {\n\t\t\tthis.mapCnvHeatmap(legend, legendJSON, order++)\n\t\t} else if (legend.cnvRenderingType == CnvRenderingType.bar) {\n\t\t\tif (legend.cnvClassMap) {\n\t\t\t\tthis.mapCnvBar(legend, legendJSON, order++)\n\t\t\t}\n\t\t}\n\n\t\tif (legend.lohLegend) {\n\t\t\tthis.mapLoh(legend, legendJSON, order++)\n\t\t}\n\n\t\tif (legend.fusionLegend) {\n\t\t\tthis.mapFusion(legend, legendJSON, order++)\n\t\t}\n\n\t\treturn legendJSON\n\t}\n\n\tprivate mapSnv(legend: Legend, legendJSON: Array<any>, order: number) {\n\t\tconst snvItems: Array<any> = []\n\n\t\tlet snvOrder = 0\n\n\t\tfor (const [snvKey, snvLegendElement] of legend.snvClassMap) {\n\t\t\tsnvItems.push({\n\t\t\t\ttermid: legend.snvTitle,\n\t\t\t\tkey: snvKey,\n\t\t\t\ttext: `${snvLegendElement.snvType} (${snvLegendElement.count})`,\n\t\t\t\tcolor: snvLegendElement.color,\n\t\t\t\torder: snvOrder++,\n\t\t\t\tborder: '1px solid #ccc'\n\t\t\t})\n\t\t}\n\n\t\tlegendJSON.push({\n\t\t\tname: legend.snvTitle,\n\t\t\torder: order,\n\t\t\titems: snvItems\n\t\t})\n\t}\n\n\tprivate mapCnvBar(legend: Legend, legendJSON: Array<any>, order: number) {\n\t\tif (!legend.cnvClassMap) return\n\t\tconst gain = legend.cnvClassMap.get(CnvType.Gain)\n\t\tconst loss = legend.cnvClassMap.get(CnvType.Loss)\n\t\tconst cap = legend.cnvClassMap.get(CnvType.Cap)\n\n\t\tif (gain && loss && cap) {\n\t\t\tlet cnvOrder = 0\n\t\t\tconst cnvItems: Array<any> = []\n\t\t\tif (gain.value > 0) {\n\t\t\t\tcnvItems.push({\n\t\t\t\t\ttermid: legend.cnvTitle,\n\t\t\t\t\tkey: CnvType.Gain,\n\t\t\t\t\ttext: `Max: ${gain.value}`,\n\t\t\t\t\tcolor: gain.color,\n\t\t\t\t\torder: cnvOrder++,\n\t\t\t\t\tborder: '1px solid #ccc'\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tif (loss.value < 0) {\n\t\t\t\tcnvItems.push({\n\t\t\t\t\ttermid: legend.cnvTitle,\n\t\t\t\t\tkey: CnvType.Loss,\n\t\t\t\t\ttext: `Min: ${loss.value}`,\n\t\t\t\t\tcolor: loss.color,\n\t\t\t\t\torder: cnvOrder++,\n\t\t\t\t\tborder: '1px solid #ccc'\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tcnvItems.push({\n\t\t\t\ttermid: legend.cnvTitle,\n\t\t\t\tkey: CnvType.Cap,\n\t\t\t\ttext: `Capping: ${cap.value}`,\n\t\t\t\tcolor: cap.color,\n\t\t\t\torder: cnvOrder++,\n\t\t\t\tborder: '1px solid #ccc'\n\t\t\t\t// ,\n\t\t\t\t// onClickCallback: this.onClickCallback\n\t\t\t})\n\n\t\t\tlegendJSON.push({\n\t\t\t\tname: legend.cnvTitle,\n\t\t\t\torder: order,\n\t\t\t\titems: cnvItems\n\t\t\t})\n\t\t}\n\t}\n\n\tprivate mapCnvHeatmap(legend: Legend, legendJSON: Array<any>, order: number) {\n\t\tif (!legend.cnvClassMap) return\n\t\tconst gain = legend.cnvClassMap.get(CnvType.Gain)\n\t\tconst loss = legend.cnvClassMap.get(CnvType.Loss)\n\t\tconst cap = legend.cnvClassMap.get(CnvType.Cap)\n\n\t\tif (gain && loss && cap) {\n\t\t\tlet cnvOrder = 0\n\n\t\t\tconst cnvItems: Array<any> = []\n\t\t\tif (gain.value > 0) {\n\t\t\t\tcnvItems.push({\n\t\t\t\t\ttermid: legend.cnvTitle,\n\t\t\t\t\tkey: CnvType.Gain,\n\t\t\t\t\ttext: 'Copy number gain',\n\t\t\t\t\twidth: 100,\n\t\t\t\t\tdomain: [0, 1],\n\t\t\t\t\tminLabel: 0,\n\t\t\t\t\tmaxLabel: gain.value,\n\t\t\t\t\torder: cnvOrder++,\n\t\t\t\t\tisLegendItem: true,\n\t\t\t\t\tdt: 4,\n\t\t\t\t\tscale: scaleLinear([0, 1], ['white', gain.color])\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tif (loss.value < 0) {\n\t\t\t\tcnvItems.push({\n\t\t\t\t\ttermid: legend.cnvTitle,\n\t\t\t\t\tkey: CnvType.Loss,\n\t\t\t\t\ttext: 'Copy number loss',\n\t\t\t\t\twidth: 100,\n\t\t\t\t\tdomain: [0, 1],\n\t\t\t\t\tminLabel: 0,\n\t\t\t\t\tmaxLabel: loss.value,\n\t\t\t\t\torder: cnvOrder++,\n\t\t\t\t\tisLegendItem: true,\n\t\t\t\t\tdt: 4,\n\t\t\t\t\tscale: scaleLinear([0, 1], ['white', loss.color])\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tcnvItems.push({\n\t\t\t\ttermid: legend.cnvTitle,\n\t\t\t\tkey: CnvType.Cap,\n\t\t\t\ttext: `Capping: ${cap.value}`,\n\t\t\t\tcolor: cap.color,\n\t\t\t\torder: cnvOrder++,\n\t\t\t\tborder: '1px solid #ccc'\n\t\t\t})\n\n\t\t\tlegendJSON.push({\n\t\t\t\tname: legend.cnvTitle,\n\t\t\t\torder: order,\n\t\t\t\titems: cnvItems\n\t\t\t})\n\t\t}\n\t}\n\n\tprivate mapLoh(legend: Legend, legendJSON: Array<any>, order: number) {\n\t\tif (!legend.lohLegend) return\n\t\tconst lohItems: Array<any> = []\n\n\t\tlohItems.push({\n\t\t\ttermid: legend.lohTitle,\n\t\t\tkey: 'min',\n\t\t\ttext: 'min',\n\t\t\tcolor: legend.lohLegend.colorStartValue,\n\t\t\torder: 0,\n\t\t\tborder: '1px solid #ccc'\n\t\t})\n\n\t\tlohItems.push({\n\t\t\ttermid: legend.lohTitle,\n\t\t\tkey: 'max',\n\t\t\ttext: 'max',\n\t\t\tcolor: legend.lohLegend.colorEndValue,\n\t\t\torder: 1,\n\t\t\tborder: '1px solid #ccc'\n\t\t})\n\n\t\tlegendJSON.push({\n\t\t\tname: legend.lohTitle,\n\t\t\torder: order,\n\t\t\titems: lohItems\n\t\t})\n\t}\n\n\tprivate mapFusion(legend: Legend, legendJSON: Array<any>, order: number) {\n\t\tconst fusionItems: Array<any> = []\n\n\t\tfusionItems.push({\n\t\t\ttermid: legend.fusionTitle,\n\t\t\tkey: FusionLegend.Interchromosomal,\n\t\t\ttext: 'Interchromosomal',\n\t\t\tcolor: FusionLegend.Interchromosomal.valueOf(),\n\t\t\torder: 0,\n\t\t\tborder: '1px solid #ccc'\n\t\t})\n\n\t\tfusionItems.push({\n\t\t\ttermid: legend.fusionTitle,\n\t\t\tkey: FusionLegend.Intrachromosomal,\n\t\t\ttext: 'Intrachromosomal',\n\t\t\tcolor: FusionLegend.Intrachromosomal.valueOf(),\n\t\t\torder: 1,\n\t\t\tborder: '1px solid #ccc'\n\t\t})\n\n\t\tlegendJSON.push({\n\t\t\tname: legend.fusionTitle,\n\t\t\torder: order,\n\t\t\titems: fusionItems\n\t\t})\n\t}\n}\n", "import Legend from './Legend.ts'\nimport svgLegend from '#dom/svg.legend'\nimport LegendJSONMapper from './LegendJSONMapper.ts'\n\nexport default class LegendRenderer {\n\tprivate legendJSONMapper: LegendJSONMapper\n\tprivate fontSize: number\n\n\tconstructor(cappedCnvMaxAbsValue = 0, fontSize: number) {\n\t\tthis.fontSize = fontSize\n\t\tthis.legendJSONMapper = new LegendJSONMapper(cappedCnvMaxAbsValue)\n\t}\n\n\trender(holder: any, legend: Legend, xOffset: number, svgw, svgh) {\n\t\tconst svgLegendRenderer = svgLegend({\n\t\t\tholder: holder.append('g').attr('data-testid', 'sjpp_disco_plot_legend'),\n\t\t\trectFillFxn: d => d.color,\n\t\t\ticonStroke: '#aaa'\n\t\t})\n\n\t\t// TODO calculate legend dimensions\n\n\t\tconst d = {\n\t\t\txOffset: xOffset\n\t\t}\n\n\t\tconst data = this.legendJSONMapper.map(legend)\n\n\t\tsvgLegendRenderer(data, {\n\t\t\tsettings: Object.assign(\n\t\t\t\t{},\n\t\t\t\t{\n\t\t\t\t\tsvgw: svgw,\n\t\t\t\t\tsvgh: svgh,\n\t\t\t\t\tdimensions: d,\n\t\t\t\t\tfontsize: this.fontSize\n\t\t\t\t}\n\t\t\t)\n\t\t})\n\t}\n}\n", "import * as d3 from 'd3'\nimport IRenderer from '#plots/disco/IRenderer.ts'\nimport Chromosome from './Chromosome.ts'\n\nexport default class ChromosomesRenderer implements IRenderer {\n\tprivate padAngle: number\n\tprivate innerRadius: number\n\tprivate outerRadius: number\n\n\tconstructor(padAngle: number, innerRadius: number, outerRadius: number) {\n\t\tthis.padAngle = padAngle\n\t\tthis.innerRadius = innerRadius\n\t\tthis.outerRadius = outerRadius\n\t}\n\n\trender(holder: any, elements: Array<Chromosome>) {\n\t\tconst pie = d3\n\t\t\t.pie<Chromosome>()\n\t\t\t.padAngle(this.padAngle)\n\t\t\t.value(d => d.size)\n\t\t\t.sort(null)\n\n\t\tconst arcData = pie(elements)\n\n\t\tconst arc = d3.arc<d3.PieArcDatum<number>>().innerRadius(this.innerRadius).outerRadius(this.outerRadius)\n\n\t\tconst arcs = holder.append('g').attr('data-testid', 'sjpp_chromosomes_arc_group')\n\n\t\tarcs.selectAll('path').data(arcData).enter().append('path').attr('d', arc).attr('fill', 'black')\n\n\t\tarcs\n\t\t\t.selectAll('text')\n\t\t\t.data(arcData)\n\t\t\t.enter()\n\t\t\t.append('text')\n\t\t\t// TODO extract all value and functions to Chromosomes\n\t\t\t.attr('transform', (d: d3.PieArcDatum<Chromosome>) => {\n\t\t\t\treturn `translate(${arc.centroid(<any>d)}) rotate(${(d.data.angle * 180) / Math.PI - 90})${\n\t\t\t\t\td.data.angle > Math.PI ? 'rotate(180)' : ''\n\t\t\t\t}`\n\t\t\t})\n\t\t\t.attr('dy', '0.35em')\n\t\t\t.attr('text-anchor', 'middle')\n\t\t\t.text((d: d3.PieArcDatum<Chromosome>) => d.data.text)\n\t\t\t.style('fill', 'white')\n\t}\n}\n", "import IRenderer from '#plots/disco/IRenderer.ts'\nimport { select } from 'd3-selection'\nimport { line } from 'd3-shape'\nimport Label from './Label.ts'\nimport MenuProvider from '#plots/disco/menu/MenuProvider.ts'\nimport MutationTooltip from '#plots/disco/label/MutationTooltip.ts'\nimport FusionTooltip from '#plots/disco/fusion/FusionTooltip.ts'\nimport { table2col } from '#dom/table2col'\nimport CnvTooltip from '#plots/disco/cnv/CnvTooltip.ts'\n\nexport default class LabelsRenderer implements IRenderer {\n\tprivate animationDuration: number\n\tprivate geneClickListener: (gene: string, mnames: Array<string>) => void\n\n\tconstructor(animationDuration: number, geneClickListener: (gene: string, mnames: Array<string>) => void) {\n\t\tthis.animationDuration = animationDuration\n\t\tthis.geneClickListener = geneClickListener\n\t}\n\n\trender(holder: any, elements: Array<Label>, collisions?: Array<Label>) {\n\t\tconst labelsG = holder.append('g')\n\n\t\tconst lineFunction = line<{ x: number; y: number }>()\n\t\t\t.x(point => point.x)\n\t\t\t.y(point => point.y)\n\n\t\tconst menu = MenuProvider.create()\n\n\t\tlabelsG\n\t\t\t.selectAll('.group')\n\t\t\t.data(elements)\n\t\t\t.enter()\n\t\t\t.append('g')\n\t\t\t.attr('class', 'group')\n\t\t\t.each((label: Label, i: number, nodes: HTMLDivElement[]) => {\n\t\t\t\tconst g = select(nodes[i])\n\t\t\t\tg.append('text')\n\t\t\t\t\t.attr('class', 'chord-text')\n\t\t\t\t\t.attr('dy', '.35em')\n\t\t\t\t\t.attr('transform', label.transform)\n\t\t\t\t\t.style('text-anchor', label.textAnchor)\n\t\t\t\t\t.style('font-size', '12px')\n\t\t\t\t\t.style('fill', label.color)\n\t\t\t\t\t.style('cursor', 'pointer')\n\t\t\t\t\t.text(label.text)\n\t\t\t\t\t.on('click', () => {\n\t\t\t\t\t\tif (label.mutationsTooltip) {\n\t\t\t\t\t\t\tthis.geneClickListener(\n\t\t\t\t\t\t\t\tlabel.text,\n\t\t\t\t\t\t\t\tlabel.mutationsTooltip.map(value => value.mname)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t\t.on('mouseover', (mouseEvent: MouseEvent) => {\n\t\t\t\t\t\tconst table = table2col({ holder: menu.d })\n\t\t\t\t\t\tthis.createTooltip(table, label)\n\t\t\t\t\t\tmenu.show(mouseEvent.x, mouseEvent.y)\n\t\t\t\t\t})\n\t\t\t\t\t.on('mouseout', () => {\n\t\t\t\t\t\tmenu.clear()\n\t\t\t\t\t\tmenu.hide()\n\t\t\t\t\t})\n\n\t\t\t\tg.append('path')\n\t\t\t\t\t.attr('class', 'chord-tick')\n\t\t\t\t\t.datum(label.line.points)\n\t\t\t\t\t.style('stroke', label.color)\n\t\t\t\t\t.style('fill', 'none')\n\t\t\t\t\t.attr('d', lineFunction)\n\t\t\t})\n\n\t\tlabelsG.selectAll('.group').each((label: Label, i: number, nodes: HTMLDivElement[]) => {\n\t\t\tconst collision = collisions ? collisions.find(l => l.text === label.text) : undefined\n\t\t\tif (collision) {\n\t\t\t\tconst g = select(nodes[i])\n\t\t\t\tg.selectAll('.chord-text')\n\t\t\t\t\t.datum(collision)\n\t\t\t\t\t.transition()\n\t\t\t\t\t.duration(this.animationDuration)\n\t\t\t\t\t.attr('transform', collision.transform)\n\t\t\t\t\t.style('text-anchor', collision.textAnchor)\n\n\t\t\t\tg.selectAll('.chord-tick')\n\t\t\t\t\t.datum(collision.line.points)\n\t\t\t\t\t.transition()\n\t\t\t\t\t.duration(this.animationDuration)\n\t\t\t\t\t.style('fill', 'none')\n\t\t\t\t\t.attr('d', lineFunction)\n\t\t\t}\n\t\t})\n\t}\n\n\tcreateTooltip(table: any, label: Label) {\n\t\tif (label.mutationsTooltip) {\n\t\t\tconst [td1, td2] = table.addRow()\n\t\t\ttd1.text('Gene')\n\t\t\ttd2.append('span').style('margin-left', '5px').text(label.text)\n\n\t\t\tlabel.mutationsTooltip.forEach((mutation: MutationTooltip) => {\n\t\t\t\t{\n\t\t\t\t\tconst [td1, td2] = table.addRow()\n\n\t\t\t\t\ttd1.text('Consequence')\n\t\t\t\t\ttd2.append('span').text(mutation.mname)\n\t\t\t\t\ttd2.append('span').style('margin-left', '5px').style('color', mutation.color).text(mutation.dataClass)\n\t\t\t\t}\n\t\t\t\t{\n\t\t\t\t\tconst [td1, td2] = table.addRow()\n\t\t\t\t\ttd1.text('Mutation')\n\t\t\t\t\ttd2.append('span').text(`${mutation.chr}:${mutation.position}`)\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\n\t\tif (label.fusionTooltip) {\n\t\t\tconst [td1, td2] = table.addRow()\n\n\t\t\ttd1.text('Data type')\n\t\t\ttd2.append('span').text('Fusion transcript')\n\t\t\tlabel.fusionTooltip.forEach((fusionTooltip: FusionTooltip) => {\n\t\t\t\tconst [td1, td2] = table.addRow()\n\n\t\t\t\ttd1.text('Break points')\n\t\t\t\ttd2.append('span').text(\n\t\t\t\t\t` ${fusionTooltip.geneA ? fusionTooltip.geneA : ''} ${fusionTooltip.chrA}:${fusionTooltip.posA} \n\t\t\t\t\t\t${fusionTooltip.strandA == '+' ? 'forward' : 'reverse'} > ` +\n\t\t\t\t\t\t`${fusionTooltip.geneB ? fusionTooltip.geneB : ''} ${fusionTooltip.chrB}:${fusionTooltip.posB} ${\n\t\t\t\t\t\t\tfusionTooltip.strandB == '+' ? 'forward' : 'reverse'\n\t\t\t\t\t\t} `\n\t\t\t\t)\n\t\t\t})\n\t\t}\n\n\t\tif (label.cnvTooltip) {\n\t\t\tlabel.cnvTooltip.forEach((cnv: CnvTooltip) => {\n\t\t\t\tconst [td1, td2] = table.addRow()\n\t\t\t\ttd1.text('CNV')\n\t\t\t\ttd2\n\t\t\t\t\t.append('span')\n\t\t\t\t\t.style('color', cnv.color)\n\t\t\t\t\t.text(cnv.value)\n\t\t\t\t\t.append('span')\n\t\t\t\t\t.style('margin-left', '5px')\n\t\t\t\t\t.text(`${cnv.chr}:${cnv.start}-${cnv.stop}`)\n\t\t\t})\n\t\t}\n\t}\n}\n", "import Settings from './Settings'\nimport { copyMerge } from '#rx'\nimport { CnvRenderingType } from '#plots/disco/cnv/CnvRenderingType.ts'\n\nexport default function discoDefaults(overrides = {}): Settings {\n\tconst defaults = {\n\t\tdownloadImgName: 'disco.plot',\n\n\t\tDisco: {\n\t\t\tcnvCapping: 5,\n\t\t\tisOpen: false,\n\t\t\tprioritizeGeneLabelsByGeneSets: false,\n\t\t\tshowPrioritizeGeneLabelsByGeneSets: false,\n\t\t\tcnvRenderingType: CnvRenderingType.heatmap,\n\t\t\tcnvPercentile: 80\n\t\t},\n\n\t\trings: {\n\t\t\tnonExonicRingWidth: 20,\n\t\t\tsnvRingWidth: 20,\n\t\t\tlohRingWidth: 20,\n\t\t\tcnvRingWidth: 30,\n\n\t\t\tsnvRingFilters: ['exonic'],\n\n\t\t\tchromosomeInnerRadius: 190,\n\t\t\tchromosomeWidth: 20,\n\n\t\t\tlabelLinesInnerRadius: 210,\n\t\t\tlabelsToLinesDistance: 30,\n\t\t\tlabelsToLinesGap: 2,\n\n\t\t\tnonExonicRingEnabled: true,\n\t\t\tnonExonicFilterValues: ['non-exonic']\n\t\t},\n\n\t\tverticalPadding: 70,\n\t\thorizontalPadding: 500,\n\n\t\tlayerScaler: 1,\n\t\tpadAngle: 0.002, //0.01, //0.04,\n\n\t\tlabel: {\n\t\t\tfontSize: 12,\n\t\t\tmaxDeltaAngle: 0.05,\n\t\t\tanimationDuration: 1000,\n\t\t\toverlapAngleFactor: 5 // 5 is set by testing, because label height is not known before rendering\n\t\t},\n\n\t\tcnv: {\n\t\t\tcapping: 5,\n\t\t\tampColor: '#D6683C',\n\t\t\tlossColor: '#67a9cf',\n\t\t\tcappedAmpColor: '#8B0000',\n\t\t\tcappedLossColor: '#00008B',\n\t\t\tunit: 'Unit'\n\t\t},\n\t\tsnv: {\n\t\t\tmaxMutationCount: 10000\n\t\t},\n\t\tlegend: {\n\t\t\tsnvTitle: 'SNV',\n\t\t\tcnvTitle: 'CNV',\n\t\t\tlohTitle: 'LOH',\n\t\t\tfusionTitle: 'SV', // Structural Variants (color by co-location)\n\t\t\tlohLegendEnabled: true,\n\t\t\tfontSize: 12,\n\t\t\trowHeight: 48\n\t\t},\n\n\t\tmenu: {\n\t\t\tpadding: 5\n\t\t}\n\t}\n\n\treturn copyMerge(defaults, overrides)\n}\n", "import IRenderer from '#plots/disco/IRenderer.ts'\nimport * as d3 from 'd3'\nimport SnvArc from './SnvArc.ts'\nimport Arc from '#plots/disco/arc/Arc.ts'\nimport MenuProvider from '#plots/disco/menu/MenuProvider.ts'\nimport { dtsnvindel } from '#shared/common.js'\nimport { table2col } from '#dom/table2col'\n\nexport default class NonExonicSnvRenderer implements IRenderer {\n\tprivate geneClickListener: (gene: string, mnames: Array<string>) => void\n\n\tconstructor(geneClickListener: (gene: string, mnames: Array<string>) => void) {\n\t\tthis.geneClickListener = geneClickListener\n\t}\n\n\trender(holder: any, elements: Array<Arc>) {\n\t\tconst arcGenerator = d3.arc<SnvArc>()\n\n\t\tconst arcs = holder.append('g')\n\n\t\tconst menu = MenuProvider.create()\n\n\t\tarcs\n\t\t\t.selectAll('path')\n\t\t\t.data(elements)\n\t\t\t.enter()\n\t\t\t.append('path')\n\t\t\t.attr('d', (d: SnvArc) => arcGenerator(d))\n\t\t\t.attr('fill', (d: SnvArc) => d.color)\n\t\t\t.on('mouseover', (mouseEvent: MouseEvent, arc: SnvArc) => {\n\t\t\t\tconst table = table2col({ holder: menu.d })\n\t\t\t\tconst snv: any = structuredClone(arc)\n\t\t\t\tsnv.dt = dtsnvindel\n\t\t\t\tsnv.class = arc.dataClass\n\t\t\t\tsnv.gene = snv.text\n\n\t\t\t\t{\n\t\t\t\t\tconst [td1, td2] = table.addRow()\n\t\t\t\t\ttd1.text('Consequence')\n\t\t\t\t\ttd2.append('span').text(snv.mname)\n\t\t\t\t\ttd2\n\t\t\t\t\t\t.append('span')\n\t\t\t\t\t\t.style('margin-left', '5px')\n\t\t\t\t\t\t.style('color', snv.color)\n\t\t\t\t\t\t.style('font-size', '.8em')\n\t\t\t\t\t\t.text(snv.dataClass)\n\t\t\t\t}\n\t\t\t\t{\n\t\t\t\t\tconst [td1, td2] = table.addRow()\n\t\t\t\t\ttd1.text(snv.ref && snv.alt ? 'Mutation' : 'Position')\n\t\t\t\t\ttd2.append('span').text(`${snv.chr}:${snv.pos + 1} ${snv.ref && snv.alt ? snv.ref + '>' + snv.alt : ''}`)\n\t\t\t\t}\n\n\t\t\t\tif (snv.gene) {\n\t\t\t\t\tconst [td1, td2] = table.addRow()\n\t\t\t\t\ttd1.text('Gene')\n\t\t\t\t\ttd2.text(snv.gene)\n\t\t\t\t}\n\n\t\t\t\tif (snv.occurrence > 1) {\n\t\t\t\t\tconst [td1, td2] = table.addRow()\n\t\t\t\t\ttd1.text('Occurrence')\n\t\t\t\t\ttd2.text(snv.occurrence)\n\t\t\t\t}\n\n\t\t\t\tmenu.show(mouseEvent.x, mouseEvent.y)\n\t\t\t})\n\t\t\t.on('mouseout', () => {\n\t\t\t\tmenu.clear()\n\t\t\t\tmenu.hide()\n\t\t\t})\n\t\t\t.on('click', (mouseEvent: MouseEvent, arc: SnvArc) => {\n\t\t\t\tthis.geneClickListener(arc.text, [arc.mname])\n\t\t\t})\n\t}\n}\n", "import * as d3 from 'd3'\nimport SnvArc from './SnvArc.ts'\nimport IRenderer from '#plots/disco/IRenderer.ts'\nimport FullArcRenderer from '#plots/disco/arc/FullArcRenderer.ts'\nimport MenuProvider from '#plots/disco/menu/MenuProvider.ts'\nimport { dtsnvindel } from '#shared/common.js'\nimport { table2col } from '#dom/table2col'\n\nexport default class SnvRenderer implements IRenderer {\n\tprivate svnWidth: number\n\n\tprivate geneClickListener: (gene: string, mnames: Array<string>) => void\n\n\tconstructor(svnWidth: number, geneClickListener: (gene: string, mnames: Array<string>) => void) {\n\t\tthis.svnWidth = svnWidth\n\n\t\tthis.geneClickListener = geneClickListener\n\t}\n\n\trender(holder: any, elements: Array<SnvArc>) {\n\t\tif (elements.length > 0) {\n\t\t\tconst svnInnerRadius = elements[0].innerRadius\n\t\t\tconst fullArcRenderer = new FullArcRenderer(svnInnerRadius, this.svnWidth, '#6464641A')\n\t\t\tfullArcRenderer.render(holder)\n\t\t}\n\n\t\tconst arcGenerator = d3.arc<SnvArc>()\n\n\t\tconst arcs = holder.append('g')\n\n\t\tconst menu = MenuProvider.create()\n\n\t\tarcs\n\t\t\t.selectAll('path')\n\t\t\t.data(elements)\n\t\t\t.enter()\n\t\t\t.append('path')\n\t\t\t.attr('d', (d: SnvArc) => arcGenerator(d))\n\t\t\t.attr('fill', (d: SnvArc) => d.color)\n\t\t\t.on('mouseover', (mouseEvent: MouseEvent, arc: SnvArc) => {\n\t\t\t\tconst table = table2col({ holder: menu.d })\n\t\t\t\tconst snv: any = structuredClone(arc)\n\t\t\t\tsnv.dt = dtsnvindel\n\t\t\t\tsnv.class = arc.dataClass\n\t\t\t\tsnv.gene = snv.text\n\n\t\t\t\t{\n\t\t\t\t\tconst [td1, td2] = table.addRow()\n\t\t\t\t\ttd1.text('Consequence')\n\t\t\t\t\ttd2.append('span').text(snv.mname)\n\t\t\t\t\ttd2\n\t\t\t\t\t\t.append('span')\n\t\t\t\t\t\t.style('margin-left', '5px')\n\t\t\t\t\t\t.style('color', snv.color)\n\t\t\t\t\t\t.style('font-size', '.8em')\n\t\t\t\t\t\t.text(snv.dataClass)\n\t\t\t\t}\n\t\t\t\t{\n\t\t\t\t\tconst [td1, td2] = table.addRow()\n\t\t\t\t\ttd1.text(snv.ref && snv.alt ? 'Mutation' : 'Position')\n\t\t\t\t\ttd2.append('span').text(`${snv.chr}:${snv.pos + 1} ${snv.ref && snv.alt ? snv.ref + '>' + snv.alt : ''}`)\n\t\t\t\t}\n\n\t\t\t\tif (snv.gene) {\n\t\t\t\t\tconst [td1, td2] = table.addRow()\n\t\t\t\t\ttd1.text('Gene')\n\t\t\t\t\ttd2.text(snv.gene)\n\t\t\t\t}\n\n\t\t\t\tif (snv.occurrence > 1) {\n\t\t\t\t\tconst [td1, td2] = table.addRow()\n\t\t\t\t\ttd1.text('Occurrence')\n\t\t\t\t\ttd2.text(snv.occurrence)\n\t\t\t\t}\n\n\t\t\t\tmenu.show(mouseEvent.x, mouseEvent.y)\n\t\t\t})\n\t\t\t.on('mouseout', () => {\n\t\t\t\tmenu.clear()\n\t\t\t\tmenu.hide()\n\t\t\t})\n\t\t\t.on('click', (mouseEvent: MouseEvent, arc: SnvArc) => {\n\t\t\t\tthis.geneClickListener(arc.text, [arc.mname])\n\t\t\t})\n\t}\n}\n", "import * as d3 from 'd3'\nimport LohArc from './LohArc.ts'\nimport IRenderer from '#plots/disco/IRenderer.ts'\nimport MenuProvider from '#plots/disco/menu/MenuProvider.ts'\nimport { dtloh } from '#shared/common.js'\nimport { table2col } from '#dom/table2col'\n\nexport default class LohRenderer implements IRenderer {\n\trender(holder: any, elements: Array<LohArc>) {\n\t\tconst arcGenerator = d3.arc<LohArc>()\n\n\t\tconst arcs = holder.append('g')\n\n\t\tconst menu = MenuProvider.create()\n\n\t\tarcs\n\t\t\t.selectAll('path')\n\t\t\t.data(elements)\n\t\t\t.enter()\n\t\t\t.append('path')\n\t\t\t.attr('d', (d: LohArc) => arcGenerator(d))\n\t\t\t.attr('fill', (d: LohArc) => d.color)\n\t\t\t.on('mouseover', (mouseEvent: MouseEvent, arc: LohArc) => {\n\t\t\t\tconst table = table2col({ holder: menu.d })\n\t\t\t\tconst loh: any = structuredClone(arc)\n\t\t\t\tloh.dt = dtloh\n\t\t\t\tloh.gene = loh.text\n\t\t\t\t{\n\t\t\t\t\tconst [td1, td2] = table.addRow()\n\t\t\t\t\ttd1.text('Data type')\n\t\t\t\t\ttd2.append('span').style('margin-left', '5px').text('Loss of Heterozygosity')\n\t\t\t\t}\n\n\t\t\t\tconst [td1, td2] = table.addRow()\n\t\t\t\ttd1.text('Position')\n\t\t\t\ttd2.append('span').text(`${arc.chr}:${arc.start}-${arc.stop}`)\n\n\t\t\t\tmenu.show(mouseEvent.x, mouseEvent.y)\n\t\t\t})\n\t\t\t.on('mouseout', () => {\n\t\t\t\tmenu.clear()\n\t\t\t\tmenu.hide()\n\t\t\t})\n\t}\n}\n", "import * as d3 from 'd3'\nimport IRenderer from '#plots/disco/IRenderer.ts'\nimport CnvArc from './CnvArc.ts'\nimport MenuProvider from '#plots/disco/menu/MenuProvider.ts'\nimport { dtcnv } from '#shared/common.js'\nimport { table2col } from '#dom/table2col'\n\nexport default class CnvBarRenderer implements IRenderer {\n\trender(holder: any, elements: Array<CnvArc>) {\n\t\tconst arcGenerator = d3.arc<CnvArc>()\n\n\t\tconst arcs = holder.append('g')\n\n\t\tconst menu = MenuProvider.create()\n\n\t\tarcs\n\t\t\t.selectAll('path')\n\t\t\t.data(elements)\n\t\t\t.enter()\n\t\t\t.append('path')\n\t\t\t.attr('d', (d: CnvArc) => arcGenerator(d))\n\t\t\t.attr('fill', (d: CnvArc) => d.color)\n\t\t\t.on('mouseover', (mouseEvent: MouseEvent, arc: CnvArc) => {\n\t\t\t\tconst cnv: any = structuredClone(arc)\n\t\t\t\tcnv.dt = dtcnv\n\t\t\t\tcnv.samples = [{ sample_id: arc.sampleName }]\n\t\t\t\tcnv.gene = cnv.text\n\n\t\t\t\tconst table = table2col({ holder: menu.d })\n\t\t\t\t{\n\t\t\t\t\tconst [c1, c2] = table.addRow()\n\t\t\t\t\tc1.text('Copy number change')\n\t\t\t\t\tc2.html(`<span style=\"background:${cnv.color}\">&nbsp;&nbsp;</span> ${cnv.value}`)\n\t\t\t\t}\n\t\t\t\t{\n\t\t\t\t\tconst [c1, c2] = table.addRow()\n\t\t\t\t\tc1.text('Position')\n\t\t\t\t\tc2.text(cnv.chr + ':' + cnv.start + '-' + cnv.stop)\n\t\t\t\t}\n\t\t\t\t{\n\t\t\t\t\tconst [c1, c2] = table.addRow()\n\t\t\t\t\tc1.text('Unit')\n\t\t\t\t\tc2.text(cnv.value)\n\t\t\t\t}\n\n\t\t\t\tmenu.show(mouseEvent.x, mouseEvent.y)\n\t\t\t})\n\t\t\t.on('mouseout', () => {\n\t\t\t\tmenu.clear()\n\t\t\t\tmenu.hide()\n\t\t\t})\n\t}\n}\n", "import CnvArc from '#plots/disco/cnv/CnvArc.ts'\nimport * as d3 from 'd3'\nimport MenuProvider from '#plots/disco/menu/MenuProvider.ts'\nimport { table2col } from '#dom/table2col'\nimport { scaleLinear } from 'd3-scale'\nimport { dtcnv } from '#shared/common.js'\n\nexport class CnvHeatmapRenderer {\n\tprivate positivePercentile80: number\n\tprivate negativePercentile80: number\n\n\tconstructor(positivePercentile80 = 0, negativePercentile80 = 0) {\n\t\tthis.positivePercentile80 = positivePercentile80\n\t\tthis.negativePercentile80 = negativePercentile80\n\t}\n\n\trender(holder: any, elements: Array<CnvArc>) {\n\t\tconst arcGenerator = d3.arc<CnvArc>()\n\n\t\tconst arcs = holder.append('g')\n\n\t\tconst menu = MenuProvider.create()\n\n\t\tarcs\n\t\t\t.selectAll('path')\n\t\t\t.data(elements)\n\t\t\t.enter()\n\t\t\t.append('path')\n\t\t\t.attr('d', (d: CnvArc) => arcGenerator(d))\n\t\t\t.attr('fill', (d: CnvArc) =>\n\t\t\t\tscaleLinear([this.negativePercentile80, 0, this.positivePercentile80], [d.color, 'white', d.color]).clamp(true)(\n\t\t\t\t\td.value\n\t\t\t\t)\n\t\t\t)\n\t\t\t.on('mouseover', (mouseEvent: MouseEvent, arc: CnvArc) => {\n\t\t\t\tconst table = table2col({ holder: menu.d })\n\t\t\t\tconst cnv: any = structuredClone(arc)\n\t\t\t\tcnv.dt = dtcnv\n\t\t\t\tcnv.samples = [{ sample_id: arc.sampleName }]\n\t\t\t\tcnv.gene = cnv.text\n\n\t\t\t\t{\n\t\t\t\t\tconst [c1, c2] = table.addRow()\n\t\t\t\t\tc1.text('Copy number change')\n\t\t\t\t\tc2.html(`<span style=\"background:${cnv.color}\">&nbsp;&nbsp;</span> ${cnv.value}`)\n\t\t\t\t}\n\t\t\t\t{\n\t\t\t\t\tconst [c1, c2] = table.addRow()\n\t\t\t\t\tc1.text('Position')\n\t\t\t\t\tc2.text(cnv.chr + ':' + cnv.start + '-' + cnv.stop)\n\t\t\t\t}\n\t\t\t\t{\n\t\t\t\t\tconst [c1, c2] = table.addRow()\n\t\t\t\t\tc1.text('Unit')\n\t\t\t\t\tc2.text(cnv.value)\n\t\t\t\t}\n\n\t\t\t\tmenu.show(mouseEvent.x, mouseEvent.y)\n\t\t\t})\n\t\t\t.on('mouseout', () => {\n\t\t\t\tmenu.clear()\n\t\t\t\tmenu.hide()\n\t\t\t})\n\t}\n}\n", "import { getCompInit } from '#rx'\nimport { DiscoRenderer } from './DiscoRenderer.ts'\nimport { DiscoInteractions } from './interactions/DiscoInteractions.ts'\nimport { ViewModelMapper } from './viewmodel/ViewModelMapper.ts'\nimport LegendRenderer from './legend/LegendRenderer.ts'\nimport ChromosomesRenderer from './chromosome/ChromosomesRenderer.ts'\nimport LabelsRenderer from './label/LabelsRenderer.ts'\nimport discoDefaults from './defaults.ts'\nimport NonExonicSnvRenderer from './snv/NonExonicSnvRenderer.ts'\nimport SnvRenderer from './snv/SnvRenderer.ts'\nimport LohRenderer from './loh/LohRenderer.ts'\nimport CnvBarRenderer from './cnv/CnvBarRenderer.ts'\nimport IRenderer from './IRenderer.ts'\nimport { RingType } from './ring/RingType.ts'\nimport Settings from './Settings.ts'\nimport { multiInit } from '../../rx'\nimport { topBarInit } from '../controls.btns'\nimport { configUiInit } from '../controls.config'\nimport { CnvHeatmapRenderer } from '#plots/disco/cnv/CnvHeatmapRenderer.ts'\nimport ViewModel from '#plots/disco/viewmodel/ViewModel.ts'\nimport { CnvRenderingType } from '#plots/disco/cnv/CnvRenderingType.ts'\n\nexport default class Disco {\n\t// following attributes are required by rx\n\tprivate type: string\n\tprivate opts: any\n\tprivate state: any\n\tprivate id: any\n\tprivate app: any\n\tprivate features: any\n\tprivate isOpen: boolean\n\tprivate discoInteractions: DiscoInteractions\n\n\tprivate stateViewModelMapper?: ViewModelMapper\n\tprivate viewModel?: ViewModel\n\tprivate recreateViewModel = false\n\n\tconstructor(opts: any) {\n\t\tthis.type = 'Disco'\n\t\tthis.opts = opts\n\t\tthis.isOpen = false\n\t\tthis.discoInteractions = new DiscoInteractions(this)\n\t}\n\n\tasync init() {\n\t\tconst state = this.app.getState()\n\t\tconst settings = state.plots.find(p => p.id === this.id).settings\n\n\t\tthis.stateViewModelMapper = new ViewModelMapper(settings)\n\t\tthis.viewModel = this.stateViewModelMapper.map(state)\n\n\t\tconst holder = this.opts.holder\n\t\t// Figure out why we need to set the background color here\n\t\tconst controlsHolder = holder.append('div').style('display', 'inline-block').style('vertical-align', 'top')\n\t\tconst topbar = controlsHolder.append('div')\n\t\tconst config_div = controlsHolder.append('div')\n\t\tconst configInputsOptions = this.getConfigInputsOptions(this.viewModel)\n\n\t\tthis.features = await multiInit({\n\t\t\ttopbar: topBarInit({\n\t\t\t\tapp: this.app,\n\t\t\t\tid: this.id,\n\t\t\t\t// TODO change the way svg is selected\n\t\t\t\tdownloadHandler: () =>\n\t\t\t\t\tthis.discoInteractions.downloadClickListener(holder.select('svg[id=\"sjpp_disco_plot\"]').node()),\n\t\t\t\tcallback: () => this.toggleVisibility(this.isOpen),\n\t\t\t\tisOpen: () => this.isOpen,\n\t\t\t\tholder: topbar\n\t\t\t}),\n\n\t\t\tconfig: configUiInit({\n\t\t\t\tapp: this.app,\n\t\t\t\tid: this.id,\n\t\t\t\tholder: config_div,\n\t\t\t\tisOpen: () => this.isOpen,\n\t\t\t\tinputs: configInputsOptions\n\t\t\t})\n\t\t})\n\t}\n\n\tprivate getConfigInputsOptions(viewModel: ViewModel) {\n\t\tconst configInputsOptions: Array<any> = []\n\n\t\tif (viewModel.settings.Disco.showPrioritizeGeneLabelsByGeneSets) {\n\t\t\tconst filterMutationsGenesCheckbox = [\n\t\t\t\t{\n\t\t\t\t\tboxLabel: viewModel.genesetName,\n\t\t\t\t\tlabel: `Filter mutations`,\n\t\t\t\t\ttype: 'checkbox',\n\t\t\t\t\tchartType: 'Disco',\n\t\t\t\t\tsettingsKey: 'prioritizeGeneLabelsByGeneSets',\n\t\t\t\t\ttitle: `Only show mutations for ${viewModel.genesetName} genes`\n\t\t\t\t}\n\t\t\t]\n\n\t\t\tconfigInputsOptions.push(...filterMutationsGenesCheckbox)\n\t\t}\n\n\t\tconst mandatoryConfigInputOptions = [\n\t\t\t{\n\t\t\t\tlabel: 'CNV capping',\n\t\t\t\ttype: 'number',\n\t\t\t\tchartType: 'Disco',\n\t\t\t\tsettingsKey: 'cnvCapping',\n\t\t\t\ttitle: 'Cnv capping',\n\t\t\t\tmin: 0\n\t\t\t},\n\t\t\t{\n\t\t\t\tboxLabel: '',\n\t\t\t\tlabel: 'CNV rendering type',\n\t\t\t\ttype: 'radio',\n\t\t\t\tchartType: 'Disco',\n\t\t\t\tsettingsKey: 'cnvRenderingType',\n\t\t\t\ttitle: 'CNV rendering type',\n\t\t\t\toptions: [\n\t\t\t\t\t{ label: 'Heatmap', value: CnvRenderingType.heatmap },\n\t\t\t\t\t{ label: 'Bar', value: CnvRenderingType.bar }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: 'CNV percentile',\n\t\t\t\ttype: 'number',\n\t\t\t\tchartType: 'Disco',\n\t\t\t\tsettingsKey: 'cnvPercentile',\n\t\t\t\ttitle: 'Cnv percentile',\n\t\t\t\tmin: 1,\n\t\t\t\tmax: 100\n\t\t\t}\n\t\t]\n\n\t\tconfigInputsOptions.push(...mandatoryConfigInputOptions)\n\n\t\treturn configInputsOptions\n\t}\n\n\tasync main(): Promise<void> {\n\t\t// run this only when this.state{} is set; cannot do this step in constructor()\n\t\tconst settings: Settings = this.state.settings\n\n\t\tthis.isOpen = settings.Disco.isOpen\n\n\t\tif (this.recreateViewModel) {\n\t\t\tthis.stateViewModelMapper = new ViewModelMapper(settings)\n\t\t\tthis.viewModel = this.stateViewModelMapper.map(this.app.getState())\n\t\t}\n\t\tthis.recreateViewModel = true\n\n\t\tif (this.viewModel) {\n\t\t\tconst holder = this.opts.holder\n\t\t\t// TODO change this\n\t\t\tholder.select('div[id=\"sjpp_disco_plot_holder_div\"]').remove()\n\t\t\tconst svgDiv = holder.append('div').attr('id', 'sjpp_disco_plot_holder_div').style('display', 'inline-block')\n\n\t\t\t// TODO calculate viewModel.filteredSnvDataLength always\n\t\t\tconst appState = this.app.getState()\n\n\t\t\tfor (const name in this.features) {\n\t\t\t\tthis.features[name].update({ state: this.state, appState })\n\t\t\t}\n\n\t\t\tconst legendRenderer = new LegendRenderer(this.viewModel.cappedCnvMaxAbsValue, settings.label.fontSize)\n\n\t\t\tconst discoRenderer = new DiscoRenderer(\n\t\t\t\tthis.getRingRenderers(settings, this.viewModel, this.discoInteractions.geneClickListener),\n\t\t\t\tlegendRenderer\n\t\t\t)\n\n\t\t\tdiscoRenderer.render(svgDiv, this.viewModel)\n\t\t}\n\t}\n\n\tgetState(appState: any) {\n\t\treturn appState.plots.find(p => p.id === this.id)\n\t}\n\n\tgetRingRenderers(\n\t\tsettings: Settings,\n\t\tviewModel: ViewModel,\n\t\tgeneClickListener: (gene: string, mnames: Array<string>) => void\n\t) {\n\t\tconst chromosomesRenderer = new ChromosomesRenderer(\n\t\t\tsettings.padAngle,\n\t\t\tsettings.rings.chromosomeInnerRadius,\n\t\t\tsettings.rings.chromosomeInnerRadius + settings.rings.chromosomeWidth\n\t\t)\n\t\tconst labelsRenderer = new LabelsRenderer(settings.label.animationDuration, geneClickListener)\n\t\tconst nonExonicSnvRenderer = new NonExonicSnvRenderer(geneClickListener)\n\t\tconst snvRenderer = new SnvRenderer(settings.rings.snvRingWidth, geneClickListener)\n\t\tconst cnvRenderer =\n\t\t\tsettings.Disco.cnvRenderingType === CnvRenderingType.heatmap\n\t\t\t\t? new CnvHeatmapRenderer(viewModel.positivePercentile80, viewModel.negativePercentile80)\n\t\t\t\t: new CnvBarRenderer()\n\t\tconst lohRenderer = new LohRenderer()\n\n\t\tconst renderersMap: Map<RingType, IRenderer> = new Map()\n\t\trenderersMap.set(RingType.CHROMOSOME, chromosomesRenderer)\n\t\trenderersMap.set(RingType.LABEL, labelsRenderer)\n\t\trenderersMap.set(RingType.NONEXONICSNV, nonExonicSnvRenderer)\n\t\trenderersMap.set(RingType.SNV, snvRenderer)\n\t\trenderersMap.set(RingType.CNV, cnvRenderer)\n\t\trenderersMap.set(RingType.LOH, lohRenderer)\n\n\t\treturn renderersMap\n\t}\n\n\ttoggleVisibility(isOpen: boolean) {\n\t\tthis.app.dispatch({\n\t\t\ttype: 'plot_edit',\n\t\t\tid: this.opts.id,\n\t\t\tconfig: {\n\t\t\t\tsettings: {\n\t\t\t\t\tDisco: { isOpen: !isOpen }\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t}\n}\n\nexport const discoInit = getCompInit(Disco)\n\nexport const componentInit = discoInit\n\nexport async function getPlotConfig(opts: any) {\n\treturn {\n\t\tchartType: 'Disco',\n\t\tsubfolder: 'disco',\n\t\textension: 'ts',\n\t\tsettings: discoDefaults(opts.overrides)\n\t}\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["data", "data", "d", "td1", "td2", "td1", "td2"]
7
+ }
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  launch
3
- } from "./chunk-2JZM3KOM.js";
3
+ } from "./chunk-3P3VYLB7.js";
4
4
  import {
5
5
  makeBtn,
6
6
  makeFileUpload,
@@ -9,38 +9,38 @@ import {
9
9
  makeResetBtn,
10
10
  makeTextAreaInput
11
11
  } from "./chunk-CVRLSPB3.js";
12
- import "./chunk-YPSAAUCG.js";
13
- import "./chunk-Y445OJFF.js";
12
+ import "./chunk-5B4CKPSF.js";
13
+ import "./chunk-CUJMPEQF.js";
14
14
  import "./chunk-5MDPW4SY.js";
15
15
  import "./chunk-KAID7JA7.js";
16
- import "./chunk-LWFDXRX5.js";
17
- import "./chunk-RK4DIB5L.js";
18
- import "./chunk-CZXMN5X4.js";
19
- import "./chunk-GP3Z7OF6.js";
16
+ import "./chunk-6ZJSKPSP.js";
17
+ import "./chunk-6SQGQWCR.js";
18
+ import "./chunk-YWTKUB62.js";
19
+ import "./chunk-QIJ6EKRX.js";
20
20
  import "./chunk-CLHA5AEH.js";
21
- import "./chunk-AFUEQSU6.js";
22
- import "./chunk-KUUVHWOH.js";
21
+ import "./chunk-GQ47JIT2.js";
22
+ import "./chunk-GDM36JZF.js";
23
23
  import "./chunk-B2WJXDDI.js";
24
- import "./chunk-GIHTT3NN.js";
24
+ import "./chunk-FZXMYGIE.js";
25
25
  import "./chunk-WTM3GD2X.js";
26
- import "./chunk-PYG7VYV6.js";
26
+ import "./chunk-7YKZQGKZ.js";
27
27
  import {
28
28
  Tabs
29
29
  } from "./chunk-7KFEDC2T.js";
30
- import "./chunk-FCO47PWR.js";
30
+ import "./chunk-5UENVM6X.js";
31
31
  import "./chunk-L7QWRU5Z.js";
32
- import "./chunk-LBX7K73F.js";
33
- import "./chunk-G6GOOI6P.js";
32
+ import "./chunk-5NK4VI2A.js";
33
+ import "./chunk-XTHRDSH4.js";
34
34
  import "./chunk-FCPSU6WB.js";
35
35
  import "./chunk-PWTXVCZ4.js";
36
36
  import "./chunk-O32YEJMI.js";
37
- import "./chunk-6S4SHPQA.js";
37
+ import "./chunk-URE7FSEB.js";
38
38
  import "./chunk-PGCZMKZL.js";
39
- import "./chunk-MCXHNZHB.js";
39
+ import "./chunk-EG3MKQQH.js";
40
40
  import "./chunk-JVUJSWZ2.js";
41
41
  import "./chunk-ALPXXDQD.js";
42
42
  import "./chunk-JV3G5Q3X.js";
43
- import "./chunk-SHYGLBEM.js";
43
+ import "./chunk-CTQFEFIV.js";
44
44
  import {
45
45
  sayerror
46
46
  } from "./chunk-RKJGIOIF.js";
@@ -48,12 +48,12 @@ import {
48
48
  appear
49
49
  } from "./chunk-P64DWRTC.js";
50
50
  import "./chunk-ROQ5WSLC.js";
51
- import "./chunk-TRWKFVMG.js";
51
+ import "./chunk-TLIXHORR.js";
52
52
  import "./chunk-7YY2KB6H.js";
53
53
  import "./chunk-2BM5YZ6X.js";
54
- import "./chunk-H56REZKF.js";
54
+ import "./chunk-3OQMDDNE.js";
55
55
  import "./chunk-BT2NCQ7T.js";
56
- import "./chunk-KSBNOE4E.js";
56
+ import "./chunk-XNPZE2WZ.js";
57
57
  import "./chunk-WMK7VUYQ.js";
58
58
  import "./chunk-ZRUQHHLI.js";
59
59
  import "./chunk-JASS6SUY.js";
@@ -257,4 +257,4 @@ function backButton(holder, genomes) {
257
257
  export {
258
258
  init_discoplotUI
259
259
  };
260
- //# sourceMappingURL=Disco.UI-ODRH7X6T.js.map
260
+ //# sourceMappingURL=Disco.UI-QDKOBLMM.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../plots/disco/Disco.UI.ts"],
4
+ "sourcesContent": ["import * as uiutils from '#dom/uiUtils'\nimport { Tabs } from '../../dom/toggleButtons'\nimport { appear } from '#dom/animation'\nimport { Selection } from 'd3-selection'\nimport type { Genome } from '#types'\nimport { sayerror } from '../../dom/sayerror'\nimport { launch, DiscoPlotArgs } from './launch.adhoc'\n\n/** Genome with dom attributes scoped for this file */\ntype ScopedGenomes = Genome & {\n\toptions: any\n\tselectedIndex: number\n}\n\n/** Stored values for creating the args for launch() */\ntype DiscoUIArgs = {\n\tgenome: ScopedGenomes\n\t/** equivalent of arg in launch.adhoc. */\n\tdata: []\n}\n\ntype Tab = {\n\tlabel: string\n\t/**constructs the property name in obj.data, which is later passed as the dataType + inputType (e.g. snvText) to launch.adhoc */\n\tkey: string\n\t/**From tabs class*/\n\tcontentHolder: Selection<HTMLDivElement, any, any, any>\n\tcallback?: () => void\n}\n/**\n * Launches the disco plot form.\n * @param holder\n * @param genomes\n * @param debugmode\n * @returns\n */\nexport function init_discoplotUI(\n\tholder: Selection<HTMLDivElement, any, any, any>,\n\tgenomes: ScopedGenomes,\n\tdebugmode: boolean\n) {\n\tconst wrapper = holder\n\t\t.append('div')\n\t\t.style('margin', '20px 20px 20px 40px')\n\t\t.style(\n\t\t\t'font-family',\n\t\t\t\"'Lucida Sans', 'Lucida Sans Regular', 'Lucida Grande', 'Lucida Sans Unicode', Geneva, Verdana, sans-serif\"\n\t\t)\n\t\t.style('place-items', 'center left')\n\t\t.style('overflow', 'hidden')\n\t\t.classed('sjpp-app-ui', true)\n\t\t.classed('sjpp-disco-ui', true)\n\n\tconst obj: Partial<DiscoUIArgs> = {\n\t\tdata: []\n\t}\n\n\t//Genome drop down\n\tuiutils\n\t\t.makePrompt(wrapper, 'Select Genome')\n\t\t.style('font-size', '1.15em')\n\t\t.style('padding', '10px 0px')\n\t\t.style('color', '#003366')\n\tgenomeSelection(wrapper, genomes, obj)\n\n\t//Data type vertical tabs followed by input type horizontal tabs in the content holder\n\t//User clicks the data type (e.g. 'CNV'), then the input type (e.g. 'Paste')\n\tuiutils\n\t\t.makePrompt(wrapper, 'Provide Data')\n\t\t.style('font-size', '1.15em')\n\t\t.style('padding', '10px 0px 5px 0px')\n\t\t.style('color', '#003366')\n\twrapper\n\t\t.append('div')\n\t\t.style('opacity', 0.75)\n\t\t.style('padding', '10px 10px 15px 20px')\n\t\t.style('width', '65vw')\n\t\t.style('line-height', '1.5em')\n\t\t.html(\n\t\t\t'<p>The plot accepts multiple data types. Input fields for each data type are available in the tabs below. Upload a file or paste data in at least one data type tab and click \"Create Disco Plot\". <a href=\"https://proteinpaint.stjude.org/ppdemo/hg38/disco/discoDemoData.tar.gz\" target=\"Demo data\">Download example files</a></p>'\n\t\t)\n\n\tconst dataTypeTabs_div = wrapper.append('div').style('margin-left', '2vw')\n\tmakeDataTypeTabs(dataTypeTabs_div, obj)\n\n\t//Submit and reset button at the bottom.\n\tconst controlBtns_div = wrapper\n\t\t.append('div')\n\t\t.style('display', 'flex')\n\t\t.style('align-items', 'center')\n\t\t.style('padding', '15px 0px')\n\n\tsubmitButton(controlBtns_div, obj, genomes, wrapper, holder)\n\tuiutils.makeResetBtn(controlBtns_div, obj, '.disco_input')\n\n\t//Remove after testing\n\tif (debugmode) window['doms'] = obj\n\treturn obj\n}\n\nfunction genomeSelection(\n\tdiv: Selection<HTMLDivElement, any, any, any>,\n\tgenomes: ScopedGenomes,\n\tobj: Partial<DiscoUIArgs>\n) {\n\tconst genome_div = div.append('div').style('margin-left', '40px')\n\tconst g = uiutils.makeGenomeDropDown(genome_div, genomes).style('border', '1px solid rgb(138, 177, 212)')\n\t//dom genome options, not the genome obj\n\tobj.genome = g.node()\n}\n\n/**\n * Makes the main tabs labeled by data type (e.g. SNV indel, SV, CNV, etc.)\n * @param dataTypeTabs_div\n * @param obj\n */\n\nfunction makeDataTypeTabs(dataTypeTabs_div: Selection<HTMLDivElement, any, any, any>, obj: Partial<DiscoUIArgs>) {\n\tconst tabs = [\n\t\t{\n\t\t\tlabel: 'SNV Indel',\n\t\t\tactive: true,\n\t\t\tcallback: async (event: MouseEvent, dataTypeTab: Tab) => {\n\t\t\t\t/** Event though event is not required, stops type error??? */\n\t\t\t\tdataTypeTab.key = 'snv'\n\t\t\t\t/**Leave the weird spacing for <pre>! Otherwise it doesn't display properly on the client\n\t\t\t\t * and the user can't copy and paste the example data.*/\n\t\t\t\tconst listHTML = `<ol>\n\t\t\t\t\t<li>chr</li>\n\t\t\t\t\t<li>position</li>\n\t\t\t\t\t<li>gene</li>\n\t\t\t\t\t<li>aachange</li>\n\t\t\t\t\t<li>class</li></ol>\n\t\t\t\t\t<p>Example:</p>\n<pre style=\"margin-left: 10px;\">\nchr1\t226252135\tH3F3A\tK28M\tM\nchr2\t98765432\tTestGene\tTestMutation\tF\n</pre>`\n\t\t\t\tmainTabCallback(dataTypeTab, obj, listHTML)\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tlabel: 'SV',\n\t\t\tactive: false,\n\t\t\tcallback: async (event: MouseEvent, dataTypeTab: Tab) => {\n\t\t\t\tdataTypeTab.key = 'sv'\n\t\t\t\tconst listHTML = `<ol>\n\t\t\t\t\t<li>chrA</li>\n\t\t\t\t\t<li>posA</li>\n\t\t\t\t\t<li>geneA (optional)</li>\n\t\t\t\t\t<li>chrB</li>\n\t\t\t\t\t<li>posB</li>\n\t\t\t\t\t<li>geneB (optional)</li>\n\t\t\t\t</ol>\n\t\t\t\t<p>Example (with genes):</p>\n<pre style=\"margin-left: 10px;\">\nchr6\t3067605\tMDC1\tchr12\t61521661\tKMT2D\n</pre>\n\t\t\t\t<p>Example (without genes):</p>\n<pre style=\"margin-left: 10px;\">\nchr6\t3067605\tchr12\t61521661\n</pre>`\n\t\t\t\tmainTabCallback(dataTypeTab, obj, listHTML)\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tlabel: 'CNV',\n\t\t\tactive: false,\n\t\t\tcallback: async (event: MouseEvent, dataTypeTab: Tab) => {\n\t\t\t\tdataTypeTab.key = 'cnv'\n\t\t\t\tconst listHTML = `<ol>\n\t\t\t\t<li>chr</li>\n\t\t\t\t<li>start</li>\n\t\t\t\t<li>stop</li>\n\t\t\t\t<li>value</li>\n\t\t\t\t</ol>\n\t\t\t\t<p>Example:</p>\n<pre style=\"margin-left: 10px;\">\nchr1\t1\t100000000\t0.5\nchr1\t100000000\t200000000\t-0.5\n</pre>`\n\t\t\t\tmainTabCallback(dataTypeTab, obj, listHTML)\n\t\t\t}\n\t\t}\n\t]\n\n\tnew Tabs({ holder: dataTypeTabs_div, tabs, tabsPosition: 'vertical', linePosition: 'right' }).main()\n}\n\n/**\n * Creates the contents for the main tabs in a consistent layout.\n * @param dataTypeTab\n * @param obj\n * @param listHTML\n */\nfunction mainTabCallback(dataTypeTab: Tab, obj: Partial<DiscoUIArgs>, listHTML: any) {\n\tdataTypeTab.contentHolder.style('border', 'none').style('display', 'block').style('padding-left', '30px')\n\tmakeDataInputTabs(dataTypeTab, obj)\n\n\tdataTypeTab.contentHolder\n\t\t.append('div')\n\t\t.style('padding', '15px 0px 0px 10px')\n\t\t.style('opacity', 0.75)\n\t\t.text(`Provide ${dataTypeTab.label} data in tab delimited format with the following columns:`)\n\t\t.append('span')\n\t\t.html(listHTML)\n\tdelete dataTypeTab.callback\n}\n\n/**\n * Creates the different input tabs within the data type tabs. Users are able to upload a file or paste data.\n * TODO: add option to provide a file path from server or url\n * @param dataTypeTab\n * @param obj\n */\nfunction makeDataInputTabs(dataTypeTab: Tab, obj: Partial<DiscoUIArgs>) {\n\tconst width = 95\n\tconst tabs = [\n\t\t// //TODO: implement file upload and file path input once launch.adhoc is ready\n\t\t{\n\t\t\tlabel: 'Select File',\n\t\t\tactive: true,\n\t\t\twidth,\n\t\t\tcallback: async (event: MouseEvent, tab: Tab) => {\n\t\t\t\tconst key = dataTypeTab.key\n\t\t\t\ttab.contentHolder.style('border', 'none').style('display', 'block')\n\t\t\t\tappear(tab.contentHolder)\n\n\t\t\t\ttab.contentHolder\n\t\t\t\t\t.append('div')\n\t\t\t\t\t.style('padding', '0px 0px 5px 15px')\n\t\t\t\t\t.style('opacity', 0.65)\n\t\t\t\t\t.text(`Select a local file`)\n\t\t\t\tmakeFileUpload(tab, obj, key)\n\n\t\t\t\tdelete tab.callback\n\t\t\t}\n\t\t},\n\t\t// {\n\t\t// \tlabel: 'File Path',\n\t\t// \tactive: false,\n\t\t// \twidth,\n\t\t// \tcallback: async (tab: Tab) => {\n\t\t// \t\tconst key = dataTypeTab.key\n\t\t// \t\ttab.contentHolder.style('border', 'none').style('display', 'block')\n\t\t// \t\tappear(tab.contentHolder)\n\n\t\t// \t\ttab.contentHolder\n\t\t// \t\t\t.append('div')\n\t\t// \t\t\t.html(`<p style=\"margin-left: 10px; opacity: 0.65;\">Provide a URL file path.</p>`)\n\t\t// \t\tuiutils.makePrompt(tab.contentHolder, 'URL')\n\t\t// \t\tmakeTextEntryFilePathInput(tab.contentHolder, obj, key)\n\n\t\t// \t\tdelete tab.callback\n\t\t// \t}\n\t\t// },\n\t\t{\n\t\t\tlabel: 'Paste Data',\n\t\t\tactive: false,\n\t\t\twidth,\n\t\t\tcallback: async (event: MouseEvent, tab: Tab) => {\n\t\t\t\tconst key = dataTypeTab.key\n\t\t\t\ttab.contentHolder.style('border', 'none').style('display', 'block')\n\t\t\t\tappear(tab.contentHolder)\n\n\t\t\t\tmakeCopyPasteInput(tab, obj, key)\n\t\t\t\tdelete tab.callback\n\t\t\t}\n\t\t}\n\t]\n\tnew Tabs({ holder: dataTypeTab.contentHolder, tabs }).main()\n}\n\n// function makeTextEntryFilePathInput(tab: Tab, obj: Partial<DiscoUIArgs>, key: string) {\n// \t// Renders the file path input div and callback.\n// \tconst filepath_div = tab.contentHolder.append('div').style('display', 'inline-block')\n// \tconst filepath = uiutils\n// \t\t.makeTextInput(filepath_div)\n// \t\t.style('border', '1px solid rgb(138, 177, 212)')\n// \t\t.classed('disco_input', true)\n// \t\t.on('keyup', async () => {\n// \t\t\tconst data = filepath.property('value').trim()\n// \t\t\tif (uiutils.isURL(data)) {\n// \t\t\t\tawait fetch(data)\n// \t\t\t\t\t.then(req => req.text())\n// \t\t\t\t\t.then(text => {\n// \t\t\t\t\t\tobj.data![key + 'Url'] = text\n// \t\t\t\t\t})\n// \t\t\t} else {\n// \t\t\t\t//TODO: implement serverside filepaths(?)\n// \t\t\t}\n// \t\t})\n// }\n\n/**\n * Renders the select file div. Callback captures file text as a string.\n * ?TODO: maybe allow other file types and detect the delimiter (uiutils.detectDelimiter)\n * @param tab\n * @param obj\n * @param key\n */\nfunction makeFileUpload(tab: Tab, obj: Partial<DiscoUIArgs>, key: string) {\n\tconst upload_div = tab.contentHolder.append('div').style('display', 'inline-block')\n\tconst upload = uiutils.makeFileUpload(upload_div).classed('disco_input', true)\n\tupload.on('change', (event: KeyboardEvent) => {\n\t\tconst file = (event.target as any).files[0]\n\t\tconst reader = new FileReader()\n\t\treader.onload = (event: any) => {\n\t\t\tobj.data![key + 'Text'] = event.target.result\n\t\t}\n\t\treader.readAsText(file, 'utf8')\n\t})\n}\n\n/**\n * Renders the copy/paste div and callback.\n * @param tab\n * @param obj\n * @param key\n */\nfunction makeCopyPasteInput(tab: Tab, obj: Partial<DiscoUIArgs>, key: string) {\n\tconst paste_div = tab.contentHolder.append('div').style('display', 'block')\n\tconst paste = uiutils\n\t\t.makeTextAreaInput({ div: paste_div, cols: 50 })\n\t\t.style('border', '1px solid rgb(138, 177, 212)')\n\t\t.style('margin', '0px 0px 0px 20px')\n\t\t.classed('disco_input', true)\n\t\t.on('keyup', async () => {\n\t\t\tobj.data![key + 'Text'] = paste.property('value').trim()\n\t\t})\n}\n\nfunction submitButton(\n\tdiv: Selection<HTMLDivElement, any, any, any>,\n\tobj: Partial<DiscoUIArgs>,\n\tgenomes: any,\n\twrapper: Selection<HTMLDivElement, any, any, any>,\n\tholder: Selection<HTMLDivElement, any, any, any>\n) {\n\tconst submit = uiutils.makeBtn({ div, text: 'Create Disco Plot' })\n\tconst errorMessage_div = div.append('div')\n\tsubmit\n\t\t.style('margin-right', '10px')\n\t\t.style('font-size', '16px')\n\t\t.classed('sjpp-ui-submitBtn', true)\n\t\t.attr('type', 'submit')\n\t\t.on('click', () => {\n\t\t\tif (!obj.data || obj.data == undefined) {\n\t\t\t\tconst sayerrorDiv = errorMessage_div.append('div').style('display', 'inline-block').style('max-width', '20vw')\n\t\t\t\tsayerror(sayerrorDiv, 'Please provide data')\n\t\t\t\tsetTimeout(() => sayerrorDiv.remove(), 2000)\n\t\t\t} else {\n\t\t\t\tconst genomeObj = genomes[obj.genome!.options[obj.genome!.selectedIndex].text]\n\t\t\t\twrapper.remove()\n\t\t\t\t/** launch() validates data and returns errors to the browser */\n\t\t\t\tlaunch(obj.data as DiscoPlotArgs, genomeObj, holder)\n\t\t\t\tbackButton(holder, genomes)\n\t\t\t}\n\t\t})\n}\n\nfunction backButton(holder: Selection<HTMLDivElement, any, any, any>, genomes: any) {\n\tholder\n\t\t.append('button')\n\t\t.html('&#171; Back')\n\t\t.on('click', () => {\n\t\t\tholder.selectAll('*').remove()\n\t\t\tinit_discoplotUI(holder, genomes, false)\n\t\t})\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["makeFileUpload", "event"]
7
+ }
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  blocklazyload
3
- } from "./chunk-R4HGXSAB.js";
3
+ } from "./chunk-3KACDHMK.js";
4
4
  import {
5
5
  hicParseFile
6
- } from "./chunk-UID2IBJW.js";
6
+ } from "./chunk-7YTE6X7M.js";
7
7
  import {
8
8
  ColorScale
9
- } from "./chunk-ETCTZFTA.js";
9
+ } from "./chunk-ZW54ZHQV.js";
10
10
  import "./chunk-PWTXVCZ4.js";
11
11
  import {
12
12
  showErrorsWithCounter
@@ -18,14 +18,14 @@ import {
18
18
  font,
19
19
  newpane,
20
20
  tkt
21
- } from "./chunk-TRWKFVMG.js";
21
+ } from "./chunk-TLIXHORR.js";
22
22
  import {
23
23
  Menu
24
24
  } from "./chunk-7YY2KB6H.js";
25
25
  import "./chunk-2BM5YZ6X.js";
26
26
  import {
27
27
  dofetch3
28
- } from "./chunk-H56REZKF.js";
28
+ } from "./chunk-3OQMDDNE.js";
29
29
  import {
30
30
  getAppInit,
31
31
  getCompInit,
@@ -33,7 +33,7 @@ import {
33
33
  } from "./chunk-BT2NCQ7T.js";
34
34
  import {
35
35
  bplen
36
- } from "./chunk-KSBNOE4E.js";
36
+ } from "./chunk-XNPZE2WZ.js";
37
37
  import "./chunk-WMK7VUYQ.js";
38
38
  import {
39
39
  axisBottom,
@@ -2266,4 +2266,4 @@ var hicInit = getAppInit(HicApp);
2266
2266
  export {
2267
2267
  hicInit
2268
2268
  };
2269
- //# sourceMappingURL=HicApp-SZPXJVFW.js.map
2269
+ //# sourceMappingURL=HicApp-OMCFNTGD.js.map
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-2BM5YZ6X.js";
4
4
  import {
5
5
  dofetch3
6
- } from "./chunk-H56REZKF.js";
6
+ } from "./chunk-3OQMDDNE.js";
7
7
  import {
8
8
  copyMerge,
9
9
  getCompInit
@@ -23526,4 +23526,4 @@ export {
23526
23526
  getPlotConfig,
23527
23527
  wsiViewer
23528
23528
  };
23529
- //# sourceMappingURL=WSIViewer-ADLNYPJL.js.map
23529
+ //# sourceMappingURL=WSIViewer-3KHJY7AK.js.map