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