@sjcrh/proteinpaint-client 2.190.2 → 2.191.2

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 (932) hide show
  1. package/dist/2dmaf-V4WJ2LEK.js +1373 -0
  2. package/dist/AIProjectAdmin-JMN5O6YU.js +829 -0
  3. package/dist/AppHeader-Y4SEKCEF.js +835 -0
  4. package/dist/BoxPlot-ZXQZGCR3.js +1211 -0
  5. package/dist/BoxPlot-ZXQZGCR3.js.map +7 -0
  6. package/dist/CorrelationVolcano-R5IWD6WA.js +619 -0
  7. package/dist/DE-ZV6O7B6Y.js +95 -0
  8. package/dist/DEinput-FTOALZKN.js +301 -0
  9. package/dist/DifferentialAnalysis-NLCA766A.js +245 -0
  10. package/dist/Disco-Y5Z4A7GN.js +3237 -0
  11. package/dist/Disco.UI-GSWZYIUT.js +245 -0
  12. package/dist/DmrPlot-FEFUCIGT.js +642 -0
  13. package/dist/DziViewer-6737GC22.js +16332 -0
  14. package/dist/GB-AOXF2JJB.js +1130 -0
  15. package/dist/GeneExpInput-CXYRKQU7.js +366 -0
  16. package/dist/HicApp-GLNNZ4H5.js +2250 -0
  17. package/dist/NumBinaryEditor-6ZAL6CCP.js +271 -0
  18. package/dist/NumBinaryEditor-6ZAL6CCP.js.map +7 -0
  19. package/dist/NumBinaryEditor.unit.spec-3VTJLILH.js +286 -0
  20. package/dist/NumContEditor-3LOAR676.js +109 -0
  21. package/dist/NumContEditor-3LOAR676.js.map +7 -0
  22. package/dist/NumContEditor.unit.spec-WIMYCOVO.js +169 -0
  23. package/dist/NumCustomBinEditor-XIOAYWOD.js +38 -0
  24. package/dist/NumCustomBinEditor.unit.spec-N5OV6MKR.js +284 -0
  25. package/dist/NumDiscreteEditor-AT6FKYGI.js +179 -0
  26. package/dist/NumDiscreteEditor.unit.spec-BDR5GZ46.js +202 -0
  27. package/dist/NumRegularBinEditor-Z4NBS4VZ.js +38 -0
  28. package/dist/NumRegularBinEditor.unit.spec-BRWYNQ55.js +227 -0
  29. package/dist/NumSplineEditor-B45BAWQ2.js +198 -0
  30. package/dist/NumSplineEditor-B45BAWQ2.js.map +7 -0
  31. package/dist/NumSplineEditor.unit.spec-5RDBCZ4N.js +199 -0
  32. package/dist/NumericDensity-L7HIVV7D.js +38 -0
  33. package/dist/NumericDensity.unit.spec-PL3XDJCV.js +221 -0
  34. package/dist/NumericHandler-KJYZOCCG.js +39 -0
  35. package/dist/NumericHandler.unit.spec-VC7NPLJW.js +219 -0
  36. package/dist/ProteomeInput-A3GRPIAH.js +396 -0
  37. package/dist/RunChart2-MSNU3ZNT.js +758 -0
  38. package/dist/SC-FNKG2FK5.js +936 -0
  39. package/dist/Volcano-IRJMPHXJ.js +1379 -0
  40. package/dist/WSIViewer-KITT7I67.js +48475 -0
  41. package/dist/WsiSamplesPlot-G3YZ6SIE.js +165 -0
  42. package/dist/adSandbox-GIQTJ4VA.js +38 -0
  43. package/dist/app-MGNEMS2K.js +49 -0
  44. package/dist/app-UQTHPQFD.js +37 -0
  45. package/dist/app.js +17 -17
  46. package/dist/bam-5PROQBRT.js +860 -0
  47. package/dist/barchart-BQYJ73Z4.js +47 -0
  48. package/dist/barchart.data-VFULOIHY.js +22 -0
  49. package/dist/barchart.events-W2CIDD4B.js +47 -0
  50. package/dist/barchart.integration.spec-JF2IHFQE.js +1980 -0
  51. package/dist/barchart.integration.spec-JF2IHFQE.js.map +7 -0
  52. package/dist/barchart2-V6W4UAFH.js +311 -0
  53. package/dist/block-5V2FCT7Q.js +6202 -0
  54. package/dist/block.init-43IUNDNB.js +38 -0
  55. package/dist/block.mds.expressionrank-LI6MZPBE.js +359 -0
  56. package/dist/block.mds.geneboxplot-673AIJMJ.js +828 -0
  57. package/dist/block.mds.junction-UWNVNV3X.js +1545 -0
  58. package/dist/block.mds.svcnv-Z5VFCUUE.js +6801 -0
  59. package/dist/block.svg-MGK4GWLL.js +164 -0
  60. package/dist/block.tk.aicheck-OFNDGG7Q.js +283 -0
  61. package/dist/block.tk.ase-IDZQY7MW.js +365 -0
  62. package/dist/block.tk.bam-K7A2Q5NI.js +1906 -0
  63. package/dist/block.tk.bedgraphdot-PPTKCCPK.js +384 -0
  64. package/dist/block.tk.bigwig.ui-PI6EAU43.js +212 -0
  65. package/dist/block.tk.hicstraw-EZ2GS2K4.js +823 -0
  66. package/dist/block.tk.junction-4WSLQGSQ.js +2364 -0
  67. package/dist/block.tk.junction.textmatrixui-7EJUSVMB.js +199 -0
  68. package/dist/block.tk.ld-KLVO7M37.js +99 -0
  69. package/dist/block.tk.menu-KZSL7BAR.js +1029 -0
  70. package/dist/block.tk.pgv-NYWGB4VH.js +944 -0
  71. package/dist/brainImaging-MTIIMJHW.js +423 -0
  72. package/dist/chunk-2NQLAH3L.js +443 -0
  73. package/dist/chunk-2Q6PBSPS.js +1943 -0
  74. package/dist/chunk-2TCCXOAV.js +1170 -0
  75. package/dist/chunk-2TCCXOAV.js.map +7 -0
  76. package/dist/chunk-3D5GZIGG.js +1210 -0
  77. package/dist/chunk-3TPAIXNL.js +263 -0
  78. package/dist/chunk-42EBECOD.js +95 -0
  79. package/dist/chunk-4B42QV34.js +2786 -0
  80. package/dist/chunk-4FKWINMK.js +184 -0
  81. package/dist/chunk-4FKWINMK.js.map +7 -0
  82. package/dist/chunk-4KY4XKJV.js +143 -0
  83. package/dist/chunk-52RORO74.js +158 -0
  84. package/dist/chunk-52RORO74.js.map +7 -0
  85. package/dist/chunk-5SXCIKYV.js +100 -0
  86. package/dist/chunk-647P2I4Q.js +482 -0
  87. package/dist/chunk-67HSIHPP.js +2327 -0
  88. package/dist/chunk-6GZJCSA6.js +1102 -0
  89. package/dist/chunk-6VKTEMFV.js +1815 -0
  90. package/dist/chunk-6VKTEMFV.js.map +7 -0
  91. package/dist/chunk-7JEKUSEL.js +102 -0
  92. package/dist/chunk-BMO6KSVC.js +477 -0
  93. package/dist/chunk-CKA52OEA.js +399 -0
  94. package/dist/chunk-CKA52OEA.js.map +7 -0
  95. package/dist/chunk-CKDC326M.js +50 -0
  96. package/dist/chunk-CRUBP5PT.js +446 -0
  97. package/dist/chunk-CW2Q5EA7.js +283 -0
  98. package/dist/chunk-CYHUNQMS.js +6364 -0
  99. package/dist/chunk-DC4KD6FJ.js +458 -0
  100. package/dist/chunk-DC4KD6FJ.js.map +7 -0
  101. package/dist/chunk-DHPLHIVP.js +498 -0
  102. package/dist/chunk-DJQTUDJM.js +414 -0
  103. package/dist/chunk-DJQTUDJM.js.map +7 -0
  104. package/dist/chunk-DWCVGCBX.js +381 -0
  105. package/dist/chunk-EIBNV236.js +339 -0
  106. package/dist/chunk-EZ3WMXYT.js +217 -0
  107. package/dist/chunk-F5QIZOPL.js +736 -0
  108. package/dist/chunk-F6N6JBZR.js +37 -0
  109. package/dist/chunk-FXMHSVBS.js +54 -0
  110. package/dist/chunk-FZ63VOSX.js +226 -0
  111. package/dist/chunk-GMT2GNQY.js +1332 -0
  112. package/dist/chunk-IIT367QZ.js +473 -0
  113. package/dist/chunk-IL5QT2FI.js +293 -0
  114. package/dist/chunk-J6GLTYGJ.js +2681 -0
  115. package/dist/chunk-JEZIKGZI.js +386 -0
  116. package/dist/chunk-JJOLDYSQ.js +824 -0
  117. package/dist/chunk-KSCJWPTJ.js +34 -0
  118. package/dist/chunk-L4TUTGTA.js +20787 -0
  119. package/dist/chunk-L4TUTGTA.js.map +7 -0
  120. package/dist/chunk-LT5XPBIX.js +272 -0
  121. package/dist/chunk-M3J4MINX.js +783 -0
  122. package/dist/chunk-M3J4MINX.js.map +7 -0
  123. package/dist/chunk-MEGBYD4U.js +182 -0
  124. package/dist/chunk-MEY5OBDJ.js +170 -0
  125. package/dist/chunk-MYWV64P5.js +1275 -0
  126. package/dist/chunk-MYWV64P5.js.map +7 -0
  127. package/dist/chunk-NKTBR5SK.js +613 -0
  128. package/dist/chunk-NKTBR5SK.js.map +7 -0
  129. package/dist/chunk-NVX26LFC.js +148 -0
  130. package/dist/chunk-O7NFSCEW.js +291 -0
  131. package/dist/chunk-P4QGOUDH.js +368 -0
  132. package/dist/chunk-PGBKZ76Y.js +129 -0
  133. package/dist/chunk-PQNVPSQR.js +205 -0
  134. package/dist/chunk-PQZ3A27I.js +54 -0
  135. package/dist/chunk-QNMB7LYW.js +5010 -0
  136. package/dist/chunk-RZGEKL77.js +117 -0
  137. package/dist/chunk-RZY34QRF.js +158 -0
  138. package/dist/chunk-S4JLRRKK.js +287 -0
  139. package/dist/chunk-S4JLRRKK.js.map +7 -0
  140. package/dist/chunk-SDACELDR.js +14 -0
  141. package/dist/chunk-SQWEREGE.js +222 -0
  142. package/dist/chunk-SQWEREGE.js.map +7 -0
  143. package/dist/chunk-TVADJLMF.js +317 -0
  144. package/dist/chunk-TVADJLMF.js.map +7 -0
  145. package/dist/chunk-UCLROZRF.js +142 -0
  146. package/dist/chunk-VIHUKORE.js +216 -0
  147. package/dist/chunk-VIHUKORE.js.map +7 -0
  148. package/dist/chunk-VMLSRKIB.js +276 -0
  149. package/dist/chunk-VXKO2ONI.js +534 -0
  150. package/dist/chunk-WET4LPLO.js +117 -0
  151. package/dist/chunk-WMELUFVS.js +254 -0
  152. package/dist/chunk-WS3NUPNV.js +119 -0
  153. package/dist/chunk-X5X5T3AJ.js +230 -0
  154. package/dist/chunk-X5X5T3AJ.js.map +7 -0
  155. package/dist/chunk-X63AAJGT.js +514 -0
  156. package/dist/chunk-XRAFQKOF.js +4274 -0
  157. package/dist/chunk-XRAFQKOF.js.map +7 -0
  158. package/dist/chunk-XVZ5UJWU.js +815 -0
  159. package/dist/chunk-YNBT4N6T.js +2824 -0
  160. package/dist/chunk-YVCTEEVQ.js +55 -0
  161. package/dist/chunk-YWZCJMHS.js +203 -0
  162. package/dist/chunk-Z3SC67OA.js +102 -0
  163. package/dist/chunk-ZK226W6V.js +194 -0
  164. package/dist/chunk-ZLREFIZB.js +302 -0
  165. package/dist/chunk-ZX2ISBEF.js +95 -0
  166. package/dist/condition-P2XD32QM.js +332 -0
  167. package/dist/controls-FZUTJPKV.js +41 -0
  168. package/dist/controls.btns-AP67YWKW.js +9 -0
  169. package/dist/controls.config-TEFY3NTE.js +39 -0
  170. package/dist/correlation-HS2WJFXN.js +99 -0
  171. package/dist/correlation-HS2WJFXN.js.map +7 -0
  172. package/dist/cuminc-42GBJHD3.js +1149 -0
  173. package/dist/cuminc.integration.spec-BAY4JHVL.js +678 -0
  174. package/dist/customdata.inputui-IPM5K56K.js +289 -0
  175. package/dist/dataDownload-D7VCYBDT.js +330 -0
  176. package/dist/dataDownload.integration.spec-SEBY2BIX.js +193 -0
  177. package/dist/databrowser.ui-5OC5MPZB.js +433 -0
  178. package/dist/dictionary-VVRWVLJX.js +111 -0
  179. package/dist/dnaMethylation-72IS3FRI.js +38 -0
  180. package/dist/dnaMethylation.integration.spec-U2LLSDGE.js +203 -0
  181. package/dist/dofetch-5ZRAQH5F.js +51 -0
  182. package/dist/e2pca-AR6EKEJA.js +350 -0
  183. package/dist/ep-JS5UUJQX.js +1256 -0
  184. package/dist/expclust.gdc.spec-73MGQ7RN.js +307 -0
  185. package/dist/facet-AR3QKHCY.js +521 -0
  186. package/dist/forms2-UXEI7MUP.js +534 -0
  187. package/dist/gb-RHDVYU2V.js +88 -0
  188. package/dist/geneExpClustering-L6KLCMPH.js +249 -0
  189. package/dist/geneExpression-GYT2XRE6.js +313 -0
  190. package/dist/geneExpression-SKIU3NEP.js +38 -0
  191. package/dist/geneExpression.unit.spec-CWR6KDVK.js +102 -0
  192. package/dist/geneORA-C3TALK5P.js +278 -0
  193. package/dist/geneRanking-LLYLDPLV.js +551 -0
  194. package/dist/geneVariant-PUSKBHPY.js +39 -0
  195. package/dist/geneVariant-YFMU6PHM.js +41 -0
  196. package/dist/geneVariant.integration.spec-EJ5V46OQ.js +198 -0
  197. package/dist/genefusion.ui-XUHSKQKW.js +309 -0
  198. package/dist/geneset-DEL5LXFZ.js +208 -0
  199. package/dist/genomeBrowser.spec-W5TVHOUJ.js +281 -0
  200. package/dist/grin2-FXAEGECD.js +1560 -0
  201. package/dist/grin2-U2FKULLC.js +821 -0
  202. package/dist/grin2-U2FKULLC.js.map +7 -0
  203. package/dist/gsea-CNL6SHH5.js +47 -0
  204. package/dist/hierCluster-7V65PMIW.js +59 -0
  205. package/dist/hierCluster-C44GHM4B.js +63 -0
  206. package/dist/hierCluster.config-RU5JDPWM.js +40 -0
  207. package/dist/hierCluster.integration.spec-6YH5KE4H.js +395 -0
  208. package/dist/hierCluster.interactivity-PK2L7BSW.js +54 -0
  209. package/dist/hierCluster.renderers-G3274UYA.js +21 -0
  210. package/dist/imagePlot-5SEDMPBP.js +163 -0
  211. package/dist/importPlot-M3MKWRON.js +8 -0
  212. package/dist/isoformExpression-PPMISWKT.js +40 -0
  213. package/dist/isoformExpression.unit.spec-ENHCCQRZ.js +208 -0
  214. package/dist/launch.adhoc-XAG6H42J.js +42 -0
  215. package/dist/leftlabel.sample-BSPCI6GR.js +260 -0
  216. package/dist/lollipop-IZJ7E3YO.js +171 -0
  217. package/dist/maf-54XWBQ73.js +452 -0
  218. package/dist/maftimeline-3AJKAFS6.js +593 -0
  219. package/dist/matrix-AJPMHUXG.js +63 -0
  220. package/dist/matrix-ZMXNOESU.js +58 -0
  221. package/dist/matrix.cells-E3LEVA7U.js +28 -0
  222. package/dist/matrix.config-4WLSFMTY.js +41 -0
  223. package/dist/matrix.data-WMOTOB6C.js +25 -0
  224. package/dist/matrix.dom-F7AN3QGE.js +11 -0
  225. package/dist/matrix.groups-BGMZZ6CM.js +27 -0
  226. package/dist/matrix.integration.spec-ENRPVB7R.js +3072 -0
  227. package/dist/matrix.interactivity-IMWERCZF.js +42 -0
  228. package/dist/matrix.layout-5DDZWLNX.js +44 -0
  229. package/dist/matrix.legend-RJAFOZHQ.js +22 -0
  230. package/dist/matrix.renderers-VFQZG5JP.js +38 -0
  231. package/dist/matrix.serieses-GJWHSBG4.js +21 -0
  232. package/dist/matrix.sort-KIJENIT2.js +27 -0
  233. package/dist/matrix.sort.unit.spec-ZA5DRNL6.js +472 -0
  234. package/dist/matrix.sorterUi-3KEDVLGW.js +18 -0
  235. package/dist/matrix.sorterUi.unit.spec-7TPOJ46U.js +342 -0
  236. package/dist/mavb-73BXZ7MO.js +732 -0
  237. package/dist/mds.fimo-L7VVAOXQ.js +518 -0
  238. package/dist/mds.samplescatterplot-6P75XEWB.js +1550 -0
  239. package/dist/mds.survivalplot-GCVE7XGO.js +483 -0
  240. package/dist/numericDictTermCluster-OMXIURRD.js +72 -0
  241. package/dist/oncomatrix-BFWV2IC4.js +295 -0
  242. package/dist/oncomatrix.spec-J6IAY3O6.js +448 -0
  243. package/dist/plot.2dvaf-ESJAB2F3.js +377 -0
  244. package/dist/plot.app-T7CQMBRV.js +41 -0
  245. package/dist/plot.barplot-HAWPMPPU.js +102 -0
  246. package/dist/plot.boxplot-4QUORFXY.js +152 -0
  247. package/dist/plot.brainImaging-HG6I3GJW.js +51 -0
  248. package/dist/plot.disco-LPH7F6YW.js +102 -0
  249. package/dist/plot.dzi-DYAY4D4E.js +33 -0
  250. package/dist/plot.ssgq-CF5VIGYJ.js +139 -0
  251. package/dist/plot.vaf2cov-7HZCKNK6.js +259 -0
  252. package/dist/plot.wsi-MU6AXOWO.js +36 -0
  253. package/dist/polar2-G636L5TB.js +226 -0
  254. package/dist/polar2-G636L5TB.js.map +7 -0
  255. package/dist/profileForms-TIT4JUEJ.js +441 -0
  256. package/dist/profilePlot-QFGRAZQA.js +54 -0
  257. package/dist/proteinView-RZ56F45C.js +1320 -0
  258. package/dist/proteinView-RZ56F45C.js.map +7 -0
  259. package/dist/qualitative-YWP4YUPF.js +43 -0
  260. package/dist/radar2-TKSHL54E.js +321 -0
  261. package/dist/radarFacility2-FHRFLBLF.js +329 -0
  262. package/dist/regression-5XG5LXP7.js +56 -0
  263. package/dist/regression.inputs-QHXK7ZYY.js +48 -0
  264. package/dist/regression.inputs.term-YYO3CR2D.js +48 -0
  265. package/dist/regression.inputs.values.table-3I2FCON2.js +45 -0
  266. package/dist/regression.integration.spec-QVDGCKVT.js +784 -0
  267. package/dist/regression.results-B7LVT2WG.js +40 -0
  268. package/dist/regression.spec-ISYKKQOM.js +708 -0
  269. package/dist/report-TF6Z3Y44.js +222 -0
  270. package/dist/sampleScatter.spec-2VW55XIZ.js +202 -0
  271. package/dist/sampleView-DNNJRAMU.js +48 -0
  272. package/dist/samplelst-726II3LN.js +111 -0
  273. package/dist/samplematrix-TBPW4URH.js +2198 -0
  274. package/dist/sc-GBYH3W4S.js +86 -0
  275. package/dist/scatter-ATUM7AEW.js +849 -0
  276. package/dist/scatter-ATUM7AEW.js.map +7 -0
  277. package/dist/scatter.integration.spec-PDM454O3.js +1197 -0
  278. package/dist/scatter.integration.spec-PDM454O3.js.map +7 -0
  279. package/dist/selectGenomeWithTklst-RCAYDV6D.js +134 -0
  280. package/dist/singleCellCellType-IQYCKUT6.js +38 -0
  281. package/dist/singleCellCellType.unit.spec-ZEWA2IFI.js +160 -0
  282. package/dist/singleCellGeneExpression-STLTBXJQ.js +38 -0
  283. package/dist/singleCellGeneExpression.unit.spec-W6FPS5ZU.js +153 -0
  284. package/dist/singleCellPlot-7XH7NIL4.js +54 -0
  285. package/dist/singlecell-IDZB2MXW.js +86 -0
  286. package/dist/singlecell-JCXR7X5U.js +1572 -0
  287. package/dist/snp-QOKI26PO.js +38 -0
  288. package/dist/snp.unit.spec-DTPZAALW.js +176 -0
  289. package/dist/snplocus-BKUJYANW.js +208 -0
  290. package/dist/spliceevent.a53ss.diagram-4O54ORKZ.js +151 -0
  291. package/dist/spliceevent.exonskip.diagram-KOIOS6IV.js +277 -0
  292. package/dist/spliceevent.noeventdiagram-YGUGQMVE.js +460 -0
  293. package/dist/ssGSEA-UZMBIHVD.js +38 -0
  294. package/dist/ssGSEA.unit.spec-4YO4E3T7.js +88 -0
  295. package/dist/stattable-MDABSW3F.js +90 -0
  296. package/dist/summarizeCnvGeneexp-HV3DHIW4.js +163 -0
  297. package/dist/summarizeGeneexpSurvival-VGPRWYQ5.js +108 -0
  298. package/dist/summarizeMutationCnv-N3JEB4DJ.js +164 -0
  299. package/dist/summarizeMutationDiagnosis-6U4DBLG5.js +40 -0
  300. package/dist/summarizeMutationSurvival-S7NLAVEI.js +99 -0
  301. package/dist/summary-NPR56I4S.js +49 -0
  302. package/dist/summary.integration.spec-HWNJWLKT.js +414 -0
  303. package/dist/summaryInput-DO73NGDQ.js +235 -0
  304. package/dist/sunburst-MMXSGJSL.js +284 -0
  305. package/dist/survival-7AIKFGV5.js +58 -0
  306. package/dist/survival-UK332X6L.js +46 -0
  307. package/dist/survival.integration.spec-YMTEKEGB.js +821 -0
  308. package/dist/svgraph-MLLAYO4A.js +1387 -0
  309. package/dist/svmr-PYW4PLT3.js +3842 -0
  310. package/dist/table-Y3ED2444.js +200 -0
  311. package/dist/termCollection-3XVL75II.js +38 -0
  312. package/dist/termCollection-VAB53YGO.js +179 -0
  313. package/dist/termCollection.unit.spec-DYPWNVEZ.js +208 -0
  314. package/dist/termInfo-6MJDJSDW.js +9 -0
  315. package/dist/tk-GUGJYKJ2.js +46 -0
  316. package/dist/tp.ui-WGETBYJQ.js +1459 -0
  317. package/dist/tvs.dt-JWF4I3KY.js +39 -0
  318. package/dist/tvs.dtcnv.categorical-72Y5QMPL.js +40 -0
  319. package/dist/tvs.dtcnv.continuous-73LHWTU5.js +72 -0
  320. package/dist/tvs.dtfusion-LP6HUMZU.js +40 -0
  321. package/dist/tvs.dtsnvindel-23N2CFZJ.js +40 -0
  322. package/dist/tvs.dtsv-DILQVKYM.js +40 -0
  323. package/dist/tvs.samplelst-GV4VSCRF.js +104 -0
  324. package/dist/tvs.termCollection-KBDNXK7X.js +159 -0
  325. package/dist/violin-TYUP7FB5.js +46 -0
  326. package/dist/violin.integration.spec-ULRFK2A6.js +1425 -0
  327. package/dist/violin.interactivity-2QZVQWQJ.js +38 -0
  328. package/dist/violin.renderer-HCDSN62Z.js +40 -0
  329. package/dist/vocabulary-I4CMPN2Z.js +41 -0
  330. package/package.json +3 -3
  331. package/dist/2dmaf-ZCIOFNSJ.js +0 -1373
  332. package/dist/AIProjectAdmin-Z7EA2Y74.js +0 -829
  333. package/dist/AppHeader-4AZ76NN3.js +0 -835
  334. package/dist/BoxPlot-BFVBNQNR.js +0 -1217
  335. package/dist/BoxPlot-BFVBNQNR.js.map +0 -7
  336. package/dist/CorrelationVolcano-L5VSJWJF.js +0 -619
  337. package/dist/DE-7TPZWAKI.js +0 -95
  338. package/dist/DEinput-WQJEXWGY.js +0 -301
  339. package/dist/DifferentialAnalysis-FPG7RDNN.js +0 -245
  340. package/dist/Disco-WP2BBL5V.js +0 -3237
  341. package/dist/Disco.UI-ZYSUA57E.js +0 -245
  342. package/dist/DmrPlot-V3E7JMPN.js +0 -642
  343. package/dist/DziViewer-ZHAPJ457.js +0 -16332
  344. package/dist/GB-BKLVGYWP.js +0 -1130
  345. package/dist/GeneExpInput-7V72SRDT.js +0 -366
  346. package/dist/HicApp-IT5YNABL.js +0 -2250
  347. package/dist/NumBinaryEditor-7E37MVQO.js +0 -270
  348. package/dist/NumBinaryEditor-7E37MVQO.js.map +0 -7
  349. package/dist/NumBinaryEditor.unit.spec-C3WVAXMY.js +0 -286
  350. package/dist/NumContEditor-FEVZJUB4.js +0 -107
  351. package/dist/NumContEditor-FEVZJUB4.js.map +0 -7
  352. package/dist/NumContEditor.unit.spec-4IGP657P.js +0 -169
  353. package/dist/NumCustomBinEditor-QC4D63Y5.js +0 -38
  354. package/dist/NumCustomBinEditor.unit.spec-USLECMWI.js +0 -284
  355. package/dist/NumDiscreteEditor-PRAI76XQ.js +0 -179
  356. package/dist/NumDiscreteEditor.unit.spec-IWL3OCTC.js +0 -202
  357. package/dist/NumRegularBinEditor-ESL2HAD7.js +0 -38
  358. package/dist/NumRegularBinEditor.unit.spec-7LLZAW4Z.js +0 -227
  359. package/dist/NumSplineEditor-JZOROO36.js +0 -197
  360. package/dist/NumSplineEditor-JZOROO36.js.map +0 -7
  361. package/dist/NumSplineEditor.unit.spec-3SHSXTC7.js +0 -199
  362. package/dist/NumericDensity-SGYRBDCQ.js +0 -38
  363. package/dist/NumericDensity.unit.spec-Y6JMH6IR.js +0 -221
  364. package/dist/NumericHandler-YG7AMINA.js +0 -39
  365. package/dist/NumericHandler.unit.spec-CABSMERN.js +0 -219
  366. package/dist/ProteomeInput-2WPCK72Z.js +0 -396
  367. package/dist/RunChart2-PJWMDWJR.js +0 -758
  368. package/dist/SC-WVVUFPNU.js +0 -936
  369. package/dist/Volcano-7JI4LUSF.js +0 -1379
  370. package/dist/WSIViewer-GDSOEEA6.js +0 -48475
  371. package/dist/WsiSamplesPlot-Z5C3NPF7.js +0 -165
  372. package/dist/adSandbox-KQKENDNQ.js +0 -38
  373. package/dist/alphaGenome-PN2SEPCK.js +0 -175
  374. package/dist/alphaGenome-PN2SEPCK.js.map +0 -7
  375. package/dist/app-4OEY56FN.js +0 -49
  376. package/dist/app-TGMYXJ4E.js +0 -37
  377. package/dist/bam-3IMX42G5.js +0 -860
  378. package/dist/barchart-44HOJWVS.js +0 -47
  379. package/dist/barchart.data-CHNR4XL2.js +0 -22
  380. package/dist/barchart.events-XW5OZ5MR.js +0 -47
  381. package/dist/barchart.integration.spec-M5PACARH.js +0 -1923
  382. package/dist/barchart.integration.spec-M5PACARH.js.map +0 -7
  383. package/dist/barchart2-4NU7NWJZ.js +0 -311
  384. package/dist/block-OYSZ2JXC.js +0 -6202
  385. package/dist/block.init-WSIQLW7A.js +0 -38
  386. package/dist/block.mds.expressionrank-2KWOWDW4.js +0 -359
  387. package/dist/block.mds.geneboxplot-6ZAD6A5K.js +0 -828
  388. package/dist/block.mds.junction-VQDLHFNG.js +0 -1545
  389. package/dist/block.mds.svcnv-7OIRG7DQ.js +0 -6801
  390. package/dist/block.svg-HXAIFHXM.js +0 -164
  391. package/dist/block.tk.aicheck-GTGHCUEN.js +0 -283
  392. package/dist/block.tk.ase-TAEE2ZHN.js +0 -365
  393. package/dist/block.tk.bam-6A26AZ7S.js +0 -1906
  394. package/dist/block.tk.bedgraphdot-6MYIVRBC.js +0 -384
  395. package/dist/block.tk.bigwig.ui-GJ7JXRH3.js +0 -212
  396. package/dist/block.tk.hicstraw-3TCDZ2GM.js +0 -823
  397. package/dist/block.tk.junction-WDBIP7DK.js +0 -2364
  398. package/dist/block.tk.junction.textmatrixui-QOV3U7AN.js +0 -199
  399. package/dist/block.tk.ld-GCPH66C3.js +0 -99
  400. package/dist/block.tk.menu-YDAIYUGC.js +0 -1029
  401. package/dist/block.tk.pgv-RWOZAUGA.js +0 -944
  402. package/dist/brainImaging-ZAFU6U2Y.js +0 -423
  403. package/dist/chunk-34SAHEQU.js +0 -291
  404. package/dist/chunk-3I7TUGLD.js +0 -226
  405. package/dist/chunk-3JL2HBGE.js +0 -2824
  406. package/dist/chunk-3L32ZXRS.js +0 -117
  407. package/dist/chunk-5GMXV4VC.js +0 -5010
  408. package/dist/chunk-5ITQVR2P.js +0 -102
  409. package/dist/chunk-5TKVUSMQ.js +0 -217
  410. package/dist/chunk-5V43Y2RC.js +0 -774
  411. package/dist/chunk-5V43Y2RC.js.map +0 -7
  412. package/dist/chunk-5X6J6UAT.js +0 -473
  413. package/dist/chunk-5YF3LGLX.js +0 -2327
  414. package/dist/chunk-76PGYH5J.js +0 -203
  415. package/dist/chunk-7JXLWRVZ.js +0 -2681
  416. package/dist/chunk-7YWFO7CJ.js +0 -6364
  417. package/dist/chunk-B3M3AZPL.js +0 -215
  418. package/dist/chunk-B3M3AZPL.js.map +0 -7
  419. package/dist/chunk-B4VRYXOQ.js +0 -288
  420. package/dist/chunk-B4VRYXOQ.js.map +0 -7
  421. package/dist/chunk-BLKF2SE6.js +0 -37
  422. package/dist/chunk-CA2AOIHR.js +0 -142
  423. package/dist/chunk-DBFPAZG3.js +0 -1943
  424. package/dist/chunk-DCJUDSRM.js +0 -446
  425. package/dist/chunk-DNM2DKYE.js +0 -1332
  426. package/dist/chunk-DVH6K2NP.js +0 -14
  427. package/dist/chunk-DYVY7D67.js +0 -263
  428. package/dist/chunk-E4IHE23N.js +0 -398
  429. package/dist/chunk-E4IHE23N.js.map +0 -7
  430. package/dist/chunk-G6WVVRDA.js +0 -339
  431. package/dist/chunk-GERVYIL4.js +0 -1210
  432. package/dist/chunk-GKBMGKYN.js +0 -117
  433. package/dist/chunk-GRNZWYOJ.js +0 -815
  434. package/dist/chunk-GS7SQKJT.js +0 -102
  435. package/dist/chunk-H5NNQO2V.js +0 -55
  436. package/dist/chunk-HONXMORI.js +0 -368
  437. package/dist/chunk-HURY7IJE.js +0 -4272
  438. package/dist/chunk-HURY7IJE.js.map +0 -7
  439. package/dist/chunk-HWVEN2MK.js +0 -498
  440. package/dist/chunk-I2RRWDYV.js +0 -514
  441. package/dist/chunk-IFA3COXY.js +0 -185
  442. package/dist/chunk-IFA3COXY.js.map +0 -7
  443. package/dist/chunk-IOQV2VX3.js +0 -2786
  444. package/dist/chunk-IWMWT7O7.js +0 -276
  445. package/dist/chunk-JSEMZPAO.js +0 -34
  446. package/dist/chunk-K7UIR22L.js +0 -229
  447. package/dist/chunk-K7UIR22L.js.map +0 -7
  448. package/dist/chunk-L75HW457.js +0 -824
  449. package/dist/chunk-LO6OYUDE.js +0 -158
  450. package/dist/chunk-LO6OYUDE.js.map +0 -7
  451. package/dist/chunk-LRZ463XM.js +0 -612
  452. package/dist/chunk-LRZ463XM.js.map +0 -7
  453. package/dist/chunk-MQQRTH4U.js +0 -302
  454. package/dist/chunk-NPEQHLVG.js +0 -158
  455. package/dist/chunk-NPTHYZY4.js +0 -205
  456. package/dist/chunk-NZDQV7ZO.js +0 -50
  457. package/dist/chunk-O7Z7SQCS.js +0 -534
  458. package/dist/chunk-OSWTQVAX.js +0 -477
  459. package/dist/chunk-OY4NTIUQ.js +0 -1272
  460. package/dist/chunk-OY4NTIUQ.js.map +0 -7
  461. package/dist/chunk-PKDJVK2F.js +0 -381
  462. package/dist/chunk-PSQETQZZ.js +0 -182
  463. package/dist/chunk-QWOZ2QDM.js +0 -386
  464. package/dist/chunk-QZVCFDJ7.js +0 -736
  465. package/dist/chunk-R4BCNWKE.js +0 -54
  466. package/dist/chunk-RRWP2LM4.js +0 -143
  467. package/dist/chunk-S6H6OUOA.js +0 -283
  468. package/dist/chunk-S6OIEQXG.js +0 -443
  469. package/dist/chunk-SDMZUHN7.js +0 -482
  470. package/dist/chunk-SKZ37PND.js +0 -129
  471. package/dist/chunk-STQU7XZV.js +0 -1814
  472. package/dist/chunk-STQU7XZV.js.map +0 -7
  473. package/dist/chunk-SY63VCQB.js +0 -95
  474. package/dist/chunk-TEQ2PC7Z.js +0 -100
  475. package/dist/chunk-TRY57CMI.js +0 -148
  476. package/dist/chunk-TXJTOTIQ.js +0 -1102
  477. package/dist/chunk-UK3PTE3P.js +0 -20752
  478. package/dist/chunk-UK3PTE3P.js.map +0 -7
  479. package/dist/chunk-UT2PKKQ4.js +0 -254
  480. package/dist/chunk-VDPQ2ZV2.js +0 -95
  481. package/dist/chunk-VJH3NP42.js +0 -54
  482. package/dist/chunk-W3LVNVG3.js +0 -272
  483. package/dist/chunk-WC62ZAWT.js +0 -293
  484. package/dist/chunk-WKMZ4ZQ3.js +0 -407
  485. package/dist/chunk-WKMZ4ZQ3.js.map +0 -7
  486. package/dist/chunk-X27TRPIZ.js +0 -119
  487. package/dist/chunk-XIIAQQ4T.js +0 -1179
  488. package/dist/chunk-XIIAQQ4T.js.map +0 -7
  489. package/dist/chunk-XOCO3LVN.js +0 -317
  490. package/dist/chunk-XOCO3LVN.js.map +0 -7
  491. package/dist/chunk-XUFWJJM5.js +0 -454
  492. package/dist/chunk-XUFWJJM5.js.map +0 -7
  493. package/dist/chunk-Y2Z4XDHA.js +0 -170
  494. package/dist/chunk-YFKJ2TMX.js +0 -194
  495. package/dist/chunk-YPVFTNLG.js +0 -228
  496. package/dist/chunk-YPVFTNLG.js.map +0 -7
  497. package/dist/condition-XKEW2LCM.js +0 -332
  498. package/dist/controls-4RFWTHFH.js +0 -41
  499. package/dist/controls.btns-3QQ5FOKQ.js +0 -9
  500. package/dist/controls.config-VHH2IGCI.js +0 -39
  501. package/dist/correlation-HGAMIIPH.js +0 -99
  502. package/dist/correlation-HGAMIIPH.js.map +0 -7
  503. package/dist/cuminc-EHW6IH6V.js +0 -1149
  504. package/dist/cuminc.integration.spec-B3EOIE4K.js +0 -678
  505. package/dist/customdata.inputui-IPJHL7BX.js +0 -289
  506. package/dist/dataDownload-GYFEC6XG.js +0 -330
  507. package/dist/dataDownload.integration.spec-V7WQ6AMV.js +0 -193
  508. package/dist/databrowser.ui-TFAJVFFF.js +0 -433
  509. package/dist/dictionary-2ZSMOJCN.js +0 -111
  510. package/dist/dnaMethylation-RHNO5DAC.js +0 -38
  511. package/dist/dnaMethylation.integration.spec-ET7OLMNC.js +0 -203
  512. package/dist/dofetch-UGCQ3OVW.js +0 -51
  513. package/dist/e2pca-SLRCDKF5.js +0 -350
  514. package/dist/ep-FOFTKVBH.js +0 -1256
  515. package/dist/expclust.gdc.spec-FNOOSLCC.js +0 -307
  516. package/dist/facet-UO5A7AGS.js +0 -521
  517. package/dist/forms2-SFV4HHBA.js +0 -534
  518. package/dist/gb-3KR6MAGB.js +0 -88
  519. package/dist/geneExpClustering-BCDXKSNU.js +0 -249
  520. package/dist/geneExpression-5UPKETEZ.js +0 -313
  521. package/dist/geneExpression-CXQ5HFEP.js +0 -38
  522. package/dist/geneExpression.unit.spec-7FVVD4UF.js +0 -102
  523. package/dist/geneORA-UC45CL2U.js +0 -278
  524. package/dist/geneRanking-OOQWVUIG.js +0 -551
  525. package/dist/geneVariant-BQFB7LKZ.js +0 -39
  526. package/dist/geneVariant-BYN7EWTT.js +0 -41
  527. package/dist/geneVariant.integration.spec-OESHXKBV.js +0 -198
  528. package/dist/genefusion.ui-TOSPIGTE.js +0 -309
  529. package/dist/geneset-57DECCND.js +0 -208
  530. package/dist/genomeBrowser.spec-CQP5JG35.js +0 -281
  531. package/dist/grin2-3RDGRV4Z.js +0 -846
  532. package/dist/grin2-3RDGRV4Z.js.map +0 -7
  533. package/dist/grin2-G4MBI5UC.js +0 -1560
  534. package/dist/gsea-VYAXSBM4.js +0 -47
  535. package/dist/hierCluster-4QKMY7GP.js +0 -59
  536. package/dist/hierCluster-GFPFVB3Q.js +0 -63
  537. package/dist/hierCluster.config-3A24DEKA.js +0 -40
  538. package/dist/hierCluster.integration.spec-6NTJYVN4.js +0 -395
  539. package/dist/hierCluster.interactivity-B2T6WS5R.js +0 -54
  540. package/dist/hierCluster.renderers-R3RLK6BI.js +0 -21
  541. package/dist/imagePlot-YZBZRENG.js +0 -163
  542. package/dist/importPlot-LIXKD3WJ.js +0 -8
  543. package/dist/isoformExpression-ZZ5DL6AE.js +0 -40
  544. package/dist/isoformExpression.unit.spec-IH4247TT.js +0 -208
  545. package/dist/launch.adhoc-3YWVAF7R.js +0 -42
  546. package/dist/leftlabel.sample-XFM45ZKO.js +0 -260
  547. package/dist/lollipop-7K5R5KHB.js +0 -171
  548. package/dist/maf-SQVJHNUY.js +0 -452
  549. package/dist/maftimeline-RCPASNN2.js +0 -593
  550. package/dist/matrix-KHTDB56P.js +0 -63
  551. package/dist/matrix-YTHWIMBP.js +0 -58
  552. package/dist/matrix.cells-KNDVYI2S.js +0 -28
  553. package/dist/matrix.config-6BHBCTXE.js +0 -41
  554. package/dist/matrix.data-VWJQ7N4L.js +0 -25
  555. package/dist/matrix.dom-2SU4EYLI.js +0 -11
  556. package/dist/matrix.groups-5AUHEO52.js +0 -27
  557. package/dist/matrix.integration.spec-Q2BXNCUO.js +0 -3072
  558. package/dist/matrix.interactivity-FEEWY34M.js +0 -42
  559. package/dist/matrix.layout-FWWM6QQO.js +0 -44
  560. package/dist/matrix.legend-QT3PMREX.js +0 -22
  561. package/dist/matrix.renderers-M6MJO5IU.js +0 -38
  562. package/dist/matrix.serieses-NTKMKT22.js +0 -21
  563. package/dist/matrix.sort-TTHPJ4XC.js +0 -27
  564. package/dist/matrix.sort.unit.spec-XZI2KPNC.js +0 -472
  565. package/dist/matrix.sorterUi-FFLYKBGC.js +0 -18
  566. package/dist/matrix.sorterUi.unit.spec-6FVHTGSN.js +0 -342
  567. package/dist/mavb-FZDN27QY.js +0 -732
  568. package/dist/mds.fimo-SSFKQ3BH.js +0 -518
  569. package/dist/mds.samplescatterplot-BMTTX3TB.js +0 -1550
  570. package/dist/mds.survivalplot-PL75RDYI.js +0 -483
  571. package/dist/numericDictTermCluster-NJUXCQYH.js +0 -72
  572. package/dist/oncomatrix-BZDCCEWH.js +0 -295
  573. package/dist/oncomatrix.spec-5A4A4JLV.js +0 -448
  574. package/dist/plot.2dvaf-AC7LW56S.js +0 -377
  575. package/dist/plot.app-DOOWDQ3U.js +0 -41
  576. package/dist/plot.barplot-RNJWREG5.js +0 -102
  577. package/dist/plot.boxplot-CRAEUBQF.js +0 -152
  578. package/dist/plot.brainImaging-ZESEULN6.js +0 -51
  579. package/dist/plot.disco-B4KBP6RK.js +0 -102
  580. package/dist/plot.dzi-2UMRV6IF.js +0 -33
  581. package/dist/plot.ssgq-FVZ27Z2K.js +0 -139
  582. package/dist/plot.vaf2cov-3OXCIEAX.js +0 -259
  583. package/dist/plot.wsi-UKTLZSYW.js +0 -36
  584. package/dist/polar2-D6T34ONJ.js +0 -226
  585. package/dist/polar2-D6T34ONJ.js.map +0 -7
  586. package/dist/profileForms-SBNPRIFT.js +0 -441
  587. package/dist/profilePlot-PPI4IDP4.js +0 -54
  588. package/dist/proteinView-URQEZSH5.js +0 -1320
  589. package/dist/proteinView-URQEZSH5.js.map +0 -7
  590. package/dist/qualitative-4O6KAGEA.js +0 -43
  591. package/dist/radar2-ICKCJY4T.js +0 -321
  592. package/dist/radarFacility2-HEBBSM3T.js +0 -329
  593. package/dist/regression-YFQJE2EP.js +0 -56
  594. package/dist/regression.inputs-A2JVBVZ7.js +0 -48
  595. package/dist/regression.inputs.term-CTVNS5MO.js +0 -48
  596. package/dist/regression.inputs.values.table-X7SI6EDO.js +0 -45
  597. package/dist/regression.integration.spec-NRDEVBWS.js +0 -784
  598. package/dist/regression.results-XVB6CIGW.js +0 -40
  599. package/dist/regression.spec-TNB5HBY5.js +0 -708
  600. package/dist/report-5VDIBC2W.js +0 -222
  601. package/dist/sampleScatter.spec-XDW7SCYA.js +0 -202
  602. package/dist/sampleView-FLUSGZCM.js +0 -48
  603. package/dist/samplelst-4WPG5UBN.js +0 -111
  604. package/dist/samplematrix-YJGMSXUJ.js +0 -2198
  605. package/dist/sc-DHU5KSEJ.js +0 -86
  606. package/dist/scatter-UZMWX3DU.js +0 -854
  607. package/dist/scatter-UZMWX3DU.js.map +0 -7
  608. package/dist/scatter.integration.spec-YX5OC3L2.js +0 -1196
  609. package/dist/scatter.integration.spec-YX5OC3L2.js.map +0 -7
  610. package/dist/selectGenomeWithTklst-BVBMVRMQ.js +0 -134
  611. package/dist/singleCellCellType-DADK5UKZ.js +0 -38
  612. package/dist/singleCellCellType.unit.spec-X25RMBJ3.js +0 -160
  613. package/dist/singleCellGeneExpression-3UEZWI4E.js +0 -38
  614. package/dist/singleCellGeneExpression.unit.spec-5GU3JWE6.js +0 -153
  615. package/dist/singleCellPlot-TFRZG73T.js +0 -54
  616. package/dist/singlecell-HQH6EWJO.js +0 -1572
  617. package/dist/singlecell-KR6JYFAY.js +0 -86
  618. package/dist/snp-ACIZ7D5X.js +0 -38
  619. package/dist/snp.unit.spec-653HGJBM.js +0 -176
  620. package/dist/snplocus-AH6KJCVN.js +0 -208
  621. package/dist/spliceevent.a53ss.diagram-MKJLJDOG.js +0 -151
  622. package/dist/spliceevent.exonskip.diagram-PSEVCDH4.js +0 -277
  623. package/dist/spliceevent.noeventdiagram-T2LHGFN7.js +0 -460
  624. package/dist/ssGSEA-QFMYBITZ.js +0 -38
  625. package/dist/ssGSEA.unit.spec-SQW7KFWE.js +0 -88
  626. package/dist/stattable-QDIUQCMG.js +0 -90
  627. package/dist/summarizeCnvGeneexp-EVRTBY3L.js +0 -163
  628. package/dist/summarizeGeneexpSurvival-O3MGRS6K.js +0 -108
  629. package/dist/summarizeMutationCnv-RZ2DZ2XO.js +0 -164
  630. package/dist/summarizeMutationDiagnosis-V2DISQTC.js +0 -40
  631. package/dist/summarizeMutationSurvival-FTTWJBUG.js +0 -99
  632. package/dist/summary-QKBTZINC.js +0 -49
  633. package/dist/summary.integration.spec-54HA7BC2.js +0 -414
  634. package/dist/summaryInput-4RLZT6RW.js +0 -235
  635. package/dist/sunburst-SMKD45XD.js +0 -284
  636. package/dist/survival-BAW5ME6J.js +0 -46
  637. package/dist/survival-YQNA3WP7.js +0 -58
  638. package/dist/survival.integration.spec-2AHXNMH2.js +0 -821
  639. package/dist/svgraph-5Z7VAIVR.js +0 -1387
  640. package/dist/svmr-PHD76RV4.js +0 -3842
  641. package/dist/table-GMRAOIWZ.js +0 -200
  642. package/dist/termCollection-MEBY34TJ.js +0 -179
  643. package/dist/termCollection-QLKTRXUR.js +0 -38
  644. package/dist/termCollection.unit.spec-6B53SW2Q.js +0 -208
  645. package/dist/termInfo-2Z4V2QLE.js +0 -9
  646. package/dist/tk-X46SEOL7.js +0 -46
  647. package/dist/tp.ui-XV7CL7CA.js +0 -1459
  648. package/dist/tvs.dt-U6SIZTXW.js +0 -39
  649. package/dist/tvs.dtcnv.categorical-6YGEKMHW.js +0 -40
  650. package/dist/tvs.dtcnv.continuous-CQFEENBO.js +0 -72
  651. package/dist/tvs.dtfusion-NOBT2JPI.js +0 -40
  652. package/dist/tvs.dtsnvindel-6GTCSVAV.js +0 -40
  653. package/dist/tvs.dtsv-PMI4YVI5.js +0 -40
  654. package/dist/tvs.samplelst-HVNYKHXG.js +0 -104
  655. package/dist/tvs.termCollection-EWGTT75Z.js +0 -159
  656. package/dist/violin-MKWRB25Z.js +0 -46
  657. package/dist/violin.integration.spec-CNWJ43SD.js +0 -1425
  658. package/dist/violin.interactivity-UXOMTGSD.js +0 -38
  659. package/dist/violin.renderer-67Q6YGYQ.js +0 -40
  660. package/dist/vocabulary-AKXE7SNU.js +0 -41
  661. /package/dist/{2dmaf-ZCIOFNSJ.js.map → 2dmaf-V4WJ2LEK.js.map} +0 -0
  662. /package/dist/{AIProjectAdmin-Z7EA2Y74.js.map → AIProjectAdmin-JMN5O6YU.js.map} +0 -0
  663. /package/dist/{AppHeader-4AZ76NN3.js.map → AppHeader-Y4SEKCEF.js.map} +0 -0
  664. /package/dist/{CorrelationVolcano-L5VSJWJF.js.map → CorrelationVolcano-R5IWD6WA.js.map} +0 -0
  665. /package/dist/{DE-7TPZWAKI.js.map → DE-ZV6O7B6Y.js.map} +0 -0
  666. /package/dist/{DEinput-WQJEXWGY.js.map → DEinput-FTOALZKN.js.map} +0 -0
  667. /package/dist/{DifferentialAnalysis-FPG7RDNN.js.map → DifferentialAnalysis-NLCA766A.js.map} +0 -0
  668. /package/dist/{Disco-WP2BBL5V.js.map → Disco-Y5Z4A7GN.js.map} +0 -0
  669. /package/dist/{Disco.UI-ZYSUA57E.js.map → Disco.UI-GSWZYIUT.js.map} +0 -0
  670. /package/dist/{DmrPlot-V3E7JMPN.js.map → DmrPlot-FEFUCIGT.js.map} +0 -0
  671. /package/dist/{DziViewer-ZHAPJ457.js.map → DziViewer-6737GC22.js.map} +0 -0
  672. /package/dist/{GB-BKLVGYWP.js.map → GB-AOXF2JJB.js.map} +0 -0
  673. /package/dist/{GeneExpInput-7V72SRDT.js.map → GeneExpInput-CXYRKQU7.js.map} +0 -0
  674. /package/dist/{HicApp-IT5YNABL.js.map → HicApp-GLNNZ4H5.js.map} +0 -0
  675. /package/dist/{NumBinaryEditor.unit.spec-C3WVAXMY.js.map → NumBinaryEditor.unit.spec-3VTJLILH.js.map} +0 -0
  676. /package/dist/{NumContEditor.unit.spec-4IGP657P.js.map → NumContEditor.unit.spec-WIMYCOVO.js.map} +0 -0
  677. /package/dist/{NumCustomBinEditor-QC4D63Y5.js.map → NumCustomBinEditor-XIOAYWOD.js.map} +0 -0
  678. /package/dist/{NumCustomBinEditor.unit.spec-USLECMWI.js.map → NumCustomBinEditor.unit.spec-N5OV6MKR.js.map} +0 -0
  679. /package/dist/{NumDiscreteEditor-PRAI76XQ.js.map → NumDiscreteEditor-AT6FKYGI.js.map} +0 -0
  680. /package/dist/{NumDiscreteEditor.unit.spec-IWL3OCTC.js.map → NumDiscreteEditor.unit.spec-BDR5GZ46.js.map} +0 -0
  681. /package/dist/{NumRegularBinEditor-ESL2HAD7.js.map → NumRegularBinEditor-Z4NBS4VZ.js.map} +0 -0
  682. /package/dist/{NumRegularBinEditor.unit.spec-7LLZAW4Z.js.map → NumRegularBinEditor.unit.spec-BRWYNQ55.js.map} +0 -0
  683. /package/dist/{NumSplineEditor.unit.spec-3SHSXTC7.js.map → NumSplineEditor.unit.spec-5RDBCZ4N.js.map} +0 -0
  684. /package/dist/{NumericDensity-SGYRBDCQ.js.map → NumericDensity-L7HIVV7D.js.map} +0 -0
  685. /package/dist/{NumericDensity.unit.spec-Y6JMH6IR.js.map → NumericDensity.unit.spec-PL3XDJCV.js.map} +0 -0
  686. /package/dist/{NumericHandler-YG7AMINA.js.map → NumericHandler-KJYZOCCG.js.map} +0 -0
  687. /package/dist/{NumericHandler.unit.spec-CABSMERN.js.map → NumericHandler.unit.spec-VC7NPLJW.js.map} +0 -0
  688. /package/dist/{ProteomeInput-2WPCK72Z.js.map → ProteomeInput-A3GRPIAH.js.map} +0 -0
  689. /package/dist/{RunChart2-PJWMDWJR.js.map → RunChart2-MSNU3ZNT.js.map} +0 -0
  690. /package/dist/{SC-WVVUFPNU.js.map → SC-FNKG2FK5.js.map} +0 -0
  691. /package/dist/{Volcano-7JI4LUSF.js.map → Volcano-IRJMPHXJ.js.map} +0 -0
  692. /package/dist/{WSIViewer-GDSOEEA6.js.map → WSIViewer-KITT7I67.js.map} +0 -0
  693. /package/dist/{WsiSamplesPlot-Z5C3NPF7.js.map → WsiSamplesPlot-G3YZ6SIE.js.map} +0 -0
  694. /package/dist/{adSandbox-KQKENDNQ.js.map → adSandbox-GIQTJ4VA.js.map} +0 -0
  695. /package/dist/{app-4OEY56FN.js.map → app-MGNEMS2K.js.map} +0 -0
  696. /package/dist/{app-TGMYXJ4E.js.map → app-UQTHPQFD.js.map} +0 -0
  697. /package/dist/{bam-3IMX42G5.js.map → bam-5PROQBRT.js.map} +0 -0
  698. /package/dist/{barchart-44HOJWVS.js.map → barchart-BQYJ73Z4.js.map} +0 -0
  699. /package/dist/{barchart.data-CHNR4XL2.js.map → barchart.data-VFULOIHY.js.map} +0 -0
  700. /package/dist/{barchart.events-XW5OZ5MR.js.map → barchart.events-W2CIDD4B.js.map} +0 -0
  701. /package/dist/{barchart2-4NU7NWJZ.js.map → barchart2-V6W4UAFH.js.map} +0 -0
  702. /package/dist/{block-OYSZ2JXC.js.map → block-5V2FCT7Q.js.map} +0 -0
  703. /package/dist/{block.init-WSIQLW7A.js.map → block.init-43IUNDNB.js.map} +0 -0
  704. /package/dist/{block.mds.expressionrank-2KWOWDW4.js.map → block.mds.expressionrank-LI6MZPBE.js.map} +0 -0
  705. /package/dist/{block.mds.geneboxplot-6ZAD6A5K.js.map → block.mds.geneboxplot-673AIJMJ.js.map} +0 -0
  706. /package/dist/{block.mds.junction-VQDLHFNG.js.map → block.mds.junction-UWNVNV3X.js.map} +0 -0
  707. /package/dist/{block.mds.svcnv-7OIRG7DQ.js.map → block.mds.svcnv-Z5VFCUUE.js.map} +0 -0
  708. /package/dist/{block.svg-HXAIFHXM.js.map → block.svg-MGK4GWLL.js.map} +0 -0
  709. /package/dist/{block.tk.aicheck-GTGHCUEN.js.map → block.tk.aicheck-OFNDGG7Q.js.map} +0 -0
  710. /package/dist/{block.tk.ase-TAEE2ZHN.js.map → block.tk.ase-IDZQY7MW.js.map} +0 -0
  711. /package/dist/{block.tk.bam-6A26AZ7S.js.map → block.tk.bam-K7A2Q5NI.js.map} +0 -0
  712. /package/dist/{block.tk.bedgraphdot-6MYIVRBC.js.map → block.tk.bedgraphdot-PPTKCCPK.js.map} +0 -0
  713. /package/dist/{block.tk.bigwig.ui-GJ7JXRH3.js.map → block.tk.bigwig.ui-PI6EAU43.js.map} +0 -0
  714. /package/dist/{block.tk.hicstraw-3TCDZ2GM.js.map → block.tk.hicstraw-EZ2GS2K4.js.map} +0 -0
  715. /package/dist/{block.tk.junction-WDBIP7DK.js.map → block.tk.junction-4WSLQGSQ.js.map} +0 -0
  716. /package/dist/{block.tk.junction.textmatrixui-QOV3U7AN.js.map → block.tk.junction.textmatrixui-7EJUSVMB.js.map} +0 -0
  717. /package/dist/{block.tk.ld-GCPH66C3.js.map → block.tk.ld-KLVO7M37.js.map} +0 -0
  718. /package/dist/{block.tk.menu-YDAIYUGC.js.map → block.tk.menu-KZSL7BAR.js.map} +0 -0
  719. /package/dist/{block.tk.pgv-RWOZAUGA.js.map → block.tk.pgv-NYWGB4VH.js.map} +0 -0
  720. /package/dist/{brainImaging-ZAFU6U2Y.js.map → brainImaging-MTIIMJHW.js.map} +0 -0
  721. /package/dist/{chunk-S6OIEQXG.js.map → chunk-2NQLAH3L.js.map} +0 -0
  722. /package/dist/{chunk-DBFPAZG3.js.map → chunk-2Q6PBSPS.js.map} +0 -0
  723. /package/dist/{chunk-GERVYIL4.js.map → chunk-3D5GZIGG.js.map} +0 -0
  724. /package/dist/{chunk-DYVY7D67.js.map → chunk-3TPAIXNL.js.map} +0 -0
  725. /package/dist/{chunk-SY63VCQB.js.map → chunk-42EBECOD.js.map} +0 -0
  726. /package/dist/{chunk-IOQV2VX3.js.map → chunk-4B42QV34.js.map} +0 -0
  727. /package/dist/{chunk-RRWP2LM4.js.map → chunk-4KY4XKJV.js.map} +0 -0
  728. /package/dist/{chunk-TEQ2PC7Z.js.map → chunk-5SXCIKYV.js.map} +0 -0
  729. /package/dist/{chunk-SDMZUHN7.js.map → chunk-647P2I4Q.js.map} +0 -0
  730. /package/dist/{chunk-5YF3LGLX.js.map → chunk-67HSIHPP.js.map} +0 -0
  731. /package/dist/{chunk-TXJTOTIQ.js.map → chunk-6GZJCSA6.js.map} +0 -0
  732. /package/dist/{chunk-GS7SQKJT.js.map → chunk-7JEKUSEL.js.map} +0 -0
  733. /package/dist/{chunk-OSWTQVAX.js.map → chunk-BMO6KSVC.js.map} +0 -0
  734. /package/dist/{chunk-NZDQV7ZO.js.map → chunk-CKDC326M.js.map} +0 -0
  735. /package/dist/{chunk-DCJUDSRM.js.map → chunk-CRUBP5PT.js.map} +0 -0
  736. /package/dist/{chunk-S6H6OUOA.js.map → chunk-CW2Q5EA7.js.map} +0 -0
  737. /package/dist/{chunk-7YWFO7CJ.js.map → chunk-CYHUNQMS.js.map} +0 -0
  738. /package/dist/{chunk-HWVEN2MK.js.map → chunk-DHPLHIVP.js.map} +0 -0
  739. /package/dist/{chunk-PKDJVK2F.js.map → chunk-DWCVGCBX.js.map} +0 -0
  740. /package/dist/{chunk-G6WVVRDA.js.map → chunk-EIBNV236.js.map} +0 -0
  741. /package/dist/{chunk-5TKVUSMQ.js.map → chunk-EZ3WMXYT.js.map} +0 -0
  742. /package/dist/{chunk-QZVCFDJ7.js.map → chunk-F5QIZOPL.js.map} +0 -0
  743. /package/dist/{chunk-BLKF2SE6.js.map → chunk-F6N6JBZR.js.map} +0 -0
  744. /package/dist/{chunk-VJH3NP42.js.map → chunk-FXMHSVBS.js.map} +0 -0
  745. /package/dist/{chunk-3I7TUGLD.js.map → chunk-FZ63VOSX.js.map} +0 -0
  746. /package/dist/{chunk-DNM2DKYE.js.map → chunk-GMT2GNQY.js.map} +0 -0
  747. /package/dist/{chunk-5X6J6UAT.js.map → chunk-IIT367QZ.js.map} +0 -0
  748. /package/dist/{chunk-WC62ZAWT.js.map → chunk-IL5QT2FI.js.map} +0 -0
  749. /package/dist/{chunk-7JXLWRVZ.js.map → chunk-J6GLTYGJ.js.map} +0 -0
  750. /package/dist/{chunk-QWOZ2QDM.js.map → chunk-JEZIKGZI.js.map} +0 -0
  751. /package/dist/{chunk-L75HW457.js.map → chunk-JJOLDYSQ.js.map} +0 -0
  752. /package/dist/{chunk-JSEMZPAO.js.map → chunk-KSCJWPTJ.js.map} +0 -0
  753. /package/dist/{chunk-W3LVNVG3.js.map → chunk-LT5XPBIX.js.map} +0 -0
  754. /package/dist/{chunk-PSQETQZZ.js.map → chunk-MEGBYD4U.js.map} +0 -0
  755. /package/dist/{chunk-Y2Z4XDHA.js.map → chunk-MEY5OBDJ.js.map} +0 -0
  756. /package/dist/{chunk-TRY57CMI.js.map → chunk-NVX26LFC.js.map} +0 -0
  757. /package/dist/{chunk-34SAHEQU.js.map → chunk-O7NFSCEW.js.map} +0 -0
  758. /package/dist/{chunk-HONXMORI.js.map → chunk-P4QGOUDH.js.map} +0 -0
  759. /package/dist/{chunk-SKZ37PND.js.map → chunk-PGBKZ76Y.js.map} +0 -0
  760. /package/dist/{chunk-NPTHYZY4.js.map → chunk-PQNVPSQR.js.map} +0 -0
  761. /package/dist/{chunk-R4BCNWKE.js.map → chunk-PQZ3A27I.js.map} +0 -0
  762. /package/dist/{chunk-5GMXV4VC.js.map → chunk-QNMB7LYW.js.map} +0 -0
  763. /package/dist/{chunk-3L32ZXRS.js.map → chunk-RZGEKL77.js.map} +0 -0
  764. /package/dist/{chunk-NPEQHLVG.js.map → chunk-RZY34QRF.js.map} +0 -0
  765. /package/dist/{chunk-DVH6K2NP.js.map → chunk-SDACELDR.js.map} +0 -0
  766. /package/dist/{chunk-CA2AOIHR.js.map → chunk-UCLROZRF.js.map} +0 -0
  767. /package/dist/{chunk-IWMWT7O7.js.map → chunk-VMLSRKIB.js.map} +0 -0
  768. /package/dist/{chunk-O7Z7SQCS.js.map → chunk-VXKO2ONI.js.map} +0 -0
  769. /package/dist/{chunk-GKBMGKYN.js.map → chunk-WET4LPLO.js.map} +0 -0
  770. /package/dist/{chunk-UT2PKKQ4.js.map → chunk-WMELUFVS.js.map} +0 -0
  771. /package/dist/{chunk-X27TRPIZ.js.map → chunk-WS3NUPNV.js.map} +0 -0
  772. /package/dist/{chunk-I2RRWDYV.js.map → chunk-X63AAJGT.js.map} +0 -0
  773. /package/dist/{chunk-GRNZWYOJ.js.map → chunk-XVZ5UJWU.js.map} +0 -0
  774. /package/dist/{chunk-3JL2HBGE.js.map → chunk-YNBT4N6T.js.map} +0 -0
  775. /package/dist/{chunk-H5NNQO2V.js.map → chunk-YVCTEEVQ.js.map} +0 -0
  776. /package/dist/{chunk-76PGYH5J.js.map → chunk-YWZCJMHS.js.map} +0 -0
  777. /package/dist/{chunk-5ITQVR2P.js.map → chunk-Z3SC67OA.js.map} +0 -0
  778. /package/dist/{chunk-YFKJ2TMX.js.map → chunk-ZK226W6V.js.map} +0 -0
  779. /package/dist/{chunk-MQQRTH4U.js.map → chunk-ZLREFIZB.js.map} +0 -0
  780. /package/dist/{chunk-VDPQ2ZV2.js.map → chunk-ZX2ISBEF.js.map} +0 -0
  781. /package/dist/{condition-XKEW2LCM.js.map → condition-P2XD32QM.js.map} +0 -0
  782. /package/dist/{controls-4RFWTHFH.js.map → controls-FZUTJPKV.js.map} +0 -0
  783. /package/dist/{controls.btns-3QQ5FOKQ.js.map → controls.btns-AP67YWKW.js.map} +0 -0
  784. /package/dist/{controls.config-VHH2IGCI.js.map → controls.config-TEFY3NTE.js.map} +0 -0
  785. /package/dist/{cuminc-EHW6IH6V.js.map → cuminc-42GBJHD3.js.map} +0 -0
  786. /package/dist/{cuminc.integration.spec-B3EOIE4K.js.map → cuminc.integration.spec-BAY4JHVL.js.map} +0 -0
  787. /package/dist/{customdata.inputui-IPJHL7BX.js.map → customdata.inputui-IPM5K56K.js.map} +0 -0
  788. /package/dist/{dataDownload-GYFEC6XG.js.map → dataDownload-D7VCYBDT.js.map} +0 -0
  789. /package/dist/{dataDownload.integration.spec-V7WQ6AMV.js.map → dataDownload.integration.spec-SEBY2BIX.js.map} +0 -0
  790. /package/dist/{databrowser.ui-TFAJVFFF.js.map → databrowser.ui-5OC5MPZB.js.map} +0 -0
  791. /package/dist/{dictionary-2ZSMOJCN.js.map → dictionary-VVRWVLJX.js.map} +0 -0
  792. /package/dist/{dnaMethylation-RHNO5DAC.js.map → dnaMethylation-72IS3FRI.js.map} +0 -0
  793. /package/dist/{dnaMethylation.integration.spec-ET7OLMNC.js.map → dnaMethylation.integration.spec-U2LLSDGE.js.map} +0 -0
  794. /package/dist/{dofetch-UGCQ3OVW.js.map → dofetch-5ZRAQH5F.js.map} +0 -0
  795. /package/dist/{e2pca-SLRCDKF5.js.map → e2pca-AR6EKEJA.js.map} +0 -0
  796. /package/dist/{ep-FOFTKVBH.js.map → ep-JS5UUJQX.js.map} +0 -0
  797. /package/dist/{expclust.gdc.spec-FNOOSLCC.js.map → expclust.gdc.spec-73MGQ7RN.js.map} +0 -0
  798. /package/dist/{facet-UO5A7AGS.js.map → facet-AR3QKHCY.js.map} +0 -0
  799. /package/dist/{forms2-SFV4HHBA.js.map → forms2-UXEI7MUP.js.map} +0 -0
  800. /package/dist/{gb-3KR6MAGB.js.map → gb-RHDVYU2V.js.map} +0 -0
  801. /package/dist/{geneExpClustering-BCDXKSNU.js.map → geneExpClustering-L6KLCMPH.js.map} +0 -0
  802. /package/dist/{geneExpression-5UPKETEZ.js.map → geneExpression-GYT2XRE6.js.map} +0 -0
  803. /package/dist/{geneExpression-CXQ5HFEP.js.map → geneExpression-SKIU3NEP.js.map} +0 -0
  804. /package/dist/{geneExpression.unit.spec-7FVVD4UF.js.map → geneExpression.unit.spec-CWR6KDVK.js.map} +0 -0
  805. /package/dist/{geneORA-UC45CL2U.js.map → geneORA-C3TALK5P.js.map} +0 -0
  806. /package/dist/{geneRanking-OOQWVUIG.js.map → geneRanking-LLYLDPLV.js.map} +0 -0
  807. /package/dist/{geneVariant-BQFB7LKZ.js.map → geneVariant-PUSKBHPY.js.map} +0 -0
  808. /package/dist/{geneVariant-BYN7EWTT.js.map → geneVariant-YFMU6PHM.js.map} +0 -0
  809. /package/dist/{geneVariant.integration.spec-OESHXKBV.js.map → geneVariant.integration.spec-EJ5V46OQ.js.map} +0 -0
  810. /package/dist/{genefusion.ui-TOSPIGTE.js.map → genefusion.ui-XUHSKQKW.js.map} +0 -0
  811. /package/dist/{geneset-57DECCND.js.map → geneset-DEL5LXFZ.js.map} +0 -0
  812. /package/dist/{genomeBrowser.spec-CQP5JG35.js.map → genomeBrowser.spec-W5TVHOUJ.js.map} +0 -0
  813. /package/dist/{grin2-G4MBI5UC.js.map → grin2-FXAEGECD.js.map} +0 -0
  814. /package/dist/{gsea-VYAXSBM4.js.map → gsea-CNL6SHH5.js.map} +0 -0
  815. /package/dist/{hierCluster-4QKMY7GP.js.map → hierCluster-7V65PMIW.js.map} +0 -0
  816. /package/dist/{hierCluster-GFPFVB3Q.js.map → hierCluster-C44GHM4B.js.map} +0 -0
  817. /package/dist/{hierCluster.config-3A24DEKA.js.map → hierCluster.config-RU5JDPWM.js.map} +0 -0
  818. /package/dist/{hierCluster.integration.spec-6NTJYVN4.js.map → hierCluster.integration.spec-6YH5KE4H.js.map} +0 -0
  819. /package/dist/{hierCluster.interactivity-B2T6WS5R.js.map → hierCluster.interactivity-PK2L7BSW.js.map} +0 -0
  820. /package/dist/{hierCluster.renderers-R3RLK6BI.js.map → hierCluster.renderers-G3274UYA.js.map} +0 -0
  821. /package/dist/{imagePlot-YZBZRENG.js.map → imagePlot-5SEDMPBP.js.map} +0 -0
  822. /package/dist/{importPlot-LIXKD3WJ.js.map → importPlot-M3MKWRON.js.map} +0 -0
  823. /package/dist/{isoformExpression-ZZ5DL6AE.js.map → isoformExpression-PPMISWKT.js.map} +0 -0
  824. /package/dist/{isoformExpression.unit.spec-IH4247TT.js.map → isoformExpression.unit.spec-ENHCCQRZ.js.map} +0 -0
  825. /package/dist/{launch.adhoc-3YWVAF7R.js.map → launch.adhoc-XAG6H42J.js.map} +0 -0
  826. /package/dist/{leftlabel.sample-XFM45ZKO.js.map → leftlabel.sample-BSPCI6GR.js.map} +0 -0
  827. /package/dist/{lollipop-7K5R5KHB.js.map → lollipop-IZJ7E3YO.js.map} +0 -0
  828. /package/dist/{maf-SQVJHNUY.js.map → maf-54XWBQ73.js.map} +0 -0
  829. /package/dist/{maftimeline-RCPASNN2.js.map → maftimeline-3AJKAFS6.js.map} +0 -0
  830. /package/dist/{matrix-KHTDB56P.js.map → matrix-AJPMHUXG.js.map} +0 -0
  831. /package/dist/{matrix-YTHWIMBP.js.map → matrix-ZMXNOESU.js.map} +0 -0
  832. /package/dist/{matrix.cells-KNDVYI2S.js.map → matrix.cells-E3LEVA7U.js.map} +0 -0
  833. /package/dist/{matrix.config-6BHBCTXE.js.map → matrix.config-4WLSFMTY.js.map} +0 -0
  834. /package/dist/{matrix.data-VWJQ7N4L.js.map → matrix.data-WMOTOB6C.js.map} +0 -0
  835. /package/dist/{matrix.dom-2SU4EYLI.js.map → matrix.dom-F7AN3QGE.js.map} +0 -0
  836. /package/dist/{matrix.groups-5AUHEO52.js.map → matrix.groups-BGMZZ6CM.js.map} +0 -0
  837. /package/dist/{matrix.integration.spec-Q2BXNCUO.js.map → matrix.integration.spec-ENRPVB7R.js.map} +0 -0
  838. /package/dist/{matrix.interactivity-FEEWY34M.js.map → matrix.interactivity-IMWERCZF.js.map} +0 -0
  839. /package/dist/{matrix.layout-FWWM6QQO.js.map → matrix.layout-5DDZWLNX.js.map} +0 -0
  840. /package/dist/{matrix.legend-QT3PMREX.js.map → matrix.legend-RJAFOZHQ.js.map} +0 -0
  841. /package/dist/{matrix.renderers-M6MJO5IU.js.map → matrix.renderers-VFQZG5JP.js.map} +0 -0
  842. /package/dist/{matrix.serieses-NTKMKT22.js.map → matrix.serieses-GJWHSBG4.js.map} +0 -0
  843. /package/dist/{matrix.sort-TTHPJ4XC.js.map → matrix.sort-KIJENIT2.js.map} +0 -0
  844. /package/dist/{matrix.sort.unit.spec-XZI2KPNC.js.map → matrix.sort.unit.spec-ZA5DRNL6.js.map} +0 -0
  845. /package/dist/{matrix.sorterUi-FFLYKBGC.js.map → matrix.sorterUi-3KEDVLGW.js.map} +0 -0
  846. /package/dist/{matrix.sorterUi.unit.spec-6FVHTGSN.js.map → matrix.sorterUi.unit.spec-7TPOJ46U.js.map} +0 -0
  847. /package/dist/{mavb-FZDN27QY.js.map → mavb-73BXZ7MO.js.map} +0 -0
  848. /package/dist/{mds.fimo-SSFKQ3BH.js.map → mds.fimo-L7VVAOXQ.js.map} +0 -0
  849. /package/dist/{mds.samplescatterplot-BMTTX3TB.js.map → mds.samplescatterplot-6P75XEWB.js.map} +0 -0
  850. /package/dist/{mds.survivalplot-PL75RDYI.js.map → mds.survivalplot-GCVE7XGO.js.map} +0 -0
  851. /package/dist/{numericDictTermCluster-NJUXCQYH.js.map → numericDictTermCluster-OMXIURRD.js.map} +0 -0
  852. /package/dist/{oncomatrix-BZDCCEWH.js.map → oncomatrix-BFWV2IC4.js.map} +0 -0
  853. /package/dist/{oncomatrix.spec-5A4A4JLV.js.map → oncomatrix.spec-J6IAY3O6.js.map} +0 -0
  854. /package/dist/{plot.2dvaf-AC7LW56S.js.map → plot.2dvaf-ESJAB2F3.js.map} +0 -0
  855. /package/dist/{plot.app-DOOWDQ3U.js.map → plot.app-T7CQMBRV.js.map} +0 -0
  856. /package/dist/{plot.barplot-RNJWREG5.js.map → plot.barplot-HAWPMPPU.js.map} +0 -0
  857. /package/dist/{plot.boxplot-CRAEUBQF.js.map → plot.boxplot-4QUORFXY.js.map} +0 -0
  858. /package/dist/{plot.brainImaging-ZESEULN6.js.map → plot.brainImaging-HG6I3GJW.js.map} +0 -0
  859. /package/dist/{plot.disco-B4KBP6RK.js.map → plot.disco-LPH7F6YW.js.map} +0 -0
  860. /package/dist/{plot.dzi-2UMRV6IF.js.map → plot.dzi-DYAY4D4E.js.map} +0 -0
  861. /package/dist/{plot.ssgq-FVZ27Z2K.js.map → plot.ssgq-CF5VIGYJ.js.map} +0 -0
  862. /package/dist/{plot.vaf2cov-3OXCIEAX.js.map → plot.vaf2cov-7HZCKNK6.js.map} +0 -0
  863. /package/dist/{plot.wsi-UKTLZSYW.js.map → plot.wsi-MU6AXOWO.js.map} +0 -0
  864. /package/dist/{profileForms-SBNPRIFT.js.map → profileForms-TIT4JUEJ.js.map} +0 -0
  865. /package/dist/{profilePlot-PPI4IDP4.js.map → profilePlot-QFGRAZQA.js.map} +0 -0
  866. /package/dist/{qualitative-4O6KAGEA.js.map → qualitative-YWP4YUPF.js.map} +0 -0
  867. /package/dist/{radar2-ICKCJY4T.js.map → radar2-TKSHL54E.js.map} +0 -0
  868. /package/dist/{radarFacility2-HEBBSM3T.js.map → radarFacility2-FHRFLBLF.js.map} +0 -0
  869. /package/dist/{regression-YFQJE2EP.js.map → regression-5XG5LXP7.js.map} +0 -0
  870. /package/dist/{regression.inputs-A2JVBVZ7.js.map → regression.inputs-QHXK7ZYY.js.map} +0 -0
  871. /package/dist/{regression.inputs.term-CTVNS5MO.js.map → regression.inputs.term-YYO3CR2D.js.map} +0 -0
  872. /package/dist/{regression.inputs.values.table-X7SI6EDO.js.map → regression.inputs.values.table-3I2FCON2.js.map} +0 -0
  873. /package/dist/{regression.integration.spec-NRDEVBWS.js.map → regression.integration.spec-QVDGCKVT.js.map} +0 -0
  874. /package/dist/{regression.results-XVB6CIGW.js.map → regression.results-B7LVT2WG.js.map} +0 -0
  875. /package/dist/{regression.spec-TNB5HBY5.js.map → regression.spec-ISYKKQOM.js.map} +0 -0
  876. /package/dist/{report-5VDIBC2W.js.map → report-TF6Z3Y44.js.map} +0 -0
  877. /package/dist/{sampleScatter.spec-XDW7SCYA.js.map → sampleScatter.spec-2VW55XIZ.js.map} +0 -0
  878. /package/dist/{sampleView-FLUSGZCM.js.map → sampleView-DNNJRAMU.js.map} +0 -0
  879. /package/dist/{samplelst-4WPG5UBN.js.map → samplelst-726II3LN.js.map} +0 -0
  880. /package/dist/{samplematrix-YJGMSXUJ.js.map → samplematrix-TBPW4URH.js.map} +0 -0
  881. /package/dist/{sc-DHU5KSEJ.js.map → sc-GBYH3W4S.js.map} +0 -0
  882. /package/dist/{selectGenomeWithTklst-BVBMVRMQ.js.map → selectGenomeWithTklst-RCAYDV6D.js.map} +0 -0
  883. /package/dist/{singleCellCellType-DADK5UKZ.js.map → singleCellCellType-IQYCKUT6.js.map} +0 -0
  884. /package/dist/{singleCellCellType.unit.spec-X25RMBJ3.js.map → singleCellCellType.unit.spec-ZEWA2IFI.js.map} +0 -0
  885. /package/dist/{singleCellGeneExpression-3UEZWI4E.js.map → singleCellGeneExpression-STLTBXJQ.js.map} +0 -0
  886. /package/dist/{singleCellGeneExpression.unit.spec-5GU3JWE6.js.map → singleCellGeneExpression.unit.spec-W6FPS5ZU.js.map} +0 -0
  887. /package/dist/{singleCellPlot-TFRZG73T.js.map → singleCellPlot-7XH7NIL4.js.map} +0 -0
  888. /package/dist/{singlecell-KR6JYFAY.js.map → singlecell-IDZB2MXW.js.map} +0 -0
  889. /package/dist/{singlecell-HQH6EWJO.js.map → singlecell-JCXR7X5U.js.map} +0 -0
  890. /package/dist/{snp-ACIZ7D5X.js.map → snp-QOKI26PO.js.map} +0 -0
  891. /package/dist/{snp.unit.spec-653HGJBM.js.map → snp.unit.spec-DTPZAALW.js.map} +0 -0
  892. /package/dist/{snplocus-AH6KJCVN.js.map → snplocus-BKUJYANW.js.map} +0 -0
  893. /package/dist/{spliceevent.a53ss.diagram-MKJLJDOG.js.map → spliceevent.a53ss.diagram-4O54ORKZ.js.map} +0 -0
  894. /package/dist/{spliceevent.exonskip.diagram-PSEVCDH4.js.map → spliceevent.exonskip.diagram-KOIOS6IV.js.map} +0 -0
  895. /package/dist/{spliceevent.noeventdiagram-T2LHGFN7.js.map → spliceevent.noeventdiagram-YGUGQMVE.js.map} +0 -0
  896. /package/dist/{ssGSEA-QFMYBITZ.js.map → ssGSEA-UZMBIHVD.js.map} +0 -0
  897. /package/dist/{ssGSEA.unit.spec-SQW7KFWE.js.map → ssGSEA.unit.spec-4YO4E3T7.js.map} +0 -0
  898. /package/dist/{stattable-QDIUQCMG.js.map → stattable-MDABSW3F.js.map} +0 -0
  899. /package/dist/{summarizeCnvGeneexp-EVRTBY3L.js.map → summarizeCnvGeneexp-HV3DHIW4.js.map} +0 -0
  900. /package/dist/{summarizeGeneexpSurvival-O3MGRS6K.js.map → summarizeGeneexpSurvival-VGPRWYQ5.js.map} +0 -0
  901. /package/dist/{summarizeMutationCnv-RZ2DZ2XO.js.map → summarizeMutationCnv-N3JEB4DJ.js.map} +0 -0
  902. /package/dist/{summarizeMutationDiagnosis-V2DISQTC.js.map → summarizeMutationDiagnosis-6U4DBLG5.js.map} +0 -0
  903. /package/dist/{summarizeMutationSurvival-FTTWJBUG.js.map → summarizeMutationSurvival-S7NLAVEI.js.map} +0 -0
  904. /package/dist/{summary-QKBTZINC.js.map → summary-NPR56I4S.js.map} +0 -0
  905. /package/dist/{summary.integration.spec-54HA7BC2.js.map → summary.integration.spec-HWNJWLKT.js.map} +0 -0
  906. /package/dist/{summaryInput-4RLZT6RW.js.map → summaryInput-DO73NGDQ.js.map} +0 -0
  907. /package/dist/{sunburst-SMKD45XD.js.map → sunburst-MMXSGJSL.js.map} +0 -0
  908. /package/dist/{survival-YQNA3WP7.js.map → survival-7AIKFGV5.js.map} +0 -0
  909. /package/dist/{survival-BAW5ME6J.js.map → survival-UK332X6L.js.map} +0 -0
  910. /package/dist/{survival.integration.spec-2AHXNMH2.js.map → survival.integration.spec-YMTEKEGB.js.map} +0 -0
  911. /package/dist/{svgraph-5Z7VAIVR.js.map → svgraph-MLLAYO4A.js.map} +0 -0
  912. /package/dist/{svmr-PHD76RV4.js.map → svmr-PYW4PLT3.js.map} +0 -0
  913. /package/dist/{table-GMRAOIWZ.js.map → table-Y3ED2444.js.map} +0 -0
  914. /package/dist/{termCollection-QLKTRXUR.js.map → termCollection-3XVL75II.js.map} +0 -0
  915. /package/dist/{termCollection-MEBY34TJ.js.map → termCollection-VAB53YGO.js.map} +0 -0
  916. /package/dist/{termCollection.unit.spec-6B53SW2Q.js.map → termCollection.unit.spec-DYPWNVEZ.js.map} +0 -0
  917. /package/dist/{termInfo-2Z4V2QLE.js.map → termInfo-6MJDJSDW.js.map} +0 -0
  918. /package/dist/{tk-X46SEOL7.js.map → tk-GUGJYKJ2.js.map} +0 -0
  919. /package/dist/{tp.ui-XV7CL7CA.js.map → tp.ui-WGETBYJQ.js.map} +0 -0
  920. /package/dist/{tvs.dt-U6SIZTXW.js.map → tvs.dt-JWF4I3KY.js.map} +0 -0
  921. /package/dist/{tvs.dtcnv.categorical-6YGEKMHW.js.map → tvs.dtcnv.categorical-72Y5QMPL.js.map} +0 -0
  922. /package/dist/{tvs.dtcnv.continuous-CQFEENBO.js.map → tvs.dtcnv.continuous-73LHWTU5.js.map} +0 -0
  923. /package/dist/{tvs.dtfusion-NOBT2JPI.js.map → tvs.dtfusion-LP6HUMZU.js.map} +0 -0
  924. /package/dist/{tvs.dtsnvindel-6GTCSVAV.js.map → tvs.dtsnvindel-23N2CFZJ.js.map} +0 -0
  925. /package/dist/{tvs.dtsv-PMI4YVI5.js.map → tvs.dtsv-DILQVKYM.js.map} +0 -0
  926. /package/dist/{tvs.samplelst-HVNYKHXG.js.map → tvs.samplelst-GV4VSCRF.js.map} +0 -0
  927. /package/dist/{tvs.termCollection-EWGTT75Z.js.map → tvs.termCollection-KBDNXK7X.js.map} +0 -0
  928. /package/dist/{violin-MKWRB25Z.js.map → violin-TYUP7FB5.js.map} +0 -0
  929. /package/dist/{violin.integration.spec-CNWJ43SD.js.map → violin.integration.spec-ULRFK2A6.js.map} +0 -0
  930. /package/dist/{violin.interactivity-UXOMTGSD.js.map → violin.interactivity-2QZVQWQJ.js.map} +0 -0
  931. /package/dist/{violin.renderer-67Q6YGYQ.js.map → violin.renderer-HCDSN62Z.js.map} +0 -0
  932. /package/dist/{vocabulary-AKXE7SNU.js.map → vocabulary-I4CMPN2Z.js.map} +0 -0
