@sjcrh/proteinpaint-client 2.181.0 → 2.183.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (981) hide show
  1. package/dist/2dmaf-6ZTETSC5.js +1371 -0
  2. package/dist/AIProjectAdmin-ZT3XKBBT.js +830 -0
  3. package/dist/AIProjectAdmin-ZT3XKBBT.js.map +7 -0
  4. package/dist/AppHeader-U7SJPIBS.js +833 -0
  5. package/dist/BoxPlot-QGHLZ67V.js +1217 -0
  6. package/dist/BoxPlot-QGHLZ67V.js.map +7 -0
  7. package/dist/CorrelationVolcano-7SE4CTBW.js +617 -0
  8. package/dist/DE-PZ7RHPBS.js +93 -0
  9. package/dist/DE-PZ7RHPBS.js.map +7 -0
  10. package/dist/DEinput-UZEQIU2V.js +297 -0
  11. package/dist/DEinput-UZEQIU2V.js.map +7 -0
  12. package/dist/DifferentialAnalysis-L6BOEYVO.js +238 -0
  13. package/dist/Disco-6FDT6KRM.js +3235 -0
  14. package/dist/Disco-6FDT6KRM.js.map +7 -0
  15. package/dist/Disco.UI-HKOUAD4P.js +242 -0
  16. package/dist/DmrPlot-3R24PTXP.js +640 -0
  17. package/dist/GB-SZVYZASR.js +1125 -0
  18. package/dist/HicApp-SEEJETVE.js +2248 -0
  19. package/dist/NumBinaryEditor-SDQFJ3FW.js +268 -0
  20. package/dist/NumBinaryEditor-SDQFJ3FW.js.map +7 -0
  21. package/dist/NumBinaryEditor.unit.spec-76ZZXTYC.js +284 -0
  22. package/dist/NumContEditor-G75O4YZE.js +105 -0
  23. package/dist/NumContEditor.unit.spec-BFUZRBPL.js +167 -0
  24. package/dist/NumCustomBinEditor-ILTPHCEF.js +36 -0
  25. package/dist/NumCustomBinEditor.unit.spec-GFIYV55V.js +282 -0
  26. package/dist/NumDiscreteEditor-5K3OKUOE.js +177 -0
  27. package/dist/NumDiscreteEditor-5K3OKUOE.js.map +7 -0
  28. package/dist/NumDiscreteEditor.unit.spec-NZ4KWPFK.js +200 -0
  29. package/dist/NumRegularBinEditor-7ZJ2MEMY.js +36 -0
  30. package/dist/NumRegularBinEditor.unit.spec-QGVJET65.js +225 -0
  31. package/dist/NumSplineEditor-KE4UPODZ.js +190 -0
  32. package/dist/NumSplineEditor-KE4UPODZ.js.map +7 -0
  33. package/dist/NumSplineEditor.unit.spec-YQOOZA7S.js +197 -0
  34. package/dist/NumericDensity-RL42P4QC.js +36 -0
  35. package/dist/NumericDensity.unit.spec-Y6RMTYC7.js +219 -0
  36. package/dist/NumericHandler-4QIX324I.js +37 -0
  37. package/dist/NumericHandler.unit.spec-T6F5QYP6.js +217 -0
  38. package/dist/RunChart2-ASGCKKER.js +756 -0
  39. package/dist/RunChart2-ASGCKKER.js.map +7 -0
  40. package/dist/SC-H2YCKSBH.js +682 -0
  41. package/dist/SC-H2YCKSBH.js.map +7 -0
  42. package/dist/Volcano-QBYYJYVW.js +1185 -0
  43. package/dist/Volcano-QBYYJYVW.js.map +7 -0
  44. package/dist/WSIViewer-NDHWFVAB.js +47974 -0
  45. package/dist/WSIViewer-NDHWFVAB.js.map +7 -0
  46. package/dist/WsiSamplesPlot-CXGWPCDL.js +163 -0
  47. package/dist/adSandbox-DE4VRO4Z.js +36 -0
  48. package/dist/alphaGenome-FSIGC5ZT.js +173 -0
  49. package/dist/app-KZGKWQMU.js +47 -0
  50. package/dist/app-MQRJ7FVL.js +35 -0
  51. package/dist/app.js +17 -17
  52. package/dist/bam-BDWTA4O3.js +857 -0
  53. package/dist/bam-BDWTA4O3.js.map +7 -0
  54. package/dist/barchart-4Q6LVJY4.js +45 -0
  55. package/dist/barchart.data-EXENRVMU.js +22 -0
  56. package/dist/barchart.events-XRGND6I7.js +45 -0
  57. package/dist/barchart.integration.spec-VQITP4YH.js +1675 -0
  58. package/dist/bars.renderer-S7A7I6BQ.js +12 -0
  59. package/dist/block-2MABX5QO.js +6200 -0
  60. package/dist/block-2MABX5QO.js.map +7 -0
  61. package/dist/block.init-NCNSE3HD.js +36 -0
  62. package/dist/block.mds.expressionrank-JYZARS7T.js +357 -0
  63. package/dist/block.mds.geneboxplot-FD2MCIHV.js +826 -0
  64. package/dist/block.mds.junction-LOHVQBIU.js +1543 -0
  65. package/dist/block.mds.svcnv-Z7SAYPQL.js +6799 -0
  66. package/dist/block.svg-LNJOKQNN.js +162 -0
  67. package/dist/block.tk.aicheck-IXCMMAGV.js +281 -0
  68. package/dist/block.tk.ase-WYRYFP6N.js +363 -0
  69. package/dist/block.tk.bam-EIVBNGAL.js +1904 -0
  70. package/dist/block.tk.bedgraphdot-3FHLNCU7.js +382 -0
  71. package/dist/block.tk.bigwig.ui-YDQU5PC4.js +209 -0
  72. package/dist/block.tk.hicstraw-S3ROL3CV.js +821 -0
  73. package/dist/block.tk.junction-DL7RNWX3.js +2362 -0
  74. package/dist/block.tk.junction.textmatrixui-Z6I7IEDY.js +197 -0
  75. package/dist/block.tk.ld-XHVU6L56.js +97 -0
  76. package/dist/block.tk.menu-FPLAEEFY.js +1027 -0
  77. package/dist/block.tk.pgv-6ZZ2QGNO.js +942 -0
  78. package/dist/brainImaging-VSOOMITW.js +421 -0
  79. package/dist/chat-LW23PIG5.js +148 -0
  80. package/dist/chunk-2A2KM5DU.js +117 -0
  81. package/dist/chunk-2A2KM5DU.js.map +7 -0
  82. package/dist/chunk-2LULD7RN.js +31 -0
  83. package/dist/chunk-36DYWBU7.js +514 -0
  84. package/dist/chunk-36DYWBU7.js.map +7 -0
  85. package/dist/chunk-3AGB6HL4.js +158 -0
  86. package/dist/chunk-3AVDNIDN.js +55 -0
  87. package/dist/chunk-3DCABJHB.js +381 -0
  88. package/dist/chunk-3JMB3OSC.js +102 -0
  89. package/dist/chunk-3UEMY45Y.js +215 -0
  90. package/dist/chunk-3UEMY45Y.js.map +7 -0
  91. package/dist/chunk-4RR4KPRJ.js +1205 -0
  92. package/dist/chunk-4RR4KPRJ.js.map +7 -0
  93. package/dist/chunk-5RFB7TYT.js +92 -0
  94. package/dist/chunk-5UMPBVA6.js +534 -0
  95. package/dist/chunk-6C2SBTLR.js +407 -0
  96. package/dist/chunk-6C2SBTLR.js.map +7 -0
  97. package/dist/chunk-6ITDJ5UR.js +261 -0
  98. package/dist/chunk-6ITDJ5UR.js.map +7 -0
  99. package/dist/chunk-6LAE5AVA.js +13624 -0
  100. package/dist/chunk-77ZJGPK2.js +289 -0
  101. package/dist/chunk-77ZJGPK2.js.map +7 -0
  102. package/dist/chunk-7FKIAQ4K.js +17 -0
  103. package/dist/chunk-7FKIAQ4K.js.map +7 -0
  104. package/dist/chunk-7RN3L2BX.js +1788 -0
  105. package/dist/chunk-7RN3L2BX.js.map +7 -0
  106. package/dist/chunk-7VV43ICF.js +272 -0
  107. package/dist/chunk-A6TQGNDQ.js +421 -0
  108. package/dist/chunk-A6TQGNDQ.js.map +7 -0
  109. package/dist/chunk-A742TQD2.js +615 -0
  110. package/dist/chunk-A7E3JZ5P.js +56 -0
  111. package/dist/chunk-A7E3JZ5P.js.map +7 -0
  112. package/dist/chunk-AFLFPYJI.js +480 -0
  113. package/dist/chunk-APOHXHKH.js +526 -0
  114. package/dist/chunk-APOHXHKH.js.map +7 -0
  115. package/dist/chunk-BAY47D5E.js +226 -0
  116. package/dist/chunk-CFHKYLDY.js +26 -0
  117. package/dist/chunk-CTAKX5CT.js +129 -0
  118. package/dist/chunk-CVBQWXLH.js +455 -0
  119. package/dist/chunk-CVBQWXLH.js.map +7 -0
  120. package/dist/chunk-D4QFQQWJ.js +170 -0
  121. package/dist/chunk-DGMK7SXX.js +203 -0
  122. package/dist/chunk-DNCSPTOQ.js +446 -0
  123. package/dist/chunk-DTDQKGIQ.js +2672 -0
  124. package/dist/chunk-E4NVHKWD.js +142 -0
  125. package/dist/chunk-E6KEZENR.js +4207 -0
  126. package/dist/chunk-E6KEZENR.js.map +7 -0
  127. package/dist/chunk-EY2KBPHJ.js +261 -0
  128. package/dist/chunk-EY2KBPHJ.js.map +7 -0
  129. package/dist/chunk-FRBYOOWT.js +229 -0
  130. package/dist/chunk-FRBYOOWT.js.map +7 -0
  131. package/dist/chunk-HWHG63LH.js +148 -0
  132. package/dist/chunk-HWHG63LH.js.map +7 -0
  133. package/dist/chunk-HYZG6OPC.js +467 -0
  134. package/dist/chunk-HYZG6OPC.js.map +7 -0
  135. package/dist/chunk-I4IKRKYJ.js +2815 -0
  136. package/dist/chunk-IEQSUAIO.js +6364 -0
  137. package/dist/chunk-IET6P5MV.js +335 -0
  138. package/dist/chunk-IET6P5MV.js.map +7 -0
  139. package/dist/chunk-JMPSZMDD.js +52 -0
  140. package/dist/chunk-JXOL73PT.js +2784 -0
  141. package/dist/chunk-K62XUHA4.js +100 -0
  142. package/dist/chunk-KQMEJUWI.js +815 -0
  143. package/dist/chunk-L4YGMXLX.js +37 -0
  144. package/dist/chunk-L4YGMXLX.js.map +7 -0
  145. package/dist/chunk-M7W2GYSM.js +4961 -0
  146. package/dist/chunk-M7W2GYSM.js.map +7 -0
  147. package/dist/chunk-MV6O4I2B.js +441 -0
  148. package/dist/chunk-MXNSW55L.js +148 -0
  149. package/dist/chunk-NB7NLFGZ.js +228 -0
  150. package/dist/chunk-NGGWK6HX.js +302 -0
  151. package/dist/chunk-OGGFS66K.js +1087 -0
  152. package/dist/chunk-OSM7YS23.js +276 -0
  153. package/dist/chunk-OXJ2TWDO.js +20644 -0
  154. package/dist/chunk-OXJ2TWDO.js.map +7 -0
  155. package/dist/chunk-Q7PYFSNU.js +107 -0
  156. package/dist/chunk-QMI222IJ.js +386 -0
  157. package/dist/chunk-QRIRWDIW.js +252 -0
  158. package/dist/chunk-R6L6NVEC.js +14 -0
  159. package/dist/chunk-RLTLYKHO.js +34 -0
  160. package/dist/chunk-S5ZI6N2I.js +293 -0
  161. package/dist/chunk-S7T7OZC7.js +158 -0
  162. package/dist/chunk-S7T7OZC7.js.map +7 -0
  163. package/dist/chunk-TEZLFSOV.js +54 -0
  164. package/dist/chunk-TFI7ZZJG.js +50 -0
  165. package/dist/chunk-TFI7ZZJG.js.map +7 -0
  166. package/dist/chunk-UEMTP6ZC.js +824 -0
  167. package/dist/chunk-UJU3Q7QJ.js +119 -0
  168. package/dist/chunk-V245THQC.js +2370 -0
  169. package/dist/chunk-V6DLLX4N.js +176 -0
  170. package/dist/chunk-V6DLLX4N.js.map +7 -0
  171. package/dist/chunk-VIPMLSZP.js +217 -0
  172. package/dist/chunk-VQPS4SXU.js +97 -0
  173. package/dist/chunk-VQPS4SXU.js.map +7 -0
  174. package/dist/chunk-VUUZJANK.js +1150 -0
  175. package/dist/chunk-VYIO7T6J.js +82 -0
  176. package/dist/chunk-VYIO7T6J.js.map +7 -0
  177. package/dist/chunk-W345H42C.js +273 -0
  178. package/dist/chunk-W345H42C.js.map +7 -0
  179. package/dist/chunk-WGHO2NCP.js +205 -0
  180. package/dist/chunk-WGL6FIUE.js +330 -0
  181. package/dist/chunk-WPHOEG56.js +194 -0
  182. package/dist/chunk-WS5XVKPJ.js +470 -0
  183. package/dist/chunk-X6URQAFD.js +1271 -0
  184. package/dist/chunk-X6URQAFD.js.map +7 -0
  185. package/dist/chunk-XYFDBYOY.js +1658 -0
  186. package/dist/chunk-XYFDBYOY.js.map +7 -0
  187. package/dist/chunk-Y6RCKITI.js +1155 -0
  188. package/dist/chunk-Y6RCKITI.js.map +7 -0
  189. package/dist/chunk-YALAQWX4.js +368 -0
  190. package/dist/chunk-YALAQWX4.js.map +7 -0
  191. package/dist/chunk-YK5NFMHR.js +269 -0
  192. package/dist/chunk-YK5NFMHR.js.map +7 -0
  193. package/dist/chunk-YY4CKQJ6.js +95 -0
  194. package/dist/chunk-Z3KV6SC2.js +629 -0
  195. package/dist/chunk-ZGT4XP5J.js +1426 -0
  196. package/dist/chunk-ZGT4XP5J.js.map +7 -0
  197. package/dist/chunk-ZIBWLDQI.js +230 -0
  198. package/dist/chunk-ZIBWLDQI.js.map +7 -0
  199. package/dist/condition-JKQIRMMW.js +330 -0
  200. package/dist/controls-324AGOZG.js +39 -0
  201. package/dist/controls.config-TA4NNARU.js +37 -0
  202. package/dist/correlation-3Z36TKC2.js +96 -0
  203. package/dist/cuminc-4DY2CSZF.js +1147 -0
  204. package/dist/cuminc.integration.spec-SFQPLMSF.js +676 -0
  205. package/dist/customdata.inputui-IKGPEBXV.js +287 -0
  206. package/dist/customdata.inputui-IKGPEBXV.js.map +7 -0
  207. package/dist/dataDownload-3AE2N7KI.js +328 -0
  208. package/dist/dataDownload.integration.spec-DKOT6BJP.js +191 -0
  209. package/dist/databrowser.ui-ATODRS5P.js +419 -0
  210. package/dist/dictionary-WHDZBW5M.js +109 -0
  211. package/dist/dictionary-WHDZBW5M.js.map +7 -0
  212. package/dist/dnaMethylation-TVA5YMOR.js +36 -0
  213. package/dist/dnaMethylation.integration.spec-JTWQR6XY.js +165 -0
  214. package/dist/dnaMethylation.integration.spec-JTWQR6XY.js.map +7 -0
  215. package/dist/e2pca-KHVDNFEZ.js +348 -0
  216. package/dist/ep-B5GAAMNM.js +1254 -0
  217. package/dist/expclust.gdc.spec-EDPX7V6K.js +305 -0
  218. package/dist/facet-ZCSXKXIO.js +519 -0
  219. package/dist/geneExpClustering-ERNCMAED.js +246 -0
  220. package/dist/geneExpression-HUOXWETT.js +36 -0
  221. package/dist/geneExpression-X2KXJPND.js +312 -0
  222. package/dist/geneExpression.unit.spec-5QQB4ISW.js +100 -0
  223. package/dist/geneORA-B5UK77KL.js +276 -0
  224. package/dist/geneVariant-7MGUAIZ6.js +39 -0
  225. package/dist/geneVariant-FK3KZJ2K.js +37 -0
  226. package/dist/geneVariant.integration.spec-C6TYWKIC.js +196 -0
  227. package/dist/genefusion.ui-VKAINMY7.js +249 -0
  228. package/dist/geneset-673KAZVX.js +194 -0
  229. package/dist/genomeBrowser.spec-T6TQCJ3O.js +279 -0
  230. package/dist/grin2-376BD4XY.js +1554 -0
  231. package/dist/grin2-OALS75LC.js +1031 -0
  232. package/dist/gsea-25LD2LGP.js +45 -0
  233. package/dist/hierCluster-7KU3K52V.js +58 -0
  234. package/dist/hierCluster-M5VVWKQK.js +62 -0
  235. package/dist/hierCluster.config-EDO3SH2P.js +38 -0
  236. package/dist/hierCluster.integration.spec-UOX7J2XD.js +374 -0
  237. package/dist/hierCluster.interactivity-FEFZDXML.js +52 -0
  238. package/dist/hierCluster.renderers-A6MEGO2B.js +21 -0
  239. package/dist/imagePlot-FPXZ2H5Z.js +139 -0
  240. package/dist/importPlot-VKWPSFEK.js +8 -0
  241. package/dist/isoformExpression-2R2TOB6P.js +38 -0
  242. package/dist/isoformExpression.unit.spec-ZKFKOPKT.js +206 -0
  243. package/dist/isoformExpression.unit.spec-ZKFKOPKT.js.map +7 -0
  244. package/dist/jspdf.es.min-FC3BCETM.js +40 -0
  245. package/dist/launch.adhoc-242RS6DW.js +40 -0
  246. package/dist/leftlabel.sample-OJW3AE64.js +257 -0
  247. package/dist/lollipop-TRQ3LK7Y.js +166 -0
  248. package/dist/maf-ZBOLN2FE.js +450 -0
  249. package/dist/maf-ZBOLN2FE.js.map +7 -0
  250. package/dist/maftimeline-GVX7NJP7.js +591 -0
  251. package/dist/matrix-73KRNXLM.js +57 -0
  252. package/dist/matrix-US3OXYRY.js +62 -0
  253. package/dist/matrix.cells-U7AQNEBP.js +28 -0
  254. package/dist/matrix.config-Q57D7C3F.js +39 -0
  255. package/dist/matrix.controls-AWXDRSWP.js +37 -0
  256. package/dist/matrix.data-EEIY6AO4.js +25 -0
  257. package/dist/matrix.dom-6QL3AJMW.js +11 -0
  258. package/dist/matrix.groups-CUB6UWC5.js +26 -0
  259. package/dist/matrix.integration.spec-PQH67KRM.js +3070 -0
  260. package/dist/matrix.interactivity-JW4AXAWO.js +40 -0
  261. package/dist/matrix.layout-I56KRVCO.js +42 -0
  262. package/dist/matrix.legend-42LQGAGX.js +22 -0
  263. package/dist/matrix.renderers-IX3FCNBK.js +36 -0
  264. package/dist/matrix.serieses-4B2WB526.js +21 -0
  265. package/dist/matrix.sort-BJACNR7G.js +27 -0
  266. package/dist/matrix.sort.unit.spec-3KKDKIPY.js +470 -0
  267. package/dist/matrix.sorterUi-W6XFYZY2.js +18 -0
  268. package/dist/matrix.sorterUi.unit.spec-CMJ7EBIW.js +340 -0
  269. package/dist/mavb-ROAE6WYA.js +730 -0
  270. package/dist/mds.fimo-UGK5OWCF.js +516 -0
  271. package/dist/mds.samplescatterplot-5KFUAYSB.js +1548 -0
  272. package/dist/mds.survivalplot-2EVNZUX5.js +481 -0
  273. package/dist/oncomatrix-UGFXSXQJ.js +293 -0
  274. package/dist/oncomatrix-UGFXSXQJ.js.map +7 -0
  275. package/dist/oncomatrix.spec-FEP7BR7L.js +446 -0
  276. package/dist/plot.2dvaf-WXGLWCOC.js +375 -0
  277. package/dist/plot.app-IZAFRTBU.js +39 -0
  278. package/dist/plot.barplot-Z4VWOPFJ.js +100 -0
  279. package/dist/plot.boxplot-QU2KZSB7.js +150 -0
  280. package/dist/plot.brainImaging-U643YIK7.js +51 -0
  281. package/dist/plot.disco-3BV6YEBC.js +101 -0
  282. package/dist/plot.disco-3BV6YEBC.js.map +7 -0
  283. package/dist/plot.dzi-DWXPOOQE.js +33 -0
  284. package/dist/plot.ssgq-GXB2GZO3.js +137 -0
  285. package/dist/plot.vaf2cov-EKRIADPB.js +257 -0
  286. package/dist/plot.wsi-E2LLE6HI.js +36 -0
  287. package/dist/polar-MZLIUXHO.js +184 -0
  288. package/dist/polar2-IUVHNQM4.js +226 -0
  289. package/dist/profile.spec-JRW6KYUI.js +78 -0
  290. package/dist/profileBarchart-N7HJMYZ5.js +265 -0
  291. package/dist/profileForms-Q5TPGPQP.js +438 -0
  292. package/dist/profilePlot-TXTUYDVE.js +52 -0
  293. package/dist/profileRadar-ICEASI7W.js +261 -0
  294. package/dist/profileRadarFacility-NFMRNJYX.js +261 -0
  295. package/dist/profileRadarFacility-NFMRNJYX.js.map +7 -0
  296. package/dist/proteinView-K3JFNORQ.js +633 -0
  297. package/dist/proteinView-K3JFNORQ.js.map +7 -0
  298. package/dist/proteomeAbundance-DE4NVBCN.js +21 -0
  299. package/dist/proteomeAbundance-LTB3QR3G.js +63 -0
  300. package/dist/qualitative-DFGWQURY.js +41 -0
  301. package/dist/regression-TTQTAEGD.js +54 -0
  302. package/dist/regression.inputs-2LU2XRGC.js +46 -0
  303. package/dist/regression.inputs.term-G57GL57T.js +46 -0
  304. package/dist/regression.inputs.values.table-JSEM3PXL.js +43 -0
  305. package/dist/regression.integration.spec-XJQJAIC3.js +782 -0
  306. package/dist/regression.integration.spec-XJQJAIC3.js.map +7 -0
  307. package/dist/regression.results-3YNM6LLQ.js +38 -0
  308. package/dist/regression.spec-S6WFCPSW.js +706 -0
  309. package/dist/report-YRAV4MY4.js +220 -0
  310. package/dist/sampleScatter.spec-MBJ4XNTX.js +200 -0
  311. package/dist/sampleView-IUR3ZEN7.js +46 -0
  312. package/dist/samplelst-C2NBFGH6.js +109 -0
  313. package/dist/samplematrix-AOK2HHSB.js +2196 -0
  314. package/dist/sc-XT3Z5XJI.js +84 -0
  315. package/dist/scatter-SAHKZRFL.js +800 -0
  316. package/dist/scatter.integration.spec-6KRDNHHH.js +1194 -0
  317. package/dist/scatter.integration.spec-6KRDNHHH.js.map +7 -0
  318. package/dist/selectGenomeWithTklst-2YVZ4JWV.js +132 -0
  319. package/dist/singleCellCellType-NFN5GQJM.js +36 -0
  320. package/dist/singleCellCellType.unit.spec-CR4IJ4DA.js +158 -0
  321. package/dist/singleCellCellType.unit.spec-CR4IJ4DA.js.map +7 -0
  322. package/dist/singleCellGeneExpression-7AQGLXTR.js +36 -0
  323. package/dist/singleCellGeneExpression.unit.spec-QYNWSV2G.js +151 -0
  324. package/dist/singleCellGeneExpression.unit.spec-QYNWSV2G.js.map +7 -0
  325. package/dist/singleCellPlot-IWFEG44C.js +51 -0
  326. package/dist/singlecell-3QNV4OMZ.js +1570 -0
  327. package/dist/singlecell-EATPLH66.js +84 -0
  328. package/dist/snp-UP7WL7WG.js +36 -0
  329. package/dist/snp.unit.spec-Y5NWQ442.js +174 -0
  330. package/dist/snplocus-WAQK2AZG.js +206 -0
  331. package/dist/spliceevent.a53ss.diagram-FFK27UIB.js +149 -0
  332. package/dist/spliceevent.exonskip.diagram-KWEF2OZJ.js +275 -0
  333. package/dist/spliceevent.noeventdiagram-PU4TI7OM.js +458 -0
  334. package/dist/ssGSEA-N6QOAVLW.js +36 -0
  335. package/dist/ssGSEA.unit.spec-KQBNZNNP.js +86 -0
  336. package/dist/summarizeCnvGeneexp-NWX4M6LZ.js +161 -0
  337. package/dist/summarizeCnvGeneexp-NWX4M6LZ.js.map +7 -0
  338. package/dist/summarizeGeneexpSurvival-N5VTE2G6.js +106 -0
  339. package/dist/summarizeGeneexpSurvival-N5VTE2G6.js.map +7 -0
  340. package/dist/summarizeMutationCnv-VV7CVAA7.js +162 -0
  341. package/dist/summarizeMutationCnv-VV7CVAA7.js.map +7 -0
  342. package/dist/summarizeMutationDiagnosis-5RHSG7L6.js +38 -0
  343. package/dist/summarizeMutationSurvival-22YYXGS5.js +97 -0
  344. package/dist/summary-P3WIKJS7.js +47 -0
  345. package/dist/summary.integration.spec-ULGRPICW.js +412 -0
  346. package/dist/summaryInput-IH4EVNF5.js +218 -0
  347. package/dist/sunburst-VJJ3UVYC.js +282 -0
  348. package/dist/sunburst-VJJ3UVYC.js.map +7 -0
  349. package/dist/survival-2ZE3N62A.js +44 -0
  350. package/dist/survival-ASCLKIII.js +56 -0
  351. package/dist/survival.integration.spec-C5YXOY77.js +787 -0
  352. package/dist/svg2pdf.es.min-CYTPRWNB.js +3157 -0
  353. package/dist/svgraph-AYR2UPNK.js +1385 -0
  354. package/dist/svmr-MOMW5DNY.js +3840 -0
  355. package/dist/table-PQB6KCEY.js +198 -0
  356. package/dist/termCollection-5AY2AWT4.js +36 -0
  357. package/dist/termCollection-OQMUUTW6.js +177 -0
  358. package/dist/termCollection.unit.spec-BUAXYIJK.js +206 -0
  359. package/dist/tk-EJLFFA5H.js +44 -0
  360. package/dist/tp.ui-WUW6A7KP.js +1457 -0
  361. package/dist/tvs.dt-MVJXQMNU.js +37 -0
  362. package/dist/tvs.dtcnv.categorical-FIIDWVK7.js +38 -0
  363. package/dist/tvs.dtcnv.continuous-JPQU3JA2.js +70 -0
  364. package/dist/tvs.dtfusion-BW35GOQM.js +38 -0
  365. package/dist/tvs.dtsnvindel-AEMFZ4EH.js +38 -0
  366. package/dist/tvs.dtsv-JHTU7UFD.js +38 -0
  367. package/dist/tvs.samplelst-VD2NFFFS.js +102 -0
  368. package/dist/tvs.termCollection-IKE5Q74D.js +151 -0
  369. package/dist/violin-DPMJLHQG.js +44 -0
  370. package/dist/violin.integration.spec-A4PNR4ES.js +1423 -0
  371. package/dist/violin.integration.spec-A4PNR4ES.js.map +7 -0
  372. package/dist/violin.interactivity-TS4DYUE5.js +36 -0
  373. package/dist/violin.renderer-53L4PXUT.js +38 -0
  374. package/dist/vocabulary-4MPFHKYC.js +39 -0
  375. package/package.json +3 -3
  376. package/dist/2dmaf-PFPBHIUI.js +0 -1371
  377. package/dist/AIProjectAdmin-H2GB5ZOX.js +0 -830
  378. package/dist/AIProjectAdmin-H2GB5ZOX.js.map +0 -7
  379. package/dist/AppHeader-FCWML6WH.js +0 -833
  380. package/dist/BoxPlot-QKXGF76K.js +0 -1295
  381. package/dist/BoxPlot-QKXGF76K.js.map +0 -7
  382. package/dist/CorrelationVolcano-ZJ7Q6JBC.js +0 -617
  383. package/dist/DifferentialAnalysis-PWCFCWFY.js +0 -238
  384. package/dist/Disco-IE5JKIF2.js +0 -3199
  385. package/dist/Disco-IE5JKIF2.js.map +0 -7
  386. package/dist/Disco.UI-SR7LSJE3.js +0 -242
  387. package/dist/DmrPlot-UDY7GOSY.js +0 -640
  388. package/dist/GB-GNTOP5C6.js +0 -1125
  389. package/dist/HicApp-FZTJL3OA.js +0 -2248
  390. package/dist/NumBinaryEditor-R5QVG3C4.js +0 -266
  391. package/dist/NumBinaryEditor-R5QVG3C4.js.map +0 -7
  392. package/dist/NumBinaryEditor.unit.spec-BMVRI24W.js +0 -284
  393. package/dist/NumContEditor-6JT5D6IW.js +0 -105
  394. package/dist/NumContEditor.unit.spec-XBQF2SW6.js +0 -167
  395. package/dist/NumCustomBinEditor-MEKEFOQI.js +0 -36
  396. package/dist/NumCustomBinEditor.unit.spec-LEMQJHDT.js +0 -282
  397. package/dist/NumDiscreteEditor-U3N37XRQ.js +0 -170
  398. package/dist/NumDiscreteEditor-U3N37XRQ.js.map +0 -7
  399. package/dist/NumDiscreteEditor.unit.spec-WQM4DLKO.js +0 -200
  400. package/dist/NumRegularBinEditor-HQR5Y6P7.js +0 -36
  401. package/dist/NumRegularBinEditor.unit.spec-FL4IFT7L.js +0 -225
  402. package/dist/NumSplineEditor-OESWMWP5.js +0 -188
  403. package/dist/NumSplineEditor-OESWMWP5.js.map +0 -7
  404. package/dist/NumSplineEditor.unit.spec-HYOXO45B.js +0 -197
  405. package/dist/NumericDensity-GJZ4BBJS.js +0 -36
  406. package/dist/NumericDensity.unit.spec-6LXWAXW7.js +0 -219
  407. package/dist/NumericHandler-LZIMPOHS.js +0 -37
  408. package/dist/NumericHandler.unit.spec-ZSU35AMD.js +0 -217
  409. package/dist/RunChart2-7XV6TIFO.js +0 -756
  410. package/dist/RunChart2-7XV6TIFO.js.map +0 -7
  411. package/dist/SC-E4EYAG26.js +0 -733
  412. package/dist/SC-E4EYAG26.js.map +0 -7
  413. package/dist/Volcano-Z7TJK6PW.js +0 -1187
  414. package/dist/Volcano-Z7TJK6PW.js.map +0 -7
  415. package/dist/WSIViewer-ZH2XABLC.js +0 -47933
  416. package/dist/WSIViewer-ZH2XABLC.js.map +0 -7
  417. package/dist/WsiSamplesPlot-BL47MDHQ.js +0 -163
  418. package/dist/adSandbox-V3NTKVBC.js +0 -36
  419. package/dist/alphaGenome-IQVFCSWQ.js +0 -173
  420. package/dist/app-GJLZ2G2U.js +0 -47
  421. package/dist/app-YSD2U64Q.js +0 -35
  422. package/dist/bam-TRIF3AIQ.js +0 -849
  423. package/dist/bam-TRIF3AIQ.js.map +0 -7
  424. package/dist/barchart-GLLUYTAJ.js +0 -45
  425. package/dist/barchart.data-FRYRGKH3.js +0 -22
  426. package/dist/barchart.events-WODVSHRN.js +0 -45
  427. package/dist/barchart.integration.spec-6POS3V3T.js +0 -1675
  428. package/dist/bars.renderer-T5R3UIBW.js +0 -12
  429. package/dist/block-2QM37YSE.js +0 -6300
  430. package/dist/block-2QM37YSE.js.map +0 -7
  431. package/dist/block.init-7HDLKQVX.js +0 -36
  432. package/dist/block.mds.expressionrank-UIB25S6E.js +0 -357
  433. package/dist/block.mds.geneboxplot-4PQYO3MR.js +0 -826
  434. package/dist/block.mds.junction-DWFYZEC2.js +0 -1543
  435. package/dist/block.mds.svcnv-N3KJJ4GQ.js +0 -6799
  436. package/dist/block.svg-2HBDI7BT.js +0 -162
  437. package/dist/block.tk.aicheck-2M4522IQ.js +0 -281
  438. package/dist/block.tk.ase-URIKF6JD.js +0 -363
  439. package/dist/block.tk.bam-HTDMASHX.js +0 -1904
  440. package/dist/block.tk.bedgraphdot-RVKMSFCQ.js +0 -382
  441. package/dist/block.tk.bigwig.ui-7JPEOIKM.js +0 -209
  442. package/dist/block.tk.hicstraw-72J7UJ2J.js +0 -821
  443. package/dist/block.tk.junction-GGFMBCV5.js +0 -2362
  444. package/dist/block.tk.junction.textmatrixui-44SAYYWE.js +0 -197
  445. package/dist/block.tk.ld-XDKJFEOL.js +0 -97
  446. package/dist/block.tk.menu-46FOTM7H.js +0 -1027
  447. package/dist/block.tk.pgv-ZVONRT4B.js +0 -942
  448. package/dist/brainImaging-CSLO7ODJ.js +0 -421
  449. package/dist/chat-GMD22F3K.js +0 -148
  450. package/dist/chunk-22KWZOCN.js +0 -153
  451. package/dist/chunk-22KWZOCN.js.map +0 -7
  452. package/dist/chunk-2NQ4TM74.js +0 -48
  453. package/dist/chunk-2NQ4TM74.js.map +0 -7
  454. package/dist/chunk-2SRMRC6L.js +0 -421
  455. package/dist/chunk-2SRMRC6L.js.map +0 -7
  456. package/dist/chunk-2TIYJ3PH.js +0 -815
  457. package/dist/chunk-2UWHV2SB.js +0 -261
  458. package/dist/chunk-2UWHV2SB.js.map +0 -7
  459. package/dist/chunk-3656ZY4T.js +0 -237
  460. package/dist/chunk-3656ZY4T.js.map +0 -7
  461. package/dist/chunk-3TU6TRLQ.js +0 -98
  462. package/dist/chunk-3TU6TRLQ.js.map +0 -7
  463. package/dist/chunk-4FJ5GS6P.js +0 -4202
  464. package/dist/chunk-4FJ5GS6P.js.map +0 -7
  465. package/dist/chunk-4FO7KZY2.js +0 -534
  466. package/dist/chunk-4OEOQX4L.js +0 -334
  467. package/dist/chunk-4OEOQX4L.js.map +0 -7
  468. package/dist/chunk-5ZICCKEH.js +0 -4952
  469. package/dist/chunk-5ZICCKEH.js.map +0 -7
  470. package/dist/chunk-6UU7VPDO.js +0 -272
  471. package/dist/chunk-6YLQN7FF.js +0 -441
  472. package/dist/chunk-74QJDBIP.js +0 -480
  473. package/dist/chunk-75EBDB7G.js +0 -21
  474. package/dist/chunk-75EBDB7G.js.map +0 -7
  475. package/dist/chunk-7FXPMQRW.js +0 -34
  476. package/dist/chunk-A2Y3GEUH.js +0 -228
  477. package/dist/chunk-AAEXTQT3.js +0 -330
  478. package/dist/chunk-AG6HVFQY.js +0 -504
  479. package/dist/chunk-AG6HVFQY.js.map +0 -7
  480. package/dist/chunk-AHLUW2BN.js +0 -129
  481. package/dist/chunk-AYDXOUFX.js +0 -1275
  482. package/dist/chunk-AYDXOUFX.js.map +0 -7
  483. package/dist/chunk-BBIPZ2UF.js +0 -52
  484. package/dist/chunk-BBVOZ5BY.js +0 -230
  485. package/dist/chunk-BBVOZ5BY.js.map +0 -7
  486. package/dist/chunk-BHVDOW3W.js +0 -470
  487. package/dist/chunk-BNN32RI2.js +0 -36
  488. package/dist/chunk-BNN32RI2.js.map +0 -7
  489. package/dist/chunk-BQLC6QOH.js +0 -368
  490. package/dist/chunk-BQLC6QOH.js.map +0 -7
  491. package/dist/chunk-C5QOWZK6.js +0 -629
  492. package/dist/chunk-CJJ6LDZM.js +0 -170
  493. package/dist/chunk-CJJ6LDZM.js.map +0 -7
  494. package/dist/chunk-D4U5X2QQ.js +0 -261
  495. package/dist/chunk-D4U5X2QQ.js.map +0 -7
  496. package/dist/chunk-DV444SFD.js +0 -26
  497. package/dist/chunk-DWWAB4YQ.js +0 -102
  498. package/dist/chunk-FP5VKE3Z.js +0 -170
  499. package/dist/chunk-G2MAZI6I.js +0 -205
  500. package/dist/chunk-HLRNIO5K.js +0 -158
  501. package/dist/chunk-HTHH2B6D.js +0 -46
  502. package/dist/chunk-HTHH2B6D.js.map +0 -7
  503. package/dist/chunk-I7X6K4OL.js +0 -217
  504. package/dist/chunk-IC7SUXJD.js +0 -82
  505. package/dist/chunk-IC7SUXJD.js.map +0 -7
  506. package/dist/chunk-ITYEOGLB.js +0 -302
  507. package/dist/chunk-J6XKDYNZ.js +0 -276
  508. package/dist/chunk-JDX4E7ZO.js +0 -381
  509. package/dist/chunk-JWX7GYHP.js +0 -95
  510. package/dist/chunk-KISFQDQE.js +0 -258
  511. package/dist/chunk-KISFQDQE.js.map +0 -7
  512. package/dist/chunk-KLFROH3F.js +0 -203
  513. package/dist/chunk-KQSN7PUK.js +0 -215
  514. package/dist/chunk-KQSN7PUK.js.map +0 -7
  515. package/dist/chunk-L2ED35QZ.js +0 -2815
  516. package/dist/chunk-LLPFFNLV.js +0 -526
  517. package/dist/chunk-LLPFFNLV.js.map +0 -7
  518. package/dist/chunk-LRV4VWRF.js +0 -94
  519. package/dist/chunk-LRV4VWRF.js.map +0 -7
  520. package/dist/chunk-M464GTNI.js +0 -615
  521. package/dist/chunk-MDN3K2BG.js +0 -229
  522. package/dist/chunk-MDN3K2BG.js.map +0 -7
  523. package/dist/chunk-N46WTUX7.js +0 -286
  524. package/dist/chunk-N46WTUX7.js.map +0 -7
  525. package/dist/chunk-NBMJ2UMA.js +0 -194
  526. package/dist/chunk-NI7VSKJI.js +0 -293
  527. package/dist/chunk-NTVM4ZPG.js +0 -2784
  528. package/dist/chunk-O64UTRAC.js +0 -252
  529. package/dist/chunk-OM326NV3.js +0 -100
  530. package/dist/chunk-P4ENJUBN.js +0 -386
  531. package/dist/chunk-PEKVBCIH.js +0 -824
  532. package/dist/chunk-PF6MKI4X.js +0 -92
  533. package/dist/chunk-PJTQP6RL.js +0 -54
  534. package/dist/chunk-PVSRVJBE.js +0 -1201
  535. package/dist/chunk-PVSRVJBE.js.map +0 -7
  536. package/dist/chunk-PZ3L3KM6.js +0 -55
  537. package/dist/chunk-QEHUEG4X.js +0 -1788
  538. package/dist/chunk-QEHUEG4X.js.map +0 -7
  539. package/dist/chunk-QXCVG66S.js +0 -2672
  540. package/dist/chunk-RIGZHHCP.js +0 -119
  541. package/dist/chunk-SEIANPCX.js +0 -142
  542. package/dist/chunk-SK7YVOQN.js +0 -148
  543. package/dist/chunk-SPPZB5ZQ.js +0 -158
  544. package/dist/chunk-SPPZB5ZQ.js.map +0 -7
  545. package/dist/chunk-T5KFRIP4.js +0 -1087
  546. package/dist/chunk-TTSNECVD.js +0 -1413
  547. package/dist/chunk-TTSNECVD.js.map +0 -7
  548. package/dist/chunk-TVXESYIR.js +0 -439
  549. package/dist/chunk-TVXESYIR.js.map +0 -7
  550. package/dist/chunk-U3UR3U3F.js +0 -446
  551. package/dist/chunk-UBS5UVIY.js +0 -13624
  552. package/dist/chunk-UFYU7AKL.js +0 -107
  553. package/dist/chunk-VIYGTRUZ.js +0 -6364
  554. package/dist/chunk-WCTH7CB3.js +0 -31
  555. package/dist/chunk-WGSWVYHY.js +0 -1155
  556. package/dist/chunk-WGSWVYHY.js.map +0 -7
  557. package/dist/chunk-WYZ4COTF.js +0 -226
  558. package/dist/chunk-WZRXJ5LL.js +0 -2370
  559. package/dist/chunk-XDI4UFCZ.js +0 -467
  560. package/dist/chunk-XDI4UFCZ.js.map +0 -7
  561. package/dist/chunk-XZZLEHWC.js +0 -20328
  562. package/dist/chunk-XZZLEHWC.js.map +0 -7
  563. package/dist/chunk-Y7JAPSMG.js +0 -406
  564. package/dist/chunk-Y7JAPSMG.js.map +0 -7
  565. package/dist/chunk-YJ2HC4CP.js +0 -1150
  566. package/dist/chunk-ZLH4PJKX.js +0 -1658
  567. package/dist/chunk-ZLH4PJKX.js.map +0 -7
  568. package/dist/chunk-ZZSDYKD5.js +0 -14
  569. package/dist/condition-S52W57ZO.js +0 -330
  570. package/dist/controls-B4MTTPWO.js +0 -39
  571. package/dist/controls.config-6KBCTIPN.js +0 -37
  572. package/dist/correlation-VSBCBFFP.js +0 -96
  573. package/dist/cuminc-T5ZPAGVB.js +0 -1147
  574. package/dist/cuminc.integration.spec-2QT3IPHU.js +0 -676
  575. package/dist/customdata.inputui-5MHQQHJL.js +0 -285
  576. package/dist/customdata.inputui-5MHQQHJL.js.map +0 -7
  577. package/dist/dataDownload-S4EBNHMW.js +0 -328
  578. package/dist/dataDownload.integration.spec-OVSIWI34.js +0 -191
  579. package/dist/databrowser.ui-EAJS3NXV.js +0 -419
  580. package/dist/dictionary-CQHSMVYF.js +0 -98
  581. package/dist/dictionary-CQHSMVYF.js.map +0 -7
  582. package/dist/dnaMethylation-G3F2INDH.js +0 -36
  583. package/dist/dnaMethylation.integration.spec-FWF4353K.js +0 -179
  584. package/dist/dnaMethylation.integration.spec-FWF4353K.js.map +0 -7
  585. package/dist/e2pca-SLXGPVHP.js +0 -348
  586. package/dist/ep-4HGUSDGJ.js +0 -1254
  587. package/dist/expclust.gdc.spec-JJ42ESKE.js +0 -305
  588. package/dist/facet-6WVTVKDV.js +0 -519
  589. package/dist/geneExpClustering-5LOZPD5X.js +0 -246
  590. package/dist/geneExpression-BJ46UGXW.js +0 -312
  591. package/dist/geneExpression-PTSZWKCM.js +0 -36
  592. package/dist/geneExpression.unit.spec-NW5HTO7F.js +0 -100
  593. package/dist/geneORA-H65EZ7QO.js +0 -276
  594. package/dist/geneVariant-T6GWOVZD.js +0 -39
  595. package/dist/geneVariant-WTDFZTXG.js +0 -37
  596. package/dist/geneVariant.integration.spec-OPSBRUM3.js +0 -196
  597. package/dist/genefusion.ui-RSBCC37C.js +0 -249
  598. package/dist/geneset-B67PAZVL.js +0 -194
  599. package/dist/genomeBrowser.spec-AUTULF4C.js +0 -279
  600. package/dist/grin2-CMBP7XVH.js +0 -1031
  601. package/dist/grin2-JVCNH3KW.js +0 -1554
  602. package/dist/gsea-H774WVPQ.js +0 -45
  603. package/dist/hierCluster-IQTXQUMI.js +0 -58
  604. package/dist/hierCluster-ZQJDXYBD.js +0 -62
  605. package/dist/hierCluster.config-ZHJTZK5L.js +0 -38
  606. package/dist/hierCluster.integration.spec-MSJ5GHHK.js +0 -374
  607. package/dist/hierCluster.interactivity-H2GNO6AA.js +0 -52
  608. package/dist/hierCluster.renderers-2TE6HMK2.js +0 -21
  609. package/dist/imagePlot-FMNMB7JZ.js +0 -139
  610. package/dist/importPlot-N66G43XX.js +0 -8
  611. package/dist/isoformExpression-B64WLO3H.js +0 -38
  612. package/dist/isoformExpression.unit.spec-D2R6CRKO.js +0 -126
  613. package/dist/isoformExpression.unit.spec-D2R6CRKO.js.map +0 -7
  614. package/dist/jspdf.es.min-DO4YWL2R.js +0 -40
  615. package/dist/launch.adhoc-MPRAJ3GN.js +0 -40
  616. package/dist/leftlabel.sample-4JCKYXED.js +0 -257
  617. package/dist/lollipop-25ADHT7O.js +0 -166
  618. package/dist/maf-POYTGXT4.js +0 -442
  619. package/dist/maf-POYTGXT4.js.map +0 -7
  620. package/dist/maftimeline-FOQF6O3X.js +0 -591
  621. package/dist/matrix-LHLAYDTQ.js +0 -57
  622. package/dist/matrix-ZKF7NRAD.js +0 -62
  623. package/dist/matrix.cells-H4TS74FJ.js +0 -28
  624. package/dist/matrix.config-HE7QUDER.js +0 -39
  625. package/dist/matrix.controls-VILCLNSC.js +0 -37
  626. package/dist/matrix.data-2OUWYD35.js +0 -25
  627. package/dist/matrix.dom-IZFFS4RQ.js +0 -11
  628. package/dist/matrix.groups-5BGJIOOJ.js +0 -26
  629. package/dist/matrix.integration.spec-DSXZHAEY.js +0 -3070
  630. package/dist/matrix.interactivity-VK3NWX5M.js +0 -40
  631. package/dist/matrix.layout-PUNMMNCC.js +0 -42
  632. package/dist/matrix.legend-QMERGVYU.js +0 -22
  633. package/dist/matrix.renderers-2KQ2NXSQ.js +0 -36
  634. package/dist/matrix.serieses-24G3XPJD.js +0 -21
  635. package/dist/matrix.sort-HTVT4K7C.js +0 -27
  636. package/dist/matrix.sort.unit.spec-EUVL76NB.js +0 -470
  637. package/dist/matrix.sorterUi-PJPFXWOJ.js +0 -18
  638. package/dist/matrix.sorterUi.unit.spec-QWL5Y4DQ.js +0 -340
  639. package/dist/mavb-UGM5SHEF.js +0 -730
  640. package/dist/mds.fimo-64US7RTE.js +0 -516
  641. package/dist/mds.samplescatterplot-JMXLXVIE.js +0 -1548
  642. package/dist/mds.survivalplot-RJ5UD3IU.js +0 -481
  643. package/dist/oncomatrix-ZFT3DRAP.js +0 -293
  644. package/dist/oncomatrix-ZFT3DRAP.js.map +0 -7
  645. package/dist/oncomatrix.spec-4YLKDGFE.js +0 -446
  646. package/dist/plot.2dvaf-DYSU6BBN.js +0 -375
  647. package/dist/plot.app-NFBVLAXZ.js +0 -39
  648. package/dist/plot.barplot-DBGTDK7J.js +0 -100
  649. package/dist/plot.boxplot-MCKZUROP.js +0 -150
  650. package/dist/plot.brainImaging-BBAVUEB4.js +0 -51
  651. package/dist/plot.disco-VGOEQYRL.js +0 -101
  652. package/dist/plot.disco-VGOEQYRL.js.map +0 -7
  653. package/dist/plot.dzi-YQIFOTZQ.js +0 -33
  654. package/dist/plot.ssgq-MU3BRTMC.js +0 -137
  655. package/dist/plot.vaf2cov-KDHZ7JXJ.js +0 -257
  656. package/dist/plot.wsi-G2TUGQF7.js +0 -36
  657. package/dist/polar-RCCZXZIU.js +0 -184
  658. package/dist/polar2-COQ3WIGW.js +0 -226
  659. package/dist/profile.spec-A4ZASR2T.js +0 -78
  660. package/dist/profileBarchart-GB4RK5DF.js +0 -265
  661. package/dist/profileForms-O5KBHRF6.js +0 -438
  662. package/dist/profilePlot-COCLCP5B.js +0 -52
  663. package/dist/profileRadar-4EE3YDOH.js +0 -261
  664. package/dist/profileRadarFacility-JYTSGA5H.js +0 -261
  665. package/dist/profileRadarFacility-JYTSGA5H.js.map +0 -7
  666. package/dist/proteomeAbundance-JBVXUSD6.js +0 -19
  667. package/dist/proteomeAbundance-NQVU4DOW.js +0 -63
  668. package/dist/qualitative-QROOPDSI.js +0 -41
  669. package/dist/regression-7FQZ22OO.js +0 -54
  670. package/dist/regression.inputs-F62CES3A.js +0 -46
  671. package/dist/regression.inputs.term-BCGP7PX4.js +0 -46
  672. package/dist/regression.inputs.values.table-D3ZXZSH7.js +0 -43
  673. package/dist/regression.integration.spec-P2BBTT2O.js +0 -784
  674. package/dist/regression.integration.spec-P2BBTT2O.js.map +0 -7
  675. package/dist/regression.results-JX6RJQQP.js +0 -38
  676. package/dist/regression.spec-ROME7T33.js +0 -706
  677. package/dist/report-B6MM4T6B.js +0 -220
  678. package/dist/sampleScatter.spec-EPCMC3SR.js +0 -200
  679. package/dist/sampleView-77EAJ75T.js +0 -46
  680. package/dist/samplelst-CX4NQWA7.js +0 -109
  681. package/dist/samplematrix-PYQFAH64.js +0 -2196
  682. package/dist/sc-X6SI5VVI.js +0 -84
  683. package/dist/scatter-ZFFHAI4F.js +0 -800
  684. package/dist/scatter.integration.spec-NN43OXRN.js +0 -1194
  685. package/dist/scatter.integration.spec-NN43OXRN.js.map +0 -7
  686. package/dist/selectGenomeWithTklst-CZMVTBMD.js +0 -132
  687. package/dist/singleCellCellType-GOBX7JKV.js +0 -36
  688. package/dist/singleCellCellType.unit.spec-F344QMTQ.js +0 -177
  689. package/dist/singleCellCellType.unit.spec-F344QMTQ.js.map +0 -7
  690. package/dist/singleCellGeneExpression-BLMNMEAI.js +0 -36
  691. package/dist/singleCellGeneExpression.unit.spec-6ZEPUFWC.js +0 -163
  692. package/dist/singleCellGeneExpression.unit.spec-6ZEPUFWC.js.map +0 -7
  693. package/dist/singleCellPlot-HLD7PLQH.js +0 -51
  694. package/dist/singlecell-HL4GLGIA.js +0 -1570
  695. package/dist/singlecell-JQFPINRS.js +0 -84
  696. package/dist/snp-EAUNFDAV.js +0 -36
  697. package/dist/snp.unit.spec-AVLPMAWI.js +0 -174
  698. package/dist/snplocus-2J7OA6OL.js +0 -206
  699. package/dist/spliceevent.a53ss.diagram-4DU2U7NW.js +0 -149
  700. package/dist/spliceevent.exonskip.diagram-GG5FGXOK.js +0 -275
  701. package/dist/spliceevent.noeventdiagram-T6RNIMCM.js +0 -458
  702. package/dist/ssGSEA-XJWLRVFQ.js +0 -36
  703. package/dist/ssGSEA.unit.spec-MQ23ODYO.js +0 -86
  704. package/dist/summarizeCnvGeneexp-CJPC76RM.js +0 -158
  705. package/dist/summarizeCnvGeneexp-CJPC76RM.js.map +0 -7
  706. package/dist/summarizeGeneexpSurvival-FGCFZTVG.js +0 -105
  707. package/dist/summarizeGeneexpSurvival-FGCFZTVG.js.map +0 -7
  708. package/dist/summarizeMutationCnv-4E7R2NHQ.js +0 -159
  709. package/dist/summarizeMutationCnv-4E7R2NHQ.js.map +0 -7
  710. package/dist/summarizeMutationDiagnosis-ZVX7AZK7.js +0 -38
  711. package/dist/summarizeMutationSurvival-EWXD7TCT.js +0 -97
  712. package/dist/summary-VUYBKQOC.js +0 -47
  713. package/dist/summary.integration.spec-EPBV5XCT.js +0 -412
  714. package/dist/summaryInput-YX5IRGWM.js +0 -218
  715. package/dist/sunburst-HPDML45I.js +0 -282
  716. package/dist/sunburst-HPDML45I.js.map +0 -7
  717. package/dist/survival-E6SRRXBB.js +0 -44
  718. package/dist/survival-XOXDPXZR.js +0 -56
  719. package/dist/survival.integration.spec-SJBPJZGJ.js +0 -787
  720. package/dist/svg2pdf.es.min-EZ4UYRSH.js +0 -3157
  721. package/dist/svgraph-D23WG3UE.js +0 -1385
  722. package/dist/svmr-UFC4TKWV.js +0 -3840
  723. package/dist/table-US2K6IYZ.js +0 -198
  724. package/dist/termCollection-E7S57CIN.js +0 -177
  725. package/dist/termCollection-ZMP3VE2G.js +0 -36
  726. package/dist/termCollection.unit.spec-MDWK6XH3.js +0 -206
  727. package/dist/tk-TLQJK6R4.js +0 -44
  728. package/dist/tp.ui-NQEAKWUH.js +0 -1457
  729. package/dist/tvs.dt-U2MINIBH.js +0 -37
  730. package/dist/tvs.dtcnv.categorical-2OOAZJKC.js +0 -38
  731. package/dist/tvs.dtcnv.continuous-5ETKBJ52.js +0 -70
  732. package/dist/tvs.dtfusion-EB4PPR3Y.js +0 -38
  733. package/dist/tvs.dtsnvindel-IRQPTKQF.js +0 -38
  734. package/dist/tvs.dtsv-TOVXZJCR.js +0 -38
  735. package/dist/tvs.samplelst-4SCH543Y.js +0 -102
  736. package/dist/tvs.termCollection-GGN5F6HC.js +0 -151
  737. package/dist/violin-7D7DN74I.js +0 -44
  738. package/dist/violin.integration.spec-KE76AL54.js +0 -1417
  739. package/dist/violin.integration.spec-KE76AL54.js.map +0 -7
  740. package/dist/violin.interactivity-YPJ2H6SQ.js +0 -36
  741. package/dist/violin.renderer-UK7WSA2Z.js +0 -38
  742. package/dist/vocabulary-KLWZ6LRP.js +0 -39
  743. /package/dist/{2dmaf-PFPBHIUI.js.map → 2dmaf-6ZTETSC5.js.map} +0 -0
  744. /package/dist/{AppHeader-FCWML6WH.js.map → AppHeader-U7SJPIBS.js.map} +0 -0
  745. /package/dist/{CorrelationVolcano-ZJ7Q6JBC.js.map → CorrelationVolcano-7SE4CTBW.js.map} +0 -0
  746. /package/dist/{DifferentialAnalysis-PWCFCWFY.js.map → DifferentialAnalysis-L6BOEYVO.js.map} +0 -0
  747. /package/dist/{Disco.UI-SR7LSJE3.js.map → Disco.UI-HKOUAD4P.js.map} +0 -0
  748. /package/dist/{DmrPlot-UDY7GOSY.js.map → DmrPlot-3R24PTXP.js.map} +0 -0
  749. /package/dist/{GB-GNTOP5C6.js.map → GB-SZVYZASR.js.map} +0 -0
  750. /package/dist/{HicApp-FZTJL3OA.js.map → HicApp-SEEJETVE.js.map} +0 -0
  751. /package/dist/{NumBinaryEditor.unit.spec-BMVRI24W.js.map → NumBinaryEditor.unit.spec-76ZZXTYC.js.map} +0 -0
  752. /package/dist/{NumContEditor-6JT5D6IW.js.map → NumContEditor-G75O4YZE.js.map} +0 -0
  753. /package/dist/{NumContEditor.unit.spec-XBQF2SW6.js.map → NumContEditor.unit.spec-BFUZRBPL.js.map} +0 -0
  754. /package/dist/{NumCustomBinEditor-MEKEFOQI.js.map → NumCustomBinEditor-ILTPHCEF.js.map} +0 -0
  755. /package/dist/{NumCustomBinEditor.unit.spec-LEMQJHDT.js.map → NumCustomBinEditor.unit.spec-GFIYV55V.js.map} +0 -0
  756. /package/dist/{NumDiscreteEditor.unit.spec-WQM4DLKO.js.map → NumDiscreteEditor.unit.spec-NZ4KWPFK.js.map} +0 -0
  757. /package/dist/{NumRegularBinEditor-HQR5Y6P7.js.map → NumRegularBinEditor-7ZJ2MEMY.js.map} +0 -0
  758. /package/dist/{NumRegularBinEditor.unit.spec-FL4IFT7L.js.map → NumRegularBinEditor.unit.spec-QGVJET65.js.map} +0 -0
  759. /package/dist/{NumSplineEditor.unit.spec-HYOXO45B.js.map → NumSplineEditor.unit.spec-YQOOZA7S.js.map} +0 -0
  760. /package/dist/{NumericDensity-GJZ4BBJS.js.map → NumericDensity-RL42P4QC.js.map} +0 -0
  761. /package/dist/{NumericDensity.unit.spec-6LXWAXW7.js.map → NumericDensity.unit.spec-Y6RMTYC7.js.map} +0 -0
  762. /package/dist/{NumericHandler-LZIMPOHS.js.map → NumericHandler-4QIX324I.js.map} +0 -0
  763. /package/dist/{NumericHandler.unit.spec-ZSU35AMD.js.map → NumericHandler.unit.spec-T6F5QYP6.js.map} +0 -0
  764. /package/dist/{WsiSamplesPlot-BL47MDHQ.js.map → WsiSamplesPlot-CXGWPCDL.js.map} +0 -0
  765. /package/dist/{adSandbox-V3NTKVBC.js.map → adSandbox-DE4VRO4Z.js.map} +0 -0
  766. /package/dist/{alphaGenome-IQVFCSWQ.js.map → alphaGenome-FSIGC5ZT.js.map} +0 -0
  767. /package/dist/{app-GJLZ2G2U.js.map → app-KZGKWQMU.js.map} +0 -0
  768. /package/dist/{app-YSD2U64Q.js.map → app-MQRJ7FVL.js.map} +0 -0
  769. /package/dist/{barchart-GLLUYTAJ.js.map → barchart-4Q6LVJY4.js.map} +0 -0
  770. /package/dist/{barchart.data-FRYRGKH3.js.map → barchart.data-EXENRVMU.js.map} +0 -0
  771. /package/dist/{barchart.events-WODVSHRN.js.map → barchart.events-XRGND6I7.js.map} +0 -0
  772. /package/dist/{barchart.integration.spec-6POS3V3T.js.map → barchart.integration.spec-VQITP4YH.js.map} +0 -0
  773. /package/dist/{bars.renderer-T5R3UIBW.js.map → bars.renderer-S7A7I6BQ.js.map} +0 -0
  774. /package/dist/{block.init-7HDLKQVX.js.map → block.init-NCNSE3HD.js.map} +0 -0
  775. /package/dist/{block.mds.expressionrank-UIB25S6E.js.map → block.mds.expressionrank-JYZARS7T.js.map} +0 -0
  776. /package/dist/{block.mds.geneboxplot-4PQYO3MR.js.map → block.mds.geneboxplot-FD2MCIHV.js.map} +0 -0
  777. /package/dist/{block.mds.junction-DWFYZEC2.js.map → block.mds.junction-LOHVQBIU.js.map} +0 -0
  778. /package/dist/{block.mds.svcnv-N3KJJ4GQ.js.map → block.mds.svcnv-Z7SAYPQL.js.map} +0 -0
  779. /package/dist/{block.svg-2HBDI7BT.js.map → block.svg-LNJOKQNN.js.map} +0 -0
  780. /package/dist/{block.tk.aicheck-2M4522IQ.js.map → block.tk.aicheck-IXCMMAGV.js.map} +0 -0
  781. /package/dist/{block.tk.ase-URIKF6JD.js.map → block.tk.ase-WYRYFP6N.js.map} +0 -0
  782. /package/dist/{block.tk.bam-HTDMASHX.js.map → block.tk.bam-EIVBNGAL.js.map} +0 -0
  783. /package/dist/{block.tk.bedgraphdot-RVKMSFCQ.js.map → block.tk.bedgraphdot-3FHLNCU7.js.map} +0 -0
  784. /package/dist/{block.tk.bigwig.ui-7JPEOIKM.js.map → block.tk.bigwig.ui-YDQU5PC4.js.map} +0 -0
  785. /package/dist/{block.tk.hicstraw-72J7UJ2J.js.map → block.tk.hicstraw-S3ROL3CV.js.map} +0 -0
  786. /package/dist/{block.tk.junction-GGFMBCV5.js.map → block.tk.junction-DL7RNWX3.js.map} +0 -0
  787. /package/dist/{block.tk.junction.textmatrixui-44SAYYWE.js.map → block.tk.junction.textmatrixui-Z6I7IEDY.js.map} +0 -0
  788. /package/dist/{block.tk.ld-XDKJFEOL.js.map → block.tk.ld-XHVU6L56.js.map} +0 -0
  789. /package/dist/{block.tk.menu-46FOTM7H.js.map → block.tk.menu-FPLAEEFY.js.map} +0 -0
  790. /package/dist/{block.tk.pgv-ZVONRT4B.js.map → block.tk.pgv-6ZZ2QGNO.js.map} +0 -0
  791. /package/dist/{brainImaging-CSLO7ODJ.js.map → brainImaging-VSOOMITW.js.map} +0 -0
  792. /package/dist/{chat-GMD22F3K.js.map → chat-LW23PIG5.js.map} +0 -0
  793. /package/dist/{chunk-WCTH7CB3.js.map → chunk-2LULD7RN.js.map} +0 -0
  794. /package/dist/{chunk-HLRNIO5K.js.map → chunk-3AGB6HL4.js.map} +0 -0
  795. /package/dist/{chunk-PZ3L3KM6.js.map → chunk-3AVDNIDN.js.map} +0 -0
  796. /package/dist/{chunk-JDX4E7ZO.js.map → chunk-3DCABJHB.js.map} +0 -0
  797. /package/dist/{chunk-DWWAB4YQ.js.map → chunk-3JMB3OSC.js.map} +0 -0
  798. /package/dist/{chunk-PF6MKI4X.js.map → chunk-5RFB7TYT.js.map} +0 -0
  799. /package/dist/{chunk-4FO7KZY2.js.map → chunk-5UMPBVA6.js.map} +0 -0
  800. /package/dist/{chunk-UBS5UVIY.js.map → chunk-6LAE5AVA.js.map} +0 -0
  801. /package/dist/{chunk-6UU7VPDO.js.map → chunk-7VV43ICF.js.map} +0 -0
  802. /package/dist/{chunk-M464GTNI.js.map → chunk-A742TQD2.js.map} +0 -0
  803. /package/dist/{chunk-74QJDBIP.js.map → chunk-AFLFPYJI.js.map} +0 -0
  804. /package/dist/{chunk-WYZ4COTF.js.map → chunk-BAY47D5E.js.map} +0 -0
  805. /package/dist/{chunk-DV444SFD.js.map → chunk-CFHKYLDY.js.map} +0 -0
  806. /package/dist/{chunk-AHLUW2BN.js.map → chunk-CTAKX5CT.js.map} +0 -0
  807. /package/dist/{chunk-FP5VKE3Z.js.map → chunk-D4QFQQWJ.js.map} +0 -0
  808. /package/dist/{chunk-KLFROH3F.js.map → chunk-DGMK7SXX.js.map} +0 -0
  809. /package/dist/{chunk-U3UR3U3F.js.map → chunk-DNCSPTOQ.js.map} +0 -0
  810. /package/dist/{chunk-QXCVG66S.js.map → chunk-DTDQKGIQ.js.map} +0 -0
  811. /package/dist/{chunk-SEIANPCX.js.map → chunk-E4NVHKWD.js.map} +0 -0
  812. /package/dist/{chunk-L2ED35QZ.js.map → chunk-I4IKRKYJ.js.map} +0 -0
  813. /package/dist/{chunk-VIYGTRUZ.js.map → chunk-IEQSUAIO.js.map} +0 -0
  814. /package/dist/{chunk-BBIPZ2UF.js.map → chunk-JMPSZMDD.js.map} +0 -0
  815. /package/dist/{chunk-NTVM4ZPG.js.map → chunk-JXOL73PT.js.map} +0 -0
  816. /package/dist/{chunk-OM326NV3.js.map → chunk-K62XUHA4.js.map} +0 -0
  817. /package/dist/{chunk-2TIYJ3PH.js.map → chunk-KQMEJUWI.js.map} +0 -0
  818. /package/dist/{chunk-6YLQN7FF.js.map → chunk-MV6O4I2B.js.map} +0 -0
  819. /package/dist/{chunk-SK7YVOQN.js.map → chunk-MXNSW55L.js.map} +0 -0
  820. /package/dist/{chunk-A2Y3GEUH.js.map → chunk-NB7NLFGZ.js.map} +0 -0
  821. /package/dist/{chunk-ITYEOGLB.js.map → chunk-NGGWK6HX.js.map} +0 -0
  822. /package/dist/{chunk-T5KFRIP4.js.map → chunk-OGGFS66K.js.map} +0 -0
  823. /package/dist/{chunk-J6XKDYNZ.js.map → chunk-OSM7YS23.js.map} +0 -0
  824. /package/dist/{chunk-UFYU7AKL.js.map → chunk-Q7PYFSNU.js.map} +0 -0
  825. /package/dist/{chunk-P4ENJUBN.js.map → chunk-QMI222IJ.js.map} +0 -0
  826. /package/dist/{chunk-O64UTRAC.js.map → chunk-QRIRWDIW.js.map} +0 -0
  827. /package/dist/{chunk-ZZSDYKD5.js.map → chunk-R6L6NVEC.js.map} +0 -0
  828. /package/dist/{chunk-7FXPMQRW.js.map → chunk-RLTLYKHO.js.map} +0 -0
  829. /package/dist/{chunk-NI7VSKJI.js.map → chunk-S5ZI6N2I.js.map} +0 -0
  830. /package/dist/{chunk-PJTQP6RL.js.map → chunk-TEZLFSOV.js.map} +0 -0
  831. /package/dist/{chunk-PEKVBCIH.js.map → chunk-UEMTP6ZC.js.map} +0 -0
  832. /package/dist/{chunk-RIGZHHCP.js.map → chunk-UJU3Q7QJ.js.map} +0 -0
  833. /package/dist/{chunk-WZRXJ5LL.js.map → chunk-V245THQC.js.map} +0 -0
  834. /package/dist/{chunk-I7X6K4OL.js.map → chunk-VIPMLSZP.js.map} +0 -0
  835. /package/dist/{chunk-YJ2HC4CP.js.map → chunk-VUUZJANK.js.map} +0 -0
  836. /package/dist/{chunk-G2MAZI6I.js.map → chunk-WGHO2NCP.js.map} +0 -0
  837. /package/dist/{chunk-AAEXTQT3.js.map → chunk-WGL6FIUE.js.map} +0 -0
  838. /package/dist/{chunk-NBMJ2UMA.js.map → chunk-WPHOEG56.js.map} +0 -0
  839. /package/dist/{chunk-BHVDOW3W.js.map → chunk-WS5XVKPJ.js.map} +0 -0
  840. /package/dist/{chunk-JWX7GYHP.js.map → chunk-YY4CKQJ6.js.map} +0 -0
  841. /package/dist/{chunk-C5QOWZK6.js.map → chunk-Z3KV6SC2.js.map} +0 -0
  842. /package/dist/{condition-S52W57ZO.js.map → condition-JKQIRMMW.js.map} +0 -0
  843. /package/dist/{controls-B4MTTPWO.js.map → controls-324AGOZG.js.map} +0 -0
  844. /package/dist/{controls.config-6KBCTIPN.js.map → controls.config-TA4NNARU.js.map} +0 -0
  845. /package/dist/{correlation-VSBCBFFP.js.map → correlation-3Z36TKC2.js.map} +0 -0
  846. /package/dist/{cuminc-T5ZPAGVB.js.map → cuminc-4DY2CSZF.js.map} +0 -0
  847. /package/dist/{cuminc.integration.spec-2QT3IPHU.js.map → cuminc.integration.spec-SFQPLMSF.js.map} +0 -0
  848. /package/dist/{dataDownload-S4EBNHMW.js.map → dataDownload-3AE2N7KI.js.map} +0 -0
  849. /package/dist/{dataDownload.integration.spec-OVSIWI34.js.map → dataDownload.integration.spec-DKOT6BJP.js.map} +0 -0
  850. /package/dist/{databrowser.ui-EAJS3NXV.js.map → databrowser.ui-ATODRS5P.js.map} +0 -0
  851. /package/dist/{dnaMethylation-G3F2INDH.js.map → dnaMethylation-TVA5YMOR.js.map} +0 -0
  852. /package/dist/{e2pca-SLXGPVHP.js.map → e2pca-KHVDNFEZ.js.map} +0 -0
  853. /package/dist/{ep-4HGUSDGJ.js.map → ep-B5GAAMNM.js.map} +0 -0
  854. /package/dist/{expclust.gdc.spec-JJ42ESKE.js.map → expclust.gdc.spec-EDPX7V6K.js.map} +0 -0
  855. /package/dist/{facet-6WVTVKDV.js.map → facet-ZCSXKXIO.js.map} +0 -0
  856. /package/dist/{geneExpClustering-5LOZPD5X.js.map → geneExpClustering-ERNCMAED.js.map} +0 -0
  857. /package/dist/{geneExpression-PTSZWKCM.js.map → geneExpression-HUOXWETT.js.map} +0 -0
  858. /package/dist/{geneExpression-BJ46UGXW.js.map → geneExpression-X2KXJPND.js.map} +0 -0
  859. /package/dist/{geneExpression.unit.spec-NW5HTO7F.js.map → geneExpression.unit.spec-5QQB4ISW.js.map} +0 -0
  860. /package/dist/{geneORA-H65EZ7QO.js.map → geneORA-B5UK77KL.js.map} +0 -0
  861. /package/dist/{geneVariant-T6GWOVZD.js.map → geneVariant-7MGUAIZ6.js.map} +0 -0
  862. /package/dist/{geneVariant-WTDFZTXG.js.map → geneVariant-FK3KZJ2K.js.map} +0 -0
  863. /package/dist/{geneVariant.integration.spec-OPSBRUM3.js.map → geneVariant.integration.spec-C6TYWKIC.js.map} +0 -0
  864. /package/dist/{genefusion.ui-RSBCC37C.js.map → genefusion.ui-VKAINMY7.js.map} +0 -0
  865. /package/dist/{geneset-B67PAZVL.js.map → geneset-673KAZVX.js.map} +0 -0
  866. /package/dist/{genomeBrowser.spec-AUTULF4C.js.map → genomeBrowser.spec-T6TQCJ3O.js.map} +0 -0
  867. /package/dist/{grin2-JVCNH3KW.js.map → grin2-376BD4XY.js.map} +0 -0
  868. /package/dist/{grin2-CMBP7XVH.js.map → grin2-OALS75LC.js.map} +0 -0
  869. /package/dist/{gsea-H774WVPQ.js.map → gsea-25LD2LGP.js.map} +0 -0
  870. /package/dist/{hierCluster-IQTXQUMI.js.map → hierCluster-7KU3K52V.js.map} +0 -0
  871. /package/dist/{hierCluster-ZQJDXYBD.js.map → hierCluster-M5VVWKQK.js.map} +0 -0
  872. /package/dist/{hierCluster.config-ZHJTZK5L.js.map → hierCluster.config-EDO3SH2P.js.map} +0 -0
  873. /package/dist/{hierCluster.integration.spec-MSJ5GHHK.js.map → hierCluster.integration.spec-UOX7J2XD.js.map} +0 -0
  874. /package/dist/{hierCluster.interactivity-H2GNO6AA.js.map → hierCluster.interactivity-FEFZDXML.js.map} +0 -0
  875. /package/dist/{hierCluster.renderers-2TE6HMK2.js.map → hierCluster.renderers-A6MEGO2B.js.map} +0 -0
  876. /package/dist/{imagePlot-FMNMB7JZ.js.map → imagePlot-FPXZ2H5Z.js.map} +0 -0
  877. /package/dist/{importPlot-N66G43XX.js.map → importPlot-VKWPSFEK.js.map} +0 -0
  878. /package/dist/{isoformExpression-B64WLO3H.js.map → isoformExpression-2R2TOB6P.js.map} +0 -0
  879. /package/dist/{jspdf.es.min-DO4YWL2R.js.map → jspdf.es.min-FC3BCETM.js.map} +0 -0
  880. /package/dist/{launch.adhoc-MPRAJ3GN.js.map → launch.adhoc-242RS6DW.js.map} +0 -0
  881. /package/dist/{leftlabel.sample-4JCKYXED.js.map → leftlabel.sample-OJW3AE64.js.map} +0 -0
  882. /package/dist/{lollipop-25ADHT7O.js.map → lollipop-TRQ3LK7Y.js.map} +0 -0
  883. /package/dist/{maftimeline-FOQF6O3X.js.map → maftimeline-GVX7NJP7.js.map} +0 -0
  884. /package/dist/{matrix-LHLAYDTQ.js.map → matrix-73KRNXLM.js.map} +0 -0
  885. /package/dist/{matrix-ZKF7NRAD.js.map → matrix-US3OXYRY.js.map} +0 -0
  886. /package/dist/{matrix.cells-H4TS74FJ.js.map → matrix.cells-U7AQNEBP.js.map} +0 -0
  887. /package/dist/{matrix.config-HE7QUDER.js.map → matrix.config-Q57D7C3F.js.map} +0 -0
  888. /package/dist/{matrix.controls-VILCLNSC.js.map → matrix.controls-AWXDRSWP.js.map} +0 -0
  889. /package/dist/{matrix.data-2OUWYD35.js.map → matrix.data-EEIY6AO4.js.map} +0 -0
  890. /package/dist/{matrix.dom-IZFFS4RQ.js.map → matrix.dom-6QL3AJMW.js.map} +0 -0
  891. /package/dist/{matrix.groups-5BGJIOOJ.js.map → matrix.groups-CUB6UWC5.js.map} +0 -0
  892. /package/dist/{matrix.integration.spec-DSXZHAEY.js.map → matrix.integration.spec-PQH67KRM.js.map} +0 -0
  893. /package/dist/{matrix.interactivity-VK3NWX5M.js.map → matrix.interactivity-JW4AXAWO.js.map} +0 -0
  894. /package/dist/{matrix.layout-PUNMMNCC.js.map → matrix.layout-I56KRVCO.js.map} +0 -0
  895. /package/dist/{matrix.legend-QMERGVYU.js.map → matrix.legend-42LQGAGX.js.map} +0 -0
  896. /package/dist/{matrix.renderers-2KQ2NXSQ.js.map → matrix.renderers-IX3FCNBK.js.map} +0 -0
  897. /package/dist/{matrix.serieses-24G3XPJD.js.map → matrix.serieses-4B2WB526.js.map} +0 -0
  898. /package/dist/{matrix.sort-HTVT4K7C.js.map → matrix.sort-BJACNR7G.js.map} +0 -0
  899. /package/dist/{matrix.sort.unit.spec-EUVL76NB.js.map → matrix.sort.unit.spec-3KKDKIPY.js.map} +0 -0
  900. /package/dist/{matrix.sorterUi-PJPFXWOJ.js.map → matrix.sorterUi-W6XFYZY2.js.map} +0 -0
  901. /package/dist/{matrix.sorterUi.unit.spec-QWL5Y4DQ.js.map → matrix.sorterUi.unit.spec-CMJ7EBIW.js.map} +0 -0
  902. /package/dist/{mavb-UGM5SHEF.js.map → mavb-ROAE6WYA.js.map} +0 -0
  903. /package/dist/{mds.fimo-64US7RTE.js.map → mds.fimo-UGK5OWCF.js.map} +0 -0
  904. /package/dist/{mds.samplescatterplot-JMXLXVIE.js.map → mds.samplescatterplot-5KFUAYSB.js.map} +0 -0
  905. /package/dist/{mds.survivalplot-RJ5UD3IU.js.map → mds.survivalplot-2EVNZUX5.js.map} +0 -0
  906. /package/dist/{oncomatrix.spec-4YLKDGFE.js.map → oncomatrix.spec-FEP7BR7L.js.map} +0 -0
  907. /package/dist/{plot.2dvaf-DYSU6BBN.js.map → plot.2dvaf-WXGLWCOC.js.map} +0 -0
  908. /package/dist/{plot.app-NFBVLAXZ.js.map → plot.app-IZAFRTBU.js.map} +0 -0
  909. /package/dist/{plot.barplot-DBGTDK7J.js.map → plot.barplot-Z4VWOPFJ.js.map} +0 -0
  910. /package/dist/{plot.boxplot-MCKZUROP.js.map → plot.boxplot-QU2KZSB7.js.map} +0 -0
  911. /package/dist/{plot.brainImaging-BBAVUEB4.js.map → plot.brainImaging-U643YIK7.js.map} +0 -0
  912. /package/dist/{plot.dzi-YQIFOTZQ.js.map → plot.dzi-DWXPOOQE.js.map} +0 -0
  913. /package/dist/{plot.ssgq-MU3BRTMC.js.map → plot.ssgq-GXB2GZO3.js.map} +0 -0
  914. /package/dist/{plot.vaf2cov-KDHZ7JXJ.js.map → plot.vaf2cov-EKRIADPB.js.map} +0 -0
  915. /package/dist/{plot.wsi-G2TUGQF7.js.map → plot.wsi-E2LLE6HI.js.map} +0 -0
  916. /package/dist/{polar-RCCZXZIU.js.map → polar-MZLIUXHO.js.map} +0 -0
  917. /package/dist/{polar2-COQ3WIGW.js.map → polar2-IUVHNQM4.js.map} +0 -0
  918. /package/dist/{profile.spec-A4ZASR2T.js.map → profile.spec-JRW6KYUI.js.map} +0 -0
  919. /package/dist/{profileBarchart-GB4RK5DF.js.map → profileBarchart-N7HJMYZ5.js.map} +0 -0
  920. /package/dist/{profileForms-O5KBHRF6.js.map → profileForms-Q5TPGPQP.js.map} +0 -0
  921. /package/dist/{profilePlot-COCLCP5B.js.map → profilePlot-TXTUYDVE.js.map} +0 -0
  922. /package/dist/{profileRadar-4EE3YDOH.js.map → profileRadar-ICEASI7W.js.map} +0 -0
  923. /package/dist/{proteomeAbundance-JBVXUSD6.js.map → proteomeAbundance-DE4NVBCN.js.map} +0 -0
  924. /package/dist/{proteomeAbundance-NQVU4DOW.js.map → proteomeAbundance-LTB3QR3G.js.map} +0 -0
  925. /package/dist/{qualitative-QROOPDSI.js.map → qualitative-DFGWQURY.js.map} +0 -0
  926. /package/dist/{regression-7FQZ22OO.js.map → regression-TTQTAEGD.js.map} +0 -0
  927. /package/dist/{regression.inputs-F62CES3A.js.map → regression.inputs-2LU2XRGC.js.map} +0 -0
  928. /package/dist/{regression.inputs.term-BCGP7PX4.js.map → regression.inputs.term-G57GL57T.js.map} +0 -0
  929. /package/dist/{regression.inputs.values.table-D3ZXZSH7.js.map → regression.inputs.values.table-JSEM3PXL.js.map} +0 -0
  930. /package/dist/{regression.results-JX6RJQQP.js.map → regression.results-3YNM6LLQ.js.map} +0 -0
  931. /package/dist/{regression.spec-ROME7T33.js.map → regression.spec-S6WFCPSW.js.map} +0 -0
  932. /package/dist/{report-B6MM4T6B.js.map → report-YRAV4MY4.js.map} +0 -0
  933. /package/dist/{sampleScatter.spec-EPCMC3SR.js.map → sampleScatter.spec-MBJ4XNTX.js.map} +0 -0
  934. /package/dist/{sampleView-77EAJ75T.js.map → sampleView-IUR3ZEN7.js.map} +0 -0
  935. /package/dist/{samplelst-CX4NQWA7.js.map → samplelst-C2NBFGH6.js.map} +0 -0
  936. /package/dist/{samplematrix-PYQFAH64.js.map → samplematrix-AOK2HHSB.js.map} +0 -0
  937. /package/dist/{sc-X6SI5VVI.js.map → sc-XT3Z5XJI.js.map} +0 -0
  938. /package/dist/{scatter-ZFFHAI4F.js.map → scatter-SAHKZRFL.js.map} +0 -0
  939. /package/dist/{selectGenomeWithTklst-CZMVTBMD.js.map → selectGenomeWithTklst-2YVZ4JWV.js.map} +0 -0
  940. /package/dist/{singleCellCellType-GOBX7JKV.js.map → singleCellCellType-NFN5GQJM.js.map} +0 -0
  941. /package/dist/{singleCellGeneExpression-BLMNMEAI.js.map → singleCellGeneExpression-7AQGLXTR.js.map} +0 -0
  942. /package/dist/{singleCellPlot-HLD7PLQH.js.map → singleCellPlot-IWFEG44C.js.map} +0 -0
  943. /package/dist/{singlecell-HL4GLGIA.js.map → singlecell-3QNV4OMZ.js.map} +0 -0
  944. /package/dist/{singlecell-JQFPINRS.js.map → singlecell-EATPLH66.js.map} +0 -0
  945. /package/dist/{snp-EAUNFDAV.js.map → snp-UP7WL7WG.js.map} +0 -0
  946. /package/dist/{snp.unit.spec-AVLPMAWI.js.map → snp.unit.spec-Y5NWQ442.js.map} +0 -0
  947. /package/dist/{snplocus-2J7OA6OL.js.map → snplocus-WAQK2AZG.js.map} +0 -0
  948. /package/dist/{spliceevent.a53ss.diagram-4DU2U7NW.js.map → spliceevent.a53ss.diagram-FFK27UIB.js.map} +0 -0
  949. /package/dist/{spliceevent.exonskip.diagram-GG5FGXOK.js.map → spliceevent.exonskip.diagram-KWEF2OZJ.js.map} +0 -0
  950. /package/dist/{spliceevent.noeventdiagram-T6RNIMCM.js.map → spliceevent.noeventdiagram-PU4TI7OM.js.map} +0 -0
  951. /package/dist/{ssGSEA-XJWLRVFQ.js.map → ssGSEA-N6QOAVLW.js.map} +0 -0
  952. /package/dist/{ssGSEA.unit.spec-MQ23ODYO.js.map → ssGSEA.unit.spec-KQBNZNNP.js.map} +0 -0
  953. /package/dist/{summarizeMutationDiagnosis-ZVX7AZK7.js.map → summarizeMutationDiagnosis-5RHSG7L6.js.map} +0 -0
  954. /package/dist/{summarizeMutationSurvival-EWXD7TCT.js.map → summarizeMutationSurvival-22YYXGS5.js.map} +0 -0
  955. /package/dist/{summary-VUYBKQOC.js.map → summary-P3WIKJS7.js.map} +0 -0
  956. /package/dist/{summary.integration.spec-EPBV5XCT.js.map → summary.integration.spec-ULGRPICW.js.map} +0 -0
  957. /package/dist/{summaryInput-YX5IRGWM.js.map → summaryInput-IH4EVNF5.js.map} +0 -0
  958. /package/dist/{survival-E6SRRXBB.js.map → survival-2ZE3N62A.js.map} +0 -0
  959. /package/dist/{survival-XOXDPXZR.js.map → survival-ASCLKIII.js.map} +0 -0
  960. /package/dist/{survival.integration.spec-SJBPJZGJ.js.map → survival.integration.spec-C5YXOY77.js.map} +0 -0
  961. /package/dist/{svg2pdf.es.min-EZ4UYRSH.js.map → svg2pdf.es.min-CYTPRWNB.js.map} +0 -0
  962. /package/dist/{svgraph-D23WG3UE.js.map → svgraph-AYR2UPNK.js.map} +0 -0
  963. /package/dist/{svmr-UFC4TKWV.js.map → svmr-MOMW5DNY.js.map} +0 -0
  964. /package/dist/{table-US2K6IYZ.js.map → table-PQB6KCEY.js.map} +0 -0
  965. /package/dist/{termCollection-ZMP3VE2G.js.map → termCollection-5AY2AWT4.js.map} +0 -0
  966. /package/dist/{termCollection-E7S57CIN.js.map → termCollection-OQMUUTW6.js.map} +0 -0
  967. /package/dist/{termCollection.unit.spec-MDWK6XH3.js.map → termCollection.unit.spec-BUAXYIJK.js.map} +0 -0
  968. /package/dist/{tk-TLQJK6R4.js.map → tk-EJLFFA5H.js.map} +0 -0
  969. /package/dist/{tp.ui-NQEAKWUH.js.map → tp.ui-WUW6A7KP.js.map} +0 -0
  970. /package/dist/{tvs.dt-U2MINIBH.js.map → tvs.dt-MVJXQMNU.js.map} +0 -0
  971. /package/dist/{tvs.dtcnv.categorical-2OOAZJKC.js.map → tvs.dtcnv.categorical-FIIDWVK7.js.map} +0 -0
  972. /package/dist/{tvs.dtcnv.continuous-5ETKBJ52.js.map → tvs.dtcnv.continuous-JPQU3JA2.js.map} +0 -0
  973. /package/dist/{tvs.dtfusion-EB4PPR3Y.js.map → tvs.dtfusion-BW35GOQM.js.map} +0 -0
  974. /package/dist/{tvs.dtsnvindel-IRQPTKQF.js.map → tvs.dtsnvindel-AEMFZ4EH.js.map} +0 -0
  975. /package/dist/{tvs.dtsv-TOVXZJCR.js.map → tvs.dtsv-JHTU7UFD.js.map} +0 -0
  976. /package/dist/{tvs.samplelst-4SCH543Y.js.map → tvs.samplelst-VD2NFFFS.js.map} +0 -0
  977. /package/dist/{tvs.termCollection-GGN5F6HC.js.map → tvs.termCollection-IKE5Q74D.js.map} +0 -0
  978. /package/dist/{violin-7D7DN74I.js.map → violin-DPMJLHQG.js.map} +0 -0
  979. /package/dist/{violin.interactivity-YPJ2H6SQ.js.map → violin.interactivity-TS4DYUE5.js.map} +0 -0
  980. /package/dist/{violin.renderer-UK7WSA2Z.js.map → violin.renderer-53L4PXUT.js.map} +0 -0
  981. /package/dist/{vocabulary-KLWZ6LRP.js.map → vocabulary-4MPFHKYC.js.map} +0 -0
