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