@sjcrh/proteinpaint-client 2.185.0 → 2.186.0

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