@@ -1,3840 +0,0 @@
1
- import {
2
- appear2 as appear,
3
- axisstyle,
4
- bulk_badline,
5
- colorbgleft,
6
- colorbgright,
7
- colorctx,
8
- colorinframe,
9
- coloroutframe,
10
- disappear2 as disappear,
11
- export_data,
12
- font,
13
- make_table_2col,
14
- newpane,
15
- sayerror
16
- } from "./chunk-XZZLEHWC.js";
17
- import {
18
- genomic2gm
19
- } from "./chunk-HJ6L54YS.js";
20
- import "./chunk-CJJ6LDZM.js";
21
- import {
22
- Menu
23
- } from "./chunk-2SRMRC6L.js";
24
- import "./chunk-QEHUEG4X.js";
25
- import "./chunk-XDI4UFCZ.js";
26
- import "./chunk-FN5XPUPH.js";
27
- import "./chunk-LSEFWW72.js";
28
- import "./chunk-5EF5U7MX.js";
29
- import "./chunk-2K5DSRBJ.js";
30
- import "./chunk-UCLS2SVB.js";
31
- import "./chunk-MVTCBVSX.js";
32
- import "./chunk-SEQLC4AD.js";
33
- import "./chunk-L4QG7XZE.js";
34
- import "./chunk-DQC5FFGV.js";
35
- import "./chunk-2TIYJ3PH.js";
36
- import "./chunk-RIGZHHCP.js";
37
- import "./chunk-AAEXTQT3.js";
38
- import "./chunk-2UWHV2SB.js";
39
- import {
40
- bplen,
41
- dtcloss,
42
- dtfusionrna,
43
- dtitd,
44
- dtnloss,
45
- mclasscloss,
46
- mclassfusionrna,
47
- mclassitd,
48
- mclassnloss
49
- } from "./chunk-ZLH4PJKX.js";
50
- import "./chunk-TV74I3Y5.js";
51
- import "./chunk-IH7ILDJS.js";
52
- import {
53
- axisTop
54
- } from "./chunk-LOZEKOES.js";
55
- import "./chunk-TOU7EVFQ.js";
56
- import {
57
- linear
58
- } from "./chunk-OAWQ6LOO.js";
59
- import "./chunk-SEEYV6P2.js";
60
- import {
61
- select_default
62
- } from "./chunk-NDWTN4U5.js";
63
- import "./chunk-OMR2DT66.js";
64
- import "./chunk-HFNDKYVF.js";
65
-
66
- // src/svmr.unload.js
67
- function svmr_export_json(svmr, hqonly) {
68
- var rows = [];
69
- for (const sample of svmr.samples) {
70
- for (const egg of sample.egglst) {
71
- for (const eg of egg.lst) {
72
- if (eg.ismsg) {
73
- const lst = eg.lst.map((evt) => evt.lst[0]);
74
- if (hqonly) {
75
- let hashq = false;
76
- for (const i of lst) {
77
- if (i.rating == "Major") hashq = true;
78
- }
79
- if (hashq) {
80
- rows.push(lst);
81
- }
82
- } else {
83
- rows.push(lst);
84
- }
85
- } else {
86
- for (const evt of eg.lst) {
87
- for (const p of evt.lst) {
88
- if (hqonly) {
89
- if (p.rating == "Major") rows.push([p]);
90
- } else {
91
- rows.push([p]);
92
- }
93
- }
94
- }
95
- }
96
- }
97
- }
98
- }
99
- const lines = [], e_itd = [], e_nloss = [], e_closs = [];
100
- for (const row of rows) {
101
- if (row.length == 1 && row[0].usepair) {
102
- const p = row[0];
103
- if (p.isitd) {
104
- const u = p.usepair;
105
- const gm = svmr.genome.isoformmatch(u.a.isoform, p.chrA, p.posA);
106
- if (!gm) {
107
- e_itd.push(p.sample + " " + p.geneA + " ITD (" + p.rating + "): no gene model found for " + u.a.isoform);
108
- continue;
109
- }
110
- const exonbp1 = genomic2gm(p.posA, gm).rnapos;
111
- const exonbp2 = genomic2gm(p.posB, gm).rnapos;
112
- if (exonbp1 <= exonbp2) {
113
- e_itd.push(p.sample + " " + p.geneA + " ITD (" + p.rating + "): negative duplication length");
114
- continue;
115
- }
116
- const itd = {
117
- typecode: dtitd,
118
- gene: p.geneA,
119
- isoform: u.a.isoform,
120
- rating: p.rating,
121
- score: p.score,
122
- functioneffect: p.functioneffect,
123
- rnaposition: exonbp2,
124
- rnaduplength: exonbp1 - exonbp2 + 1,
125
- a: {
126
- chr: p.chrA,
127
- position: p.posA,
128
- strand: p.ortA,
129
- ratio: p.ratioA,
130
- chimericreads: p.readsA,
131
- totalreads: p.totalreadsA,
132
- match: p.matchA,
133
- repeat: p.repeatA
134
- },
135
- b: {
136
- chr: p.chrB,
137
- position: p.posB,
138
- strand: p.ortB,
139
- ratio: p.ratioB,
140
- chimericreads: p.readsB,
141
- totalreads: p.totalreadsB,
142
- match: p.matchB,
143
- repeat: p.repeatB
144
- }
145
- };
146
- let aalen = 0, bplen2 = 0;
147
- if (u.a.contigaa && u.b.contigaa) {
148
- aalen = u.b.contigaa - u.a.contigaa - 1;
149
- }
150
- if (u.a.contigbp && u.b.contigbp) {
151
- bplen2 = u.b.contigbp - u.a.contigbp - 1;
152
- }
153
- if (aalen > 0) {
154
- itd.interstitial = { aalen };
155
- }
156
- if (bplen2 > 0) {
157
- if (!itd.interstitial) itd.interstitial = {};
158
- itd.interstitial.bplen = bplen2;
159
- }
160
- lines.push([p.sample, p.geneA, p.usepair.a.isoform, JSON.stringify(itd)]);
161
- continue;
162
- }
163
- if (p.isnloss) {
164
- const p2 = p.usepair.b;
165
- if (!p2.isoform) {
166
- e_nloss.push(p.sample + " " + p.geneB + " NLoss (" + p.rating + "): no isoform");
167
- continue;
168
- }
169
- const gm = svmr.genome.isoformmatch(p2.isoform, p.chrB, p.posB);
170
- if (!gm) {
171
- e_nloss.push(p.sample + " " + p.geneB + " NLoss (" + p.rating + "): no gene model found for " + p2.isoform);
172
- continue;
173
- }
174
- const exonbp = genomic2gm(p.posB, gm).rnapos;
175
- const pp = {
176
- typecode: dtnloss,
177
- gene: p.geneB,
178
- isoform: p2.isoform,
179
- rating: p.rating,
180
- score: p.score,
181
- functioneffect: p.functioneffect,
182
- rnaposition: exonbp,
183
- chr: p.chrB,
184
- position: p.posB,
185
- strand: p.ortB,
186
- ratio: p.ratioB,
187
- chimericreads: p.readsB,
188
- match: p.matchB,
189
- repeat: p.repeatB,
190
- partner: {
191
- chr: p.chrA,
192
- position: p.posA,
193
- strand: p.ortA,
194
- ratio: p.ratioA,
195
- chimericreads: p.readsA,
196
- match: p.matchA,
197
- repeat: p.repeatA
198
- }
199
- };
200
- if (p.geneA) {
201
- pp.partner.gene = p.geneA;
202
- }
203
- if (p.usepair.a.isoform) {
204
- pp.partner.isoform = p.usepair.a.isoform;
205
- }
206
- lines.push([p.sample, p.geneB, p2.isoform, JSON.stringify(pp)]);
207
- continue;
208
- }
209
- if (p.iscloss) {
210
- const p2 = p.usepair.a;
211
- if (!p2.isoform) {
212
- e_nloss.push(p.sample + " " + p.geneA + " CLoss (" + p.rating + "): no isoform");
213
- continue;
214
- }
215
- const gm = svmr.genome.isoformmatch(p2.isoform, p.chrA, p.posA);
216
- if (!gm) {
217
- e_nloss.push(p.sample + " " + p.geneA + " CLoss (" + p.rating + "): no gene model found by " + p2.isoform);
218
- continue;
219
- }
220
- const exonbp = genomic2gm(p.posA, gm).rnapos;
221
- const pp = {
222
- typecode: dtcloss,
223
- gene: p.geneA,
224
- isoform: p2.isoform,
225
- rating: p.rating,
226
- score: p.score,
227
- functioneffect: p.functioneffect,
228
- rnaposition: exonbp,
229
- chr: p.chrA,
230
- position: p.posA,
231
- strand: p.ortA,
232
- ratio: p.ratioA,
233
- chimericreads: p.readsA,
234
- match: p.matchA,
235
- repeat: p.repeatA,
236
- partner: {
237
- chr: p.chrB,
238
- position: p.posB,
239
- strand: p.ortB,
240
- ratio: p.ratioB,
241
- chimericreads: p.readsB,
242
- match: p.matchB,
243
- repeat: p.repeatB
244
- }
245
- };
246
- if (p.geneB) {
247
- pp.partner.gene = p.geneB;
248
- }
249
- if (p.usepair.b.isoform) {
250
- pp.partner.isoform = p.usepair.b.isoform;
251
- }
252
- lines.push([p.sample, p.geneA, p2.isoform, JSON.stringify(pp)]);
253
- continue;
254
- }
255
- }
256
- const genes = /* @__PURE__ */ new Set(), isoforms = /* @__PURE__ */ new Set(), cleanup = [];
257
- for (const p of row) {
258
- if (p.geneA) genes.add(p.geneA);
259
- if (p.geneB) genes.add(p.geneB);
260
- if (p.usepair) {
261
- if (p.usepair.a.isoform) isoforms.add(p.usepair.a.isoform);
262
- if (p.usepair.b.isoform) isoforms.add(p.usepair.b.isoform);
263
- }
264
- const clean = {
265
- type: p.type,
266
- type2: p.type2,
267
- rating: p.rating,
268
- score: p.score,
269
- functioneffect: p.functioneffect,
270
- a: {
271
- name: p.geneA,
272
- chr: p.chrA,
273
- position: p.posA,
274
- strand: p.ortA,
275
- ratio: p.ratioA,
276
- feature: p.featureA,
277
- chimericreads: p.readsA,
278
- contiglen: p.matchA,
279
- repeatscore: p.repeatA
280
- },
281
- b: {
282
- name: p.geneB,
283
- chr: p.chrB,
284
- position: p.posB,
285
- strand: p.ortB,
286
- ratio: p.ratioB,
287
- feature: p.featureB,
288
- chimericreads: p.readsB,
289
- contiglen: p.matchB,
290
- repeatscore: p.repeatB
291
- }
292
- };
293
- if (p.usepair) {
294
- const u = p.usepair;
295
- clean.frame = u.frame;
296
- if (u.a.isoform) {
297
- clean.a.isoform = u.a.isoform;
298
- }
299
- if (u.b.isoform) {
300
- clean.b.isoform = u.b.isoform;
301
- }
302
- let aalen = 0, bplen2 = 0;
303
- if (u.a.contigaa && u.b.contigaa) {
304
- aalen = u.b.contigaa - u.a.contigaa - 1;
305
- }
306
- if (u.a.contigbp && u.b.contigbp) {
307
- bplen2 = u.b.contigbp - u.a.contigbp - 1;
308
- }
309
- if (aalen > 0) {
310
- clean.interstitial = { aalen };
311
- }
312
- if (bplen2 > 0) {
313
- if (!clean.interstitial) clean.interstitial = {};
314
- clean.interstitial.bplen = bplen2;
315
- }
316
- }
317
- cleanup.push(clean);
318
- }
319
- const genenames = [...genes];
320
- const isoformnames = [...isoforms];
321
- lines.push([
322
- row[0].sample,
323
- genenames.length ? genenames.join(",") : "none",
324
- isoformnames.length ? isoformnames.join(",") : "none",
325
- JSON.stringify(cleanup)
326
- ]);
327
- }
328
- if (e_itd.length) {
329
- svmr.err(e_itd.join("<br>"));
330
- }
331
- if (e_nloss.length) {
332
- svmr.err(e_nloss.join("<br>"));
333
- }
334
- if (e_closs.length) {
335
- svmr.err(e_closs.join("<br>"));
336
- }
337
- export_data("Fusion data from " + svmr.filename, [{ text: lines.map((i) => i.join(" ")).join("\n") }]);
338
- }
339
- function svmr_2pp(svmr, hqonly) {
340
- const rows = [];
341
- for (const sample of svmr.samples) {
342
- for (const egg of sample.egglst) {
343
- for (const eg of egg.lst) {
344
- if (eg.ismsg) {
345
- const lst = eg.lst.map((evt) => evt.lst[0]);
346
- if (hqonly) {
347
- let hashq = false;
348
- for (const i of lst) {
349
- if (i.rating == "Major") hashq = true;
350
- }
351
- if (hashq) {
352
- rows.push(lst);
353
- }
354
- } else {
355
- rows.push(lst);
356
- }
357
- } else {
358
- for (const evt of eg.lst) {
359
- for (const p of evt.lst) {
360
- if (hqonly) {
361
- if (p.rating == "Major") rows.push([p]);
362
- } else {
363
- rows.push([p]);
364
- }
365
- }
366
- }
367
- }
368
- }
369
- }
370
- }
371
- const genes = {}, e_itd = [], e_nloss = [], e_closs = [];
372
- for (const row of rows) {
373
- if (row.length == 1 && row[0].usepair) {
374
- const p = row[0];
375
- if (p.isitd) {
376
- if (!p.geneA) {
377
- e_itd.push(p.sample + " ITD (" + p.rating + "): no gene name??");
378
- continue;
379
- }
380
- const u = p.usepair;
381
- const gm = svmr.genome.isoformmatch(u.a.isoform, p.chrA, p.posA);
382
- if (!gm) {
383
- e_itd.push(p.sample + " " + p.geneA + " ITD (" + p.rating + "): no gene model found for " + u.a.isoform);
384
- continue;
385
- }
386
- const exonbp1 = genomic2gm(p.posA, gm).rnapos;
387
- const exonbp2 = genomic2gm(p.posB, gm).rnapos;
388
- if (exonbp1 <= exonbp2) {
389
- e_itd.push(p.sample + " " + p.geneA + " ITD (" + p.rating + "): negative duplication length");
390
- continue;
391
- }
392
- const itd = {
393
- dt: dtitd,
394
- class: mclassitd,
395
- mname: "ITD",
396
- gene: p.geneA,
397
- sample: p.sample,
398
- isoform: u.a.isoform,
399
- rating: p.rating,
400
- score: p.score,
401
- functioneffect: p.functioneffect,
402
- rnaposition: exonbp2,
403
- rnaduplength: exonbp1 - exonbp2 + 1,
404
- a: {
405
- chr: p.chrA,
406
- position: p.posA,
407
- strand: p.ortA,
408
- ratio: p.ratioA,
409
- chimericreads: p.readsA,
410
- totalreads: p.totalreadsA,
411
- match: p.matchA,
412
- repeat: p.repeatA
413
- },
414
- b: {
415
- chr: p.chrB,
416
- position: p.posB,
417
- strand: p.ortB,
418
- ratio: p.ratioB,
419
- chimericreads: p.readsB,
420
- totalreads: p.totalreadsB,
421
- match: p.matchB,
422
- repeat: p.repeatB
423
- }
424
- };
425
- let aalen = 0, bplen2 = 0;
426
- if (u.a.contigaa && u.b.contigaa) {
427
- aalen = u.b.contigaa - u.a.contigaa - 1;
428
- }
429
- if (u.a.contigbp && u.b.contigbp) {
430
- bplen2 = u.b.contigbp - u.a.contigbp - 1;
431
- }
432
- if (aalen > 0) {
433
- itd.interstitial = { aalen };
434
- }
435
- if (bplen2 > 0) {
436
- if (!itd.interstitial) itd.interstitial = {};
437
- itd.interstitial.bplen = bplen2;
438
- }
439
- if (!(p.geneA in genes)) {
440
- genes[p.geneA] = [];
441
- }
442
- genes[p.geneA].push(itd);
443
- continue;
444
- }
445
- if (p.isnloss) {
446
- if (!p.geneB) {
447
- e_nloss.push(p.sample + " NLoss (" + p.rating + "): no geneB");
448
- continue;
449
- }
450
- const p2 = p.usepair.b;
451
- if (!p2.isoform) {
452
- e_nloss.push(p.sample + " " + p.geneB + " NLoss (" + p.rating + "): no isoform");
453
- continue;
454
- }
455
- const gm = svmr.genome.isoformmatch(p2.isoform, p.chrB, p.posB);
456
- if (!gm) {
457
- e_nloss.push(p.sample + " " + p.geneB + " NLoss (" + p.rating + "): no gene model found for " + p2.isoform);
458
- continue;
459
- }
460
- const exonbp = genomic2gm(p.posB, gm).rnapos;
461
- const pp = {
462
- dt: dtnloss,
463
- class: mclassnloss,
464
- mname: "N-loss",
465
- gene: p.geneB,
466
- sample: p.sample,
467
- isoform: p2.isoform,
468
- rating: p.rating,
469
- score: p.score,
470
- functioneffect: p.functioneffect,
471
- rnaposition: exonbp,
472
- chr: p.chrB,
473
- position: p.posB,
474
- strand: p.ortB,
475
- ratio: p.ratioB,
476
- chimericreads: p.readsB,
477
- match: p.matchB,
478
- repeat: p.repeatB,
479
- partner: {
480
- chr: p.chrA,
481
- position: p.posA,
482
- strand: p.ortA,
483
- ratio: p.ratioA,
484
- chimericreads: p.readsA,
485
- match: p.matchA,
486
- repeat: p.repeatA
487
- }
488
- };
489
- if (p.geneA) {
490
- pp.partner.gene = p.geneA;
491
- }
492
- if (p.usepair.a.isoform) {
493
- pp.partner.isoform = p.usepair.a.isoform;
494
- }
495
- if (!(p.geneB in genes)) {
496
- genes[p.geneB] = [];
497
- }
498
- genes[p.geneB].push(pp);
499
- continue;
500
- }
501
- if (p.iscloss) {
502
- if (!p.geneA) {
503
- e_closs.push(p.sample + " CLoss (" + p.rating + "): no geneA");
504
- continue;
505
- }
506
- const p2 = p.usepair.a;
507
- if (!p2.isoform) {
508
- e_closs.push(p.sample + " " + p.geneA + " CLoss (" + p.rating + "): no isoform");
509
- continue;
510
- }
511
- const gm = svmr.genome.isoformmatch(p2.isoform, p.chrA, p.posA);
512
- if (!gm) {
513
- e_closs.push(p.sample + " " + p.geneA + " CLoss (" + p.rating + "): no gene model found by " + p2.isoform);
514
- continue;
515
- }
516
- const exonbp = genomic2gm(p.posA, gm).rnapos;
517
- const pp = {
518
- dt: dtcloss,
519
- class: mclasscloss,
520
- mname: "C-loss",
521
- gene: p.geneA,
522
- sample: p.sample,
523
- isoform: p2.isoform,
524
- rating: p.rating,
525
- score: p.score,
526
- functioneffect: p.functioneffect,
527
- rnaposition: exonbp,
528
- chr: p.chrA,
529
- position: p.posA,
530
- strand: p.ortA,
531
- ratio: p.ratioA,
532
- chimericreads: p.readsA,
533
- match: p.matchA,
534
- repeat: p.repeatA,
535
- partner: {
536
- chr: p.chrB,
537
- position: p.posB,
538
- strand: p.ortB,
539
- ratio: p.ratioB,
540
- chimericreads: p.readsB,
541
- match: p.matchB,
542
- repeat: p.repeatB
543
- }
544
- };
545
- if (p.geneB) {
546
- pp.partner.gene = p.geneB;
547
- }
548
- if (p.usepair.b.isoform) {
549
- pp.partner.isoform = p.usepair.b.isoform;
550
- }
551
- if (!(p.geneA in genes)) {
552
- genes[p.geneA] = [];
553
- }
554
- genes[p.geneA].push(pp);
555
- continue;
556
- }
557
- }
558
- const gene2isoform = /* @__PURE__ */ new Map();
559
- const cleanup = [];
560
- for (const p of row) {
561
- if (p.geneA) {
562
- if (!gene2isoform.has(p.geneA)) gene2isoform.set(p.geneA, /* @__PURE__ */ new Set());
563
- if (p.usepair) {
564
- if (p.usepair.a.isoform) gene2isoform.get(p.geneA).add(p.usepair.a.isoform);
565
- }
566
- }
567
- if (p.geneB) {
568
- if (!gene2isoform.has(p.geneB)) gene2isoform.set(p.geneB, /* @__PURE__ */ new Set());
569
- if (p.usepair) {
570
- if (p.usepair.b.isoform) gene2isoform.get(p.geneB).add(p.usepair.b.isoform);
571
- }
572
- }
573
- const clean = {
574
- type: p.type,
575
- type2: p.type2,
576
- rating: p.rating,
577
- score: p.score,
578
- functioneffect: p.functioneffect,
579
- a: {
580
- name: p.geneA,
581
- chr: p.chrA,
582
- position: p.posA,
583
- strand: p.ortA,
584
- ratio: p.ratioA,
585
- feature: p.featureA,
586
- chimericreads: p.readsA,
587
- contiglen: p.matchA,
588
- repeatscore: p.repeatA
589
- },
590
- b: {
591
- name: p.geneB,
592
- chr: p.chrB,
593
- position: p.posB,
594
- strand: p.ortB,
595
- ratio: p.ratioB,
596
- feature: p.featureB,
597
- chimericreads: p.readsB,
598
- contiglen: p.matchB,
599
- repeatscore: p.repeatB
600
- }
601
- };
602
- if (p.usepair) {
603
- const u = p.usepair;
604
- clean.frame = u.frame;
605
- if (u.a.isoform) {
606
- clean.a.isoform = u.a.isoform;
607
- }
608
- if (u.b.isoform) {
609
- clean.b.isoform = u.b.isoform;
610
- }
611
- let aalen = 0, bplen2 = 0;
612
- if (u.a.contigaa && u.b.contigaa) {
613
- aalen = u.b.contigaa - u.a.contigaa - 1;
614
- }
615
- if (u.a.contigbp && u.b.contigbp) {
616
- bplen2 = u.b.contigbp - u.a.contigbp - 1;
617
- }
618
- if (aalen > 0) {
619
- clean.interstitial = { aalen };
620
- }
621
- if (bplen2 > 0) {
622
- if (!clean.interstitial) clean.interstitial = {};
623
- clean.interstitial.bplen = bplen2;
624
- }
625
- }
626
- cleanup.push(clean);
627
- }
628
- for (const [genename, iset] of gene2isoform) {
629
- for (const isoform of iset) {
630
- if (!(genename in genes)) {
631
- genes[genename] = [];
632
- }
633
- const pp = {
634
- dt: dtfusionrna,
635
- class: mclassfusionrna,
636
- sample: row[0].sample,
637
- isoform,
638
- pairlst: duplicate(cleanup)
639
- };
640
- for (const i of cleanup) {
641
- if (i.functioneffect) {
642
- pp.functioneffect = i.functioneffect;
643
- }
644
- }
645
- genes[genename].push(pp);
646
- }
647
- }
648
- }
649
- if (e_itd.length) {
650
- svmr.err(e_itd.join("<br>"));
651
- }
652
- if (e_nloss.length) {
653
- svmr.err(e_nloss.join("<br>"));
654
- }
655
- if (e_closs.length) {
656
- svmr.err(e_closs.join("<br>"));
657
- }
658
- let genecount = 0, genesup = {};
659
- for (const k in genes) {
660
- genecount++;
661
- genesup[k.toUpperCase()] = genes[k];
662
- }
663
- if (genecount == 0) {
664
- alert("No data can be added.");
665
- return;
666
- }
667
- let ds = null;
668
- for (const n in svmr.genome.datasets) {
669
- if (svmr.genome.datasets[n].svmrid == svmr.id) {
670
- ds = svmr.genome.datasets[n];
671
- break;
672
- }
673
- }
674
- if (ds) {
675
- ds.bulkdata = genesup;
676
- } else {
677
- ds = {
678
- label: svmr.filename,
679
- svmrid: svmr.id,
680
- bulkdata: genesup
681
- };
682
- svmr.genome.datasets[svmr.filename] = ds;
683
- }
684
- if (svmr.cohort) {
685
- svmr.cohortpane.pane.remove();
686
- } else {
687
- svmr.cohort = {
688
- name: svmr.filename,
689
- genome: svmr.genome,
690
- show_genetable: 1,
691
- jwt: svmr.jwt,
692
- dsset: {}
693
- };
694
- svmr.cohort.dsset[svmr.filename] = ds;
695
- }
696
- const pane = newpane({ x: 200, y: 200 });
697
- import("./tp.ui-NQEAKWUH.js").then((p) => {
698
- p.default(svmr.cohort, pane.body, svmr.hostURL);
699
- svmr.cohortpane = pane;
700
- });
701
- }
702
- function svmr_export_text(svmr, hqonly) {
703
- const rows = [];
704
- const headerlst = svmr.atlst.map((i) => i.label);
705
- headerlst.push("transcript_nbr");
706
- headerlst.push("breakpoint_nbr");
707
- headerlst.push("functionalClass");
708
- for (const sample of svmr.samples) {
709
- const whole = [];
710
- for (const egg of sample.egglst) {
711
- for (const eg of egg.lst) {
712
- if (eg.ismsg) {
713
- const lst = eg.lst.map((evt) => evt.lst[0]);
714
- if (hqonly) {
715
- let hashq = false;
716
- for (const i of lst) {
717
- if (i.rating == "Major") hashq = true;
718
- }
719
- if (hashq) {
720
- whole.push(lst);
721
- }
722
- } else {
723
- whole.push(lst);
724
- }
725
- } else {
726
- for (const evt of eg.lst) {
727
- for (const p of evt.lst) {
728
- if (hqonly) {
729
- if (p.rating == "Major") whole.push([p]);
730
- } else {
731
- whole.push([p]);
732
- }
733
- }
734
- }
735
- }
736
- }
737
- }
738
- for (let gid = 0; gid < whole.length; gid++) {
739
- for (let prodid = 0; prodid < whole[gid].length; prodid++) {
740
- let prod = whole[gid][prodid];
741
- const frame = [], a_isoform = [], a_codon = [], a_exon = [], a_anchor = [], a_contigaa = [], a_contigbp = [], b_isoform = [], b_codon = [], b_exon = [], b_anchor = [], b_contigaa = [], b_contigbp = [];
742
- for (const p of prod.pairs) {
743
- frame.push(p.frame);
744
- a_isoform.push(p.a.isoform);
745
- b_isoform.push(p.b.isoform);
746
- let v = p.a.codon;
747
- a_codon.push(Number.isNaN(v) ? "" : v);
748
- v = p.b.codon;
749
- b_codon.push(Number.isNaN(v) ? "" : v);
750
- v = p.a.exon;
751
- a_exon.push(Number.isNaN(v) ? "" : v);
752
- v = p.b.exon;
753
- b_exon.push(Number.isNaN(v) ? "" : v);
754
- a_anchor.push(p.a.anchor ? p.a.anchor : "");
755
- b_anchor.push(p.b.anchor ? p.b.anchor : "");
756
- v = p.a.contigaa;
757
- a_contigaa.push(v == void 0 ? "" : v);
758
- v = p.b.contigaa;
759
- b_contigaa.push(v == void 0 ? "" : v);
760
- v = p.a.contigbp;
761
- a_contigbp.push(v == void 0 ? "" : v);
762
- v = p.b.contigbp;
763
- b_contigbp.push(v == void 0 ? "" : v);
764
- }
765
- const row = [];
766
- for (const i of svmr.atlst) {
767
- switch (i.key) {
768
- case "lstframe":
769
- row.push(frame.join(","));
770
- break;
771
- // A
772
- case "lstisoforma":
773
- row.push(a_isoform.join(","));
774
- break;
775
- case "lstisoformacodon":
776
- row.push(a_codon.join(","));
777
- break;
778
- case "lstisoformaexon":
779
- row.push(a_exon.join(","));
780
- break;
781
- case "lstisoformaanchor":
782
- row.push(a_anchor.join(","));
783
- break;
784
- case "lstcontigaaA":
785
- row.push(a_contigaa.join(","));
786
- break;
787
- case "lstcontigbpA":
788
- row.push(a_contigbp.join(","));
789
- break;
790
- // B
791
- case "lstisoformb":
792
- row.push(b_isoform.join(","));
793
- break;
794
- case "lstisoformbcodon":
795
- row.push(b_codon.join(","));
796
- break;
797
- case "lstisoformbexon":
798
- row.push(b_exon.join(","));
799
- break;
800
- case "lstisoformbanchor":
801
- row.push(b_anchor.join(","));
802
- break;
803
- case "lstcontigaaB":
804
- row.push(b_contigaa.join(","));
805
- break;
806
- case "lstcontigbpB":
807
- row.push(b_contigbp.join(","));
808
- break;
809
- default:
810
- row.push(prod[i.key]);
811
- }
812
- }
813
- row.push(gid + 1);
814
- row.push(prodid + 1);
815
- row.push(prod.functioneffect ? prod.functioneffect : "");
816
- rows.push(row);
817
- }
818
- }
819
- }
820
- export_data("Fusion data from " + svmr.filename, [{ text: headerlst.join(" ") + "\n" + rows.join("\n") }]);
821
- }
822
- function duplicate(i) {
823
- const lst = [];
824
- for (const j of i) {
825
- const k = {};
826
- for (const n in j) k[n] = j[n];
827
- k.a = {};
828
- for (const n in j.a) k.a[n] = j.a[n];
829
- k.b = {};
830
- for (const n in j.b) k.b[n] = j.b[n];
831
- if (j.interstitial) {
832
- k.interstitial = {};
833
- for (const n in j.interstitial) k.interstitial[n] = j.interstitial[n];
834
- }
835
- lst.push(k);
836
- }
837
- return lst;
838
- }
839
-
840
- // src/svmr.c.js
841
- var genomelimit = 1e4;
842
- var knownprod_c = "#A702C4";
843
- var tip = new Menu();
844
- var svmr_c_default = class {
845
- constructor(genome, atlst, items, filename, holder, hostURL, jwt) {
846
- window.svmr = this;
847
- this.hostURL = hostURL;
848
- this.jwt = jwt;
849
- this.id = Math.random();
850
- this.items = items;
851
- this.genome = genome;
852
- this.filename = filename;
853
- this.atlst = atlst;
854
- this.cf_repeat = 0.7, this.cf_reads = 2;
855
- this.cf_match = 40;
856
- this.cf_ratio = 0.01;
857
- this.expression = {};
858
- this.samples = [];
859
- this.genelst = [];
860
- this.elab2sample = {};
861
- if (!holder) {
862
- const pane = newpane({ x: 100, y: 100, toshrink: true });
863
- pane.header.append("span").style("color", "#858585").style("font-size", ".7em").html("Fusion Editor&nbsp;");
864
- pane.header.append("span").text(filename);
865
- holder = pane.body;
866
- }
867
- this.holder = holder;
868
- this.errdiv = holder.append("div").style("width", "500px").style("margin", "10px");
869
- const butrow = holder.append("div").style("margin", "20px").style("padding", "0px");
870
- this.buttgene = butrow.append("button").text("Loading genes").on("click", () => {
871
- if (genediv.style("display") == "none") {
872
- appear(genediv);
873
- } else {
874
- disappear(genediv);
875
- }
876
- });
877
- this.buttsample = butrow.append("button").text("Loading samples").on("click", () => {
878
- if (this.ul.style("display") == "none") {
879
- appear(this.ul);
880
- } else {
881
- disappear(this.ul);
882
- }
883
- });
884
- butrow.append("button").text("Gene expression").on("click", () => {
885
- if (this.expression.div.style("display") == "none") {
886
- appear(this.expression.div);
887
- } else {
888
- disappear(this.expression.div);
889
- }
890
- });
891
- butrow.append("button").text("Parameter cutoff").on("click", () => {
892
- if (cutoffdiv.style("display") == "none") {
893
- appear(cutoffdiv);
894
- } else {
895
- disappear(cutoffdiv);
896
- }
897
- });
898
- butrow.append("button").text("Legend").on("click", () => {
899
- if (legenddiv.style("display") == "none") {
900
- appear(legenddiv);
901
- } else {
902
- disappear(legenddiv);
903
- }
904
- });
905
- butrow.append("button").style("margin-right", "20px").text("Export data").on("click", (event) => {
906
- let single_hq = 0, multi_hq = 0, single_nhq = 0, multi_nhq = 0, itd_hq = 0, itd_nhq = 0, trunc_hq = 0, trunc_nhq = 0;
907
- for (const sample of this.samples) {
908
- for (const egg of sample.egglst) {
909
- for (const eg of egg.lst) {
910
- if (eg.ismsg) {
911
- let hashq = false;
912
- for (const i of eg.lst) {
913
- if (i.rating == "Major") hashq = true;
914
- }
915
- if (hashq) multi_hq++;
916
- else multi_nhq++;
917
- } else {
918
- for (const evt of eg.lst) {
919
- for (const p of evt.lst) {
920
- if (p.rating == "Major") {
921
- if (p.isitd) itd_hq++;
922
- else if (p.iscloss || p.isnloss) trunc_hq++;
923
- else single_hq++;
924
- } else {
925
- if (p.isitd) itd_nhq++;
926
- else if (p.iscloss || p.isnloss) trunc_nhq++;
927
- else single_nhq++;
928
- }
929
- }
930
- }
931
- }
932
- }
933
- }
934
- }
935
- const d02 = tip.clear().showunder(event.target).d.append("div");
936
- const table = d02.append("table").style("border-spacing", "10px").style("border-collapse", "separate");
937
- let tr = table.append("tr").style("color", "#858585");
938
- tr.append("td");
939
- tr.append("td").text("2-gene fusion");
940
- tr.append("td").text("Multi-gene fusion");
941
- tr.append("td").text("ITD");
942
- tr.append("td").text("Truncation");
943
- tr = table.append("tr");
944
- tr.append("td").text("Major").style("color", "#858585").style("text-align", "right");
945
- tr.append("td").text(single_hq);
946
- tr.append("td").text(multi_hq);
947
- tr.append("td").text(itd_hq);
948
- tr.append("td").text(trunc_hq);
949
- tr = table.append("tr");
950
- tr.append("td").text("not Major").style("color", "#858585").style("text-align", "right");
951
- tr.append("td").text(single_nhq);
952
- tr.append("td").text(multi_nhq);
953
- tr.append("td").text(itd_nhq);
954
- tr.append("td").text(trunc_nhq);
955
- let dd = d02.append("div").style("margin", "10px").text('Export fusions labeled as "Major"');
956
- dd.append("button").style("margin", "10px").text("Tabular format").on("click", () => svmr_export_text(this, true));
957
- dd.append("button").style("margin", "10px").text("JSON format").on("click", () => svmr_export_json(this, true));
958
- dd.append("button").style("margin", "10px").text("View in ProteinPaint").on("click", () => svmr_2pp(this, true));
959
- dd = d02.append("div").style("margin", "10px").text("Export all fusions");
960
- dd.append("button").style("margin", "10px").text("Tabular format").on("click", () => svmr_export_text(this, false));
961
- dd.append("button").style("margin", "10px").text("JSON format").on("click", () => svmr_export_json(this, false));
962
- dd.append("button").style("margin", "10px").text("View in ProteinPaint").on("click", () => svmr_2pp(this, false));
963
- });
964
- butrow.append("a").attr("target", "_blank").attr("href", "https://docs.google.com/document/d/1DRVzE_WenG490eRYB7VGFOygtSqtF5L97rhK0HOUCNY/edit?usp=sharing").text("Help");
965
- this.expression.div = holder.append("div").style("display", "none").style("margin", "20px").style("padding", "20px").style("border", "dashed 1px #bbb");
966
- this.expression.prediv = this.expression.div.append("div");
967
- this.expression.prediv.append("div").style("margin", "5px").text("Load a file that includes gene expression data for current samples.");
968
- this.expression.prediv.append("div").style("margin", "5px 5px 10px 5px").style("font-size", "80%").text("The first 3 columns of the file should be: 1) gene name, 2) expression value, 3) sample name");
969
- this.expression.input = this.expression.prediv.append("input").attr("type", "file").on("change", (event) => {
970
- loadexpression(this, event.target.files[0]);
971
- });
972
- this.expression.presays = this.expression.prediv.append("span").style("padding-left", "20px");
973
- this.expression.afterdiv = this.expression.div.append("div").style("display", "none");
974
- const genediv = holder.append("div").style("display", "none").style("margin", "20px");
975
- let d0 = genediv.append("div").style("display", "inline-block").style("border", "dashed 1px #bbb");
976
- this.genefilter = d0.append("div").style("background-color", "#ededed").style("padding", "10px 20px");
977
- let d01 = d0.append("div").style("padding", "10px 20px").style("overflow-y", "scroll").style("resize", "vertical").style("height", "300px");
978
- d01.append("div").style("margin", "10px").style("font-size", "70%").text("Not included: read-through and intergenic events (including one or both sides).");
979
- this.genetable = d01.append("table");
980
- const cutoffdiv = holder.append("div").style("display", "none").style("margin", "20px");
981
- d0 = cutoffdiv.append("div").style("display", "inline-block").style("padding", "20px").style("border", "solid 1px #ededed");
982
- d0.append("span").style("padding", "0px 10px").text("Alert if:");
983
- d01 = d0.append("span").style("padding", "0px 10px");
984
- d01.append("span").html("chimeric reads &le;&nbsp;");
985
- d01.append("input").attr("size", 3).property("value", this.cf_reads).on("change", (event) => {
986
- const v = Number.parseInt(event.target.value);
987
- if (Number.isNaN(v)) {
988
- return;
989
- }
990
- this.cf_reads = v;
991
- });
992
- d01 = d0.append("span").style("padding", "0px 10px");
993
- d01.append("span").html("repeat score &ge;&nbsp;");
994
- d01.append("input").attr("size", 3).property("value", this.cf_repeat).on("change", (event) => {
995
- const v = Number.parseFloat(event.target.value);
996
- if (Number.isNaN(v)) {
997
- return;
998
- }
999
- this.cf_repeat = v;
1000
- });
1001
- d01 = d0.append("span").style("padding", "0px 10px");
1002
- d01.append("span").html("contig bp length &le;&nbsp;");
1003
- d01.append("input").attr("size", 3).property("value", this.cf_match).on("change", (event) => {
1004
- const v = Number.parseInt(event.target.value);
1005
- if (Number.isNaN(v)) {
1006
- return;
1007
- }
1008
- this.cf_match = v;
1009
- });
1010
- d01 = d0.append("span").style("padding", "0px 10px");
1011
- d01.append("span").html("ratio &le;&nbsp;");
1012
- d01.append("input").attr("size", 3).property("value", this.cf_ratio).on("change", (event) => {
1013
- const v = Number.parseFloat(event.target.value);
1014
- if (Number.isNaN(v)) {
1015
- return;
1016
- }
1017
- this.cf_ratio = v;
1018
- });
1019
- const legenddiv = holder.append("div").style("display", "none").style("margin", "20px");
1020
- var h = 16;
1021
- legenddiv.append("div").style("display", "inline-block").style("padding", "10px").style("border", "solid 1px #ededed").html(
1022
- '<table style="margin:20px"><tr><td><div style="display:inline-block;font-size:80%;color:white;background-color:' + colorinframe + ';padding:2px 5px">IN</div></td><td>In-frame fusion</td></tr><tr><td><div style="display:inline-block;font-size:80%;color:white;background-color:' + coloroutframe + ';padding:2px 5px">O</div></td><td>Out-of-frame fusion</td></tr><tr><td><div style="display:inline-block;font-size:80%;color:black;border:solid 1px black;padding:1px 3px">?</div></td><td>Intergenic fusion, or gene isoform not specified</td></tr></table><table style="margin:20px"><tr><td>chr5 <span style="border:solid 1px black;padding:0px 10px;"></span>-<span style="border:solid 1px black;padding:0px 10px;"></span> chr5</td><td>Intra-chromosomal breakpoints</td></tr><tr><td><span style="color:red">chr5</span> <span style="border:solid 1px black;padding:0px 10px;"></span>-<span style="border:solid 1px black;padding:0px 10px;"></span> <span style="color:red">chr10</span></td><td>Inter-chromosomal breakpoints</td></tr></tr></table><table style="margin:20px"><tr><td><div style="display:inline-block;border:solid 1px black;padding:2px 10px;font-size:70%">geneA</div>-<div style="display:inline-block;border:solid 1px black;padding:2px 10px;font-size:70%">geneB</div></td><td>Neither geneA nor geneB is known fusion partner</td></tr><tr><td><div style="display:inline-block;border:solid 1px black;padding:2px 10px;font-size:70%;font-weight:bold;">geneA</div>-<div style="display:inline-block;border:solid 1px black;padding:2px 10px;font-size:70%">geneB</div></td><td>GeneA is a known fusion partner</td></tr><tr><td><div style="display:inline-block;border:solid 1px black;padding:2px 10px;font-size:70%;font-weight:bold;">geneA</div>-<div style="display:inline-block;border:solid 1px black;padding:2px 10px;font-size:70%;font-weight:bold;">geneB</div></td><td>Both genes are known fusion partners, but they do not make a known fusion product.</td></tr><tr><td><div style="display:inline-block;border:solid 1px black;padding:2px 10px;font-size:70%;font-weight:bold;color:' + knownprod_c + '">geneA</div>-<div style="display:inline-block;border:solid 1px black;padding:2px 10px;font-size:70%;font-weight:bold;color:' + knownprod_c + '">geneB</div></td><td>A known fusion product</td></tr></table><table style="margin:20px"><tr><td><div style="width:40px;height:16px;position:relative;"><div style="position:absolute;right:0px;top:0px;width:20px;height:16px;background-color:' + colorbgleft + '"></div><div style="position:absolute;border:solid 1px black;width:100%;height:15px"></div></div></td><td>ratioA: for geneA, the ratio of chimeric reads over total reads</td></tr><tr><td><div style="width:40px;height:16px;position:relative;"><div style="position:absolute;left:0px;top:0px;width:20px;height:16px;background-color:' + colorbgright + '"></div><div style="position:absolute;border:solid 1px black;width:100%;height:15px"></div></div></td><td>ratioB: for geneB, the ratio of chimeric reads over total reads</td></tr><tr><td><div style="width:40px;height:16px;border:solid 1px red;"></div></td><td>Antisense (reported strand is on the opposite of gene strand)</td></tr></table>'
1023
- );
1024
- this.ul = holder.append("ul");
1025
- this.step_isoform(items);
1026
- }
1027
- // end of constructor
1028
- err(m) {
1029
- sayerror(this.errdiv, m);
1030
- }
1031
- step_isoform(items) {
1032
- const newset = /* @__PURE__ */ new Set();
1033
- for (const item of items) {
1034
- for (const i of item.pairs) {
1035
- let n = i.a.isoform;
1036
- if (n && !this.genome.isoformcache.has(n.toUpperCase())) {
1037
- newset.add(n);
1038
- }
1039
- n = i.b.isoform;
1040
- if (n && !this.genome.isoformcache.has(n.toUpperCase())) {
1041
- newset.add(n);
1042
- }
1043
- }
1044
- }
1045
- if (newset.size == 0) {
1046
- this.step_eat(items);
1047
- return;
1048
- }
1049
- const newisoform = [];
1050
- for (const n of newset) {
1051
- newisoform.push(n);
1052
- }
1053
- const wait = this.holder.append("div").style("margin", "20px").text("Loading " + newset.size + " isoforms ...");
1054
- fetch(
1055
- new Request(this.hostURL + "/isoformlst", {
1056
- method: "POST",
1057
- body: JSON.stringify({ genome: this.genome.name, lst: newisoform, jwt: this.jwt })
1058
- })
1059
- ).then((data) => {
1060
- return data.json();
1061
- }).then((data) => {
1062
- if (data.error) throw { message: "Cannot load isoforms: " + data.error };
1063
- wait.remove();
1064
- for (const ilst of data.lst) {
1065
- if (ilst[0]) {
1066
- this.genome.isoformcache.set(ilst[0].isoform, ilst);
1067
- }
1068
- }
1069
- const isoformErr = [];
1070
- for (const k of newset) {
1071
- if (!this.genome.isoformcache.has(k.toUpperCase())) {
1072
- isoformErr.push(k);
1073
- }
1074
- }
1075
- if (isoformErr.length) {
1076
- this.err(
1077
- isoformErr.length + " invalid isoform" + (isoformErr.length > 1 ? "s" : "") + ": " + isoformErr.join(", ")
1078
- );
1079
- }
1080
- this.step_eat(items);
1081
- }).catch((err) => {
1082
- this.err(err.message);
1083
- if (err.stack) console.log(err.stack);
1084
- });
1085
- }
1086
- step_eat(items) {
1087
- for (const prod of items) {
1088
- prod.hook = {};
1089
- let use = null;
1090
- for (const p of prod.pairs) {
1091
- let gm = this.genome.isoformmatch(p.a.isoform, prod.chrA, prod.posA);
1092
- if (gm) {
1093
- prod.geneA = gm.name;
1094
- p.a.isdefault = gm.isdefault;
1095
- if (Number.isNaN(p.a.codon) || p.a.codon < 0) {
1096
- p.a.codon = void 0;
1097
- const a = genomic2gm(prod.posA, gm);
1098
- if (a.atupstream) {
1099
- p.a.atupstream = a.atupstream;
1100
- } else if (a.atdownstream) {
1101
- p.a.atdownstream = a.atdownstream;
1102
- } else if (a.atutr3) {
1103
- p.a.atutr3 = a.atutr3;
1104
- } else if (a.atutr5) {
1105
- p.a.atutr5 = a.atutr5;
1106
- } else {
1107
- p.a.codon = a.codon;
1108
- }
1109
- }
1110
- }
1111
- gm = this.genome.isoformmatch(p.b.isoform, prod.chrB, prod.posB);
1112
- if (gm) {
1113
- prod.geneB = gm.name;
1114
- p.b.isdefault = gm.isdefault;
1115
- if (Number.isNaN(p.b.codon) || p.b.codon < 0) {
1116
- p.b.codon = void 0;
1117
- const a = genomic2gm(prod.posB, gm);
1118
- if (a.atupstream) {
1119
- p.b.atupstream = a.atupstream;
1120
- } else if (a.atdownstream) {
1121
- p.b.atdownstream = a.atdownstream;
1122
- } else if (a.atutr3) {
1123
- p.b.atutr3 = a.atutr3;
1124
- } else if (a.atutr5) {
1125
- p.b.atutr5 = a.atutr5;
1126
- } else {
1127
- p.b.codon = a.codon;
1128
- }
1129
- }
1130
- }
1131
- if (p.a.isdefault && p.b.isdefault) {
1132
- if (!use) {
1133
- use = p;
1134
- }
1135
- if (p.inframe) {
1136
- use = p;
1137
- }
1138
- }
1139
- }
1140
- if (use) {
1141
- prod.usepair = use;
1142
- } else {
1143
- prod.notes.push("No preferred isoform pair");
1144
- prod.usepair = prod.pairs[0];
1145
- }
1146
- if (prod.usepair) {
1147
- prod.usepair.inuse = true;
1148
- }
1149
- prod.eventlabel = (prod.geneA ? prod.geneA : prod.chrA) + "-" + (prod.geneB ? prod.geneB : prod.chrB);
1150
- }
1151
- const tmp = {};
1152
- const sampleless = {};
1153
- let hassampleless = false;
1154
- for (const prod of items) {
1155
- let n = prod.sample;
1156
- if (n) {
1157
- if (!(n in tmp)) {
1158
- tmp[n] = {};
1159
- }
1160
- if (!(prod.eventlabel in tmp[n])) {
1161
- tmp[n][prod.eventlabel] = [];
1162
- }
1163
- tmp[n][prod.eventlabel].push(prod);
1164
- } else {
1165
- hassampleless = true;
1166
- if (!(prod.eventlabel in sampleless)) {
1167
- sampleless[prod.eventlabel] = [];
1168
- }
1169
- sampleless[prod.eventlabel].push(prod);
1170
- }
1171
- }
1172
- for (const sn in tmp) {
1173
- this.samples.push({
1174
- name: sn,
1175
- events: tmp[sn]
1176
- });
1177
- }
1178
- if (hassampleless) {
1179
- this.samples.push({
1180
- name: "No name",
1181
- events: sampleless
1182
- });
1183
- }
1184
- this.buttsample.text(this.samples.length + " sample" + (this.samples.length > 1 ? "s" : ""));
1185
- for (const sample of this.samples) {
1186
- for (const elab in sample.events) {
1187
- if (!(elab in this.elab2sample)) {
1188
- this.elab2sample[elab] = [];
1189
- }
1190
- this.elab2sample[elab].push(sample);
1191
- }
1192
- }
1193
- for (const sample of this.samples) {
1194
- sample.gene2events = {};
1195
- for (const elab in sample.events) {
1196
- for (const prod of sample.events[elab]) {
1197
- const a = prod.geneA;
1198
- if (a) {
1199
- if (!(a in sample.gene2events)) {
1200
- sample.gene2events[a] = {};
1201
- }
1202
- sample.gene2events[a][elab] = 1;
1203
- }
1204
- const b = prod.geneB;
1205
- if (b) {
1206
- if (!(b in sample.gene2events)) {
1207
- sample.gene2events[b] = {};
1208
- }
1209
- sample.gene2events[b][elab] = 1;
1210
- }
1211
- }
1212
- }
1213
- }
1214
- for (const sample of this.samples) {
1215
- const newholder = [];
1216
- for (const elab in sample.events) {
1217
- for (const prod of sample.events[elab]) {
1218
- if (prod.rating == "HQ") msjoin(prod, newholder);
1219
- }
1220
- }
1221
- for (const elab in sample.events) {
1222
- for (const prod of sample.events[elab]) {
1223
- if (prod.rating == "LQ") msjoin(prod, newholder);
1224
- }
1225
- }
1226
- for (const elab in sample.events) {
1227
- for (const prod of sample.events[elab]) {
1228
- if (prod.rating == "RT") msjoin(prod, newholder);
1229
- }
1230
- }
1231
- for (const elab in sample.events) {
1232
- for (const prod of sample.events[elab]) {
1233
- if (prod.rating == "bad") msjoin(prod, newholder);
1234
- }
1235
- }
1236
- let msgid = 0;
1237
- const msglst = [];
1238
- for (const lst of newholder) {
1239
- if (lst.length > 1) {
1240
- for (const prod of lst) {
1241
- prod.msgid = msgid;
1242
- }
1243
- msgid++;
1244
- msglst.push(lst);
1245
- }
1246
- }
1247
- const hqin = [], hqt = [], hqo = [], lqin = [], lqt = [], lqo = [], rtin = [], rtt = [], rto = [], badin = [], badt = [], bado = [];
1248
- for (const msg of msglst) {
1249
- const thisset = [];
1250
- let hqin3 = false, hqt3 = false, hqo3 = false, lqin3 = false, lqt3 = false, lqo3 = false, rtin3 = false, rtt3 = false, rto3 = false, badin3 = false, badt3 = false, bado3 = false;
1251
- for (const prod of msg) {
1252
- thisset.push({ label: prod.eventlabel, lst: [prod] });
1253
- const pair2 = prod.usepair;
1254
- if (prod.rating == "HQ") {
1255
- if (pair2) {
1256
- if (pair2.inframe) hqin3 = true;
1257
- else hqt3 = true;
1258
- } else if (prod.isnloss || prod.iscloss) {
1259
- hqt3 = true;
1260
- } else {
1261
- hqo3 = true;
1262
- }
1263
- } else if (prod.rating == "LQ") {
1264
- if (pair2) {
1265
- if (pair2.inframe) lqin3 = true;
1266
- else lqt3 = true;
1267
- } else if (prod.isnloss || prod.iscloss) {
1268
- lqt3 = true;
1269
- } else {
1270
- lqo3 = true;
1271
- }
1272
- } else if (prod.rating == "RT") {
1273
- if (pair2) {
1274
- if (pair2.inframe) rtin3 = true;
1275
- else rtt3 = true;
1276
- } else if (prod.isnloss || prod.iscloss) {
1277
- rtt3 = true;
1278
- } else {
1279
- rto3 = true;
1280
- }
1281
- } else {
1282
- if (pair2) {
1283
- if (pair2.inframe) badin3 = true;
1284
- else badt3 = true;
1285
- } else if (prod.isnloss || prod.iscloss) {
1286
- badt3 = true;
1287
- } else {
1288
- bado3 = true;
1289
- }
1290
- }
1291
- }
1292
- if (hqin3) {
1293
- hqin.push({ label: "", lst: thisset, ismsg: true });
1294
- } else if (hqt3) {
1295
- hqt.push({ label: "", lst: thisset, ismsg: true });
1296
- } else if (hqo3) {
1297
- hqo.push({ label: "", lst: thisset, ismsg: true });
1298
- } else if (lqin3) {
1299
- lqin.push({ label: "", lst: thisset, ismsg: true });
1300
- } else if (lqt3) {
1301
- lqt.push({ label: "", lst: thisset, ismsg: true });
1302
- } else if (lqo3) {
1303
- lqo.push({ label: "", lst: thisset, ismsg: true });
1304
- } else if (rtin3) {
1305
- rtin.push({ label: "", lst: thisset, ismsg: true });
1306
- } else if (rtt3) {
1307
- rtt.push({ label: "", lst: thisset, ismsg: true });
1308
- } else if (rto3) {
1309
- rto.push({ label: "", lst: thisset, ismsg: true });
1310
- } else if (badin3) {
1311
- badin.push({ label: "", lst: thisset, ismsg: true });
1312
- } else if (badt3) {
1313
- badt.push({ label: "", lst: thisset, ismsg: true });
1314
- } else if (bado3) {
1315
- bado.push({ label: "", lst: thisset, ismsg: true });
1316
- } else {
1317
- console.log("multi-seg group unclassfied? " + key);
1318
- }
1319
- }
1320
- const genepairs = {};
1321
- for (const elab in sample.events) {
1322
- const hqin2 = [], hqt2 = [], hqo2 = [], lqin2 = [], lqt2 = [], lqo2 = [], rtin2 = [], rtt2 = [], rto2 = [], badin2 = [], badt2 = [], bado2 = [];
1323
- for (const prod of sample.events[elab]) {
1324
- if (prod.msgid != void 0) {
1325
- continue;
1326
- }
1327
- if (prod.geneA && prod.geneB) {
1328
- const key2 = prod.geneA + "-" + prod.geneB;
1329
- let hash = genepairs[key2];
1330
- if (!hash) {
1331
- const key22 = prod.geneB + "-" + prod.geneA;
1332
- hash = genepairs[key22];
1333
- }
1334
- if (hash) {
1335
- if (!(key2 in hash)) {
1336
- hash[key2] = [];
1337
- }
1338
- hash[key2].push(prod);
1339
- } else {
1340
- genepairs[key2] = {};
1341
- genepairs[key2][key2] = [prod];
1342
- }
1343
- continue;
1344
- }
1345
- var pair = prod.usepair;
1346
- if (prod.rating == "HQ") {
1347
- if (pair) {
1348
- if (pair.inframe) hqin2.push(prod);
1349
- else hqt2.push(prod);
1350
- } else if (prod.isnloss || prod.iscloss) {
1351
- hqt2.push(prod);
1352
- } else {
1353
- hqo2.push(prod);
1354
- }
1355
- } else if (prod.rating == "LQ") {
1356
- if (pair) {
1357
- if (pair.inframe) lqin2.push(prod);
1358
- else lqt2.push(prod);
1359
- } else if (prod.isnloss || prod.iscloss) {
1360
- lqt2.push(prod);
1361
- } else {
1362
- lqo2.push(prod);
1363
- }
1364
- } else if (prod.rating == "RT") {
1365
- if (pair) {
1366
- if (pair.inframe) rtin2.push(prod);
1367
- else rtt2.push(prod);
1368
- } else if (prod.isnloss || prod.iscloss) {
1369
- rtt2.push(prod);
1370
- } else {
1371
- rto2.push(prod);
1372
- }
1373
- } else {
1374
- if (pair) {
1375
- if (pair.inframe) badin2.push(prod);
1376
- else badt2.push(prod);
1377
- } else if (prod.isnloss || prod.iscloss) {
1378
- badt2.push(prod);
1379
- } else {
1380
- bado2.push(prod);
1381
- }
1382
- }
1383
- }
1384
- if (hqin2.length > 0) {
1385
- hqin.push({ label: elab, lst: [{ label: elab, lst: hqin2 }] });
1386
- } else if (hqt2.length > 0) {
1387
- hqt.push({ label: elab, lst: [{ label: elab, lst: hqt2 }] });
1388
- } else if (hqo2.length > 0) {
1389
- hqo.push({ label: elab, lst: [{ label: elab, lst: hqo2 }] });
1390
- } else if (lqin2.length > 0) {
1391
- lqin.push({ label: elab, lst: [{ label: elab, lst: lqin2 }] });
1392
- } else if (lqt2.length > 0) {
1393
- lqt.push({ label: elab, lst: [{ label: elab, lst: lqt2 }] });
1394
- } else if (lqo2.length > 0) {
1395
- lqo.push({ label: elab, lst: [{ label: elab, lst: lqo2 }] });
1396
- } else if (rtin2.length > 0) {
1397
- rtin.push({ label: elab, lst: [{ label: elab, lst: rtin2 }] });
1398
- } else if (rtt2.length > 0) {
1399
- rtt.push({ label: elab, lst: [{ label: elab, lst: rtt2 }] });
1400
- } else if (rto2.length > 0) {
1401
- rto.push({ label: elab, lst: [{ label: elab, lst: rto2 }] });
1402
- } else if (badin2.length > 0) {
1403
- badin.push({ label: elab, lst: [{ label: elab, lst: badin2 }] });
1404
- } else if (badt2.length > 0) {
1405
- badt.push({ label: elab, lst: [{ label: elab, lst: badt2 }] });
1406
- } else if (bado2.length > 0) {
1407
- bado.push({ label: elab, lst: [{ label: elab, lst: bado2 }] });
1408
- }
1409
- }
1410
- for (const key2 in genepairs) {
1411
- let hqin3 = false, hqt3 = false, hqo3 = false, lqin3 = false, lqt3 = false, lqo3 = false, rtin3 = false, rtt3 = false, rto3 = false, badin3 = false, badt3 = false, bado3 = false;
1412
- const thisset = [];
1413
- for (const elab in genepairs[key2]) {
1414
- const prodlst = genepairs[key2][elab];
1415
- if (prodlst.length == 1) {
1416
- if (prodlst[0].msgid != void 0) {
1417
- continue;
1418
- }
1419
- }
1420
- thisset.push({ label: elab, lst: prodlst });
1421
- for (const prod of prodlst) {
1422
- const pair2 = prod.usepair;
1423
- if (prod.rating == "HQ") {
1424
- if (pair2) {
1425
- if (pair2.inframe) hqin3 = true;
1426
- else hqt3 = true;
1427
- } else if (prod.isnloss || prod.iscloss) {
1428
- hqt3 = true;
1429
- } else {
1430
- hqo3 = true;
1431
- }
1432
- } else if (prod.rating == "LQ") {
1433
- if (pair2) {
1434
- if (pair2.inframe) lqin3 = true;
1435
- else lqt3 = true;
1436
- } else if (prod.isnloss || prod.iscloss) {
1437
- lqt3 = true;
1438
- } else {
1439
- lqo3 = true;
1440
- }
1441
- } else if (prod.rating == "RT") {
1442
- if (pair2) {
1443
- if (pair2.inframe) rtin3 = true;
1444
- else rtt3 = true;
1445
- } else if (prod.isnloss || prod.iscloss) {
1446
- rtt3 = true;
1447
- } else {
1448
- rto3 = true;
1449
- }
1450
- } else {
1451
- if (pair2) {
1452
- if (pair2.inframe) badin3 = true;
1453
- else badt3 = true;
1454
- } else if (prod.isnloss || prod.iscloss) {
1455
- badt3 = true;
1456
- } else {
1457
- bado3 = true;
1458
- }
1459
- }
1460
- }
1461
- }
1462
- if (hqin3) {
1463
- hqin.push({ label: key2, lst: thisset });
1464
- } else if (hqt3) {
1465
- hqt.push({ label: key2, lst: thisset });
1466
- } else if (hqo3) {
1467
- hqo.push({ label: key2, lst: thisset });
1468
- } else if (lqin3) {
1469
- lqin.push({ label: key2, lst: thisset });
1470
- } else if (lqt3) {
1471
- lqt.push({ label: key2, lst: thisset });
1472
- } else if (lqo3) {
1473
- lqo.push({ label: key2, lst: thisset });
1474
- } else if (rtin3) {
1475
- rtin.push({ label: key2, lst: thisset });
1476
- } else if (rtt3) {
1477
- rtt.push({ label: key2, lst: thisset });
1478
- } else if (rto3) {
1479
- rto.push({ label: key2, lst: thisset });
1480
- } else if (badin3) {
1481
- badin.push({ label: key2, lst: thisset });
1482
- } else if (badt3) {
1483
- badt.push({ label: key2, lst: thisset });
1484
- } else if (bado3) {
1485
- bado.push({ label: key2, lst: thisset });
1486
- }
1487
- }
1488
- sample.egglst = [];
1489
- sample.hqincount = 0;
1490
- sample.lqincount = 0;
1491
- if (hqin.length) {
1492
- sample.egglst.push({
1493
- htmlab: 'HQ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="background-color:' + colorinframe + ';color:white;padding:1px 3px;font-size:80%;">in-frame&nbsp;&nbsp;</span>',
1494
- lst: hqin
1495
- });
1496
- sample.hqincount = hqin.reduce((i, j) => i + j.lst.length, 0);
1497
- }
1498
- if (hqt.length) {
1499
- sample.egglst.push({
1500
- htmlab: 'HQ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="background-color:#E3C3C8;padding:1px 3px;font-size:80%;">truncation</span>',
1501
- lst: hqt
1502
- });
1503
- }
1504
- if (hqo.length) {
1505
- sample.egglst.push({
1506
- htmlab: 'HQ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="background-color:#ccc;padding:1px 3px;font-size:80%;">others&nbsp;&nbsp;&nbsp;&nbsp;</span>',
1507
- lst: hqo
1508
- });
1509
- }
1510
- if (lqin.length) {
1511
- sample.egglst.push({
1512
- htmlab: 'LQ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="background-color:' + colorinframe + ';color:white;padding:1px 3px;font-size:80%;">in-frame&nbsp;&nbsp;</span>',
1513
- lst: lqin
1514
- });
1515
- sample.lqincount = lqin.reduce((i, j) => i + j, 0);
1516
- }
1517
- if (lqt.length) {
1518
- sample.egglst.push({
1519
- htmlab: 'LQ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="background-color:#E3C3C8;padding:1px 3px;font-size:80%;">truncation</span>',
1520
- lst: lqt
1521
- });
1522
- }
1523
- if (lqo.length) {
1524
- sample.egglst.push({
1525
- htmlab: 'LQ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="background-color:#ccc;padding:1px 3px;font-size:80%;">others&nbsp;&nbsp;&nbsp;&nbsp;</span>',
1526
- lst: lqo
1527
- });
1528
- }
1529
- if (rtin.length) {
1530
- sample.egglst.push({
1531
- htmlab: 'Read-through <span style="background-color:' + colorinframe + ';color:white;padding:1px 3px;font-size:80%;">in-frame&nbsp;&nbsp;</span>',
1532
- lst: rtin
1533
- });
1534
- }
1535
- if (rtt.length) {
1536
- sample.egglst.push({
1537
- htmlab: 'Read-through <span style="background-color:#E3C3C8;padding:1px 3px;font-size:80%;">truncation</span>',
1538
- lst: rtt
1539
- });
1540
- }
1541
- if (rto.length) {
1542
- sample.egglst.push({
1543
- htmlab: 'Read-through <span style="background-color:#ccc;padding:1px 3px;font-size:80%;">others&nbsp;&nbsp;&nbsp;&nbsp;</span>',
1544
- lst: rto
1545
- });
1546
- }
1547
- if (badin.length) {
1548
- sample.egglst.push({
1549
- htmlab: 'Bad&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="background-color:' + colorinframe + ';color:white;padding:1px 3px;font-size:80%;">in-frame</span>',
1550
- lst: badin
1551
- });
1552
- }
1553
- if (badt.length) {
1554
- sample.egglst.push({
1555
- htmlab: 'Bad&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="background-color:#E3C3C8;padding:1px 3px;font-size:80%;">truncation</span>',
1556
- lst: badt
1557
- });
1558
- }
1559
- if (bado.length) {
1560
- sample.egglst.push({
1561
- htmlab: 'Bad&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="background-color:#ccc;padding:1px 3px;font-size:80%;">others&nbsp;&nbsp;&nbsp;&nbsp;</span>',
1562
- lst: bado
1563
- });
1564
- }
1565
- }
1566
- this.samples.sort((a, b) => {
1567
- if (a.hqincount == b.hqincount) {
1568
- return b.lqincount - a.lqincount;
1569
- }
1570
- return b.hqincount - a.hqincount;
1571
- });
1572
- for (const sample of this.samples) {
1573
- for (const egg of sample.egglst) {
1574
- for (const eg of egg.lst) {
1575
- for (const evt of eg.lst) {
1576
- evt.lst.sort((a, b) => {
1577
- const pa = a.usepair, pb = b.usepair;
1578
- if (pa) {
1579
- if (pb) {
1580
- if (pa.inframe) {
1581
- if (!pb.inframe) {
1582
- return -1;
1583
- }
1584
- } else {
1585
- if (pb.inframe) {
1586
- return 1;
1587
- }
1588
- }
1589
- } else {
1590
- return -1;
1591
- }
1592
- } else {
1593
- if (pb) {
1594
- return 1;
1595
- }
1596
- }
1597
- return b.score - a.score;
1598
- });
1599
- }
1600
- }
1601
- egg.lst.sort((a, b) => {
1602
- if (a.lst.length != b.lst.length) {
1603
- return b.lst.length - a.lst.length;
1604
- }
1605
- let scorea = 0;
1606
- for (const evta of a.lst) {
1607
- for (const prod of evta.lst) {
1608
- scorea = Math.max(scorea, prod.score);
1609
- }
1610
- }
1611
- let scoreb = 0;
1612
- for (const evtb of b.lst) {
1613
- for (const prod of evtb.lst) {
1614
- scoreb = Math.max(scoreb, prod.score);
1615
- }
1616
- }
1617
- return scoreb - scorea;
1618
- });
1619
- }
1620
- let prodid = 1;
1621
- for (const egg of sample.egglst) {
1622
- for (const eg of egg.lst) {
1623
- for (const evt of eg.lst) {
1624
- for (const prod of evt.lst) {
1625
- prod.prodid = prodid++;
1626
- }
1627
- }
1628
- }
1629
- }
1630
- }
1631
- this.step_gene();
1632
- this.step_table();
1633
- }
1634
- dogenefilter() {
1635
- let va = this.gui.inputa.property("value");
1636
- let vb = this.gui.inputb.property("value");
1637
- if (va.length + vb.length == 0) {
1638
- this.gui.says.text(
1639
- "Showing " + (this.genelst.length > 100 ? 100 : "all") + " of " + this.genelst.length + " pairs"
1640
- );
1641
- this.geneshow(this.genelst.length > 100 ? this.genelst.slice(0, 100) : this.genelst);
1642
- return;
1643
- }
1644
- va = va.length == 0 ? null : va.toLowerCase();
1645
- vb = vb.length == 0 ? null : vb.toLowerCase();
1646
- const uselst = [];
1647
- for (const g of this.genelst) {
1648
- if (va) {
1649
- if (!g.a) continue;
1650
- if (g.a.toLowerCase().indexOf(va) == -1) continue;
1651
- }
1652
- if (vb) {
1653
- if (!g.b) continue;
1654
- if (g.b.toLowerCase().indexOf(vb) == -1) continue;
1655
- }
1656
- uselst.push(g);
1657
- }
1658
- this.gui.says.text("Showing " + Math.min(100, uselst.length) + " of " + this.genelst.length + " pairs");
1659
- this.geneshow(uselst.length > 100 ? uselst.slice(0, 100) : uselst);
1660
- }
1661
- geneshow(lst) {
1662
- this.genetable.selectAll("*").remove();
1663
- const tr = this.genetable.append("tr").style("background-color", "#ededed").style("font-size", ".8em");
1664
- tr.append("td").text("gene A");
1665
- tr.append("td").text("gene B");
1666
- tr.append("td").text("# sample");
1667
- tr.append("td").text("rating");
1668
- for (const evt of lst) {
1669
- let color1 = "black", color2 = "black", weight1, weight2;
1670
- if (evt.ainter) {
1671
- color1 = "#aaa";
1672
- weight1 = "normal";
1673
- } else {
1674
- const a = evt.samples[0].prodlst[0].hlgene;
1675
- if (a == 1 || a == 3 || a == 4) weight1 = "bold";
1676
- if (a == 4) color1 = knownprod_c;
1677
- }
1678
- if (evt.binter) {
1679
- color2 = "#aaa";
1680
- weight2 = "normal";
1681
- } else {
1682
- const a = evt.samples[0].prodlst[0].hlgene;
1683
- if (a == 2 || a == 3 || a == 4) weight2 = "bold";
1684
- if (a == 4) color2 = knownprod_c;
1685
- }
1686
- const tr2 = this.genetable.append("tr").attr("class", "sja_clb");
1687
- tr2.append("td").text(evt.a).style("color", color1).style("font-weight", weight1);
1688
- tr2.append("td").text(evt.b).style("color", color2).style("font-weight", weight2);
1689
- const td = tr2.append("td").text(evt.samples.length);
1690
- tr2.on("click", () => {
1691
- const p = tr2.node().getBoundingClientRect();
1692
- const pane2 = newpane({ x: p.left + p.width + 10, y: p.top });
1693
- pane2.header.text(evt.a + " - " + evt.b);
1694
- const table = pane2.body.append("table");
1695
- for (const sample of evt.samples) {
1696
- const tr3 = table.append("tr");
1697
- tr3.append("td").style("vertical-align", "top").style("padding-top", "5px").text(sample.name);
1698
- const td2 = tr3.append("td");
1699
- for (const prod of sample.prodlst) {
1700
- const logo = this.eventlogo([prod], td2);
1701
- logo.style("position", "relative");
1702
- logo.append("div").style("position", "absolute").style("width", "100%").style("height", "100%").style("top", "0px").style("left", "0px").on("mouseover", (event) => {
1703
- const p2 = event.target.getBoundingClientRect();
1704
- tip.clear().show(p2.left + p2.width - 2, p2.top - 30);
1705
- this.showsvpairs({
1706
- prodlst: [prod],
1707
- holder: tip.d.append("div"),
1708
- nodetail: true,
1709
- sample,
1710
- eglst: null,
1711
- showothersample: false
1712
- });
1713
- }).on("click", (event) => {
1714
- const p2 = event.target.getBoundingClientRect();
1715
- const pane = newpane({ x: p2.left + p2.width + 40, y: p2.top - 60 });
1716
- pane.header.text(sample.name);
1717
- this.showsvpairs({
1718
- prodlst: [prod],
1719
- holder: pane.body
1720
- });
1721
- });
1722
- }
1723
- }
1724
- });
1725
- const hash = {};
1726
- for (const smp of evt.samples) {
1727
- const hash2 = {};
1728
- for (const p of smp.prodlst) {
1729
- hash2[p.rating] = 1;
1730
- }
1731
- for (var n in hash2) {
1732
- if (!(n in hash)) {
1733
- hash[n] = 0;
1734
- }
1735
- hash[n]++;
1736
- }
1737
- }
1738
- const lst2 = [];
1739
- for (const smp of ["HQ", "LQ", "RT", "bad"]) {
1740
- if (hash[smp]) {
1741
- lst2.push(
1742
- '<span style="border-radius:6px;background-color:#ededed;padding:1px 6px;font-size:80%">' + smp + (hash[smp] > 1 ? ' <span style="font-size:80%">' + hash[smp] + "</span>" : "") + "</span>"
1743
- );
1744
- }
1745
- }
1746
- tr2.append("td").html(lst2.join(" "));
1747
- }
1748
- }
1749
- step_gene() {
1750
- this.gui = {};
1751
- this.genefilter.append("span").text("Filter:");
1752
- this.gui.inputa = this.genefilter.append("input").attr("size", 7).attr("placeholder", "gene A").style("margin-left", "10px").on("keyup", () => this.dogenefilter());
1753
- this.gui.inputb = this.genefilter.append("input").attr("size", 7).attr("placeholder", "gene B").style("margin-left", "10px").on("keyup", () => this.dogenefilter());
1754
- this.genefilter.append("button").style("margin-left", "10px").text("Reset").on("click", () => {
1755
- this.gui.inputa.property("value", "");
1756
- this.gui.inputb.property("value", "");
1757
- this.dogenefilter();
1758
- });
1759
- this.gui.says = this.genefilter.append("span").style("padding-left", "20px");
1760
- const events = {};
1761
- const genes = /* @__PURE__ */ new Set();
1762
- for (const sample of this.samples) {
1763
- for (const k in sample.events) {
1764
- for (const prod of sample.events[k]) {
1765
- if (!prod.geneA || !prod.geneB) continue;
1766
- if (prod.rating == "RT") continue;
1767
- if (prod.geneA) {
1768
- genes.add(prod.geneA);
1769
- }
1770
- if (prod.geneB) {
1771
- genes.add(prod.geneB);
1772
- }
1773
- const n = (prod.geneA ? prod.geneA : "<" + prod.chrA) + " - " + (prod.geneB ? prod.geneB : "<" + prod.chrB);
1774
- if (!(n in events)) {
1775
- events[n] = {};
1776
- }
1777
- if (!(sample.name in events[n])) {
1778
- events[n][sample.name] = [];
1779
- }
1780
- events[n][sample.name].push(prod);
1781
- }
1782
- }
1783
- }
1784
- this.buttgene.text(genes.size + " gene" + (genes.size > 1 ? "s" : ""));
1785
- for (const k in events) {
1786
- const tmp = k.split(" - ");
1787
- const evt = { samples: [] };
1788
- if (tmp[0][0] == "<") {
1789
- evt.a = tmp[0].slice(1, tmp[0].length);
1790
- evt.ainter = true;
1791
- } else {
1792
- evt.a = tmp[0];
1793
- }
1794
- if (tmp[1][0] == "<") {
1795
- evt.b = tmp[1].slice(1, tmp[1].length);
1796
- evt.binter = true;
1797
- } else {
1798
- evt.b = tmp[1];
1799
- }
1800
- for (const sn in events[k]) {
1801
- evt.samples.push({ name: sn, prodlst: events[k][sn] });
1802
- }
1803
- this.genelst.push(evt);
1804
- }
1805
- this.genelst.sort((a, b) => {
1806
- let ca = 0;
1807
- for (const s of a.samples) {
1808
- for (const p of s.prodlst) {
1809
- if (p.rating == "HQ") ca++;
1810
- }
1811
- }
1812
- let cb = 0;
1813
- for (const s of b.samples) {
1814
- for (const p of s.prodlst) {
1815
- if (p.rating == "HQ") cb++;
1816
- }
1817
- }
1818
- return cb - ca;
1819
- });
1820
- this.dogenefilter();
1821
- }
1822
- step_table() {
1823
- this.eggbar = [];
1824
- this.ul.selectAll("*").remove();
1825
- for (const sample of this.samples) {
1826
- this.ul.append("li").style("font-weight", "bold").style("color", "#545454").text(sample.name);
1827
- sample.ul = this.ul.append("ul").style("margin-bottom", "10px");
1828
- this.showsample(sample);
1829
- }
1830
- }
1831
- showsample(sample) {
1832
- sample.ul.selectAll("*").remove();
1833
- for (const egg of sample.egglst) {
1834
- const evtnum = egg.lst.reduce((i, j) => i + j.lst.length, 0);
1835
- const li = sample.ul.append("li");
1836
- const bar = li.append("div").attr("class", "sja_clb2").html(egg.htmlab + " " + evtnum);
1837
- bar.on("click", () => {
1838
- for (const bar0 of this.eggbar) {
1839
- bar0.style("background-color", "");
1840
- }
1841
- bar.style("background-color", "yellow");
1842
- const next = select_default(li.node().nextSibling);
1843
- if (next.style("display") == "none") {
1844
- appear(next);
1845
- egg.isopen = true;
1846
- } else {
1847
- disappear(next);
1848
- egg.isopen = false;
1849
- }
1850
- });
1851
- this.eggbar.push(bar);
1852
- const div = sample.ul.append("div").style("margin", "10px");
1853
- this.showevents(sample, egg.lst, div);
1854
- }
1855
- }
1856
- showevents(sample, eglst, holder) {
1857
- const svg = holder.append("svg");
1858
- let rowh = 22, rowh2 = 15, rows = 13, fontsize = rowh - 3, fontsizeframe = 14, fontsizefeature = 10, hpad0 = 20, hpad = 10, vpad = 10, gvpad = 10, chrAw = 60, chrBw = 60, s1 = 10, s2 = 10, s3 = 10, s4 = 10, s5 = 5, s6 = 15, s7 = 13, eventlogow = 0, etw = 25, genesp = 12, geneAw = 0, geneBw = 0, recurw = 0, graphheight = 0;
1859
- for (const eg of eglst) {
1860
- graphheight += rows;
1861
- if (eg.lst.length == 1) {
1862
- graphheight += rowh;
1863
- } else {
1864
- graphheight += vpad * 2 + (rowh + rows) * eg.lst.length + (rowh2 + rows) * (eg.lst.length - 1) + gvpad;
1865
- }
1866
- for (const evt of eg.lst) {
1867
- evt.svg = {};
1868
- const prodlst = evt.lst;
1869
- const prod = prodlst[0];
1870
- let labA, labB;
1871
- if (prod.geneA) {
1872
- const t = prod.geneA.split(",");
1873
- if (t.length > 2) {
1874
- labA = t[0] + "," + t[1] + "...";
1875
- } else {
1876
- labA = prod.geneA;
1877
- }
1878
- } else {
1879
- labA = "";
1880
- }
1881
- if (prod.geneB) {
1882
- const t = prod.geneB.split(",");
1883
- if (t.length > 2) {
1884
- labB = t[0] + "," + t[1] + "...";
1885
- } else {
1886
- labB = prod.geneB;
1887
- }
1888
- } else {
1889
- labB = "";
1890
- }
1891
- svg.append("text").text(labA).attr("font-size", fontsize).attr("font-family", "Courier").each(function() {
1892
- geneAw = Math.max(geneAw, this.getBBox().width);
1893
- }).remove();
1894
- svg.append("text").text(labB).attr("font-size", fontsize).attr("font-family", "Courier").each(function() {
1895
- geneBw = Math.max(geneBw, this.getBBox().width);
1896
- }).remove();
1897
- svg.append("text").text(prod.rating).attr("font-size", fontsize).attr("font-family", "Courier").each(function() {
1898
- evt.svg.ratingw = this.getBBox().width;
1899
- }).remove();
1900
- evt.svg.framew = 22;
1901
- evt.svg.typew = 60;
1902
- if (prod.usepair) {
1903
- evt.svg.frameword = prod.usepair.inframe ? "IN" : "O";
1904
- } else {
1905
- evt.svg.frameword = "?";
1906
- }
1907
- svg.append("text").text(prod.featureA).attr("font-size", fontsizefeature).attr("font-family", font).each(function() {
1908
- evt.svg.featurew = this.getBBox().width;
1909
- }).remove();
1910
- svg.append("text").text(prod.featureB).attr("font-size", fontsizefeature).attr("font-family", font).each(function() {
1911
- evt.svg.featurew = Math.max(evt.svg.featurew, this.getBBox().width);
1912
- }).remove();
1913
- svg.append("text").text(Math.floor(prod.score)).attr("font-size", fontsize).attr("font-family", font).each(function() {
1914
- evt.svg.scorew = this.getBBox().width;
1915
- }).remove();
1916
- evt.svg.logow = evt.svg.ratingw + evt.svg.framew + evt.svg.typew + evt.svg.featurew + evt.svg.scorew + s5 * 6;
1917
- eventlogow = Math.max(eventlogow, evt.svg.logow + (prodlst.length > 1 ? s4 + etw : 0));
1918
- if (prod.geneA && prod.geneB) {
1919
- const slst = this.elab2sample[evt.label];
1920
- if (!slst) {
1921
- evt.svg.recurtext = "Recurrence check error";
1922
- evt.svg.recurtextcolor = "red";
1923
- } else if (slst.length == 1) {
1924
- evt.svg.recurtext = "No recurrence";
1925
- evt.svg.recurtextcolor = "#aaaaaa";
1926
- } else {
1927
- evt.svg.hasrecurrence = true;
1928
- evt.svg.recurtext = "In " + slst.length + " samples";
1929
- evt.svg.recurtextcolor = "black";
1930
- }
1931
- } else {
1932
- evt.svg.recurtext = "Unknown recurrence";
1933
- evt.svg.recurtextcolor = "#aaaaaa";
1934
- }
1935
- svg.append("text").text(evt.svg.recurtext).attr("font-size", fontsize - 4).attr("font-family", font).each(function() {
1936
- evt.svg.recurw = this.getBBox().width;
1937
- }).remove();
1938
- recurw = Math.max(recurw, evt.svg.recurw);
1939
- }
1940
- }
1941
- geneAw += 10;
1942
- geneBw += 10;
1943
- graphheight += rows;
1944
- let ghandlew = 100;
1945
- let roww = chrAw + s1 + rowh + s7 + geneAw + genesp + s2 + genesp + geneBw + s7 + rowh + s1 + chrBw + s3 + eventlogow + s6 + recurw;
1946
- svg.attr("width", hpad0 * 2 + hpad * 2 + roww + ghandlew).attr("height", graphheight);
1947
- const g = svg.append("g").attr("transform", "translate(" + hpad0 + ",0)");
1948
- let y = 0;
1949
- for (const eg of eglst) {
1950
- y += rows;
1951
- const g_eg = g.append("g").attr("transform", "translate(0," + y + ")");
1952
- const groupheight = (rowh + rows) * eg.lst.length - rows + (eg.lst.length > 1 ? vpad * 2 : 0) + (eg.lst.length > 1 ? (rowh2 + rows) * (eg.lst.length - 1) : 0);
1953
- if (eg.lst.length > 1) {
1954
- g_eg.append("rect").attr("stroke", "black").attr("stroke-dasharray", eg.ismsg ? "none" : "2,3").attr("fill", "none").attr("width", roww + hpad * 2).attr("height", groupheight).attr("shape-rendering", "crispEdges");
1955
- if (eg.ismsg) {
1956
- const g2 = g_eg.append("g").attr("transform", "translate(" + (roww + hpad * 2) + ",0)");
1957
- g2.append("rect").attr("width", ghandlew).attr("height", rowh).attr("fill", "#858585").attr("shape-rendering", "crispEdges");
1958
- g2.append("text").text("multi-seg").attr("x", 10).attr("y", rowh / 2).attr("font-size", rowh - 6).attr("font-family", font).attr("fill", "white").attr("dominant-baseline", "middle");
1959
- g2.append("rect").attr("width", ghandlew).attr("height", rowh).attr("fill", "white").attr("fill-opacity", 0).on("click", (event) => {
1960
- const joinlst = [];
1961
- const idlst = [];
1962
- for (const evt of eg.lst) {
1963
- const prod = evt.lst[0];
1964
- idlst.push(prod.prodid);
1965
- const p2 = {
1966
- a: {
1967
- chr: prod.chrA,
1968
- position: prod.posA,
1969
- strand: prod.ortA,
1970
- name: prod.geneA ? prod.geneA : prod.chrA,
1971
- ratio: prod.ratioA.toFixed(2),
1972
- feature: prod.featureA,
1973
- contiglen: prod.matchA,
1974
- chimericreads: prod.readsA,
1975
- repeatscore: prod.repeatA
1976
- },
1977
- b: {
1978
- chr: prod.chrB,
1979
- position: prod.posB,
1980
- strand: prod.ortB,
1981
- name: prod.geneB ? prod.geneB : prod.chrB,
1982
- ratio: prod.ratioB.toFixed(2),
1983
- feature: prod.featureB,
1984
- contiglen: prod.matchB,
1985
- chimericreads: prod.readsB,
1986
- repeatscore: prod.repeatB
1987
- },
1988
- rating: prod.rating,
1989
- score: Math.ceil(prod.score)
1990
- };
1991
- if (prod.usepair) {
1992
- p2.inframe = prod.usepair.inframe;
1993
- const x = prod.usepair.a;
1994
- p2.a.gm = this.genome.isoformmatch(x.isoform, p2.a.chr, p2.a.position);
1995
- p2.a.codon = x.codon;
1996
- p2.a.exon = x.exon;
1997
- p2.a.atupstream = x.atupstream;
1998
- p2.a.atdownstream = x.atdownstream;
1999
- p2.a.atutr5 = x.atutr5;
2000
- p2.a.atutr3 = x.atutr3;
2001
- const y2 = prod.usepair.b;
2002
- p2.b.gm = this.genome.isoformmatch(y2.isoform, p2.b.chr, p2.b.position);
2003
- p2.b.codon = y2.codon;
2004
- p2.b.exon = y2.exon;
2005
- p2.b.atupstream = y2.atupstream;
2006
- p2.b.atdownstream = y2.atdownstream;
2007
- p2.b.atutr5 = y2.atutr5;
2008
- p2.b.atutr3 = y2.atutr3;
2009
- let aalen = 0, bplen2 = 0;
2010
- if (x.contigaa && y2.contigaa) {
2011
- aalen = y2.contigaa - x.contigaa - 1;
2012
- }
2013
- if (x.contigbp && y2.contigbp) {
2014
- bplen2 = y2.contigbp - x.contigbp - 1;
2015
- }
2016
- if (aalen) {
2017
- p2.interstitial = { aalen };
2018
- }
2019
- if (bplen2) {
2020
- if (!p2.interstitial) p2.interstitial = {};
2021
- p2.interstitial.bplen = bplen2;
2022
- }
2023
- }
2024
- joinlst.push(p2);
2025
- }
2026
- const p = event.target.getBoundingClientRect();
2027
- const pane = newpane({ x: p.left + 10, y: p.top + p.height + 10 });
2028
- const div = pane.body.append("div").style("margin", "10px");
2029
- div.append("span").style("padding-right", "20px").text("Product id: " + idlst.join(", "));
2030
- div.append("button").style("margin-right", "10px").text("Break").on("click", () => {
2031
- const eg2id = eg.lst.map((j) => j.lst[0].prodid);
2032
- let idx = 0;
2033
- for (; idx < eglst.length; idx++) {
2034
- const eg2 = eglst[idx];
2035
- if (eg2.ismsg) {
2036
- const eg22id = eg2.lst.map((j) => j.lst[0].prodid);
2037
- if (eg22id.join(",") == eg2id.join(",")) {
2038
- break;
2039
- }
2040
- }
2041
- }
2042
- delete eg.ismsg;
2043
- const oldlst = eg.lst;
2044
- eg.lst = [eg.lst[0]];
2045
- for (let j = 1; j < oldlst.length; j++) {
2046
- eglst.splice(idx, 0, {
2047
- label: "",
2048
- lst: [oldlst[j]]
2049
- });
2050
- }
2051
- svg.remove();
2052
- this.showevents(sample, eglst, holder);
2053
- pane.pane.remove();
2054
- });
2055
- div.append("button").text("Edit").on("click", (event2) => {
2056
- const inputdom = document.createElement("input");
2057
- div.node().insertBefore(inputdom, event2.target);
2058
- const buttdom = document.createElement("button");
2059
- div.node().insertBefore(buttdom, event2.target);
2060
- div.node().removeChild(event2.target);
2061
- inputdom.focus();
2062
- const input = select_default(inputdom);
2063
- const butt = select_default(buttdom);
2064
- input.attr("size", 10).style("margin", "0px 10px").property("value", idlst.join(","));
2065
- butt.text("Apply").on("click", () => {
2066
- const lst0 = inputdom.value.trim().split(",");
2067
- const goodid = [];
2068
- for (const s of lst0) {
2069
- if (!s) continue;
2070
- const j = Number.parseInt(s);
2071
- if (Number.isNaN(j)) return alert("invalid id: " + s);
2072
- if (this.prodidisinvalid(j, sample)) return alert("invalid id " + j);
2073
- goodid.push(j);
2074
- }
2075
- if (goodid.length <= 1) return alert("must be at least 2 products");
2076
- const newevtlst = [];
2077
- for (const id of goodid) {
2078
- const lookprod = this.extractprod(id, sample);
2079
- if (lookprod) {
2080
- newevtlst.push({ label: lookprod.eventlabel, lst: [lookprod] });
2081
- } else {
2082
- return alert("unknown product id " + id);
2083
- }
2084
- }
2085
- if (newevtlst.length <= 1) return alert("less than 2 products cannot make a group");
2086
- eglst.unshift({ lst: newevtlst, ismsg: true });
2087
- this.showsample(sample);
2088
- pane.pane.remove();
2089
- });
2090
- });
2091
- svtable({
2092
- samplelst: [
2093
- {
2094
- pairlst: joinlst
2095
- }
2096
- ],
2097
- nosample: true,
2098
- holder: pane.body
2099
- });
2100
- const par = {
2101
- pairlst: joinlst,
2102
- genome: this.genome,
2103
- holder: pane.body,
2104
- hostURL: this.hostURL,
2105
- jwt: this.jwt
2106
- };
2107
- import("./svgraph-D23WG3UE.js").then((p2) => {
2108
- p2.default(par);
2109
- });
2110
- });
2111
- }
2112
- }
2113
- const g_rows = g_eg.append("g").attr("transform", "translate(" + hpad + "," + (eg.lst.length > 1 ? vpad : 0) + ")");
2114
- let y1 = 0;
2115
- let evtid = 0;
2116
- const bgcolor = "#ededed";
2117
- const elabhash = {};
2118
- for (const e of eg.lst) {
2119
- elabhash[e.label] = 1;
2120
- }
2121
- const showngenenotip = {};
2122
- for (const evt of eg.lst) {
2123
- const prodlst = evt.lst;
2124
- const prod = prodlst[0];
2125
- const thispair = prod.usepair;
2126
- if (eg.lst.length > 1 && evtid > 0) {
2127
- const g_row2 = g_rows.append("g").attr("transform", "translate(" + (chrAw + s1 + rowh + s7 + geneAw + genesp + s2 / 2) + "," + y1 + ")");
2128
- const text2 = g_row2.append("text").attr("fill", "#858585").attr("font-size", rowh2).attr("text-anchor", "middle").attr("font-family", font).attr("y", rowh2 / 2).attr("dominant-baseline", "middle");
2129
- if (eg.ismsg) {
2130
- text2.text(prod.mswhat ? prod.mswhat : "No connection detail");
2131
- } else {
2132
- text2.text("Reciprocal");
2133
- }
2134
- y1 += rowh2 + rows;
2135
- }
2136
- const textcolor = prod.chrA == prod.chrB ? "black" : colorctx;
2137
- const g_row = g_rows.append("g").attr("transform", "translate(0," + y1 + ")");
2138
- g_row.append("text").text(prod.chrA).attr("x", chrAw).attr("y", rowh / 2).attr("font-size", fontsize - 4).attr("text-anchor", "end").attr("dominant-baseline", "middle").attr("fill", textcolor);
2139
- const extevt = { a: null, b: null };
2140
- if (prod.geneA) {
2141
- if (prod.geneA in showngenenotip) {
2142
- showngenenotip[prod.geneA] = 1;
2143
- } else {
2144
- const lst = [];
2145
- for (const elab in sample.gene2events[prod.geneA]) {
2146
- if (!(elab in elabhash)) {
2147
- lst.push(elab);
2148
- }
2149
- }
2150
- if (lst.length > 0) {
2151
- extevt.a = { lst };
2152
- extevt.a.circle = g_row.append("circle").attr("fill", "white").attr("stroke", "black").attr("cx", chrAw + s1 + rowh / 2).attr("cy", rowh / 2).attr("r", rowh / 2);
2153
- if (lst.length > 1) {
2154
- extevt.a.text = g_row.append("text").text(lst.length).attr("x", chrAw + s1 + rowh / 2).attr("y", rowh / 2).attr("text-anchor", "middle").attr("font-size", rowh2).attr("dominant-baseline", "middle").attr("fill", "black");
2155
- }
2156
- g_row.append("line").attr("x1", chrAw + s1 + rowh).attr("x2", chrAw + s1 + rowh + s7).attr("y1", rowh / 2).attr("y2", rowh / 2).attr("stroke", "black").attr("shape-rendering", "crispEdges");
2157
- }
2158
- }
2159
- }
2160
- g_row.append("rect").attr("fill", colorbgleft).attr("x", chrAw + s1 + rowh + s7 + (geneAw + genesp) * (1 - prod.ratioA)).attr("width", (geneAw + genesp) * prod.ratioA).attr("height", rowh).attr("shape-rendering", "crispEdges");
2161
- let antisense = false;
2162
- if (thispair) {
2163
- const thisn = thispair.a.isoform;
2164
- if (thisn) {
2165
- const _gm = this.genome.isoformmatch(thisn, prod.chrA, prod.posA);
2166
- if (_gm && _gm.strand != prod.ortA) {
2167
- antisense = true;
2168
- }
2169
- }
2170
- }
2171
- const boxa = g_row.append("rect").attr("fill", "none").attr("stroke", antisense ? "red" : "black").attr("shape-rendering", "crispEdges").attr("x", chrAw + s1 + rowh + s7).attr("width", geneAw + genesp).attr("height", rowh);
2172
- let labA;
2173
- if (prod.geneA) {
2174
- const t = prod.geneA.split(",");
2175
- if (t.length > 2) {
2176
- labA = t[0] + "," + t[1] + "...";
2177
- } else {
2178
- labA = prod.geneA;
2179
- }
2180
- } else {
2181
- labA = "";
2182
- }
2183
- g_row.append("text").text(labA).attr("x", chrAw + s1 + rowh + s7 + geneAw).attr("y", rowh / 2).attr("font-size", fontsize).attr("font-family", "Courier").attr(
2184
- "font-weight",
2185
- prod.hlgene ? prod.hlgene == 1 || prod.hlgene == 3 || prod.hlgene == 4 ? "bold" : "normal" : "normal"
2186
- ).attr("fill", prod.hlgene ? prod.hlgene == 4 ? knownprod_c : "#545454" : "#545454").attr("text-anchor", "end").attr("dominant-baseline", "central");
2187
- g_row.append("line").attr("x1", chrAw + s1 + rowh + s7 + geneAw + genesp).attr("x2", chrAw + s1 + rowh + s7 + geneAw + genesp + s2).attr("y1", rowh / 2).attr("y2", rowh / 2).attr("shape-rendering", "crispEdges").attr("stroke", "black");
2188
- g_row.append("rect").attr("fill", colorbgright).attr("x", chrAw + s1 + rowh + s7 + geneAw + genesp + s2).attr("width", (genesp + geneBw) * prod.ratioB).attr("height", rowh).attr("shape-rendering", "crispEdges");
2189
- antisense = false;
2190
- if (thispair) {
2191
- const thisn = thispair.b.isoform;
2192
- if (thisn) {
2193
- const _gm = this.genome.isoformmatch(thisn, prod.chrB, prod.posB);
2194
- if (_gm && _gm.strand != prod.ortB) {
2195
- antisense = true;
2196
- }
2197
- }
2198
- }
2199
- const boxb = g_row.append("rect").attr("fill", "none").attr("stroke", antisense ? "red" : "black").attr("shape-rendering", "crispEdges").attr("x", chrAw + s1 + rowh + s7 + geneAw + genesp + s2).attr("width", geneBw + genesp).attr("height", rowh);
2200
- let labB;
2201
- if (prod.geneB) {
2202
- let t = prod.geneB.split(",");
2203
- if (t.length > 2) {
2204
- labB = t[0] + "," + t[1] + "...";
2205
- } else {
2206
- labB = prod.geneB;
2207
- }
2208
- } else {
2209
- labB = "";
2210
- }
2211
- g_row.append("text").text(labB).attr("x", chrAw + s1 + rowh + s7 + geneAw + genesp + s2 + genesp).attr("y", rowh / 2).attr("font-size", fontsize).attr("font-family", "Courier").attr(
2212
- "font-weight",
2213
- prod.hlgene ? prod.hlgene == 2 || prod.hlgene == 3 || prod.hlgene == 4 ? "bold" : "normal" : "normal"
2214
- ).attr("fill", prod.hlgene ? prod.hlgene == 4 ? knownprod_c : "#545454" : "#545454").attr("dominant-baseline", "central");
2215
- if (prod.geneB) {
2216
- if (prod.geneB in showngenenotip) {
2217
- } else {
2218
- showngenenotip[prod.geneB] = 1;
2219
- const lst = [];
2220
- for (const elab in sample.gene2events[prod.geneB]) {
2221
- if (!(elab in elabhash)) {
2222
- lst.push(elab);
2223
- }
2224
- }
2225
- if (lst.length > 0) {
2226
- extevt.b = { lst };
2227
- extevt.b.circle = g_row.append("circle").attr("fill", "white").attr("stroke", "black").attr("cx", chrAw + s1 + rowh + s7 + geneAw + genesp + s2 + genesp + geneBw + s7 + rowh / 2).attr("cy", rowh / 2).attr("r", rowh / 2);
2228
- if (lst.length > 1) {
2229
- extevt.b.text = g_row.append("text").text(lst.length).attr("x", chrAw + s1 + rowh + s7 + geneAw + genesp + s2 + genesp + geneBw + s7 + rowh / 2).attr("y", rowh / 2).attr("text-anchor", "middle").attr("font-size", rowh2).attr("dominant-baseline", "middle").attr("fill", "black");
2230
- }
2231
- g_row.append("line").attr("x1", chrAw + s1 + rowh + s7 + geneAw + genesp + s2 + genesp + geneBw).attr("x2", chrAw + s1 + rowh + s7 + geneAw + genesp + s2 + genesp + geneBw + s7).attr("y1", rowh / 2).attr("y2", rowh / 2).attr("stroke", "black").attr("shape-rendering", "crispEdges");
2232
- }
2233
- }
2234
- }
2235
- g_row.append("text").text(prod.chrB).attr("x", chrAw + s1 + rowh + s7 + geneAw + genesp + s2 + genesp + geneBw + s7 + rowh + s1).attr("y", rowh / 2).attr("font-size", fontsize - 4).attr("dominant-baseline", "middle").attr("fill", textcolor);
2236
- let x = chrAw + s1 + rowh + s7 + geneAw + genesp + s2 + genesp + geneBw + s7 + rowh + s1 + chrBw + s3;
2237
- const x0 = x;
2238
- const logobg = g_row.append("rect").attr("fill", "white").attr("stroke", "#858585").attr("x", x).attr("y", -1.5).attr("width", evt.svg.logow).attr("height", rowh + 2).attr("rx", 5).attr("ry", 5);
2239
- x += s5;
2240
- prod.hook.mainRating = g_row.append("text").text(prod.rating).attr("font-size", fontsize).attr("font-family", font).attr("fill", "#858585").attr("x", x).attr("y", rowh / 2).attr("dominant-baseline", "middle");
2241
- x += evt.svg.ratingw + s5;
2242
- prod.hook.mainFrame = {};
2243
- prod.hook.mainFrame.bg = g_row.append("rect").attr("x", x + 1).attr("y", 3).attr("width", evt.svg.framew).attr("height", rowh - 7).attr("shape-rendering", "crispEdges");
2244
- if (prod.usepair) {
2245
- prod.hook.mainFrame.bg.attr("fill", prod.usepair.inframe ? colorinframe : coloroutframe);
2246
- } else {
2247
- prod.hook.mainFrame.bg.attr("fill", "none").attr("stroke", "black");
2248
- }
2249
- prod.hook.mainFrame.text = g_row.append("text").text(evt.svg.frameword).attr("font-size", fontsizeframe).attr("font-family", font).attr("fill", prod.usepair ? "white" : "black").attr("x", x + 1 + evt.svg.framew / 2).attr("text-anchor", "middle").attr("y", rowh / 2).attr("dominant-baseline", "middle");
2250
- x += evt.svg.framew + s5;
2251
- prod.hook.mainType = g_row.append("text").text(prod.type2).attr("font-size", fontsize).attr("font-family", font).attr("fill", "#858585").attr("x", x).attr("y", rowh / 2).attr("dominant-baseline", "middle");
2252
- x += evt.svg.typew + s5;
2253
- g_row.append("text").text(prod.featureA).attr("font-size", fontsizefeature).attr("font-family", font).attr("fill", "black").attr("x", x).attr("y", rowh / 4).attr("dominant-baseline", "middle");
2254
- g_row.append("text").text(prod.featureB).attr("font-size", fontsizefeature).attr("font-family", font).attr("fill", "black").attr("x", x).attr("y", rowh * 3 / 4).attr("dominant-baseline", "middle");
2255
- x += evt.svg.featurew + s5;
2256
- g_row.append("text").text(Math.floor(prod.score)).attr("font-size", fontsize).attr("font-family", font).attr("fill", "#858585").attr("x", x).attr("y", rowh / 2).attr("dominant-baseline", "middle");
2257
- x += evt.svg.scorew + s5 + s4;
2258
- g_row.append("rect").attr("fill", "white").attr("fill-opacity", 0).attr("stroke", "none").attr("x", x0).attr("y", -1.5).attr("width", evt.svg.logow).attr("height", rowh + 2).on("mouseover", () => {
2259
- logobg.attr("stroke-width", "2");
2260
- const d = tip.clear().showunder(logobg.node()).d.append("div");
2261
- this.prodstat(prod, d);
2262
- }).on("mouseout", () => {
2263
- logobg.attr("stroke-width", "1");
2264
- tip.hide();
2265
- });
2266
- if (prodlst.length > 1) {
2267
- const logobg2 = g_row.append("rect").attr("fill", "none").attr("stroke", "#858585").attr("x", x).attr("y", 3.5).attr("width", etw).attr("height", rowh - 4).attr("rx", 5).attr("ry", 5);
2268
- g_row.append("text").text(prodlst.length - 1).attr("fill", "black").attr("font-size", fontsizefeature).attr("font-family", font).attr("x", x + etw / 2).attr("y", 3.5 + (rowh - 3.5) / 2).attr("text-anchor", "middle").attr("dominant-baseline", "middle");
2269
- g_row.append("rect").attr("fill", "white").attr("fill-opacity", 0).attr("x", x).attr("y", 3.5).attr("width", etw).attr("height", rowh - 4).on("mouseover", (event) => {
2270
- logobg2.attr("stroke-width", "2");
2271
- const table = tip.clear().showunder(event.target).d.append("table").style("border-spacing", "10px").style("border-collapse", "separate");
2272
- const tr1 = table.append("tr");
2273
- const tr2 = table.append("tr");
2274
- for (var k = 1; k < prodlst.length; k++) {
2275
- this.eventlogo([prodlst[k]], tr1.append("td"));
2276
- this.prodstat(prodlst[k], tr2.append("td"));
2277
- }
2278
- }).on("mouseout", () => {
2279
- logobg2.attr("stroke-width", "1");
2280
- tip.hide();
2281
- });
2282
- }
2283
- x = chrAw + s1 + rowh + s7 + geneAw + genesp + s2 + genesp + geneBw + s7 + rowh + s1 + chrBw + s3 + eventlogow + s6;
2284
- const text = g_row.append("text").text(evt.svg.recurtext).attr("font-size", fontsize - 4).attr("font-family", font).attr("fill", evt.svg.recurtextcolor).attr("x", x).attr("y", rowh / 2).attr("dominant-baseline", "middle");
2285
- if (evt.svg.hasrecurrence) {
2286
- text.attr("class", "sja_svgtext2").on("mouseover", (event) => {
2287
- const p = event.target.getBoundingClientRect();
2288
- tip.clear().show(p.left + p.width + 10, p.top - 15);
2289
- const slst = this.elab2sample[evt.label];
2290
- const dd = tip.d;
2291
- dd.append("div").style("margin", "10px").style("color", "#aaa").text("This fusion is recurrent in other samples:");
2292
- const table = dd.append("table").style("border-spacing", "10px").style("border-collapse", "separate");
2293
- for (const s of slst) {
2294
- if (s.name == sample.name) {
2295
- continue;
2296
- }
2297
- const tr = table.append("tr");
2298
- tr.append("td").style("font-weight", "bold").style("color", "#858585").text(s.name);
2299
- this.eventlogo(s.events[evt.label], tr.append("td"));
2300
- }
2301
- }).on("mouseout", () => tip.hide());
2302
- }
2303
- g_row.append("rect").attr("x", chrAw + s1 + rowh + s7).attr("width", geneAw + genesp + s2 + genesp + geneBw).attr("height", rowh).attr("fill", "white").attr("fill-opacity", 0).on("mouseover", (event) => {
2304
- boxa.attr("stroke-width", 2);
2305
- boxb.attr("stroke-width", 2);
2306
- const p = event.target.getBoundingClientRect();
2307
- tip.clear().show(p.left + p.width + s7 / 2, p.top - 30);
2308
- this.showsvpairs({
2309
- prodlst: evt.lst,
2310
- holder: tip.d,
2311
- nodetail: true,
2312
- sample,
2313
- eglst,
2314
- showothersample: true
2315
- });
2316
- }).on("mouseout", () => {
2317
- tip.hide();
2318
- boxa.attr("stroke-width", 1);
2319
- boxb.attr("stroke-width", 1);
2320
- }).on("click", (event) => {
2321
- if (evt.inclick) {
2322
- return;
2323
- }
2324
- evt.inclick = true;
2325
- const p = event.target.getBoundingClientRect();
2326
- const pane3 = newpane({
2327
- x: p.left + p.width + s7 + rowh + s1 + chrBw + s3 + eventlogow + s6 + recurw + 5,
2328
- y: p.top - 100,
2329
- close: function() {
2330
- evt.inclick = false;
2331
- pane3.pane.remove();
2332
- }
2333
- });
2334
- const prod2 = evt.lst[0];
2335
- pane3.header.html(
2336
- '<span style="padding:2px 4px;background-color:' + colorbgleft + ';">' + (prod2.geneA ? prod2.geneA : prod2.chrA) + '</span><span style="padding:2px 4px;background-color:' + colorbgright + ';">' + (prod2.geneB ? prod2.geneB : prod2.chrB) + "</span>"
2337
- );
2338
- this.showsvpairs({
2339
- prodlst: evt.lst,
2340
- holder: pane3.body
2341
- });
2342
- });
2343
- if (extevt.a) {
2344
- g_row.append("circle").attr("cx", chrAw + s1 + rowh / 2).attr("cy", rowh / 2).attr("r", rowh / 2).attr("fill", "white").attr("fill-opacity", 0).on("mouseover", (event) => this.extevt_mover(extevt.a, event.target, sample)).on("mouseout", () => {
2345
- this.extevt_mo(extevt.a);
2346
- tip.hide();
2347
- }).on("click", (event) => {
2348
- this.extevt_c(extevt.a, event.target, sample);
2349
- });
2350
- }
2351
- if (extevt.b) {
2352
- g_row.append("circle").attr("cx", chrAw + s1 + rowh + s7 + geneAw + genesp + s2 + genesp + geneBw + s7 + rowh / 2).attr("cy", rowh / 2).attr("r", rowh / 2).attr("fill", "white").attr("fill-opacity", 0).on("mouseover", (event) => this.extevt_mover(extevt.b, event.target, sample)).on("mouseout", () => {
2353
- this.extevt_mo(extevt.b);
2354
- tip.hide();
2355
- }).on("click", (event) => this.extevt_c(extevt.b, event.target, sample));
2356
- }
2357
- y1 += rowh + rows;
2358
- evtid++;
2359
- }
2360
- y += groupheight + (eg.lst.length > 1 ? gvpad : 0);
2361
- }
2362
- holder.style("display", "none");
2363
- }
2364
- extevt_mover(ext, dom, sample) {
2365
- ext.circle.attr("fill", "#858585");
2366
- if (ext.text) {
2367
- ext.text.attr("fill", "white");
2368
- }
2369
- tip.clear().showunder(dom);
2370
- tip.d.append("div").style("margin", "10px").style("color", "#aaa").text("Associated fusions from this sample:");
2371
- this.extevt_table(ext.lst, tip.d, sample);
2372
- }
2373
- extevt_mo(ext) {
2374
- ext.circle.attr("fill", "white");
2375
- if (ext.text) {
2376
- ext.text.attr("fill", "black");
2377
- }
2378
- }
2379
- extevt_c(ext, dom, sample) {
2380
- const p = dom.getBoundingClientRect();
2381
- const pane = newpane({ x: p.left, y: p.top + p.height + 10 });
2382
- this.extevt_table(ext.lst, pane.body, sample);
2383
- }
2384
- extevt_table(lst, holder, sample) {
2385
- const table = holder.append("table").style("border-spacing", "10px").style("border-collapse", "separate");
2386
- for (const elab of lst) {
2387
- const tr = table.append("tr");
2388
- const prodlst = sample.events[elab];
2389
- if (!prodlst) {
2390
- tr.append('<td colspan=2 style="color:red">No products found for ' + elab + "</td>");
2391
- continue;
2392
- }
2393
- const prod = prodlst[0];
2394
- tr.append("td").style("text-align", "right").text(prod.geneA ? prod.geneA : prod.chrA);
2395
- tr.append("td").text(prod.geneB ? prod.geneB : prod.chrB);
2396
- this.eventlogo(prodlst, tr.append("td"));
2397
- }
2398
- }
2399
- eventlogo(prodlst, holder) {
2400
- const d = holder.append("div");
2401
- if (!prodlst || prodlst.length == 0) {
2402
- d.style("color", "red").text("No products");
2403
- } else {
2404
- const p = prodlst[0];
2405
- d.append("div").style("display", "inline-block").style("padding", "2px 4px").style("border", "solid 1px #858585").style("border-radius", "5px").html(
2406
- p.rating + '&nbsp;<span style="font-size:70%;vertical-align:2px;' + (p.usepair ? p.usepair.inframe ? "padding:2px 4px;background-color:" + colorinframe + ';color:white;">IN' : "padding:2px 4px;background-color:" + coloroutframe + ';color:white;">O' : 'padding:1px 3px;border:solid 1px black;background-color:white;color:black;">?') + '</span>&nbsp;<span style="color:#858585">' + p.type2 + '</span>&nbsp;<div style="display:inline-block;font-size:70%;line-height:.9">' + p.featureA + "<br>" + p.featureB + "</div>&nbsp;" + Math.floor(p.score)
2407
- );
2408
- if (prodlst.length > 1) {
2409
- d.append("div").style("display", "inline-block").style("margin-left", "10px").style("padding", "2px 4px").style("font-size", ".7em").style("border", "solid 1px #858585").style("border-radius", 5).text(prodlst.length - 1);
2410
- }
2411
- }
2412
- return d;
2413
- }
2414
- prodstat(prod, holder) {
2415
- holder.append("p").text("Product id: " + prod.prodid);
2416
- const alertcolor = "#FFb3b3", bg = "#f1f1f1";
2417
- const table = holder.append("table").style("border-spacing", "8px").style("border-collapse", "separate");
2418
- let tr = table.append("tr");
2419
- tr.append("td");
2420
- tr.append("td").style("background-color", bg).text(prod.geneA ? prod.geneA : prod.chrA);
2421
- tr.append("td").style("background-color", bg).text(prod.geneB ? prod.geneB : prod.chrB);
2422
- tr = table.append("tr");
2423
- tr.append("td").style("font-size", "80%").style("background-color", bg).text("chimeric reads");
2424
- tr.append("td").style("padding", "5px").style("background-color", prod.readsA <= this.cf_reads ? alertcolor : "").text(prod.readsA);
2425
- tr.append("td").style("padding", "5px").style("background-color", prod.readsB <= this.cf_reads ? alertcolor : "").text(prod.readsB);
2426
- tr = table.append("tr");
2427
- tr.append("td").style("font-size", "80%").style("background-color", bg).text("ratio");
2428
- tr.append("td").style("padding", "5px").style("background-color", prod.ratioA <= this.cf_ratio ? alertcolor : "").text(Math.ceil(prod.ratioA * 100) + "%");
2429
- tr.append("td").style("padding", "5px").style("background-color", prod.ratioB <= this.cf_ratio ? alertcolor : "").text(Math.ceil(prod.ratioB * 100) + "%");
2430
- tr = table.append("tr");
2431
- tr.append("td").style("font-size", "80%").style("background-color", bg).text("contig length");
2432
- tr.append("td").style("padding", "5px").style("background-color", prod.matchA <= this.cf_match ? alertcolor : "").text(prod.matchA + " bp");
2433
- tr.append("td").style("padding", "5px").style("background-color", prod.matchB <= this.cf_match ? alertcolor : "").text(prod.matchB + " bp");
2434
- tr = table.append("tr");
2435
- tr.append("td").style("font-size", "80%").style("background-color", bg).text("repeat score");
2436
- tr.append("td").style("padding", "5px").style("background-color", prod.repeatA >= this.cf_repeat ? alertcolor : "").text(prod.repeatA);
2437
- tr.append("td").style("padding", "5px").style("background-color", prod.repeatB >= this.cf_repeat ? alertcolor : "").text(prod.repeatB);
2438
- }
2439
- showsvpairs(arg) {
2440
- const table = arg.holder.append("table").style("border-spacing", "10px").style("border-collapse", "separate");
2441
- const tr = table.append("tr");
2442
- const _tr = table.append("tr");
2443
- const expressiontd = _tr.append("td").attr("colspan", arg.prodlst.length);
2444
- const tr2 = table.append("tr");
2445
- const geneset = /* @__PURE__ */ new Set();
2446
- for (const prod of arg.prodlst) {
2447
- if (prod.geneA) {
2448
- geneset.add(prod.geneA);
2449
- }
2450
- if (prod.geneB) {
2451
- geneset.add(prod.geneB);
2452
- }
2453
- const td = tr.append("td").style("vertical-align", "top");
2454
- if (arg.nodetail) {
2455
- const div = td.append("div");
2456
- div.append("span").style("padding-right", "20px").text("Product id: " + prod.prodid);
2457
- const ratingsl = div.append("select").style("margin-right", "5px").on("change", (event) => {
2458
- const sl = event.target;
2459
- const newv = sl.options[sl.selectedIndex].innerHTML;
2460
- prod.rating = newv;
2461
- if (prod.hook.mainRating) {
2462
- prod.hook.mainRating.text(newv);
2463
- }
2464
- if (prod.hook.lessRating) {
2465
- prod.hook.lessRating.text(newv);
2466
- }
2467
- });
2468
- const framesl = div.append("select").style("margin-right", "5px").on("change", (event) => {
2469
- const sl = event.target;
2470
- const inframe = sl.options[sl.selectedIndex].innerHTML == "in-frame";
2471
- prod.usepair.inframe = inframe;
2472
- if (prod.hook.mainFrame) {
2473
- prod.hook.mainFrame.text.text(inframe ? "IN" : "O");
2474
- prod.hook.mainFrame.bg.attr("fill", inframe ? colorinframe : coloroutframe);
2475
- }
2476
- if (prod.hook.lessFrame) {
2477
- prod.hook.lessFrame.html(
2478
- inframe ? '<span style="background-color:' + colorinframe + ';color:white;padding:2px 3px;font-size:80%;white-space:nowrap">In frame</span>' : '<span style="background-color:' + coloroutframe + ';color:white;padding:2px 3px;font-size:80%;white-space:nowrap">Out of frame</span>'
2479
- );
2480
- }
2481
- });
2482
- const typesl = div.append("select").style("margin-right", "5px").on("change", (event) => {
2483
- const sl = event.target;
2484
- const i = sl.selectedIndex;
2485
- const newv = sl.options[i].innerHTML;
2486
- prod.type2 = newv;
2487
- if (prod.hook.mainType) {
2488
- prod.hook.mainType.text(newv);
2489
- }
2490
- prod.iscloss = i == 0;
2491
- prod.isnloss = i == 1;
2492
- prod.isfusion = i == 2;
2493
- prod.isitd = i == 3;
2494
- prod.isuptss = i == 4;
2495
- prod.isother = i == 5;
2496
- });
2497
- const effectsl = div.append("select").style("margin-right", "5px").on("change", (event) => {
2498
- const sl = event.target;
2499
- const newv = sl.options[sl.selectedIndex].innerHTML;
2500
- prod.functioneffect = newv;
2501
- });
2502
- div.append("button").text("Create group").on("click", (event) => {
2503
- let dnew = document.createElement("div");
2504
- div.node().insertBefore(dnew, event.target);
2505
- select_default(event.target).remove();
2506
- dnew = select_default(dnew);
2507
- dnew.style("display", "inline-block");
2508
- if (!arg.eglst) {
2509
- dnew.text("Cannot do it here: please go to sample " + arg.sample.name);
2510
- return;
2511
- }
2512
- dnew.append("input").attr("size", 10).property("value", prod.prodid + ",");
2513
- dnew.append("button").style("margin", "0px 10px").text("Apply").on("click", (event2) => {
2514
- const lst0 = event2.target.previousSibling.value.trim().split(",");
2515
- const goodid = [];
2516
- for (const i of lst0) {
2517
- const j = Number.parseInt(i);
2518
- if (Number.isNaN(j)) return alert("invalid id " + i);
2519
- if (this.prodidisinvalid(j, arg.sample)) return alert("invalid id " + j);
2520
- goodid.push(j);
2521
- }
2522
- if (goodid.length <= 1) return alert("need at least 2 id");
2523
- const newevtlst = [];
2524
- for (const i of goodid) {
2525
- const thisprod = this.extractprod(i, arg.sample);
2526
- if (thisprod) {
2527
- newevtlst.push({ label: thisprod.eventlabel, lst: [thisprod] });
2528
- } else {
2529
- return alert("invalid id " + i);
2530
- }
2531
- }
2532
- if (newevtlst.length <= 1) return alert("less than 2 products cannot make a group");
2533
- arg.eglst.unshift({ lst: newevtlst, ismsg: true });
2534
- this.showsample(arg.sample);
2535
- tip.hide();
2536
- });
2537
- });
2538
- ratingsl.append("option").text("HQ");
2539
- ratingsl.append("option").text("LQ");
2540
- ratingsl.append("option").text("RT");
2541
- ratingsl.append("option").text("bad");
2542
- ratingsl.append("option").text("Major");
2543
- switch (prod.rating) {
2544
- case "HQ":
2545
- ratingsl.property("selectedindex", 0);
2546
- break;
2547
- case "LQ":
2548
- ratingsl.property("selectedIndex", 1);
2549
- break;
2550
- case "RT":
2551
- ratingsl.property("selectedIndex", 2);
2552
- break;
2553
- case "bad":
2554
- ratingsl.property("selectedIndex", 3);
2555
- break;
2556
- case "Major":
2557
- ratingsl.property("selectedIndex", 4);
2558
- break;
2559
- default:
2560
- alert("unknown rating: " + prod.rating);
2561
- }
2562
- framesl.append("option").text("in-frame");
2563
- framesl.append("option").text("out-of-frame");
2564
- if (!prod.usepair) {
2565
- framesl.attr("disabled", 1);
2566
- } else {
2567
- framesl.property("selectedIndex", prod.usepair.inframe ? 0 : 1);
2568
- }
2569
- typesl.append("option").text("CLoss");
2570
- typesl.append("option").text("NLoss");
2571
- typesl.append("option").text("Fusion");
2572
- typesl.append("option").text("ITD");
2573
- typesl.append("option").text("upTSS");
2574
- typesl.append("option").text("other");
2575
- if (prod.iscloss) {
2576
- typesl.property("selectedIndex", 0);
2577
- } else if (prod.isnloss) {
2578
- typesl.property("selectedIndex", 1);
2579
- } else if (prod.isfusion) {
2580
- typesl.property("selectedIndex", 2);
2581
- } else if (prod.isitd) {
2582
- typesl.property("selectedIndex", 3);
2583
- } else if (prod.isuptss) {
2584
- typesl.property("selectedIndex", 4);
2585
- } else if (prod.isother) {
2586
- typesl.property("selectedIndex", 5);
2587
- } else {
2588
- alert("unknown type2: " + prod.type2);
2589
- }
2590
- effectsl.append("option").text("unknown effect");
2591
- effectsl.append("option").text("fusion gene");
2592
- effectsl.append("option").text("truncation, activated oncogene");
2593
- effectsl.append("option").text("truncation, loss-of-function");
2594
- effectsl.append("option").text("truncation, no consequence");
2595
- effectsl.append("option").text("ITD");
2596
- switch (prod.functioneffect) {
2597
- case void 0:
2598
- effectsl.property("selectedIndex", 0);
2599
- break;
2600
- case "fusion gene":
2601
- effectsl.property("selectedIndex", 1);
2602
- break;
2603
- case "truncation, activated oncogene":
2604
- effectsl.property("selectedIndex", 2);
2605
- break;
2606
- case "truncation, loss-of-function":
2607
- effectsl.property("selectedIndex", 3);
2608
- break;
2609
- case "truncation, no consequence":
2610
- effectsl.property("selectedIndex", 4);
2611
- break;
2612
- case "ITD":
2613
- effectsl.property("selectedIndex", 5);
2614
- break;
2615
- }
2616
- }
2617
- const p = {
2618
- a: {
2619
- chr: prod.chrA,
2620
- position: prod.posA,
2621
- strand: prod.ortA,
2622
- name: prod.geneA ? prod.geneA : prod.chrA,
2623
- ratio: prod.ratioA.toFixed(2),
2624
- feature: prod.featureA,
2625
- contiglen: prod.matchA,
2626
- chimericreads: prod.readsA,
2627
- repeatscore: prod.repeatA
2628
- },
2629
- b: {
2630
- chr: prod.chrB,
2631
- position: prod.posB,
2632
- strand: prod.ortB,
2633
- name: prod.geneB ? prod.geneB : prod.chrB,
2634
- ratio: prod.ratioB.toFixed(2),
2635
- feature: prod.featureB,
2636
- contiglen: prod.matchB,
2637
- chimericreads: prod.readsB,
2638
- repeatscore: prod.repeatB
2639
- },
2640
- rating: prod.rating,
2641
- score: Math.ceil(prod.score),
2642
- originalprod: prod
2643
- };
2644
- if (prod.usepair) {
2645
- p.inframe = prod.usepair.inframe;
2646
- const x = prod.usepair.a;
2647
- p.a.gm = this.genome.isoformmatch(x.isoform, prod.chrA, prod.posA);
2648
- p.a.codon = x.codon;
2649
- p.a.exon = x.exon;
2650
- p.a.atupstream = x.atupstream;
2651
- p.a.atdownstream = x.atdownstream;
2652
- p.a.atutr5 = x.atutr5;
2653
- p.a.atutr3 = x.atutr3;
2654
- const y = prod.usepair.b;
2655
- p.b.gm = this.genome.isoformmatch(y.isoform, prod.chrB, prod.posB);
2656
- p.b.codon = y.codon;
2657
- p.b.exon = y.exon;
2658
- p.b.atupstream = y.atupstream;
2659
- p.b.atdownstream = y.atdownstream;
2660
- p.b.atutr5 = y.atutr5;
2661
- p.b.atutr3 = y.atutr3;
2662
- let aalen = 0, bplen2 = 0;
2663
- if (x.contigaa && y.contigaa) {
2664
- aalen = y.contigaa - x.contigaa - 1;
2665
- }
2666
- if (x.contigbp && y.contigbp) {
2667
- bplen2 = y.contigbp - x.contigbp - 1;
2668
- }
2669
- if (aalen) {
2670
- p.interstitial = { aalen };
2671
- }
2672
- if (bplen2) {
2673
- if (!p.interstitial) p.interstitial = {};
2674
- p.interstitial.bplen = bplen2;
2675
- }
2676
- }
2677
- svtable({
2678
- samplelst: [
2679
- {
2680
- pairlst: [p]
2681
- }
2682
- ],
2683
- nosample: true,
2684
- holder: td
2685
- });
2686
- const par = {
2687
- pairlst: [p],
2688
- genome: this.genome,
2689
- holder: td,
2690
- quiet: true,
2691
- hostURL: this.hostURL,
2692
- jwt: this.jwt
2693
- };
2694
- import("./svgraph-D23WG3UE.js").then((p2) => {
2695
- p2.default(par);
2696
- });
2697
- if (!arg.nodetail) {
2698
- const td2 = tr2.append("td").style("font-size", ".8em").style("vertical-align", "top");
2699
- const lst = [];
2700
- for (const at of this.atlst) {
2701
- if (!at.custom) continue;
2702
- const v = prod[at.key];
2703
- lst.push({
2704
- k: at.label,
2705
- v: v == void 0 ? "" : v
2706
- });
2707
- }
2708
- make_table_2col(td2, lst, 25);
2709
- prod.pairs.sort((a, b) => {
2710
- if (a.inuse) return -1;
2711
- if (b.inuse) return 1;
2712
- return 0;
2713
- });
2714
- const table0 = td2.append("table");
2715
- for (const pair of prod.pairs) {
2716
- const tr3 = table0.append("tr");
2717
- tr3.append("td").html(
2718
- (pair.inframe ? "in-frame" : "out-of-frame") + '<div style="font-size:70%">frame code: ' + pair.frame + "</div>"
2719
- );
2720
- const td3 = tr3.append("td");
2721
- const table2 = td3.append("table").style("margin-bottom", "20px").style("border", pair.inuse ? "solid 1px black" : "").style("border-spacing", "10px").style("border-collapse", "separate");
2722
- let _tr2 = table2.append("tr").style("color", "#858585").style("font-size", ".7em");
2723
- _tr2.append("td").text("gene");
2724
- _tr2.append("td").text("isoform");
2725
- _tr2.append("td").text("gene position");
2726
- _tr2.append("td").text("exon");
2727
- _tr2.append("td").text("anchor");
2728
- _tr2.append("td").text("contig AA");
2729
- _tr2.append("td").text("contig bp");
2730
- const tr1 = table2.append("tr");
2731
- const tr22 = table2.append("tr");
2732
- tr1.append("td").text(prod.geneA ? prod.geneA : prod.chrA);
2733
- tr22.append("td").text(prod.geneB ? prod.geneB : prod.chrB);
2734
- tr1.append("td").text(pair.a.isoform ? pair.a.isoform : "");
2735
- tr22.append("td").text(pair.b.isoform ? pair.b.isoform : "");
2736
- tr1.append("td").text(
2737
- pair.a.isoform ? pair.a.codon != void 0 ? "codon: " + pair.a.codon : pair.a.atutr5 ? "5' UTR" : pair.a.atutr3 ? "3' UTR" : pair.a.atupstream ? "upstream" : "downstream" : ""
2738
- );
2739
- tr22.append("td").text(
2740
- pair.b.isoform ? pair.b.codon != void 0 ? "codon: " + pair.b.codon : pair.b.atutr5 ? "5' UTR" : pair.b.atutr3 ? "3' UTR" : pair.b.atupstream ? "upstream" : "downstream" : ""
2741
- );
2742
- tr1.append("td").text(pair.a.exon ? pair.a.exon : "");
2743
- tr22.append("td").text(pair.b.exon ? pair.b.exon : "");
2744
- tr1.append("td").text(pair.a.anchor ? pair.a.anchor : "");
2745
- tr22.append("td").text(pair.b.anchor ? pair.b.anchor : "");
2746
- tr1.append("td").html(pair.a.contigaa ? '<span style="color:#858585;font-size:70%">ends at</span> ' + pair.a.contigaa : "?");
2747
- tr22.append("td").html(
2748
- pair.b.contigaa ? '<span style="color:#858585;font-size:70%">starts at</span> ' + pair.b.contigaa : "?"
2749
- );
2750
- tr1.append("td").html(pair.a.contigbp ? '<span style="color:#858585;font-size:70%">ends at</span> ' + pair.a.contigbp : "?");
2751
- tr22.append("td").html(
2752
- pair.b.contigbp ? '<span style="color:#858585;font-size:70%">starts at</span> ' + pair.b.contigbp : "?"
2753
- );
2754
- }
2755
- }
2756
- }
2757
- if (!arg.sample) {
2758
- return;
2759
- }
2760
- const thislab = arg.prodlst[0].eventlabel;
2761
- const samplelst = this.elab2sample[thislab];
2762
- const othersample = [];
2763
- if (samplelst) {
2764
- for (const s of samplelst) {
2765
- if (s.name != arg.sample.name) othersample.push(s);
2766
- }
2767
- }
2768
- if (arg.showothersample && othersample.length > 0) {
2769
- arg.holder.append("button").style("display", "block").style("margin", "20px").text("Show in " + othersample.length + " other sample" + (othersample.length > 1 ? "s" : "")).on("click", (event) => {
2770
- select_default(event.target).remove();
2771
- for (const sample of othersample) {
2772
- const prodlst = sample.events[thislab];
2773
- if (!prodlst) {
2774
- arg.holder.append("div").style("margin", "20px").style("color", "red").text("Error: no products for this event in " + sample.name);
2775
- continue;
2776
- }
2777
- const table2 = arg.holder.append("table").style("margin-top", "20px").style("border", "solid 1px #ccc");
2778
- const tr3 = table2.append("tr");
2779
- tr3.append("td").text(sample.name);
2780
- const td = tr3.append("td");
2781
- this.showsvpairs({
2782
- prodlst,
2783
- holder: td,
2784
- nodetail: true,
2785
- sample,
2786
- // FIXME: eglst info is hidden somewhere in sample.egglst
2787
- eglst: null
2788
- });
2789
- }
2790
- });
2791
- }
2792
- if (this.expression.genes && geneset.size > 0) {
2793
- const table2 = expressiontd.append("table");
2794
- const tr3 = table2.append("tr");
2795
- for (const gene of geneset) {
2796
- const expd = this.expression.genes[gene];
2797
- if (expd) {
2798
- const div = tr3.append("td").style("vertical-align", "top").append("div").style("display", "inline-block").style("margin-right", "20px").style("border", "solid 1px #ccc");
2799
- div.append("div").style("background-color", "#ededed").style("padding", "10px").text(gene);
2800
- if (arg.sample) {
2801
- for (const v of expd) {
2802
- if (v.sample == arg.sample.name) {
2803
- v.ishighlight = true;
2804
- div.append("div").style("padding", "10px").style("font-size", "70%").html("Expression in " + arg.sample.name + ': <span style="font-size:150%">' + v.value + "</span>");
2805
- } else {
2806
- v.ishighlight = false;
2807
- }
2808
- }
2809
- }
2810
- showgenevalues({
2811
- data: this.expression.genes[gene],
2812
- holder: div.append("div").style("margin", "10px"),
2813
- width: 200,
2814
- height: 200,
2815
- namename: "sample"
2816
- });
2817
- } else {
2818
- tr3.append("td").style("vertical-align", "top").text("No expression data for " + gene + "</td>");
2819
- }
2820
- }
2821
- }
2822
- }
2823
- prodidisinvalid(id, sample) {
2824
- for (const egg of sample.egglst) {
2825
- for (const eg of egg.lst) {
2826
- for (const e of eg.lst) {
2827
- for (const p of e.lst) {
2828
- if (p.prodid == id) return false;
2829
- }
2830
- }
2831
- }
2832
- }
2833
- return true;
2834
- }
2835
- extractprod(id, sample) {
2836
- let prod = null;
2837
- for (let n = 0; n < sample.egglst.length; n++) {
2838
- const _egg = sample.egglst[n];
2839
- for (let j = 0; j < _egg.lst.length; j++) {
2840
- const _eg = _egg.lst[j];
2841
- for (let k = 0; k < _eg.lst.length; k++) {
2842
- const _evt = _eg.lst[k];
2843
- for (let p = 0; p < _evt.lst.length; p++) {
2844
- const p2 = _evt.lst[p];
2845
- if (p2.prodid == id) {
2846
- prod = p2;
2847
- _evt.lst.splice(p, 1);
2848
- break;
2849
- }
2850
- }
2851
- if (prod) {
2852
- if (_evt.lst.length == 0) {
2853
- _eg.lst.splice(k, 1);
2854
- }
2855
- break;
2856
- }
2857
- }
2858
- if (prod) {
2859
- if (_eg.lst.length == 0) {
2860
- _egg.lst.splice(j, 1);
2861
- } else {
2862
- if (_eg.ismsg && _eg.lst.length == 1) {
2863
- delete _eg.ismsg;
2864
- }
2865
- }
2866
- break;
2867
- }
2868
- }
2869
- if (prod) {
2870
- if (_egg.lst.length == 0) {
2871
- sample.egglst.splice(n, 1);
2872
- }
2873
- break;
2874
- }
2875
- }
2876
- return prod;
2877
- }
2878
- // end of class
2879
- };
2880
- function msjoin(prod, newholder) {
2881
- if (prod.isitd) return;
2882
- if (prod.sv_ort == "?") return;
2883
- var single = true;
2884
- var thispair = prod.usepair;
2885
- for (var i = 0; i < newholder.length; i++) {
2886
- var tmplst = newholder[i];
2887
- var prod2 = tmplst[0];
2888
- if (prod.chrB == prod2.chrA && prod.ortB == prod2.ortA) {
2889
- if (testreadcount(prod, prod2)) {
2890
- var thatpair = prod2.usepair;
2891
- if (thispair && thatpair && thispair.b.isoform && thispair.b.isoform == thatpair.a.isoform) {
2892
- var p1 = thispair.b;
2893
- var p2 = thatpair.a;
2894
- var ahead = false;
2895
- if (p1.atutr5) {
2896
- if (p2.codon != void 0) {
2897
- ahead = true;
2898
- prod2.mswhat = "5' UTR to coding region";
2899
- } else if (p2.atutr3) {
2900
- ahead = true;
2901
- prod2.mswhat = "5' UTR to 3' UTR";
2902
- } else if (p2.atutr5 && p1.atutr5.off < p2.atutr5.off) {
2903
- ahead = true;
2904
- prod2.mswhat = p2.atutr5.off - p1.atutr5.off + " bp apart in 5' UTR";
2905
- }
2906
- } else if (p1.atutr3) {
2907
- if (p2.atutr3 && p1.atutr3.off < p2.atutr3.off) {
2908
- ahead = true;
2909
- prod2.mswhat = p2.atutr3.off - p1.atutr3.off + " bp apart in 3' UTR";
2910
- }
2911
- } else if (p1.codon != void 0) {
2912
- if (p2.codon != void 0 && p2.codon > p1.codon) {
2913
- ahead = true;
2914
- prod2.mswhat = p2.codon - p1.codon + " aa apart in protein";
2915
- } else if (p2.atutr3) {
2916
- ahead = true;
2917
- prod2.mswhat = "coding region to 3' UTR";
2918
- }
2919
- }
2920
- if (ahead) {
2921
- tmplst.unshift(prod);
2922
- single = false;
2923
- break;
2924
- }
2925
- }
2926
- var dst = prod2.posA - prod.posB;
2927
- if (prod.ortB == "+" && dst > 0 && dst < genomelimit || prod.ortB == "-" && dst < 0 && -dst < genomelimit) {
2928
- prod2.mswhat = Math.abs(dst) + " bp apart on genome";
2929
- tmplst.unshift(prod);
2930
- single = false;
2931
- break;
2932
- }
2933
- }
2934
- }
2935
- prod2 = tmplst[tmplst.length - 1];
2936
- if (prod.chrA == prod2.chrB && prod.ortA == prod2.ortB) {
2937
- if (testreadcount(prod2, prod)) {
2938
- var thatpair = prod2.usepair;
2939
- if (thispair && thatpair && thispair.a.isoform && thispair.a.isoform == thatpair.b.isoform) {
2940
- var p1 = thatpair.b;
2941
- var p2 = thispair.a;
2942
- var behind = false;
2943
- if (p1.atutr5) {
2944
- if (p2.codon != void 0) {
2945
- behind = true;
2946
- prod.mswhat = "5' UTR to coding region";
2947
- } else if (p2.atutr3) {
2948
- behind = true;
2949
- prod.mswhat = "5' UTR to 3' UTR";
2950
- } else if (p2.atutr5 && p1.atutr5.off < p2.atutr5.off) {
2951
- behind = true;
2952
- prod.mswhat = p2.atutr5.off - p1.atutr5.off + " bp apart in 5' UTR";
2953
- }
2954
- } else if (p1.atutr3) {
2955
- if (p2.atutr3 && p1.atutr3.off < p2.atutr3.off) {
2956
- behind = true;
2957
- prod.mswhat = p2.atutr3.off - p1.atutr3.off + " bp apart in 3' UTR";
2958
- }
2959
- } else if (p1.codon != void 0) {
2960
- if (p2.codon != void 0 && p2.codon > p1.codon) {
2961
- behind = true;
2962
- prod.mswhat = p2.codon - p1.codon + " aa apart in protein";
2963
- } else if (p2.atutr3) {
2964
- behind = true;
2965
- prod.mswhat = "coding region to 3' UTR";
2966
- }
2967
- }
2968
- if (behind) {
2969
- tmplst.push(prod);
2970
- single = false;
2971
- break;
2972
- }
2973
- }
2974
- var dst = prod.posA - prod2.posB;
2975
- if (prod.ortA == "+" && dst > 0 && dst < genomelimit && prod.ortA == "-" && dst < 0 && -dst < genomelimit) {
2976
- prod.mswhat = Math.abs(dst) + " bp apart on genome";
2977
- tmplst.push(prod);
2978
- single = false;
2979
- break;
2980
- }
2981
- }
2982
- }
2983
- }
2984
- if (single) {
2985
- newholder.push([prod]);
2986
- }
2987
- function testreadcount(p12, p22) {
2988
- if (!p12.usepair || !p12.usepair.inframe) return false;
2989
- if (!p22.usepair || !p22.usepair.inframe) return false;
2990
- if (p12.readsB == 0 || p22.readsA == 0) return false;
2991
- var fold = p12.readsB / p22.readsA;
2992
- return fold >= 0.2 && fold <= 5;
2993
- }
2994
- }
2995
- function svtable(arg) {
2996
- const table = arg.holder.append("table").style("border-spacing", "10px").style("border-collapse", "separate");
2997
- const htr = table.append("tr").style("font-size", "70%").style("color", "#858585");
2998
- const fields = [
2999
- { label: "Feature", hide: true, get: (a) => a.feature },
3000
- { label: "Ratio", hide: true, get: (a) => Math.ceil(a.ratio * 100) + "%" },
3001
- { label: "Chimeric<br>reads", hide: true, get: (a) => a.chimericreads },
3002
- { label: "Contig<br>length", hide: true, get: (a) => a.contiglen },
3003
- { label: "Repeat<br>score", hide: true, get: (a) => a.repeatscore },
3004
- { label: "Cicero<br>score", hide: true, atpair: true, get: (a) => a.score },
3005
- { label: "Cicero<br>rating", israting: true, hide: true, atpair: true, get: (a) => a.rating }
3006
- ];
3007
- for (const sample of arg.samplelst) {
3008
- for (const p of sample.pairlst) {
3009
- if (p.a.feature || p.b.feature) fields[0].hide = false;
3010
- if (typeof p.a.ratio == "number" || typeof (p.b.ratio == "number")) fields[1].hide = false;
3011
- if (typeof p.a.chimericreads == "number" || typeof p.b.chimericreads == "number") fields[2].hide = false;
3012
- if (typeof p.a.contiglen == "number" || typeof p.b.contiglen == "number") fields[3].hide = false;
3013
- if (typeof p.a.repeatscore == "number" || typeof p.b.repeatscore == "number") fields[4].hide = false;
3014
- if (typeof p.score == "number") fields[5].hide = false;
3015
- if (p.rating) fields[6].hide = false;
3016
- }
3017
- }
3018
- if (!arg.nosample) {
3019
- htr.append("td");
3020
- }
3021
- htr.append("td");
3022
- htr.append("td");
3023
- htr.append("td").html("Genomic<br>position");
3024
- htr.append("td").html("Genomic<br>dist.");
3025
- for (const f of fields) {
3026
- if (f.hide) return;
3027
- htr.append("td").html(f.label);
3028
- }
3029
- for (const sample of arg.samplelst) {
3030
- let tr = table.append("tr");
3031
- if (!arg.nosample) {
3032
- const td = tr.append("td").text(sample.sample);
3033
- if (sample.pairlst.length > 1) {
3034
- td.attr("rowspan", sample.pairlst.length);
3035
- }
3036
- }
3037
- for (let i = 0; i < sample.pairlst.length; i++) {
3038
- if (i > 0) {
3039
- tr = table.append("tr");
3040
- }
3041
- const pair = sample.pairlst[i];
3042
- tr.append("td").style("text-align", "right").html(
3043
- '<span style="background-color:' + colorbgleft + ';padding:2px 3px;font-size:80%">' + pair.a.name + '</span><span style="background-color:' + colorbgright + ';padding:2px 3px;font-size:80%">' + pair.b.name + "</span>"
3044
- );
3045
- const td = tr.append("td");
3046
- if (pair.originalprod && pair.originalprod.hook.lessFrame) {
3047
- pair.originalprod.hook.lessFrame = td;
3048
- }
3049
- if (pair.inframe) {
3050
- td.html(
3051
- '<span style="background-color:' + colorinframe + ';color:white;padding:2px 3px;font-size:80%;white-space:nowrap">In frame</span>'
3052
- );
3053
- } else {
3054
- if (pair.a.gm || pair.b.gm) {
3055
- td.html(
3056
- '<span style="background-color:#858585;color:white;padding:2px 3px;font-size:80%;white-space:nowrap">Out of frame</span>'
3057
- );
3058
- } else {
3059
- td.html(
3060
- '<span style="border:solid 1px #858585;color:#858585;padding:1px 2px;font-size:80%;white-space:nowrap">no gene ?</span>'
3061
- );
3062
- }
3063
- }
3064
- tr.append("td").html(
3065
- '<div style="background-color:' + colorbgleft + ';padding:1px 3px;font-size:70%;white-space:nowrap">' + pair.a.chr + ":" + pair.a.position + " " + pair.a.strand + '</div><div style="background-color:' + colorbgright + ';padding:1px 3px;font-size:70%;white-space:nowrap">' + pair.b.chr + ":" + pair.b.position + " " + pair.b.strand + "</div>"
3066
- );
3067
- tr.append("td").html(
3068
- pair.a.chr == pair.b.chr ? bplen(Math.abs(pair.a.position - pair.b.position)) : '<span style="color:' + colorctx + '">CTX</span>'
3069
- );
3070
- for (const f of fields) {
3071
- if (f.hide) continue;
3072
- const td2 = tr.append("td");
3073
- if (f.israting && pair.originalprod && pair.originalprod.hook.lessRating) {
3074
- pair.originalprod.hook.lessRating = td2;
3075
- }
3076
- if (f.atpair) {
3077
- td2.text(f.get(pair));
3078
- } else {
3079
- td2.html(
3080
- '<span style="background-color:' + colorbgleft + ';padding:2px 3px;font-size:80%">' + f.get(pair.a) + '</span><span style="background-color:' + colorbgright + ';padding:2px 3px;font-size:80%">' + f.get(pair.b) + "</span>"
3081
- );
3082
- }
3083
- }
3084
- }
3085
- }
3086
- }
3087
- function loadexpression(svmr, file) {
3088
- const genes = {};
3089
- const ep = svmr.expression;
3090
- ep.genes = genes;
3091
- const reader = new FileReader();
3092
- const chunksize = 4096;
3093
- let chunks = [];
3094
- let offset = 0;
3095
- reader.onloadend = (e) => {
3096
- if (e.target.readyState != FileReader.DONE) return;
3097
- const chunk = e.target.result;
3098
- chunks.push(chunk);
3099
- const isend = offset >= file.size;
3100
- process(isend);
3101
- if (isend) {
3102
- done();
3103
- } else {
3104
- offset += chunksize;
3105
- ep.presays.text("Reading file: " + Math.ceil(offset / file.size * 100) + "%");
3106
- reader.readAsText(file.slice(offset, offset + chunksize));
3107
- }
3108
- };
3109
- reader.readAsText(file.slice(0, chunksize));
3110
- const hg = {}, hs = {};
3111
- let good = 0, bad = 0;
3112
- function process(isend) {
3113
- const lines = chunks.join("").split("\n");
3114
- for (let i = 0; i < lines.length - 1 - (isend ? 0 : 1); i++) {
3115
- const l = lines[i].split(" ");
3116
- if (l.length == 3) {
3117
- const v = Number.parseFloat(l[1]);
3118
- if (Number.isNaN(v)) {
3119
- bad++;
3120
- } else {
3121
- good++;
3122
- hg[l[0]] = 1;
3123
- hs[l[2]] = 1;
3124
- if (!(l[0] in genes)) {
3125
- genes[l[0]] = [];
3126
- }
3127
- genes[l[0]].push({
3128
- sample: l[2],
3129
- value: v
3130
- });
3131
- }
3132
- } else {
3133
- bad++;
3134
- }
3135
- }
3136
- if (!isend) {
3137
- chunks = [lines[lines.length - 1]];
3138
- }
3139
- }
3140
- function done() {
3141
- let genec = 0;
3142
- for (const n in hg) genec++;
3143
- let samplec = 0;
3144
- for (const n in hs) samplec++;
3145
- disappear(ep.prediv);
3146
- appear(ep.afterdiv);
3147
- ep.afterdiv.selectAll("*").remove();
3148
- ep.afterdiv.append("div").text(
3149
- "Expression data loaded for " + genec + " genes, " + samplec + " samples, " + good + " data points" + (bad > 0 ? ", " + bad + " bad lines" : "")
3150
- );
3151
- ep.afterdiv.append("button").text("Delete").style("margin", "20px").on("click", () => {
3152
- delete ep.genes;
3153
- ep.prediv.node().removeChild(ep.input.node());
3154
- ep.input = ep.prediv.append("input").attr("type", "file").on("change", (event) => {
3155
- loadexpression(svmr, event.target.files[0]);
3156
- });
3157
- ep.presays.text("");
3158
- disappear(ep.afterdiv);
3159
- appear(ep.prediv);
3160
- });
3161
- }
3162
- }
3163
- function showgenevalues(arg) {
3164
- const hlcolor = "red";
3165
- arg.data.sort((a, b) => {
3166
- return b.value - a.value;
3167
- });
3168
- let width = arg.width ? arg.width : 400, height = arg.height ? arg.height : 400;
3169
- let maxv = 0;
3170
- for (const v of arg.data) {
3171
- maxv = Math.max(maxv, v.value);
3172
- }
3173
- let dotr;
3174
- const xscale = linear().domain([0, maxv]);
3175
- const svg = arg.holder.append("svg");
3176
- const axisg = svg.append("g");
3177
- const dotg = svg.append("g");
3178
- const dotset = dotg.selectAll().data(arg.data).enter().append("g");
3179
- const dotcir = dotset.append("circle").attr("fill", "white").attr("fill-opacity", 0).attr("stroke", (d) => d.ishighlight ? hlcolor : "black").attr("stroke-opacity", (d) => d.ishighlight ? 0.7 : 0.2).on("mouseover", (event, d) => {
3180
- event.target.setAttribute("transform", "scale(1.5)");
3181
- drag.text((d.sample ? d.sample : d.patient + " " + d.sampletype) + " " + d.value).attr("fill", d.ishighlight ? hlcolor : "black");
3182
- }).on("mouseout", (event, d) => {
3183
- event.target.setAttribute("transform", "scale(1)");
3184
- drag.text("drag to resize").attr("fill", "black");
3185
- });
3186
- const drag = svg.append("text").text("drag to resize").attr("font-size", 12).attr("class", "sja_svgtext").attr("font-family", font).attr("text-anchor", "end").on("mousedown", (event) => {
3187
- event.preventDefault();
3188
- const x0 = event.clientX, y0 = event.clientY, width0 = width, height0 = height;
3189
- const b = select_default(document.body);
3190
- b.on("mousemove", () => {
3191
- width = width0 + event.clientX - x0;
3192
- height = height0 + event.clientY - y0;
3193
- sizing();
3194
- }).on("mouseup", () => {
3195
- b.on("mousemove", null).on("mouseup", null);
3196
- });
3197
- });
3198
- function sizing() {
3199
- dotr = Math.max(5, Math.min(width, height) / 40);
3200
- const fontsize = Math.min(18, Math.max(12, dotr * 2)), ticksize = 5, axish = fontsize + ticksize + 5, axispad = dotr + 5, width2 = dotr * 3;
3201
- xscale.range([0, width]);
3202
- svg.attr("width", dotr * 2 + width + width2).attr("height", axish + axispad + height + dotr * 2);
3203
- axisstyle({
3204
- axis: axisg.attr("transform", "translate(" + dotr * 2 + "," + axish + ")").call(
3205
- axisTop().scale(xscale).ticks(Math.min(10, Math.ceil(width / 50)))
3206
- ),
3207
- fontsize,
3208
- color: "black",
3209
- showline: true
3210
- });
3211
- dotg.attr("transform", "translate(" + dotr * 2 + "," + (axish + axispad) + ")");
3212
- dotset.attr("transform", (d, i) => {
3213
- return "translate(" + xscale(d.value) + "," + height * i / arg.data.length + ")";
3214
- });
3215
- dotcir.attr("r", (d) => {
3216
- return dotr * (d.ishighlight ? 1.5 : 1);
3217
- });
3218
- drag.attr("font-size", fontsize).attr("x", dotr * 2 + width + width2 - 5).attr("y", axish + axispad + height + dotr * 2 - 5);
3219
- }
3220
- sizing();
3221
- return this;
3222
- }
3223
-
3224
- // src/svmr.js
3225
- function svmrparseinput(arg, sayerror2, genome, holder, hostURL, jwt) {
3226
- if (!arg.dataname) {
3227
- arg.dataname = "Unnamed dataset";
3228
- }
3229
- if (arg.input) {
3230
- const [e, header, items] = svmrparseraw(arg.input, genome);
3231
- if (e) {
3232
- sayerror2("Fusion Editor input error: " + e);
3233
- return;
3234
- }
3235
- svmrlaunch(genome, header, items, arg.dataname, holder, hostURL, jwt);
3236
- return;
3237
- }
3238
- if (!arg.urls) {
3239
- sayerror2('neither .input:"" or .urls:[] is provided for Fusion Editor');
3240
- return;
3241
- }
3242
- if (!Array.isArray(arg.urls)) {
3243
- sayerror2("fusioneditor.urls[] should be an array of URL strings");
3244
- return;
3245
- }
3246
- if (arg.urls.length == 0) {
3247
- sayerror2("fusioneditor.urls[] is empty");
3248
- return;
3249
- }
3250
- const wait = holder.append("div").style("margin", "20px").style("color", "#aaa").style("font-size", "1.5em").text("Loading fusion gene data ...");
3251
- const tasks = [];
3252
- arg.urls.forEach((url) => {
3253
- tasks.push(
3254
- fetch(
3255
- new Request(hostURL + "/urltextfile", {
3256
- method: "POST",
3257
- body: JSON.stringify({ url, jwt })
3258
- })
3259
- ).then((data) => {
3260
- return data.json();
3261
- }).then((data) => {
3262
- if (data.error) throw { message: "Error with " + url + ": " + data.error };
3263
- return { data: data.text, url };
3264
- })
3265
- );
3266
- });
3267
- Promise.all(tasks).then((data) => {
3268
- wait.remove();
3269
- if (data.length == 0) {
3270
- sayerror2("No data retrieved from fusioneditor.urls");
3271
- return;
3272
- }
3273
- const [e, header, items] = svmrparseraw(data[0].data, genome);
3274
- if (e) {
3275
- sayerror2("Error parsing fusion gene data in file " + data[0].url);
3276
- return;
3277
- }
3278
- for (let i = 1; i < data.length; i++) {
3279
- const [e2, header2, items2] = svmrparseraw(data[i].data, genome);
3280
- if (e2) {
3281
- sayerror2("Error parsing fusion gene data in file " + data[i].url);
3282
- return;
3283
- }
3284
- for (const j of items2) {
3285
- items.push(j);
3286
- }
3287
- for (const h of header2) {
3288
- let notfound = true;
3289
- for (const h2 of header) {
3290
- if (h2.key == h.key) {
3291
- notfound = false;
3292
- break;
3293
- }
3294
- }
3295
- if (notfound) {
3296
- header.push(h);
3297
- }
3298
- }
3299
- }
3300
- if (items.length == 0) {
3301
- sayerror2("No fusion genes parsed from fusioneditor");
3302
- return;
3303
- }
3304
- svmrlaunch(genome, header, items, arg.dataname, holder, hostURL, jwt);
3305
- }).catch((err) => {
3306
- wait.remove();
3307
- sayerror2(err.message);
3308
- if (err.stack) console.log(err.stack);
3309
- });
3310
- }
3311
- function svmrui(dlst, genomes, hostURL, jwt) {
3312
- const [pane, inputdiv, gselect, filediv, saydiv, visualdiv] = dlst;
3313
- inputdiv.append("div").style("margin-top", "20px").html(
3314
- "<p>Please upload CICERO output as a text file. See <a href=https://docs.google.com/document/d/1jkVYRPIJpkWvA9vqtahRlNn63Hk5DehjHbF_BH9k7Rs/edit?usp=sharing target=_blank>file format</a>.</p><p>See <a href=https://docs.google.com/document/d/1DRVzE_WenG490eRYB7VGFOygtSqtF5L97rhK0HOUCNY/edit?usp=sharing target=_blank>function usage</a>.</p>"
3315
- );
3316
- inputdiv.append("p").html("<a href=https://proteinpaint.stjude.org/ppdemo/hg19/fusion/cicero.output target=_blank>Example file</a>");
3317
- function cmt(t, red) {
3318
- saydiv.style("color", red ? "red" : "black").text(t);
3319
- }
3320
- const fileui = () => {
3321
- filediv.selectAll("*").remove();
3322
- const input = filediv.append("input").attr("type", "file").on("change", (event) => {
3323
- const file = event.target.files[0];
3324
- if (!file) {
3325
- fileui();
3326
- return;
3327
- }
3328
- if (!file.size) {
3329
- cmt("Invalid file " + file.name);
3330
- fileui();
3331
- return;
3332
- }
3333
- const reader = new FileReader();
3334
- reader.onload = (event2) => {
3335
- const usegenome = gselect.options[gselect.selectedIndex].innerHTML;
3336
- const genomeobj = genomes[usegenome];
3337
- const [err, header, items] = svmrparseraw(event2.target.result, genomeobj);
3338
- if (err) {
3339
- cmt(err, 1);
3340
- fileui();
3341
- return;
3342
- }
3343
- svmrlaunch(genomeobj, header, items, file.name, visualdiv, hostURL, jwt);
3344
- filediv.remove();
3345
- inputdiv.remove();
3346
- };
3347
- reader.onerror = function() {
3348
- cmt("Error reading file " + file.name, 1);
3349
- fileui();
3350
- return;
3351
- };
3352
- reader.readAsText(file, "utf8");
3353
- });
3354
- setTimeout(() => input.node().focus(), 1100);
3355
- };
3356
- fileui();
3357
- }
3358
- function svmrlaunch(genome, header, items, filename, holder, hostURL, jwt) {
3359
- new svmr_c_default(genome, header, items, filename, holder, hostURL, jwt);
3360
- }
3361
- function svmrparseraw(raw, genome) {
3362
- const lines = raw.trim().split("\n");
3363
- const [err, header] = parseheader(lines[0]);
3364
- if (err) {
3365
- return ["File header error: " + err];
3366
- }
3367
- const skipword = lines[0].split(" ")[0];
3368
- const items = [];
3369
- const badlines = [];
3370
- for (let i = 1; i < lines.length; i++) {
3371
- const line = lines[i];
3372
- if (line == "") continue;
3373
- if (line[0] == "#") continue;
3374
- const lst = line.trim().split(" ");
3375
- if (lst[0] == skipword) continue;
3376
- const m = {
3377
- notes: []
3378
- // collect notes
3379
- };
3380
- for (let j = 0; j < header.length; j++) {
3381
- if (lst[j] !== void 0 && lst[j].includes('"'))
3382
- return ['Input file has invalid character " e.g. "NM_001007565"'];
3383
- m[header[j].key] = lst[j];
3384
- }
3385
- if (!m.rating) {
3386
- badlines.push([i, "rating unspecified", lst]);
3387
- continue;
3388
- }
3389
- let s = m.rating;
3390
- if (s.toLowerCase() == "major") {
3391
- m.rating = "HQ";
3392
- s = "HQ";
3393
- }
3394
- if (s != "HQ" && s != "LQ" && s != "RT" && s != "bad") {
3395
- badlines.push([i, "invalid rating: " + m.rating, lst]);
3396
- continue;
3397
- }
3398
- if (!m.chrA) {
3399
- badlines.push([i, "missing chrA", lst]);
3400
- continue;
3401
- }
3402
- if (!genome.chrlookup[m.chrA.toUpperCase()]) {
3403
- badlines.push([i, "invalid chrA: " + m.chrA, lst]);
3404
- continue;
3405
- }
3406
- if (!m.chrB) {
3407
- badlines.push([i, "missing chrB", lst]);
3408
- continue;
3409
- }
3410
- if (!genome.chrlookup[m.chrB.toUpperCase()]) {
3411
- badlines.push([i, "invalid chrB: " + m.chrB, lst]);
3412
- continue;
3413
- }
3414
- s = m.posA;
3415
- if (!s) {
3416
- badlines.push([i, "missing posA", lst]);
3417
- continue;
3418
- }
3419
- let v = Number.parseInt(s);
3420
- if (Number.isNaN(v)) {
3421
- badlines.push([i, "invalid posA: " + s, lst]);
3422
- continue;
3423
- }
3424
- if (v < 0 || v >= genome.chrlookup[m.chrA.toUpperCase()]) {
3425
- badlines.push([i, "invalid posA: " + s, lst]);
3426
- continue;
3427
- }
3428
- m.posA = v;
3429
- s = m.posB;
3430
- if (!s) {
3431
- badlines.push([i, "missing posB", lst]);
3432
- continue;
3433
- }
3434
- v = Number.parseInt(s);
3435
- if (isNaN(v)) {
3436
- badlines.push([i, "invalid posB: " + s, lst]);
3437
- continue;
3438
- }
3439
- if (v < 0 || v >= genome.chrlookup[m.chrB.toUpperCase()]) {
3440
- badlines.push([i, "invalid posB: " + s, lst]);
3441
- continue;
3442
- }
3443
- m.posB = v;
3444
- if (!m.ratioA) {
3445
- badlines.push([i, "missing ratioA", lst]);
3446
- continue;
3447
- }
3448
- v = Number.parseFloat(m.ratioA);
3449
- if (Number.isNaN(v)) {
3450
- badlines.push([i, "invalid value for ratioA", lst]);
3451
- continue;
3452
- }
3453
- if (v > 1) {
3454
- badlines.push([i, "ratioA > 100%", lst]);
3455
- v = 1;
3456
- }
3457
- m.ratioA = v;
3458
- if (!m.ratioB) {
3459
- badlines.push([i, "missing ratioB", lst]);
3460
- continue;
3461
- }
3462
- v = Number.parseFloat(m.ratioB);
3463
- if (Number.isNaN(v)) {
3464
- badlines.push([i, "invalid value for ratioB", lst]);
3465
- continue;
3466
- }
3467
- if (v > 1) {
3468
- badlines.push([i, "ratioB > 100%", lst]);
3469
- v = 1;
3470
- }
3471
- m.ratioB = v;
3472
- if (!m.score) {
3473
- badlines.push([i, "missing score", lst]);
3474
- continue;
3475
- }
3476
- v = Number.parseFloat(m.score);
3477
- if (Number.isNaN(v)) {
3478
- badlines.push([i, "invalid value for score", lst]);
3479
- continue;
3480
- }
3481
- m.score = v;
3482
- if (!m.readsA) {
3483
- badlines.push([i, "readsA missing", lst]);
3484
- continue;
3485
- }
3486
- v = Number.parseInt(m.readsA);
3487
- if (Number.isNaN(v)) {
3488
- badlines.push([i, "invalid value for readsA", lst]);
3489
- continue;
3490
- }
3491
- m.readsA = v;
3492
- if (!m.readsB) {
3493
- badlines.push([i, "readsB missing", lst]);
3494
- continue;
3495
- }
3496
- v = Number.parseInt(m.readsB);
3497
- if (Number.isNaN(v)) {
3498
- badlines.push([i, "invalid value for readsB", lst]);
3499
- continue;
3500
- }
3501
- m.readsB = v;
3502
- if (!m.matchA) {
3503
- badlines.push([i, "matchA missing", lst]);
3504
- continue;
3505
- }
3506
- v = Number.parseInt(m.matchA);
3507
- if (Number.isNaN(v)) {
3508
- badlines.push([i, "invalid value for matchA", lst]);
3509
- continue;
3510
- }
3511
- m.matchA = v;
3512
- if (!m.matchB) {
3513
- badlines.push([i, "matchB missing", lst]);
3514
- continue;
3515
- }
3516
- v = Number.parseInt(m.matchB);
3517
- if (Number.isNaN(v)) {
3518
- badlines.push([i, "invalid value for matchB", lst]);
3519
- continue;
3520
- }
3521
- m.matchB = v;
3522
- if (!m.repeatA) {
3523
- badlines.push([i, "repeatA missing", lst]);
3524
- continue;
3525
- }
3526
- v = Number.parseFloat(m.repeatA);
3527
- if (Number.isNaN(v)) {
3528
- badlines.push([i, "invalid value for repeatA", lst]);
3529
- continue;
3530
- }
3531
- m.repeatA = v;
3532
- if (!m.repeatB) {
3533
- badlines.push([i, "repeatB missing", lst]);
3534
- continue;
3535
- }
3536
- v = Number.parseFloat(m.repeatB);
3537
- if (Number.isNaN(v)) {
3538
- badlines.push([i, "invalid value for repeatB", lst]);
3539
- continue;
3540
- }
3541
- m.repeatB = v;
3542
- if (m.type2) {
3543
- switch (m.type2.toLowerCase()) {
3544
- case "closs":
3545
- m.iscloss = true;
3546
- break;
3547
- case "nloss":
3548
- m.isnloss = true;
3549
- break;
3550
- case "fusion":
3551
- m.isfusion = true;
3552
- break;
3553
- case "itd":
3554
- m.isitd = true;
3555
- break;
3556
- case "other":
3557
- m.isother = true;
3558
- break;
3559
- case "uptss":
3560
- m.isuptss = true;
3561
- break;
3562
- default:
3563
- badlines.push([i, "unknown type2: " + m.type2, lst]);
3564
- continue;
3565
- }
3566
- }
3567
- if (m.geneA == "" || m.geneA == "NA") {
3568
- m.geneA = null;
3569
- }
3570
- if (m.geneB == "" || m.geneB == "NA") {
3571
- m.geneB = null;
3572
- }
3573
- if (m.featureA == "intergenic") m.geneA = null;
3574
- if (m.featureB == "intergenic") m.geneB = null;
3575
- const isoforma = m.lstisoforma ? m.lstisoforma.toUpperCase().split(",") : [], isoformb = m.lstisoformb ? m.lstisoformb.toUpperCase().split(",") : [], codona = m.lstisoformacodon ? m.lstisoformacodon.split(",") : [], codonb = m.lstisoformbcodon ? m.lstisoformbcodon.split(",") : [], frame = m.lstframe ? m.lstframe.split(",") : [];
3576
- let exona = null, exonb = null, anchora = null, anchorb = null, contigaaA = null, contigaaB = null, contigbpA = null, contigbpB = null;
3577
- if (m.lstisoformaexon) exona = m.lstisoformaexon.split(",");
3578
- if (m.lstisoformbexon) exonb = m.lstisoformbexon.split(",");
3579
- if (m.lstisoformaanchor) anchora = m.lstisoformaanchor.split(",");
3580
- if (m.lstisoformbanchor) anchorb = m.lstisoformbanchor.split(",");
3581
- if (m.lstcontigaaA) contigaaA = m.lstcontigaaA.split(",");
3582
- if (m.lstcontigaaB) contigaaB = m.lstcontigaaB.split(",");
3583
- if (m.lstcontigbpA) contigbpA = m.lstcontigbpA.split(",");
3584
- if (m.lstcontigbpB) contigbpB = m.lstcontigbpB.split(",");
3585
- const paircount = Math.max(isoforma.length, isoformb.length, codona.length, codonb.length, frame.length);
3586
- m.pairs = [];
3587
- for (let j = 0; j < paircount; j++) {
3588
- const pair = {
3589
- a: {
3590
- isoform: isoforma[j] && isoforma[j].length > 0 ? isoforma[j] : null,
3591
- exon: exona ? Number.parseInt(exona[j]) : NaN,
3592
- codon: codona[j] ? Number.parseInt(codona[j]) : NaN,
3593
- anchor: anchora ? anchora[j] : void 0
3594
- },
3595
- b: {
3596
- isoform: isoformb[j] && isoformb[j].length > 0 ? isoformb[j] : null,
3597
- exon: exonb ? Number.parseInt(exonb[j]) : NaN,
3598
- codon: codonb[j] ? Number.parseInt(codonb[j]) : NaN,
3599
- anchor: anchorb ? anchorb[j] : void 0
3600
- },
3601
- frame: frame[j],
3602
- inframe: frame[j] == "1" || frame[j] == "2"
3603
- };
3604
- if (m.isuptss) {
3605
- pair.inframe = true;
3606
- }
3607
- let aaa = NaN, aab = NaN, bpa = NaN, bpb = NaN;
3608
- if (contigaaA && contigaaA[j]) aaa = Number.parseInt(contigaaA[j]);
3609
- if (contigaaB && contigaaB[j]) aab = Number.parseInt(contigaaB[j]);
3610
- if (contigbpA && contigbpA[j]) bpa = Number.parseInt(contigbpA[j]);
3611
- if (contigbpB && contigbpB[j]) bpb = Number.parseInt(contigbpB[j]);
3612
- if (!Number.isNaN(aaa) && !Number.isNaN(aab)) {
3613
- pair.a.contigaa = aaa;
3614
- pair.b.contigaa = aab;
3615
- }
3616
- if (!Number.isNaN(bpa) && !Number.isNaN(bpb)) {
3617
- pair.a.contigbp = bpa;
3618
- pair.b.contigbp = bpb;
3619
- }
3620
- m.pairs.push(pair);
3621
- }
3622
- if (m.exception) {
3623
- m.notes.push(m.exception);
3624
- }
3625
- if (m.hlgene) {
3626
- const v2 = Number.parseInt(m.hlgene);
3627
- if (Number.isNaN(v2) || v2 != 0 && v2 != 1 && v2 != 2 && v2 != 3 && v2 != 4) {
3628
- badlines.push([i, "invalid value for highlight gene flag: " + m.hlgene, lst]);
3629
- delete m.hlgene;
3630
- } else {
3631
- m.hlgene = v2;
3632
- }
3633
- }
3634
- items.push(m);
3635
- }
3636
- if (badlines.length > 0) {
3637
- const hlst = header.map((i) => i.key);
3638
- bulk_badline(hlst, badlines);
3639
- }
3640
- if (items.length == 0) {
3641
- return ["No data loaded"];
3642
- }
3643
- return [null, header, items];
3644
- }
3645
- function parseheader(line) {
3646
- const original = line.trim().split(" ");
3647
- if (original.length <= 1) return ["invalid file header"];
3648
- const header = [];
3649
- const lower = [];
3650
- for (const i2 of original) {
3651
- lower.push(i2.toLowerCase());
3652
- header.push({
3653
- label: i2,
3654
- key: i2.toLowerCase(),
3655
- custom: true
3656
- });
3657
- }
3658
- const htry = (...arg) => {
3659
- for (const s of arg) {
3660
- const i2 = lower.indexOf(s);
3661
- if (i2 != -1) return i2;
3662
- }
3663
- return -1;
3664
- };
3665
- let i = htry("genea");
3666
- if (i == -1) return ["geneA missing"];
3667
- header[i].key = "geneA";
3668
- delete header[i].custom;
3669
- i = htry("chra");
3670
- if (i == -1) return ["chrA missing"];
3671
- header[i].key = "chrA";
3672
- delete header[i].custom;
3673
- i = htry("posa");
3674
- if (i == -1) return ["posA missing"];
3675
- header[i].key = "posA";
3676
- delete header[i].custom;
3677
- i = htry("orta");
3678
- if (i == -1) return ["ortA missing"];
3679
- header[i].key = "ortA";
3680
- delete header[i].custom;
3681
- i = htry("featurea");
3682
- if (i == -1) return ["featureA missing"];
3683
- header[i].key = "featureA";
3684
- delete header[i].custom;
3685
- i = htry("ratioa");
3686
- if (i == -1) return ["ratioA missing"];
3687
- header[i].key = "ratioA";
3688
- delete header[i].custom;
3689
- i = htry("readsa");
3690
- if (i == -1) return ["readsA missing"];
3691
- header[i].key = "readsA";
3692
- delete header[i].custom;
3693
- i = htry("sv_refseqa_aa_index");
3694
- if (i != -1) {
3695
- header[i].key = "lstcontigaaA";
3696
- delete header[i].custom;
3697
- }
3698
- i = htry("sv_refseqa_contig_index");
3699
- if (i != -1) {
3700
- header[i].key = "lstcontigbpA";
3701
- delete header[i].custom;
3702
- }
3703
- i = htry("total_readsa");
3704
- if (i != -1) {
3705
- header[i].key = "totalreadsA";
3706
- delete header[i].custom;
3707
- }
3708
- i = htry("geneb");
3709
- if (i == -1) return ["geneB missing"];
3710
- header[i].key = "geneB";
3711
- delete header[i].custom;
3712
- i = htry("chrb");
3713
- if (i == -1) return ["chrB missing"];
3714
- header[i].key = "chrB";
3715
- delete header[i].custom;
3716
- i = htry("posb");
3717
- if (i == -1) return ["posB missing"];
3718
- header[i].key = "posB";
3719
- delete header[i].custom;
3720
- i = htry("ortb");
3721
- if (i == -1) return ["ortB missing"];
3722
- header[i].key = "ortB";
3723
- delete header[i].custom;
3724
- i = htry("featureb");
3725
- if (i == -1) return ["featureB missing"];
3726
- header[i].key = "featureB";
3727
- delete header[i].custom;
3728
- i = htry("ratiob");
3729
- if (i == -1) return ["ratioB missing"];
3730
- header[i].key = "ratioB";
3731
- delete header[i].custom;
3732
- i = htry("readsb");
3733
- if (i == -1) return ["readsB missing"];
3734
- header[i].key = "readsB";
3735
- delete header[i].custom;
3736
- i = htry("sv_refseqb_aa_index");
3737
- if (i != -1) {
3738
- header[i].key = "lstcontigaaB";
3739
- delete header[i].custom;
3740
- }
3741
- i = htry("sv_refseqb_contig_index");
3742
- if (i != -1) {
3743
- header[i].key = "lstcontigbpB";
3744
- delete header[i].custom;
3745
- }
3746
- i = htry("total_readsb");
3747
- if (i != -1) {
3748
- header[i].key = "totalreadsB";
3749
- delete header[i].custom;
3750
- }
3751
- i = htry("sv_inframe", "frame");
3752
- if (i == -1) return ["sv_inframe missing"];
3753
- header[i].key = "lstframe";
3754
- delete header[i].custom;
3755
- i = htry("sv_refseqa");
3756
- if (i == -1) return ["sv_refseqA missing"];
3757
- header[i].key = "lstisoforma";
3758
- delete header[i].custom;
3759
- i = htry("sv_refseqa_codon");
3760
- if (i != -1) {
3761
- header[i].key = "lstisoformacodon";
3762
- }
3763
- i = htry("sv_refseqb_codon");
3764
- if (i != -1) {
3765
- header[i].key = "lstisoformbcodon";
3766
- }
3767
- i = htry("score");
3768
- if (i == -1) return ["score missing"];
3769
- header[i].key = "score";
3770
- delete header[i].custom;
3771
- i = htry("sv_refseqb");
3772
- if (i == -1) return ["sv_refseqB missing"];
3773
- header[i].key = "lstisoformb";
3774
- delete header[i].custom;
3775
- i = htry("rating");
3776
- if (i == -1) return ["rating missing"];
3777
- header[i].key = "rating";
3778
- delete header[i].custom;
3779
- i = htry("matcha");
3780
- if (i == -1) return ["matchA missing"];
3781
- header[i].key = "matchA";
3782
- delete header[i].custom;
3783
- i = htry("matchb");
3784
- if (i == -1) return ["matchB missing"];
3785
- header[i].key = "matchB";
3786
- delete header[i].custom;
3787
- i = htry("repeata");
3788
- if (i == -1) return ["repeatA missing"];
3789
- header[i].key = "repeatA";
3790
- delete header[i].custom;
3791
- i = htry("repeatb");
3792
- if (i == -1) return ["repeatB missing"];
3793
- header[i].key = "repeatB";
3794
- delete header[i].custom;
3795
- i = htry("functional effect");
3796
- if (i == -1) return ["functional effect missing"];
3797
- header[i].key = "type2";
3798
- delete header[i].custom;
3799
- i = htry("sample");
3800
- if (i != -1) {
3801
- header[i].key = "sample";
3802
- delete header[i].custom;
3803
- }
3804
- i = htry("sv_processing_exception");
3805
- if (i != -1) {
3806
- header[i].key = "exception";
3807
- }
3808
- i = htry("medal");
3809
- if (i != -1) {
3810
- header[i].key = "hlgene";
3811
- }
3812
- i = htry("sv_refseqa_exon");
3813
- if (i != -1) {
3814
- header[i].key = "lstisoformaexon";
3815
- delete header[i].custom;
3816
- }
3817
- i = htry("sv_refseqb_exon");
3818
- if (i != -1) {
3819
- header[i].key = "lstisoformbexon";
3820
- delete header[i].custom;
3821
- }
3822
- i = htry("sv_refseqa_anchor_type");
3823
- if (i != -1) {
3824
- header[i].key = "lstisoformaanchor";
3825
- delete header[i].custom;
3826
- }
3827
- i = htry("sv_refseqb_anchor_type");
3828
- if (i != -1) {
3829
- header[i].key = "lstisoformbanchor";
3830
- delete header[i].custom;
3831
- }
3832
- return [null, header];
3833
- }
3834
- export {
3835
- svmrlaunch,
3836
- svmrparseinput,
3837
- svmrparseraw,
3838
- svmrui
3839
- };
3840
- //# sourceMappingURL=svmr-UFC4TKWV.js.map