@sjcrh/proteinpaint-client 2.209.0 → 2.210.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 (888) hide show
  1. package/dist/2dmaf-43QBND66.js +1367 -0
  2. package/dist/AggMatrixInput-X7NGFUHH.js +406 -0
  3. package/dist/AggregateMatrix-M4HRI4PX.js +41 -0
  4. package/dist/AppHeader-QBRQN6PM.js +830 -0
  5. package/dist/BoxPlot-V6SPSEQ2.js +1211 -0
  6. package/dist/CorrelationVolcano-UFPCYC77.js +617 -0
  7. package/dist/Cuminc-KXGXGLKZ.js +1219 -0
  8. package/dist/DE-K2YXHOOW.js +89 -0
  9. package/dist/DEinput-O6LBFAAH.js +501 -0
  10. package/dist/DEinput-O6LBFAAH.js.map +7 -0
  11. package/dist/DM-C7VN3RWB.js +90 -0
  12. package/dist/DifferentialAnalysis-A2BU4WB3.js +239 -0
  13. package/dist/Disco-HECQVKXG.js +3389 -0
  14. package/dist/Disco.UI-XF2GEKRW.js +243 -0
  15. package/dist/DmrPlot-TVXVXOHL.js +362 -0
  16. package/dist/GB-66ZGJ5ST.js +1428 -0
  17. package/dist/GSEA-Z4YPI4HY.js +875 -0
  18. package/dist/GeneExpInput-VBIZZV27.js +42 -0
  19. package/dist/Geomap-UIIOLRFA.js +84 -0
  20. package/dist/HicApp-73ESVNBA.js +2245 -0
  21. package/dist/IDCViewer-RBYN5A4P.js +10812 -0
  22. package/dist/NumBinaryEditor-DJLSNSLE.js +279 -0
  23. package/dist/NumBinaryEditor.unit.spec-LCJHL3XM.js +312 -0
  24. package/dist/NumContEditor-SVLDJ2ML.js +105 -0
  25. package/dist/NumContEditor.unit.spec-JDMSK4HY.js +164 -0
  26. package/dist/NumCustomBinEditor-BI63AH3R.js +33 -0
  27. package/dist/NumCustomBinEditor.unit.spec-5433G7Y2.js +397 -0
  28. package/dist/NumDiscreteEditor-LEZTGXAV.js +170 -0
  29. package/dist/NumDiscreteEditor.unit.spec-5OEORHJ4.js +233 -0
  30. package/dist/NumRegularBinEditor-EXWHIWPM.js +33 -0
  31. package/dist/NumRegularBinEditor.unit.spec-QY25Z2TT.js +278 -0
  32. package/dist/NumSplineEditor-XPPMYYAD.js +210 -0
  33. package/dist/NumSplineEditor.unit.spec-GOGBKWMN.js +224 -0
  34. package/dist/NumericDensity-RKY2IQ72.js +33 -0
  35. package/dist/NumericDensity.unit.spec-5ZM6ICXM.js +418 -0
  36. package/dist/NumericHandler-FXF3M5M3.js +34 -0
  37. package/dist/NumericHandler.unit.spec-M2OQTBJX.js +214 -0
  38. package/dist/ProteomeInput-TMZ3THRL.js +388 -0
  39. package/dist/Regression-GQGAATHG.js +1416 -0
  40. package/dist/RunChart2-7GNDWRKC.js +749 -0
  41. package/dist/SC-R2I2EMHA.js +1183 -0
  42. package/dist/Violin-GKKEB55L.js +1081 -0
  43. package/dist/Volcano-HRG5EFWH.js +2443 -0
  44. package/dist/Wsi-OHRCGYYD.js +629 -0
  45. package/dist/adSandbox-H56B25WR.js +33 -0
  46. package/dist/animatedBubbleChart-7SXFHU4J.js +547 -0
  47. package/dist/app-22JCSULA.js +42 -0
  48. package/dist/app-RGZJB6LN.js +32 -0
  49. package/dist/app.js +12 -12
  50. package/dist/bam-HA65TRGX.js +876 -0
  51. package/dist/barchart-6XO75OMA.js +42 -0
  52. package/dist/barchart2-6E5BIRHD.js +309 -0
  53. package/dist/block-43KNTXZ5.js +6250 -0
  54. package/dist/block.init-TPU5QIPA.js +33 -0
  55. package/dist/block.mds.expressionrank-QZDRFXCH.js +354 -0
  56. package/dist/block.mds.geneboxplot-64QVBK5Q.js +823 -0
  57. package/dist/block.mds.junction-I4J6VXNT.js +1539 -0
  58. package/dist/block.mds.svcnv-GDQMSQFF.js +6796 -0
  59. package/dist/block.svg-2MZFT5QP.js +159 -0
  60. package/dist/block.tk.aicheck-2MKHF6LX.js +278 -0
  61. package/dist/block.tk.ase-CLYGKFTS.js +360 -0
  62. package/dist/block.tk.bam-XTR4QA5Z.js +1901 -0
  63. package/dist/block.tk.bedgraphdot-A2P2CXRU.js +379 -0
  64. package/dist/block.tk.bigwig.ui-YZH6JXEO.js +206 -0
  65. package/dist/block.tk.hicstraw-QBK5VWGU.js +818 -0
  66. package/dist/block.tk.junction-5DEVBA7G.js +2358 -0
  67. package/dist/block.tk.junction.textmatrixui-7TTQMO6W.js +194 -0
  68. package/dist/block.tk.ld-PRIVUPKL.js +94 -0
  69. package/dist/block.tk.menu-JGBRFSS3.js +1024 -0
  70. package/dist/block.tk.pgv-KQJCJMVD.js +938 -0
  71. package/dist/brainImaging-4SLVJ2HV.js +555 -0
  72. package/dist/brainRegions-BDIVM2SG.js +217 -0
  73. package/dist/bubbleHeatmap-ORKFJNEQ.js +378 -0
  74. package/dist/cellTypeBubbleHeatmap-VOHLI4P7.js +278 -0
  75. package/dist/chunk-26N3B2JO.js +194 -0
  76. package/dist/chunk-2HNJF5ZI.js +240 -0
  77. package/dist/chunk-2LNGHIOC.js +281 -0
  78. package/dist/chunk-3SCQGODD.js +274 -0
  79. package/dist/chunk-47STLK7K.js +518 -0
  80. package/dist/chunk-4XYQG3XU.js +276 -0
  81. package/dist/chunk-53XNEXR6.js +34 -0
  82. package/dist/chunk-55FABQU2.js +24955 -0
  83. package/dist/chunk-55FABQU2.js.map +7 -0
  84. package/dist/chunk-5UB5H7A3.js +123 -0
  85. package/dist/chunk-6FYQYTV6.js +141 -0
  86. package/dist/chunk-6RP6CR4Q.js +182 -0
  87. package/dist/chunk-A5D37SIL.js +103 -0
  88. package/dist/chunk-ADRFQ5AL.js +102 -0
  89. package/dist/chunk-AUZ63NKJ.js +70 -0
  90. package/dist/chunk-B563DUNQ.js +217 -0
  91. package/dist/chunk-BK6UDL7F.js +339 -0
  92. package/dist/chunk-CT4IG5IR.js +339 -0
  93. package/dist/chunk-D6UBH77N.js +1731 -0
  94. package/dist/chunk-DS4GLMJL.js +170 -0
  95. package/dist/chunk-DSBRHWZ7.js +2853 -0
  96. package/dist/chunk-DX35MKPR.js +272 -0
  97. package/dist/chunk-EDZJ3VNZ.js +54 -0
  98. package/dist/chunk-F47A4CVK.js +1339 -0
  99. package/dist/chunk-G4H34RNK.js +446 -0
  100. package/dist/chunk-G7RUMSHL.js +263 -0
  101. package/dist/chunk-GXFS25SK.js +480 -0
  102. package/dist/chunk-I25LKYC4.js +379 -0
  103. package/dist/chunk-I25LKYC4.js.map +7 -0
  104. package/dist/chunk-IAB2PRIH.js +396 -0
  105. package/dist/chunk-IAB2PRIH.js.map +7 -0
  106. package/dist/chunk-IBT6WRY6.js +692 -0
  107. package/dist/chunk-IJ7AIDEO.js +302 -0
  108. package/dist/chunk-JBFVJHZN.js +1233 -0
  109. package/dist/chunk-JDVBUIEU.js +56 -0
  110. package/dist/chunk-K7RW5TPU.js +4375 -0
  111. package/dist/chunk-KIAMLQ7S.js +424 -0
  112. package/dist/chunk-KIAMLQ7S.js.map +7 -0
  113. package/dist/chunk-LBCIXRI2.js +49 -0
  114. package/dist/chunk-MNXL2UV5.js +98 -0
  115. package/dist/chunk-NI5CVN43.js +203 -0
  116. package/dist/chunk-NOBXDQDU.js +397 -0
  117. package/dist/chunk-NQNVLZOA.js +6360 -0
  118. package/dist/chunk-NULFGPE3.js +158 -0
  119. package/dist/chunk-OUIXGM3K.js +299 -0
  120. package/dist/chunk-P4LGA36F.js +14 -0
  121. package/dist/chunk-PU5FQWAY.js +55 -0
  122. package/dist/chunk-PZ2OSHBF.js +56 -0
  123. package/dist/chunk-QBNDPW7O.js +5071 -0
  124. package/dist/chunk-R5PKBL7V.js +80 -0
  125. package/dist/chunk-RFSOP75Z.js +1988 -0
  126. package/dist/chunk-RFSOP75Z.js.map +7 -0
  127. package/dist/chunk-RI65SIN3.js +626 -0
  128. package/dist/chunk-RPGLLO4T.js +2676 -0
  129. package/dist/chunk-RXNZK7MF.js +134 -0
  130. package/dist/chunk-S2ICJ3RZ.js +550 -0
  131. package/dist/chunk-SFHG6H2D.js +129 -0
  132. package/dist/chunk-TQ2DVEQO.js +783 -0
  133. package/dist/chunk-U6BJ4ZNU.js +176 -0
  134. package/dist/chunk-UXD6G6G4.js +178 -0
  135. package/dist/chunk-VA57CUC7.js +2146 -0
  136. package/dist/chunk-VH5W6ODW.js +294 -0
  137. package/dist/chunk-VROF55EH.js +255 -0
  138. package/dist/chunk-VWA7BYSV.js +217 -0
  139. package/dist/chunk-X37BRSGS.js +102 -0
  140. package/dist/chunk-XQYDXA47.js +562 -0
  141. package/dist/chunk-XXPUZVS4.js +237 -0
  142. package/dist/chunk-Y7V5AIUH.js +468 -0
  143. package/dist/chunk-YBNIOGUE.js +243 -0
  144. package/dist/chunk-YEYMNF7V.js +2327 -0
  145. package/dist/chunk-YJ74QATP.js +1278 -0
  146. package/dist/chunk-ZG2HCGAO.js +2784 -0
  147. package/dist/chunk-ZZN7ZD7J.js +54 -0
  148. package/dist/cohort-6OCRQQ2S.js +70 -0
  149. package/dist/condition-SZVXH3VU.js +327 -0
  150. package/dist/controls-MO6ZND76.js +34 -0
  151. package/dist/controls.config-P4MSTGL4.js +34 -0
  152. package/dist/correlation-NMI3CM3T.js +95 -0
  153. package/dist/customdata.inputui-VCHSCA65.js +284 -0
  154. package/dist/dataDownload-VQHOTQ5D.js +329 -0
  155. package/dist/databrowser.ui-ZFOCAG32.js +425 -0
  156. package/dist/dictionary-S5YCFUWH.js +113 -0
  157. package/dist/dnaMethylation-MQZLZRGT.js +33 -0
  158. package/dist/dnaMethylation.integration.spec-H546EBUO.js +198 -0
  159. package/dist/dofetch-QZIYSC7H.js +48 -0
  160. package/dist/e2pca-XOXOS3PN.js +344 -0
  161. package/dist/ep-U6KRL7FR.js +1249 -0
  162. package/dist/expclust.gdc.spec-HCK65C63.js +302 -0
  163. package/dist/facet-DCC25KJO.js +519 -0
  164. package/dist/gb-TIFWFD4Y.js +81 -0
  165. package/dist/geneExpClustering-6DQEOTOY.js +244 -0
  166. package/dist/geneExpression-EASRAN6B.js +310 -0
  167. package/dist/geneExpression-G4YMDCBH.js +33 -0
  168. package/dist/geneExpression.unit.spec-XVEJYMPX.js +128 -0
  169. package/dist/geneORA-6UBS5GSC.js +273 -0
  170. package/dist/geneRanking-UXXYWHNB.js +548 -0
  171. package/dist/geneVariant-SZRJOXVC.js +289 -0
  172. package/dist/geneVariant-TKFKARZK.js +36 -0
  173. package/dist/geneVariant.integration.spec-PXMAYJN3.js +503 -0
  174. package/dist/geneVariant.integration.spec-PXMAYJN3.js.map +7 -0
  175. package/dist/genefusion.ui-TJLYXSVL.js +303 -0
  176. package/dist/geneset-YTBDLEIH.js +203 -0
  177. package/dist/genomeBrowser.spec-ZO4LFIXE.js +276 -0
  178. package/dist/grin2-FC4VYU54.js +949 -0
  179. package/dist/grin2-LIFKBMVK.js +70 -0
  180. package/dist/hierCluster-56EGAPOR.js +59 -0
  181. package/dist/hierCluster-DR5NWCXA.js +55 -0
  182. package/dist/hierCluster.config-NACE3FH2.js +36 -0
  183. package/dist/hierCluster.integration.spec-PEEXPAS6.js +483 -0
  184. package/dist/hierCluster.interactivity-OCBGLUJM.js +49 -0
  185. package/dist/hierCluster.renderers-JNQUSAP4.js +19 -0
  186. package/dist/imagePlot-GR4JNUGG.js +156 -0
  187. package/dist/importPlot-4R4BSPVD.js +8 -0
  188. package/dist/isoformExpression-ST5ZW2NE.js +35 -0
  189. package/dist/isoformExpression.unit.spec-PPFC5Z7N.js +237 -0
  190. package/dist/junction-7AKZHOHV.js +36 -0
  191. package/dist/junction.unit.spec-SZUJXRQ2.js +182 -0
  192. package/dist/launch.adhoc-RWJQUOJ6.js +37 -0
  193. package/dist/leftlabel.sample-WRHLVQAQ.js +258 -0
  194. package/dist/lollipop-ZZWXTM23.js +166 -0
  195. package/dist/maf-N4XPZTQU.js +455 -0
  196. package/dist/maftimeline-2FBS6RWS.js +587 -0
  197. package/dist/matrix-5KEQPB5H.js +59 -0
  198. package/dist/matrix-RJUNXB5N.js +54 -0
  199. package/dist/matrix.cells-WXTPOJYB.js +26 -0
  200. package/dist/matrix.config-ZZFLLD6Z.js +37 -0
  201. package/dist/matrix.data-3PQ73GVJ.js +23 -0
  202. package/dist/matrix.groups-U6CKS6WW.js +26 -0
  203. package/dist/matrix.integration.spec-T53PMVHC.js +3160 -0
  204. package/dist/matrix.interactivity-3LDZV3F7.js +37 -0
  205. package/dist/matrix.layout-MINLYQCA.js +39 -0
  206. package/dist/matrix.legend-6GSDFZHS.js +20 -0
  207. package/dist/matrix.renderers-5BKOXDE3.js +34 -0
  208. package/dist/matrix.serieses-6FCFIFAQ.js +19 -0
  209. package/dist/matrix.sort-EHVVYDZ3.js +26 -0
  210. package/dist/matrix.sort.unit.spec-BCWE4AFX.js +468 -0
  211. package/dist/matrix.sorterUi.unit.spec-XJR5KXRL.js +338 -0
  212. package/dist/matrix.unit.spec-TUCKPE26.js +150 -0
  213. package/dist/mavb-GWSNRBLM.js +727 -0
  214. package/dist/mds.fimo-OMAQRSMW.js +513 -0
  215. package/dist/mds.samplescatterplot-4UW3CC45.js +1545 -0
  216. package/dist/mds.survivalplot-2CJYJBD2.js +477 -0
  217. package/dist/multivalue-G44MHEYI.js +83 -0
  218. package/dist/numericDictTermCluster-5BDRGVQG.js +63 -0
  219. package/dist/oncomatrix-ZTVO23ZH.js +290 -0
  220. package/dist/oncomatrix.spec-2QVK2A3Q.js +443 -0
  221. package/dist/plot.2dvaf-CL5YUXKH.js +372 -0
  222. package/dist/plot.app-4ANKPSNP.js +36 -0
  223. package/dist/plot.barplot-BMGDNZRA.js +97 -0
  224. package/dist/plot.boxplot-GMLQCDP6.js +146 -0
  225. package/dist/plot.brainImaging-RZXX3NUZ.js +51 -0
  226. package/dist/plot.disco-3MD4J4C7.js +99 -0
  227. package/dist/plot.ssgq-ZC4UYKOT.js +134 -0
  228. package/dist/plot.vaf2cov-4DHFMYQV.js +253 -0
  229. package/dist/polar2-TMB5EITR.js +232 -0
  230. package/dist/profileForms-GD7BIOOD.js +941 -0
  231. package/dist/profilePlot-CZLK5E74.js +49 -0
  232. package/dist/proteinView-FEEEXLKT.js +1357 -0
  233. package/dist/proteomeCohortCompare-NVLJ2FXX.js +912 -0
  234. package/dist/pseudbulk.unit.spec-GHQZPNAH.js +86 -0
  235. package/dist/pseudobulk-G5UQIRKL.js +35 -0
  236. package/dist/qualitative-EAUUCKU5.js +38 -0
  237. package/dist/radar2-CJQ2L6KE.js +327 -0
  238. package/dist/radarFacility2-BLVRZE4V.js +335 -0
  239. package/dist/render-KKAQPH6Y.js +33 -0
  240. package/dist/report-OSOJHTSD.js +217 -0
  241. package/dist/sampleView-WB74RLD7.js +43 -0
  242. package/dist/samplelst-ZKXV5WOD.js +106 -0
  243. package/dist/samplematrix-WJFYMWLT.js +2193 -0
  244. package/dist/sc-RBRBUCLR.js +81 -0
  245. package/dist/scatter-5K3QTIDK.js +88 -0
  246. package/dist/scatter-SM7GQENM.js +925 -0
  247. package/dist/selectGenomeWithTklst-ZZUJ7AQ7.js +129 -0
  248. package/dist/singleCellCellType-LCF2JNZ2.js +33 -0
  249. package/dist/singleCellCellType.unit.spec-T6DYH4BC.js +154 -0
  250. package/dist/singleCellGeneExpression-2XUYTH4C.js +33 -0
  251. package/dist/singleCellGeneExpression.unit.spec-SMRCLOF4.js +148 -0
  252. package/dist/singleCellNumericValue-57I33FZT.js +33 -0
  253. package/dist/singleCellNumericValue.unit.spec-4YNB4OEV.js +416 -0
  254. package/dist/singleCellPlot-L6TKQHGD.js +48 -0
  255. package/dist/singlecell-LZKR3UDV.js +81 -0
  256. package/dist/singlecell-UKN2VCXQ.js +1566 -0
  257. package/dist/snp-3LJITU5B.js +33 -0
  258. package/dist/snp.unit.spec-ZQNU6XRM.js +171 -0
  259. package/dist/snplocus-OME7UQBW.js +203 -0
  260. package/dist/spliceevent.a53ss.diagram-C32IEFMU.js +146 -0
  261. package/dist/spliceevent.exonskip.diagram-CZ7MVRLK.js +278 -0
  262. package/dist/spliceevent.noeventdiagram-ZO6R3776.js +455 -0
  263. package/dist/ssGSEA-BGPQ2PFY.js +33 -0
  264. package/dist/ssGSEA.unit.spec-U7TBUSSK.js +83 -0
  265. package/dist/stattable-FISGQCED.js +117 -0
  266. package/dist/studyCatalog-UHFUT2CJ.js +414 -0
  267. package/dist/summarizeCnvGeneexp-OVZO6KIB.js +158 -0
  268. package/dist/summarizeGeneexpSurvival-KVQ4JGWK.js +105 -0
  269. package/dist/summarizeMutationCnv-RAKGHNLE.js +159 -0
  270. package/dist/summarizeMutationDiagnosis-LGCINAGG.js +35 -0
  271. package/dist/summarizeMutationSurvival-J7H7L4FX.js +99 -0
  272. package/dist/summary-2632JZXH.js +44 -0
  273. package/dist/summary.integration.spec-5WBS2ZRP.js +409 -0
  274. package/dist/summaryInput-BH6C3ATV.js +242 -0
  275. package/dist/sunburst-AMRR2IHM.js +278 -0
  276. package/dist/survival-2RNJQVFS.js +1248 -0
  277. package/dist/survival-WYCH4QOQ.js +53 -0
  278. package/dist/survival.integration.spec-7IFPY4I4.js +613 -0
  279. package/dist/svgraph-YQWS52ZJ.js +1382 -0
  280. package/dist/svmr-NRN6LGKK.js +3837 -0
  281. package/dist/table-3QOMV2NN.js +197 -0
  282. package/dist/termCollection-2ZJ7TJGO.js +33 -0
  283. package/dist/termCollection-3MCVR7BA.js +252 -0
  284. package/dist/termCollection.unit.spec-QYOEA3X6.js +299 -0
  285. package/dist/termCollectionFractionSelection-5AH6EF4L.js +42 -0
  286. package/dist/termCollectionFractionSelection.unit.spec-WPGW4WJN.js +188 -0
  287. package/dist/tk-DQ7D5UEO.js +41 -0
  288. package/dist/tk-ONKYBG6R.js +1121 -0
  289. package/dist/tp.ui-C7BTMHEI.js +1454 -0
  290. package/dist/tvs.dt-PLRMK7OT.js +34 -0
  291. package/dist/tvs.dtcnv.categorical-IZUY2AQO.js +35 -0
  292. package/dist/tvs.dtcnv.continuous-ENV3RHHA.js +67 -0
  293. package/dist/tvs.dtfusion-2DVCV6AM.js +35 -0
  294. package/dist/tvs.dtitd-XNDIRQYU.js +35 -0
  295. package/dist/tvs.dtsnvindel-4D3G7XSF.js +35 -0
  296. package/dist/tvs.dtsv-QYMIMC4Z.js +35 -0
  297. package/dist/tvs.numeric-M5LH3PRH.js +20 -0
  298. package/dist/tvs.samplelst-2KEU2ZWB.js +98 -0
  299. package/dist/tvs.termCollection-FEY746V5.js +124 -0
  300. package/dist/vocabulary-BR4NJDPS.js +36 -0
  301. package/dist/wsi.direct-JWDUNHIO.js +8343 -0
  302. package/package.json +3 -3
  303. package/dist/2dmaf-VTMPVZGT.js +0 -1367
  304. package/dist/AggMatrixInput-CH3RQ2QC.js +0 -406
  305. package/dist/AggregateMatrix-DPCHUOMF.js +0 -41
  306. package/dist/AppHeader-RA7T467G.js +0 -830
  307. package/dist/BoxPlot-7Q7SMT26.js +0 -1211
  308. package/dist/CorrelationVolcano-YV4UHOAX.js +0 -617
  309. package/dist/Cuminc-ZN53C3MD.js +0 -1219
  310. package/dist/DE-BEWW5AIG.js +0 -89
  311. package/dist/DEinput-SJITUJF2.js +0 -499
  312. package/dist/DEinput-SJITUJF2.js.map +0 -7
  313. package/dist/DM-2LBNE4WE.js +0 -90
  314. package/dist/DifferentialAnalysis-WE4LBHEF.js +0 -239
  315. package/dist/Disco-PTZQF7IM.js +0 -3389
  316. package/dist/Disco.UI-NBR67N5M.js +0 -243
  317. package/dist/DmrPlot-QROLI66S.js +0 -362
  318. package/dist/GB-FEBSFX5U.js +0 -1428
  319. package/dist/GSEA-KOXOVC5V.js +0 -875
  320. package/dist/GeneExpInput-DYBK54HC.js +0 -42
  321. package/dist/Geomap-QRD2WZVL.js +0 -84
  322. package/dist/HicApp-VKET4QHD.js +0 -2245
  323. package/dist/IDCViewer-RLLTXGD7.js +0 -10812
  324. package/dist/NumBinaryEditor-GYHOYPQL.js +0 -279
  325. package/dist/NumBinaryEditor.unit.spec-E2HKBWOO.js +0 -312
  326. package/dist/NumContEditor-3V76ZSEY.js +0 -105
  327. package/dist/NumContEditor.unit.spec-RTT5Q5E5.js +0 -164
  328. package/dist/NumCustomBinEditor-O5DMPY7H.js +0 -33
  329. package/dist/NumCustomBinEditor.unit.spec-5LZBP2JL.js +0 -397
  330. package/dist/NumDiscreteEditor-DFOJ7AIH.js +0 -170
  331. package/dist/NumDiscreteEditor.unit.spec-PPJGEBFX.js +0 -233
  332. package/dist/NumRegularBinEditor-O6RDO32C.js +0 -33
  333. package/dist/NumRegularBinEditor.unit.spec-GOB3BF25.js +0 -278
  334. package/dist/NumSplineEditor-PUXJF2RW.js +0 -210
  335. package/dist/NumSplineEditor.unit.spec-4VOAAMOU.js +0 -224
  336. package/dist/NumericDensity-E6MH2THZ.js +0 -33
  337. package/dist/NumericDensity.unit.spec-IRPFBQUS.js +0 -418
  338. package/dist/NumericHandler-42RR54X3.js +0 -34
  339. package/dist/NumericHandler.unit.spec-YYOO7XVT.js +0 -214
  340. package/dist/ProteomeInput-4N2G6IFX.js +0 -388
  341. package/dist/Regression-LIWUWAGQ.js +0 -1416
  342. package/dist/RunChart2-VAX5JGZY.js +0 -749
  343. package/dist/SC-UHBZ3HRO.js +0 -1183
  344. package/dist/Violin-V23VZR6B.js +0 -1081
  345. package/dist/Volcano-64S4AW66.js +0 -2443
  346. package/dist/Wsi-FOJCKDCP.js +0 -629
  347. package/dist/adSandbox-CLMUYNC3.js +0 -33
  348. package/dist/animatedBubbleChart-GMLNYTQC.js +0 -547
  349. package/dist/app-2SFDRDN2.js +0 -32
  350. package/dist/app-QOZ36UR4.js +0 -42
  351. package/dist/bam-LLAK7FVG.js +0 -876
  352. package/dist/barchart-SEC6VKQ2.js +0 -42
  353. package/dist/barchart2-D4FXZCTU.js +0 -309
  354. package/dist/block-XGK6TEGH.js +0 -6250
  355. package/dist/block.init-UMRCAKCF.js +0 -33
  356. package/dist/block.mds.expressionrank-LFPJ52SX.js +0 -354
  357. package/dist/block.mds.geneboxplot-2QIEN6AH.js +0 -823
  358. package/dist/block.mds.junction-Z4HUFSG2.js +0 -1539
  359. package/dist/block.mds.svcnv-3GXGY6ET.js +0 -6796
  360. package/dist/block.svg-7RCJLMAP.js +0 -159
  361. package/dist/block.tk.aicheck-5N6EGZ6F.js +0 -278
  362. package/dist/block.tk.ase-V3AJRYT6.js +0 -360
  363. package/dist/block.tk.bam-W6QOVVEU.js +0 -1901
  364. package/dist/block.tk.bedgraphdot-FKTPJZTH.js +0 -379
  365. package/dist/block.tk.bigwig.ui-Y3M2TDM2.js +0 -206
  366. package/dist/block.tk.hicstraw-3SWYTMFQ.js +0 -818
  367. package/dist/block.tk.junction-OXB22PDS.js +0 -2358
  368. package/dist/block.tk.junction.textmatrixui-PWBLRGCO.js +0 -194
  369. package/dist/block.tk.ld-NTRJL5GA.js +0 -94
  370. package/dist/block.tk.menu-JIHSGGIO.js +0 -1024
  371. package/dist/block.tk.pgv-4Q6CY6QN.js +0 -938
  372. package/dist/brainImaging-MBI4XTTU.js +0 -555
  373. package/dist/brainRegions-YVTAESRP.js +0 -217
  374. package/dist/bubbleHeatmap-ZKTA3AIG.js +0 -378
  375. package/dist/cellTypeBubbleHeatmap-GJZNXDG4.js +0 -278
  376. package/dist/chunk-2PDBU42F.js +0 -4375
  377. package/dist/chunk-2RMSV4BS.js +0 -6360
  378. package/dist/chunk-33BE7AYS.js +0 -299
  379. package/dist/chunk-3XBG5HIV.js +0 -424
  380. package/dist/chunk-3XBG5HIV.js.map +0 -7
  381. package/dist/chunk-5FRETII3.js +0 -281
  382. package/dist/chunk-5LYVIIYR.js +0 -170
  383. package/dist/chunk-6FG6JFZP.js +0 -339
  384. package/dist/chunk-6G45AUSV.js +0 -237
  385. package/dist/chunk-6LDKSKYQ.js +0 -70
  386. package/dist/chunk-7FFTAYT4.js +0 -272
  387. package/dist/chunk-7GDRMBNO.js +0 -339
  388. package/dist/chunk-A2UUXYH6.js +0 -1986
  389. package/dist/chunk-A2UUXYH6.js.map +0 -7
  390. package/dist/chunk-AFQKYV4D.js +0 -2853
  391. package/dist/chunk-ANACCKCQ.js +0 -276
  392. package/dist/chunk-AR3HXZIW.js +0 -562
  393. package/dist/chunk-AVCEHJG7.js +0 -446
  394. package/dist/chunk-AVCIZWH5.js +0 -692
  395. package/dist/chunk-B6UXFX73.js +0 -178
  396. package/dist/chunk-BCCFJYPE.js +0 -54
  397. package/dist/chunk-BG3SGGVB.js +0 -134
  398. package/dist/chunk-C3HEDQPT.js +0 -24921
  399. package/dist/chunk-C3HEDQPT.js.map +0 -7
  400. package/dist/chunk-CN6KJORZ.js +0 -397
  401. package/dist/chunk-CYWEYHJQ.js +0 -203
  402. package/dist/chunk-D5ETVOOE.js +0 -158
  403. package/dist/chunk-DANF4CC5.js +0 -102
  404. package/dist/chunk-DNCFJTPI.js +0 -1339
  405. package/dist/chunk-FNW6BKOA.js +0 -480
  406. package/dist/chunk-FR5USNAT.js +0 -54
  407. package/dist/chunk-GYE6FU7P.js +0 -626
  408. package/dist/chunk-IEIGHCZS.js +0 -1278
  409. package/dist/chunk-J5GQGWYX.js +0 -1731
  410. package/dist/chunk-JMDUO47F.js +0 -5071
  411. package/dist/chunk-JTQPPUDG.js +0 -379
  412. package/dist/chunk-JTQPPUDG.js.map +0 -7
  413. package/dist/chunk-K32DV4QI.js +0 -302
  414. package/dist/chunk-K77W4SSI.js +0 -98
  415. package/dist/chunk-KEHVNCFK.js +0 -102
  416. package/dist/chunk-MMKSXXU2.js +0 -55
  417. package/dist/chunk-NGMM2MNC.js +0 -518
  418. package/dist/chunk-OASGOTRM.js +0 -80
  419. package/dist/chunk-OBDIJ4QS.js +0 -2146
  420. package/dist/chunk-OEBGQKQR.js +0 -2676
  421. package/dist/chunk-OI5KBFBE.js +0 -468
  422. package/dist/chunk-OWEBE64A.js +0 -243
  423. package/dist/chunk-P7X4LDW4.js +0 -783
  424. package/dist/chunk-Q4HTEL2O.js +0 -56
  425. package/dist/chunk-QGH5BM2D.js +0 -141
  426. package/dist/chunk-QSOFGLWZ.js +0 -240
  427. package/dist/chunk-QXDGIQYA.js +0 -217
  428. package/dist/chunk-R2QE6ROO.js +0 -176
  429. package/dist/chunk-RMHUDMZ7.js +0 -103
  430. package/dist/chunk-SXB4IZQ7.js +0 -123
  431. package/dist/chunk-SYPSS3JQ.js +0 -387
  432. package/dist/chunk-SYPSS3JQ.js.map +0 -7
  433. package/dist/chunk-T6Q76PDN.js +0 -182
  434. package/dist/chunk-TYR355RM.js +0 -263
  435. package/dist/chunk-ULZPHJYD.js +0 -2784
  436. package/dist/chunk-V3SOBDIT.js +0 -255
  437. package/dist/chunk-VFUSBU43.js +0 -14
  438. package/dist/chunk-VOF6NWTS.js +0 -274
  439. package/dist/chunk-WGDJX7WZ.js +0 -2327
  440. package/dist/chunk-WIQVSCD5.js +0 -294
  441. package/dist/chunk-WXXRVJSP.js +0 -56
  442. package/dist/chunk-X4MV2M5F.js +0 -129
  443. package/dist/chunk-XVVVNCXS.js +0 -217
  444. package/dist/chunk-YHP7MYB7.js +0 -49
  445. package/dist/chunk-YHWQWVWX.js +0 -550
  446. package/dist/chunk-YKZOQTT4.js +0 -1233
  447. package/dist/chunk-Z5HU276I.js +0 -34
  448. package/dist/chunk-Z6MCBFDM.js +0 -194
  449. package/dist/cohort-GVAJTICQ.js +0 -70
  450. package/dist/condition-EGPNMM47.js +0 -327
  451. package/dist/controls-HBROSXHF.js +0 -34
  452. package/dist/controls.config-FWKV66TU.js +0 -34
  453. package/dist/correlation-CEHE66EC.js +0 -95
  454. package/dist/customdata.inputui-LFT3N5FD.js +0 -284
  455. package/dist/dataDownload-ZPAIAAE4.js +0 -329
  456. package/dist/databrowser.ui-W5JGFBE6.js +0 -425
  457. package/dist/dictionary-RBE2CIZI.js +0 -113
  458. package/dist/dnaMethylation-CX22TSRO.js +0 -33
  459. package/dist/dnaMethylation.integration.spec-KEE6ZZRT.js +0 -198
  460. package/dist/dofetch-6NAGX5EG.js +0 -48
  461. package/dist/e2pca-XDGPTEXL.js +0 -344
  462. package/dist/ep-IUIDMIGW.js +0 -1249
  463. package/dist/expclust.gdc.spec-BMN2PTJX.js +0 -302
  464. package/dist/facet-DTJKZOBA.js +0 -519
  465. package/dist/gb-MV7MUJWO.js +0 -81
  466. package/dist/geneExpClustering-NFH5FS3S.js +0 -244
  467. package/dist/geneExpression-XVOLNYVN.js +0 -310
  468. package/dist/geneExpression-ZP2VWHED.js +0 -33
  469. package/dist/geneExpression.unit.spec-2NSK4ARK.js +0 -128
  470. package/dist/geneORA-HQ7FLMEJ.js +0 -273
  471. package/dist/geneRanking-MIABUKTN.js +0 -548
  472. package/dist/geneVariant-H52UUK6Z.js +0 -289
  473. package/dist/geneVariant-HDFWLALZ.js +0 -36
  474. package/dist/geneVariant.integration.spec-O36JK4B7.js +0 -503
  475. package/dist/geneVariant.integration.spec-O36JK4B7.js.map +0 -7
  476. package/dist/genefusion.ui-HSDZQHJA.js +0 -303
  477. package/dist/geneset-WKV3X2EJ.js +0 -203
  478. package/dist/genomeBrowser.spec-UTAHAU76.js +0 -276
  479. package/dist/grin2-M2JDZVYU.js +0 -70
  480. package/dist/grin2-N2QM3XTG.js +0 -949
  481. package/dist/hierCluster-LZI6OTRS.js +0 -59
  482. package/dist/hierCluster-VVXPOTQU.js +0 -55
  483. package/dist/hierCluster.config-NCYH3Y7Z.js +0 -36
  484. package/dist/hierCluster.integration.spec-ZDOOCTV3.js +0 -483
  485. package/dist/hierCluster.interactivity-4HP3JCON.js +0 -49
  486. package/dist/hierCluster.renderers-3F5GMEXA.js +0 -19
  487. package/dist/imagePlot-OA4WTMLU.js +0 -156
  488. package/dist/importPlot-OSTC2GPO.js +0 -8
  489. package/dist/isoformExpression-LZ5RTUS5.js +0 -35
  490. package/dist/isoformExpression.unit.spec-L6YDBKYM.js +0 -237
  491. package/dist/junction-UR6COY3A.js +0 -36
  492. package/dist/junction.unit.spec-NVBJTGA4.js +0 -182
  493. package/dist/launch.adhoc-AZG6QJG7.js +0 -37
  494. package/dist/leftlabel.sample-LYZG25RT.js +0 -258
  495. package/dist/lollipop-FJXVP5QM.js +0 -166
  496. package/dist/maf-OXJIJD6D.js +0 -455
  497. package/dist/maftimeline-75N6ZXEM.js +0 -587
  498. package/dist/matrix-QFKGEW5A.js +0 -54
  499. package/dist/matrix-XT7LUV5K.js +0 -59
  500. package/dist/matrix.cells-NB7LKKXV.js +0 -26
  501. package/dist/matrix.config-X6HS4UGD.js +0 -37
  502. package/dist/matrix.data-VLFF34SS.js +0 -23
  503. package/dist/matrix.groups-F62TSKIG.js +0 -26
  504. package/dist/matrix.integration.spec-7QBYWHW6.js +0 -3160
  505. package/dist/matrix.interactivity-2FBXB52E.js +0 -37
  506. package/dist/matrix.layout-6TPVKLSX.js +0 -39
  507. package/dist/matrix.legend-L4ULBMGX.js +0 -20
  508. package/dist/matrix.renderers-DK6YRLO2.js +0 -34
  509. package/dist/matrix.serieses-DCRJLJ3H.js +0 -19
  510. package/dist/matrix.sort-XSGPH44J.js +0 -26
  511. package/dist/matrix.sort.unit.spec-JF75F4I4.js +0 -468
  512. package/dist/matrix.sorterUi.unit.spec-66JMV5BK.js +0 -338
  513. package/dist/matrix.unit.spec-36AR4I43.js +0 -150
  514. package/dist/mavb-ZH4RO77H.js +0 -727
  515. package/dist/mds.fimo-MVP2G5PS.js +0 -513
  516. package/dist/mds.samplescatterplot-GYJ3OI4N.js +0 -1545
  517. package/dist/mds.survivalplot-Q6MYQGTB.js +0 -477
  518. package/dist/multivalue-BGFMPH4X.js +0 -83
  519. package/dist/numericDictTermCluster-FNNVLIWB.js +0 -63
  520. package/dist/oncomatrix-LIIALWWN.js +0 -290
  521. package/dist/oncomatrix.spec-NEMLM2ZN.js +0 -443
  522. package/dist/plot.2dvaf-HJO3SKNK.js +0 -372
  523. package/dist/plot.app-WSLFOFSR.js +0 -36
  524. package/dist/plot.barplot-SPI5JA37.js +0 -97
  525. package/dist/plot.boxplot-4W3XEY5I.js +0 -146
  526. package/dist/plot.brainImaging-KEOUTYIB.js +0 -51
  527. package/dist/plot.disco-7IDMKNAQ.js +0 -99
  528. package/dist/plot.ssgq-IOKUGDC4.js +0 -134
  529. package/dist/plot.vaf2cov-SFSZ6M43.js +0 -253
  530. package/dist/polar2-PLPE5TX5.js +0 -232
  531. package/dist/profileForms-ZDHG67GM.js +0 -941
  532. package/dist/profilePlot-UUZA2YG6.js +0 -49
  533. package/dist/proteinView-GHS3XARL.js +0 -1357
  534. package/dist/proteomeCohortCompare-TQ3BGIPS.js +0 -912
  535. package/dist/pseudbulk.unit.spec-HFESRN7A.js +0 -86
  536. package/dist/pseudobulk-ODXYIUD5.js +0 -35
  537. package/dist/qualitative-WOSYAIGQ.js +0 -38
  538. package/dist/radar2-2KXBS3Y3.js +0 -327
  539. package/dist/radarFacility2-JCOKJQQF.js +0 -335
  540. package/dist/render-IJ6GE3NE.js +0 -33
  541. package/dist/report-WLLFUA7L.js +0 -217
  542. package/dist/sampleView-LPKSYUNF.js +0 -43
  543. package/dist/samplelst-MNI2MGMT.js +0 -106
  544. package/dist/samplematrix-KEKJP2B4.js +0 -2193
  545. package/dist/sc-ZYKFRJU4.js +0 -81
  546. package/dist/scatter-BAEZOFWA.js +0 -88
  547. package/dist/scatter-IGFBIZ3B.js +0 -925
  548. package/dist/selectGenomeWithTklst-HBHRXEDY.js +0 -129
  549. package/dist/singleCellCellType-PMFDV24B.js +0 -33
  550. package/dist/singleCellCellType.unit.spec-ZLYDUDIY.js +0 -154
  551. package/dist/singleCellGeneExpression-SUYO3HR3.js +0 -33
  552. package/dist/singleCellGeneExpression.unit.spec-3N3HRXFN.js +0 -148
  553. package/dist/singleCellNumericValue-BV7C6Y34.js +0 -33
  554. package/dist/singleCellNumericValue.unit.spec-7VJOMYQ6.js +0 -416
  555. package/dist/singleCellPlot-BG7UJOHA.js +0 -48
  556. package/dist/singlecell-BANNFGBS.js +0 -81
  557. package/dist/singlecell-ZUTL5ZWE.js +0 -1566
  558. package/dist/snp-BHG4NVK4.js +0 -33
  559. package/dist/snp.unit.spec-Q3AZHQRC.js +0 -171
  560. package/dist/snplocus-HTJL63M3.js +0 -203
  561. package/dist/spliceevent.a53ss.diagram-UKRIP7EP.js +0 -146
  562. package/dist/spliceevent.exonskip.diagram-CU777CXQ.js +0 -278
  563. package/dist/spliceevent.noeventdiagram-LGLXCF25.js +0 -455
  564. package/dist/ssGSEA-BIEEKAKX.js +0 -33
  565. package/dist/ssGSEA.unit.spec-YD4UDIRH.js +0 -83
  566. package/dist/stattable-LFR3RSD6.js +0 -117
  567. package/dist/studyCatalog-RINIZ277.js +0 -414
  568. package/dist/summarizeCnvGeneexp-ZQFNPR65.js +0 -158
  569. package/dist/summarizeGeneexpSurvival-GIS7XMMH.js +0 -105
  570. package/dist/summarizeMutationCnv-FWF7YIGR.js +0 -159
  571. package/dist/summarizeMutationDiagnosis-V5L2OKTK.js +0 -35
  572. package/dist/summarizeMutationSurvival-LAUUF6XN.js +0 -99
  573. package/dist/summary-OMU3ACNE.js +0 -44
  574. package/dist/summary.integration.spec-6JZAT73L.js +0 -409
  575. package/dist/summaryInput-QIKL3HDD.js +0 -242
  576. package/dist/sunburst-32IW2R57.js +0 -278
  577. package/dist/survival-BMOPVAN2.js +0 -53
  578. package/dist/survival-H5AWMQ36.js +0 -1248
  579. package/dist/survival.integration.spec-66UOWSZG.js +0 -613
  580. package/dist/svgraph-B75FS3BB.js +0 -1382
  581. package/dist/svmr-IUEUOHVO.js +0 -3837
  582. package/dist/table-YAAH7WR6.js +0 -197
  583. package/dist/termCollection-7F5ZG2DB.js +0 -252
  584. package/dist/termCollection-KNFUELYY.js +0 -33
  585. package/dist/termCollection.unit.spec-S6M6QC4C.js +0 -299
  586. package/dist/termCollectionFractionSelection-X22VMJWY.js +0 -42
  587. package/dist/termCollectionFractionSelection.unit.spec-ELU6SD7P.js +0 -188
  588. package/dist/tk-TT666UVE.js +0 -41
  589. package/dist/tk-UOPNJ323.js +0 -1121
  590. package/dist/tp.ui-HGAHRKO5.js +0 -1454
  591. package/dist/tvs.dt-H7YYR4EB.js +0 -34
  592. package/dist/tvs.dtcnv.categorical-IPJTKGMF.js +0 -35
  593. package/dist/tvs.dtcnv.continuous-XY5XZ4GH.js +0 -67
  594. package/dist/tvs.dtfusion-VFCBMXRM.js +0 -35
  595. package/dist/tvs.dtitd-RZVW6FTR.js +0 -35
  596. package/dist/tvs.dtsnvindel-IDPJWSGC.js +0 -35
  597. package/dist/tvs.dtsv-QERP756F.js +0 -35
  598. package/dist/tvs.numeric-22AHXO5K.js +0 -20
  599. package/dist/tvs.samplelst-6KNDHBIU.js +0 -98
  600. package/dist/tvs.termCollection-GWPJK3NE.js +0 -124
  601. package/dist/vocabulary-C5FIZMPQ.js +0 -36
  602. package/dist/wsi.direct-2RBCBXDA.js +0 -8343
  603. /package/dist/{2dmaf-VTMPVZGT.js.map → 2dmaf-43QBND66.js.map} +0 -0
  604. /package/dist/{AggMatrixInput-CH3RQ2QC.js.map → AggMatrixInput-X7NGFUHH.js.map} +0 -0
  605. /package/dist/{AggregateMatrix-DPCHUOMF.js.map → AggregateMatrix-M4HRI4PX.js.map} +0 -0
  606. /package/dist/{AppHeader-RA7T467G.js.map → AppHeader-QBRQN6PM.js.map} +0 -0
  607. /package/dist/{BoxPlot-7Q7SMT26.js.map → BoxPlot-V6SPSEQ2.js.map} +0 -0
  608. /package/dist/{CorrelationVolcano-YV4UHOAX.js.map → CorrelationVolcano-UFPCYC77.js.map} +0 -0
  609. /package/dist/{Cuminc-ZN53C3MD.js.map → Cuminc-KXGXGLKZ.js.map} +0 -0
  610. /package/dist/{DE-BEWW5AIG.js.map → DE-K2YXHOOW.js.map} +0 -0
  611. /package/dist/{DM-2LBNE4WE.js.map → DM-C7VN3RWB.js.map} +0 -0
  612. /package/dist/{DifferentialAnalysis-WE4LBHEF.js.map → DifferentialAnalysis-A2BU4WB3.js.map} +0 -0
  613. /package/dist/{Disco-PTZQF7IM.js.map → Disco-HECQVKXG.js.map} +0 -0
  614. /package/dist/{Disco.UI-NBR67N5M.js.map → Disco.UI-XF2GEKRW.js.map} +0 -0
  615. /package/dist/{DmrPlot-QROLI66S.js.map → DmrPlot-TVXVXOHL.js.map} +0 -0
  616. /package/dist/{GB-FEBSFX5U.js.map → GB-66ZGJ5ST.js.map} +0 -0
  617. /package/dist/{GSEA-KOXOVC5V.js.map → GSEA-Z4YPI4HY.js.map} +0 -0
  618. /package/dist/{GeneExpInput-DYBK54HC.js.map → GeneExpInput-VBIZZV27.js.map} +0 -0
  619. /package/dist/{Geomap-QRD2WZVL.js.map → Geomap-UIIOLRFA.js.map} +0 -0
  620. /package/dist/{HicApp-VKET4QHD.js.map → HicApp-73ESVNBA.js.map} +0 -0
  621. /package/dist/{IDCViewer-RLLTXGD7.js.map → IDCViewer-RBYN5A4P.js.map} +0 -0
  622. /package/dist/{NumBinaryEditor-GYHOYPQL.js.map → NumBinaryEditor-DJLSNSLE.js.map} +0 -0
  623. /package/dist/{NumBinaryEditor.unit.spec-E2HKBWOO.js.map → NumBinaryEditor.unit.spec-LCJHL3XM.js.map} +0 -0
  624. /package/dist/{NumContEditor-3V76ZSEY.js.map → NumContEditor-SVLDJ2ML.js.map} +0 -0
  625. /package/dist/{NumContEditor.unit.spec-RTT5Q5E5.js.map → NumContEditor.unit.spec-JDMSK4HY.js.map} +0 -0
  626. /package/dist/{NumCustomBinEditor-O5DMPY7H.js.map → NumCustomBinEditor-BI63AH3R.js.map} +0 -0
  627. /package/dist/{NumCustomBinEditor.unit.spec-5LZBP2JL.js.map → NumCustomBinEditor.unit.spec-5433G7Y2.js.map} +0 -0
  628. /package/dist/{NumDiscreteEditor-DFOJ7AIH.js.map → NumDiscreteEditor-LEZTGXAV.js.map} +0 -0
  629. /package/dist/{NumDiscreteEditor.unit.spec-PPJGEBFX.js.map → NumDiscreteEditor.unit.spec-5OEORHJ4.js.map} +0 -0
  630. /package/dist/{NumRegularBinEditor-O6RDO32C.js.map → NumRegularBinEditor-EXWHIWPM.js.map} +0 -0
  631. /package/dist/{NumRegularBinEditor.unit.spec-GOB3BF25.js.map → NumRegularBinEditor.unit.spec-QY25Z2TT.js.map} +0 -0
  632. /package/dist/{NumSplineEditor-PUXJF2RW.js.map → NumSplineEditor-XPPMYYAD.js.map} +0 -0
  633. /package/dist/{NumSplineEditor.unit.spec-4VOAAMOU.js.map → NumSplineEditor.unit.spec-GOGBKWMN.js.map} +0 -0
  634. /package/dist/{NumericDensity-E6MH2THZ.js.map → NumericDensity-RKY2IQ72.js.map} +0 -0
  635. /package/dist/{NumericDensity.unit.spec-IRPFBQUS.js.map → NumericDensity.unit.spec-5ZM6ICXM.js.map} +0 -0
  636. /package/dist/{NumericHandler-42RR54X3.js.map → NumericHandler-FXF3M5M3.js.map} +0 -0
  637. /package/dist/{NumericHandler.unit.spec-YYOO7XVT.js.map → NumericHandler.unit.spec-M2OQTBJX.js.map} +0 -0
  638. /package/dist/{ProteomeInput-4N2G6IFX.js.map → ProteomeInput-TMZ3THRL.js.map} +0 -0
  639. /package/dist/{Regression-LIWUWAGQ.js.map → Regression-GQGAATHG.js.map} +0 -0
  640. /package/dist/{RunChart2-VAX5JGZY.js.map → RunChart2-7GNDWRKC.js.map} +0 -0
  641. /package/dist/{SC-UHBZ3HRO.js.map → SC-R2I2EMHA.js.map} +0 -0
  642. /package/dist/{Violin-V23VZR6B.js.map → Violin-GKKEB55L.js.map} +0 -0
  643. /package/dist/{Volcano-64S4AW66.js.map → Volcano-HRG5EFWH.js.map} +0 -0
  644. /package/dist/{Wsi-FOJCKDCP.js.map → Wsi-OHRCGYYD.js.map} +0 -0
  645. /package/dist/{adSandbox-CLMUYNC3.js.map → adSandbox-H56B25WR.js.map} +0 -0
  646. /package/dist/{animatedBubbleChart-GMLNYTQC.js.map → animatedBubbleChart-7SXFHU4J.js.map} +0 -0
  647. /package/dist/{app-2SFDRDN2.js.map → app-22JCSULA.js.map} +0 -0
  648. /package/dist/{app-QOZ36UR4.js.map → app-RGZJB6LN.js.map} +0 -0
  649. /package/dist/{bam-LLAK7FVG.js.map → bam-HA65TRGX.js.map} +0 -0
  650. /package/dist/{barchart-SEC6VKQ2.js.map → barchart-6XO75OMA.js.map} +0 -0
  651. /package/dist/{barchart2-D4FXZCTU.js.map → barchart2-6E5BIRHD.js.map} +0 -0
  652. /package/dist/{block-XGK6TEGH.js.map → block-43KNTXZ5.js.map} +0 -0
  653. /package/dist/{block.init-UMRCAKCF.js.map → block.init-TPU5QIPA.js.map} +0 -0
  654. /package/dist/{block.mds.expressionrank-LFPJ52SX.js.map → block.mds.expressionrank-QZDRFXCH.js.map} +0 -0
  655. /package/dist/{block.mds.geneboxplot-2QIEN6AH.js.map → block.mds.geneboxplot-64QVBK5Q.js.map} +0 -0
  656. /package/dist/{block.mds.junction-Z4HUFSG2.js.map → block.mds.junction-I4J6VXNT.js.map} +0 -0
  657. /package/dist/{block.mds.svcnv-3GXGY6ET.js.map → block.mds.svcnv-GDQMSQFF.js.map} +0 -0
  658. /package/dist/{block.svg-7RCJLMAP.js.map → block.svg-2MZFT5QP.js.map} +0 -0
  659. /package/dist/{block.tk.aicheck-5N6EGZ6F.js.map → block.tk.aicheck-2MKHF6LX.js.map} +0 -0
  660. /package/dist/{block.tk.ase-V3AJRYT6.js.map → block.tk.ase-CLYGKFTS.js.map} +0 -0
  661. /package/dist/{block.tk.bam-W6QOVVEU.js.map → block.tk.bam-XTR4QA5Z.js.map} +0 -0
  662. /package/dist/{block.tk.bedgraphdot-FKTPJZTH.js.map → block.tk.bedgraphdot-A2P2CXRU.js.map} +0 -0
  663. /package/dist/{block.tk.bigwig.ui-Y3M2TDM2.js.map → block.tk.bigwig.ui-YZH6JXEO.js.map} +0 -0
  664. /package/dist/{block.tk.hicstraw-3SWYTMFQ.js.map → block.tk.hicstraw-QBK5VWGU.js.map} +0 -0
  665. /package/dist/{block.tk.junction-OXB22PDS.js.map → block.tk.junction-5DEVBA7G.js.map} +0 -0
  666. /package/dist/{block.tk.junction.textmatrixui-PWBLRGCO.js.map → block.tk.junction.textmatrixui-7TTQMO6W.js.map} +0 -0
  667. /package/dist/{block.tk.ld-NTRJL5GA.js.map → block.tk.ld-PRIVUPKL.js.map} +0 -0
  668. /package/dist/{block.tk.menu-JIHSGGIO.js.map → block.tk.menu-JGBRFSS3.js.map} +0 -0
  669. /package/dist/{block.tk.pgv-4Q6CY6QN.js.map → block.tk.pgv-KQJCJMVD.js.map} +0 -0
  670. /package/dist/{brainImaging-MBI4XTTU.js.map → brainImaging-4SLVJ2HV.js.map} +0 -0
  671. /package/dist/{brainRegions-YVTAESRP.js.map → brainRegions-BDIVM2SG.js.map} +0 -0
  672. /package/dist/{bubbleHeatmap-ZKTA3AIG.js.map → bubbleHeatmap-ORKFJNEQ.js.map} +0 -0
  673. /package/dist/{cellTypeBubbleHeatmap-GJZNXDG4.js.map → cellTypeBubbleHeatmap-VOHLI4P7.js.map} +0 -0
  674. /package/dist/{chunk-Z6MCBFDM.js.map → chunk-26N3B2JO.js.map} +0 -0
  675. /package/dist/{chunk-QSOFGLWZ.js.map → chunk-2HNJF5ZI.js.map} +0 -0
  676. /package/dist/{chunk-5FRETII3.js.map → chunk-2LNGHIOC.js.map} +0 -0
  677. /package/dist/{chunk-VOF6NWTS.js.map → chunk-3SCQGODD.js.map} +0 -0
  678. /package/dist/{chunk-NGMM2MNC.js.map → chunk-47STLK7K.js.map} +0 -0
  679. /package/dist/{chunk-ANACCKCQ.js.map → chunk-4XYQG3XU.js.map} +0 -0
  680. /package/dist/{chunk-Z5HU276I.js.map → chunk-53XNEXR6.js.map} +0 -0
  681. /package/dist/{chunk-SXB4IZQ7.js.map → chunk-5UB5H7A3.js.map} +0 -0
  682. /package/dist/{chunk-QGH5BM2D.js.map → chunk-6FYQYTV6.js.map} +0 -0
  683. /package/dist/{chunk-T6Q76PDN.js.map → chunk-6RP6CR4Q.js.map} +0 -0
  684. /package/dist/{chunk-RMHUDMZ7.js.map → chunk-A5D37SIL.js.map} +0 -0
  685. /package/dist/{chunk-DANF4CC5.js.map → chunk-ADRFQ5AL.js.map} +0 -0
  686. /package/dist/{chunk-6LDKSKYQ.js.map → chunk-AUZ63NKJ.js.map} +0 -0
  687. /package/dist/{chunk-XVVVNCXS.js.map → chunk-B563DUNQ.js.map} +0 -0
  688. /package/dist/{chunk-6FG6JFZP.js.map → chunk-BK6UDL7F.js.map} +0 -0
  689. /package/dist/{chunk-7GDRMBNO.js.map → chunk-CT4IG5IR.js.map} +0 -0
  690. /package/dist/{chunk-J5GQGWYX.js.map → chunk-D6UBH77N.js.map} +0 -0
  691. /package/dist/{chunk-5LYVIIYR.js.map → chunk-DS4GLMJL.js.map} +0 -0
  692. /package/dist/{chunk-AFQKYV4D.js.map → chunk-DSBRHWZ7.js.map} +0 -0
  693. /package/dist/{chunk-7FFTAYT4.js.map → chunk-DX35MKPR.js.map} +0 -0
  694. /package/dist/{chunk-BCCFJYPE.js.map → chunk-EDZJ3VNZ.js.map} +0 -0
  695. /package/dist/{chunk-DNCFJTPI.js.map → chunk-F47A4CVK.js.map} +0 -0
  696. /package/dist/{chunk-AVCEHJG7.js.map → chunk-G4H34RNK.js.map} +0 -0
  697. /package/dist/{chunk-TYR355RM.js.map → chunk-G7RUMSHL.js.map} +0 -0
  698. /package/dist/{chunk-FNW6BKOA.js.map → chunk-GXFS25SK.js.map} +0 -0
  699. /package/dist/{chunk-AVCIZWH5.js.map → chunk-IBT6WRY6.js.map} +0 -0
  700. /package/dist/{chunk-K32DV4QI.js.map → chunk-IJ7AIDEO.js.map} +0 -0
  701. /package/dist/{chunk-YKZOQTT4.js.map → chunk-JBFVJHZN.js.map} +0 -0
  702. /package/dist/{chunk-WXXRVJSP.js.map → chunk-JDVBUIEU.js.map} +0 -0
  703. /package/dist/{chunk-2PDBU42F.js.map → chunk-K7RW5TPU.js.map} +0 -0
  704. /package/dist/{chunk-YHP7MYB7.js.map → chunk-LBCIXRI2.js.map} +0 -0
  705. /package/dist/{chunk-K77W4SSI.js.map → chunk-MNXL2UV5.js.map} +0 -0
  706. /package/dist/{chunk-CYWEYHJQ.js.map → chunk-NI5CVN43.js.map} +0 -0
  707. /package/dist/{chunk-CN6KJORZ.js.map → chunk-NOBXDQDU.js.map} +0 -0
  708. /package/dist/{chunk-2RMSV4BS.js.map → chunk-NQNVLZOA.js.map} +0 -0
  709. /package/dist/{chunk-D5ETVOOE.js.map → chunk-NULFGPE3.js.map} +0 -0
  710. /package/dist/{chunk-33BE7AYS.js.map → chunk-OUIXGM3K.js.map} +0 -0
  711. /package/dist/{chunk-VFUSBU43.js.map → chunk-P4LGA36F.js.map} +0 -0
  712. /package/dist/{chunk-MMKSXXU2.js.map → chunk-PU5FQWAY.js.map} +0 -0
  713. /package/dist/{chunk-Q4HTEL2O.js.map → chunk-PZ2OSHBF.js.map} +0 -0
  714. /package/dist/{chunk-JMDUO47F.js.map → chunk-QBNDPW7O.js.map} +0 -0
  715. /package/dist/{chunk-OASGOTRM.js.map → chunk-R5PKBL7V.js.map} +0 -0
  716. /package/dist/{chunk-GYE6FU7P.js.map → chunk-RI65SIN3.js.map} +0 -0
  717. /package/dist/{chunk-OEBGQKQR.js.map → chunk-RPGLLO4T.js.map} +0 -0
  718. /package/dist/{chunk-BG3SGGVB.js.map → chunk-RXNZK7MF.js.map} +0 -0
  719. /package/dist/{chunk-YHWQWVWX.js.map → chunk-S2ICJ3RZ.js.map} +0 -0
  720. /package/dist/{chunk-X4MV2M5F.js.map → chunk-SFHG6H2D.js.map} +0 -0
  721. /package/dist/{chunk-P7X4LDW4.js.map → chunk-TQ2DVEQO.js.map} +0 -0
  722. /package/dist/{chunk-R2QE6ROO.js.map → chunk-U6BJ4ZNU.js.map} +0 -0
  723. /package/dist/{chunk-B6UXFX73.js.map → chunk-UXD6G6G4.js.map} +0 -0
  724. /package/dist/{chunk-OBDIJ4QS.js.map → chunk-VA57CUC7.js.map} +0 -0
  725. /package/dist/{chunk-WIQVSCD5.js.map → chunk-VH5W6ODW.js.map} +0 -0
  726. /package/dist/{chunk-V3SOBDIT.js.map → chunk-VROF55EH.js.map} +0 -0
  727. /package/dist/{chunk-QXDGIQYA.js.map → chunk-VWA7BYSV.js.map} +0 -0
  728. /package/dist/{chunk-KEHVNCFK.js.map → chunk-X37BRSGS.js.map} +0 -0
  729. /package/dist/{chunk-AR3HXZIW.js.map → chunk-XQYDXA47.js.map} +0 -0
  730. /package/dist/{chunk-6G45AUSV.js.map → chunk-XXPUZVS4.js.map} +0 -0
  731. /package/dist/{chunk-OI5KBFBE.js.map → chunk-Y7V5AIUH.js.map} +0 -0
  732. /package/dist/{chunk-OWEBE64A.js.map → chunk-YBNIOGUE.js.map} +0 -0
  733. /package/dist/{chunk-WGDJX7WZ.js.map → chunk-YEYMNF7V.js.map} +0 -0
  734. /package/dist/{chunk-IEIGHCZS.js.map → chunk-YJ74QATP.js.map} +0 -0
  735. /package/dist/{chunk-ULZPHJYD.js.map → chunk-ZG2HCGAO.js.map} +0 -0
  736. /package/dist/{chunk-FR5USNAT.js.map → chunk-ZZN7ZD7J.js.map} +0 -0
  737. /package/dist/{cohort-GVAJTICQ.js.map → cohort-6OCRQQ2S.js.map} +0 -0
  738. /package/dist/{condition-EGPNMM47.js.map → condition-SZVXH3VU.js.map} +0 -0
  739. /package/dist/{controls-HBROSXHF.js.map → controls-MO6ZND76.js.map} +0 -0
  740. /package/dist/{controls.config-FWKV66TU.js.map → controls.config-P4MSTGL4.js.map} +0 -0
  741. /package/dist/{correlation-CEHE66EC.js.map → correlation-NMI3CM3T.js.map} +0 -0
  742. /package/dist/{customdata.inputui-LFT3N5FD.js.map → customdata.inputui-VCHSCA65.js.map} +0 -0
  743. /package/dist/{dataDownload-ZPAIAAE4.js.map → dataDownload-VQHOTQ5D.js.map} +0 -0
  744. /package/dist/{databrowser.ui-W5JGFBE6.js.map → databrowser.ui-ZFOCAG32.js.map} +0 -0
  745. /package/dist/{dictionary-RBE2CIZI.js.map → dictionary-S5YCFUWH.js.map} +0 -0
  746. /package/dist/{dnaMethylation-CX22TSRO.js.map → dnaMethylation-MQZLZRGT.js.map} +0 -0
  747. /package/dist/{dnaMethylation.integration.spec-KEE6ZZRT.js.map → dnaMethylation.integration.spec-H546EBUO.js.map} +0 -0
  748. /package/dist/{dofetch-6NAGX5EG.js.map → dofetch-QZIYSC7H.js.map} +0 -0
  749. /package/dist/{e2pca-XDGPTEXL.js.map → e2pca-XOXOS3PN.js.map} +0 -0
  750. /package/dist/{ep-IUIDMIGW.js.map → ep-U6KRL7FR.js.map} +0 -0
  751. /package/dist/{expclust.gdc.spec-BMN2PTJX.js.map → expclust.gdc.spec-HCK65C63.js.map} +0 -0
  752. /package/dist/{facet-DTJKZOBA.js.map → facet-DCC25KJO.js.map} +0 -0
  753. /package/dist/{gb-MV7MUJWO.js.map → gb-TIFWFD4Y.js.map} +0 -0
  754. /package/dist/{geneExpClustering-NFH5FS3S.js.map → geneExpClustering-6DQEOTOY.js.map} +0 -0
  755. /package/dist/{geneExpression-XVOLNYVN.js.map → geneExpression-EASRAN6B.js.map} +0 -0
  756. /package/dist/{geneExpression-ZP2VWHED.js.map → geneExpression-G4YMDCBH.js.map} +0 -0
  757. /package/dist/{geneExpression.unit.spec-2NSK4ARK.js.map → geneExpression.unit.spec-XVEJYMPX.js.map} +0 -0
  758. /package/dist/{geneORA-HQ7FLMEJ.js.map → geneORA-6UBS5GSC.js.map} +0 -0
  759. /package/dist/{geneRanking-MIABUKTN.js.map → geneRanking-UXXYWHNB.js.map} +0 -0
  760. /package/dist/{geneVariant-H52UUK6Z.js.map → geneVariant-SZRJOXVC.js.map} +0 -0
  761. /package/dist/{geneVariant-HDFWLALZ.js.map → geneVariant-TKFKARZK.js.map} +0 -0
  762. /package/dist/{genefusion.ui-HSDZQHJA.js.map → genefusion.ui-TJLYXSVL.js.map} +0 -0
  763. /package/dist/{geneset-WKV3X2EJ.js.map → geneset-YTBDLEIH.js.map} +0 -0
  764. /package/dist/{genomeBrowser.spec-UTAHAU76.js.map → genomeBrowser.spec-ZO4LFIXE.js.map} +0 -0
  765. /package/dist/{grin2-N2QM3XTG.js.map → grin2-FC4VYU54.js.map} +0 -0
  766. /package/dist/{grin2-M2JDZVYU.js.map → grin2-LIFKBMVK.js.map} +0 -0
  767. /package/dist/{hierCluster-LZI6OTRS.js.map → hierCluster-56EGAPOR.js.map} +0 -0
  768. /package/dist/{hierCluster-VVXPOTQU.js.map → hierCluster-DR5NWCXA.js.map} +0 -0
  769. /package/dist/{hierCluster.config-NCYH3Y7Z.js.map → hierCluster.config-NACE3FH2.js.map} +0 -0
  770. /package/dist/{hierCluster.integration.spec-ZDOOCTV3.js.map → hierCluster.integration.spec-PEEXPAS6.js.map} +0 -0
  771. /package/dist/{hierCluster.interactivity-4HP3JCON.js.map → hierCluster.interactivity-OCBGLUJM.js.map} +0 -0
  772. /package/dist/{hierCluster.renderers-3F5GMEXA.js.map → hierCluster.renderers-JNQUSAP4.js.map} +0 -0
  773. /package/dist/{imagePlot-OA4WTMLU.js.map → imagePlot-GR4JNUGG.js.map} +0 -0
  774. /package/dist/{importPlot-OSTC2GPO.js.map → importPlot-4R4BSPVD.js.map} +0 -0
  775. /package/dist/{isoformExpression-LZ5RTUS5.js.map → isoformExpression-ST5ZW2NE.js.map} +0 -0
  776. /package/dist/{isoformExpression.unit.spec-L6YDBKYM.js.map → isoformExpression.unit.spec-PPFC5Z7N.js.map} +0 -0
  777. /package/dist/{junction-UR6COY3A.js.map → junction-7AKZHOHV.js.map} +0 -0
  778. /package/dist/{junction.unit.spec-NVBJTGA4.js.map → junction.unit.spec-SZUJXRQ2.js.map} +0 -0
  779. /package/dist/{launch.adhoc-AZG6QJG7.js.map → launch.adhoc-RWJQUOJ6.js.map} +0 -0
  780. /package/dist/{leftlabel.sample-LYZG25RT.js.map → leftlabel.sample-WRHLVQAQ.js.map} +0 -0
  781. /package/dist/{lollipop-FJXVP5QM.js.map → lollipop-ZZWXTM23.js.map} +0 -0
  782. /package/dist/{maf-OXJIJD6D.js.map → maf-N4XPZTQU.js.map} +0 -0
  783. /package/dist/{maftimeline-75N6ZXEM.js.map → maftimeline-2FBS6RWS.js.map} +0 -0
  784. /package/dist/{matrix-QFKGEW5A.js.map → matrix-5KEQPB5H.js.map} +0 -0
  785. /package/dist/{matrix-XT7LUV5K.js.map → matrix-RJUNXB5N.js.map} +0 -0
  786. /package/dist/{matrix.cells-NB7LKKXV.js.map → matrix.cells-WXTPOJYB.js.map} +0 -0
  787. /package/dist/{matrix.config-X6HS4UGD.js.map → matrix.config-ZZFLLD6Z.js.map} +0 -0
  788. /package/dist/{matrix.data-VLFF34SS.js.map → matrix.data-3PQ73GVJ.js.map} +0 -0
  789. /package/dist/{matrix.groups-F62TSKIG.js.map → matrix.groups-U6CKS6WW.js.map} +0 -0
  790. /package/dist/{matrix.integration.spec-7QBYWHW6.js.map → matrix.integration.spec-T53PMVHC.js.map} +0 -0
  791. /package/dist/{matrix.interactivity-2FBXB52E.js.map → matrix.interactivity-3LDZV3F7.js.map} +0 -0
  792. /package/dist/{matrix.layout-6TPVKLSX.js.map → matrix.layout-MINLYQCA.js.map} +0 -0
  793. /package/dist/{matrix.legend-L4ULBMGX.js.map → matrix.legend-6GSDFZHS.js.map} +0 -0
  794. /package/dist/{matrix.renderers-DK6YRLO2.js.map → matrix.renderers-5BKOXDE3.js.map} +0 -0
  795. /package/dist/{matrix.serieses-DCRJLJ3H.js.map → matrix.serieses-6FCFIFAQ.js.map} +0 -0
  796. /package/dist/{matrix.sort-XSGPH44J.js.map → matrix.sort-EHVVYDZ3.js.map} +0 -0
  797. /package/dist/{matrix.sort.unit.spec-JF75F4I4.js.map → matrix.sort.unit.spec-BCWE4AFX.js.map} +0 -0
  798. /package/dist/{matrix.sorterUi.unit.spec-66JMV5BK.js.map → matrix.sorterUi.unit.spec-XJR5KXRL.js.map} +0 -0
  799. /package/dist/{matrix.unit.spec-36AR4I43.js.map → matrix.unit.spec-TUCKPE26.js.map} +0 -0
  800. /package/dist/{mavb-ZH4RO77H.js.map → mavb-GWSNRBLM.js.map} +0 -0
  801. /package/dist/{mds.fimo-MVP2G5PS.js.map → mds.fimo-OMAQRSMW.js.map} +0 -0
  802. /package/dist/{mds.samplescatterplot-GYJ3OI4N.js.map → mds.samplescatterplot-4UW3CC45.js.map} +0 -0
  803. /package/dist/{mds.survivalplot-Q6MYQGTB.js.map → mds.survivalplot-2CJYJBD2.js.map} +0 -0
  804. /package/dist/{multivalue-BGFMPH4X.js.map → multivalue-G44MHEYI.js.map} +0 -0
  805. /package/dist/{numericDictTermCluster-FNNVLIWB.js.map → numericDictTermCluster-5BDRGVQG.js.map} +0 -0
  806. /package/dist/{oncomatrix-LIIALWWN.js.map → oncomatrix-ZTVO23ZH.js.map} +0 -0
  807. /package/dist/{oncomatrix.spec-NEMLM2ZN.js.map → oncomatrix.spec-2QVK2A3Q.js.map} +0 -0
  808. /package/dist/{plot.2dvaf-HJO3SKNK.js.map → plot.2dvaf-CL5YUXKH.js.map} +0 -0
  809. /package/dist/{plot.app-WSLFOFSR.js.map → plot.app-4ANKPSNP.js.map} +0 -0
  810. /package/dist/{plot.barplot-SPI5JA37.js.map → plot.barplot-BMGDNZRA.js.map} +0 -0
  811. /package/dist/{plot.boxplot-4W3XEY5I.js.map → plot.boxplot-GMLQCDP6.js.map} +0 -0
  812. /package/dist/{plot.brainImaging-KEOUTYIB.js.map → plot.brainImaging-RZXX3NUZ.js.map} +0 -0
  813. /package/dist/{plot.disco-7IDMKNAQ.js.map → plot.disco-3MD4J4C7.js.map} +0 -0
  814. /package/dist/{plot.ssgq-IOKUGDC4.js.map → plot.ssgq-ZC4UYKOT.js.map} +0 -0
  815. /package/dist/{plot.vaf2cov-SFSZ6M43.js.map → plot.vaf2cov-4DHFMYQV.js.map} +0 -0
  816. /package/dist/{polar2-PLPE5TX5.js.map → polar2-TMB5EITR.js.map} +0 -0
  817. /package/dist/{profileForms-ZDHG67GM.js.map → profileForms-GD7BIOOD.js.map} +0 -0
  818. /package/dist/{profilePlot-UUZA2YG6.js.map → profilePlot-CZLK5E74.js.map} +0 -0
  819. /package/dist/{proteinView-GHS3XARL.js.map → proteinView-FEEEXLKT.js.map} +0 -0
  820. /package/dist/{proteomeCohortCompare-TQ3BGIPS.js.map → proteomeCohortCompare-NVLJ2FXX.js.map} +0 -0
  821. /package/dist/{pseudbulk.unit.spec-HFESRN7A.js.map → pseudbulk.unit.spec-GHQZPNAH.js.map} +0 -0
  822. /package/dist/{pseudobulk-ODXYIUD5.js.map → pseudobulk-G5UQIRKL.js.map} +0 -0
  823. /package/dist/{qualitative-WOSYAIGQ.js.map → qualitative-EAUUCKU5.js.map} +0 -0
  824. /package/dist/{radar2-2KXBS3Y3.js.map → radar2-CJQ2L6KE.js.map} +0 -0
  825. /package/dist/{radarFacility2-JCOKJQQF.js.map → radarFacility2-BLVRZE4V.js.map} +0 -0
  826. /package/dist/{render-IJ6GE3NE.js.map → render-KKAQPH6Y.js.map} +0 -0
  827. /package/dist/{report-WLLFUA7L.js.map → report-OSOJHTSD.js.map} +0 -0
  828. /package/dist/{sampleView-LPKSYUNF.js.map → sampleView-WB74RLD7.js.map} +0 -0
  829. /package/dist/{samplelst-MNI2MGMT.js.map → samplelst-ZKXV5WOD.js.map} +0 -0
  830. /package/dist/{samplematrix-KEKJP2B4.js.map → samplematrix-WJFYMWLT.js.map} +0 -0
  831. /package/dist/{sc-ZYKFRJU4.js.map → sc-RBRBUCLR.js.map} +0 -0
  832. /package/dist/{scatter-BAEZOFWA.js.map → scatter-5K3QTIDK.js.map} +0 -0
  833. /package/dist/{scatter-IGFBIZ3B.js.map → scatter-SM7GQENM.js.map} +0 -0
  834. /package/dist/{selectGenomeWithTklst-HBHRXEDY.js.map → selectGenomeWithTklst-ZZUJ7AQ7.js.map} +0 -0
  835. /package/dist/{singleCellCellType-PMFDV24B.js.map → singleCellCellType-LCF2JNZ2.js.map} +0 -0
  836. /package/dist/{singleCellCellType.unit.spec-ZLYDUDIY.js.map → singleCellCellType.unit.spec-T6DYH4BC.js.map} +0 -0
  837. /package/dist/{singleCellGeneExpression-SUYO3HR3.js.map → singleCellGeneExpression-2XUYTH4C.js.map} +0 -0
  838. /package/dist/{singleCellGeneExpression.unit.spec-3N3HRXFN.js.map → singleCellGeneExpression.unit.spec-SMRCLOF4.js.map} +0 -0
  839. /package/dist/{singleCellNumericValue-BV7C6Y34.js.map → singleCellNumericValue-57I33FZT.js.map} +0 -0
  840. /package/dist/{singleCellNumericValue.unit.spec-7VJOMYQ6.js.map → singleCellNumericValue.unit.spec-4YNB4OEV.js.map} +0 -0
  841. /package/dist/{singleCellPlot-BG7UJOHA.js.map → singleCellPlot-L6TKQHGD.js.map} +0 -0
  842. /package/dist/{singlecell-BANNFGBS.js.map → singlecell-LZKR3UDV.js.map} +0 -0
  843. /package/dist/{singlecell-ZUTL5ZWE.js.map → singlecell-UKN2VCXQ.js.map} +0 -0
  844. /package/dist/{snp-BHG4NVK4.js.map → snp-3LJITU5B.js.map} +0 -0
  845. /package/dist/{snp.unit.spec-Q3AZHQRC.js.map → snp.unit.spec-ZQNU6XRM.js.map} +0 -0
  846. /package/dist/{snplocus-HTJL63M3.js.map → snplocus-OME7UQBW.js.map} +0 -0
  847. /package/dist/{spliceevent.a53ss.diagram-UKRIP7EP.js.map → spliceevent.a53ss.diagram-C32IEFMU.js.map} +0 -0
  848. /package/dist/{spliceevent.exonskip.diagram-CU777CXQ.js.map → spliceevent.exonskip.diagram-CZ7MVRLK.js.map} +0 -0
  849. /package/dist/{spliceevent.noeventdiagram-LGLXCF25.js.map → spliceevent.noeventdiagram-ZO6R3776.js.map} +0 -0
  850. /package/dist/{ssGSEA-BIEEKAKX.js.map → ssGSEA-BGPQ2PFY.js.map} +0 -0
  851. /package/dist/{ssGSEA.unit.spec-YD4UDIRH.js.map → ssGSEA.unit.spec-U7TBUSSK.js.map} +0 -0
  852. /package/dist/{stattable-LFR3RSD6.js.map → stattable-FISGQCED.js.map} +0 -0
  853. /package/dist/{studyCatalog-RINIZ277.js.map → studyCatalog-UHFUT2CJ.js.map} +0 -0
  854. /package/dist/{summarizeCnvGeneexp-ZQFNPR65.js.map → summarizeCnvGeneexp-OVZO6KIB.js.map} +0 -0
  855. /package/dist/{summarizeGeneexpSurvival-GIS7XMMH.js.map → summarizeGeneexpSurvival-KVQ4JGWK.js.map} +0 -0
  856. /package/dist/{summarizeMutationCnv-FWF7YIGR.js.map → summarizeMutationCnv-RAKGHNLE.js.map} +0 -0
  857. /package/dist/{summarizeMutationDiagnosis-V5L2OKTK.js.map → summarizeMutationDiagnosis-LGCINAGG.js.map} +0 -0
  858. /package/dist/{summarizeMutationSurvival-LAUUF6XN.js.map → summarizeMutationSurvival-J7H7L4FX.js.map} +0 -0
  859. /package/dist/{summary-OMU3ACNE.js.map → summary-2632JZXH.js.map} +0 -0
  860. /package/dist/{summary.integration.spec-6JZAT73L.js.map → summary.integration.spec-5WBS2ZRP.js.map} +0 -0
  861. /package/dist/{summaryInput-QIKL3HDD.js.map → summaryInput-BH6C3ATV.js.map} +0 -0
  862. /package/dist/{sunburst-32IW2R57.js.map → sunburst-AMRR2IHM.js.map} +0 -0
  863. /package/dist/{survival-H5AWMQ36.js.map → survival-2RNJQVFS.js.map} +0 -0
  864. /package/dist/{survival-BMOPVAN2.js.map → survival-WYCH4QOQ.js.map} +0 -0
  865. /package/dist/{survival.integration.spec-66UOWSZG.js.map → survival.integration.spec-7IFPY4I4.js.map} +0 -0
  866. /package/dist/{svgraph-B75FS3BB.js.map → svgraph-YQWS52ZJ.js.map} +0 -0
  867. /package/dist/{svmr-IUEUOHVO.js.map → svmr-NRN6LGKK.js.map} +0 -0
  868. /package/dist/{table-YAAH7WR6.js.map → table-3QOMV2NN.js.map} +0 -0
  869. /package/dist/{termCollection-KNFUELYY.js.map → termCollection-2ZJ7TJGO.js.map} +0 -0
  870. /package/dist/{termCollection-7F5ZG2DB.js.map → termCollection-3MCVR7BA.js.map} +0 -0
  871. /package/dist/{termCollection.unit.spec-S6M6QC4C.js.map → termCollection.unit.spec-QYOEA3X6.js.map} +0 -0
  872. /package/dist/{termCollectionFractionSelection-X22VMJWY.js.map → termCollectionFractionSelection-5AH6EF4L.js.map} +0 -0
  873. /package/dist/{termCollectionFractionSelection.unit.spec-ELU6SD7P.js.map → termCollectionFractionSelection.unit.spec-WPGW4WJN.js.map} +0 -0
  874. /package/dist/{tk-TT666UVE.js.map → tk-DQ7D5UEO.js.map} +0 -0
  875. /package/dist/{tk-UOPNJ323.js.map → tk-ONKYBG6R.js.map} +0 -0
  876. /package/dist/{tp.ui-HGAHRKO5.js.map → tp.ui-C7BTMHEI.js.map} +0 -0
  877. /package/dist/{tvs.dt-H7YYR4EB.js.map → tvs.dt-PLRMK7OT.js.map} +0 -0
  878. /package/dist/{tvs.dtcnv.categorical-IPJTKGMF.js.map → tvs.dtcnv.categorical-IZUY2AQO.js.map} +0 -0
  879. /package/dist/{tvs.dtcnv.continuous-XY5XZ4GH.js.map → tvs.dtcnv.continuous-ENV3RHHA.js.map} +0 -0
  880. /package/dist/{tvs.dtfusion-VFCBMXRM.js.map → tvs.dtfusion-2DVCV6AM.js.map} +0 -0
  881. /package/dist/{tvs.dtitd-RZVW6FTR.js.map → tvs.dtitd-XNDIRQYU.js.map} +0 -0
  882. /package/dist/{tvs.dtsnvindel-IDPJWSGC.js.map → tvs.dtsnvindel-4D3G7XSF.js.map} +0 -0
  883. /package/dist/{tvs.dtsv-QERP756F.js.map → tvs.dtsv-QYMIMC4Z.js.map} +0 -0
  884. /package/dist/{tvs.numeric-22AHXO5K.js.map → tvs.numeric-M5LH3PRH.js.map} +0 -0
  885. /package/dist/{tvs.samplelst-6KNDHBIU.js.map → tvs.samplelst-2KEU2ZWB.js.map} +0 -0
  886. /package/dist/{tvs.termCollection-GWPJK3NE.js.map → tvs.termCollection-FEY746V5.js.map} +0 -0
  887. /package/dist/{vocabulary-C5FIZMPQ.js.map → vocabulary-BR4NJDPS.js.map} +0 -0
  888. /package/dist/{wsi.direct-2RBCBXDA.js.map → wsi.direct-JWDUNHIO.js.map} +0 -0