@@ -1,3842 +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-UK3PTE3P.js";
17
- import {
18
- genomic2gm
19
- } from "./chunk-HJ6L54YS.js";
20
- import "./chunk-LSEFWW72.js";
21
- import "./chunk-IFA3COXY.js";
22
- import {
23
- Menu
24
- } from "./chunk-HYOEWQ5P.js";
25
- import "./chunk-HBW42TDT.js";
26
- import "./chunk-G6O3URDN.js";
27
- import "./chunk-FN5XPUPH.js";
28
- import "./chunk-5X6J6UAT.js";
29
- import "./chunk-3L32ZXRS.js";
30
- import "./chunk-GRNZWYOJ.js";
31
- import "./chunk-X27TRPIZ.js";
32
- import "./chunk-STQU7XZV.js";
33
- import "./chunk-7IYJZZQI.js";
34
- import "./chunk-5V43Y2RC.js";
35
- import "./chunk-PF4DSFDR.js";
36
- import "./chunk-B4VRYXOQ.js";
37
- import "./chunk-XOCO3LVN.js";
38
- import {
39
- bplen,
40
- dtcloss,
41
- dtfusionrna,
42
- dtitd,
43
- dtnloss,
44
- mclasscloss,
45
- mclassfusionrna,
46
- mclassitd,
47
- mclassnloss
48
- } from "./chunk-EBKERML3.js";
49
- import "./chunk-DD4R5P6W.js";
50
- import "./chunk-JNITUVXP.js";
51
- import "./chunk-KSGA62R2.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-TLT4YIG3.js";
60
- import "./chunk-KYBIQBXE.js";
61
- import {
62
- select_default
63
- } from "./chunk-I6Y4O3RR.js";
64
- import "./chunk-OMR2DT66.js";
65
- import "./chunk-DQC5FFGV.js";
66
- import "./chunk-HFNDKYVF.js";
67
-
68
- // src/svmr.unload.js
69
- function svmr_export_json(svmr, hqonly) {
70
- var rows = [];
71
- for (const sample of svmr.samples) {
72
- for (const egg of sample.egglst) {
73
- for (const eg of egg.lst) {
74
- if (eg.ismsg) {
75
- const lst = eg.lst.map((evt) => evt.lst[0]);
76
- if (hqonly) {
77
- let hashq = false;
78
- for (const i of lst) {
79
- if (i.rating == "Major") hashq = true;
80
- }
81
- if (hashq) {
82
- rows.push(lst);
83
- }
84
- } else {
85
- rows.push(lst);
86
- }
87
- } else {
88
- for (const evt of eg.lst) {
89
- for (const p of evt.lst) {
90
- if (hqonly) {
91
- if (p.rating == "Major") rows.push([p]);
92
- } else {
93
- rows.push([p]);
94
- }
95
- }
96
- }
97
- }
98
- }
99
- }
100
- }
101
- const lines = [], e_itd = [], e_nloss = [], e_closs = [];
102
- for (const row of rows) {
103
- if (row.length == 1 && row[0].usepair) {
104
- const p = row[0];
105
- if (p.isitd) {
106
- const u = p.usepair;
107
- const gm = svmr.genome.isoformmatch(u.a.isoform, p.chrA, p.posA);
108
- if (!gm) {
109
- e_itd.push(p.sample + " " + p.geneA + " ITD (" + p.rating + "): no gene model found for " + u.a.isoform);
110
- continue;
111
- }
112
- const exonbp1 = genomic2gm(p.posA, gm).rnapos;
113
- const exonbp2 = genomic2gm(p.posB, gm).rnapos;
114
- if (exonbp1 <= exonbp2) {
115
- e_itd.push(p.sample + " " + p.geneA + " ITD (" + p.rating + "): negative duplication length");
116
- continue;
117
- }
118
- const itd = {
119
- typecode: dtitd,
120
- gene: p.geneA,
121
- isoform: u.a.isoform,
122
- rating: p.rating,
123
- score: p.score,
124
- functioneffect: p.functioneffect,
125
- rnaposition: exonbp2,
126
- rnaduplength: exonbp1 - exonbp2 + 1,
127
- a: {
128
- chr: p.chrA,
129
- position: p.posA,
130
- strand: p.ortA,
131
- ratio: p.ratioA,
132
- chimericreads: p.readsA,
133
- totalreads: p.totalreadsA,
134
- match: p.matchA,
135
- repeat: p.repeatA
136
- },
137
- b: {
138
- chr: p.chrB,
139
- position: p.posB,
140
- strand: p.ortB,
141
- ratio: p.ratioB,
142
- chimericreads: p.readsB,
143
- totalreads: p.totalreadsB,
144
- match: p.matchB,
145
- repeat: p.repeatB
146
- }
147
- };
148
- let aalen = 0, bplen2 = 0;
149
- if (u.a.contigaa && u.b.contigaa) {
150
- aalen = u.b.contigaa - u.a.contigaa - 1;
151
- }
152
- if (u.a.contigbp && u.b.contigbp) {
153
- bplen2 = u.b.contigbp - u.a.contigbp - 1;
154
- }
155
- if (aalen > 0) {
156
- itd.interstitial = { aalen };
157
- }
158
- if (bplen2 > 0) {
159
- if (!itd.interstitial) itd.interstitial = {};
160
- itd.interstitial.bplen = bplen2;
161
- }
162
- lines.push([p.sample, p.geneA, p.usepair.a.isoform, JSON.stringify(itd)]);
163
- continue;
164
- }
165
- if (p.isnloss) {
166
- const p2 = p.usepair.b;
167
- if (!p2.isoform) {
168
- e_nloss.push(p.sample + " " + p.geneB + " NLoss (" + p.rating + "): no isoform");
169
- continue;
170
- }
171
- const gm = svmr.genome.isoformmatch(p2.isoform, p.chrB, p.posB);
172
- if (!gm) {
173
- e_nloss.push(p.sample + " " + p.geneB + " NLoss (" + p.rating + "): no gene model found for " + p2.isoform);
174
- continue;
175
- }
176
- const exonbp = genomic2gm(p.posB, gm).rnapos;
177
- const pp = {
178
- typecode: dtnloss,
179
- gene: p.geneB,
180
- isoform: p2.isoform,
181
- rating: p.rating,
182
- score: p.score,
183
- functioneffect: p.functioneffect,
184
- rnaposition: exonbp,
185
- chr: p.chrB,
186
- position: p.posB,
187
- strand: p.ortB,
188
- ratio: p.ratioB,
189
- chimericreads: p.readsB,
190
- match: p.matchB,
191
- repeat: p.repeatB,
192
- partner: {
193
- chr: p.chrA,
194
- position: p.posA,
195
- strand: p.ortA,
196
- ratio: p.ratioA,
197
- chimericreads: p.readsA,
198
- match: p.matchA,
199
- repeat: p.repeatA
200
- }
201
- };
202
- if (p.geneA) {
203
- pp.partner.gene = p.geneA;
204
- }
205
- if (p.usepair.a.isoform) {
206
- pp.partner.isoform = p.usepair.a.isoform;
207
- }
208
- lines.push([p.sample, p.geneB, p2.isoform, JSON.stringify(pp)]);
209
- continue;
210
- }
211
- if (p.iscloss) {
212
- const p2 = p.usepair.a;
213
- if (!p2.isoform) {
214
- e_nloss.push(p.sample + " " + p.geneA + " CLoss (" + p.rating + "): no isoform");
215
- continue;
216
- }
217
- const gm = svmr.genome.isoformmatch(p2.isoform, p.chrA, p.posA);
218
- if (!gm) {
219
- e_nloss.push(p.sample + " " + p.geneA + " CLoss (" + p.rating + "): no gene model found by " + p2.isoform);
220
- continue;
221
- }
222
- const exonbp = genomic2gm(p.posA, gm).rnapos;
223
- const pp = {
224
- typecode: dtcloss,
225
- gene: p.geneA,
226
- isoform: p2.isoform,
227
- rating: p.rating,
228
- score: p.score,
229
- functioneffect: p.functioneffect,
230
- rnaposition: exonbp,
231
- chr: p.chrA,
232
- position: p.posA,
233
- strand: p.ortA,
234
- ratio: p.ratioA,
235
- chimericreads: p.readsA,
236
- match: p.matchA,
237
- repeat: p.repeatA,
238
- partner: {
239
- chr: p.chrB,
240
- position: p.posB,
241
- strand: p.ortB,
242
- ratio: p.ratioB,
243
- chimericreads: p.readsB,
244
- match: p.matchB,
245
- repeat: p.repeatB
246
- }
247
- };
248
- if (p.geneB) {
249
- pp.partner.gene = p.geneB;
250
- }
251
- if (p.usepair.b.isoform) {
252
- pp.partner.isoform = p.usepair.b.isoform;
253
- }
254
- lines.push([p.sample, p.geneA, p2.isoform, JSON.stringify(pp)]);
255
- continue;
256
- }
257
- }
258
- const genes = /* @__PURE__ */ new Set(), isoforms = /* @__PURE__ */ new Set(), cleanup = [];
259
- for (const p of row) {
260
- if (p.geneA) genes.add(p.geneA);
261
- if (p.geneB) genes.add(p.geneB);
262
- if (p.usepair) {
263
- if (p.usepair.a.isoform) isoforms.add(p.usepair.a.isoform);
264
- if (p.usepair.b.isoform) isoforms.add(p.usepair.b.isoform);
265
- }
266
- const clean = {
267
- type: p.type,
268
- type2: p.type2,
269
- rating: p.rating,
270
- score: p.score,
271
- functioneffect: p.functioneffect,
272
- a: {
273
- name: p.geneA,
274
- chr: p.chrA,
275
- position: p.posA,
276
- strand: p.ortA,
277
- ratio: p.ratioA,
278
- feature: p.featureA,
279
- chimericreads: p.readsA,
280
- contiglen: p.matchA,
281
- repeatscore: p.repeatA
282
- },
283
- b: {
284
- name: p.geneB,
285
- chr: p.chrB,
286
- position: p.posB,
287
- strand: p.ortB,
288
- ratio: p.ratioB,
289
- feature: p.featureB,
290
- chimericreads: p.readsB,
291
- contiglen: p.matchB,
292
- repeatscore: p.repeatB
293
- }
294
- };
295
- if (p.usepair) {
296
- const u = p.usepair;
297
- clean.frame = u.frame;
298
- if (u.a.isoform) {
299
- clean.a.isoform = u.a.isoform;
300
- }
301
- if (u.b.isoform) {
302
- clean.b.isoform = u.b.isoform;
303
- }
304
- let aalen = 0, bplen2 = 0;
305
- if (u.a.contigaa && u.b.contigaa) {
306
- aalen = u.b.contigaa - u.a.contigaa - 1;
307
- }
308
- if (u.a.contigbp && u.b.contigbp) {
309
- bplen2 = u.b.contigbp - u.a.contigbp - 1;
310
- }
311
- if (aalen > 0) {
312
- clean.interstitial = { aalen };
313
- }
314
- if (bplen2 > 0) {
315
- if (!clean.interstitial) clean.interstitial = {};
316
- clean.interstitial.bplen = bplen2;
317
- }
318
- }
319
- cleanup.push(clean);
320
- }
321
- const genenames = [...genes];
322
- const isoformnames = [...isoforms];
323
- lines.push([
324
- row[0].sample,
325
- genenames.length ? genenames.join(",") : "none",
326
- isoformnames.length ? isoformnames.join(",") : "none",
327
- JSON.stringify(cleanup)
328
- ]);
329
- }
330
- if (e_itd.length) {
331
- svmr.err(e_itd.join("<br>"));
332
- }
333
- if (e_nloss.length) {
334
- svmr.err(e_nloss.join("<br>"));
335
- }
336
- if (e_closs.length) {
337
- svmr.err(e_closs.join("<br>"));
338
- }
339
- export_data("Fusion data from " + svmr.filename, [{ text: lines.map((i) => i.join(" ")).join("\n") }]);
340
- }
341
- function svmr_2pp(svmr, hqonly) {
342
- const rows = [];
343
- for (const sample of svmr.samples) {
344
- for (const egg of sample.egglst) {
345
- for (const eg of egg.lst) {
346
- if (eg.ismsg) {
347
- const lst = eg.lst.map((evt) => evt.lst[0]);
348
- if (hqonly) {
349
- let hashq = false;
350
- for (const i of lst) {
351
- if (i.rating == "Major") hashq = true;
352
- }
353
- if (hashq) {
354
- rows.push(lst);
355
- }
356
- } else {
357
- rows.push(lst);
358
- }
359
- } else {
360
- for (const evt of eg.lst) {
361
- for (const p of evt.lst) {
362
- if (hqonly) {
363
- if (p.rating == "Major") rows.push([p]);
364
- } else {
365
- rows.push([p]);
366
- }
367
- }
368
- }
369
- }
370
- }
371
- }
372
- }
373
- const genes = {}, e_itd = [], e_nloss = [], e_closs = [];
374
- for (const row of rows) {
375
- if (row.length == 1 && row[0].usepair) {
376
- const p = row[0];
377
- if (p.isitd) {
378
- if (!p.geneA) {
379
- e_itd.push(p.sample + " ITD (" + p.rating + "): no gene name??");
380
- continue;
381
- }
382
- const u = p.usepair;
383
- const gm = svmr.genome.isoformmatch(u.a.isoform, p.chrA, p.posA);
384
- if (!gm) {
385
- e_itd.push(p.sample + " " + p.geneA + " ITD (" + p.rating + "): no gene model found for " + u.a.isoform);
386
- continue;
387
- }
388
- const exonbp1 = genomic2gm(p.posA, gm).rnapos;
389
- const exonbp2 = genomic2gm(p.posB, gm).rnapos;
390
- if (exonbp1 <= exonbp2) {
391
- e_itd.push(p.sample + " " + p.geneA + " ITD (" + p.rating + "): negative duplication length");
392
- continue;
393
- }
394
- const itd = {
395
- dt: dtitd,
396
- class: mclassitd,
397
- mname: "ITD",
398
- gene: p.geneA,
399
- sample: p.sample,
400
- isoform: u.a.isoform,
401
- rating: p.rating,
402
- score: p.score,
403
- functioneffect: p.functioneffect,
404
- rnaposition: exonbp2,
405
- rnaduplength: exonbp1 - exonbp2 + 1,
406
- a: {
407
- chr: p.chrA,
408
- position: p.posA,
409
- strand: p.ortA,
410
- ratio: p.ratioA,
411
- chimericreads: p.readsA,
412
- totalreads: p.totalreadsA,
413
- match: p.matchA,
414
- repeat: p.repeatA
415
- },
416
- b: {
417
- chr: p.chrB,
418
- position: p.posB,
419
- strand: p.ortB,
420
- ratio: p.ratioB,
421
- chimericreads: p.readsB,
422
- totalreads: p.totalreadsB,
423
- match: p.matchB,
424
- repeat: p.repeatB
425
- }
426
- };
427
- let aalen = 0, bplen2 = 0;
428
- if (u.a.contigaa && u.b.contigaa) {
429
- aalen = u.b.contigaa - u.a.contigaa - 1;
430
- }
431
- if (u.a.contigbp && u.b.contigbp) {
432
- bplen2 = u.b.contigbp - u.a.contigbp - 1;
433
- }
434
- if (aalen > 0) {
435
- itd.interstitial = { aalen };
436
- }
437
- if (bplen2 > 0) {
438
- if (!itd.interstitial) itd.interstitial = {};
439
- itd.interstitial.bplen = bplen2;
440
- }
441
- if (!(p.geneA in genes)) {
442
- genes[p.geneA] = [];
443
- }
444
- genes[p.geneA].push(itd);
445
- continue;
446
- }
447
- if (p.isnloss) {
448
- if (!p.geneB) {
449
- e_nloss.push(p.sample + " NLoss (" + p.rating + "): no geneB");
450
- continue;
451
- }
452
- const p2 = p.usepair.b;
453
- if (!p2.isoform) {
454
- e_nloss.push(p.sample + " " + p.geneB + " NLoss (" + p.rating + "): no isoform");
455
- continue;
456
- }
457
- const gm = svmr.genome.isoformmatch(p2.isoform, p.chrB, p.posB);
458
- if (!gm) {
459
- e_nloss.push(p.sample + " " + p.geneB + " NLoss (" + p.rating + "): no gene model found for " + p2.isoform);
460
- continue;
461
- }
462
- const exonbp = genomic2gm(p.posB, gm).rnapos;
463
- const pp = {
464
- dt: dtnloss,
465
- class: mclassnloss,
466
- mname: "N-loss",
467
- gene: p.geneB,
468
- sample: p.sample,
469
- isoform: p2.isoform,
470
- rating: p.rating,
471
- score: p.score,
472
- functioneffect: p.functioneffect,
473
- rnaposition: exonbp,
474
- chr: p.chrB,
475
- position: p.posB,
476
- strand: p.ortB,
477
- ratio: p.ratioB,
478
- chimericreads: p.readsB,
479
- match: p.matchB,
480
- repeat: p.repeatB,
481
- partner: {
482
- chr: p.chrA,
483
- position: p.posA,
484
- strand: p.ortA,
485
- ratio: p.ratioA,
486
- chimericreads: p.readsA,
487
- match: p.matchA,
488
- repeat: p.repeatA
489
- }
490
- };
491
- if (p.geneA) {
492
- pp.partner.gene = p.geneA;
493
- }
494
- if (p.usepair.a.isoform) {
495
- pp.partner.isoform = p.usepair.a.isoform;
496
- }
497
- if (!(p.geneB in genes)) {
498
- genes[p.geneB] = [];
499
- }
500
- genes[p.geneB].push(pp);
501
- continue;
502
- }
503
- if (p.iscloss) {
504
- if (!p.geneA) {
505
- e_closs.push(p.sample + " CLoss (" + p.rating + "): no geneA");
506
- continue;
507
- }
508
- const p2 = p.usepair.a;
509
- if (!p2.isoform) {
510
- e_closs.push(p.sample + " " + p.geneA + " CLoss (" + p.rating + "): no isoform");
511
- continue;
512
- }
513
- const gm = svmr.genome.isoformmatch(p2.isoform, p.chrA, p.posA);
514
- if (!gm) {
515
- e_closs.push(p.sample + " " + p.geneA + " CLoss (" + p.rating + "): no gene model found by " + p2.isoform);
516
- continue;
517
- }
518
- const exonbp = genomic2gm(p.posA, gm).rnapos;
519
- const pp = {
520
- dt: dtcloss,
521
- class: mclasscloss,
522
- mname: "C-loss",
523
- gene: p.geneA,
524
- sample: p.sample,
525
- isoform: p2.isoform,
526
- rating: p.rating,
527
- score: p.score,
528
- functioneffect: p.functioneffect,
529
- rnaposition: exonbp,
530
- chr: p.chrA,
531
- position: p.posA,
532
- strand: p.ortA,
533
- ratio: p.ratioA,
534
- chimericreads: p.readsA,
535
- match: p.matchA,
536
- repeat: p.repeatA,
537
- partner: {
538
- chr: p.chrB,
539
- position: p.posB,
540
- strand: p.ortB,
541
- ratio: p.ratioB,
542
- chimericreads: p.readsB,
543
- match: p.matchB,
544
- repeat: p.repeatB
545
- }
546
- };
547
- if (p.geneB) {
548
- pp.partner.gene = p.geneB;
549
- }
550
- if (p.usepair.b.isoform) {
551
- pp.partner.isoform = p.usepair.b.isoform;
552
- }
553
- if (!(p.geneA in genes)) {
554
- genes[p.geneA] = [];
555
- }
556
- genes[p.geneA].push(pp);
557
- continue;
558
- }
559
- }
560
- const gene2isoform = /* @__PURE__ */ new Map();
561
- const cleanup = [];
562
- for (const p of row) {
563
- if (p.geneA) {
564
- if (!gene2isoform.has(p.geneA)) gene2isoform.set(p.geneA, /* @__PURE__ */ new Set());
565
- if (p.usepair) {
566
- if (p.usepair.a.isoform) gene2isoform.get(p.geneA).add(p.usepair.a.isoform);
567
- }
568
- }
569
- if (p.geneB) {
570
- if (!gene2isoform.has(p.geneB)) gene2isoform.set(p.geneB, /* @__PURE__ */ new Set());
571
- if (p.usepair) {
572
- if (p.usepair.b.isoform) gene2isoform.get(p.geneB).add(p.usepair.b.isoform);
573
- }
574
- }
575
- const clean = {
576
- type: p.type,
577
- type2: p.type2,
578
- rating: p.rating,
579
- score: p.score,
580
- functioneffect: p.functioneffect,
581
- a: {
582
- name: p.geneA,
583
- chr: p.chrA,
584
- position: p.posA,
585
- strand: p.ortA,
586
- ratio: p.ratioA,
587
- feature: p.featureA,
588
- chimericreads: p.readsA,
589
- contiglen: p.matchA,
590
- repeatscore: p.repeatA
591
- },
592
- b: {
593
- name: p.geneB,
594
- chr: p.chrB,
595
- position: p.posB,
596
- strand: p.ortB,
597
- ratio: p.ratioB,
598
- feature: p.featureB,
599
- chimericreads: p.readsB,
600
- contiglen: p.matchB,
601
- repeatscore: p.repeatB
602
- }
603
- };
604
- if (p.usepair) {
605
- const u = p.usepair;
606
- clean.frame = u.frame;
607
- if (u.a.isoform) {
608
- clean.a.isoform = u.a.isoform;
609
- }
610
- if (u.b.isoform) {
611
- clean.b.isoform = u.b.isoform;
612
- }
613
- let aalen = 0, bplen2 = 0;
614
- if (u.a.contigaa && u.b.contigaa) {
615
- aalen = u.b.contigaa - u.a.contigaa - 1;
616
- }
617
- if (u.a.contigbp && u.b.contigbp) {
618
- bplen2 = u.b.contigbp - u.a.contigbp - 1;
619
- }
620
- if (aalen > 0) {
621
- clean.interstitial = { aalen };
622
- }
623
- if (bplen2 > 0) {
624
- if (!clean.interstitial) clean.interstitial = {};
625
- clean.interstitial.bplen = bplen2;
626
- }
627
- }
628
- cleanup.push(clean);
629
- }
630
- for (const [genename, iset] of gene2isoform) {
631
- for (const isoform of iset) {
632
- if (!(genename in genes)) {
633
- genes[genename] = [];
634
- }
635
- const pp = {
636
- dt: dtfusionrna,
637
- class: mclassfusionrna,
638
- sample: row[0].sample,
639
- isoform,
640
- pairlst: duplicate(cleanup)
641
- };
642
- for (const i of cleanup) {
643
- if (i.functioneffect) {
644
- pp.functioneffect = i.functioneffect;
645
- }
646
- }
647
- genes[genename].push(pp);
648
- }
649
- }
650
- }
651
- if (e_itd.length) {
652
- svmr.err(e_itd.join("<br>"));
653
- }
654
- if (e_nloss.length) {
655
- svmr.err(e_nloss.join("<br>"));
656
- }
657
- if (e_closs.length) {
658
- svmr.err(e_closs.join("<br>"));
659
- }
660
- let genecount = 0, genesup = {};
661
- for (const k in genes) {
662
- genecount++;
663
- genesup[k.toUpperCase()] = genes[k];
664
- }
665
- if (genecount == 0) {
666
- alert("No data can be added.");
667
- return;
668
- }
669
- let ds = null;
670
- for (const n in svmr.genome.datasets) {
671
- if (svmr.genome.datasets[n].svmrid == svmr.id) {
672
- ds = svmr.genome.datasets[n];
673
- break;
674
- }
675
- }
676
- if (ds) {
677
- ds.bulkdata = genesup;
678
- } else {
679
- ds = {
680
- label: svmr.filename,
681
- svmrid: svmr.id,
682
- bulkdata: genesup
683
- };
684
- svmr.genome.datasets[svmr.filename] = ds;
685
- }
686
- if (svmr.cohort) {
687
- svmr.cohortpane.pane.remove();
688
- } else {
689
- svmr.cohort = {
690
- name: svmr.filename,
691
- genome: svmr.genome,
692
- show_genetable: 1,
693
- jwt: svmr.jwt,
694
- dsset: {}
695
- };
696
- svmr.cohort.dsset[svmr.filename] = ds;
697
- }
698
- const pane = newpane({ x: 200, y: 200 });
699
- import("./tp.ui-XV7CL7CA.js").then((p) => {
700
- p.default(svmr.cohort, pane.body, svmr.hostURL);
701
- svmr.cohortpane = pane;
702
- });
703
- }
704
- function svmr_export_text(svmr, hqonly) {
705
- const rows = [];
706
- const headerlst = svmr.atlst.map((i) => i.label);
707
- headerlst.push("transcript_nbr");
708
- headerlst.push("breakpoint_nbr");
709
- headerlst.push("functionalClass");
710
- for (const sample of svmr.samples) {
711
- const whole = [];
712
- for (const egg of sample.egglst) {
713
- for (const eg of egg.lst) {
714
- if (eg.ismsg) {
715
- const lst = eg.lst.map((evt) => evt.lst[0]);
716
- if (hqonly) {
717
- let hashq = false;
718
- for (const i of lst) {
719
- if (i.rating == "Major") hashq = true;
720
- }
721
- if (hashq) {
722
- whole.push(lst);
723
- }
724
- } else {
725
- whole.push(lst);
726
- }
727
- } else {
728
- for (const evt of eg.lst) {
729
- for (const p of evt.lst) {
730
- if (hqonly) {
731
- if (p.rating == "Major") whole.push([p]);
732
- } else {
733
- whole.push([p]);
734
- }
735
- }
736
- }
737
- }
738
- }
739
- }
740
- for (let gid = 0; gid < whole.length; gid++) {
741
- for (let prodid = 0; prodid < whole[gid].length; prodid++) {
742
- let prod = whole[gid][prodid];
743
- 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 = [];
744
- for (const p of prod.pairs) {
745
- frame.push(p.frame);
746
- a_isoform.push(p.a.isoform);
747
- b_isoform.push(p.b.isoform);
748
- let v = p.a.codon;
749
- a_codon.push(Number.isNaN(v) ? "" : v);
750
- v = p.b.codon;
751
- b_codon.push(Number.isNaN(v) ? "" : v);
752
- v = p.a.exon;
753
- a_exon.push(Number.isNaN(v) ? "" : v);
754
- v = p.b.exon;
755
- b_exon.push(Number.isNaN(v) ? "" : v);
756
- a_anchor.push(p.a.anchor ? p.a.anchor : "");
757
- b_anchor.push(p.b.anchor ? p.b.anchor : "");
758
- v = p.a.contigaa;
759
- a_contigaa.push(v == void 0 ? "" : v);
760
- v = p.b.contigaa;
761
- b_contigaa.push(v == void 0 ? "" : v);
762
- v = p.a.contigbp;
763
- a_contigbp.push(v == void 0 ? "" : v);
764
- v = p.b.contigbp;
765
- b_contigbp.push(v == void 0 ? "" : v);
766
- }
767
- const row = [];
768
- for (const i of svmr.atlst) {
769
- switch (i.key) {
770
- case "lstframe":
771
- row.push(frame.join(","));
772
- break;
773
- // A
774
- case "lstisoforma":
775
- row.push(a_isoform.join(","));
776
- break;
777
- case "lstisoformacodon":
778
- row.push(a_codon.join(","));
779
- break;
780
- case "lstisoformaexon":
781
- row.push(a_exon.join(","));
782
- break;
783
- case "lstisoformaanchor":
784
- row.push(a_anchor.join(","));
785
- break;
786
- case "lstcontigaaA":
787
- row.push(a_contigaa.join(","));
788
- break;
789
- case "lstcontigbpA":
790
- row.push(a_contigbp.join(","));
791
- break;
792
- // B
793
- case "lstisoformb":
794
- row.push(b_isoform.join(","));
795
- break;
796
- case "lstisoformbcodon":
797
- row.push(b_codon.join(","));
798
- break;
799
- case "lstisoformbexon":
800
- row.push(b_exon.join(","));
801
- break;
802
- case "lstisoformbanchor":
803
- row.push(b_anchor.join(","));
804
- break;
805
- case "lstcontigaaB":
806
- row.push(b_contigaa.join(","));
807
- break;
808
- case "lstcontigbpB":
809
- row.push(b_contigbp.join(","));
810
- break;
811
- default:
812
- row.push(prod[i.key]);
813
- }
814
- }
815
- row.push(gid + 1);
816
- row.push(prodid + 1);
817
- row.push(prod.functioneffect ? prod.functioneffect : "");
818
- rows.push(row);
819
- }
820
- }
821
- }
822
- export_data("Fusion data from " + svmr.filename, [{ text: headerlst.join(" ") + "\n" + rows.join("\n") }]);
823
- }
824
- function duplicate(i) {
825
- const lst = [];
826
- for (const j of i) {
827
- const k = {};
828
- for (const n in j) k[n] = j[n];
829
- k.a = {};
830
- for (const n in j.a) k.a[n] = j.a[n];
831
- k.b = {};
832
- for (const n in j.b) k.b[n] = j.b[n];
833
- if (j.interstitial) {
834
- k.interstitial = {};
835
- for (const n in j.interstitial) k.interstitial[n] = j.interstitial[n];
836
- }
837
- lst.push(k);
838
- }
839
- return lst;
840
- }
841
-
842
- // src/svmr.c.js
843
- var genomelimit = 1e4;
844
- var knownprod_c = "#A702C4";
845
- var tip = new Menu();
846
- var svmr_c_default = class {
847
- constructor(genome, atlst, items, filename, holder, hostURL, jwt) {
848
- window.svmr = this;
849
- this.hostURL = hostURL;
850
- this.jwt = jwt;
851
- this.id = Math.random();
852
- this.items = items;
853
- this.genome = genome;
854
- this.filename = filename;
855
- this.atlst = atlst;
856
- this.cf_repeat = 0.7, this.cf_reads = 2;
857
- this.cf_match = 40;
858
- this.cf_ratio = 0.01;
859
- this.expression = {};
860
- this.samples = [];
861
- this.genelst = [];
862
- this.elab2sample = {};
863
- if (!holder) {
864
- const pane = newpane({ x: 100, y: 100, toshrink: true });
865
- pane.header.append("span").style("color", "#858585").style("font-size", ".7em").html("Fusion Editor&nbsp;");
866
- pane.header.append("span").text(filename);
867
- holder = pane.body;
868
- }
869
- this.holder = holder;
870
- this.errdiv = holder.append("div").style("width", "500px").style("margin", "10px");
871
- const butrow = holder.append("div").style("margin", "20px").style("padding", "0px");
872
- this.buttgene = butrow.append("button").text("Loading genes").on("click", () => {
873
- if (genediv.style("display") == "none") {
874
- appear(genediv);
875
- } else {
876
- disappear(genediv);
877
- }
878
- });
879
- this.buttsample = butrow.append("button").text("Loading samples").on("click", () => {
880
- if (this.ul.style("display") == "none") {
881
- appear(this.ul);
882
- } else {
883
- disappear(this.ul);
884
- }
885
- });
886
- butrow.append("button").text("Gene expression").on("click", () => {
887
- if (this.expression.div.style("display") == "none") {
888
- appear(this.expression.div);
889
- } else {
890
- disappear(this.expression.div);
891
- }
892
- });
893
- butrow.append("button").text("Parameter cutoff").on("click", () => {
894
- if (cutoffdiv.style("display") == "none") {
895
- appear(cutoffdiv);
896
- } else {
897
- disappear(cutoffdiv);
898
- }
899
- });
900
- butrow.append("button").text("Legend").on("click", () => {
901
- if (legenddiv.style("display") == "none") {
902
- appear(legenddiv);
903
- } else {
904
- disappear(legenddiv);
905
- }
906
- });
907
- butrow.append("button").style("margin-right", "20px").text("Export data").on("click", (event) => {
908
- 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;
909
- for (const sample of this.samples) {
910
- for (const egg of sample.egglst) {
911
- for (const eg of egg.lst) {
912
- if (eg.ismsg) {
913
- let hashq = false;
914
- for (const i of eg.lst) {
915
- if (i.rating == "Major") hashq = true;
916
- }
917
- if (hashq) multi_hq++;
918
- else multi_nhq++;
919
- } else {
920
- for (const evt of eg.lst) {
921
- for (const p of evt.lst) {
922
- if (p.rating == "Major") {
923
- if (p.isitd) itd_hq++;
924
- else if (p.iscloss || p.isnloss) trunc_hq++;
925
- else single_hq++;
926
- } else {
927
- if (p.isitd) itd_nhq++;
928
- else if (p.iscloss || p.isnloss) trunc_nhq++;
929
- else single_nhq++;
930
- }
931
- }
932
- }
933
- }
934
- }
935
- }
936
- }
937
- const d02 = tip.clear().showunder(event.target).d.append("div");
938
- const table = d02.append("table").style("border-spacing", "10px").style("border-collapse", "separate");
939
- let tr = table.append("tr").style("color", "#858585");
940
- tr.append("td");
941
- tr.append("td").text("2-gene fusion");
942
- tr.append("td").text("Multi-gene fusion");
943
- tr.append("td").text("ITD");
944
- tr.append("td").text("Truncation");
945
- tr = table.append("tr");
946
- tr.append("td").text("Major").style("color", "#858585").style("text-align", "right");
947
- tr.append("td").text(single_hq);
948
- tr.append("td").text(multi_hq);
949
- tr.append("td").text(itd_hq);
950
- tr.append("td").text(trunc_hq);
951
- tr = table.append("tr");
952
- tr.append("td").text("not Major").style("color", "#858585").style("text-align", "right");
953
- tr.append("td").text(single_nhq);
954
- tr.append("td").text(multi_nhq);
955
- tr.append("td").text(itd_nhq);
956
- tr.append("td").text(trunc_nhq);
957
- let dd = d02.append("div").style("margin", "10px").text('Export fusions labeled as "Major"');
958
- dd.append("button").style("margin", "10px").text("Tabular format").on("click", () => svmr_export_text(this, true));
959
- dd.append("button").style("margin", "10px").text("JSON format").on("click", () => svmr_export_json(this, true));
960
- dd.append("button").style("margin", "10px").text("View in ProteinPaint").on("click", () => svmr_2pp(this, true));
961
- dd = d02.append("div").style("margin", "10px").text("Export all fusions");
962
- dd.append("button").style("margin", "10px").text("Tabular format").on("click", () => svmr_export_text(this, false));
963
- dd.append("button").style("margin", "10px").text("JSON format").on("click", () => svmr_export_json(this, false));
964
- dd.append("button").style("margin", "10px").text("View in ProteinPaint").on("click", () => svmr_2pp(this, false));
965
- });
966
- butrow.append("a").attr("target", "_blank").attr("href", "https://docs.google.com/document/d/1DRVzE_WenG490eRYB7VGFOygtSqtF5L97rhK0HOUCNY/edit?usp=sharing").text("Help");
967
- this.expression.div = holder.append("div").style("display", "none").style("margin", "20px").style("padding", "20px").style("border", "dashed 1px #bbb");
968
- this.expression.prediv = this.expression.div.append("div");
969
- this.expression.prediv.append("div").style("margin", "5px").text("Load a file that includes gene expression data for current samples.");
970
- 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");
971
- this.expression.input = this.expression.prediv.append("input").attr("type", "file").on("change", (event) => {
972
- loadexpression(this, event.target.files[0]);
973
- });
974
- this.expression.presays = this.expression.prediv.append("span").style("padding-left", "20px");
975
- this.expression.afterdiv = this.expression.div.append("div").style("display", "none");
976
- const genediv = holder.append("div").style("display", "none").style("margin", "20px");
977
- let d0 = genediv.append("div").style("display", "inline-block").style("border", "dashed 1px #bbb");
978
- this.genefilter = d0.append("div").style("background-color", "#ededed").style("padding", "10px 20px");
979
- let d01 = d0.append("div").style("padding", "10px 20px").style("overflow-y", "scroll").style("resize", "vertical").style("height", "300px");
980
- d01.append("div").style("margin", "10px").style("font-size", "70%").text("Not included: read-through and intergenic events (including one or both sides).");
981
- this.genetable = d01.append("table");
982
- const cutoffdiv = holder.append("div").style("display", "none").style("margin", "20px");
983
- d0 = cutoffdiv.append("div").style("display", "inline-block").style("padding", "20px").style("border", "solid 1px #ededed");
984
- d0.append("span").style("padding", "0px 10px").text("Alert if:");
985
- d01 = d0.append("span").style("padding", "0px 10px");
986
- d01.append("span").html("chimeric reads &le;&nbsp;");
987
- d01.append("input").attr("size", 3).property("value", this.cf_reads).on("change", (event) => {
988
- const v = Number.parseInt(event.target.value);
989
- if (Number.isNaN(v)) {
990
- return;
991
- }
992
- this.cf_reads = v;
993
- });
994
- d01 = d0.append("span").style("padding", "0px 10px");
995
- d01.append("span").html("repeat score &ge;&nbsp;");
996
- d01.append("input").attr("size", 3).property("value", this.cf_repeat).on("change", (event) => {
997
- const v = Number.parseFloat(event.target.value);
998
- if (Number.isNaN(v)) {
999
- return;
1000
- }
1001
- this.cf_repeat = v;
1002
- });
1003
- d01 = d0.append("span").style("padding", "0px 10px");
1004
- d01.append("span").html("contig bp length &le;&nbsp;");
1005
- d01.append("input").attr("size", 3).property("value", this.cf_match).on("change", (event) => {
1006
- const v = Number.parseInt(event.target.value);
1007
- if (Number.isNaN(v)) {
1008
- return;
1009
- }
1010
- this.cf_match = v;
1011
- });
1012
- d01 = d0.append("span").style("padding", "0px 10px");
1013
- d01.append("span").html("ratio &le;&nbsp;");
1014
- d01.append("input").attr("size", 3).property("value", this.cf_ratio).on("change", (event) => {
1015
- const v = Number.parseFloat(event.target.value);
1016
- if (Number.isNaN(v)) {
1017
- return;
1018
- }
1019
- this.cf_ratio = v;
1020
- });
1021
- const legenddiv = holder.append("div").style("display", "none").style("margin", "20px");
1022
- var h = 16;
1023
- legenddiv.append("div").style("display", "inline-block").style("padding", "10px").style("border", "solid 1px #ededed").html(
1024
- '<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>'
1025
- );
1026
- this.ul = holder.append("ul");
1027
- this.step_isoform(items);
1028
- }
1029
- // end of constructor
1030
- err(m) {
1031
- sayerror(this.errdiv, m);
1032
- }
1033
- step_isoform(items) {
1034
- const newset = /* @__PURE__ */ new Set();
1035
- for (const item of items) {
1036
- for (const i of item.pairs) {
1037
- let n = i.a.isoform;
1038
- if (n && !this.genome.isoformcache.has(n.toUpperCase())) {
1039
- newset.add(n);
1040
- }
1041
- n = i.b.isoform;
1042
- if (n && !this.genome.isoformcache.has(n.toUpperCase())) {
1043
- newset.add(n);
1044
- }
1045
- }
1046
- }
1047
- if (newset.size == 0) {
1048
- this.step_eat(items);
1049
- return;
1050
- }
1051
- const newisoform = [];
1052
- for (const n of newset) {
1053
- newisoform.push(n);
1054
- }
1055
- const wait = this.holder.append("div").style("margin", "20px").text("Loading " + newset.size + " isoforms ...");
1056
- fetch(
1057
- new Request(this.hostURL + "/isoformlst", {
1058
- method: "POST",
1059
- body: JSON.stringify({ genome: this.genome.name, lst: newisoform, jwt: this.jwt })
1060
- })
1061
- ).then((data) => {
1062
- return data.json();
1063
- }).then((data) => {
1064
- if (data.error) throw { message: "Cannot load isoforms: " + data.error };
1065
- wait.remove();
1066
- for (const ilst of data.lst) {
1067
- if (ilst[0]) {
1068
- this.genome.isoformcache.set(ilst[0].isoform, ilst);
1069
- }
1070
- }
1071
- const isoformErr = [];
1072
- for (const k of newset) {
1073
- if (!this.genome.isoformcache.has(k.toUpperCase())) {
1074
- isoformErr.push(k);
1075
- }
1076
- }
1077
- if (isoformErr.length) {
1078
- this.err(
1079
- isoformErr.length + " invalid isoform" + (isoformErr.length > 1 ? "s" : "") + ": " + isoformErr.join(", ")
1080
- );
1081
- }
1082
- this.step_eat(items);
1083
- }).catch((err) => {
1084
- this.err(err.message);
1085
- if (err.stack) console.log(err.stack);
1086
- });
1087
- }
1088
- step_eat(items) {
1089
- for (const prod of items) {
1090
- prod.hook = {};
1091
- let use = null;
1092
- for (const p of prod.pairs) {
1093
- let gm = this.genome.isoformmatch(p.a.isoform, prod.chrA, prod.posA);
1094
- if (gm) {
1095
- prod.geneA = gm.name;
1096
- p.a.isdefault = gm.isdefault;
1097
- if (Number.isNaN(p.a.codon) || p.a.codon < 0) {
1098
- p.a.codon = void 0;
1099
- const a = genomic2gm(prod.posA, gm);
1100
- if (a.atupstream) {
1101
- p.a.atupstream = a.atupstream;
1102
- } else if (a.atdownstream) {
1103
- p.a.atdownstream = a.atdownstream;
1104
- } else if (a.atutr3) {
1105
- p.a.atutr3 = a.atutr3;
1106
- } else if (a.atutr5) {
1107
- p.a.atutr5 = a.atutr5;
1108
- } else {
1109
- p.a.codon = a.codon;
1110
- }
1111
- }
1112
- }
1113
- gm = this.genome.isoformmatch(p.b.isoform, prod.chrB, prod.posB);
1114
- if (gm) {
1115
- prod.geneB = gm.name;
1116
- p.b.isdefault = gm.isdefault;
1117
- if (Number.isNaN(p.b.codon) || p.b.codon < 0) {
1118
- p.b.codon = void 0;
1119
- const a = genomic2gm(prod.posB, gm);
1120
- if (a.atupstream) {
1121
- p.b.atupstream = a.atupstream;
1122
- } else if (a.atdownstream) {
1123
- p.b.atdownstream = a.atdownstream;
1124
- } else if (a.atutr3) {
1125
- p.b.atutr3 = a.atutr3;
1126
- } else if (a.atutr5) {
1127
- p.b.atutr5 = a.atutr5;
1128
- } else {
1129
- p.b.codon = a.codon;
1130
- }
1131
- }
1132
- }
1133
- if (p.a.isdefault && p.b.isdefault) {
1134
- if (!use) {
1135
- use = p;
1136
- }
1137
- if (p.inframe) {
1138
- use = p;
1139
- }
1140
- }
1141
- }
1142
- if (use) {
1143
- prod.usepair = use;
1144
- } else {
1145
- prod.notes.push("No preferred isoform pair");
1146
- prod.usepair = prod.pairs[0];
1147
- }
1148
- if (prod.usepair) {
1149
- prod.usepair.inuse = true;
1150
- }
1151
- prod.eventlabel = (prod.geneA ? prod.geneA : prod.chrA) + "-" + (prod.geneB ? prod.geneB : prod.chrB);
1152
- }
1153
- const tmp = {};
1154
- const sampleless = {};
1155
- let hassampleless = false;
1156
- for (const prod of items) {
1157
- let n = prod.sample;
1158
- if (n) {
1159
- if (!(n in tmp)) {
1160
- tmp[n] = {};
1161
- }
1162
- if (!(prod.eventlabel in tmp[n])) {
1163
- tmp[n][prod.eventlabel] = [];
1164
- }
1165
- tmp[n][prod.eventlabel].push(prod);
1166
- } else {
1167
- hassampleless = true;
1168
- if (!(prod.eventlabel in sampleless)) {
1169
- sampleless[prod.eventlabel] = [];
1170
- }
1171
- sampleless[prod.eventlabel].push(prod);
1172
- }
1173
- }
1174
- for (const sn in tmp) {
1175
- this.samples.push({
1176
- name: sn,
1177
- events: tmp[sn]
1178
- });
1179
- }
1180
- if (hassampleless) {
1181
- this.samples.push({
1182
- name: "No name",
1183
- events: sampleless
1184
- });
1185
- }
1186
- this.buttsample.text(this.samples.length + " sample" + (this.samples.length > 1 ? "s" : ""));
1187
- for (const sample of this.samples) {
1188
- for (const elab in sample.events) {
1189
- if (!(elab in this.elab2sample)) {
1190
- this.elab2sample[elab] = [];
1191
- }
1192
- this.elab2sample[elab].push(sample);
1193
- }
1194
- }
1195
- for (const sample of this.samples) {
1196
- sample.gene2events = {};
1197
- for (const elab in sample.events) {
1198
- for (const prod of sample.events[elab]) {
1199
- const a = prod.geneA;
1200
- if (a) {
1201
- if (!(a in sample.gene2events)) {
1202
- sample.gene2events[a] = {};
1203
- }
1204
- sample.gene2events[a][elab] = 1;
1205
- }
1206
- const b = prod.geneB;
1207
- if (b) {
1208
- if (!(b in sample.gene2events)) {
1209
- sample.gene2events[b] = {};
1210
- }
1211
- sample.gene2events[b][elab] = 1;
1212
- }
1213
- }
1214
- }
1215
- }
1216
- for (const sample of this.samples) {
1217
- const newholder = [];
1218
- for (const elab in sample.events) {
1219
- for (const prod of sample.events[elab]) {
1220
- if (prod.rating == "HQ") msjoin(prod, newholder);
1221
- }
1222
- }
1223
- for (const elab in sample.events) {
1224
- for (const prod of sample.events[elab]) {
1225
- if (prod.rating == "LQ") msjoin(prod, newholder);
1226
- }
1227
- }
1228
- for (const elab in sample.events) {
1229
- for (const prod of sample.events[elab]) {
1230
- if (prod.rating == "RT") msjoin(prod, newholder);
1231
- }
1232
- }
1233
- for (const elab in sample.events) {
1234
- for (const prod of sample.events[elab]) {
1235
- if (prod.rating == "bad") msjoin(prod, newholder);
1236
- }
1237
- }
1238
- let msgid = 0;
1239
- const msglst = [];
1240
- for (const lst of newholder) {
1241
- if (lst.length > 1) {
1242
- for (const prod of lst) {
1243
- prod.msgid = msgid;
1244
- }
1245
- msgid++;
1246
- msglst.push(lst);
1247
- }
1248
- }
1249
- const hqin = [], hqt = [], hqo = [], lqin = [], lqt = [], lqo = [], rtin = [], rtt = [], rto = [], badin = [], badt = [], bado = [];
1250
- for (const msg of msglst) {
1251
- const thisset = [];
1252
- 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;
1253
- for (const prod of msg) {
1254
- thisset.push({ label: prod.eventlabel, lst: [prod] });
1255
- const pair2 = prod.usepair;
1256
- if (prod.rating == "HQ") {
1257
- if (pair2) {
1258
- if (pair2.inframe) hqin3 = true;
1259
- else hqt3 = true;
1260
- } else if (prod.isnloss || prod.iscloss) {
1261
- hqt3 = true;
1262
- } else {
1263
- hqo3 = true;
1264
- }
1265
- } else if (prod.rating == "LQ") {
1266
- if (pair2) {
1267
- if (pair2.inframe) lqin3 = true;
1268
- else lqt3 = true;
1269
- } else if (prod.isnloss || prod.iscloss) {
1270
- lqt3 = true;
1271
- } else {
1272
- lqo3 = true;
1273
- }
1274
- } else if (prod.rating == "RT") {
1275
- if (pair2) {
1276
- if (pair2.inframe) rtin3 = true;
1277
- else rtt3 = true;
1278
- } else if (prod.isnloss || prod.iscloss) {
1279
- rtt3 = true;
1280
- } else {
1281
- rto3 = true;
1282
- }
1283
- } else {
1284
- if (pair2) {
1285
- if (pair2.inframe) badin3 = true;
1286
- else badt3 = true;
1287
- } else if (prod.isnloss || prod.iscloss) {
1288
- badt3 = true;
1289
- } else {
1290
- bado3 = true;
1291
- }
1292
- }
1293
- }
1294
- if (hqin3) {
1295
- hqin.push({ label: "", lst: thisset, ismsg: true });
1296
- } else if (hqt3) {
1297
- hqt.push({ label: "", lst: thisset, ismsg: true });
1298
- } else if (hqo3) {
1299
- hqo.push({ label: "", lst: thisset, ismsg: true });
1300
- } else if (lqin3) {
1301
- lqin.push({ label: "", lst: thisset, ismsg: true });
1302
- } else if (lqt3) {
1303
- lqt.push({ label: "", lst: thisset, ismsg: true });
1304
- } else if (lqo3) {
1305
- lqo.push({ label: "", lst: thisset, ismsg: true });
1306
- } else if (rtin3) {
1307
- rtin.push({ label: "", lst: thisset, ismsg: true });
1308
- } else if (rtt3) {
1309
- rtt.push({ label: "", lst: thisset, ismsg: true });
1310
- } else if (rto3) {
1311
- rto.push({ label: "", lst: thisset, ismsg: true });
1312
- } else if (badin3) {
1313
- badin.push({ label: "", lst: thisset, ismsg: true });
1314
- } else if (badt3) {
1315
- badt.push({ label: "", lst: thisset, ismsg: true });
1316
- } else if (bado3) {
1317
- bado.push({ label: "", lst: thisset, ismsg: true });
1318
- } else {
1319
- console.log("multi-seg group unclassfied? " + key);
1320
- }
1321
- }
1322
- const genepairs = {};
1323
- for (const elab in sample.events) {
1324
- const hqin2 = [], hqt2 = [], hqo2 = [], lqin2 = [], lqt2 = [], lqo2 = [], rtin2 = [], rtt2 = [], rto2 = [], badin2 = [], badt2 = [], bado2 = [];
1325
- for (const prod of sample.events[elab]) {
1326
- if (prod.msgid != void 0) {
1327
- continue;
1328
- }
1329
- if (prod.geneA && prod.geneB) {
1330
- const key2 = prod.geneA + "-" + prod.geneB;
1331
- let hash = genepairs[key2];
1332
- if (!hash) {
1333
- const key22 = prod.geneB + "-" + prod.geneA;
1334
- hash = genepairs[key22];
1335
- }
1336
- if (hash) {
1337
- if (!(key2 in hash)) {
1338
- hash[key2] = [];
1339
- }
1340
- hash[key2].push(prod);
1341
- } else {
1342
- genepairs[key2] = {};
1343
- genepairs[key2][key2] = [prod];
1344
- }
1345
- continue;
1346
- }
1347
- var pair = prod.usepair;
1348
- if (prod.rating == "HQ") {
1349
- if (pair) {
1350
- if (pair.inframe) hqin2.push(prod);
1351
- else hqt2.push(prod);
1352
- } else if (prod.isnloss || prod.iscloss) {
1353
- hqt2.push(prod);
1354
- } else {
1355
- hqo2.push(prod);
1356
- }
1357
- } else if (prod.rating == "LQ") {
1358
- if (pair) {
1359
- if (pair.inframe) lqin2.push(prod);
1360
- else lqt2.push(prod);
1361
- } else if (prod.isnloss || prod.iscloss) {
1362
- lqt2.push(prod);
1363
- } else {
1364
- lqo2.push(prod);
1365
- }
1366
- } else if (prod.rating == "RT") {
1367
- if (pair) {
1368
- if (pair.inframe) rtin2.push(prod);
1369
- else rtt2.push(prod);
1370
- } else if (prod.isnloss || prod.iscloss) {
1371
- rtt2.push(prod);
1372
- } else {
1373
- rto2.push(prod);
1374
- }
1375
- } else {
1376
- if (pair) {
1377
- if (pair.inframe) badin2.push(prod);
1378
- else badt2.push(prod);
1379
- } else if (prod.isnloss || prod.iscloss) {
1380
- badt2.push(prod);
1381
- } else {
1382
- bado2.push(prod);
1383
- }
1384
- }
1385
- }
1386
- if (hqin2.length > 0) {
1387
- hqin.push({ label: elab, lst: [{ label: elab, lst: hqin2 }] });
1388
- } else if (hqt2.length > 0) {
1389
- hqt.push({ label: elab, lst: [{ label: elab, lst: hqt2 }] });
1390
- } else if (hqo2.length > 0) {
1391
- hqo.push({ label: elab, lst: [{ label: elab, lst: hqo2 }] });
1392
- } else if (lqin2.length > 0) {
1393
- lqin.push({ label: elab, lst: [{ label: elab, lst: lqin2 }] });
1394
- } else if (lqt2.length > 0) {
1395
- lqt.push({ label: elab, lst: [{ label: elab, lst: lqt2 }] });
1396
- } else if (lqo2.length > 0) {
1397
- lqo.push({ label: elab, lst: [{ label: elab, lst: lqo2 }] });
1398
- } else if (rtin2.length > 0) {
1399
- rtin.push({ label: elab, lst: [{ label: elab, lst: rtin2 }] });
1400
- } else if (rtt2.length > 0) {
1401
- rtt.push({ label: elab, lst: [{ label: elab, lst: rtt2 }] });
1402
- } else if (rto2.length > 0) {
1403
- rto.push({ label: elab, lst: [{ label: elab, lst: rto2 }] });
1404
- } else if (badin2.length > 0) {
1405
- badin.push({ label: elab, lst: [{ label: elab, lst: badin2 }] });
1406
- } else if (badt2.length > 0) {
1407
- badt.push({ label: elab, lst: [{ label: elab, lst: badt2 }] });
1408
- } else if (bado2.length > 0) {
1409
- bado.push({ label: elab, lst: [{ label: elab, lst: bado2 }] });
1410
- }
1411
- }
1412
- for (const key2 in genepairs) {
1413
- 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;
1414
- const thisset = [];
1415
- for (const elab in genepairs[key2]) {
1416
- const prodlst = genepairs[key2][elab];
1417
- if (prodlst.length == 1) {
1418
- if (prodlst[0].msgid != void 0) {
1419
- continue;
1420
- }
1421
- }
1422
- thisset.push({ label: elab, lst: prodlst });
1423
- for (const prod of prodlst) {
1424
- const pair2 = prod.usepair;
1425
- if (prod.rating == "HQ") {
1426
- if (pair2) {
1427
- if (pair2.inframe) hqin3 = true;
1428
- else hqt3 = true;
1429
- } else if (prod.isnloss || prod.iscloss) {
1430
- hqt3 = true;
1431
- } else {
1432
- hqo3 = true;
1433
- }
1434
- } else if (prod.rating == "LQ") {
1435
- if (pair2) {
1436
- if (pair2.inframe) lqin3 = true;
1437
- else lqt3 = true;
1438
- } else if (prod.isnloss || prod.iscloss) {
1439
- lqt3 = true;
1440
- } else {
1441
- lqo3 = true;
1442
- }
1443
- } else if (prod.rating == "RT") {
1444
- if (pair2) {
1445
- if (pair2.inframe) rtin3 = true;
1446
- else rtt3 = true;
1447
- } else if (prod.isnloss || prod.iscloss) {
1448
- rtt3 = true;
1449
- } else {
1450
- rto3 = true;
1451
- }
1452
- } else {
1453
- if (pair2) {
1454
- if (pair2.inframe) badin3 = true;
1455
- else badt3 = true;
1456
- } else if (prod.isnloss || prod.iscloss) {
1457
- badt3 = true;
1458
- } else {
1459
- bado3 = true;
1460
- }
1461
- }
1462
- }
1463
- }
1464
- if (hqin3) {
1465
- hqin.push({ label: key2, lst: thisset });
1466
- } else if (hqt3) {
1467
- hqt.push({ label: key2, lst: thisset });
1468
- } else if (hqo3) {
1469
- hqo.push({ label: key2, lst: thisset });
1470
- } else if (lqin3) {
1471
- lqin.push({ label: key2, lst: thisset });
1472
- } else if (lqt3) {
1473
- lqt.push({ label: key2, lst: thisset });
1474
- } else if (lqo3) {
1475
- lqo.push({ label: key2, lst: thisset });
1476
- } else if (rtin3) {
1477
- rtin.push({ label: key2, lst: thisset });
1478
- } else if (rtt3) {
1479
- rtt.push({ label: key2, lst: thisset });
1480
- } else if (rto3) {
1481
- rto.push({ label: key2, lst: thisset });
1482
- } else if (badin3) {
1483
- badin.push({ label: key2, lst: thisset });
1484
- } else if (badt3) {
1485
- badt.push({ label: key2, lst: thisset });
1486
- } else if (bado3) {
1487
- bado.push({ label: key2, lst: thisset });
1488
- }
1489
- }
1490
- sample.egglst = [];
1491
- sample.hqincount = 0;
1492
- sample.lqincount = 0;
1493
- if (hqin.length) {
1494
- sample.egglst.push({
1495
- 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>',
1496
- lst: hqin
1497
- });
1498
- sample.hqincount = hqin.reduce((i, j) => i + j.lst.length, 0);
1499
- }
1500
- if (hqt.length) {
1501
- sample.egglst.push({
1502
- 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>',
1503
- lst: hqt
1504
- });
1505
- }
1506
- if (hqo.length) {
1507
- sample.egglst.push({
1508
- 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>',
1509
- lst: hqo
1510
- });
1511
- }
1512
- if (lqin.length) {
1513
- sample.egglst.push({
1514
- 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>',
1515
- lst: lqin
1516
- });
1517
- sample.lqincount = lqin.reduce((i, j) => i + j, 0);
1518
- }
1519
- if (lqt.length) {
1520
- sample.egglst.push({
1521
- 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>',
1522
- lst: lqt
1523
- });
1524
- }
1525
- if (lqo.length) {
1526
- sample.egglst.push({
1527
- 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>',
1528
- lst: lqo
1529
- });
1530
- }
1531
- if (rtin.length) {
1532
- sample.egglst.push({
1533
- htmlab: 'Read-through <span style="background-color:' + colorinframe + ';color:white;padding:1px 3px;font-size:80%;">in-frame&nbsp;&nbsp;</span>',
1534
- lst: rtin
1535
- });
1536
- }
1537
- if (rtt.length) {
1538
- sample.egglst.push({
1539
- htmlab: 'Read-through <span style="background-color:#E3C3C8;padding:1px 3px;font-size:80%;">truncation</span>',
1540
- lst: rtt
1541
- });
1542
- }
1543
- if (rto.length) {
1544
- sample.egglst.push({
1545
- htmlab: 'Read-through <span style="background-color:#ccc;padding:1px 3px;font-size:80%;">others&nbsp;&nbsp;&nbsp;&nbsp;</span>',
1546
- lst: rto
1547
- });
1548
- }
1549
- if (badin.length) {
1550
- sample.egglst.push({
1551
- 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>',
1552
- lst: badin
1553
- });
1554
- }
1555
- if (badt.length) {
1556
- sample.egglst.push({
1557
- 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>',
1558
- lst: badt
1559
- });
1560
- }
1561
- if (bado.length) {
1562
- sample.egglst.push({
1563
- 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>',
1564
- lst: bado
1565
- });
1566
- }
1567
- }
1568
- this.samples.sort((a, b) => {
1569
- if (a.hqincount == b.hqincount) {
1570
- return b.lqincount - a.lqincount;
1571
- }
1572
- return b.hqincount - a.hqincount;
1573
- });
1574
- for (const sample of this.samples) {
1575
- for (const egg of sample.egglst) {
1576
- for (const eg of egg.lst) {
1577
- for (const evt of eg.lst) {
1578
- evt.lst.sort((a, b) => {
1579
- const pa = a.usepair, pb = b.usepair;
1580
- if (pa) {
1581
- if (pb) {
1582
- if (pa.inframe) {
1583
- if (!pb.inframe) {
1584
- return -1;
1585
- }
1586
- } else {
1587
- if (pb.inframe) {
1588
- return 1;
1589
- }
1590
- }
1591
- } else {
1592
- return -1;
1593
- }
1594
- } else {
1595
- if (pb) {
1596
- return 1;
1597
- }
1598
- }
1599
- return b.score - a.score;
1600
- });
1601
- }
1602
- }
1603
- egg.lst.sort((a, b) => {
1604
- if (a.lst.length != b.lst.length) {
1605
- return b.lst.length - a.lst.length;
1606
- }
1607
- let scorea = 0;
1608
- for (const evta of a.lst) {
1609
- for (const prod of evta.lst) {
1610
- scorea = Math.max(scorea, prod.score);
1611
- }
1612
- }
1613
- let scoreb = 0;
1614
- for (const evtb of b.lst) {
1615
- for (const prod of evtb.lst) {
1616
- scoreb = Math.max(scoreb, prod.score);
1617
- }
1618
- }
1619
- return scoreb - scorea;
1620
- });
1621
- }
1622
- let prodid = 1;
1623
- for (const egg of sample.egglst) {
1624
- for (const eg of egg.lst) {
1625
- for (const evt of eg.lst) {
1626
- for (const prod of evt.lst) {
1627
- prod.prodid = prodid++;
1628
- }
1629
- }
1630
- }
1631
- }
1632
- }
1633
- this.step_gene();
1634
- this.step_table();
1635
- }
1636
- dogenefilter() {
1637
- let va = this.gui.inputa.property("value");
1638
- let vb = this.gui.inputb.property("value");
1639
- if (va.length + vb.length == 0) {
1640
- this.gui.says.text(
1641
- "Showing " + (this.genelst.length > 100 ? 100 : "all") + " of " + this.genelst.length + " pairs"
1642
- );
1643
- this.geneshow(this.genelst.length > 100 ? this.genelst.slice(0, 100) : this.genelst);
1644
- return;
1645
- }
1646
- va = va.length == 0 ? null : va.toLowerCase();
1647
- vb = vb.length == 0 ? null : vb.toLowerCase();
1648
- const uselst = [];
1649
- for (const g of this.genelst) {
1650
- if (va) {
1651
- if (!g.a) continue;
1652
- if (g.a.toLowerCase().indexOf(va) == -1) continue;
1653
- }
1654
- if (vb) {
1655
- if (!g.b) continue;
1656
- if (g.b.toLowerCase().indexOf(vb) == -1) continue;
1657
- }
1658
- uselst.push(g);
1659
- }
1660
- this.gui.says.text("Showing " + Math.min(100, uselst.length) + " of " + this.genelst.length + " pairs");
1661
- this.geneshow(uselst.length > 100 ? uselst.slice(0, 100) : uselst);
1662
- }
1663
- geneshow(lst) {
1664
- this.genetable.selectAll("*").remove();
1665
- const tr = this.genetable.append("tr").style("background-color", "#ededed").style("font-size", ".8em");
1666
- tr.append("td").text("gene A");
1667
- tr.append("td").text("gene B");
1668
- tr.append("td").text("# sample");
1669
- tr.append("td").text("rating");
1670
- for (const evt of lst) {
1671
- let color1 = "black", color2 = "black", weight1, weight2;
1672
- if (evt.ainter) {
1673
- color1 = "#aaa";
1674
- weight1 = "normal";
1675
- } else {
1676
- const a = evt.samples[0].prodlst[0].hlgene;
1677
- if (a == 1 || a == 3 || a == 4) weight1 = "bold";
1678
- if (a == 4) color1 = knownprod_c;
1679
- }
1680
- if (evt.binter) {
1681
- color2 = "#aaa";
1682
- weight2 = "normal";
1683
- } else {
1684
- const a = evt.samples[0].prodlst[0].hlgene;
1685
- if (a == 2 || a == 3 || a == 4) weight2 = "bold";
1686
- if (a == 4) color2 = knownprod_c;
1687
- }
1688
- const tr2 = this.genetable.append("tr").attr("class", "sja_clb");
1689
- tr2.append("td").text(evt.a).style("color", color1).style("font-weight", weight1);
1690
- tr2.append("td").text(evt.b).style("color", color2).style("font-weight", weight2);
1691
- const td = tr2.append("td").text(evt.samples.length);
1692
- tr2.on("click", () => {
1693
- const p = tr2.node().getBoundingClientRect();
1694
- const pane2 = newpane({ x: p.left + p.width + 10, y: p.top });
1695
- pane2.header.text(evt.a + " - " + evt.b);
1696
- const table = pane2.body.append("table");
1697
- for (const sample of evt.samples) {
1698
- const tr3 = table.append("tr");
1699
- tr3.append("td").style("vertical-align", "top").style("padding-top", "5px").text(sample.name);
1700
- const td2 = tr3.append("td");
1701
- for (const prod of sample.prodlst) {
1702
- const logo = this.eventlogo([prod], td2);
1703
- logo.style("position", "relative");
1704
- logo.append("div").style("position", "absolute").style("width", "100%").style("height", "100%").style("top", "0px").style("left", "0px").on("mouseover", (event) => {
1705
- const p2 = event.target.getBoundingClientRect();
1706
- tip.clear().show(p2.left + p2.width - 2, p2.top - 30);
1707
- this.showsvpairs({
1708
- prodlst: [prod],
1709
- holder: tip.d.append("div"),
1710
- nodetail: true,
1711
- sample,
1712
- eglst: null,
1713
- showothersample: false
1714
- });
1715
- }).on("click", (event) => {
1716
- const p2 = event.target.getBoundingClientRect();
1717
- const pane = newpane({ x: p2.left + p2.width + 40, y: p2.top - 60 });
1718
- pane.header.text(sample.name);
1719
- this.showsvpairs({
1720
- prodlst: [prod],
1721
- holder: pane.body
1722
- });
1723
- });
1724
- }
1725
- }
1726
- });
1727
- const hash = {};
1728
- for (const smp of evt.samples) {
1729
- const hash2 = {};
1730
- for (const p of smp.prodlst) {
1731
- hash2[p.rating] = 1;
1732
- }
1733
- for (var n in hash2) {
1734
- if (!(n in hash)) {
1735
- hash[n] = 0;
1736
- }
1737
- hash[n]++;
1738
- }
1739
- }
1740
- const lst2 = [];
1741
- for (const smp of ["HQ", "LQ", "RT", "bad"]) {
1742
- if (hash[smp]) {
1743
- lst2.push(
1744
- '<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>"
1745
- );
1746
- }
1747
- }
1748
- tr2.append("td").html(lst2.join(" "));
1749
- }
1750
- }
1751
- step_gene() {
1752
- this.gui = {};
1753
- this.genefilter.append("span").text("Filter:");
1754
- this.gui.inputa = this.genefilter.append("input").attr("size", 7).attr("placeholder", "gene A").style("margin-left", "10px").on("keyup", () => this.dogenefilter());
1755
- this.gui.inputb = this.genefilter.append("input").attr("size", 7).attr("placeholder", "gene B").style("margin-left", "10px").on("keyup", () => this.dogenefilter());
1756
- this.genefilter.append("button").style("margin-left", "10px").text("Reset").on("click", () => {
1757
- this.gui.inputa.property("value", "");
1758
- this.gui.inputb.property("value", "");
1759
- this.dogenefilter();
1760
- });
1761
- this.gui.says = this.genefilter.append("span").style("padding-left", "20px");
1762
- const events = {};
1763
- const genes = /* @__PURE__ */ new Set();
1764
- for (const sample of this.samples) {
1765
- for (const k in sample.events) {
1766
- for (const prod of sample.events[k]) {
1767
- if (!prod.geneA || !prod.geneB) continue;
1768
- if (prod.rating == "RT") continue;
1769
- if (prod.geneA) {
1770
- genes.add(prod.geneA);
1771
- }
1772
- if (prod.geneB) {
1773
- genes.add(prod.geneB);
1774
- }
1775
- const n = (prod.geneA ? prod.geneA : "<" + prod.chrA) + " - " + (prod.geneB ? prod.geneB : "<" + prod.chrB);
1776
- if (!(n in events)) {
1777
- events[n] = {};
1778
- }
1779
- if (!(sample.name in events[n])) {
1780
- events[n][sample.name] = [];
1781
- }
1782
- events[n][sample.name].push(prod);
1783
- }
1784
- }
1785
- }
1786
- this.buttgene.text(genes.size + " gene" + (genes.size > 1 ? "s" : ""));
1787
- for (const k in events) {
1788
- const tmp = k.split(" - ");
1789
- const evt = { samples: [] };
1790
- if (tmp[0][0] == "<") {
1791
- evt.a = tmp[0].slice(1, tmp[0].length);
1792
- evt.ainter = true;
1793
- } else {
1794
- evt.a = tmp[0];
1795
- }
1796
- if (tmp[1][0] == "<") {
1797
- evt.b = tmp[1].slice(1, tmp[1].length);
1798
- evt.binter = true;
1799
- } else {
1800
- evt.b = tmp[1];
1801
- }
1802
- for (const sn in events[k]) {
1803
- evt.samples.push({ name: sn, prodlst: events[k][sn] });
1804
- }
1805
- this.genelst.push(evt);
1806
- }
1807
- this.genelst.sort((a, b) => {
1808
- let ca = 0;
1809
- for (const s of a.samples) {
1810
- for (const p of s.prodlst) {
1811
- if (p.rating == "HQ") ca++;
1812
- }
1813
- }
1814
- let cb = 0;
1815
- for (const s of b.samples) {
1816
- for (const p of s.prodlst) {
1817
- if (p.rating == "HQ") cb++;
1818
- }
1819
- }
1820
- return cb - ca;
1821
- });
1822
- this.dogenefilter();
1823
- }
1824
- step_table() {
1825
- this.eggbar = [];
1826
- this.ul.selectAll("*").remove();
1827
- for (const sample of this.samples) {
1828
- this.ul.append("li").style("font-weight", "bold").style("color", "#545454").text(sample.name);
1829
- sample.ul = this.ul.append("ul").style("margin-bottom", "10px");
1830
- this.showsample(sample);
1831
- }
1832
- }
1833
- showsample(sample) {
1834
- sample.ul.selectAll("*").remove();
1835
- for (const egg of sample.egglst) {
1836
- const evtnum = egg.lst.reduce((i, j) => i + j.lst.length, 0);
1837
- const li = sample.ul.append("li");
1838
- const bar = li.append("div").attr("class", "sja_clb2").html(egg.htmlab + " " + evtnum);
1839
- bar.on("click", () => {
1840
- for (const bar0 of this.eggbar) {
1841
- bar0.style("background-color", "");
1842
- }
1843
- bar.style("background-color", "yellow");
1844
- const next = select_default(li.node().nextSibling);
1845
- if (next.style("display") == "none") {
1846
- appear(next);
1847
- egg.isopen = true;
1848
- } else {
1849
- disappear(next);
1850
- egg.isopen = false;
1851
- }
1852
- });
1853
- this.eggbar.push(bar);
1854
- const div = sample.ul.append("div").style("margin", "10px");
1855
- this.showevents(sample, egg.lst, div);
1856
- }
1857
- }
1858
- showevents(sample, eglst, holder) {
1859
- const svg = holder.append("svg");
1860
- 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;
1861
- for (const eg of eglst) {
1862
- graphheight += rows;
1863
- if (eg.lst.length == 1) {
1864
- graphheight += rowh;
1865
- } else {
1866
- graphheight += vpad * 2 + (rowh + rows) * eg.lst.length + (rowh2 + rows) * (eg.lst.length - 1) + gvpad;
1867
- }
1868
- for (const evt of eg.lst) {
1869
- evt.svg = {};
1870
- const prodlst = evt.lst;
1871
- const prod = prodlst[0];
1872
- let labA, labB;
1873
- if (prod.geneA) {
1874
- const t = prod.geneA.split(",");
1875
- if (t.length > 2) {
1876
- labA = t[0] + "," + t[1] + "...";
1877
- } else {
1878
- labA = prod.geneA;
1879
- }
1880
- } else {
1881
- labA = "";
1882
- }
1883
- if (prod.geneB) {
1884
- const t = prod.geneB.split(",");
1885
- if (t.length > 2) {
1886
- labB = t[0] + "," + t[1] + "...";
1887
- } else {
1888
- labB = prod.geneB;
1889
- }
1890
- } else {
1891
- labB = "";
1892
- }
1893
- svg.append("text").text(labA).attr("font-size", fontsize).attr("font-family", "Courier").each(function() {
1894
- geneAw = Math.max(geneAw, this.getBBox().width);
1895
- }).remove();
1896
- svg.append("text").text(labB).attr("font-size", fontsize).attr("font-family", "Courier").each(function() {
1897
- geneBw = Math.max(geneBw, this.getBBox().width);
1898
- }).remove();
1899
- svg.append("text").text(prod.rating).attr("font-size", fontsize).attr("font-family", "Courier").each(function() {
1900
- evt.svg.ratingw = this.getBBox().width;
1901
- }).remove();
1902
- evt.svg.framew = 22;
1903
- evt.svg.typew = 60;
1904
- if (prod.usepair) {
1905
- evt.svg.frameword = prod.usepair.inframe ? "IN" : "O";
1906
- } else {
1907
- evt.svg.frameword = "?";
1908
- }
1909
- svg.append("text").text(prod.featureA).attr("font-size", fontsizefeature).attr("font-family", font).each(function() {
1910
- evt.svg.featurew = this.getBBox().width;
1911
- }).remove();
1912
- svg.append("text").text(prod.featureB).attr("font-size", fontsizefeature).attr("font-family", font).each(function() {
1913
- evt.svg.featurew = Math.max(evt.svg.featurew, this.getBBox().width);
1914
- }).remove();
1915
- svg.append("text").text(Math.floor(prod.score)).attr("font-size", fontsize).attr("font-family", font).each(function() {
1916
- evt.svg.scorew = this.getBBox().width;
1917
- }).remove();
1918
- evt.svg.logow = evt.svg.ratingw + evt.svg.framew + evt.svg.typew + evt.svg.featurew + evt.svg.scorew + s5 * 6;
1919
- eventlogow = Math.max(eventlogow, evt.svg.logow + (prodlst.length > 1 ? s4 + etw : 0));
1920
- if (prod.geneA && prod.geneB) {
1921
- const slst = this.elab2sample[evt.label];
1922
- if (!slst) {
1923
- evt.svg.recurtext = "Recurrence check error";
1924
- evt.svg.recurtextcolor = "red";
1925
- } else if (slst.length == 1) {
1926
- evt.svg.recurtext = "No recurrence";
1927
- evt.svg.recurtextcolor = "#aaaaaa";
1928
- } else {
1929
- evt.svg.hasrecurrence = true;
1930
- evt.svg.recurtext = "In " + slst.length + " samples";
1931
- evt.svg.recurtextcolor = "black";
1932
- }
1933
- } else {
1934
- evt.svg.recurtext = "Unknown recurrence";
1935
- evt.svg.recurtextcolor = "#aaaaaa";
1936
- }
1937
- svg.append("text").text(evt.svg.recurtext).attr("font-size", fontsize - 4).attr("font-family", font).each(function() {
1938
- evt.svg.recurw = this.getBBox().width;
1939
- }).remove();
1940
- recurw = Math.max(recurw, evt.svg.recurw);
1941
- }
1942
- }
1943
- geneAw += 10;
1944
- geneBw += 10;
1945
- graphheight += rows;
1946
- let ghandlew = 100;
1947
- let roww = chrAw + s1 + rowh + s7 + geneAw + genesp + s2 + genesp + geneBw + s7 + rowh + s1 + chrBw + s3 + eventlogow + s6 + recurw;
1948
- svg.attr("width", hpad0 * 2 + hpad * 2 + roww + ghandlew).attr("height", graphheight);
1949
- const g = svg.append("g").attr("transform", "translate(" + hpad0 + ",0)");
1950
- let y = 0;
1951
- for (const eg of eglst) {
1952
- y += rows;
1953
- const g_eg = g.append("g").attr("transform", "translate(0," + y + ")");
1954
- 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);
1955
- if (eg.lst.length > 1) {
1956
- 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");
1957
- if (eg.ismsg) {
1958
- const g2 = g_eg.append("g").attr("transform", "translate(" + (roww + hpad * 2) + ",0)");
1959
- g2.append("rect").attr("width", ghandlew).attr("height", rowh).attr("fill", "#858585").attr("shape-rendering", "crispEdges");
1960
- 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");
1961
- g2.append("rect").attr("width", ghandlew).attr("height", rowh).attr("fill", "white").attr("fill-opacity", 0).on("click", (event) => {
1962
- const joinlst = [];
1963
- const idlst = [];
1964
- for (const evt of eg.lst) {
1965
- const prod = evt.lst[0];
1966
- idlst.push(prod.prodid);
1967
- const p2 = {
1968
- a: {
1969
- chr: prod.chrA,
1970
- position: prod.posA,
1971
- strand: prod.ortA,
1972
- name: prod.geneA ? prod.geneA : prod.chrA,
1973
- ratio: prod.ratioA.toFixed(2),
1974
- feature: prod.featureA,
1975
- contiglen: prod.matchA,
1976
- chimericreads: prod.readsA,
1977
- repeatscore: prod.repeatA
1978
- },
1979
- b: {
1980
- chr: prod.chrB,
1981
- position: prod.posB,
1982
- strand: prod.ortB,
1983
- name: prod.geneB ? prod.geneB : prod.chrB,
1984
- ratio: prod.ratioB.toFixed(2),
1985
- feature: prod.featureB,
1986
- contiglen: prod.matchB,
1987
- chimericreads: prod.readsB,
1988
- repeatscore: prod.repeatB
1989
- },
1990
- rating: prod.rating,
1991
- score: Math.ceil(prod.score)
1992
- };
1993
- if (prod.usepair) {
1994
- p2.inframe = prod.usepair.inframe;
1995
- const x = prod.usepair.a;
1996
- p2.a.gm = this.genome.isoformmatch(x.isoform, p2.a.chr, p2.a.position);
1997
- p2.a.codon = x.codon;
1998
- p2.a.exon = x.exon;
1999
- p2.a.atupstream = x.atupstream;
2000
- p2.a.atdownstream = x.atdownstream;
2001
- p2.a.atutr5 = x.atutr5;
2002
- p2.a.atutr3 = x.atutr3;
2003
- const y2 = prod.usepair.b;
2004
- p2.b.gm = this.genome.isoformmatch(y2.isoform, p2.b.chr, p2.b.position);
2005
- p2.b.codon = y2.codon;
2006
- p2.b.exon = y2.exon;
2007
- p2.b.atupstream = y2.atupstream;
2008
- p2.b.atdownstream = y2.atdownstream;
2009
- p2.b.atutr5 = y2.atutr5;
2010
- p2.b.atutr3 = y2.atutr3;
2011
- let aalen = 0, bplen2 = 0;
2012
- if (x.contigaa && y2.contigaa) {
2013
- aalen = y2.contigaa - x.contigaa - 1;
2014
- }
2015
- if (x.contigbp && y2.contigbp) {
2016
- bplen2 = y2.contigbp - x.contigbp - 1;
2017
- }
2018
- if (aalen) {
2019
- p2.interstitial = { aalen };
2020
- }
2021
- if (bplen2) {
2022
- if (!p2.interstitial) p2.interstitial = {};
2023
- p2.interstitial.bplen = bplen2;
2024
- }
2025
- }
2026
- joinlst.push(p2);
2027
- }
2028
- const p = event.target.getBoundingClientRect();
2029
- const pane = newpane({ x: p.left + 10, y: p.top + p.height + 10 });
2030
- const div = pane.body.append("div").style("margin", "10px");
2031
- div.append("span").style("padding-right", "20px").text("Product id: " + idlst.join(", "));
2032
- div.append("button").style("margin-right", "10px").text("Break").on("click", () => {
2033
- const eg2id = eg.lst.map((j) => j.lst[0].prodid);
2034
- let idx = 0;
2035
- for (; idx < eglst.length; idx++) {
2036
- const eg2 = eglst[idx];
2037
- if (eg2.ismsg) {
2038
- const eg22id = eg2.lst.map((j) => j.lst[0].prodid);
2039
- if (eg22id.join(",") == eg2id.join(",")) {
2040
- break;
2041
- }
2042
- }
2043
- }
2044
- delete eg.ismsg;
2045
- const oldlst = eg.lst;
2046
- eg.lst = [eg.lst[0]];
2047
- for (let j = 1; j < oldlst.length; j++) {
2048
- eglst.splice(idx, 0, {
2049
- label: "",
2050
- lst: [oldlst[j]]
2051
- });
2052
- }
2053
- svg.remove();
2054
- this.showevents(sample, eglst, holder);
2055
- pane.pane.remove();
2056
- });
2057
- div.append("button").text("Edit").on("click", (event2) => {
2058
- const inputdom = document.createElement("input");
2059
- div.node().insertBefore(inputdom, event2.target);
2060
- const buttdom = document.createElement("button");
2061
- div.node().insertBefore(buttdom, event2.target);
2062
- div.node().removeChild(event2.target);
2063
- inputdom.focus();
2064
- const input = select_default(inputdom);
2065
- const butt = select_default(buttdom);
2066
- input.attr("size", 10).style("margin", "0px 10px").property("value", idlst.join(","));
2067
- butt.text("Apply").on("click", () => {
2068
- const lst0 = inputdom.value.trim().split(",");
2069
- const goodid = [];
2070
- for (const s of lst0) {
2071
- if (!s) continue;
2072
- const j = Number.parseInt(s);
2073
- if (Number.isNaN(j)) return alert("invalid id: " + s);
2074
- if (this.prodidisinvalid(j, sample)) return alert("invalid id " + j);
2075
- goodid.push(j);
2076
- }
2077
- if (goodid.length <= 1) return alert("must be at least 2 products");
2078
- const newevtlst = [];
2079
- for (const id of goodid) {
2080
- const lookprod = this.extractprod(id, sample);
2081
- if (lookprod) {
2082
- newevtlst.push({ label: lookprod.eventlabel, lst: [lookprod] });
2083
- } else {
2084
- return alert("unknown product id " + id);
2085
- }
2086
- }
2087
- if (newevtlst.length <= 1) return alert("less than 2 products cannot make a group");
2088
- eglst.unshift({ lst: newevtlst, ismsg: true });
2089
- this.showsample(sample);
2090
- pane.pane.remove();
2091
- });
2092
- });
2093
- svtable({
2094
- samplelst: [
2095
- {
2096
- pairlst: joinlst
2097
- }
2098
- ],
2099
- nosample: true,
2100
- holder: pane.body
2101
- });
2102
- const par = {
2103
- pairlst: joinlst,
2104
- genome: this.genome,
2105
- holder: pane.body,
2106
- hostURL: this.hostURL,
2107
- jwt: this.jwt
2108
- };
2109
- import("./svgraph-5Z7VAIVR.js").then((p2) => {
2110
- p2.default(par);
2111
- });
2112
- });
2113
- }
2114
- }
2115
- const g_rows = g_eg.append("g").attr("transform", "translate(" + hpad + "," + (eg.lst.length > 1 ? vpad : 0) + ")");
2116
- let y1 = 0;
2117
- let evtid = 0;
2118
- const bgcolor = "#ededed";
2119
- const elabhash = {};
2120
- for (const e of eg.lst) {
2121
- elabhash[e.label] = 1;
2122
- }
2123
- const showngenenotip = {};
2124
- for (const evt of eg.lst) {
2125
- const prodlst = evt.lst;
2126
- const prod = prodlst[0];
2127
- const thispair = prod.usepair;
2128
- if (eg.lst.length > 1 && evtid > 0) {
2129
- const g_row2 = g_rows.append("g").attr("transform", "translate(" + (chrAw + s1 + rowh + s7 + geneAw + genesp + s2 / 2) + "," + y1 + ")");
2130
- 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");
2131
- if (eg.ismsg) {
2132
- text2.text(prod.mswhat ? prod.mswhat : "No connection detail");
2133
- } else {
2134
- text2.text("Reciprocal");
2135
- }
2136
- y1 += rowh2 + rows;
2137
- }
2138
- const textcolor = prod.chrA == prod.chrB ? "black" : colorctx;
2139
- const g_row = g_rows.append("g").attr("transform", "translate(0," + y1 + ")");
2140
- 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);
2141
- const extevt = { a: null, b: null };
2142
- if (prod.geneA) {
2143
- if (prod.geneA in showngenenotip) {
2144
- showngenenotip[prod.geneA] = 1;
2145
- } else {
2146
- const lst = [];
2147
- for (const elab in sample.gene2events[prod.geneA]) {
2148
- if (!(elab in elabhash)) {
2149
- lst.push(elab);
2150
- }
2151
- }
2152
- if (lst.length > 0) {
2153
- extevt.a = { lst };
2154
- 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);
2155
- if (lst.length > 1) {
2156
- 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");
2157
- }
2158
- 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");
2159
- }
2160
- }
2161
- }
2162
- 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");
2163
- let antisense = false;
2164
- if (thispair) {
2165
- const thisn = thispair.a.isoform;
2166
- if (thisn) {
2167
- const _gm = this.genome.isoformmatch(thisn, prod.chrA, prod.posA);
2168
- if (_gm && _gm.strand != prod.ortA) {
2169
- antisense = true;
2170
- }
2171
- }
2172
- }
2173
- 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);
2174
- let labA;
2175
- if (prod.geneA) {
2176
- const t = prod.geneA.split(",");
2177
- if (t.length > 2) {
2178
- labA = t[0] + "," + t[1] + "...";
2179
- } else {
2180
- labA = prod.geneA;
2181
- }
2182
- } else {
2183
- labA = "";
2184
- }
2185
- 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(
2186
- "font-weight",
2187
- prod.hlgene ? prod.hlgene == 1 || prod.hlgene == 3 || prod.hlgene == 4 ? "bold" : "normal" : "normal"
2188
- ).attr("fill", prod.hlgene ? prod.hlgene == 4 ? knownprod_c : "#545454" : "#545454").attr("text-anchor", "end").attr("dominant-baseline", "central");
2189
- 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");
2190
- 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");
2191
- antisense = false;
2192
- if (thispair) {
2193
- const thisn = thispair.b.isoform;
2194
- if (thisn) {
2195
- const _gm = this.genome.isoformmatch(thisn, prod.chrB, prod.posB);
2196
- if (_gm && _gm.strand != prod.ortB) {
2197
- antisense = true;
2198
- }
2199
- }
2200
- }
2201
- 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);
2202
- let labB;
2203
- if (prod.geneB) {
2204
- let t = prod.geneB.split(",");
2205
- if (t.length > 2) {
2206
- labB = t[0] + "," + t[1] + "...";
2207
- } else {
2208
- labB = prod.geneB;
2209
- }
2210
- } else {
2211
- labB = "";
2212
- }
2213
- 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(
2214
- "font-weight",
2215
- prod.hlgene ? prod.hlgene == 2 || prod.hlgene == 3 || prod.hlgene == 4 ? "bold" : "normal" : "normal"
2216
- ).attr("fill", prod.hlgene ? prod.hlgene == 4 ? knownprod_c : "#545454" : "#545454").attr("dominant-baseline", "central");
2217
- if (prod.geneB) {
2218
- if (prod.geneB in showngenenotip) {
2219
- } else {
2220
- showngenenotip[prod.geneB] = 1;
2221
- const lst = [];
2222
- for (const elab in sample.gene2events[prod.geneB]) {
2223
- if (!(elab in elabhash)) {
2224
- lst.push(elab);
2225
- }
2226
- }
2227
- if (lst.length > 0) {
2228
- extevt.b = { lst };
2229
- 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);
2230
- if (lst.length > 1) {
2231
- 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");
2232
- }
2233
- 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");
2234
- }
2235
- }
2236
- }
2237
- 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);
2238
- let x = chrAw + s1 + rowh + s7 + geneAw + genesp + s2 + genesp + geneBw + s7 + rowh + s1 + chrBw + s3;
2239
- const x0 = x;
2240
- 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);
2241
- x += s5;
2242
- 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");
2243
- x += evt.svg.ratingw + s5;
2244
- prod.hook.mainFrame = {};
2245
- 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");
2246
- if (prod.usepair) {
2247
- prod.hook.mainFrame.bg.attr("fill", prod.usepair.inframe ? colorinframe : coloroutframe);
2248
- } else {
2249
- prod.hook.mainFrame.bg.attr("fill", "none").attr("stroke", "black");
2250
- }
2251
- 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");
2252
- x += evt.svg.framew + s5;
2253
- 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");
2254
- x += evt.svg.typew + s5;
2255
- 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");
2256
- 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");
2257
- x += evt.svg.featurew + s5;
2258
- 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");
2259
- x += evt.svg.scorew + s5 + s4;
2260
- 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", () => {
2261
- logobg.attr("stroke-width", "2");
2262
- const d = tip.clear().showunder(logobg.node()).d.append("div");
2263
- this.prodstat(prod, d);
2264
- }).on("mouseout", () => {
2265
- logobg.attr("stroke-width", "1");
2266
- tip.hide();
2267
- });
2268
- if (prodlst.length > 1) {
2269
- 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);
2270
- 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");
2271
- 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) => {
2272
- logobg2.attr("stroke-width", "2");
2273
- const table = tip.clear().showunder(event.target).d.append("table").style("border-spacing", "10px").style("border-collapse", "separate");
2274
- const tr1 = table.append("tr");
2275
- const tr2 = table.append("tr");
2276
- for (var k = 1; k < prodlst.length; k++) {
2277
- this.eventlogo([prodlst[k]], tr1.append("td"));
2278
- this.prodstat(prodlst[k], tr2.append("td"));
2279
- }
2280
- }).on("mouseout", () => {
2281
- logobg2.attr("stroke-width", "1");
2282
- tip.hide();
2283
- });
2284
- }
2285
- x = chrAw + s1 + rowh + s7 + geneAw + genesp + s2 + genesp + geneBw + s7 + rowh + s1 + chrBw + s3 + eventlogow + s6;
2286
- 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");
2287
- if (evt.svg.hasrecurrence) {
2288
- text.attr("class", "sja_svgtext2").on("mouseover", (event) => {
2289
- const p = event.target.getBoundingClientRect();
2290
- tip.clear().show(p.left + p.width + 10, p.top - 15);
2291
- const slst = this.elab2sample[evt.label];
2292
- const dd = tip.d;
2293
- dd.append("div").style("margin", "10px").style("color", "#aaa").text("This fusion is recurrent in other samples:");
2294
- const table = dd.append("table").style("border-spacing", "10px").style("border-collapse", "separate");
2295
- for (const s of slst) {
2296
- if (s.name == sample.name) {
2297
- continue;
2298
- }
2299
- const tr = table.append("tr");
2300
- tr.append("td").style("font-weight", "bold").style("color", "#858585").text(s.name);
2301
- this.eventlogo(s.events[evt.label], tr.append("td"));
2302
- }
2303
- }).on("mouseout", () => tip.hide());
2304
- }
2305
- 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) => {
2306
- boxa.attr("stroke-width", 2);
2307
- boxb.attr("stroke-width", 2);
2308
- const p = event.target.getBoundingClientRect();
2309
- tip.clear().show(p.left + p.width + s7 / 2, p.top - 30);
2310
- this.showsvpairs({
2311
- prodlst: evt.lst,
2312
- holder: tip.d,
2313
- nodetail: true,
2314
- sample,
2315
- eglst,
2316
- showothersample: true
2317
- });
2318
- }).on("mouseout", () => {
2319
- tip.hide();
2320
- boxa.attr("stroke-width", 1);
2321
- boxb.attr("stroke-width", 1);
2322
- }).on("click", (event) => {
2323
- if (evt.inclick) {
2324
- return;
2325
- }
2326
- evt.inclick = true;
2327
- const p = event.target.getBoundingClientRect();
2328
- const pane3 = newpane({
2329
- x: p.left + p.width + s7 + rowh + s1 + chrBw + s3 + eventlogow + s6 + recurw + 5,
2330
- y: p.top - 100,
2331
- close: function() {
2332
- evt.inclick = false;
2333
- pane3.pane.remove();
2334
- }
2335
- });
2336
- const prod2 = evt.lst[0];
2337
- pane3.header.html(
2338
- '<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>"
2339
- );
2340
- this.showsvpairs({
2341
- prodlst: evt.lst,
2342
- holder: pane3.body
2343
- });
2344
- });
2345
- if (extevt.a) {
2346
- 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", () => {
2347
- this.extevt_mo(extevt.a);
2348
- tip.hide();
2349
- }).on("click", (event) => {
2350
- this.extevt_c(extevt.a, event.target, sample);
2351
- });
2352
- }
2353
- if (extevt.b) {
2354
- 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", () => {
2355
- this.extevt_mo(extevt.b);
2356
- tip.hide();
2357
- }).on("click", (event) => this.extevt_c(extevt.b, event.target, sample));
2358
- }
2359
- y1 += rowh + rows;
2360
- evtid++;
2361
- }
2362
- y += groupheight + (eg.lst.length > 1 ? gvpad : 0);
2363
- }
2364
- holder.style("display", "none");
2365
- }
2366
- extevt_mover(ext, dom, sample) {
2367
- ext.circle.attr("fill", "#858585");
2368
- if (ext.text) {
2369
- ext.text.attr("fill", "white");
2370
- }
2371
- tip.clear().showunder(dom);
2372
- tip.d.append("div").style("margin", "10px").style("color", "#aaa").text("Associated fusions from this sample:");
2373
- this.extevt_table(ext.lst, tip.d, sample);
2374
- }
2375
- extevt_mo(ext) {
2376
- ext.circle.attr("fill", "white");
2377
- if (ext.text) {
2378
- ext.text.attr("fill", "black");
2379
- }
2380
- }
2381
- extevt_c(ext, dom, sample) {
2382
- const p = dom.getBoundingClientRect();
2383
- const pane = newpane({ x: p.left, y: p.top + p.height + 10 });
2384
- this.extevt_table(ext.lst, pane.body, sample);
2385
- }
2386
- extevt_table(lst, holder, sample) {
2387
- const table = holder.append("table").style("border-spacing", "10px").style("border-collapse", "separate");
2388
- for (const elab of lst) {
2389
- const tr = table.append("tr");
2390
- const prodlst = sample.events[elab];
2391
- if (!prodlst) {
2392
- tr.append('<td colspan=2 style="color:red">No products found for ' + elab + "</td>");
2393
- continue;
2394
- }
2395
- const prod = prodlst[0];
2396
- tr.append("td").style("text-align", "right").text(prod.geneA ? prod.geneA : prod.chrA);
2397
- tr.append("td").text(prod.geneB ? prod.geneB : prod.chrB);
2398
- this.eventlogo(prodlst, tr.append("td"));
2399
- }
2400
- }
2401
- eventlogo(prodlst, holder) {
2402
- const d = holder.append("div");
2403
- if (!prodlst || prodlst.length == 0) {
2404
- d.style("color", "red").text("No products");
2405
- } else {
2406
- const p = prodlst[0];
2407
- d.append("div").style("display", "inline-block").style("padding", "2px 4px").style("border", "solid 1px #858585").style("border-radius", "5px").html(
2408
- 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)
2409
- );
2410
- if (prodlst.length > 1) {
2411
- 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);
2412
- }
2413
- }
2414
- return d;
2415
- }
2416
- prodstat(prod, holder) {
2417
- holder.append("p").text("Product id: " + prod.prodid);
2418
- const alertcolor = "#FFb3b3", bg = "#f1f1f1";
2419
- const table = holder.append("table").style("border-spacing", "8px").style("border-collapse", "separate");
2420
- let tr = table.append("tr");
2421
- tr.append("td");
2422
- tr.append("td").style("background-color", bg).text(prod.geneA ? prod.geneA : prod.chrA);
2423
- tr.append("td").style("background-color", bg).text(prod.geneB ? prod.geneB : prod.chrB);
2424
- tr = table.append("tr");
2425
- tr.append("td").style("font-size", "80%").style("background-color", bg).text("chimeric reads");
2426
- tr.append("td").style("padding", "5px").style("background-color", prod.readsA <= this.cf_reads ? alertcolor : "").text(prod.readsA);
2427
- tr.append("td").style("padding", "5px").style("background-color", prod.readsB <= this.cf_reads ? alertcolor : "").text(prod.readsB);
2428
- tr = table.append("tr");
2429
- tr.append("td").style("font-size", "80%").style("background-color", bg).text("ratio");
2430
- tr.append("td").style("padding", "5px").style("background-color", prod.ratioA <= this.cf_ratio ? alertcolor : "").text(Math.ceil(prod.ratioA * 100) + "%");
2431
- tr.append("td").style("padding", "5px").style("background-color", prod.ratioB <= this.cf_ratio ? alertcolor : "").text(Math.ceil(prod.ratioB * 100) + "%");
2432
- tr = table.append("tr");
2433
- tr.append("td").style("font-size", "80%").style("background-color", bg).text("contig length");
2434
- tr.append("td").style("padding", "5px").style("background-color", prod.matchA <= this.cf_match ? alertcolor : "").text(prod.matchA + " bp");
2435
- tr.append("td").style("padding", "5px").style("background-color", prod.matchB <= this.cf_match ? alertcolor : "").text(prod.matchB + " bp");
2436
- tr = table.append("tr");
2437
- tr.append("td").style("font-size", "80%").style("background-color", bg).text("repeat score");
2438
- tr.append("td").style("padding", "5px").style("background-color", prod.repeatA >= this.cf_repeat ? alertcolor : "").text(prod.repeatA);
2439
- tr.append("td").style("padding", "5px").style("background-color", prod.repeatB >= this.cf_repeat ? alertcolor : "").text(prod.repeatB);
2440
- }
2441
- showsvpairs(arg) {
2442
- const table = arg.holder.append("table").style("border-spacing", "10px").style("border-collapse", "separate");
2443
- const tr = table.append("tr");
2444
- const _tr = table.append("tr");
2445
- const expressiontd = _tr.append("td").attr("colspan", arg.prodlst.length);
2446
- const tr2 = table.append("tr");
2447
- const geneset = /* @__PURE__ */ new Set();
2448
- for (const prod of arg.prodlst) {
2449
- if (prod.geneA) {
2450
- geneset.add(prod.geneA);
2451
- }
2452
- if (prod.geneB) {
2453
- geneset.add(prod.geneB);
2454
- }
2455
- const td = tr.append("td").style("vertical-align", "top");
2456
- if (arg.nodetail) {
2457
- const div = td.append("div");
2458
- div.append("span").style("padding-right", "20px").text("Product id: " + prod.prodid);
2459
- const ratingsl = div.append("select").style("margin-right", "5px").on("change", (event) => {
2460
- const sl = event.target;
2461
- const newv = sl.options[sl.selectedIndex].innerHTML;
2462
- prod.rating = newv;
2463
- if (prod.hook.mainRating) {
2464
- prod.hook.mainRating.text(newv);
2465
- }
2466
- if (prod.hook.lessRating) {
2467
- prod.hook.lessRating.text(newv);
2468
- }
2469
- });
2470
- const framesl = div.append("select").style("margin-right", "5px").on("change", (event) => {
2471
- const sl = event.target;
2472
- const inframe = sl.options[sl.selectedIndex].innerHTML == "in-frame";
2473
- prod.usepair.inframe = inframe;
2474
- if (prod.hook.mainFrame) {
2475
- prod.hook.mainFrame.text.text(inframe ? "IN" : "O");
2476
- prod.hook.mainFrame.bg.attr("fill", inframe ? colorinframe : coloroutframe);
2477
- }
2478
- if (prod.hook.lessFrame) {
2479
- prod.hook.lessFrame.html(
2480
- 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>'
2481
- );
2482
- }
2483
- });
2484
- const typesl = div.append("select").style("margin-right", "5px").on("change", (event) => {
2485
- const sl = event.target;
2486
- const i = sl.selectedIndex;
2487
- const newv = sl.options[i].innerHTML;
2488
- prod.type2 = newv;
2489
- if (prod.hook.mainType) {
2490
- prod.hook.mainType.text(newv);
2491
- }
2492
- prod.iscloss = i == 0;
2493
- prod.isnloss = i == 1;
2494
- prod.isfusion = i == 2;
2495
- prod.isitd = i == 3;
2496
- prod.isuptss = i == 4;
2497
- prod.isother = i == 5;
2498
- });
2499
- const effectsl = div.append("select").style("margin-right", "5px").on("change", (event) => {
2500
- const sl = event.target;
2501
- const newv = sl.options[sl.selectedIndex].innerHTML;
2502
- prod.functioneffect = newv;
2503
- });
2504
- div.append("button").text("Create group").on("click", (event) => {
2505
- let dnew = document.createElement("div");
2506
- div.node().insertBefore(dnew, event.target);
2507
- select_default(event.target).remove();
2508
- dnew = select_default(dnew);
2509
- dnew.style("display", "inline-block");
2510
- if (!arg.eglst) {
2511
- dnew.text("Cannot do it here: please go to sample " + arg.sample.name);
2512
- return;
2513
- }
2514
- dnew.append("input").attr("size", 10).property("value", prod.prodid + ",");
2515
- dnew.append("button").style("margin", "0px 10px").text("Apply").on("click", (event2) => {
2516
- const lst0 = event2.target.previousSibling.value.trim().split(",");
2517
- const goodid = [];
2518
- for (const i of lst0) {
2519
- const j = Number.parseInt(i);
2520
- if (Number.isNaN(j)) return alert("invalid id " + i);
2521
- if (this.prodidisinvalid(j, arg.sample)) return alert("invalid id " + j);
2522
- goodid.push(j);
2523
- }
2524
- if (goodid.length <= 1) return alert("need at least 2 id");
2525
- const newevtlst = [];
2526
- for (const i of goodid) {
2527
- const thisprod = this.extractprod(i, arg.sample);
2528
- if (thisprod) {
2529
- newevtlst.push({ label: thisprod.eventlabel, lst: [thisprod] });
2530
- } else {
2531
- return alert("invalid id " + i);
2532
- }
2533
- }
2534
- if (newevtlst.length <= 1) return alert("less than 2 products cannot make a group");
2535
- arg.eglst.unshift({ lst: newevtlst, ismsg: true });
2536
- this.showsample(arg.sample);
2537
- tip.hide();
2538
- });
2539
- });
2540
- ratingsl.append("option").text("HQ");
2541
- ratingsl.append("option").text("LQ");
2542
- ratingsl.append("option").text("RT");
2543
- ratingsl.append("option").text("bad");
2544
- ratingsl.append("option").text("Major");
2545
- switch (prod.rating) {
2546
- case "HQ":
2547
- ratingsl.property("selectedindex", 0);
2548
- break;
2549
- case "LQ":
2550
- ratingsl.property("selectedIndex", 1);
2551
- break;
2552
- case "RT":
2553
- ratingsl.property("selectedIndex", 2);
2554
- break;
2555
- case "bad":
2556
- ratingsl.property("selectedIndex", 3);
2557
- break;
2558
- case "Major":
2559
- ratingsl.property("selectedIndex", 4);
2560
- break;
2561
- default:
2562
- alert("unknown rating: " + prod.rating);
2563
- }
2564
- framesl.append("option").text("in-frame");
2565
- framesl.append("option").text("out-of-frame");
2566
- if (!prod.usepair) {
2567
- framesl.attr("disabled", 1);
2568
- } else {
2569
- framesl.property("selectedIndex", prod.usepair.inframe ? 0 : 1);
2570
- }
2571
- typesl.append("option").text("CLoss");
2572
- typesl.append("option").text("NLoss");
2573
- typesl.append("option").text("Fusion");
2574
- typesl.append("option").text("ITD");
2575
- typesl.append("option").text("upTSS");
2576
- typesl.append("option").text("other");
2577
- if (prod.iscloss) {
2578
- typesl.property("selectedIndex", 0);
2579
- } else if (prod.isnloss) {
2580
- typesl.property("selectedIndex", 1);
2581
- } else if (prod.isfusion) {
2582
- typesl.property("selectedIndex", 2);
2583
- } else if (prod.isitd) {
2584
- typesl.property("selectedIndex", 3);
2585
- } else if (prod.isuptss) {
2586
- typesl.property("selectedIndex", 4);
2587
- } else if (prod.isother) {
2588
- typesl.property("selectedIndex", 5);
2589
- } else {
2590
- alert("unknown type2: " + prod.type2);
2591
- }
2592
- effectsl.append("option").text("unknown effect");
2593
- effectsl.append("option").text("fusion gene");
2594
- effectsl.append("option").text("truncation, activated oncogene");
2595
- effectsl.append("option").text("truncation, loss-of-function");
2596
- effectsl.append("option").text("truncation, no consequence");
2597
- effectsl.append("option").text("ITD");
2598
- switch (prod.functioneffect) {
2599
- case void 0:
2600
- effectsl.property("selectedIndex", 0);
2601
- break;
2602
- case "fusion gene":
2603
- effectsl.property("selectedIndex", 1);
2604
- break;
2605
- case "truncation, activated oncogene":
2606
- effectsl.property("selectedIndex", 2);
2607
- break;
2608
- case "truncation, loss-of-function":
2609
- effectsl.property("selectedIndex", 3);
2610
- break;
2611
- case "truncation, no consequence":
2612
- effectsl.property("selectedIndex", 4);
2613
- break;
2614
- case "ITD":
2615
- effectsl.property("selectedIndex", 5);
2616
- break;
2617
- }
2618
- }
2619
- const p = {
2620
- a: {
2621
- chr: prod.chrA,
2622
- position: prod.posA,
2623
- strand: prod.ortA,
2624
- name: prod.geneA ? prod.geneA : prod.chrA,
2625
- ratio: prod.ratioA.toFixed(2),
2626
- feature: prod.featureA,
2627
- contiglen: prod.matchA,
2628
- chimericreads: prod.readsA,
2629
- repeatscore: prod.repeatA
2630
- },
2631
- b: {
2632
- chr: prod.chrB,
2633
- position: prod.posB,
2634
- strand: prod.ortB,
2635
- name: prod.geneB ? prod.geneB : prod.chrB,
2636
- ratio: prod.ratioB.toFixed(2),
2637
- feature: prod.featureB,
2638
- contiglen: prod.matchB,
2639
- chimericreads: prod.readsB,
2640
- repeatscore: prod.repeatB
2641
- },
2642
- rating: prod.rating,
2643
- score: Math.ceil(prod.score),
2644
- originalprod: prod
2645
- };
2646
- if (prod.usepair) {
2647
- p.inframe = prod.usepair.inframe;
2648
- const x = prod.usepair.a;
2649
- p.a.gm = this.genome.isoformmatch(x.isoform, prod.chrA, prod.posA);
2650
- p.a.codon = x.codon;
2651
- p.a.exon = x.exon;
2652
- p.a.atupstream = x.atupstream;
2653
- p.a.atdownstream = x.atdownstream;
2654
- p.a.atutr5 = x.atutr5;
2655
- p.a.atutr3 = x.atutr3;
2656
- const y = prod.usepair.b;
2657
- p.b.gm = this.genome.isoformmatch(y.isoform, prod.chrB, prod.posB);
2658
- p.b.codon = y.codon;
2659
- p.b.exon = y.exon;
2660
- p.b.atupstream = y.atupstream;
2661
- p.b.atdownstream = y.atdownstream;
2662
- p.b.atutr5 = y.atutr5;
2663
- p.b.atutr3 = y.atutr3;
2664
- let aalen = 0, bplen2 = 0;
2665
- if (x.contigaa && y.contigaa) {
2666
- aalen = y.contigaa - x.contigaa - 1;
2667
- }
2668
- if (x.contigbp && y.contigbp) {
2669
- bplen2 = y.contigbp - x.contigbp - 1;
2670
- }
2671
- if (aalen) {
2672
- p.interstitial = { aalen };
2673
- }
2674
- if (bplen2) {
2675
- if (!p.interstitial) p.interstitial = {};
2676
- p.interstitial.bplen = bplen2;
2677
- }
2678
- }
2679
- svtable({
2680
- samplelst: [
2681
- {
2682
- pairlst: [p]
2683
- }
2684
- ],
2685
- nosample: true,
2686
- holder: td
2687
- });
2688
- const par = {
2689
- pairlst: [p],
2690
- genome: this.genome,
2691
- holder: td,
2692
- quiet: true,
2693
- hostURL: this.hostURL,
2694
- jwt: this.jwt
2695
- };
2696
- import("./svgraph-5Z7VAIVR.js").then((p2) => {
2697
- p2.default(par);
2698
- });
2699
- if (!arg.nodetail) {
2700
- const td2 = tr2.append("td").style("font-size", ".8em").style("vertical-align", "top");
2701
- const lst = [];
2702
- for (const at of this.atlst) {
2703
- if (!at.custom) continue;
2704
- const v = prod[at.key];
2705
- lst.push({
2706
- k: at.label,
2707
- v: v == void 0 ? "" : v
2708
- });
2709
- }
2710
- make_table_2col(td2, lst, 25);
2711
- prod.pairs.sort((a, b) => {
2712
- if (a.inuse) return -1;
2713
- if (b.inuse) return 1;
2714
- return 0;
2715
- });
2716
- const table0 = td2.append("table");
2717
- for (const pair of prod.pairs) {
2718
- const tr3 = table0.append("tr");
2719
- tr3.append("td").html(
2720
- (pair.inframe ? "in-frame" : "out-of-frame") + '<div style="font-size:70%">frame code: ' + pair.frame + "</div>"
2721
- );
2722
- const td3 = tr3.append("td");
2723
- const table2 = td3.append("table").style("margin-bottom", "20px").style("border", pair.inuse ? "solid 1px black" : "").style("border-spacing", "10px").style("border-collapse", "separate");
2724
- let _tr2 = table2.append("tr").style("color", "#858585").style("font-size", ".7em");
2725
- _tr2.append("td").text("gene");
2726
- _tr2.append("td").text("isoform");
2727
- _tr2.append("td").text("gene position");
2728
- _tr2.append("td").text("exon");
2729
- _tr2.append("td").text("anchor");
2730
- _tr2.append("td").text("contig AA");
2731
- _tr2.append("td").text("contig bp");
2732
- const tr1 = table2.append("tr");
2733
- const tr22 = table2.append("tr");
2734
- tr1.append("td").text(prod.geneA ? prod.geneA : prod.chrA);
2735
- tr22.append("td").text(prod.geneB ? prod.geneB : prod.chrB);
2736
- tr1.append("td").text(pair.a.isoform ? pair.a.isoform : "");
2737
- tr22.append("td").text(pair.b.isoform ? pair.b.isoform : "");
2738
- tr1.append("td").text(
2739
- 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" : ""
2740
- );
2741
- tr22.append("td").text(
2742
- 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" : ""
2743
- );
2744
- tr1.append("td").text(pair.a.exon ? pair.a.exon : "");
2745
- tr22.append("td").text(pair.b.exon ? pair.b.exon : "");
2746
- tr1.append("td").text(pair.a.anchor ? pair.a.anchor : "");
2747
- tr22.append("td").text(pair.b.anchor ? pair.b.anchor : "");
2748
- tr1.append("td").html(pair.a.contigaa ? '<span style="color:#858585;font-size:70%">ends at</span> ' + pair.a.contigaa : "?");
2749
- tr22.append("td").html(
2750
- pair.b.contigaa ? '<span style="color:#858585;font-size:70%">starts at</span> ' + pair.b.contigaa : "?"
2751
- );
2752
- tr1.append("td").html(pair.a.contigbp ? '<span style="color:#858585;font-size:70%">ends at</span> ' + pair.a.contigbp : "?");
2753
- tr22.append("td").html(
2754
- pair.b.contigbp ? '<span style="color:#858585;font-size:70%">starts at</span> ' + pair.b.contigbp : "?"
2755
- );
2756
- }
2757
- }
2758
- }
2759
- if (!arg.sample) {
2760
- return;
2761
- }
2762
- const thislab = arg.prodlst[0].eventlabel;
2763
- const samplelst = this.elab2sample[thislab];
2764
- const othersample = [];
2765
- if (samplelst) {
2766
- for (const s of samplelst) {
2767
- if (s.name != arg.sample.name) othersample.push(s);
2768
- }
2769
- }
2770
- if (arg.showothersample && othersample.length > 0) {
2771
- arg.holder.append("button").style("display", "block").style("margin", "20px").text("Show in " + othersample.length + " other sample" + (othersample.length > 1 ? "s" : "")).on("click", (event) => {
2772
- select_default(event.target).remove();
2773
- for (const sample of othersample) {
2774
- const prodlst = sample.events[thislab];
2775
- if (!prodlst) {
2776
- arg.holder.append("div").style("margin", "20px").style("color", "red").text("Error: no products for this event in " + sample.name);
2777
- continue;
2778
- }
2779
- const table2 = arg.holder.append("table").style("margin-top", "20px").style("border", "solid 1px #ccc");
2780
- const tr3 = table2.append("tr");
2781
- tr3.append("td").text(sample.name);
2782
- const td = tr3.append("td");
2783
- this.showsvpairs({
2784
- prodlst,
2785
- holder: td,
2786
- nodetail: true,
2787
- sample,
2788
- // FIXME: eglst info is hidden somewhere in sample.egglst
2789
- eglst: null
2790
- });
2791
- }
2792
- });
2793
- }
2794
- if (this.expression.genes && geneset.size > 0) {
2795
- const table2 = expressiontd.append("table");
2796
- const tr3 = table2.append("tr");
2797
- for (const gene of geneset) {
2798
- const expd = this.expression.genes[gene];
2799
- if (expd) {
2800
- const div = tr3.append("td").style("vertical-align", "top").append("div").style("display", "inline-block").style("margin-right", "20px").style("border", "solid 1px #ccc");
2801
- div.append("div").style("background-color", "#ededed").style("padding", "10px").text(gene);
2802
- if (arg.sample) {
2803
- for (const v of expd) {
2804
- if (v.sample == arg.sample.name) {
2805
- v.ishighlight = true;
2806
- div.append("div").style("padding", "10px").style("font-size", "70%").html("Expression in " + arg.sample.name + ': <span style="font-size:150%">' + v.value + "</span>");
2807
- } else {
2808
- v.ishighlight = false;
2809
- }
2810
- }
2811
- }
2812
- showgenevalues({
2813
- data: this.expression.genes[gene],
2814
- holder: div.append("div").style("margin", "10px"),
2815
- width: 200,
2816
- height: 200,
2817
- namename: "sample"
2818
- });
2819
- } else {
2820
- tr3.append("td").style("vertical-align", "top").text("No expression data for " + gene + "</td>");
2821
- }
2822
- }
2823
- }
2824
- }
2825
- prodidisinvalid(id, sample) {
2826
- for (const egg of sample.egglst) {
2827
- for (const eg of egg.lst) {
2828
- for (const e of eg.lst) {
2829
- for (const p of e.lst) {
2830
- if (p.prodid == id) return false;
2831
- }
2832
- }
2833
- }
2834
- }
2835
- return true;
2836
- }
2837
- extractprod(id, sample) {
2838
- let prod = null;
2839
- for (let n = 0; n < sample.egglst.length; n++) {
2840
- const _egg = sample.egglst[n];
2841
- for (let j = 0; j < _egg.lst.length; j++) {
2842
- const _eg = _egg.lst[j];
2843
- for (let k = 0; k < _eg.lst.length; k++) {
2844
- const _evt = _eg.lst[k];
2845
- for (let p = 0; p < _evt.lst.length; p++) {
2846
- const p2 = _evt.lst[p];
2847
- if (p2.prodid == id) {
2848
- prod = p2;
2849
- _evt.lst.splice(p, 1);
2850
- break;
2851
- }
2852
- }
2853
- if (prod) {
2854
- if (_evt.lst.length == 0) {
2855
- _eg.lst.splice(k, 1);
2856
- }
2857
- break;
2858
- }
2859
- }
2860
- if (prod) {
2861
- if (_eg.lst.length == 0) {
2862
- _egg.lst.splice(j, 1);
2863
- } else {
2864
- if (_eg.ismsg && _eg.lst.length == 1) {
2865
- delete _eg.ismsg;
2866
- }
2867
- }
2868
- break;
2869
- }
2870
- }
2871
- if (prod) {
2872
- if (_egg.lst.length == 0) {
2873
- sample.egglst.splice(n, 1);
2874
- }
2875
- break;
2876
- }
2877
- }
2878
- return prod;
2879
- }
2880
- // end of class
2881
- };
2882
- function msjoin(prod, newholder) {
2883
- if (prod.isitd) return;
2884
- if (prod.sv_ort == "?") return;
2885
- var single = true;
2886
- var thispair = prod.usepair;
2887
- for (var i = 0; i < newholder.length; i++) {
2888
- var tmplst = newholder[i];
2889
- var prod2 = tmplst[0];
2890
- if (prod.chrB == prod2.chrA && prod.ortB == prod2.ortA) {
2891
- if (testreadcount(prod, prod2)) {
2892
- var thatpair = prod2.usepair;
2893
- if (thispair && thatpair && thispair.b.isoform && thispair.b.isoform == thatpair.a.isoform) {
2894
- var p1 = thispair.b;
2895
- var p2 = thatpair.a;
2896
- var ahead = false;
2897
- if (p1.atutr5) {
2898
- if (p2.codon != void 0) {
2899
- ahead = true;
2900
- prod2.mswhat = "5' UTR to coding region";
2901
- } else if (p2.atutr3) {
2902
- ahead = true;
2903
- prod2.mswhat = "5' UTR to 3' UTR";
2904
- } else if (p2.atutr5 && p1.atutr5.off < p2.atutr5.off) {
2905
- ahead = true;
2906
- prod2.mswhat = p2.atutr5.off - p1.atutr5.off + " bp apart in 5' UTR";
2907
- }
2908
- } else if (p1.atutr3) {
2909
- if (p2.atutr3 && p1.atutr3.off < p2.atutr3.off) {
2910
- ahead = true;
2911
- prod2.mswhat = p2.atutr3.off - p1.atutr3.off + " bp apart in 3' UTR";
2912
- }
2913
- } else if (p1.codon != void 0) {
2914
- if (p2.codon != void 0 && p2.codon > p1.codon) {
2915
- ahead = true;
2916
- prod2.mswhat = p2.codon - p1.codon + " aa apart in protein";
2917
- } else if (p2.atutr3) {
2918
- ahead = true;
2919
- prod2.mswhat = "coding region to 3' UTR";
2920
- }
2921
- }
2922
- if (ahead) {
2923
- tmplst.unshift(prod);
2924
- single = false;
2925
- break;
2926
- }
2927
- }
2928
- var dst = prod2.posA - prod.posB;
2929
- if (prod.ortB == "+" && dst > 0 && dst < genomelimit || prod.ortB == "-" && dst < 0 && -dst < genomelimit) {
2930
- prod2.mswhat = Math.abs(dst) + " bp apart on genome";
2931
- tmplst.unshift(prod);
2932
- single = false;
2933
- break;
2934
- }
2935
- }
2936
- }
2937
- prod2 = tmplst[tmplst.length - 1];
2938
- if (prod.chrA == prod2.chrB && prod.ortA == prod2.ortB) {
2939
- if (testreadcount(prod2, prod)) {
2940
- var thatpair = prod2.usepair;
2941
- if (thispair && thatpair && thispair.a.isoform && thispair.a.isoform == thatpair.b.isoform) {
2942
- var p1 = thatpair.b;
2943
- var p2 = thispair.a;
2944
- var behind = false;
2945
- if (p1.atutr5) {
2946
- if (p2.codon != void 0) {
2947
- behind = true;
2948
- prod.mswhat = "5' UTR to coding region";
2949
- } else if (p2.atutr3) {
2950
- behind = true;
2951
- prod.mswhat = "5' UTR to 3' UTR";
2952
- } else if (p2.atutr5 && p1.atutr5.off < p2.atutr5.off) {
2953
- behind = true;
2954
- prod.mswhat = p2.atutr5.off - p1.atutr5.off + " bp apart in 5' UTR";
2955
- }
2956
- } else if (p1.atutr3) {
2957
- if (p2.atutr3 && p1.atutr3.off < p2.atutr3.off) {
2958
- behind = true;
2959
- prod.mswhat = p2.atutr3.off - p1.atutr3.off + " bp apart in 3' UTR";
2960
- }
2961
- } else if (p1.codon != void 0) {
2962
- if (p2.codon != void 0 && p2.codon > p1.codon) {
2963
- behind = true;
2964
- prod.mswhat = p2.codon - p1.codon + " aa apart in protein";
2965
- } else if (p2.atutr3) {
2966
- behind = true;
2967
- prod.mswhat = "coding region to 3' UTR";
2968
- }
2969
- }
2970
- if (behind) {
2971
- tmplst.push(prod);
2972
- single = false;
2973
- break;
2974
- }
2975
- }
2976
- var dst = prod.posA - prod2.posB;
2977
- if (prod.ortA == "+" && dst > 0 && dst < genomelimit && prod.ortA == "-" && dst < 0 && -dst < genomelimit) {
2978
- prod.mswhat = Math.abs(dst) + " bp apart on genome";
2979
- tmplst.push(prod);
2980
- single = false;
2981
- break;
2982
- }
2983
- }
2984
- }
2985
- }
2986
- if (single) {
2987
- newholder.push([prod]);
2988
- }
2989
- function testreadcount(p12, p22) {
2990
- if (!p12.usepair || !p12.usepair.inframe) return false;
2991
- if (!p22.usepair || !p22.usepair.inframe) return false;
2992
- if (p12.readsB == 0 || p22.readsA == 0) return false;
2993
- var fold = p12.readsB / p22.readsA;
2994
- return fold >= 0.2 && fold <= 5;
2995
- }
2996
- }
2997
- function svtable(arg) {
2998
- const table = arg.holder.append("table").style("border-spacing", "10px").style("border-collapse", "separate");
2999
- const htr = table.append("tr").style("font-size", "70%").style("color", "#858585");
3000
- const fields = [
3001
- { label: "Feature", hide: true, get: (a) => a.feature },
3002
- { label: "Ratio", hide: true, get: (a) => Math.ceil(a.ratio * 100) + "%" },
3003
- { label: "Chimeric<br>reads", hide: true, get: (a) => a.chimericreads },
3004
- { label: "Contig<br>length", hide: true, get: (a) => a.contiglen },
3005
- { label: "Repeat<br>score", hide: true, get: (a) => a.repeatscore },
3006
- { label: "Cicero<br>score", hide: true, atpair: true, get: (a) => a.score },
3007
- { label: "Cicero<br>rating", israting: true, hide: true, atpair: true, get: (a) => a.rating }
3008
- ];
3009
- for (const sample of arg.samplelst) {
3010
- for (const p of sample.pairlst) {
3011
- if (p.a.feature || p.b.feature) fields[0].hide = false;
3012
- if (typeof p.a.ratio == "number" || typeof (p.b.ratio == "number")) fields[1].hide = false;
3013
- if (typeof p.a.chimericreads == "number" || typeof p.b.chimericreads == "number") fields[2].hide = false;
3014
- if (typeof p.a.contiglen == "number" || typeof p.b.contiglen == "number") fields[3].hide = false;
3015
- if (typeof p.a.repeatscore == "number" || typeof p.b.repeatscore == "number") fields[4].hide = false;
3016
- if (typeof p.score == "number") fields[5].hide = false;
3017
- if (p.rating) fields[6].hide = false;
3018
- }
3019
- }
3020
- if (!arg.nosample) {
3021
- htr.append("td");
3022
- }
3023
- htr.append("td");
3024
- htr.append("td");
3025
- htr.append("td").html("Genomic<br>position");
3026
- htr.append("td").html("Genomic<br>dist.");
3027
- for (const f of fields) {
3028
- if (f.hide) return;
3029
- htr.append("td").html(f.label);
3030
- }
3031
- for (const sample of arg.samplelst) {
3032
- let tr = table.append("tr");
3033
- if (!arg.nosample) {
3034
- const td = tr.append("td").text(sample.sample);
3035
- if (sample.pairlst.length > 1) {
3036
- td.attr("rowspan", sample.pairlst.length);
3037
- }
3038
- }
3039
- for (let i = 0; i < sample.pairlst.length; i++) {
3040
- if (i > 0) {
3041
- tr = table.append("tr");
3042
- }
3043
- const pair = sample.pairlst[i];
3044
- tr.append("td").style("text-align", "right").html(
3045
- '<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>"
3046
- );
3047
- const td = tr.append("td");
3048
- if (pair.originalprod && pair.originalprod.hook.lessFrame) {
3049
- pair.originalprod.hook.lessFrame = td;
3050
- }
3051
- if (pair.inframe) {
3052
- td.html(
3053
- '<span style="background-color:' + colorinframe + ';color:white;padding:2px 3px;font-size:80%;white-space:nowrap">In frame</span>'
3054
- );
3055
- } else {
3056
- if (pair.a.gm || pair.b.gm) {
3057
- td.html(
3058
- '<span style="background-color:#858585;color:white;padding:2px 3px;font-size:80%;white-space:nowrap">Out of frame</span>'
3059
- );
3060
- } else {
3061
- td.html(
3062
- '<span style="border:solid 1px #858585;color:#858585;padding:1px 2px;font-size:80%;white-space:nowrap">no gene ?</span>'
3063
- );
3064
- }
3065
- }
3066
- tr.append("td").html(
3067
- '<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>"
3068
- );
3069
- tr.append("td").html(
3070
- pair.a.chr == pair.b.chr ? bplen(Math.abs(pair.a.position - pair.b.position)) : '<span style="color:' + colorctx + '">CTX</span>'
3071
- );
3072
- for (const f of fields) {
3073
- if (f.hide) continue;
3074
- const td2 = tr.append("td");
3075
- if (f.israting && pair.originalprod && pair.originalprod.hook.lessRating) {
3076
- pair.originalprod.hook.lessRating = td2;
3077
- }
3078
- if (f.atpair) {
3079
- td2.text(f.get(pair));
3080
- } else {
3081
- td2.html(
3082
- '<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>"
3083
- );
3084
- }
3085
- }
3086
- }
3087
- }
3088
- }
3089
- function loadexpression(svmr, file) {
3090
- const genes = {};
3091
- const ep = svmr.expression;
3092
- ep.genes = genes;
3093
- const reader = new FileReader();
3094
- const chunksize = 4096;
3095
- let chunks = [];
3096
- let offset = 0;
3097
- reader.onloadend = (e) => {
3098
- if (e.target.readyState != FileReader.DONE) return;
3099
- const chunk = e.target.result;
3100
- chunks.push(chunk);
3101
- const isend = offset >= file.size;
3102
- process(isend);
3103
- if (isend) {
3104
- done();
3105
- } else {
3106
- offset += chunksize;
3107
- ep.presays.text("Reading file: " + Math.ceil(offset / file.size * 100) + "%");
3108
- reader.readAsText(file.slice(offset, offset + chunksize));
3109
- }
3110
- };
3111
- reader.readAsText(file.slice(0, chunksize));
3112
- const hg = {}, hs = {};
3113
- let good = 0, bad = 0;
3114
- function process(isend) {
3115
- const lines = chunks.join("").split("\n");
3116
- for (let i = 0; i < lines.length - 1 - (isend ? 0 : 1); i++) {
3117
- const l = lines[i].split(" ");
3118
- if (l.length == 3) {
3119
- const v = Number.parseFloat(l[1]);
3120
- if (Number.isNaN(v)) {
3121
- bad++;
3122
- } else {
3123
- good++;
3124
- hg[l[0]] = 1;
3125
- hs[l[2]] = 1;
3126
- if (!(l[0] in genes)) {
3127
- genes[l[0]] = [];
3128
- }
3129
- genes[l[0]].push({
3130
- sample: l[2],
3131
- value: v
3132
- });
3133
- }
3134
- } else {
3135
- bad++;
3136
- }
3137
- }
3138
- if (!isend) {
3139
- chunks = [lines[lines.length - 1]];
3140
- }
3141
- }
3142
- function done() {
3143
- let genec = 0;
3144
- for (const n in hg) genec++;
3145
- let samplec = 0;
3146
- for (const n in hs) samplec++;
3147
- disappear(ep.prediv);
3148
- appear(ep.afterdiv);
3149
- ep.afterdiv.selectAll("*").remove();
3150
- ep.afterdiv.append("div").text(
3151
- "Expression data loaded for " + genec + " genes, " + samplec + " samples, " + good + " data points" + (bad > 0 ? ", " + bad + " bad lines" : "")
3152
- );
3153
- ep.afterdiv.append("button").text("Delete").style("margin", "20px").on("click", () => {
3154
- delete ep.genes;
3155
- ep.prediv.node().removeChild(ep.input.node());
3156
- ep.input = ep.prediv.append("input").attr("type", "file").on("change", (event) => {
3157
- loadexpression(svmr, event.target.files[0]);
3158
- });
3159
- ep.presays.text("");
3160
- disappear(ep.afterdiv);
3161
- appear(ep.prediv);
3162
- });
3163
- }
3164
- }
3165
- function showgenevalues(arg) {
3166
- const hlcolor = "red";
3167
- arg.data.sort((a, b) => {
3168
- return b.value - a.value;
3169
- });
3170
- let width = arg.width ? arg.width : 400, height = arg.height ? arg.height : 400;
3171
- let maxv = 0;
3172
- for (const v of arg.data) {
3173
- maxv = Math.max(maxv, v.value);
3174
- }
3175
- let dotr;
3176
- const xscale = linear().domain([0, maxv]);
3177
- const svg = arg.holder.append("svg");
3178
- const axisg = svg.append("g");
3179
- const dotg = svg.append("g");
3180
- const dotset = dotg.selectAll().data(arg.data).enter().append("g");
3181
- 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) => {
3182
- event.target.setAttribute("transform", "scale(1.5)");
3183
- drag.text((d.sample ? d.sample : d.patient + " " + d.sampletype) + " " + d.value).attr("fill", d.ishighlight ? hlcolor : "black");
3184
- }).on("mouseout", (event, d) => {
3185
- event.target.setAttribute("transform", "scale(1)");
3186
- drag.text("drag to resize").attr("fill", "black");
3187
- });
3188
- 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) => {
3189
- event.preventDefault();
3190
- const x0 = event.clientX, y0 = event.clientY, width0 = width, height0 = height;
3191
- const b = select_default(document.body);
3192
- b.on("mousemove", () => {
3193
- width = width0 + event.clientX - x0;
3194
- height = height0 + event.clientY - y0;
3195
- sizing();
3196
- }).on("mouseup", () => {
3197
- b.on("mousemove", null).on("mouseup", null);
3198
- });
3199
- });
3200
- function sizing() {
3201
- dotr = Math.max(5, Math.min(width, height) / 40);
3202
- const fontsize = Math.min(18, Math.max(12, dotr * 2)), ticksize = 5, axish = fontsize + ticksize + 5, axispad = dotr + 5, width2 = dotr * 3;
3203
- xscale.range([0, width]);
3204
- svg.attr("width", dotr * 2 + width + width2).attr("height", axish + axispad + height + dotr * 2);
3205
- axisstyle({
3206
- axis: axisg.attr("transform", "translate(" + dotr * 2 + "," + axish + ")").call(
3207
- axisTop().scale(xscale).ticks(Math.min(10, Math.ceil(width / 50)))
3208
- ),
3209
- fontsize,
3210
- color: "black",
3211
- showline: true
3212
- });
3213
- dotg.attr("transform", "translate(" + dotr * 2 + "," + (axish + axispad) + ")");
3214
- dotset.attr("transform", (d, i) => {
3215
- return "translate(" + xscale(d.value) + "," + height * i / arg.data.length + ")";
3216
- });
3217
- dotcir.attr("r", (d) => {
3218
- return dotr * (d.ishighlight ? 1.5 : 1);
3219
- });
3220
- drag.attr("font-size", fontsize).attr("x", dotr * 2 + width + width2 - 5).attr("y", axish + axispad + height + dotr * 2 - 5);
3221
- }
3222
- sizing();
3223
- return this;
3224
- }
3225
-
3226
- // src/svmr.js
3227
- function svmrparseinput(arg, sayerror2, genome, holder, hostURL, jwt) {
3228
- if (!arg.dataname) {
3229
- arg.dataname = "Unnamed dataset";
3230
- }
3231
- if (arg.input) {
3232
- const [e, header, items] = svmrparseraw(arg.input, genome);
3233
- if (e) {
3234
- sayerror2("Fusion Editor input error: " + e);
3235
- return;
3236
- }
3237
- svmrlaunch(genome, header, items, arg.dataname, holder, hostURL, jwt);
3238
- return;
3239
- }
3240
- if (!arg.urls) {
3241
- sayerror2('neither .input:"" or .urls:[] is provided for Fusion Editor');
3242
- return;
3243
- }
3244
- if (!Array.isArray(arg.urls)) {
3245
- sayerror2("fusioneditor.urls[] should be an array of URL strings");
3246
- return;
3247
- }
3248
- if (arg.urls.length == 0) {
3249
- sayerror2("fusioneditor.urls[] is empty");
3250
- return;
3251
- }
3252
- const wait = holder.append("div").style("margin", "20px").style("color", "#aaa").style("font-size", "1.5em").text("Loading fusion gene data ...");
3253
- const tasks = [];
3254
- arg.urls.forEach((url) => {
3255
- tasks.push(
3256
- fetch(
3257
- new Request(hostURL + "/urltextfile", {
3258
- method: "POST",
3259
- body: JSON.stringify({ url, jwt })
3260
- })
3261
- ).then((data) => {
3262
- return data.json();
3263
- }).then((data) => {
3264
- if (data.error) throw { message: "Error with " + url + ": " + data.error };
3265
- return { data: data.text, url };
3266
- })
3267
- );
3268
- });
3269
- Promise.all(tasks).then((data) => {
3270
- wait.remove();
3271
- if (data.length == 0) {
3272
- sayerror2("No data retrieved from fusioneditor.urls");
3273
- return;
3274
- }
3275
- const [e, header, items] = svmrparseraw(data[0].data, genome);
3276
- if (e) {
3277
- sayerror2("Error parsing fusion gene data in file " + data[0].url);
3278
- return;
3279
- }
3280
- for (let i = 1; i < data.length; i++) {
3281
- const [e2, header2, items2] = svmrparseraw(data[i].data, genome);
3282
- if (e2) {
3283
- sayerror2("Error parsing fusion gene data in file " + data[i].url);
3284
- return;
3285
- }
3286
- for (const j of items2) {
3287
- items.push(j);
3288
- }
3289
- for (const h of header2) {
3290
- let notfound = true;
3291
- for (const h2 of header) {
3292
- if (h2.key == h.key) {
3293
- notfound = false;
3294
- break;
3295
- }
3296
- }
3297
- if (notfound) {
3298
- header.push(h);
3299
- }
3300
- }
3301
- }
3302
- if (items.length == 0) {
3303
- sayerror2("No fusion genes parsed from fusioneditor");
3304
- return;
3305
- }
3306
- svmrlaunch(genome, header, items, arg.dataname, holder, hostURL, jwt);
3307
- }).catch((err) => {
3308
- wait.remove();
3309
- sayerror2(err.message);
3310
- if (err.stack) console.log(err.stack);
3311
- });
3312
- }
3313
- function svmrui(dlst, genomes, hostURL, jwt) {
3314
- const [pane, inputdiv, gselect, filediv, saydiv, visualdiv] = dlst;
3315
- inputdiv.append("div").style("margin-top", "20px").html(
3316
- "<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>"
3317
- );
3318
- inputdiv.append("p").html("<a href=https://proteinpaint.stjude.org/ppdemo/hg19/fusion/cicero.output target=_blank>Example file</a>");
3319
- function cmt(t, red) {
3320
- saydiv.style("color", red ? "red" : "black").text(t);
3321
- }
3322
- const fileui = () => {
3323
- filediv.selectAll("*").remove();
3324
- const input = filediv.append("input").attr("type", "file").on("change", (event) => {
3325
- const file = event.target.files[0];
3326
- if (!file) {
3327
- fileui();
3328
- return;
3329
- }
3330
- if (!file.size) {
3331
- cmt("Invalid file " + file.name);
3332
- fileui();
3333
- return;
3334
- }
3335
- const reader = new FileReader();
3336
- reader.onload = (event2) => {
3337
- const usegenome = gselect.options[gselect.selectedIndex].innerHTML;
3338
- const genomeobj = genomes[usegenome];
3339
- const [err, header, items] = svmrparseraw(event2.target.result, genomeobj);
3340
- if (err) {
3341
- cmt(err, 1);
3342
- fileui();
3343
- return;
3344
- }
3345
- svmrlaunch(genomeobj, header, items, file.name, visualdiv, hostURL, jwt);
3346
- filediv.remove();
3347
- inputdiv.remove();
3348
- };
3349
- reader.onerror = function() {
3350
- cmt("Error reading file " + file.name, 1);
3351
- fileui();
3352
- return;
3353
- };
3354
- reader.readAsText(file, "utf8");
3355
- });
3356
- setTimeout(() => input.node().focus(), 1100);
3357
- };
3358
- fileui();
3359
- }
3360
- function svmrlaunch(genome, header, items, filename, holder, hostURL, jwt) {
3361
- new svmr_c_default(genome, header, items, filename, holder, hostURL, jwt);
3362
- }
3363
- function svmrparseraw(raw, genome) {
3364
- const lines = raw.trim().split("\n");
3365
- const [err, header] = parseheader(lines[0]);
3366
- if (err) {
3367
- return ["File header error: " + err];
3368
- }
3369
- const skipword = lines[0].split(" ")[0];
3370
- const items = [];
3371
- const badlines = [];
3372
- for (let i = 1; i < lines.length; i++) {
3373
- const line = lines[i];
3374
- if (line == "") continue;
3375
- if (line[0] == "#") continue;
3376
- const lst = line.trim().split(" ");
3377
- if (lst[0] == skipword) continue;
3378
- const m = {
3379
- notes: []
3380
- // collect notes
3381
- };
3382
- for (let j = 0; j < header.length; j++) {
3383
- if (lst[j] !== void 0 && lst[j].includes('"'))
3384
- return ['Input file has invalid character " e.g. "NM_001007565"'];
3385
- m[header[j].key] = lst[j];
3386
- }
3387
- if (!m.rating) {
3388
- badlines.push([i, "rating unspecified", lst]);
3389
- continue;
3390
- }
3391
- let s = m.rating;
3392
- if (s.toLowerCase() == "major") {
3393
- m.rating = "HQ";
3394
- s = "HQ";
3395
- }
3396
- if (s != "HQ" && s != "LQ" && s != "RT" && s != "bad") {
3397
- badlines.push([i, "invalid rating: " + m.rating, lst]);
3398
- continue;
3399
- }
3400
- if (!m.chrA) {
3401
- badlines.push([i, "missing chrA", lst]);
3402
- continue;
3403
- }
3404
- if (!genome.chrlookup[m.chrA.toUpperCase()]) {
3405
- badlines.push([i, "invalid chrA: " + m.chrA, lst]);
3406
- continue;
3407
- }
3408
- if (!m.chrB) {
3409
- badlines.push([i, "missing chrB", lst]);
3410
- continue;
3411
- }
3412
- if (!genome.chrlookup[m.chrB.toUpperCase()]) {
3413
- badlines.push([i, "invalid chrB: " + m.chrB, lst]);
3414
- continue;
3415
- }
3416
- s = m.posA;
3417
- if (!s) {
3418
- badlines.push([i, "missing posA", lst]);
3419
- continue;
3420
- }
3421
- let v = Number.parseInt(s);
3422
- if (Number.isNaN(v)) {
3423
- badlines.push([i, "invalid posA: " + s, lst]);
3424
- continue;
3425
- }
3426
- if (v < 0 || v >= genome.chrlookup[m.chrA.toUpperCase()]) {
3427
- badlines.push([i, "invalid posA: " + s, lst]);
3428
- continue;
3429
- }
3430
- m.posA = v;
3431
- s = m.posB;
3432
- if (!s) {
3433
- badlines.push([i, "missing posB", lst]);
3434
- continue;
3435
- }
3436
- v = Number.parseInt(s);
3437
- if (isNaN(v)) {
3438
- badlines.push([i, "invalid posB: " + s, lst]);
3439
- continue;
3440
- }
3441
- if (v < 0 || v >= genome.chrlookup[m.chrB.toUpperCase()]) {
3442
- badlines.push([i, "invalid posB: " + s, lst]);
3443
- continue;
3444
- }
3445
- m.posB = v;
3446
- if (!m.ratioA) {
3447
- badlines.push([i, "missing ratioA", lst]);
3448
- continue;
3449
- }
3450
- v = Number.parseFloat(m.ratioA);
3451
- if (Number.isNaN(v)) {
3452
- badlines.push([i, "invalid value for ratioA", lst]);
3453
- continue;
3454
- }
3455
- if (v > 1) {
3456
- badlines.push([i, "ratioA > 100%", lst]);
3457
- v = 1;
3458
- }
3459
- m.ratioA = v;
3460
- if (!m.ratioB) {
3461
- badlines.push([i, "missing ratioB", lst]);
3462
- continue;
3463
- }
3464
- v = Number.parseFloat(m.ratioB);
3465
- if (Number.isNaN(v)) {
3466
- badlines.push([i, "invalid value for ratioB", lst]);
3467
- continue;
3468
- }
3469
- if (v > 1) {
3470
- badlines.push([i, "ratioB > 100%", lst]);
3471
- v = 1;
3472
- }
3473
- m.ratioB = v;
3474
- if (!m.score) {
3475
- badlines.push([i, "missing score", lst]);
3476
- continue;
3477
- }
3478
- v = Number.parseFloat(m.score);
3479
- if (Number.isNaN(v)) {
3480
- badlines.push([i, "invalid value for score", lst]);
3481
- continue;
3482
- }
3483
- m.score = v;
3484
- if (!m.readsA) {
3485
- badlines.push([i, "readsA missing", lst]);
3486
- continue;
3487
- }
3488
- v = Number.parseInt(m.readsA);
3489
- if (Number.isNaN(v)) {
3490
- badlines.push([i, "invalid value for readsA", lst]);
3491
- continue;
3492
- }
3493
- m.readsA = v;
3494
- if (!m.readsB) {
3495
- badlines.push([i, "readsB missing", lst]);
3496
- continue;
3497
- }
3498
- v = Number.parseInt(m.readsB);
3499
- if (Number.isNaN(v)) {
3500
- badlines.push([i, "invalid value for readsB", lst]);
3501
- continue;
3502
- }
3503
- m.readsB = v;
3504
- if (!m.matchA) {
3505
- badlines.push([i, "matchA missing", lst]);
3506
- continue;
3507
- }
3508
- v = Number.parseInt(m.matchA);
3509
- if (Number.isNaN(v)) {
3510
- badlines.push([i, "invalid value for matchA", lst]);
3511
- continue;
3512
- }
3513
- m.matchA = v;
3514
- if (!m.matchB) {
3515
- badlines.push([i, "matchB missing", lst]);
3516
- continue;
3517
- }
3518
- v = Number.parseInt(m.matchB);
3519
- if (Number.isNaN(v)) {
3520
- badlines.push([i, "invalid value for matchB", lst]);
3521
- continue;
3522
- }
3523
- m.matchB = v;
3524
- if (!m.repeatA) {
3525
- badlines.push([i, "repeatA missing", lst]);
3526
- continue;
3527
- }
3528
- v = Number.parseFloat(m.repeatA);
3529
- if (Number.isNaN(v)) {
3530
- badlines.push([i, "invalid value for repeatA", lst]);
3531
- continue;
3532
- }
3533
- m.repeatA = v;
3534
- if (!m.repeatB) {
3535
- badlines.push([i, "repeatB missing", lst]);
3536
- continue;
3537
- }
3538
- v = Number.parseFloat(m.repeatB);
3539
- if (Number.isNaN(v)) {
3540
- badlines.push([i, "invalid value for repeatB", lst]);
3541
- continue;
3542
- }
3543
- m.repeatB = v;
3544
- if (m.type2) {
3545
- switch (m.type2.toLowerCase()) {
3546
- case "closs":
3547
- m.iscloss = true;
3548
- break;
3549
- case "nloss":
3550
- m.isnloss = true;
3551
- break;
3552
- case "fusion":
3553
- m.isfusion = true;
3554
- break;
3555
- case "itd":
3556
- m.isitd = true;
3557
- break;
3558
- case "other":
3559
- m.isother = true;
3560
- break;
3561
- case "uptss":
3562
- m.isuptss = true;
3563
- break;
3564
- default:
3565
- badlines.push([i, "unknown type2: " + m.type2, lst]);
3566
- continue;
3567
- }
3568
- }
3569
- if (m.geneA == "" || m.geneA == "NA") {
3570
- m.geneA = null;
3571
- }
3572
- if (m.geneB == "" || m.geneB == "NA") {
3573
- m.geneB = null;
3574
- }
3575
- if (m.featureA == "intergenic") m.geneA = null;
3576
- if (m.featureB == "intergenic") m.geneB = null;
3577
- 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(",") : [];
3578
- let exona = null, exonb = null, anchora = null, anchorb = null, contigaaA = null, contigaaB = null, contigbpA = null, contigbpB = null;
3579
- if (m.lstisoformaexon) exona = m.lstisoformaexon.split(",");
3580
- if (m.lstisoformbexon) exonb = m.lstisoformbexon.split(",");
3581
- if (m.lstisoformaanchor) anchora = m.lstisoformaanchor.split(",");
3582
- if (m.lstisoformbanchor) anchorb = m.lstisoformbanchor.split(",");
3583
- if (m.lstcontigaaA) contigaaA = m.lstcontigaaA.split(",");
3584
- if (m.lstcontigaaB) contigaaB = m.lstcontigaaB.split(",");
3585
- if (m.lstcontigbpA) contigbpA = m.lstcontigbpA.split(",");
3586
- if (m.lstcontigbpB) contigbpB = m.lstcontigbpB.split(",");
3587
- const paircount = Math.max(isoforma.length, isoformb.length, codona.length, codonb.length, frame.length);
3588
- m.pairs = [];
3589
- for (let j = 0; j < paircount; j++) {
3590
- const pair = {
3591
- a: {
3592
- isoform: isoforma[j] && isoforma[j].length > 0 ? isoforma[j] : null,
3593
- exon: exona ? Number.parseInt(exona[j]) : NaN,
3594
- codon: codona[j] ? Number.parseInt(codona[j]) : NaN,
3595
- anchor: anchora ? anchora[j] : void 0
3596
- },
3597
- b: {
3598
- isoform: isoformb[j] && isoformb[j].length > 0 ? isoformb[j] : null,
3599
- exon: exonb ? Number.parseInt(exonb[j]) : NaN,
3600
- codon: codonb[j] ? Number.parseInt(codonb[j]) : NaN,
3601
- anchor: anchorb ? anchorb[j] : void 0
3602
- },
3603
- frame: frame[j],
3604
- inframe: frame[j] == "1" || frame[j] == "2"
3605
- };
3606
- if (m.isuptss) {
3607
- pair.inframe = true;
3608
- }
3609
- let aaa = NaN, aab = NaN, bpa = NaN, bpb = NaN;
3610
- if (contigaaA && contigaaA[j]) aaa = Number.parseInt(contigaaA[j]);
3611
- if (contigaaB && contigaaB[j]) aab = Number.parseInt(contigaaB[j]);
3612
- if (contigbpA && contigbpA[j]) bpa = Number.parseInt(contigbpA[j]);
3613
- if (contigbpB && contigbpB[j]) bpb = Number.parseInt(contigbpB[j]);
3614
- if (!Number.isNaN(aaa) && !Number.isNaN(aab)) {
3615
- pair.a.contigaa = aaa;
3616
- pair.b.contigaa = aab;
3617
- }
3618
- if (!Number.isNaN(bpa) && !Number.isNaN(bpb)) {
3619
- pair.a.contigbp = bpa;
3620
- pair.b.contigbp = bpb;
3621
- }
3622
- m.pairs.push(pair);
3623
- }
3624
- if (m.exception) {
3625
- m.notes.push(m.exception);
3626
- }
3627
- if (m.hlgene) {
3628
- const v2 = Number.parseInt(m.hlgene);
3629
- if (Number.isNaN(v2) || v2 != 0 && v2 != 1 && v2 != 2 && v2 != 3 && v2 != 4) {
3630
- badlines.push([i, "invalid value for highlight gene flag: " + m.hlgene, lst]);
3631
- delete m.hlgene;
3632
- } else {
3633
- m.hlgene = v2;
3634
- }
3635
- }
3636
- items.push(m);
3637
- }
3638
- if (badlines.length > 0) {
3639
- const hlst = header.map((i) => i.key);
3640
- bulk_badline(hlst, badlines);
3641
- }
3642
- if (items.length == 0) {
3643
- return ["No data loaded"];
3644
- }
3645
- return [null, header, items];
3646
- }
3647
- function parseheader(line) {
3648
- const original = line.trim().split(" ");
3649
- if (original.length <= 1) return ["invalid file header"];
3650
- const header = [];
3651
- const lower = [];
3652
- for (const i2 of original) {
3653
- lower.push(i2.toLowerCase());
3654
- header.push({
3655
- label: i2,
3656
- key: i2.toLowerCase(),
3657
- custom: true
3658
- });
3659
- }
3660
- const htry = (...arg) => {
3661
- for (const s of arg) {
3662
- const i2 = lower.indexOf(s);
3663
- if (i2 != -1) return i2;
3664
- }
3665
- return -1;
3666
- };
3667
- let i = htry("genea");
3668
- if (i == -1) return ["geneA missing"];
3669
- header[i].key = "geneA";
3670
- delete header[i].custom;
3671
- i = htry("chra");
3672
- if (i == -1) return ["chrA missing"];
3673
- header[i].key = "chrA";
3674
- delete header[i].custom;
3675
- i = htry("posa");
3676
- if (i == -1) return ["posA missing"];
3677
- header[i].key = "posA";
3678
- delete header[i].custom;
3679
- i = htry("orta");
3680
- if (i == -1) return ["ortA missing"];
3681
- header[i].key = "ortA";
3682
- delete header[i].custom;
3683
- i = htry("featurea");
3684
- if (i == -1) return ["featureA missing"];
3685
- header[i].key = "featureA";
3686
- delete header[i].custom;
3687
- i = htry("ratioa");
3688
- if (i == -1) return ["ratioA missing"];
3689
- header[i].key = "ratioA";
3690
- delete header[i].custom;
3691
- i = htry("readsa");
3692
- if (i == -1) return ["readsA missing"];
3693
- header[i].key = "readsA";
3694
- delete header[i].custom;
3695
- i = htry("sv_refseqa_aa_index");
3696
- if (i != -1) {
3697
- header[i].key = "lstcontigaaA";
3698
- delete header[i].custom;
3699
- }
3700
- i = htry("sv_refseqa_contig_index");
3701
- if (i != -1) {
3702
- header[i].key = "lstcontigbpA";
3703
- delete header[i].custom;
3704
- }
3705
- i = htry("total_readsa");
3706
- if (i != -1) {
3707
- header[i].key = "totalreadsA";
3708
- delete header[i].custom;
3709
- }
3710
- i = htry("geneb");
3711
- if (i == -1) return ["geneB missing"];
3712
- header[i].key = "geneB";
3713
- delete header[i].custom;
3714
- i = htry("chrb");
3715
- if (i == -1) return ["chrB missing"];
3716
- header[i].key = "chrB";
3717
- delete header[i].custom;
3718
- i = htry("posb");
3719
- if (i == -1) return ["posB missing"];
3720
- header[i].key = "posB";
3721
- delete header[i].custom;
3722
- i = htry("ortb");
3723
- if (i == -1) return ["ortB missing"];
3724
- header[i].key = "ortB";
3725
- delete header[i].custom;
3726
- i = htry("featureb");
3727
- if (i == -1) return ["featureB missing"];
3728
- header[i].key = "featureB";
3729
- delete header[i].custom;
3730
- i = htry("ratiob");
3731
- if (i == -1) return ["ratioB missing"];
3732
- header[i].key = "ratioB";
3733
- delete header[i].custom;
3734
- i = htry("readsb");
3735
- if (i == -1) return ["readsB missing"];
3736
- header[i].key = "readsB";
3737
- delete header[i].custom;
3738
- i = htry("sv_refseqb_aa_index");
3739
- if (i != -1) {
3740
- header[i].key = "lstcontigaaB";
3741
- delete header[i].custom;
3742
- }
3743
- i = htry("sv_refseqb_contig_index");
3744
- if (i != -1) {
3745
- header[i].key = "lstcontigbpB";
3746
- delete header[i].custom;
3747
- }
3748
- i = htry("total_readsb");
3749
- if (i != -1) {
3750
- header[i].key = "totalreadsB";
3751
- delete header[i].custom;
3752
- }
3753
- i = htry("sv_inframe", "frame");
3754
- if (i == -1) return ["sv_inframe missing"];
3755
- header[i].key = "lstframe";
3756
- delete header[i].custom;
3757
- i = htry("sv_refseqa");
3758
- if (i == -1) return ["sv_refseqA missing"];
3759
- header[i].key = "lstisoforma";
3760
- delete header[i].custom;
3761
- i = htry("sv_refseqa_codon");
3762
- if (i != -1) {
3763
- header[i].key = "lstisoformacodon";
3764
- }
3765
- i = htry("sv_refseqb_codon");
3766
- if (i != -1) {
3767
- header[i].key = "lstisoformbcodon";
3768
- }
3769
- i = htry("score");
3770
- if (i == -1) return ["score missing"];
3771
- header[i].key = "score";
3772
- delete header[i].custom;
3773
- i = htry("sv_refseqb");
3774
- if (i == -1) return ["sv_refseqB missing"];
3775
- header[i].key = "lstisoformb";
3776
- delete header[i].custom;
3777
- i = htry("rating");
3778
- if (i == -1) return ["rating missing"];
3779
- header[i].key = "rating";
3780
- delete header[i].custom;
3781
- i = htry("matcha");
3782
- if (i == -1) return ["matchA missing"];
3783
- header[i].key = "matchA";
3784
- delete header[i].custom;
3785
- i = htry("matchb");
3786
- if (i == -1) return ["matchB missing"];
3787
- header[i].key = "matchB";
3788
- delete header[i].custom;
3789
- i = htry("repeata");
3790
- if (i == -1) return ["repeatA missing"];
3791
- header[i].key = "repeatA";
3792
- delete header[i].custom;
3793
- i = htry("repeatb");
3794
- if (i == -1) return ["repeatB missing"];
3795
- header[i].key = "repeatB";
3796
- delete header[i].custom;
3797
- i = htry("functional effect");
3798
- if (i == -1) return ["functional effect missing"];
3799
- header[i].key = "type2";
3800
- delete header[i].custom;
3801
- i = htry("sample");
3802
- if (i != -1) {
3803
- header[i].key = "sample";
3804
- delete header[i].custom;
3805
- }
3806
- i = htry("sv_processing_exception");
3807
- if (i != -1) {
3808
- header[i].key = "exception";
3809
- }
3810
- i = htry("medal");
3811
- if (i != -1) {
3812
- header[i].key = "hlgene";
3813
- }
3814
- i = htry("sv_refseqa_exon");
3815
- if (i != -1) {
3816
- header[i].key = "lstisoformaexon";
3817
- delete header[i].custom;
3818
- }
3819
- i = htry("sv_refseqb_exon");
3820
- if (i != -1) {
3821
- header[i].key = "lstisoformbexon";
3822
- delete header[i].custom;
3823
- }
3824
- i = htry("sv_refseqa_anchor_type");
3825
- if (i != -1) {
3826
- header[i].key = "lstisoformaanchor";
3827
- delete header[i].custom;
3828
- }
3829
- i = htry("sv_refseqb_anchor_type");
3830
- if (i != -1) {
3831
- header[i].key = "lstisoformbanchor";
3832
- delete header[i].custom;
3833
- }
3834
- return [null, header];
3835
- }
3836
- export {
3837
- svmrlaunch,
3838
- svmrparseinput,
3839
- svmrparseraw,
3840
- svmrui
3841
- };
3842
- //# sourceMappingURL=svmr-PHD76RV4.js.map