@@ -1,3837 +0,0 @@
1
- import {
2
- appear2 as appear,
3
- axisstyle,
4
- bulk_badline,
5
- colorbgleft,
6
- colorbgright,
7
- colorctx,
8
- colorinframe,
9
- coloroutframe,
10
- disappear2 as disappear,
11
- export_data,
12
- font,
13
- make_table_2col,
14
- newpane,
15
- sayerror
16
- } from "./chunk-C3HEDQPT.js";
17
- import {
18
- genomic2gm
19
- } from "./chunk-HJ6L54YS.js";
20
- import "./chunk-KV4W2ACA.js";
21
- import "./chunk-B6UXFX73.js";
22
- import {
23
- Menu
24
- } from "./chunk-ELJX3QIQ.js";
25
- import "./chunk-3FEP6B5T.js";
26
- import "./chunk-EEB5VE2A.js";
27
- import "./chunk-6RRZRISL.js";
28
- import "./chunk-2KM4PRQM.js";
29
- import "./chunk-OBDIJ4QS.js";
30
- import "./chunk-6FG6JFZP.js";
31
- import "./chunk-3XBG5HIV.js";
32
- import {
33
- bplen,
34
- dtcloss,
35
- dtfusionrna,
36
- dtitd,
37
- dtnloss,
38
- mclasscloss,
39
- mclassfusionrna,
40
- mclassitd,
41
- mclassnloss
42
- } from "./chunk-SB36AUG7.js";
43
- import "./chunk-WINIL2KN.js";
44
- import "./chunk-PF4DSFDR.js";
45
- import "./chunk-7X6NF7NI.js";
46
- import "./chunk-W5J3LTYS.js";
47
- import {
48
- axisTop
49
- } from "./chunk-Z2ZITHT4.js";
50
- import {
51
- linear
52
- } from "./chunk-4OLM3KSB.js";
53
- import "./chunk-FXQXCOII.js";
54
- import "./chunk-TLT4YIG3.js";
55
- import "./chunk-5R63Q5KH.js";
56
- import {
57
- select_default
58
- } from "./chunk-I6Y4O3RR.js";
59
- import "./chunk-Q5RDQNIT.js";
60
- import "./chunk-DQC5FFGV.js";
61
- import "./chunk-HS5PO5ZQ.js";
62
-
63
- // src/svmr.unload.js
64
- function svmr_export_json(svmr, hqonly) {
65
- var rows = [];
66
- for (const sample of svmr.samples) {
67
- for (const egg of sample.egglst) {
68
- for (const eg of egg.lst) {
69
- if (eg.ismsg) {
70
- const lst = eg.lst.map((evt) => evt.lst[0]);
71
- if (hqonly) {
72
- let hashq = false;
73
- for (const i of lst) {
74
- if (i.rating == "Major") hashq = true;
75
- }
76
- if (hashq) {
77
- rows.push(lst);
78
- }
79
- } else {
80
- rows.push(lst);
81
- }
82
- } else {
83
- for (const evt of eg.lst) {
84
- for (const p of evt.lst) {
85
- if (hqonly) {
86
- if (p.rating == "Major") rows.push([p]);
87
- } else {
88
- rows.push([p]);
89
- }
90
- }
91
- }
92
- }
93
- }
94
- }
95
- }
96
- const lines = [], e_itd = [], e_nloss = [], e_closs = [];
97
- for (const row of rows) {
98
- if (row.length == 1 && row[0].usepair) {
99
- const p = row[0];
100
- if (p.isitd) {
101
- const u = p.usepair;
102
- const gm = svmr.genome.isoformmatch(u.a.isoform, p.chrA, p.posA);
103
- if (!gm) {
104
- e_itd.push(p.sample + " " + p.geneA + " ITD (" + p.rating + "): no gene model found for " + u.a.isoform);
105
- continue;
106
- }
107
- const exonbp1 = genomic2gm(p.posA, gm).rnapos;
108
- const exonbp2 = genomic2gm(p.posB, gm).rnapos;
109
- if (exonbp1 <= exonbp2) {
110
- e_itd.push(p.sample + " " + p.geneA + " ITD (" + p.rating + "): negative duplication length");
111
- continue;
112
- }
113
- const itd = {
114
- typecode: dtitd,
115
- gene: p.geneA,
116
- isoform: u.a.isoform,
117
- rating: p.rating,
118
- score: p.score,
119
- functioneffect: p.functioneffect,
120
- rnaposition: exonbp2,
121
- rnaduplength: exonbp1 - exonbp2 + 1,
122
- a: {
123
- chr: p.chrA,
124
- position: p.posA,
125
- strand: p.ortA,
126
- ratio: p.ratioA,
127
- chimericreads: p.readsA,
128
- totalreads: p.totalreadsA,
129
- match: p.matchA,
130
- repeat: p.repeatA
131
- },
132
- b: {
133
- chr: p.chrB,
134
- position: p.posB,
135
- strand: p.ortB,
136
- ratio: p.ratioB,
137
- chimericreads: p.readsB,
138
- totalreads: p.totalreadsB,
139
- match: p.matchB,
140
- repeat: p.repeatB
141
- }
142
- };
143
- let aalen = 0, bplen2 = 0;
144
- if (u.a.contigaa && u.b.contigaa) {
145
- aalen = u.b.contigaa - u.a.contigaa - 1;
146
- }
147
- if (u.a.contigbp && u.b.contigbp) {
148
- bplen2 = u.b.contigbp - u.a.contigbp - 1;
149
- }
150
- if (aalen > 0) {
151
- itd.interstitial = { aalen };
152
- }
153
- if (bplen2 > 0) {
154
- if (!itd.interstitial) itd.interstitial = {};
155
- itd.interstitial.bplen = bplen2;
156
- }
157
- lines.push([p.sample, p.geneA, p.usepair.a.isoform, JSON.stringify(itd)]);
158
- continue;
159
- }
160
- if (p.isnloss) {
161
- const p2 = p.usepair.b;
162
- if (!p2.isoform) {
163
- e_nloss.push(p.sample + " " + p.geneB + " NLoss (" + p.rating + "): no isoform");
164
- continue;
165
- }
166
- const gm = svmr.genome.isoformmatch(p2.isoform, p.chrB, p.posB);
167
- if (!gm) {
168
- e_nloss.push(p.sample + " " + p.geneB + " NLoss (" + p.rating + "): no gene model found for " + p2.isoform);
169
- continue;
170
- }
171
- const exonbp = genomic2gm(p.posB, gm).rnapos;
172
- const pp = {
173
- typecode: dtnloss,
174
- gene: p.geneB,
175
- isoform: p2.isoform,
176
- rating: p.rating,
177
- score: p.score,
178
- functioneffect: p.functioneffect,
179
- rnaposition: exonbp,
180
- chr: p.chrB,
181
- position: p.posB,
182
- strand: p.ortB,
183
- ratio: p.ratioB,
184
- chimericreads: p.readsB,
185
- match: p.matchB,
186
- repeat: p.repeatB,
187
- partner: {
188
- chr: p.chrA,
189
- position: p.posA,
190
- strand: p.ortA,
191
- ratio: p.ratioA,
192
- chimericreads: p.readsA,
193
- match: p.matchA,
194
- repeat: p.repeatA
195
- }
196
- };
197
- if (p.geneA) {
198
- pp.partner.gene = p.geneA;
199
- }
200
- if (p.usepair.a.isoform) {
201
- pp.partner.isoform = p.usepair.a.isoform;
202
- }
203
- lines.push([p.sample, p.geneB, p2.isoform, JSON.stringify(pp)]);
204
- continue;
205
- }
206
- if (p.iscloss) {
207
- const p2 = p.usepair.a;
208
- if (!p2.isoform) {
209
- e_nloss.push(p.sample + " " + p.geneA + " CLoss (" + p.rating + "): no isoform");
210
- continue;
211
- }
212
- const gm = svmr.genome.isoformmatch(p2.isoform, p.chrA, p.posA);
213
- if (!gm) {
214
- e_nloss.push(p.sample + " " + p.geneA + " CLoss (" + p.rating + "): no gene model found by " + p2.isoform);
215
- continue;
216
- }
217
- const exonbp = genomic2gm(p.posA, gm).rnapos;
218
- const pp = {
219
- typecode: dtcloss,
220
- gene: p.geneA,
221
- isoform: p2.isoform,
222
- rating: p.rating,
223
- score: p.score,
224
- functioneffect: p.functioneffect,
225
- rnaposition: exonbp,
226
- chr: p.chrA,
227
- position: p.posA,
228
- strand: p.ortA,
229
- ratio: p.ratioA,
230
- chimericreads: p.readsA,
231
- match: p.matchA,
232
- repeat: p.repeatA,
233
- partner: {
234
- chr: p.chrB,
235
- position: p.posB,
236
- strand: p.ortB,
237
- ratio: p.ratioB,
238
- chimericreads: p.readsB,
239
- match: p.matchB,
240
- repeat: p.repeatB
241
- }
242
- };
243
- if (p.geneB) {
244
- pp.partner.gene = p.geneB;
245
- }
246
- if (p.usepair.b.isoform) {
247
- pp.partner.isoform = p.usepair.b.isoform;
248
- }
249
- lines.push([p.sample, p.geneA, p2.isoform, JSON.stringify(pp)]);
250
- continue;
251
- }
252
- }
253
- const genes = /* @__PURE__ */ new Set(), isoforms = /* @__PURE__ */ new Set(), cleanup = [];
254
- for (const p of row) {
255
- if (p.geneA) genes.add(p.geneA);
256
- if (p.geneB) genes.add(p.geneB);
257
- if (p.usepair) {
258
- if (p.usepair.a.isoform) isoforms.add(p.usepair.a.isoform);
259
- if (p.usepair.b.isoform) isoforms.add(p.usepair.b.isoform);
260
- }
261
- const clean = {
262
- type: p.type,
263
- type2: p.type2,
264
- rating: p.rating,
265
- score: p.score,
266
- functioneffect: p.functioneffect,
267
- a: {
268
- name: p.geneA,
269
- chr: p.chrA,
270
- position: p.posA,
271
- strand: p.ortA,
272
- ratio: p.ratioA,
273
- feature: p.featureA,
274
- chimericreads: p.readsA,
275
- contiglen: p.matchA,
276
- repeatscore: p.repeatA
277
- },
278
- b: {
279
- name: p.geneB,
280
- chr: p.chrB,
281
- position: p.posB,
282
- strand: p.ortB,
283
- ratio: p.ratioB,
284
- feature: p.featureB,
285
- chimericreads: p.readsB,
286
- contiglen: p.matchB,
287
- repeatscore: p.repeatB
288
- }
289
- };
290
- if (p.usepair) {
291
- const u = p.usepair;
292
- clean.frame = u.frame;
293
- if (u.a.isoform) {
294
- clean.a.isoform = u.a.isoform;
295
- }
296
- if (u.b.isoform) {
297
- clean.b.isoform = u.b.isoform;
298
- }
299
- let aalen = 0, bplen2 = 0;
300
- if (u.a.contigaa && u.b.contigaa) {
301
- aalen = u.b.contigaa - u.a.contigaa - 1;
302
- }
303
- if (u.a.contigbp && u.b.contigbp) {
304
- bplen2 = u.b.contigbp - u.a.contigbp - 1;
305
- }
306
- if (aalen > 0) {
307
- clean.interstitial = { aalen };
308
- }
309
- if (bplen2 > 0) {
310
- if (!clean.interstitial) clean.interstitial = {};
311
- clean.interstitial.bplen = bplen2;
312
- }
313
- }
314
- cleanup.push(clean);
315
- }
316
- const genenames = [...genes];
317
- const isoformnames = [...isoforms];
318
- lines.push([
319
- row[0].sample,
320
- genenames.length ? genenames.join(",") : "none",
321
- isoformnames.length ? isoformnames.join(",") : "none",
322
- JSON.stringify(cleanup)
323
- ]);
324
- }
325
- if (e_itd.length) {
326
- svmr.err(e_itd.join("<br>"));
327
- }
328
- if (e_nloss.length) {
329
- svmr.err(e_nloss.join("<br>"));
330
- }
331
- if (e_closs.length) {
332
- svmr.err(e_closs.join("<br>"));
333
- }
334
- export_data("Fusion data from " + svmr.filename, [{ text: lines.map((i) => i.join(" ")).join("\n") }]);
335
- }
336
- function svmr_2pp(svmr, hqonly) {
337
- const rows = [];
338
- for (const sample of svmr.samples) {
339
- for (const egg of sample.egglst) {
340
- for (const eg of egg.lst) {
341
- if (eg.ismsg) {
342
- const lst = eg.lst.map((evt) => evt.lst[0]);
343
- if (hqonly) {
344
- let hashq = false;
345
- for (const i of lst) {
346
- if (i.rating == "Major") hashq = true;
347
- }
348
- if (hashq) {
349
- rows.push(lst);
350
- }
351
- } else {
352
- rows.push(lst);
353
- }
354
- } else {
355
- for (const evt of eg.lst) {
356
- for (const p of evt.lst) {
357
- if (hqonly) {
358
- if (p.rating == "Major") rows.push([p]);
359
- } else {
360
- rows.push([p]);
361
- }
362
- }
363
- }
364
- }
365
- }
366
- }
367
- }
368
- const genes = {}, e_itd = [], e_nloss = [], e_closs = [];
369
- for (const row of rows) {
370
- if (row.length == 1 && row[0].usepair) {
371
- const p = row[0];
372
- if (p.isitd) {
373
- if (!p.geneA) {
374
- e_itd.push(p.sample + " ITD (" + p.rating + "): no gene name??");
375
- continue;
376
- }
377
- const u = p.usepair;
378
- const gm = svmr.genome.isoformmatch(u.a.isoform, p.chrA, p.posA);
379
- if (!gm) {
380
- e_itd.push(p.sample + " " + p.geneA + " ITD (" + p.rating + "): no gene model found for " + u.a.isoform);
381
- continue;
382
- }
383
- const exonbp1 = genomic2gm(p.posA, gm).rnapos;
384
- const exonbp2 = genomic2gm(p.posB, gm).rnapos;
385
- if (exonbp1 <= exonbp2) {
386
- e_itd.push(p.sample + " " + p.geneA + " ITD (" + p.rating + "): negative duplication length");
387
- continue;
388
- }
389
- const itd = {
390
- dt: dtitd,
391
- class: mclassitd,
392
- mname: "ITD",
393
- gene: p.geneA,
394
- sample: p.sample,
395
- isoform: u.a.isoform,
396
- rating: p.rating,
397
- score: p.score,
398
- functioneffect: p.functioneffect,
399
- rnaposition: exonbp2,
400
- rnaduplength: exonbp1 - exonbp2 + 1,
401
- a: {
402
- chr: p.chrA,
403
- position: p.posA,
404
- strand: p.ortA,
405
- ratio: p.ratioA,
406
- chimericreads: p.readsA,
407
- totalreads: p.totalreadsA,
408
- match: p.matchA,
409
- repeat: p.repeatA
410
- },
411
- b: {
412
- chr: p.chrB,
413
- position: p.posB,
414
- strand: p.ortB,
415
- ratio: p.ratioB,
416
- chimericreads: p.readsB,
417
- totalreads: p.totalreadsB,
418
- match: p.matchB,
419
- repeat: p.repeatB
420
- }
421
- };
422
- let aalen = 0, bplen2 = 0;
423
- if (u.a.contigaa && u.b.contigaa) {
424
- aalen = u.b.contigaa - u.a.contigaa - 1;
425
- }
426
- if (u.a.contigbp && u.b.contigbp) {
427
- bplen2 = u.b.contigbp - u.a.contigbp - 1;
428
- }
429
- if (aalen > 0) {
430
- itd.interstitial = { aalen };
431
- }
432
- if (bplen2 > 0) {
433
- if (!itd.interstitial) itd.interstitial = {};
434
- itd.interstitial.bplen = bplen2;
435
- }
436
- if (!(p.geneA in genes)) {
437
- genes[p.geneA] = [];
438
- }
439
- genes[p.geneA].push(itd);
440
- continue;
441
- }
442
- if (p.isnloss) {
443
- if (!p.geneB) {
444
- e_nloss.push(p.sample + " NLoss (" + p.rating + "): no geneB");
445
- continue;
446
- }
447
- const p2 = p.usepair.b;
448
- if (!p2.isoform) {
449
- e_nloss.push(p.sample + " " + p.geneB + " NLoss (" + p.rating + "): no isoform");
450
- continue;
451
- }
452
- const gm = svmr.genome.isoformmatch(p2.isoform, p.chrB, p.posB);
453
- if (!gm) {
454
- e_nloss.push(p.sample + " " + p.geneB + " NLoss (" + p.rating + "): no gene model found for " + p2.isoform);
455
- continue;
456
- }
457
- const exonbp = genomic2gm(p.posB, gm).rnapos;
458
- const pp = {
459
- dt: dtnloss,
460
- class: mclassnloss,
461
- mname: "N-loss",
462
- gene: p.geneB,
463
- sample: p.sample,
464
- isoform: p2.isoform,
465
- rating: p.rating,
466
- score: p.score,
467
- functioneffect: p.functioneffect,
468
- rnaposition: exonbp,
469
- chr: p.chrB,
470
- position: p.posB,
471
- strand: p.ortB,
472
- ratio: p.ratioB,
473
- chimericreads: p.readsB,
474
- match: p.matchB,
475
- repeat: p.repeatB,
476
- partner: {
477
- chr: p.chrA,
478
- position: p.posA,
479
- strand: p.ortA,
480
- ratio: p.ratioA,
481
- chimericreads: p.readsA,
482
- match: p.matchA,
483
- repeat: p.repeatA
484
- }
485
- };
486
- if (p.geneA) {
487
- pp.partner.gene = p.geneA;
488
- }
489
- if (p.usepair.a.isoform) {
490
- pp.partner.isoform = p.usepair.a.isoform;
491
- }
492
- if (!(p.geneB in genes)) {
493
- genes[p.geneB] = [];
494
- }
495
- genes[p.geneB].push(pp);
496
- continue;
497
- }
498
- if (p.iscloss) {
499
- if (!p.geneA) {
500
- e_closs.push(p.sample + " CLoss (" + p.rating + "): no geneA");
501
- continue;
502
- }
503
- const p2 = p.usepair.a;
504
- if (!p2.isoform) {
505
- e_closs.push(p.sample + " " + p.geneA + " CLoss (" + p.rating + "): no isoform");
506
- continue;
507
- }
508
- const gm = svmr.genome.isoformmatch(p2.isoform, p.chrA, p.posA);
509
- if (!gm) {
510
- e_closs.push(p.sample + " " + p.geneA + " CLoss (" + p.rating + "): no gene model found by " + p2.isoform);
511
- continue;
512
- }
513
- const exonbp = genomic2gm(p.posA, gm).rnapos;
514
- const pp = {
515
- dt: dtcloss,
516
- class: mclasscloss,
517
- mname: "C-loss",
518
- gene: p.geneA,
519
- sample: p.sample,
520
- isoform: p2.isoform,
521
- rating: p.rating,
522
- score: p.score,
523
- functioneffect: p.functioneffect,
524
- rnaposition: exonbp,
525
- chr: p.chrA,
526
- position: p.posA,
527
- strand: p.ortA,
528
- ratio: p.ratioA,
529
- chimericreads: p.readsA,
530
- match: p.matchA,
531
- repeat: p.repeatA,
532
- partner: {
533
- chr: p.chrB,
534
- position: p.posB,
535
- strand: p.ortB,
536
- ratio: p.ratioB,
537
- chimericreads: p.readsB,
538
- match: p.matchB,
539
- repeat: p.repeatB
540
- }
541
- };
542
- if (p.geneB) {
543
- pp.partner.gene = p.geneB;
544
- }
545
- if (p.usepair.b.isoform) {
546
- pp.partner.isoform = p.usepair.b.isoform;
547
- }
548
- if (!(p.geneA in genes)) {
549
- genes[p.geneA] = [];
550
- }
551
- genes[p.geneA].push(pp);
552
- continue;
553
- }
554
- }
555
- const gene2isoform = /* @__PURE__ */ new Map();
556
- const cleanup = [];
557
- for (const p of row) {
558
- if (p.geneA) {
559
- if (!gene2isoform.has(p.geneA)) gene2isoform.set(p.geneA, /* @__PURE__ */ new Set());
560
- if (p.usepair) {
561
- if (p.usepair.a.isoform) gene2isoform.get(p.geneA).add(p.usepair.a.isoform);
562
- }
563
- }
564
- if (p.geneB) {
565
- if (!gene2isoform.has(p.geneB)) gene2isoform.set(p.geneB, /* @__PURE__ */ new Set());
566
- if (p.usepair) {
567
- if (p.usepair.b.isoform) gene2isoform.get(p.geneB).add(p.usepair.b.isoform);
568
- }
569
- }
570
- const clean = {
571
- type: p.type,
572
- type2: p.type2,
573
- rating: p.rating,
574
- score: p.score,
575
- functioneffect: p.functioneffect,
576
- a: {
577
- name: p.geneA,
578
- chr: p.chrA,
579
- position: p.posA,
580
- strand: p.ortA,
581
- ratio: p.ratioA,
582
- feature: p.featureA,
583
- chimericreads: p.readsA,
584
- contiglen: p.matchA,
585
- repeatscore: p.repeatA
586
- },
587
- b: {
588
- name: p.geneB,
589
- chr: p.chrB,
590
- position: p.posB,
591
- strand: p.ortB,
592
- ratio: p.ratioB,
593
- feature: p.featureB,
594
- chimericreads: p.readsB,
595
- contiglen: p.matchB,
596
- repeatscore: p.repeatB
597
- }
598
- };
599
- if (p.usepair) {
600
- const u = p.usepair;
601
- clean.frame = u.frame;
602
- if (u.a.isoform) {
603
- clean.a.isoform = u.a.isoform;
604
- }
605
- if (u.b.isoform) {
606
- clean.b.isoform = u.b.isoform;
607
- }
608
- let aalen = 0, bplen2 = 0;
609
- if (u.a.contigaa && u.b.contigaa) {
610
- aalen = u.b.contigaa - u.a.contigaa - 1;
611
- }
612
- if (u.a.contigbp && u.b.contigbp) {
613
- bplen2 = u.b.contigbp - u.a.contigbp - 1;
614
- }
615
- if (aalen > 0) {
616
- clean.interstitial = { aalen };
617
- }
618
- if (bplen2 > 0) {
619
- if (!clean.interstitial) clean.interstitial = {};
620
- clean.interstitial.bplen = bplen2;
621
- }
622
- }
623
- cleanup.push(clean);
624
- }
625
- for (const [genename, iset] of gene2isoform) {
626
- for (const isoform of iset) {
627
- if (!(genename in genes)) {
628
- genes[genename] = [];
629
- }
630
- const pp = {
631
- dt: dtfusionrna,
632
- class: mclassfusionrna,
633
- sample: row[0].sample,
634
- isoform,
635
- pairlst: duplicate(cleanup)
636
- };
637
- for (const i of cleanup) {
638
- if (i.functioneffect) {
639
- pp.functioneffect = i.functioneffect;
640
- }
641
- }
642
- genes[genename].push(pp);
643
- }
644
- }
645
- }
646
- if (e_itd.length) {
647
- svmr.err(e_itd.join("<br>"));
648
- }
649
- if (e_nloss.length) {
650
- svmr.err(e_nloss.join("<br>"));
651
- }
652
- if (e_closs.length) {
653
- svmr.err(e_closs.join("<br>"));
654
- }
655
- let genecount = 0, genesup = {};
656
- for (const k in genes) {
657
- genecount++;
658
- genesup[k.toUpperCase()] = genes[k];
659
- }
660
- if (genecount == 0) {
661
- alert("No data can be added.");
662
- return;
663
- }
664
- let ds = null;
665
- for (const n in svmr.genome.datasets) {
666
- if (svmr.genome.datasets[n].svmrid == svmr.id) {
667
- ds = svmr.genome.datasets[n];
668
- break;
669
- }
670
- }
671
- if (ds) {
672
- ds.bulkdata = genesup;
673
- } else {
674
- ds = {
675
- label: svmr.filename,
676
- svmrid: svmr.id,
677
- bulkdata: genesup
678
- };
679
- svmr.genome.datasets[svmr.filename] = ds;
680
- }
681
- if (svmr.cohort) {
682
- svmr.cohortpane.pane.remove();
683
- } else {
684
- svmr.cohort = {
685
- name: svmr.filename,
686
- genome: svmr.genome,
687
- show_genetable: 1,
688
- jwt: svmr.jwt,
689
- dsset: {}
690
- };
691
- svmr.cohort.dsset[svmr.filename] = ds;
692
- }
693
- const pane = newpane({ x: 200, y: 200 });
694
- import("./tp.ui-HGAHRKO5.js").then((p) => {
695
- p.default(svmr.cohort, pane.body, svmr.hostURL);
696
- svmr.cohortpane = pane;
697
- });
698
- }
699
- function svmr_export_text(svmr, hqonly) {
700
- const rows = [];
701
- const headerlst = svmr.atlst.map((i) => i.label);
702
- headerlst.push("transcript_nbr");
703
- headerlst.push("breakpoint_nbr");
704
- headerlst.push("functionalClass");
705
- for (const sample of svmr.samples) {
706
- const whole = [];
707
- for (const egg of sample.egglst) {
708
- for (const eg of egg.lst) {
709
- if (eg.ismsg) {
710
- const lst = eg.lst.map((evt) => evt.lst[0]);
711
- if (hqonly) {
712
- let hashq = false;
713
- for (const i of lst) {
714
- if (i.rating == "Major") hashq = true;
715
- }
716
- if (hashq) {
717
- whole.push(lst);
718
- }
719
- } else {
720
- whole.push(lst);
721
- }
722
- } else {
723
- for (const evt of eg.lst) {
724
- for (const p of evt.lst) {
725
- if (hqonly) {
726
- if (p.rating == "Major") whole.push([p]);
727
- } else {
728
- whole.push([p]);
729
- }
730
- }
731
- }
732
- }
733
- }
734
- }
735
- for (let gid = 0; gid < whole.length; gid++) {
736
- for (let prodid = 0; prodid < whole[gid].length; prodid++) {
737
- let prod = whole[gid][prodid];
738
- 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 = [];
739
- for (const p of prod.pairs) {
740
- frame.push(p.frame);
741
- a_isoform.push(p.a.isoform);
742
- b_isoform.push(p.b.isoform);
743
- let v = p.a.codon;
744
- a_codon.push(Number.isNaN(v) ? "" : v);
745
- v = p.b.codon;
746
- b_codon.push(Number.isNaN(v) ? "" : v);
747
- v = p.a.exon;
748
- a_exon.push(Number.isNaN(v) ? "" : v);
749
- v = p.b.exon;
750
- b_exon.push(Number.isNaN(v) ? "" : v);
751
- a_anchor.push(p.a.anchor ? p.a.anchor : "");
752
- b_anchor.push(p.b.anchor ? p.b.anchor : "");
753
- v = p.a.contigaa;
754
- a_contigaa.push(v == void 0 ? "" : v);
755
- v = p.b.contigaa;
756
- b_contigaa.push(v == void 0 ? "" : v);
757
- v = p.a.contigbp;
758
- a_contigbp.push(v == void 0 ? "" : v);
759
- v = p.b.contigbp;
760
- b_contigbp.push(v == void 0 ? "" : v);
761
- }
762
- const row = [];
763
- for (const i of svmr.atlst) {
764
- switch (i.key) {
765
- case "lstframe":
766
- row.push(frame.join(","));
767
- break;
768
- // A
769
- case "lstisoforma":
770
- row.push(a_isoform.join(","));
771
- break;
772
- case "lstisoformacodon":
773
- row.push(a_codon.join(","));
774
- break;
775
- case "lstisoformaexon":
776
- row.push(a_exon.join(","));
777
- break;
778
- case "lstisoformaanchor":
779
- row.push(a_anchor.join(","));
780
- break;
781
- case "lstcontigaaA":
782
- row.push(a_contigaa.join(","));
783
- break;
784
- case "lstcontigbpA":
785
- row.push(a_contigbp.join(","));
786
- break;
787
- // B
788
- case "lstisoformb":
789
- row.push(b_isoform.join(","));
790
- break;
791
- case "lstisoformbcodon":
792
- row.push(b_codon.join(","));
793
- break;
794
- case "lstisoformbexon":
795
- row.push(b_exon.join(","));
796
- break;
797
- case "lstisoformbanchor":
798
- row.push(b_anchor.join(","));
799
- break;
800
- case "lstcontigaaB":
801
- row.push(b_contigaa.join(","));
802
- break;
803
- case "lstcontigbpB":
804
- row.push(b_contigbp.join(","));
805
- break;
806
- default:
807
- row.push(prod[i.key]);
808
- }
809
- }
810
- row.push(gid + 1);
811
- row.push(prodid + 1);
812
- row.push(prod.functioneffect ? prod.functioneffect : "");
813
- rows.push(row);
814
- }
815
- }
816
- }
817
- export_data("Fusion data from " + svmr.filename, [{ text: headerlst.join(" ") + "\n" + rows.join("\n") }]);
818
- }
819
- function duplicate(i) {
820
- const lst = [];
821
- for (const j of i) {
822
- const k = {};
823
- for (const n in j) k[n] = j[n];
824
- k.a = {};
825
- for (const n in j.a) k.a[n] = j.a[n];
826
- k.b = {};
827
- for (const n in j.b) k.b[n] = j.b[n];
828
- if (j.interstitial) {
829
- k.interstitial = {};
830
- for (const n in j.interstitial) k.interstitial[n] = j.interstitial[n];
831
- }
832
- lst.push(k);
833
- }
834
- return lst;
835
- }
836
-
837
- // src/svmr.c.js
838
- var genomelimit = 1e4;
839
- var knownprod_c = "#A702C4";
840
- var tip = new Menu();
841
- var svmr_c_default = class {
842
- constructor(genome, atlst, items, filename, holder, hostURL, jwt) {
843
- window.svmr = this;
844
- this.hostURL = hostURL;
845
- this.jwt = jwt;
846
- this.id = Math.random();
847
- this.items = items;
848
- this.genome = genome;
849
- this.filename = filename;
850
- this.atlst = atlst;
851
- this.cf_repeat = 0.7, this.cf_reads = 2;
852
- this.cf_match = 40;
853
- this.cf_ratio = 0.01;
854
- this.expression = {};
855
- this.samples = [];
856
- this.genelst = [];
857
- this.elab2sample = {};
858
- if (!holder) {
859
- const pane = newpane({ x: 100, y: 100, toshrink: true });
860
- pane.header.append("span").style("color", "#858585").style("font-size", ".7em").html("Fusion Editor&nbsp;");
861
- pane.header.append("span").text(filename);
862
- holder = pane.body;
863
- }
864
- this.holder = holder;
865
- this.errdiv = holder.append("div").style("width", "500px").style("margin", "10px");
866
- const butrow = holder.append("div").style("margin", "20px").style("padding", "0px");
867
- this.buttgene = butrow.append("button").text("Loading genes").on("click", () => {
868
- if (genediv.style("display") == "none") {
869
- appear(genediv);
870
- } else {
871
- disappear(genediv);
872
- }
873
- });
874
- this.buttsample = butrow.append("button").text("Loading samples").on("click", () => {
875
- if (this.ul.style("display") == "none") {
876
- appear(this.ul);
877
- } else {
878
- disappear(this.ul);
879
- }
880
- });
881
- butrow.append("button").text("Gene expression").on("click", () => {
882
- if (this.expression.div.style("display") == "none") {
883
- appear(this.expression.div);
884
- } else {
885
- disappear(this.expression.div);
886
- }
887
- });
888
- butrow.append("button").text("Parameter cutoff").on("click", () => {
889
- if (cutoffdiv.style("display") == "none") {
890
- appear(cutoffdiv);
891
- } else {
892
- disappear(cutoffdiv);
893
- }
894
- });
895
- butrow.append("button").text("Legend").on("click", () => {
896
- if (legenddiv.style("display") == "none") {
897
- appear(legenddiv);
898
- } else {
899
- disappear(legenddiv);
900
- }
901
- });
902
- butrow.append("button").style("margin-right", "20px").text("Export data").on("click", (event) => {
903
- 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;
904
- for (const sample of this.samples) {
905
- for (const egg of sample.egglst) {
906
- for (const eg of egg.lst) {
907
- if (eg.ismsg) {
908
- let hashq = false;
909
- for (const i of eg.lst) {
910
- if (i.rating == "Major") hashq = true;
911
- }
912
- if (hashq) multi_hq++;
913
- else multi_nhq++;
914
- } else {
915
- for (const evt of eg.lst) {
916
- for (const p of evt.lst) {
917
- if (p.rating == "Major") {
918
- if (p.isitd) itd_hq++;
919
- else if (p.iscloss || p.isnloss) trunc_hq++;
920
- else single_hq++;
921
- } else {
922
- if (p.isitd) itd_nhq++;
923
- else if (p.iscloss || p.isnloss) trunc_nhq++;
924
- else single_nhq++;
925
- }
926
- }
927
- }
928
- }
929
- }
930
- }
931
- }
932
- const d02 = tip.clear().showunder(event.target).d.append("div");
933
- const table = d02.append("table").style("border-spacing", "10px").style("border-collapse", "separate");
934
- let tr = table.append("tr").style("color", "#858585");
935
- tr.append("td");
936
- tr.append("td").text("2-gene fusion");
937
- tr.append("td").text("Multi-gene fusion");
938
- tr.append("td").text("ITD");
939
- tr.append("td").text("Truncation");
940
- tr = table.append("tr");
941
- tr.append("td").text("Major").style("color", "#858585").style("text-align", "right");
942
- tr.append("td").text(single_hq);
943
- tr.append("td").text(multi_hq);
944
- tr.append("td").text(itd_hq);
945
- tr.append("td").text(trunc_hq);
946
- tr = table.append("tr");
947
- tr.append("td").text("not Major").style("color", "#858585").style("text-align", "right");
948
- tr.append("td").text(single_nhq);
949
- tr.append("td").text(multi_nhq);
950
- tr.append("td").text(itd_nhq);
951
- tr.append("td").text(trunc_nhq);
952
- let dd = d02.append("div").style("margin", "10px").text('Export fusions labeled as "Major"');
953
- dd.append("button").style("margin", "10px").text("Tabular format").on("click", () => svmr_export_text(this, true));
954
- dd.append("button").style("margin", "10px").text("JSON format").on("click", () => svmr_export_json(this, true));
955
- dd.append("button").style("margin", "10px").text("View in ProteinPaint").on("click", () => svmr_2pp(this, true));
956
- dd = d02.append("div").style("margin", "10px").text("Export all fusions");
957
- dd.append("button").style("margin", "10px").text("Tabular format").on("click", () => svmr_export_text(this, false));
958
- dd.append("button").style("margin", "10px").text("JSON format").on("click", () => svmr_export_json(this, false));
959
- dd.append("button").style("margin", "10px").text("View in ProteinPaint").on("click", () => svmr_2pp(this, false));
960
- });
961
- butrow.append("a").attr("target", "_blank").attr("href", "https://docs.google.com/document/d/1DRVzE_WenG490eRYB7VGFOygtSqtF5L97rhK0HOUCNY/edit?usp=sharing").text("Help");
962
- this.expression.div = holder.append("div").style("display", "none").style("margin", "20px").style("padding", "20px").style("border", "dashed 1px #bbb");
963
- this.expression.prediv = this.expression.div.append("div");
964
- this.expression.prediv.append("div").style("margin", "5px").text("Load a file that includes gene expression data for current samples.");
965
- 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");
966
- this.expression.input = this.expression.prediv.append("input").attr("type", "file").on("change", (event) => {
967
- loadexpression(this, event.target.files[0]);
968
- });
969
- this.expression.presays = this.expression.prediv.append("span").style("padding-left", "20px");
970
- this.expression.afterdiv = this.expression.div.append("div").style("display", "none");
971
- const genediv = holder.append("div").style("display", "none").style("margin", "20px");
972
- let d0 = genediv.append("div").style("display", "inline-block").style("border", "dashed 1px #bbb");
973
- this.genefilter = d0.append("div").style("background-color", "#ededed").style("padding", "10px 20px");
974
- let d01 = d0.append("div").style("padding", "10px 20px").style("overflow-y", "scroll").style("resize", "vertical").style("height", "300px");
975
- d01.append("div").style("margin", "10px").style("font-size", "70%").text("Not included: read-through and intergenic events (including one or both sides).");
976
- this.genetable = d01.append("table");
977
- const cutoffdiv = holder.append("div").style("display", "none").style("margin", "20px");
978
- d0 = cutoffdiv.append("div").style("display", "inline-block").style("padding", "20px").style("border", "solid 1px #ededed");
979
- d0.append("span").style("padding", "0px 10px").text("Alert if:");
980
- d01 = d0.append("span").style("padding", "0px 10px");
981
- d01.append("span").html("chimeric reads &le;&nbsp;");
982
- d01.append("input").attr("size", 3).property("value", this.cf_reads).on("change", (event) => {
983
- const v = Number.parseInt(event.target.value);
984
- if (Number.isNaN(v)) {
985
- return;
986
- }
987
- this.cf_reads = v;
988
- });
989
- d01 = d0.append("span").style("padding", "0px 10px");
990
- d01.append("span").html("repeat score &ge;&nbsp;");
991
- d01.append("input").attr("size", 3).property("value", this.cf_repeat).on("change", (event) => {
992
- const v = Number.parseFloat(event.target.value);
993
- if (Number.isNaN(v)) {
994
- return;
995
- }
996
- this.cf_repeat = v;
997
- });
998
- d01 = d0.append("span").style("padding", "0px 10px");
999
- d01.append("span").html("contig bp length &le;&nbsp;");
1000
- d01.append("input").attr("size", 3).property("value", this.cf_match).on("change", (event) => {
1001
- const v = Number.parseInt(event.target.value);
1002
- if (Number.isNaN(v)) {
1003
- return;
1004
- }
1005
- this.cf_match = v;
1006
- });
1007
- d01 = d0.append("span").style("padding", "0px 10px");
1008
- d01.append("span").html("ratio &le;&nbsp;");
1009
- d01.append("input").attr("size", 3).property("value", this.cf_ratio).on("change", (event) => {
1010
- const v = Number.parseFloat(event.target.value);
1011
- if (Number.isNaN(v)) {
1012
- return;
1013
- }
1014
- this.cf_ratio = v;
1015
- });
1016
- const legenddiv = holder.append("div").style("display", "none").style("margin", "20px");
1017
- var h = 16;
1018
- legenddiv.append("div").style("display", "inline-block").style("padding", "10px").style("border", "solid 1px #ededed").html(
1019
- '<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>'
1020
- );
1021
- this.ul = holder.append("ul");
1022
- this.step_isoform(items);
1023
- }
1024
- // end of constructor
1025
- err(m) {
1026
- sayerror(this.errdiv, m);
1027
- }
1028
- step_isoform(items) {
1029
- const newset = /* @__PURE__ */ new Set();
1030
- for (const item of items) {
1031
- for (const i of item.pairs) {
1032
- let n = i.a.isoform;
1033
- if (n && !this.genome.isoformcache.has(n.toUpperCase())) {
1034
- newset.add(n);
1035
- }
1036
- n = i.b.isoform;
1037
- if (n && !this.genome.isoformcache.has(n.toUpperCase())) {
1038
- newset.add(n);
1039
- }
1040
- }
1041
- }
1042
- if (newset.size == 0) {
1043
- this.step_eat(items);
1044
- return;
1045
- }
1046
- const newisoform = [];
1047
- for (const n of newset) {
1048
- newisoform.push(n);
1049
- }
1050
- const wait = this.holder.append("div").style("margin", "20px").text("Loading " + newset.size + " isoforms ...");
1051
- fetch(
1052
- new Request(this.hostURL + "/isoformlst", {
1053
- method: "POST",
1054
- body: JSON.stringify({ genome: this.genome.name, lst: newisoform, jwt: this.jwt })
1055
- })
1056
- ).then((data) => {
1057
- return data.json();
1058
- }).then((data) => {
1059
- if (data.error) throw { message: "Cannot load isoforms: " + data.error };
1060
- wait.remove();
1061
- for (const ilst of data.lst) {
1062
- if (ilst[0]) {
1063
- this.genome.isoformcache.set(ilst[0].isoform, ilst);
1064
- }
1065
- }
1066
- const isoformErr = [];
1067
- for (const k of newset) {
1068
- if (!this.genome.isoformcache.has(k.toUpperCase())) {
1069
- isoformErr.push(k);
1070
- }
1071
- }
1072
- if (isoformErr.length) {
1073
- this.err(
1074
- isoformErr.length + " invalid isoform" + (isoformErr.length > 1 ? "s" : "") + ": " + isoformErr.join(", ")
1075
- );
1076
- }
1077
- this.step_eat(items);
1078
- }).catch((err) => {
1079
- this.err(err.message);
1080
- if (err.stack) console.log(err.stack);
1081
- });
1082
- }
1083
- step_eat(items) {
1084
- for (const prod of items) {
1085
- prod.hook = {};
1086
- let use = null;
1087
- for (const p of prod.pairs) {
1088
- let gm = this.genome.isoformmatch(p.a.isoform, prod.chrA, prod.posA);
1089
- if (gm) {
1090
- prod.geneA = gm.name;
1091
- p.a.isdefault = gm.isdefault;
1092
- if (Number.isNaN(p.a.codon) || p.a.codon < 0) {
1093
- p.a.codon = void 0;
1094
- const a = genomic2gm(prod.posA, gm);
1095
- if (a.atupstream) {
1096
- p.a.atupstream = a.atupstream;
1097
- } else if (a.atdownstream) {
1098
- p.a.atdownstream = a.atdownstream;
1099
- } else if (a.atutr3) {
1100
- p.a.atutr3 = a.atutr3;
1101
- } else if (a.atutr5) {
1102
- p.a.atutr5 = a.atutr5;
1103
- } else {
1104
- p.a.codon = a.codon;
1105
- }
1106
- }
1107
- }
1108
- gm = this.genome.isoformmatch(p.b.isoform, prod.chrB, prod.posB);
1109
- if (gm) {
1110
- prod.geneB = gm.name;
1111
- p.b.isdefault = gm.isdefault;
1112
- if (Number.isNaN(p.b.codon) || p.b.codon < 0) {
1113
- p.b.codon = void 0;
1114
- const a = genomic2gm(prod.posB, gm);
1115
- if (a.atupstream) {
1116
- p.b.atupstream = a.atupstream;
1117
- } else if (a.atdownstream) {
1118
- p.b.atdownstream = a.atdownstream;
1119
- } else if (a.atutr3) {
1120
- p.b.atutr3 = a.atutr3;
1121
- } else if (a.atutr5) {
1122
- p.b.atutr5 = a.atutr5;
1123
- } else {
1124
- p.b.codon = a.codon;
1125
- }
1126
- }
1127
- }
1128
- if (p.a.isdefault && p.b.isdefault) {
1129
- if (!use) {
1130
- use = p;
1131
- }
1132
- if (p.inframe) {
1133
- use = p;
1134
- }
1135
- }
1136
- }
1137
- if (use) {
1138
- prod.usepair = use;
1139
- } else {
1140
- prod.notes.push("No preferred isoform pair");
1141
- prod.usepair = prod.pairs[0];
1142
- }
1143
- if (prod.usepair) {
1144
- prod.usepair.inuse = true;
1145
- }
1146
- prod.eventlabel = (prod.geneA ? prod.geneA : prod.chrA) + "-" + (prod.geneB ? prod.geneB : prod.chrB);
1147
- }
1148
- const tmp = {};
1149
- const sampleless = {};
1150
- let hassampleless = false;
1151
- for (const prod of items) {
1152
- let n = prod.sample;
1153
- if (n) {
1154
- if (!(n in tmp)) {
1155
- tmp[n] = {};
1156
- }
1157
- if (!(prod.eventlabel in tmp[n])) {
1158
- tmp[n][prod.eventlabel] = [];
1159
- }
1160
- tmp[n][prod.eventlabel].push(prod);
1161
- } else {
1162
- hassampleless = true;
1163
- if (!(prod.eventlabel in sampleless)) {
1164
- sampleless[prod.eventlabel] = [];
1165
- }
1166
- sampleless[prod.eventlabel].push(prod);
1167
- }
1168
- }
1169
- for (const sn in tmp) {
1170
- this.samples.push({
1171
- name: sn,
1172
- events: tmp[sn]
1173
- });
1174
- }
1175
- if (hassampleless) {
1176
- this.samples.push({
1177
- name: "No name",
1178
- events: sampleless
1179
- });
1180
- }
1181
- this.buttsample.text(this.samples.length + " sample" + (this.samples.length > 1 ? "s" : ""));
1182
- for (const sample of this.samples) {
1183
- for (const elab in sample.events) {
1184
- if (!(elab in this.elab2sample)) {
1185
- this.elab2sample[elab] = [];
1186
- }
1187
- this.elab2sample[elab].push(sample);
1188
- }
1189
- }
1190
- for (const sample of this.samples) {
1191
- sample.gene2events = {};
1192
- for (const elab in sample.events) {
1193
- for (const prod of sample.events[elab]) {
1194
- const a = prod.geneA;
1195
- if (a) {
1196
- if (!(a in sample.gene2events)) {
1197
- sample.gene2events[a] = {};
1198
- }
1199
- sample.gene2events[a][elab] = 1;
1200
- }
1201
- const b = prod.geneB;
1202
- if (b) {
1203
- if (!(b in sample.gene2events)) {
1204
- sample.gene2events[b] = {};
1205
- }
1206
- sample.gene2events[b][elab] = 1;
1207
- }
1208
- }
1209
- }
1210
- }
1211
- for (const sample of this.samples) {
1212
- const newholder = [];
1213
- for (const elab in sample.events) {
1214
- for (const prod of sample.events[elab]) {
1215
- if (prod.rating == "HQ") msjoin(prod, newholder);
1216
- }
1217
- }
1218
- for (const elab in sample.events) {
1219
- for (const prod of sample.events[elab]) {
1220
- if (prod.rating == "LQ") msjoin(prod, newholder);
1221
- }
1222
- }
1223
- for (const elab in sample.events) {
1224
- for (const prod of sample.events[elab]) {
1225
- if (prod.rating == "RT") msjoin(prod, newholder);
1226
- }
1227
- }
1228
- for (const elab in sample.events) {
1229
- for (const prod of sample.events[elab]) {
1230
- if (prod.rating == "bad") msjoin(prod, newholder);
1231
- }
1232
- }
1233
- let msgid = 0;
1234
- const msglst = [];
1235
- for (const lst of newholder) {
1236
- if (lst.length > 1) {
1237
- for (const prod of lst) {
1238
- prod.msgid = msgid;
1239
- }
1240
- msgid++;
1241
- msglst.push(lst);
1242
- }
1243
- }
1244
- const hqin = [], hqt = [], hqo = [], lqin = [], lqt = [], lqo = [], rtin = [], rtt = [], rto = [], badin = [], badt = [], bado = [];
1245
- for (const msg of msglst) {
1246
- const thisset = [];
1247
- 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;
1248
- for (const prod of msg) {
1249
- thisset.push({ label: prod.eventlabel, lst: [prod] });
1250
- const pair2 = prod.usepair;
1251
- if (prod.rating == "HQ") {
1252
- if (pair2) {
1253
- if (pair2.inframe) hqin3 = true;
1254
- else hqt3 = true;
1255
- } else if (prod.isnloss || prod.iscloss) {
1256
- hqt3 = true;
1257
- } else {
1258
- hqo3 = true;
1259
- }
1260
- } else if (prod.rating == "LQ") {
1261
- if (pair2) {
1262
- if (pair2.inframe) lqin3 = true;
1263
- else lqt3 = true;
1264
- } else if (prod.isnloss || prod.iscloss) {
1265
- lqt3 = true;
1266
- } else {
1267
- lqo3 = true;
1268
- }
1269
- } else if (prod.rating == "RT") {
1270
- if (pair2) {
1271
- if (pair2.inframe) rtin3 = true;
1272
- else rtt3 = true;
1273
- } else if (prod.isnloss || prod.iscloss) {
1274
- rtt3 = true;
1275
- } else {
1276
- rto3 = true;
1277
- }
1278
- } else {
1279
- if (pair2) {
1280
- if (pair2.inframe) badin3 = true;
1281
- else badt3 = true;
1282
- } else if (prod.isnloss || prod.iscloss) {
1283
- badt3 = true;
1284
- } else {
1285
- bado3 = true;
1286
- }
1287
- }
1288
- }
1289
- if (hqin3) {
1290
- hqin.push({ label: "", lst: thisset, ismsg: true });
1291
- } else if (hqt3) {
1292
- hqt.push({ label: "", lst: thisset, ismsg: true });
1293
- } else if (hqo3) {
1294
- hqo.push({ label: "", lst: thisset, ismsg: true });
1295
- } else if (lqin3) {
1296
- lqin.push({ label: "", lst: thisset, ismsg: true });
1297
- } else if (lqt3) {
1298
- lqt.push({ label: "", lst: thisset, ismsg: true });
1299
- } else if (lqo3) {
1300
- lqo.push({ label: "", lst: thisset, ismsg: true });
1301
- } else if (rtin3) {
1302
- rtin.push({ label: "", lst: thisset, ismsg: true });
1303
- } else if (rtt3) {
1304
- rtt.push({ label: "", lst: thisset, ismsg: true });
1305
- } else if (rto3) {
1306
- rto.push({ label: "", lst: thisset, ismsg: true });
1307
- } else if (badin3) {
1308
- badin.push({ label: "", lst: thisset, ismsg: true });
1309
- } else if (badt3) {
1310
- badt.push({ label: "", lst: thisset, ismsg: true });
1311
- } else if (bado3) {
1312
- bado.push({ label: "", lst: thisset, ismsg: true });
1313
- } else {
1314
- console.log("multi-seg group unclassfied? " + key);
1315
- }
1316
- }
1317
- const genepairs = {};
1318
- for (const elab in sample.events) {
1319
- const hqin2 = [], hqt2 = [], hqo2 = [], lqin2 = [], lqt2 = [], lqo2 = [], rtin2 = [], rtt2 = [], rto2 = [], badin2 = [], badt2 = [], bado2 = [];
1320
- for (const prod of sample.events[elab]) {
1321
- if (prod.msgid != void 0) {
1322
- continue;
1323
- }
1324
- if (prod.geneA && prod.geneB) {
1325
- const key2 = prod.geneA + "-" + prod.geneB;
1326
- let hash = genepairs[key2];
1327
- if (!hash) {
1328
- const key22 = prod.geneB + "-" + prod.geneA;
1329
- hash = genepairs[key22];
1330
- }
1331
- if (hash) {
1332
- if (!(key2 in hash)) {
1333
- hash[key2] = [];
1334
- }
1335
- hash[key2].push(prod);
1336
- } else {
1337
- genepairs[key2] = {};
1338
- genepairs[key2][key2] = [prod];
1339
- }
1340
- continue;
1341
- }
1342
- var pair = prod.usepair;
1343
- if (prod.rating == "HQ") {
1344
- if (pair) {
1345
- if (pair.inframe) hqin2.push(prod);
1346
- else hqt2.push(prod);
1347
- } else if (prod.isnloss || prod.iscloss) {
1348
- hqt2.push(prod);
1349
- } else {
1350
- hqo2.push(prod);
1351
- }
1352
- } else if (prod.rating == "LQ") {
1353
- if (pair) {
1354
- if (pair.inframe) lqin2.push(prod);
1355
- else lqt2.push(prod);
1356
- } else if (prod.isnloss || prod.iscloss) {
1357
- lqt2.push(prod);
1358
- } else {
1359
- lqo2.push(prod);
1360
- }
1361
- } else if (prod.rating == "RT") {
1362
- if (pair) {
1363
- if (pair.inframe) rtin2.push(prod);
1364
- else rtt2.push(prod);
1365
- } else if (prod.isnloss || prod.iscloss) {
1366
- rtt2.push(prod);
1367
- } else {
1368
- rto2.push(prod);
1369
- }
1370
- } else {
1371
- if (pair) {
1372
- if (pair.inframe) badin2.push(prod);
1373
- else badt2.push(prod);
1374
- } else if (prod.isnloss || prod.iscloss) {
1375
- badt2.push(prod);
1376
- } else {
1377
- bado2.push(prod);
1378
- }
1379
- }
1380
- }
1381
- if (hqin2.length > 0) {
1382
- hqin.push({ label: elab, lst: [{ label: elab, lst: hqin2 }] });
1383
- } else if (hqt2.length > 0) {
1384
- hqt.push({ label: elab, lst: [{ label: elab, lst: hqt2 }] });
1385
- } else if (hqo2.length > 0) {
1386
- hqo.push({ label: elab, lst: [{ label: elab, lst: hqo2 }] });
1387
- } else if (lqin2.length > 0) {
1388
- lqin.push({ label: elab, lst: [{ label: elab, lst: lqin2 }] });
1389
- } else if (lqt2.length > 0) {
1390
- lqt.push({ label: elab, lst: [{ label: elab, lst: lqt2 }] });
1391
- } else if (lqo2.length > 0) {
1392
- lqo.push({ label: elab, lst: [{ label: elab, lst: lqo2 }] });
1393
- } else if (rtin2.length > 0) {
1394
- rtin.push({ label: elab, lst: [{ label: elab, lst: rtin2 }] });
1395
- } else if (rtt2.length > 0) {
1396
- rtt.push({ label: elab, lst: [{ label: elab, lst: rtt2 }] });
1397
- } else if (rto2.length > 0) {
1398
- rto.push({ label: elab, lst: [{ label: elab, lst: rto2 }] });
1399
- } else if (badin2.length > 0) {
1400
- badin.push({ label: elab, lst: [{ label: elab, lst: badin2 }] });
1401
- } else if (badt2.length > 0) {
1402
- badt.push({ label: elab, lst: [{ label: elab, lst: badt2 }] });
1403
- } else if (bado2.length > 0) {
1404
- bado.push({ label: elab, lst: [{ label: elab, lst: bado2 }] });
1405
- }
1406
- }
1407
- for (const key2 in genepairs) {
1408
- 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;
1409
- const thisset = [];
1410
- for (const elab in genepairs[key2]) {
1411
- const prodlst = genepairs[key2][elab];
1412
- if (prodlst.length == 1) {
1413
- if (prodlst[0].msgid != void 0) {
1414
- continue;
1415
- }
1416
- }
1417
- thisset.push({ label: elab, lst: prodlst });
1418
- for (const prod of prodlst) {
1419
- const pair2 = prod.usepair;
1420
- if (prod.rating == "HQ") {
1421
- if (pair2) {
1422
- if (pair2.inframe) hqin3 = true;
1423
- else hqt3 = true;
1424
- } else if (prod.isnloss || prod.iscloss) {
1425
- hqt3 = true;
1426
- } else {
1427
- hqo3 = true;
1428
- }
1429
- } else if (prod.rating == "LQ") {
1430
- if (pair2) {
1431
- if (pair2.inframe) lqin3 = true;
1432
- else lqt3 = true;
1433
- } else if (prod.isnloss || prod.iscloss) {
1434
- lqt3 = true;
1435
- } else {
1436
- lqo3 = true;
1437
- }
1438
- } else if (prod.rating == "RT") {
1439
- if (pair2) {
1440
- if (pair2.inframe) rtin3 = true;
1441
- else rtt3 = true;
1442
- } else if (prod.isnloss || prod.iscloss) {
1443
- rtt3 = true;
1444
- } else {
1445
- rto3 = true;
1446
- }
1447
- } else {
1448
- if (pair2) {
1449
- if (pair2.inframe) badin3 = true;
1450
- else badt3 = true;
1451
- } else if (prod.isnloss || prod.iscloss) {
1452
- badt3 = true;
1453
- } else {
1454
- bado3 = true;
1455
- }
1456
- }
1457
- }
1458
- }
1459
- if (hqin3) {
1460
- hqin.push({ label: key2, lst: thisset });
1461
- } else if (hqt3) {
1462
- hqt.push({ label: key2, lst: thisset });
1463
- } else if (hqo3) {
1464
- hqo.push({ label: key2, lst: thisset });
1465
- } else if (lqin3) {
1466
- lqin.push({ label: key2, lst: thisset });
1467
- } else if (lqt3) {
1468
- lqt.push({ label: key2, lst: thisset });
1469
- } else if (lqo3) {
1470
- lqo.push({ label: key2, lst: thisset });
1471
- } else if (rtin3) {
1472
- rtin.push({ label: key2, lst: thisset });
1473
- } else if (rtt3) {
1474
- rtt.push({ label: key2, lst: thisset });
1475
- } else if (rto3) {
1476
- rto.push({ label: key2, lst: thisset });
1477
- } else if (badin3) {
1478
- badin.push({ label: key2, lst: thisset });
1479
- } else if (badt3) {
1480
- badt.push({ label: key2, lst: thisset });
1481
- } else if (bado3) {
1482
- bado.push({ label: key2, lst: thisset });
1483
- }
1484
- }
1485
- sample.egglst = [];
1486
- sample.hqincount = 0;
1487
- sample.lqincount = 0;
1488
- if (hqin.length) {
1489
- sample.egglst.push({
1490
- 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>',
1491
- lst: hqin
1492
- });
1493
- sample.hqincount = hqin.reduce((i, j) => i + j.lst.length, 0);
1494
- }
1495
- if (hqt.length) {
1496
- sample.egglst.push({
1497
- 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>',
1498
- lst: hqt
1499
- });
1500
- }
1501
- if (hqo.length) {
1502
- sample.egglst.push({
1503
- 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>',
1504
- lst: hqo
1505
- });
1506
- }
1507
- if (lqin.length) {
1508
- sample.egglst.push({
1509
- 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>',
1510
- lst: lqin
1511
- });
1512
- sample.lqincount = lqin.reduce((i, j) => i + j, 0);
1513
- }
1514
- if (lqt.length) {
1515
- sample.egglst.push({
1516
- 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>',
1517
- lst: lqt
1518
- });
1519
- }
1520
- if (lqo.length) {
1521
- sample.egglst.push({
1522
- 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>',
1523
- lst: lqo
1524
- });
1525
- }
1526
- if (rtin.length) {
1527
- sample.egglst.push({
1528
- htmlab: 'Read-through <span style="background-color:' + colorinframe + ';color:white;padding:1px 3px;font-size:80%;">in-frame&nbsp;&nbsp;</span>',
1529
- lst: rtin
1530
- });
1531
- }
1532
- if (rtt.length) {
1533
- sample.egglst.push({
1534
- htmlab: 'Read-through <span style="background-color:#E3C3C8;padding:1px 3px;font-size:80%;">truncation</span>',
1535
- lst: rtt
1536
- });
1537
- }
1538
- if (rto.length) {
1539
- sample.egglst.push({
1540
- htmlab: 'Read-through <span style="background-color:#ccc;padding:1px 3px;font-size:80%;">others&nbsp;&nbsp;&nbsp;&nbsp;</span>',
1541
- lst: rto
1542
- });
1543
- }
1544
- if (badin.length) {
1545
- sample.egglst.push({
1546
- 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>',
1547
- lst: badin
1548
- });
1549
- }
1550
- if (badt.length) {
1551
- sample.egglst.push({
1552
- 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>',
1553
- lst: badt
1554
- });
1555
- }
1556
- if (bado.length) {
1557
- sample.egglst.push({
1558
- 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>',
1559
- lst: bado
1560
- });
1561
- }
1562
- }
1563
- this.samples.sort((a, b) => {
1564
- if (a.hqincount == b.hqincount) {
1565
- return b.lqincount - a.lqincount;
1566
- }
1567
- return b.hqincount - a.hqincount;
1568
- });
1569
- for (const sample of this.samples) {
1570
- for (const egg of sample.egglst) {
1571
- for (const eg of egg.lst) {
1572
- for (const evt of eg.lst) {
1573
- evt.lst.sort((a, b) => {
1574
- const pa = a.usepair, pb = b.usepair;
1575
- if (pa) {
1576
- if (pb) {
1577
- if (pa.inframe) {
1578
- if (!pb.inframe) {
1579
- return -1;
1580
- }
1581
- } else {
1582
- if (pb.inframe) {
1583
- return 1;
1584
- }
1585
- }
1586
- } else {
1587
- return -1;
1588
- }
1589
- } else {
1590
- if (pb) {
1591
- return 1;
1592
- }
1593
- }
1594
- return b.score - a.score;
1595
- });
1596
- }
1597
- }
1598
- egg.lst.sort((a, b) => {
1599
- if (a.lst.length != b.lst.length) {
1600
- return b.lst.length - a.lst.length;
1601
- }
1602
- let scorea = 0;
1603
- for (const evta of a.lst) {
1604
- for (const prod of evta.lst) {
1605
- scorea = Math.max(scorea, prod.score);
1606
- }
1607
- }
1608
- let scoreb = 0;
1609
- for (const evtb of b.lst) {
1610
- for (const prod of evtb.lst) {
1611
- scoreb = Math.max(scoreb, prod.score);
1612
- }
1613
- }
1614
- return scoreb - scorea;
1615
- });
1616
- }
1617
- let prodid = 1;
1618
- for (const egg of sample.egglst) {
1619
- for (const eg of egg.lst) {
1620
- for (const evt of eg.lst) {
1621
- for (const prod of evt.lst) {
1622
- prod.prodid = prodid++;
1623
- }
1624
- }
1625
- }
1626
- }
1627
- }
1628
- this.step_gene();
1629
- this.step_table();
1630
- }
1631
- dogenefilter() {
1632
- let va = this.gui.inputa.property("value");
1633
- let vb = this.gui.inputb.property("value");
1634
- if (va.length + vb.length == 0) {
1635
- this.gui.says.text(
1636
- "Showing " + (this.genelst.length > 100 ? 100 : "all") + " of " + this.genelst.length + " pairs"
1637
- );
1638
- this.geneshow(this.genelst.length > 100 ? this.genelst.slice(0, 100) : this.genelst);
1639
- return;
1640
- }
1641
- va = va.length == 0 ? null : va.toLowerCase();
1642
- vb = vb.length == 0 ? null : vb.toLowerCase();
1643
- const uselst = [];
1644
- for (const g of this.genelst) {
1645
- if (va) {
1646
- if (!g.a) continue;
1647
- if (g.a.toLowerCase().indexOf(va) == -1) continue;
1648
- }
1649
- if (vb) {
1650
- if (!g.b) continue;
1651
- if (g.b.toLowerCase().indexOf(vb) == -1) continue;
1652
- }
1653
- uselst.push(g);
1654
- }
1655
- this.gui.says.text("Showing " + Math.min(100, uselst.length) + " of " + this.genelst.length + " pairs");
1656
- this.geneshow(uselst.length > 100 ? uselst.slice(0, 100) : uselst);
1657
- }
1658
- geneshow(lst) {
1659
- this.genetable.selectAll("*").remove();
1660
- const tr = this.genetable.append("tr").style("background-color", "#ededed").style("font-size", ".8em");
1661
- tr.append("td").text("gene A");
1662
- tr.append("td").text("gene B");
1663
- tr.append("td").text("# sample");
1664
- tr.append("td").text("rating");
1665
- for (const evt of lst) {
1666
- let color1 = "black", color2 = "black", weight1, weight2;
1667
- if (evt.ainter) {
1668
- color1 = "#aaa";
1669
- weight1 = "normal";
1670
- } else {
1671
- const a = evt.samples[0].prodlst[0].hlgene;
1672
- if (a == 1 || a == 3 || a == 4) weight1 = "bold";
1673
- if (a == 4) color1 = knownprod_c;
1674
- }
1675
- if (evt.binter) {
1676
- color2 = "#aaa";
1677
- weight2 = "normal";
1678
- } else {
1679
- const a = evt.samples[0].prodlst[0].hlgene;
1680
- if (a == 2 || a == 3 || a == 4) weight2 = "bold";
1681
- if (a == 4) color2 = knownprod_c;
1682
- }
1683
- const tr2 = this.genetable.append("tr").attr("class", "sja_clb");
1684
- tr2.append("td").text(evt.a).style("color", color1).style("font-weight", weight1);
1685
- tr2.append("td").text(evt.b).style("color", color2).style("font-weight", weight2);
1686
- const td = tr2.append("td").text(evt.samples.length);
1687
- tr2.on("click", () => {
1688
- const p = tr2.node().getBoundingClientRect();
1689
- const pane2 = newpane({ x: p.left + p.width + 10, y: p.top });
1690
- pane2.header.text(evt.a + " - " + evt.b);
1691
- const table = pane2.body.append("table");
1692
- for (const sample of evt.samples) {
1693
- const tr3 = table.append("tr");
1694
- tr3.append("td").style("vertical-align", "top").style("padding-top", "5px").text(sample.name);
1695
- const td2 = tr3.append("td");
1696
- for (const prod of sample.prodlst) {
1697
- const logo = this.eventlogo([prod], td2);
1698
- logo.style("position", "relative");
1699
- logo.append("div").style("position", "absolute").style("width", "100%").style("height", "100%").style("top", "0px").style("left", "0px").on("mouseover", (event) => {
1700
- const p2 = event.target.getBoundingClientRect();
1701
- tip.clear().show(p2.left + p2.width - 2, p2.top - 30);
1702
- this.showsvpairs({
1703
- prodlst: [prod],
1704
- holder: tip.d.append("div"),
1705
- nodetail: true,
1706
- sample,
1707
- eglst: null,
1708
- showothersample: false
1709
- });
1710
- }).on("click", (event) => {
1711
- const p2 = event.target.getBoundingClientRect();
1712
- const pane = newpane({ x: p2.left + p2.width + 40, y: p2.top - 60 });
1713
- pane.header.text(sample.name);
1714
- this.showsvpairs({
1715
- prodlst: [prod],
1716
- holder: pane.body
1717
- });
1718
- });
1719
- }
1720
- }
1721
- });
1722
- const hash = {};
1723
- for (const smp of evt.samples) {
1724
- const hash2 = {};
1725
- for (const p of smp.prodlst) {
1726
- hash2[p.rating] = 1;
1727
- }
1728
- for (var n in hash2) {
1729
- if (!(n in hash)) {
1730
- hash[n] = 0;
1731
- }
1732
- hash[n]++;
1733
- }
1734
- }
1735
- const lst2 = [];
1736
- for (const smp of ["HQ", "LQ", "RT", "bad"]) {
1737
- if (hash[smp]) {
1738
- lst2.push(
1739
- '<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>"
1740
- );
1741
- }
1742
- }
1743
- tr2.append("td").html(lst2.join(" "));
1744
- }
1745
- }
1746
- step_gene() {
1747
- this.gui = {};
1748
- this.genefilter.append("span").text("Filter:");
1749
- this.gui.inputa = this.genefilter.append("input").attr("size", 7).attr("placeholder", "gene A").style("margin-left", "10px").on("keyup", () => this.dogenefilter());
1750
- this.gui.inputb = this.genefilter.append("input").attr("size", 7).attr("placeholder", "gene B").style("margin-left", "10px").on("keyup", () => this.dogenefilter());
1751
- this.genefilter.append("button").style("margin-left", "10px").text("Reset").on("click", () => {
1752
- this.gui.inputa.property("value", "");
1753
- this.gui.inputb.property("value", "");
1754
- this.dogenefilter();
1755
- });
1756
- this.gui.says = this.genefilter.append("span").style("padding-left", "20px");
1757
- const events = {};
1758
- const genes = /* @__PURE__ */ new Set();
1759
- for (const sample of this.samples) {
1760
- for (const k in sample.events) {
1761
- for (const prod of sample.events[k]) {
1762
- if (!prod.geneA || !prod.geneB) continue;
1763
- if (prod.rating == "RT") continue;
1764
- if (prod.geneA) {
1765
- genes.add(prod.geneA);
1766
- }
1767
- if (prod.geneB) {
1768
- genes.add(prod.geneB);
1769
- }
1770
- const n = (prod.geneA ? prod.geneA : "<" + prod.chrA) + " - " + (prod.geneB ? prod.geneB : "<" + prod.chrB);
1771
- if (!(n in events)) {
1772
- events[n] = {};
1773
- }
1774
- if (!(sample.name in events[n])) {
1775
- events[n][sample.name] = [];
1776
- }
1777
- events[n][sample.name].push(prod);
1778
- }
1779
- }
1780
- }
1781
- this.buttgene.text(genes.size + " gene" + (genes.size > 1 ? "s" : ""));
1782
- for (const k in events) {
1783
- const tmp = k.split(" - ");
1784
- const evt = { samples: [] };
1785
- if (tmp[0][0] == "<") {
1786
- evt.a = tmp[0].slice(1, tmp[0].length);
1787
- evt.ainter = true;
1788
- } else {
1789
- evt.a = tmp[0];
1790
- }
1791
- if (tmp[1][0] == "<") {
1792
- evt.b = tmp[1].slice(1, tmp[1].length);
1793
- evt.binter = true;
1794
- } else {
1795
- evt.b = tmp[1];
1796
- }
1797
- for (const sn in events[k]) {
1798
- evt.samples.push({ name: sn, prodlst: events[k][sn] });
1799
- }
1800
- this.genelst.push(evt);
1801
- }
1802
- this.genelst.sort((a, b) => {
1803
- let ca = 0;
1804
- for (const s of a.samples) {
1805
- for (const p of s.prodlst) {
1806
- if (p.rating == "HQ") ca++;
1807
- }
1808
- }
1809
- let cb = 0;
1810
- for (const s of b.samples) {
1811
- for (const p of s.prodlst) {
1812
- if (p.rating == "HQ") cb++;
1813
- }
1814
- }
1815
- return cb - ca;
1816
- });
1817
- this.dogenefilter();
1818
- }
1819
- step_table() {
1820
- this.eggbar = [];
1821
- this.ul.selectAll("*").remove();
1822
- for (const sample of this.samples) {
1823
- this.ul.append("li").style("font-weight", "bold").style("color", "#545454").text(sample.name);
1824
- sample.ul = this.ul.append("ul").style("margin-bottom", "10px");
1825
- this.showsample(sample);
1826
- }
1827
- }
1828
- showsample(sample) {
1829
- sample.ul.selectAll("*").remove();
1830
- for (const egg of sample.egglst) {
1831
- const evtnum = egg.lst.reduce((i, j) => i + j.lst.length, 0);
1832
- const li = sample.ul.append("li");
1833
- const bar = li.append("div").attr("class", "sja_clb2").html(egg.htmlab + " " + evtnum);
1834
- bar.on("click", () => {
1835
- for (const bar0 of this.eggbar) {
1836
- bar0.style("background-color", "");
1837
- }
1838
- bar.style("background-color", "yellow");
1839
- const next = select_default(li.node().nextSibling);
1840
- if (next.style("display") == "none") {
1841
- appear(next);
1842
- egg.isopen = true;
1843
- } else {
1844
- disappear(next);
1845
- egg.isopen = false;
1846
- }
1847
- });
1848
- this.eggbar.push(bar);
1849
- const div = sample.ul.append("div").style("margin", "10px");
1850
- this.showevents(sample, egg.lst, div);
1851
- }
1852
- }
1853
- showevents(sample, eglst, holder) {
1854
- const svg = holder.append("svg");
1855
- 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;
1856
- for (const eg of eglst) {
1857
- graphheight += rows;
1858
- if (eg.lst.length == 1) {
1859
- graphheight += rowh;
1860
- } else {
1861
- graphheight += vpad * 2 + (rowh + rows) * eg.lst.length + (rowh2 + rows) * (eg.lst.length - 1) + gvpad;
1862
- }
1863
- for (const evt of eg.lst) {
1864
- evt.svg = {};
1865
- const prodlst = evt.lst;
1866
- const prod = prodlst[0];
1867
- let labA, labB;
1868
- if (prod.geneA) {
1869
- const t = prod.geneA.split(",");
1870
- if (t.length > 2) {
1871
- labA = t[0] + "," + t[1] + "...";
1872
- } else {
1873
- labA = prod.geneA;
1874
- }
1875
- } else {
1876
- labA = "";
1877
- }
1878
- if (prod.geneB) {
1879
- const t = prod.geneB.split(",");
1880
- if (t.length > 2) {
1881
- labB = t[0] + "," + t[1] + "...";
1882
- } else {
1883
- labB = prod.geneB;
1884
- }
1885
- } else {
1886
- labB = "";
1887
- }
1888
- svg.append("text").text(labA).attr("font-size", fontsize).attr("font-family", "Courier").each(function() {
1889
- geneAw = Math.max(geneAw, this.getBBox().width);
1890
- }).remove();
1891
- svg.append("text").text(labB).attr("font-size", fontsize).attr("font-family", "Courier").each(function() {
1892
- geneBw = Math.max(geneBw, this.getBBox().width);
1893
- }).remove();
1894
- svg.append("text").text(prod.rating).attr("font-size", fontsize).attr("font-family", "Courier").each(function() {
1895
- evt.svg.ratingw = this.getBBox().width;
1896
- }).remove();
1897
- evt.svg.framew = 22;
1898
- evt.svg.typew = 60;
1899
- if (prod.usepair) {
1900
- evt.svg.frameword = prod.usepair.inframe ? "IN" : "O";
1901
- } else {
1902
- evt.svg.frameword = "?";
1903
- }
1904
- svg.append("text").text(prod.featureA).attr("font-size", fontsizefeature).attr("font-family", font).each(function() {
1905
- evt.svg.featurew = this.getBBox().width;
1906
- }).remove();
1907
- svg.append("text").text(prod.featureB).attr("font-size", fontsizefeature).attr("font-family", font).each(function() {
1908
- evt.svg.featurew = Math.max(evt.svg.featurew, this.getBBox().width);
1909
- }).remove();
1910
- svg.append("text").text(Math.floor(prod.score)).attr("font-size", fontsize).attr("font-family", font).each(function() {
1911
- evt.svg.scorew = this.getBBox().width;
1912
- }).remove();
1913
- evt.svg.logow = evt.svg.ratingw + evt.svg.framew + evt.svg.typew + evt.svg.featurew + evt.svg.scorew + s5 * 6;
1914
- eventlogow = Math.max(eventlogow, evt.svg.logow + (prodlst.length > 1 ? s4 + etw : 0));
1915
- if (prod.geneA && prod.geneB) {
1916
- const slst = this.elab2sample[evt.label];
1917
- if (!slst) {
1918
- evt.svg.recurtext = "Recurrence check error";
1919
- evt.svg.recurtextcolor = "red";
1920
- } else if (slst.length == 1) {
1921
- evt.svg.recurtext = "No recurrence";
1922
- evt.svg.recurtextcolor = "#aaaaaa";
1923
- } else {
1924
- evt.svg.hasrecurrence = true;
1925
- evt.svg.recurtext = "In " + slst.length + " samples";
1926
- evt.svg.recurtextcolor = "black";
1927
- }
1928
- } else {
1929
- evt.svg.recurtext = "Unknown recurrence";
1930
- evt.svg.recurtextcolor = "#aaaaaa";
1931
- }
1932
- svg.append("text").text(evt.svg.recurtext).attr("font-size", fontsize - 4).attr("font-family", font).each(function() {
1933
- evt.svg.recurw = this.getBBox().width;
1934
- }).remove();
1935
- recurw = Math.max(recurw, evt.svg.recurw);
1936
- }
1937
- }
1938
- geneAw += 10;
1939
- geneBw += 10;
1940
- graphheight += rows;
1941
- let ghandlew = 100;
1942
- let roww = chrAw + s1 + rowh + s7 + geneAw + genesp + s2 + genesp + geneBw + s7 + rowh + s1 + chrBw + s3 + eventlogow + s6 + recurw;
1943
- svg.attr("width", hpad0 * 2 + hpad * 2 + roww + ghandlew).attr("height", graphheight);
1944
- const g = svg.append("g").attr("transform", "translate(" + hpad0 + ",0)");
1945
- let y = 0;
1946
- for (const eg of eglst) {
1947
- y += rows;
1948
- const g_eg = g.append("g").attr("transform", "translate(0," + y + ")");
1949
- 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);
1950
- if (eg.lst.length > 1) {
1951
- 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");
1952
- if (eg.ismsg) {
1953
- const g2 = g_eg.append("g").attr("transform", "translate(" + (roww + hpad * 2) + ",0)");
1954
- g2.append("rect").attr("width", ghandlew).attr("height", rowh).attr("fill", "#858585").attr("shape-rendering", "crispEdges");
1955
- 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");
1956
- g2.append("rect").attr("width", ghandlew).attr("height", rowh).attr("fill", "white").attr("fill-opacity", 0).on("click", (event) => {
1957
- const joinlst = [];
1958
- const idlst = [];
1959
- for (const evt of eg.lst) {
1960
- const prod = evt.lst[0];
1961
- idlst.push(prod.prodid);
1962
- const p2 = {
1963
- a: {
1964
- chr: prod.chrA,
1965
- position: prod.posA,
1966
- strand: prod.ortA,
1967
- name: prod.geneA ? prod.geneA : prod.chrA,
1968
- ratio: prod.ratioA.toFixed(2),
1969
- feature: prod.featureA,
1970
- contiglen: prod.matchA,
1971
- chimericreads: prod.readsA,
1972
- repeatscore: prod.repeatA
1973
- },
1974
- b: {
1975
- chr: prod.chrB,
1976
- position: prod.posB,
1977
- strand: prod.ortB,
1978
- name: prod.geneB ? prod.geneB : prod.chrB,
1979
- ratio: prod.ratioB.toFixed(2),
1980
- feature: prod.featureB,
1981
- contiglen: prod.matchB,
1982
- chimericreads: prod.readsB,
1983
- repeatscore: prod.repeatB
1984
- },
1985
- rating: prod.rating,
1986
- score: Math.ceil(prod.score)
1987
- };
1988
- if (prod.usepair) {
1989
- p2.inframe = prod.usepair.inframe;
1990
- const x = prod.usepair.a;
1991
- p2.a.gm = this.genome.isoformmatch(x.isoform, p2.a.chr, p2.a.position);
1992
- p2.a.codon = x.codon;
1993
- p2.a.exon = x.exon;
1994
- p2.a.atupstream = x.atupstream;
1995
- p2.a.atdownstream = x.atdownstream;
1996
- p2.a.atutr5 = x.atutr5;
1997
- p2.a.atutr3 = x.atutr3;
1998
- const y2 = prod.usepair.b;
1999
- p2.b.gm = this.genome.isoformmatch(y2.isoform, p2.b.chr, p2.b.position);
2000
- p2.b.codon = y2.codon;
2001
- p2.b.exon = y2.exon;
2002
- p2.b.atupstream = y2.atupstream;
2003
- p2.b.atdownstream = y2.atdownstream;
2004
- p2.b.atutr5 = y2.atutr5;
2005
- p2.b.atutr3 = y2.atutr3;
2006
- let aalen = 0, bplen2 = 0;
2007
- if (x.contigaa && y2.contigaa) {
2008
- aalen = y2.contigaa - x.contigaa - 1;
2009
- }
2010
- if (x.contigbp && y2.contigbp) {
2011
- bplen2 = y2.contigbp - x.contigbp - 1;
2012
- }
2013
- if (aalen) {
2014
- p2.interstitial = { aalen };
2015
- }
2016
- if (bplen2) {
2017
- if (!p2.interstitial) p2.interstitial = {};
2018
- p2.interstitial.bplen = bplen2;
2019
- }
2020
- }
2021
- joinlst.push(p2);
2022
- }
2023
- const p = event.target.getBoundingClientRect();
2024
- const pane = newpane({ x: p.left + 10, y: p.top + p.height + 10 });
2025
- const div = pane.body.append("div").style("margin", "10px");
2026
- div.append("span").style("padding-right", "20px").text("Product id: " + idlst.join(", "));
2027
- div.append("button").style("margin-right", "10px").text("Break").on("click", () => {
2028
- const eg2id = eg.lst.map((j) => j.lst[0].prodid);
2029
- let idx = 0;
2030
- for (; idx < eglst.length; idx++) {
2031
- const eg2 = eglst[idx];
2032
- if (eg2.ismsg) {
2033
- const eg22id = eg2.lst.map((j) => j.lst[0].prodid);
2034
- if (eg22id.join(",") == eg2id.join(",")) {
2035
- break;
2036
- }
2037
- }
2038
- }
2039
- delete eg.ismsg;
2040
- const oldlst = eg.lst;
2041
- eg.lst = [eg.lst[0]];
2042
- for (let j = 1; j < oldlst.length; j++) {
2043
- eglst.splice(idx, 0, {
2044
- label: "",
2045
- lst: [oldlst[j]]
2046
- });
2047
- }
2048
- svg.remove();
2049
- this.showevents(sample, eglst, holder);
2050
- pane.pane.remove();
2051
- });
2052
- div.append("button").text("Edit").on("click", (event2) => {
2053
- const inputdom = document.createElement("input");
2054
- div.node().insertBefore(inputdom, event2.target);
2055
- const buttdom = document.createElement("button");
2056
- div.node().insertBefore(buttdom, event2.target);
2057
- div.node().removeChild(event2.target);
2058
- inputdom.focus();
2059
- const input = select_default(inputdom);
2060
- const butt = select_default(buttdom);
2061
- input.attr("size", 10).style("margin", "0px 10px").property("value", idlst.join(","));
2062
- butt.text("Apply").on("click", () => {
2063
- const lst0 = inputdom.value.trim().split(",");
2064
- const goodid = [];
2065
- for (const s of lst0) {
2066
- if (!s) continue;
2067
- const j = Number.parseInt(s);
2068
- if (Number.isNaN(j)) return alert("invalid id: " + s);
2069
- if (this.prodidisinvalid(j, sample)) return alert("invalid id " + j);
2070
- goodid.push(j);
2071
- }
2072
- if (goodid.length <= 1) return alert("must be at least 2 products");
2073
- const newevtlst = [];
2074
- for (const id of goodid) {
2075
- const lookprod = this.extractprod(id, sample);
2076
- if (lookprod) {
2077
- newevtlst.push({ label: lookprod.eventlabel, lst: [lookprod] });
2078
- } else {
2079
- return alert("unknown product id " + id);
2080
- }
2081
- }
2082
- if (newevtlst.length <= 1) return alert("less than 2 products cannot make a group");
2083
- eglst.unshift({ lst: newevtlst, ismsg: true });
2084
- this.showsample(sample);
2085
- pane.pane.remove();
2086
- });
2087
- });
2088
- svtable({
2089
- samplelst: [
2090
- {
2091
- pairlst: joinlst
2092
- }
2093
- ],
2094
- nosample: true,
2095
- holder: pane.body
2096
- });
2097
- const par = {
2098
- pairlst: joinlst,
2099
- genome: this.genome,
2100
- holder: pane.body,
2101
- hostURL: this.hostURL,
2102
- jwt: this.jwt
2103
- };
2104
- import("./svgraph-B75FS3BB.js").then((p2) => {
2105
- p2.default(par);
2106
- });
2107
- });
2108
- }
2109
- }
2110
- const g_rows = g_eg.append("g").attr("transform", "translate(" + hpad + "," + (eg.lst.length > 1 ? vpad : 0) + ")");
2111
- let y1 = 0;
2112
- let evtid = 0;
2113
- const bgcolor = "#ededed";
2114
- const elabhash = {};
2115
- for (const e of eg.lst) {
2116
- elabhash[e.label] = 1;
2117
- }
2118
- const showngenenotip = {};
2119
- for (const evt of eg.lst) {
2120
- const prodlst = evt.lst;
2121
- const prod = prodlst[0];
2122
- const thispair = prod.usepair;
2123
- if (eg.lst.length > 1 && evtid > 0) {
2124
- const g_row2 = g_rows.append("g").attr("transform", "translate(" + (chrAw + s1 + rowh + s7 + geneAw + genesp + s2 / 2) + "," + y1 + ")");
2125
- 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");
2126
- if (eg.ismsg) {
2127
- text2.text(prod.mswhat ? prod.mswhat : "No connection detail");
2128
- } else {
2129
- text2.text("Reciprocal");
2130
- }
2131
- y1 += rowh2 + rows;
2132
- }
2133
- const textcolor = prod.chrA == prod.chrB ? "black" : colorctx;
2134
- const g_row = g_rows.append("g").attr("transform", "translate(0," + y1 + ")");
2135
- 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);
2136
- const extevt = { a: null, b: null };
2137
- if (prod.geneA) {
2138
- if (prod.geneA in showngenenotip) {
2139
- showngenenotip[prod.geneA] = 1;
2140
- } else {
2141
- const lst = [];
2142
- for (const elab in sample.gene2events[prod.geneA]) {
2143
- if (!(elab in elabhash)) {
2144
- lst.push(elab);
2145
- }
2146
- }
2147
- if (lst.length > 0) {
2148
- extevt.a = { lst };
2149
- 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);
2150
- if (lst.length > 1) {
2151
- 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");
2152
- }
2153
- 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");
2154
- }
2155
- }
2156
- }
2157
- 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");
2158
- let antisense = false;
2159
- if (thispair) {
2160
- const thisn = thispair.a.isoform;
2161
- if (thisn) {
2162
- const _gm = this.genome.isoformmatch(thisn, prod.chrA, prod.posA);
2163
- if (_gm && _gm.strand != prod.ortA) {
2164
- antisense = true;
2165
- }
2166
- }
2167
- }
2168
- 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);
2169
- let labA;
2170
- if (prod.geneA) {
2171
- const t = prod.geneA.split(",");
2172
- if (t.length > 2) {
2173
- labA = t[0] + "," + t[1] + "...";
2174
- } else {
2175
- labA = prod.geneA;
2176
- }
2177
- } else {
2178
- labA = "";
2179
- }
2180
- 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(
2181
- "font-weight",
2182
- prod.hlgene ? prod.hlgene == 1 || prod.hlgene == 3 || prod.hlgene == 4 ? "bold" : "normal" : "normal"
2183
- ).attr("fill", prod.hlgene ? prod.hlgene == 4 ? knownprod_c : "#545454" : "#545454").attr("text-anchor", "end").attr("dominant-baseline", "central");
2184
- 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");
2185
- 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");
2186
- antisense = false;
2187
- if (thispair) {
2188
- const thisn = thispair.b.isoform;
2189
- if (thisn) {
2190
- const _gm = this.genome.isoformmatch(thisn, prod.chrB, prod.posB);
2191
- if (_gm && _gm.strand != prod.ortB) {
2192
- antisense = true;
2193
- }
2194
- }
2195
- }
2196
- 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);
2197
- let labB;
2198
- if (prod.geneB) {
2199
- let t = prod.geneB.split(",");
2200
- if (t.length > 2) {
2201
- labB = t[0] + "," + t[1] + "...";
2202
- } else {
2203
- labB = prod.geneB;
2204
- }
2205
- } else {
2206
- labB = "";
2207
- }
2208
- 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(
2209
- "font-weight",
2210
- prod.hlgene ? prod.hlgene == 2 || prod.hlgene == 3 || prod.hlgene == 4 ? "bold" : "normal" : "normal"
2211
- ).attr("fill", prod.hlgene ? prod.hlgene == 4 ? knownprod_c : "#545454" : "#545454").attr("dominant-baseline", "central");
2212
- if (prod.geneB) {
2213
- if (prod.geneB in showngenenotip) {
2214
- } else {
2215
- showngenenotip[prod.geneB] = 1;
2216
- const lst = [];
2217
- for (const elab in sample.gene2events[prod.geneB]) {
2218
- if (!(elab in elabhash)) {
2219
- lst.push(elab);
2220
- }
2221
- }
2222
- if (lst.length > 0) {
2223
- extevt.b = { lst };
2224
- 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);
2225
- if (lst.length > 1) {
2226
- 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");
2227
- }
2228
- 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");
2229
- }
2230
- }
2231
- }
2232
- 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);
2233
- let x = chrAw + s1 + rowh + s7 + geneAw + genesp + s2 + genesp + geneBw + s7 + rowh + s1 + chrBw + s3;
2234
- const x0 = x;
2235
- 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);
2236
- x += s5;
2237
- 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");
2238
- x += evt.svg.ratingw + s5;
2239
- prod.hook.mainFrame = {};
2240
- 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");
2241
- if (prod.usepair) {
2242
- prod.hook.mainFrame.bg.attr("fill", prod.usepair.inframe ? colorinframe : coloroutframe);
2243
- } else {
2244
- prod.hook.mainFrame.bg.attr("fill", "none").attr("stroke", "black");
2245
- }
2246
- 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");
2247
- x += evt.svg.framew + s5;
2248
- 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");
2249
- x += evt.svg.typew + s5;
2250
- 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");
2251
- 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");
2252
- x += evt.svg.featurew + s5;
2253
- 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");
2254
- x += evt.svg.scorew + s5 + s4;
2255
- 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", () => {
2256
- logobg.attr("stroke-width", "2");
2257
- const d = tip.clear().showunder(logobg.node()).d.append("div");
2258
- this.prodstat(prod, d);
2259
- }).on("mouseout", () => {
2260
- logobg.attr("stroke-width", "1");
2261
- tip.hide();
2262
- });
2263
- if (prodlst.length > 1) {
2264
- 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);
2265
- 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");
2266
- 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) => {
2267
- logobg2.attr("stroke-width", "2");
2268
- const table = tip.clear().showunder(event.target).d.append("table").style("border-spacing", "10px").style("border-collapse", "separate");
2269
- const tr1 = table.append("tr");
2270
- const tr2 = table.append("tr");
2271
- for (var k = 1; k < prodlst.length; k++) {
2272
- this.eventlogo([prodlst[k]], tr1.append("td"));
2273
- this.prodstat(prodlst[k], tr2.append("td"));
2274
- }
2275
- }).on("mouseout", () => {
2276
- logobg2.attr("stroke-width", "1");
2277
- tip.hide();
2278
- });
2279
- }
2280
- x = chrAw + s1 + rowh + s7 + geneAw + genesp + s2 + genesp + geneBw + s7 + rowh + s1 + chrBw + s3 + eventlogow + s6;
2281
- 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");
2282
- if (evt.svg.hasrecurrence) {
2283
- text.attr("class", "sja_svgtext2").on("mouseover", (event) => {
2284
- const p = event.target.getBoundingClientRect();
2285
- tip.clear().show(p.left + p.width + 10, p.top - 15);
2286
- const slst = this.elab2sample[evt.label];
2287
- const dd = tip.d;
2288
- dd.append("div").style("margin", "10px").style("color", "#aaa").text("This fusion is recurrent in other samples:");
2289
- const table = dd.append("table").style("border-spacing", "10px").style("border-collapse", "separate");
2290
- for (const s of slst) {
2291
- if (s.name == sample.name) {
2292
- continue;
2293
- }
2294
- const tr = table.append("tr");
2295
- tr.append("td").style("font-weight", "bold").style("color", "#858585").text(s.name);
2296
- this.eventlogo(s.events[evt.label], tr.append("td"));
2297
- }
2298
- }).on("mouseout", () => tip.hide());
2299
- }
2300
- 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) => {
2301
- boxa.attr("stroke-width", 2);
2302
- boxb.attr("stroke-width", 2);
2303
- const p = event.target.getBoundingClientRect();
2304
- tip.clear().show(p.left + p.width + s7 / 2, p.top - 30);
2305
- this.showsvpairs({
2306
- prodlst: evt.lst,
2307
- holder: tip.d,
2308
- nodetail: true,
2309
- sample,
2310
- eglst,
2311
- showothersample: true
2312
- });
2313
- }).on("mouseout", () => {
2314
- tip.hide();
2315
- boxa.attr("stroke-width", 1);
2316
- boxb.attr("stroke-width", 1);
2317
- }).on("click", (event) => {
2318
- if (evt.inclick) {
2319
- return;
2320
- }
2321
- evt.inclick = true;
2322
- const p = event.target.getBoundingClientRect();
2323
- const pane3 = newpane({
2324
- x: p.left + p.width + s7 + rowh + s1 + chrBw + s3 + eventlogow + s6 + recurw + 5,
2325
- y: p.top - 100,
2326
- close: function() {
2327
- evt.inclick = false;
2328
- pane3.pane.remove();
2329
- }
2330
- });
2331
- const prod2 = evt.lst[0];
2332
- pane3.header.html(
2333
- '<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>"
2334
- );
2335
- this.showsvpairs({
2336
- prodlst: evt.lst,
2337
- holder: pane3.body
2338
- });
2339
- });
2340
- if (extevt.a) {
2341
- 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", () => {
2342
- this.extevt_mo(extevt.a);
2343
- tip.hide();
2344
- }).on("click", (event) => {
2345
- this.extevt_c(extevt.a, event.target, sample);
2346
- });
2347
- }
2348
- if (extevt.b) {
2349
- 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", () => {
2350
- this.extevt_mo(extevt.b);
2351
- tip.hide();
2352
- }).on("click", (event) => this.extevt_c(extevt.b, event.target, sample));
2353
- }
2354
- y1 += rowh + rows;
2355
- evtid++;
2356
- }
2357
- y += groupheight + (eg.lst.length > 1 ? gvpad : 0);
2358
- }
2359
- holder.style("display", "none");
2360
- }
2361
- extevt_mover(ext, dom, sample) {
2362
- ext.circle.attr("fill", "#858585");
2363
- if (ext.text) {
2364
- ext.text.attr("fill", "white");
2365
- }
2366
- tip.clear().showunder(dom);
2367
- tip.d.append("div").style("margin", "10px").style("color", "#aaa").text("Associated fusions from this sample:");
2368
- this.extevt_table(ext.lst, tip.d, sample);
2369
- }
2370
- extevt_mo(ext) {
2371
- ext.circle.attr("fill", "white");
2372
- if (ext.text) {
2373
- ext.text.attr("fill", "black");
2374
- }
2375
- }
2376
- extevt_c(ext, dom, sample) {
2377
- const p = dom.getBoundingClientRect();
2378
- const pane = newpane({ x: p.left, y: p.top + p.height + 10 });
2379
- this.extevt_table(ext.lst, pane.body, sample);
2380
- }
2381
- extevt_table(lst, holder, sample) {
2382
- const table = holder.append("table").style("border-spacing", "10px").style("border-collapse", "separate");
2383
- for (const elab of lst) {
2384
- const tr = table.append("tr");
2385
- const prodlst = sample.events[elab];
2386
- if (!prodlst) {
2387
- tr.append('<td colspan=2 style="color:red">No products found for ' + elab + "</td>");
2388
- continue;
2389
- }
2390
- const prod = prodlst[0];
2391
- tr.append("td").style("text-align", "right").text(prod.geneA ? prod.geneA : prod.chrA);
2392
- tr.append("td").text(prod.geneB ? prod.geneB : prod.chrB);
2393
- this.eventlogo(prodlst, tr.append("td"));
2394
- }
2395
- }
2396
- eventlogo(prodlst, holder) {
2397
- const d = holder.append("div");
2398
- if (!prodlst || prodlst.length == 0) {
2399
- d.style("color", "red").text("No products");
2400
- } else {
2401
- const p = prodlst[0];
2402
- d.append("div").style("display", "inline-block").style("padding", "2px 4px").style("border", "solid 1px #858585").style("border-radius", "5px").html(
2403
- 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)
2404
- );
2405
- if (prodlst.length > 1) {
2406
- 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);
2407
- }
2408
- }
2409
- return d;
2410
- }
2411
- prodstat(prod, holder) {
2412
- holder.append("p").text("Product id: " + prod.prodid);
2413
- const alertcolor = "#FFb3b3", bg = "#f1f1f1";
2414
- const table = holder.append("table").style("border-spacing", "8px").style("border-collapse", "separate");
2415
- let tr = table.append("tr");
2416
- tr.append("td");
2417
- tr.append("td").style("background-color", bg).text(prod.geneA ? prod.geneA : prod.chrA);
2418
- tr.append("td").style("background-color", bg).text(prod.geneB ? prod.geneB : prod.chrB);
2419
- tr = table.append("tr");
2420
- tr.append("td").style("font-size", "80%").style("background-color", bg).text("chimeric reads");
2421
- tr.append("td").style("padding", "5px").style("background-color", prod.readsA <= this.cf_reads ? alertcolor : "").text(prod.readsA);
2422
- tr.append("td").style("padding", "5px").style("background-color", prod.readsB <= this.cf_reads ? alertcolor : "").text(prod.readsB);
2423
- tr = table.append("tr");
2424
- tr.append("td").style("font-size", "80%").style("background-color", bg).text("ratio");
2425
- tr.append("td").style("padding", "5px").style("background-color", prod.ratioA <= this.cf_ratio ? alertcolor : "").text(Math.ceil(prod.ratioA * 100) + "%");
2426
- tr.append("td").style("padding", "5px").style("background-color", prod.ratioB <= this.cf_ratio ? alertcolor : "").text(Math.ceil(prod.ratioB * 100) + "%");
2427
- tr = table.append("tr");
2428
- tr.append("td").style("font-size", "80%").style("background-color", bg).text("contig length");
2429
- tr.append("td").style("padding", "5px").style("background-color", prod.matchA <= this.cf_match ? alertcolor : "").text(prod.matchA + " bp");
2430
- tr.append("td").style("padding", "5px").style("background-color", prod.matchB <= this.cf_match ? alertcolor : "").text(prod.matchB + " bp");
2431
- tr = table.append("tr");
2432
- tr.append("td").style("font-size", "80%").style("background-color", bg).text("repeat score");
2433
- tr.append("td").style("padding", "5px").style("background-color", prod.repeatA >= this.cf_repeat ? alertcolor : "").text(prod.repeatA);
2434
- tr.append("td").style("padding", "5px").style("background-color", prod.repeatB >= this.cf_repeat ? alertcolor : "").text(prod.repeatB);
2435
- }
2436
- showsvpairs(arg) {
2437
- const table = arg.holder.append("table").style("border-spacing", "10px").style("border-collapse", "separate");
2438
- const tr = table.append("tr");
2439
- const _tr = table.append("tr");
2440
- const expressiontd = _tr.append("td").attr("colspan", arg.prodlst.length);
2441
- const tr2 = table.append("tr");
2442
- const geneset = /* @__PURE__ */ new Set();
2443
- for (const prod of arg.prodlst) {
2444
- if (prod.geneA) {
2445
- geneset.add(prod.geneA);
2446
- }
2447
- if (prod.geneB) {
2448
- geneset.add(prod.geneB);
2449
- }
2450
- const td = tr.append("td").style("vertical-align", "top");
2451
- if (arg.nodetail) {
2452
- const div = td.append("div");
2453
- div.append("span").style("padding-right", "20px").text("Product id: " + prod.prodid);
2454
- const ratingsl = div.append("select").style("margin-right", "5px").on("change", (event) => {
2455
- const sl = event.target;
2456
- const newv = sl.options[sl.selectedIndex].innerHTML;
2457
- prod.rating = newv;
2458
- if (prod.hook.mainRating) {
2459
- prod.hook.mainRating.text(newv);
2460
- }
2461
- if (prod.hook.lessRating) {
2462
- prod.hook.lessRating.text(newv);
2463
- }
2464
- });
2465
- const framesl = div.append("select").style("margin-right", "5px").on("change", (event) => {
2466
- const sl = event.target;
2467
- const inframe = sl.options[sl.selectedIndex].innerHTML == "in-frame";
2468
- prod.usepair.inframe = inframe;
2469
- if (prod.hook.mainFrame) {
2470
- prod.hook.mainFrame.text.text(inframe ? "IN" : "O");
2471
- prod.hook.mainFrame.bg.attr("fill", inframe ? colorinframe : coloroutframe);
2472
- }
2473
- if (prod.hook.lessFrame) {
2474
- prod.hook.lessFrame.html(
2475
- 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>'
2476
- );
2477
- }
2478
- });
2479
- const typesl = div.append("select").style("margin-right", "5px").on("change", (event) => {
2480
- const sl = event.target;
2481
- const i = sl.selectedIndex;
2482
- const newv = sl.options[i].innerHTML;
2483
- prod.type2 = newv;
2484
- if (prod.hook.mainType) {
2485
- prod.hook.mainType.text(newv);
2486
- }
2487
- prod.iscloss = i == 0;
2488
- prod.isnloss = i == 1;
2489
- prod.isfusion = i == 2;
2490
- prod.isitd = i == 3;
2491
- prod.isuptss = i == 4;
2492
- prod.isother = i == 5;
2493
- });
2494
- const effectsl = div.append("select").style("margin-right", "5px").on("change", (event) => {
2495
- const sl = event.target;
2496
- const newv = sl.options[sl.selectedIndex].innerHTML;
2497
- prod.functioneffect = newv;
2498
- });
2499
- div.append("button").text("Create group").on("click", (event) => {
2500
- let dnew = document.createElement("div");
2501
- div.node().insertBefore(dnew, event.target);
2502
- select_default(event.target).remove();
2503
- dnew = select_default(dnew);
2504
- dnew.style("display", "inline-block");
2505
- if (!arg.eglst) {
2506
- dnew.text("Cannot do it here: please go to sample " + arg.sample.name);
2507
- return;
2508
- }
2509
- dnew.append("input").attr("size", 10).property("value", prod.prodid + ",");
2510
- dnew.append("button").style("margin", "0px 10px").text("Apply").on("click", (event2) => {
2511
- const lst0 = event2.target.previousSibling.value.trim().split(",");
2512
- const goodid = [];
2513
- for (const i of lst0) {
2514
- const j = Number.parseInt(i);
2515
- if (Number.isNaN(j)) return alert("invalid id " + i);
2516
- if (this.prodidisinvalid(j, arg.sample)) return alert("invalid id " + j);
2517
- goodid.push(j);
2518
- }
2519
- if (goodid.length <= 1) return alert("need at least 2 id");
2520
- const newevtlst = [];
2521
- for (const i of goodid) {
2522
- const thisprod = this.extractprod(i, arg.sample);
2523
- if (thisprod) {
2524
- newevtlst.push({ label: thisprod.eventlabel, lst: [thisprod] });
2525
- } else {
2526
- return alert("invalid id " + i);
2527
- }
2528
- }
2529
- if (newevtlst.length <= 1) return alert("less than 2 products cannot make a group");
2530
- arg.eglst.unshift({ lst: newevtlst, ismsg: true });
2531
- this.showsample(arg.sample);
2532
- tip.hide();
2533
- });
2534
- });
2535
- ratingsl.append("option").text("HQ");
2536
- ratingsl.append("option").text("LQ");
2537
- ratingsl.append("option").text("RT");
2538
- ratingsl.append("option").text("bad");
2539
- ratingsl.append("option").text("Major");
2540
- switch (prod.rating) {
2541
- case "HQ":
2542
- ratingsl.property("selectedindex", 0);
2543
- break;
2544
- case "LQ":
2545
- ratingsl.property("selectedIndex", 1);
2546
- break;
2547
- case "RT":
2548
- ratingsl.property("selectedIndex", 2);
2549
- break;
2550
- case "bad":
2551
- ratingsl.property("selectedIndex", 3);
2552
- break;
2553
- case "Major":
2554
- ratingsl.property("selectedIndex", 4);
2555
- break;
2556
- default:
2557
- alert("unknown rating: " + prod.rating);
2558
- }
2559
- framesl.append("option").text("in-frame");
2560
- framesl.append("option").text("out-of-frame");
2561
- if (!prod.usepair) {
2562
- framesl.attr("disabled", 1);
2563
- } else {
2564
- framesl.property("selectedIndex", prod.usepair.inframe ? 0 : 1);
2565
- }
2566
- typesl.append("option").text("CLoss");
2567
- typesl.append("option").text("NLoss");
2568
- typesl.append("option").text("Fusion");
2569
- typesl.append("option").text("ITD");
2570
- typesl.append("option").text("upTSS");
2571
- typesl.append("option").text("other");
2572
- if (prod.iscloss) {
2573
- typesl.property("selectedIndex", 0);
2574
- } else if (prod.isnloss) {
2575
- typesl.property("selectedIndex", 1);
2576
- } else if (prod.isfusion) {
2577
- typesl.property("selectedIndex", 2);
2578
- } else if (prod.isitd) {
2579
- typesl.property("selectedIndex", 3);
2580
- } else if (prod.isuptss) {
2581
- typesl.property("selectedIndex", 4);
2582
- } else if (prod.isother) {
2583
- typesl.property("selectedIndex", 5);
2584
- } else {
2585
- alert("unknown type2: " + prod.type2);
2586
- }
2587
- effectsl.append("option").text("unknown effect");
2588
- effectsl.append("option").text("fusion gene");
2589
- effectsl.append("option").text("truncation, activated oncogene");
2590
- effectsl.append("option").text("truncation, loss-of-function");
2591
- effectsl.append("option").text("truncation, no consequence");
2592
- effectsl.append("option").text("ITD");
2593
- switch (prod.functioneffect) {
2594
- case void 0:
2595
- effectsl.property("selectedIndex", 0);
2596
- break;
2597
- case "fusion gene":
2598
- effectsl.property("selectedIndex", 1);
2599
- break;
2600
- case "truncation, activated oncogene":
2601
- effectsl.property("selectedIndex", 2);
2602
- break;
2603
- case "truncation, loss-of-function":
2604
- effectsl.property("selectedIndex", 3);
2605
- break;
2606
- case "truncation, no consequence":
2607
- effectsl.property("selectedIndex", 4);
2608
- break;
2609
- case "ITD":
2610
- effectsl.property("selectedIndex", 5);
2611
- break;
2612
- }
2613
- }
2614
- const p = {
2615
- a: {
2616
- chr: prod.chrA,
2617
- position: prod.posA,
2618
- strand: prod.ortA,
2619
- name: prod.geneA ? prod.geneA : prod.chrA,
2620
- ratio: prod.ratioA.toFixed(2),
2621
- feature: prod.featureA,
2622
- contiglen: prod.matchA,
2623
- chimericreads: prod.readsA,
2624
- repeatscore: prod.repeatA
2625
- },
2626
- b: {
2627
- chr: prod.chrB,
2628
- position: prod.posB,
2629
- strand: prod.ortB,
2630
- name: prod.geneB ? prod.geneB : prod.chrB,
2631
- ratio: prod.ratioB.toFixed(2),
2632
- feature: prod.featureB,
2633
- contiglen: prod.matchB,
2634
- chimericreads: prod.readsB,
2635
- repeatscore: prod.repeatB
2636
- },
2637
- rating: prod.rating,
2638
- score: Math.ceil(prod.score),
2639
- originalprod: prod
2640
- };
2641
- if (prod.usepair) {
2642
- p.inframe = prod.usepair.inframe;
2643
- const x = prod.usepair.a;
2644
- p.a.gm = this.genome.isoformmatch(x.isoform, prod.chrA, prod.posA);
2645
- p.a.codon = x.codon;
2646
- p.a.exon = x.exon;
2647
- p.a.atupstream = x.atupstream;
2648
- p.a.atdownstream = x.atdownstream;
2649
- p.a.atutr5 = x.atutr5;
2650
- p.a.atutr3 = x.atutr3;
2651
- const y = prod.usepair.b;
2652
- p.b.gm = this.genome.isoformmatch(y.isoform, prod.chrB, prod.posB);
2653
- p.b.codon = y.codon;
2654
- p.b.exon = y.exon;
2655
- p.b.atupstream = y.atupstream;
2656
- p.b.atdownstream = y.atdownstream;
2657
- p.b.atutr5 = y.atutr5;
2658
- p.b.atutr3 = y.atutr3;
2659
- let aalen = 0, bplen2 = 0;
2660
- if (x.contigaa && y.contigaa) {
2661
- aalen = y.contigaa - x.contigaa - 1;
2662
- }
2663
- if (x.contigbp && y.contigbp) {
2664
- bplen2 = y.contigbp - x.contigbp - 1;
2665
- }
2666
- if (aalen) {
2667
- p.interstitial = { aalen };
2668
- }
2669
- if (bplen2) {
2670
- if (!p.interstitial) p.interstitial = {};
2671
- p.interstitial.bplen = bplen2;
2672
- }
2673
- }
2674
- svtable({
2675
- samplelst: [
2676
- {
2677
- pairlst: [p]
2678
- }
2679
- ],
2680
- nosample: true,
2681
- holder: td
2682
- });
2683
- const par = {
2684
- pairlst: [p],
2685
- genome: this.genome,
2686
- holder: td,
2687
- quiet: true,
2688
- hostURL: this.hostURL,
2689
- jwt: this.jwt
2690
- };
2691
- import("./svgraph-B75FS3BB.js").then((p2) => {
2692
- p2.default(par);
2693
- });
2694
- if (!arg.nodetail) {
2695
- const td2 = tr2.append("td").style("font-size", ".8em").style("vertical-align", "top");
2696
- const lst = [];
2697
- for (const at of this.atlst) {
2698
- if (!at.custom) continue;
2699
- const v = prod[at.key];
2700
- lst.push({
2701
- k: at.label,
2702
- v: v == void 0 ? "" : v
2703
- });
2704
- }
2705
- make_table_2col(td2, lst, 25);
2706
- prod.pairs.sort((a, b) => {
2707
- if (a.inuse) return -1;
2708
- if (b.inuse) return 1;
2709
- return 0;
2710
- });
2711
- const table0 = td2.append("table");
2712
- for (const pair of prod.pairs) {
2713
- const tr3 = table0.append("tr");
2714
- tr3.append("td").html(
2715
- (pair.inframe ? "in-frame" : "out-of-frame") + '<div style="font-size:70%">frame code: ' + pair.frame + "</div>"
2716
- );
2717
- const td3 = tr3.append("td");
2718
- const table2 = td3.append("table").style("margin-bottom", "20px").style("border", pair.inuse ? "solid 1px black" : "").style("border-spacing", "10px").style("border-collapse", "separate");
2719
- let _tr2 = table2.append("tr").style("color", "#858585").style("font-size", ".7em");
2720
- _tr2.append("td").text("gene");
2721
- _tr2.append("td").text("isoform");
2722
- _tr2.append("td").text("gene position");
2723
- _tr2.append("td").text("exon");
2724
- _tr2.append("td").text("anchor");
2725
- _tr2.append("td").text("contig AA");
2726
- _tr2.append("td").text("contig bp");
2727
- const tr1 = table2.append("tr");
2728
- const tr22 = table2.append("tr");
2729
- tr1.append("td").text(prod.geneA ? prod.geneA : prod.chrA);
2730
- tr22.append("td").text(prod.geneB ? prod.geneB : prod.chrB);
2731
- tr1.append("td").text(pair.a.isoform ? pair.a.isoform : "");
2732
- tr22.append("td").text(pair.b.isoform ? pair.b.isoform : "");
2733
- tr1.append("td").text(
2734
- 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" : ""
2735
- );
2736
- tr22.append("td").text(
2737
- 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" : ""
2738
- );
2739
- tr1.append("td").text(pair.a.exon ? pair.a.exon : "");
2740
- tr22.append("td").text(pair.b.exon ? pair.b.exon : "");
2741
- tr1.append("td").text(pair.a.anchor ? pair.a.anchor : "");
2742
- tr22.append("td").text(pair.b.anchor ? pair.b.anchor : "");
2743
- tr1.append("td").html(pair.a.contigaa ? '<span style="color:#858585;font-size:70%">ends at</span> ' + pair.a.contigaa : "?");
2744
- tr22.append("td").html(
2745
- pair.b.contigaa ? '<span style="color:#858585;font-size:70%">starts at</span> ' + pair.b.contigaa : "?"
2746
- );
2747
- tr1.append("td").html(pair.a.contigbp ? '<span style="color:#858585;font-size:70%">ends at</span> ' + pair.a.contigbp : "?");
2748
- tr22.append("td").html(
2749
- pair.b.contigbp ? '<span style="color:#858585;font-size:70%">starts at</span> ' + pair.b.contigbp : "?"
2750
- );
2751
- }
2752
- }
2753
- }
2754
- if (!arg.sample) {
2755
- return;
2756
- }
2757
- const thislab = arg.prodlst[0].eventlabel;
2758
- const samplelst = this.elab2sample[thislab];
2759
- const othersample = [];
2760
- if (samplelst) {
2761
- for (const s of samplelst) {
2762
- if (s.name != arg.sample.name) othersample.push(s);
2763
- }
2764
- }
2765
- if (arg.showothersample && othersample.length > 0) {
2766
- arg.holder.append("button").style("display", "block").style("margin", "20px").text("Show in " + othersample.length + " other sample" + (othersample.length > 1 ? "s" : "")).on("click", (event) => {
2767
- select_default(event.target).remove();
2768
- for (const sample of othersample) {
2769
- const prodlst = sample.events[thislab];
2770
- if (!prodlst) {
2771
- arg.holder.append("div").style("margin", "20px").style("color", "red").text("Error: no products for this event in " + sample.name);
2772
- continue;
2773
- }
2774
- const table2 = arg.holder.append("table").style("margin-top", "20px").style("border", "solid 1px #ccc");
2775
- const tr3 = table2.append("tr");
2776
- tr3.append("td").text(sample.name);
2777
- const td = tr3.append("td");
2778
- this.showsvpairs({
2779
- prodlst,
2780
- holder: td,
2781
- nodetail: true,
2782
- sample,
2783
- // FIXME: eglst info is hidden somewhere in sample.egglst
2784
- eglst: null
2785
- });
2786
- }
2787
- });
2788
- }
2789
- if (this.expression.genes && geneset.size > 0) {
2790
- const table2 = expressiontd.append("table");
2791
- const tr3 = table2.append("tr");
2792
- for (const gene of geneset) {
2793
- const expd = this.expression.genes[gene];
2794
- if (expd) {
2795
- const div = tr3.append("td").style("vertical-align", "top").append("div").style("display", "inline-block").style("margin-right", "20px").style("border", "solid 1px #ccc");
2796
- div.append("div").style("background-color", "#ededed").style("padding", "10px").text(gene);
2797
- if (arg.sample) {
2798
- for (const v of expd) {
2799
- if (v.sample == arg.sample.name) {
2800
- v.ishighlight = true;
2801
- div.append("div").style("padding", "10px").style("font-size", "70%").html("Expression in " + arg.sample.name + ': <span style="font-size:150%">' + v.value + "</span>");
2802
- } else {
2803
- v.ishighlight = false;
2804
- }
2805
- }
2806
- }
2807
- showgenevalues({
2808
- data: this.expression.genes[gene],
2809
- holder: div.append("div").style("margin", "10px"),
2810
- width: 200,
2811
- height: 200,
2812
- namename: "sample"
2813
- });
2814
- } else {
2815
- tr3.append("td").style("vertical-align", "top").text("No expression data for " + gene + "</td>");
2816
- }
2817
- }
2818
- }
2819
- }
2820
- prodidisinvalid(id, sample) {
2821
- for (const egg of sample.egglst) {
2822
- for (const eg of egg.lst) {
2823
- for (const e of eg.lst) {
2824
- for (const p of e.lst) {
2825
- if (p.prodid == id) return false;
2826
- }
2827
- }
2828
- }
2829
- }
2830
- return true;
2831
- }
2832
- extractprod(id, sample) {
2833
- let prod = null;
2834
- for (let n = 0; n < sample.egglst.length; n++) {
2835
- const _egg = sample.egglst[n];
2836
- for (let j = 0; j < _egg.lst.length; j++) {
2837
- const _eg = _egg.lst[j];
2838
- for (let k = 0; k < _eg.lst.length; k++) {
2839
- const _evt = _eg.lst[k];
2840
- for (let p = 0; p < _evt.lst.length; p++) {
2841
- const p2 = _evt.lst[p];
2842
- if (p2.prodid == id) {
2843
- prod = p2;
2844
- _evt.lst.splice(p, 1);
2845
- break;
2846
- }
2847
- }
2848
- if (prod) {
2849
- if (_evt.lst.length == 0) {
2850
- _eg.lst.splice(k, 1);
2851
- }
2852
- break;
2853
- }
2854
- }
2855
- if (prod) {
2856
- if (_eg.lst.length == 0) {
2857
- _egg.lst.splice(j, 1);
2858
- } else {
2859
- if (_eg.ismsg && _eg.lst.length == 1) {
2860
- delete _eg.ismsg;
2861
- }
2862
- }
2863
- break;
2864
- }
2865
- }
2866
- if (prod) {
2867
- if (_egg.lst.length == 0) {
2868
- sample.egglst.splice(n, 1);
2869
- }
2870
- break;
2871
- }
2872
- }
2873
- return prod;
2874
- }
2875
- // end of class
2876
- };
2877
- function msjoin(prod, newholder) {
2878
- if (prod.isitd) return;
2879
- if (prod.sv_ort == "?") return;
2880
- var single = true;
2881
- var thispair = prod.usepair;
2882
- for (var i = 0; i < newholder.length; i++) {
2883
- var tmplst = newholder[i];
2884
- var prod2 = tmplst[0];
2885
- if (prod.chrB == prod2.chrA && prod.ortB == prod2.ortA) {
2886
- if (testreadcount(prod, prod2)) {
2887
- var thatpair = prod2.usepair;
2888
- if (thispair && thatpair && thispair.b.isoform && thispair.b.isoform == thatpair.a.isoform) {
2889
- var p1 = thispair.b;
2890
- var p2 = thatpair.a;
2891
- var ahead = false;
2892
- if (p1.atutr5) {
2893
- if (p2.codon != void 0) {
2894
- ahead = true;
2895
- prod2.mswhat = "5' UTR to coding region";
2896
- } else if (p2.atutr3) {
2897
- ahead = true;
2898
- prod2.mswhat = "5' UTR to 3' UTR";
2899
- } else if (p2.atutr5 && p1.atutr5.off < p2.atutr5.off) {
2900
- ahead = true;
2901
- prod2.mswhat = p2.atutr5.off - p1.atutr5.off + " bp apart in 5' UTR";
2902
- }
2903
- } else if (p1.atutr3) {
2904
- if (p2.atutr3 && p1.atutr3.off < p2.atutr3.off) {
2905
- ahead = true;
2906
- prod2.mswhat = p2.atutr3.off - p1.atutr3.off + " bp apart in 3' UTR";
2907
- }
2908
- } else if (p1.codon != void 0) {
2909
- if (p2.codon != void 0 && p2.codon > p1.codon) {
2910
- ahead = true;
2911
- prod2.mswhat = p2.codon - p1.codon + " aa apart in protein";
2912
- } else if (p2.atutr3) {
2913
- ahead = true;
2914
- prod2.mswhat = "coding region to 3' UTR";
2915
- }
2916
- }
2917
- if (ahead) {
2918
- tmplst.unshift(prod);
2919
- single = false;
2920
- break;
2921
- }
2922
- }
2923
- var dst = prod2.posA - prod.posB;
2924
- if (prod.ortB == "+" && dst > 0 && dst < genomelimit || prod.ortB == "-" && dst < 0 && -dst < genomelimit) {
2925
- prod2.mswhat = Math.abs(dst) + " bp apart on genome";
2926
- tmplst.unshift(prod);
2927
- single = false;
2928
- break;
2929
- }
2930
- }
2931
- }
2932
- prod2 = tmplst[tmplst.length - 1];
2933
- if (prod.chrA == prod2.chrB && prod.ortA == prod2.ortB) {
2934
- if (testreadcount(prod2, prod)) {
2935
- var thatpair = prod2.usepair;
2936
- if (thispair && thatpair && thispair.a.isoform && thispair.a.isoform == thatpair.b.isoform) {
2937
- var p1 = thatpair.b;
2938
- var p2 = thispair.a;
2939
- var behind = false;
2940
- if (p1.atutr5) {
2941
- if (p2.codon != void 0) {
2942
- behind = true;
2943
- prod.mswhat = "5' UTR to coding region";
2944
- } else if (p2.atutr3) {
2945
- behind = true;
2946
- prod.mswhat = "5' UTR to 3' UTR";
2947
- } else if (p2.atutr5 && p1.atutr5.off < p2.atutr5.off) {
2948
- behind = true;
2949
- prod.mswhat = p2.atutr5.off - p1.atutr5.off + " bp apart in 5' UTR";
2950
- }
2951
- } else if (p1.atutr3) {
2952
- if (p2.atutr3 && p1.atutr3.off < p2.atutr3.off) {
2953
- behind = true;
2954
- prod.mswhat = p2.atutr3.off - p1.atutr3.off + " bp apart in 3' UTR";
2955
- }
2956
- } else if (p1.codon != void 0) {
2957
- if (p2.codon != void 0 && p2.codon > p1.codon) {
2958
- behind = true;
2959
- prod.mswhat = p2.codon - p1.codon + " aa apart in protein";
2960
- } else if (p2.atutr3) {
2961
- behind = true;
2962
- prod.mswhat = "coding region to 3' UTR";
2963
- }
2964
- }
2965
- if (behind) {
2966
- tmplst.push(prod);
2967
- single = false;
2968
- break;
2969
- }
2970
- }
2971
- var dst = prod.posA - prod2.posB;
2972
- if (prod.ortA == "+" && dst > 0 && dst < genomelimit && prod.ortA == "-" && dst < 0 && -dst < genomelimit) {
2973
- prod.mswhat = Math.abs(dst) + " bp apart on genome";
2974
- tmplst.push(prod);
2975
- single = false;
2976
- break;
2977
- }
2978
- }
2979
- }
2980
- }
2981
- if (single) {
2982
- newholder.push([prod]);
2983
- }
2984
- function testreadcount(p12, p22) {
2985
- if (!p12.usepair || !p12.usepair.inframe) return false;
2986
- if (!p22.usepair || !p22.usepair.inframe) return false;
2987
- if (p12.readsB == 0 || p22.readsA == 0) return false;
2988
- var fold = p12.readsB / p22.readsA;
2989
- return fold >= 0.2 && fold <= 5;
2990
- }
2991
- }
2992
- function svtable(arg) {
2993
- const table = arg.holder.append("table").style("border-spacing", "10px").style("border-collapse", "separate");
2994
- const htr = table.append("tr").style("font-size", "70%").style("color", "#858585");
2995
- const fields = [
2996
- { label: "Feature", hide: true, get: (a) => a.feature },
2997
- { label: "Ratio", hide: true, get: (a) => Math.ceil(a.ratio * 100) + "%" },
2998
- { label: "Chimeric<br>reads", hide: true, get: (a) => a.chimericreads },
2999
- { label: "Contig<br>length", hide: true, get: (a) => a.contiglen },
3000
- { label: "Repeat<br>score", hide: true, get: (a) => a.repeatscore },
3001
- { label: "Cicero<br>score", hide: true, atpair: true, get: (a) => a.score },
3002
- { label: "Cicero<br>rating", israting: true, hide: true, atpair: true, get: (a) => a.rating }
3003
- ];
3004
- for (const sample of arg.samplelst) {
3005
- for (const p of sample.pairlst) {
3006
- if (p.a.feature || p.b.feature) fields[0].hide = false;
3007
- if (typeof p.a.ratio == "number" || typeof (p.b.ratio == "number")) fields[1].hide = false;
3008
- if (typeof p.a.chimericreads == "number" || typeof p.b.chimericreads == "number") fields[2].hide = false;
3009
- if (typeof p.a.contiglen == "number" || typeof p.b.contiglen == "number") fields[3].hide = false;
3010
- if (typeof p.a.repeatscore == "number" || typeof p.b.repeatscore == "number") fields[4].hide = false;
3011
- if (typeof p.score == "number") fields[5].hide = false;
3012
- if (p.rating) fields[6].hide = false;
3013
- }
3014
- }
3015
- if (!arg.nosample) {
3016
- htr.append("td");
3017
- }
3018
- htr.append("td");
3019
- htr.append("td");
3020
- htr.append("td").html("Genomic<br>position");
3021
- htr.append("td").html("Genomic<br>dist.");
3022
- for (const f of fields) {
3023
- if (f.hide) return;
3024
- htr.append("td").html(f.label);
3025
- }
3026
- for (const sample of arg.samplelst) {
3027
- let tr = table.append("tr");
3028
- if (!arg.nosample) {
3029
- const td = tr.append("td").text(sample.sample);
3030
- if (sample.pairlst.length > 1) {
3031
- td.attr("rowspan", sample.pairlst.length);
3032
- }
3033
- }
3034
- for (let i = 0; i < sample.pairlst.length; i++) {
3035
- if (i > 0) {
3036
- tr = table.append("tr");
3037
- }
3038
- const pair = sample.pairlst[i];
3039
- tr.append("td").style("text-align", "right").html(
3040
- '<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>"
3041
- );
3042
- const td = tr.append("td");
3043
- if (pair.originalprod && pair.originalprod.hook.lessFrame) {
3044
- pair.originalprod.hook.lessFrame = td;
3045
- }
3046
- if (pair.inframe) {
3047
- td.html(
3048
- '<span style="background-color:' + colorinframe + ';color:white;padding:2px 3px;font-size:80%;white-space:nowrap">In frame</span>'
3049
- );
3050
- } else {
3051
- if (pair.a.gm || pair.b.gm) {
3052
- td.html(
3053
- '<span style="background-color:#858585;color:white;padding:2px 3px;font-size:80%;white-space:nowrap">Out of frame</span>'
3054
- );
3055
- } else {
3056
- td.html(
3057
- '<span style="border:solid 1px #858585;color:#858585;padding:1px 2px;font-size:80%;white-space:nowrap">no gene ?</span>'
3058
- );
3059
- }
3060
- }
3061
- tr.append("td").html(
3062
- '<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>"
3063
- );
3064
- tr.append("td").html(
3065
- pair.a.chr == pair.b.chr ? bplen(Math.abs(pair.a.position - pair.b.position)) : '<span style="color:' + colorctx + '">CTX</span>'
3066
- );
3067
- for (const f of fields) {
3068
- if (f.hide) continue;
3069
- const td2 = tr.append("td");
3070
- if (f.israting && pair.originalprod && pair.originalprod.hook.lessRating) {
3071
- pair.originalprod.hook.lessRating = td2;
3072
- }
3073
- if (f.atpair) {
3074
- td2.text(f.get(pair));
3075
- } else {
3076
- td2.html(
3077
- '<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>"
3078
- );
3079
- }
3080
- }
3081
- }
3082
- }
3083
- }
3084
- function loadexpression(svmr, file) {
3085
- const genes = {};
3086
- const ep = svmr.expression;
3087
- ep.genes = genes;
3088
- const reader = new FileReader();
3089
- const chunksize = 4096;
3090
- let chunks = [];
3091
- let offset = 0;
3092
- reader.onloadend = (e) => {
3093
- if (e.target.readyState != FileReader.DONE) return;
3094
- const chunk = e.target.result;
3095
- chunks.push(chunk);
3096
- const isend = offset >= file.size;
3097
- process(isend);
3098
- if (isend) {
3099
- done();
3100
- } else {
3101
- offset += chunksize;
3102
- ep.presays.text("Reading file: " + Math.ceil(offset / file.size * 100) + "%");
3103
- reader.readAsText(file.slice(offset, offset + chunksize));
3104
- }
3105
- };
3106
- reader.readAsText(file.slice(0, chunksize));
3107
- const hg = {}, hs = {};
3108
- let good = 0, bad = 0;
3109
- function process(isend) {
3110
- const lines = chunks.join("").split("\n");
3111
- for (let i = 0; i < lines.length - 1 - (isend ? 0 : 1); i++) {
3112
- const l = lines[i].split(" ");
3113
- if (l.length == 3) {
3114
- const v = Number.parseFloat(l[1]);
3115
- if (Number.isNaN(v)) {
3116
- bad++;
3117
- } else {
3118
- good++;
3119
- hg[l[0]] = 1;
3120
- hs[l[2]] = 1;
3121
- if (!(l[0] in genes)) {
3122
- genes[l[0]] = [];
3123
- }
3124
- genes[l[0]].push({
3125
- sample: l[2],
3126
- value: v
3127
- });
3128
- }
3129
- } else {
3130
- bad++;
3131
- }
3132
- }
3133
- if (!isend) {
3134
- chunks = [lines[lines.length - 1]];
3135
- }
3136
- }
3137
- function done() {
3138
- let genec = 0;
3139
- for (const n in hg) genec++;
3140
- let samplec = 0;
3141
- for (const n in hs) samplec++;
3142
- disappear(ep.prediv);
3143
- appear(ep.afterdiv);
3144
- ep.afterdiv.selectAll("*").remove();
3145
- ep.afterdiv.append("div").text(
3146
- "Expression data loaded for " + genec + " genes, " + samplec + " samples, " + good + " data points" + (bad > 0 ? ", " + bad + " bad lines" : "")
3147
- );
3148
- ep.afterdiv.append("button").text("Delete").style("margin", "20px").on("click", () => {
3149
- delete ep.genes;
3150
- ep.prediv.node().removeChild(ep.input.node());
3151
- ep.input = ep.prediv.append("input").attr("type", "file").on("change", (event) => {
3152
- loadexpression(svmr, event.target.files[0]);
3153
- });
3154
- ep.presays.text("");
3155
- disappear(ep.afterdiv);
3156
- appear(ep.prediv);
3157
- });
3158
- }
3159
- }
3160
- function showgenevalues(arg) {
3161
- const hlcolor = "red";
3162
- arg.data.sort((a, b) => {
3163
- return b.value - a.value;
3164
- });
3165
- let width = arg.width ? arg.width : 400, height = arg.height ? arg.height : 400;
3166
- let maxv = 0;
3167
- for (const v of arg.data) {
3168
- maxv = Math.max(maxv, v.value);
3169
- }
3170
- let dotr;
3171
- const xscale = linear().domain([0, maxv]);
3172
- const svg = arg.holder.append("svg");
3173
- const axisg = svg.append("g");
3174
- const dotg = svg.append("g");
3175
- const dotset = dotg.selectAll().data(arg.data).enter().append("g");
3176
- 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) => {
3177
- event.target.setAttribute("transform", "scale(1.5)");
3178
- drag.text((d.sample ? d.sample : d.patient + " " + d.sampletype) + " " + d.value).attr("fill", d.ishighlight ? hlcolor : "black");
3179
- }).on("mouseout", (event, d) => {
3180
- event.target.setAttribute("transform", "scale(1)");
3181
- drag.text("drag to resize").attr("fill", "black");
3182
- });
3183
- 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) => {
3184
- event.preventDefault();
3185
- const x0 = event.clientX, y0 = event.clientY, width0 = width, height0 = height;
3186
- const b = select_default(document.body);
3187
- b.on("mousemove", () => {
3188
- width = width0 + event.clientX - x0;
3189
- height = height0 + event.clientY - y0;
3190
- sizing();
3191
- }).on("mouseup", () => {
3192
- b.on("mousemove", null).on("mouseup", null);
3193
- });
3194
- });
3195
- function sizing() {
3196
- dotr = Math.max(5, Math.min(width, height) / 40);
3197
- const fontsize = Math.min(18, Math.max(12, dotr * 2)), ticksize = 5, axish = fontsize + ticksize + 5, axispad = dotr + 5, width2 = dotr * 3;
3198
- xscale.range([0, width]);
3199
- svg.attr("width", dotr * 2 + width + width2).attr("height", axish + axispad + height + dotr * 2);
3200
- axisstyle({
3201
- axis: axisg.attr("transform", "translate(" + dotr * 2 + "," + axish + ")").call(
3202
- axisTop().scale(xscale).ticks(Math.min(10, Math.ceil(width / 50)))
3203
- ),
3204
- fontsize,
3205
- color: "black",
3206
- showline: true
3207
- });
3208
- dotg.attr("transform", "translate(" + dotr * 2 + "," + (axish + axispad) + ")");
3209
- dotset.attr("transform", (d, i) => {
3210
- return "translate(" + xscale(d.value) + "," + height * i / arg.data.length + ")";
3211
- });
3212
- dotcir.attr("r", (d) => {
3213
- return dotr * (d.ishighlight ? 1.5 : 1);
3214
- });
3215
- drag.attr("font-size", fontsize).attr("x", dotr * 2 + width + width2 - 5).attr("y", axish + axispad + height + dotr * 2 - 5);
3216
- }
3217
- sizing();
3218
- return this;
3219
- }
3220
-
3221
- // src/svmr.js
3222
- function svmrparseinput(arg, sayerror2, genome, holder, hostURL, jwt) {
3223
- if (!arg.dataname) {
3224
- arg.dataname = "Unnamed dataset";
3225
- }
3226
- if (arg.input) {
3227
- const [e, header, items] = svmrparseraw(arg.input, genome);
3228
- if (e) {
3229
- sayerror2("Fusion Editor input error: " + e);
3230
- return;
3231
- }
3232
- svmrlaunch(genome, header, items, arg.dataname, holder, hostURL, jwt);
3233
- return;
3234
- }
3235
- if (!arg.urls) {
3236
- sayerror2('neither .input:"" or .urls:[] is provided for Fusion Editor');
3237
- return;
3238
- }
3239
- if (!Array.isArray(arg.urls)) {
3240
- sayerror2("fusioneditor.urls[] should be an array of URL strings");
3241
- return;
3242
- }
3243
- if (arg.urls.length == 0) {
3244
- sayerror2("fusioneditor.urls[] is empty");
3245
- return;
3246
- }
3247
- const wait = holder.append("div").style("margin", "20px").style("color", "#aaa").style("font-size", "1.5em").text("Loading fusion gene data ...");
3248
- const tasks = [];
3249
- arg.urls.forEach((url) => {
3250
- tasks.push(
3251
- fetch(
3252
- new Request(hostURL + "/urltextfile", {
3253
- method: "POST",
3254
- body: JSON.stringify({ url, jwt })
3255
- })
3256
- ).then((data) => {
3257
- return data.json();
3258
- }).then((data) => {
3259
- if (data.error) throw { message: "Error with " + url + ": " + data.error };
3260
- return { data: data.text, url };
3261
- })
3262
- );
3263
- });
3264
- Promise.all(tasks).then((data) => {
3265
- wait.remove();
3266
- if (data.length == 0) {
3267
- sayerror2("No data retrieved from fusioneditor.urls");
3268
- return;
3269
- }
3270
- const [e, header, items] = svmrparseraw(data[0].data, genome);
3271
- if (e) {
3272
- sayerror2("Error parsing fusion gene data in file " + data[0].url);
3273
- return;
3274
- }
3275
- for (let i = 1; i < data.length; i++) {
3276
- const [e2, header2, items2] = svmrparseraw(data[i].data, genome);
3277
- if (e2) {
3278
- sayerror2("Error parsing fusion gene data in file " + data[i].url);
3279
- return;
3280
- }
3281
- for (const j of items2) {
3282
- items.push(j);
3283
- }
3284
- for (const h of header2) {
3285
- let notfound = true;
3286
- for (const h2 of header) {
3287
- if (h2.key == h.key) {
3288
- notfound = false;
3289
- break;
3290
- }
3291
- }
3292
- if (notfound) {
3293
- header.push(h);
3294
- }
3295
- }
3296
- }
3297
- if (items.length == 0) {
3298
- sayerror2("No fusion genes parsed from fusioneditor");
3299
- return;
3300
- }
3301
- svmrlaunch(genome, header, items, arg.dataname, holder, hostURL, jwt);
3302
- }).catch((err) => {
3303
- wait.remove();
3304
- sayerror2(err.message);
3305
- if (err.stack) console.log(err.stack);
3306
- });
3307
- }
3308
- function svmrui(dlst, genomes, hostURL, jwt) {
3309
- const [pane, inputdiv, gselect, filediv, saydiv, visualdiv] = dlst;
3310
- inputdiv.append("div").style("margin-top", "20px").html(
3311
- "<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>"
3312
- );
3313
- inputdiv.append("p").html("<a href=https://proteinpaint.stjude.org/ppdemo/hg19/fusion/cicero.output target=_blank>Example file</a>");
3314
- function cmt(t, red) {
3315
- saydiv.style("color", red ? "red" : "black").text(t);
3316
- }
3317
- const fileui = () => {
3318
- filediv.selectAll("*").remove();
3319
- const input = filediv.append("input").attr("type", "file").on("change", (event) => {
3320
- const file = event.target.files[0];
3321
- if (!file) {
3322
- fileui();
3323
- return;
3324
- }
3325
- if (!file.size) {
3326
- cmt("Invalid file " + file.name);
3327
- fileui();
3328
- return;
3329
- }
3330
- const reader = new FileReader();
3331
- reader.onload = (event2) => {
3332
- const usegenome = gselect.options[gselect.selectedIndex].innerHTML;
3333
- const genomeobj = genomes[usegenome];
3334
- const [err, header, items] = svmrparseraw(event2.target.result, genomeobj);
3335
- if (err) {
3336
- cmt(err, 1);
3337
- fileui();
3338
- return;
3339
- }
3340
- svmrlaunch(genomeobj, header, items, file.name, visualdiv, hostURL, jwt);
3341
- filediv.remove();
3342
- inputdiv.remove();
3343
- };
3344
- reader.onerror = function() {
3345
- cmt("Error reading file " + file.name, 1);
3346
- fileui();
3347
- return;
3348
- };
3349
- reader.readAsText(file, "utf8");
3350
- });
3351
- setTimeout(() => input.node().focus(), 1100);
3352
- };
3353
- fileui();
3354
- }
3355
- function svmrlaunch(genome, header, items, filename, holder, hostURL, jwt) {
3356
- new svmr_c_default(genome, header, items, filename, holder, hostURL, jwt);
3357
- }
3358
- function svmrparseraw(raw, genome) {
3359
- const lines = raw.trim().split("\n");
3360
- const [err, header] = parseheader(lines[0]);
3361
- if (err) {
3362
- return ["File header error: " + err];
3363
- }
3364
- const skipword = lines[0].split(" ")[0];
3365
- const items = [];
3366
- const badlines = [];
3367
- for (let i = 1; i < lines.length; i++) {
3368
- const line = lines[i];
3369
- if (line == "") continue;
3370
- if (line[0] == "#") continue;
3371
- const lst = line.trim().split(" ");
3372
- if (lst[0] == skipword) continue;
3373
- const m = {
3374
- notes: []
3375
- // collect notes
3376
- };
3377
- for (let j = 0; j < header.length; j++) {
3378
- if (lst[j] !== void 0 && lst[j].includes('"'))
3379
- return ['Input file has invalid character " e.g. "NM_001007565"'];
3380
- m[header[j].key] = lst[j];
3381
- }
3382
- if (!m.rating) {
3383
- badlines.push([i, "rating unspecified", lst]);
3384
- continue;
3385
- }
3386
- let s = m.rating;
3387
- if (s.toLowerCase() == "major") {
3388
- m.rating = "HQ";
3389
- s = "HQ";
3390
- }
3391
- if (s != "HQ" && s != "LQ" && s != "RT" && s != "bad") {
3392
- badlines.push([i, "invalid rating: " + m.rating, lst]);
3393
- continue;
3394
- }
3395
- if (!m.chrA) {
3396
- badlines.push([i, "missing chrA", lst]);
3397
- continue;
3398
- }
3399
- if (!genome.chrlookup[m.chrA.toUpperCase()]) {
3400
- badlines.push([i, "invalid chrA: " + m.chrA, lst]);
3401
- continue;
3402
- }
3403
- if (!m.chrB) {
3404
- badlines.push([i, "missing chrB", lst]);
3405
- continue;
3406
- }
3407
- if (!genome.chrlookup[m.chrB.toUpperCase()]) {
3408
- badlines.push([i, "invalid chrB: " + m.chrB, lst]);
3409
- continue;
3410
- }
3411
- s = m.posA;
3412
- if (!s) {
3413
- badlines.push([i, "missing posA", lst]);
3414
- continue;
3415
- }
3416
- let v = Number.parseInt(s);
3417
- if (Number.isNaN(v)) {
3418
- badlines.push([i, "invalid posA: " + s, lst]);
3419
- continue;
3420
- }
3421
- if (v < 0 || v >= genome.chrlookup[m.chrA.toUpperCase()]) {
3422
- badlines.push([i, "invalid posA: " + s, lst]);
3423
- continue;
3424
- }
3425
- m.posA = v;
3426
- s = m.posB;
3427
- if (!s) {
3428
- badlines.push([i, "missing posB", lst]);
3429
- continue;
3430
- }
3431
- v = Number.parseInt(s);
3432
- if (isNaN(v)) {
3433
- badlines.push([i, "invalid posB: " + s, lst]);
3434
- continue;
3435
- }
3436
- if (v < 0 || v >= genome.chrlookup[m.chrB.toUpperCase()]) {
3437
- badlines.push([i, "invalid posB: " + s, lst]);
3438
- continue;
3439
- }
3440
- m.posB = v;
3441
- if (!m.ratioA) {
3442
- badlines.push([i, "missing ratioA", lst]);
3443
- continue;
3444
- }
3445
- v = Number.parseFloat(m.ratioA);
3446
- if (Number.isNaN(v)) {
3447
- badlines.push([i, "invalid value for ratioA", lst]);
3448
- continue;
3449
- }
3450
- if (v > 1) {
3451
- badlines.push([i, "ratioA > 100%", lst]);
3452
- v = 1;
3453
- }
3454
- m.ratioA = v;
3455
- if (!m.ratioB) {
3456
- badlines.push([i, "missing ratioB", lst]);
3457
- continue;
3458
- }
3459
- v = Number.parseFloat(m.ratioB);
3460
- if (Number.isNaN(v)) {
3461
- badlines.push([i, "invalid value for ratioB", lst]);
3462
- continue;
3463
- }
3464
- if (v > 1) {
3465
- badlines.push([i, "ratioB > 100%", lst]);
3466
- v = 1;
3467
- }
3468
- m.ratioB = v;
3469
- if (!m.score) {
3470
- badlines.push([i, "missing score", lst]);
3471
- continue;
3472
- }
3473
- v = Number.parseFloat(m.score);
3474
- if (Number.isNaN(v)) {
3475
- badlines.push([i, "invalid value for score", lst]);
3476
- continue;
3477
- }
3478
- m.score = v;
3479
- if (!m.readsA) {
3480
- badlines.push([i, "readsA missing", lst]);
3481
- continue;
3482
- }
3483
- v = Number.parseInt(m.readsA);
3484
- if (Number.isNaN(v)) {
3485
- badlines.push([i, "invalid value for readsA", lst]);
3486
- continue;
3487
- }
3488
- m.readsA = v;
3489
- if (!m.readsB) {
3490
- badlines.push([i, "readsB missing", lst]);
3491
- continue;
3492
- }
3493
- v = Number.parseInt(m.readsB);
3494
- if (Number.isNaN(v)) {
3495
- badlines.push([i, "invalid value for readsB", lst]);
3496
- continue;
3497
- }
3498
- m.readsB = v;
3499
- if (!m.matchA) {
3500
- badlines.push([i, "matchA missing", lst]);
3501
- continue;
3502
- }
3503
- v = Number.parseInt(m.matchA);
3504
- if (Number.isNaN(v)) {
3505
- badlines.push([i, "invalid value for matchA", lst]);
3506
- continue;
3507
- }
3508
- m.matchA = v;
3509
- if (!m.matchB) {
3510
- badlines.push([i, "matchB missing", lst]);
3511
- continue;
3512
- }
3513
- v = Number.parseInt(m.matchB);
3514
- if (Number.isNaN(v)) {
3515
- badlines.push([i, "invalid value for matchB", lst]);
3516
- continue;
3517
- }
3518
- m.matchB = v;
3519
- if (!m.repeatA) {
3520
- badlines.push([i, "repeatA missing", lst]);
3521
- continue;
3522
- }
3523
- v = Number.parseFloat(m.repeatA);
3524
- if (Number.isNaN(v)) {
3525
- badlines.push([i, "invalid value for repeatA", lst]);
3526
- continue;
3527
- }
3528
- m.repeatA = v;
3529
- if (!m.repeatB) {
3530
- badlines.push([i, "repeatB missing", lst]);
3531
- continue;
3532
- }
3533
- v = Number.parseFloat(m.repeatB);
3534
- if (Number.isNaN(v)) {
3535
- badlines.push([i, "invalid value for repeatB", lst]);
3536
- continue;
3537
- }
3538
- m.repeatB = v;
3539
- if (m.type2) {
3540
- switch (m.type2.toLowerCase()) {
3541
- case "closs":
3542
- m.iscloss = true;
3543
- break;
3544
- case "nloss":
3545
- m.isnloss = true;
3546
- break;
3547
- case "fusion":
3548
- m.isfusion = true;
3549
- break;
3550
- case "itd":
3551
- m.isitd = true;
3552
- break;
3553
- case "other":
3554
- m.isother = true;
3555
- break;
3556
- case "uptss":
3557
- m.isuptss = true;
3558
- break;
3559
- default:
3560
- badlines.push([i, "unknown type2: " + m.type2, lst]);
3561
- continue;
3562
- }
3563
- }
3564
- if (m.geneA == "" || m.geneA == "NA") {
3565
- m.geneA = null;
3566
- }
3567
- if (m.geneB == "" || m.geneB == "NA") {
3568
- m.geneB = null;
3569
- }
3570
- if (m.featureA == "intergenic") m.geneA = null;
3571
- if (m.featureB == "intergenic") m.geneB = null;
3572
- 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(",") : [];
3573
- let exona = null, exonb = null, anchora = null, anchorb = null, contigaaA = null, contigaaB = null, contigbpA = null, contigbpB = null;
3574
- if (m.lstisoformaexon) exona = m.lstisoformaexon.split(",");
3575
- if (m.lstisoformbexon) exonb = m.lstisoformbexon.split(",");
3576
- if (m.lstisoformaanchor) anchora = m.lstisoformaanchor.split(",");
3577
- if (m.lstisoformbanchor) anchorb = m.lstisoformbanchor.split(",");
3578
- if (m.lstcontigaaA) contigaaA = m.lstcontigaaA.split(",");
3579
- if (m.lstcontigaaB) contigaaB = m.lstcontigaaB.split(",");
3580
- if (m.lstcontigbpA) contigbpA = m.lstcontigbpA.split(",");
3581
- if (m.lstcontigbpB) contigbpB = m.lstcontigbpB.split(",");
3582
- const paircount = Math.max(isoforma.length, isoformb.length, codona.length, codonb.length, frame.length);
3583
- m.pairs = [];
3584
- for (let j = 0; j < paircount; j++) {
3585
- const pair = {
3586
- a: {
3587
- isoform: isoforma[j] && isoforma[j].length > 0 ? isoforma[j] : null,
3588
- exon: exona ? Number.parseInt(exona[j]) : NaN,
3589
- codon: codona[j] ? Number.parseInt(codona[j]) : NaN,
3590
- anchor: anchora ? anchora[j] : void 0
3591
- },
3592
- b: {
3593
- isoform: isoformb[j] && isoformb[j].length > 0 ? isoformb[j] : null,
3594
- exon: exonb ? Number.parseInt(exonb[j]) : NaN,
3595
- codon: codonb[j] ? Number.parseInt(codonb[j]) : NaN,
3596
- anchor: anchorb ? anchorb[j] : void 0
3597
- },
3598
- frame: frame[j],
3599
- inframe: frame[j] == "1" || frame[j] == "2"
3600
- };
3601
- if (m.isuptss) {
3602
- pair.inframe = true;
3603
- }
3604
- let aaa = NaN, aab = NaN, bpa = NaN, bpb = NaN;
3605
- if (contigaaA && contigaaA[j]) aaa = Number.parseInt(contigaaA[j]);
3606
- if (contigaaB && contigaaB[j]) aab = Number.parseInt(contigaaB[j]);
3607
- if (contigbpA && contigbpA[j]) bpa = Number.parseInt(contigbpA[j]);
3608
- if (contigbpB && contigbpB[j]) bpb = Number.parseInt(contigbpB[j]);
3609
- if (!Number.isNaN(aaa) && !Number.isNaN(aab)) {
3610
- pair.a.contigaa = aaa;
3611
- pair.b.contigaa = aab;
3612
- }
3613
- if (!Number.isNaN(bpa) && !Number.isNaN(bpb)) {
3614
- pair.a.contigbp = bpa;
3615
- pair.b.contigbp = bpb;
3616
- }
3617
- m.pairs.push(pair);
3618
- }
3619
- if (m.exception) {
3620
- m.notes.push(m.exception);
3621
- }
3622
- if (m.hlgene) {
3623
- const v2 = Number.parseInt(m.hlgene);
3624
- if (Number.isNaN(v2) || v2 != 0 && v2 != 1 && v2 != 2 && v2 != 3 && v2 != 4) {
3625
- badlines.push([i, "invalid value for highlight gene flag: " + m.hlgene, lst]);
3626
- delete m.hlgene;
3627
- } else {
3628
- m.hlgene = v2;
3629
- }
3630
- }
3631
- items.push(m);
3632
- }
3633
- if (badlines.length > 0) {
3634
- const hlst = header.map((i) => i.key);
3635
- bulk_badline(hlst, badlines);
3636
- }
3637
- if (items.length == 0) {
3638
- return ["No data loaded"];
3639
- }
3640
- return [null, header, items];
3641
- }
3642
- function parseheader(line) {
3643
- const original = line.trim().split(" ");
3644
- if (original.length <= 1) return ["invalid file header"];
3645
- const header = [];
3646
- const lower = [];
3647
- for (const i2 of original) {
3648
- lower.push(i2.toLowerCase());
3649
- header.push({
3650
- label: i2,
3651
- key: i2.toLowerCase(),
3652
- custom: true
3653
- });
3654
- }
3655
- const htry = (...arg) => {
3656
- for (const s of arg) {
3657
- const i2 = lower.indexOf(s);
3658
- if (i2 != -1) return i2;
3659
- }
3660
- return -1;
3661
- };
3662
- let i = htry("genea");
3663
- if (i == -1) return ["geneA missing"];
3664
- header[i].key = "geneA";
3665
- delete header[i].custom;
3666
- i = htry("chra");
3667
- if (i == -1) return ["chrA missing"];
3668
- header[i].key = "chrA";
3669
- delete header[i].custom;
3670
- i = htry("posa");
3671
- if (i == -1) return ["posA missing"];
3672
- header[i].key = "posA";
3673
- delete header[i].custom;
3674
- i = htry("orta");
3675
- if (i == -1) return ["ortA missing"];
3676
- header[i].key = "ortA";
3677
- delete header[i].custom;
3678
- i = htry("featurea");
3679
- if (i == -1) return ["featureA missing"];
3680
- header[i].key = "featureA";
3681
- delete header[i].custom;
3682
- i = htry("ratioa");
3683
- if (i == -1) return ["ratioA missing"];
3684
- header[i].key = "ratioA";
3685
- delete header[i].custom;
3686
- i = htry("readsa");
3687
- if (i == -1) return ["readsA missing"];
3688
- header[i].key = "readsA";
3689
- delete header[i].custom;
3690
- i = htry("sv_refseqa_aa_index");
3691
- if (i != -1) {
3692
- header[i].key = "lstcontigaaA";
3693
- delete header[i].custom;
3694
- }
3695
- i = htry("sv_refseqa_contig_index");
3696
- if (i != -1) {
3697
- header[i].key = "lstcontigbpA";
3698
- delete header[i].custom;
3699
- }
3700
- i = htry("total_readsa");
3701
- if (i != -1) {
3702
- header[i].key = "totalreadsA";
3703
- delete header[i].custom;
3704
- }
3705
- i = htry("geneb");
3706
- if (i == -1) return ["geneB missing"];
3707
- header[i].key = "geneB";
3708
- delete header[i].custom;
3709
- i = htry("chrb");
3710
- if (i == -1) return ["chrB missing"];
3711
- header[i].key = "chrB";
3712
- delete header[i].custom;
3713
- i = htry("posb");
3714
- if (i == -1) return ["posB missing"];
3715
- header[i].key = "posB";
3716
- delete header[i].custom;
3717
- i = htry("ortb");
3718
- if (i == -1) return ["ortB missing"];
3719
- header[i].key = "ortB";
3720
- delete header[i].custom;
3721
- i = htry("featureb");
3722
- if (i == -1) return ["featureB missing"];
3723
- header[i].key = "featureB";
3724
- delete header[i].custom;
3725
- i = htry("ratiob");
3726
- if (i == -1) return ["ratioB missing"];
3727
- header[i].key = "ratioB";
3728
- delete header[i].custom;
3729
- i = htry("readsb");
3730
- if (i == -1) return ["readsB missing"];
3731
- header[i].key = "readsB";
3732
- delete header[i].custom;
3733
- i = htry("sv_refseqb_aa_index");
3734
- if (i != -1) {
3735
- header[i].key = "lstcontigaaB";
3736
- delete header[i].custom;
3737
- }
3738
- i = htry("sv_refseqb_contig_index");
3739
- if (i != -1) {
3740
- header[i].key = "lstcontigbpB";
3741
- delete header[i].custom;
3742
- }
3743
- i = htry("total_readsb");
3744
- if (i != -1) {
3745
- header[i].key = "totalreadsB";
3746
- delete header[i].custom;
3747
- }
3748
- i = htry("sv_inframe", "frame");
3749
- if (i == -1) return ["sv_inframe missing"];
3750
- header[i].key = "lstframe";
3751
- delete header[i].custom;
3752
- i = htry("sv_refseqa");
3753
- if (i == -1) return ["sv_refseqA missing"];
3754
- header[i].key = "lstisoforma";
3755
- delete header[i].custom;
3756
- i = htry("sv_refseqa_codon");
3757
- if (i != -1) {
3758
- header[i].key = "lstisoformacodon";
3759
- }
3760
- i = htry("sv_refseqb_codon");
3761
- if (i != -1) {
3762
- header[i].key = "lstisoformbcodon";
3763
- }
3764
- i = htry("score");
3765
- if (i == -1) return ["score missing"];
3766
- header[i].key = "score";
3767
- delete header[i].custom;
3768
- i = htry("sv_refseqb");
3769
- if (i == -1) return ["sv_refseqB missing"];
3770
- header[i].key = "lstisoformb";
3771
- delete header[i].custom;
3772
- i = htry("rating");
3773
- if (i == -1) return ["rating missing"];
3774
- header[i].key = "rating";
3775
- delete header[i].custom;
3776
- i = htry("matcha");
3777
- if (i == -1) return ["matchA missing"];
3778
- header[i].key = "matchA";
3779
- delete header[i].custom;
3780
- i = htry("matchb");
3781
- if (i == -1) return ["matchB missing"];
3782
- header[i].key = "matchB";
3783
- delete header[i].custom;
3784
- i = htry("repeata");
3785
- if (i == -1) return ["repeatA missing"];
3786
- header[i].key = "repeatA";
3787
- delete header[i].custom;
3788
- i = htry("repeatb");
3789
- if (i == -1) return ["repeatB missing"];
3790
- header[i].key = "repeatB";
3791
- delete header[i].custom;
3792
- i = htry("functional effect");
3793
- if (i == -1) return ["functional effect missing"];
3794
- header[i].key = "type2";
3795
- delete header[i].custom;
3796
- i = htry("sample");
3797
- if (i != -1) {
3798
- header[i].key = "sample";
3799
- delete header[i].custom;
3800
- }
3801
- i = htry("sv_processing_exception");
3802
- if (i != -1) {
3803
- header[i].key = "exception";
3804
- }
3805
- i = htry("medal");
3806
- if (i != -1) {
3807
- header[i].key = "hlgene";
3808
- }
3809
- i = htry("sv_refseqa_exon");
3810
- if (i != -1) {
3811
- header[i].key = "lstisoformaexon";
3812
- delete header[i].custom;
3813
- }
3814
- i = htry("sv_refseqb_exon");
3815
- if (i != -1) {
3816
- header[i].key = "lstisoformbexon";
3817
- delete header[i].custom;
3818
- }
3819
- i = htry("sv_refseqa_anchor_type");
3820
- if (i != -1) {
3821
- header[i].key = "lstisoformaanchor";
3822
- delete header[i].custom;
3823
- }
3824
- i = htry("sv_refseqb_anchor_type");
3825
- if (i != -1) {
3826
- header[i].key = "lstisoformbanchor";
3827
- delete header[i].custom;
3828
- }
3829
- return [null, header];
3830
- }
3831
- export {
3832
- svmrlaunch,
3833
- svmrparseinput,
3834
- svmrparseraw,
3835
- svmrui
3836
- };
3837
- //# sourceMappingURL=svmr-IUEUOHVO.js.map