@sjcrh/proteinpaint-client 2.217.1-0 → 2.218.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (970) hide show
  1. package/dist/2dmaf-BZWQ4YZF.js +1362 -0
  2. package/dist/AggMatrixInput-OXUENYYF.js +402 -0
  3. package/dist/AggregateMatrix-7PYLWY3X.js +37 -0
  4. package/dist/AppHeader-QOLLABH4.js +826 -0
  5. package/dist/BoxPlot-PDRYKWXF.js +1233 -0
  6. package/dist/CorrelationVolcano-Z3ABRHL6.js +613 -0
  7. package/dist/Cuminc-ATQT3KDO.js +1217 -0
  8. package/dist/DE-5LMMF5QB.js +85 -0
  9. package/dist/DEinput-Y2VXYH54.js +497 -0
  10. package/dist/DM-ACIWRZS2.js +86 -0
  11. package/dist/DifferentialAnalysis-23WQKT6I.js +235 -0
  12. package/dist/Disco-5UBCTVTY.js +3384 -0
  13. package/dist/Disco.UI-6YCIW3QK.js +239 -0
  14. package/dist/DmrPlot-R7UOGAVY.js +361 -0
  15. package/dist/DmrPlot-R7UOGAVY.js.map +7 -0
  16. package/dist/GB-QZZG4DHJ.js +1388 -0
  17. package/dist/GSEA-3WW4GEXE.js +870 -0
  18. package/dist/GeneExpInput-PW6HP5LO.js +38 -0
  19. package/dist/Geomap-YDUXJ65P.js +80 -0
  20. package/dist/HicApp-CXHLK5UM.js +2240 -0
  21. package/dist/IDCViewer-ID46XKWW.js +10808 -0
  22. package/dist/NumBinaryEditor-7HEQD3UO.js +274 -0
  23. package/dist/NumBinaryEditor.unit.spec-CE5FZMLZ.js +308 -0
  24. package/dist/NumContEditor-7J4IODVT.js +100 -0
  25. package/dist/NumContEditor.unit.spec-H3DEDHGO.js +160 -0
  26. package/dist/NumCustomBinEditor-URE4NOZI.js +29 -0
  27. package/dist/NumCustomBinEditor.unit.spec-XE5AUM45.js +393 -0
  28. package/dist/NumDiscreteEditor-PBV2QXRU.js +165 -0
  29. package/dist/NumDiscreteEditor.unit.spec-2TWQ7DAZ.js +229 -0
  30. package/dist/NumRegularBinEditor-MG27BRWO.js +29 -0
  31. package/dist/NumRegularBinEditor.unit.spec-6NJLP3BX.js +274 -0
  32. package/dist/NumSplineEditor-ZZKMWU2V.js +205 -0
  33. package/dist/NumSplineEditor.unit.spec-T3C2YPU5.js +220 -0
  34. package/dist/NumericDensity-BUEAEQZD.js +29 -0
  35. package/dist/NumericDensity.unit.spec-XZ77VRO7.js +414 -0
  36. package/dist/NumericHandler-RW2NAEBZ.js +30 -0
  37. package/dist/NumericHandler.unit.spec-BQGTQBV6.js +210 -0
  38. package/dist/ProteomeInput-RL6IDTOA.js +610 -0
  39. package/dist/Regression-EVGHTLUT.js +1412 -0
  40. package/dist/RunChart2-NK2KWOZ7.js +744 -0
  41. package/dist/SC-QWJ72SI3.js +1290 -0
  42. package/dist/SC-QWJ72SI3.js.map +7 -0
  43. package/dist/Violin-2HIRC6A2.js +1095 -0
  44. package/dist/Volcano-H55O7GBI.js +2453 -0
  45. package/dist/Volcano-H55O7GBI.js.map +7 -0
  46. package/dist/Wsi-M2XRJBGL.js +636 -0
  47. package/dist/adSandbox-T2HORPLC.js +29 -0
  48. package/dist/animatedBubbleChart-PS7KMVSY.js +542 -0
  49. package/dist/app-FKPGNJDN.js +38 -0
  50. package/dist/app-NPGVS6X4.js +28 -0
  51. package/dist/app.js +14 -14
  52. package/dist/bam-QQ54FE3A.js +872 -0
  53. package/dist/barchart-4DLCN7NL.js +38 -0
  54. package/dist/barchart2-H65GFNNQ.js +305 -0
  55. package/dist/block-RAYA73ZN.js +6232 -0
  56. package/dist/block.init-VE3TQWH4.js +29 -0
  57. package/dist/block.mds.expressionrank-YLFQQHZJ.js +350 -0
  58. package/dist/block.mds.geneboxplot-6V44H7EC.js +819 -0
  59. package/dist/block.mds.junction-DEIUZOQK.js +1534 -0
  60. package/dist/block.mds.svcnv-PTP7JYS2.js +6408 -0
  61. package/dist/block.svg-RGDXDKV6.js +155 -0
  62. package/dist/block.tk.aicheck-MFXHYAIN.js +274 -0
  63. package/dist/block.tk.bam-ICTVSRQ6.js +1897 -0
  64. package/dist/block.tk.bedgraphdot-X5AYHRUJ.js +375 -0
  65. package/dist/block.tk.bigwig.ui-FS3DA5JQ.js +202 -0
  66. package/dist/block.tk.hicstraw-MBBA3H4E.js +814 -0
  67. package/dist/block.tk.junction-L3YVWWOR.js +2353 -0
  68. package/dist/block.tk.junction.textmatrixui-PU3C7W6B.js +190 -0
  69. package/dist/block.tk.ld-SNKUZDPW.js +90 -0
  70. package/dist/block.tk.menu-NARHQW7Y.js +1050 -0
  71. package/dist/block.tk.pgv-NVNFNJZ6.js +934 -0
  72. package/dist/brainImaging-KHFLAPHC.js +550 -0
  73. package/dist/brainRegions-MQL2KZOQ.js +213 -0
  74. package/dist/bubbleHeatmap-U3GAF5AV.js +374 -0
  75. package/dist/cellTypeBubbleHeatmap-5ENEMDCZ.js +274 -0
  76. package/dist/chunk-25Q4AX4L.js +102 -0
  77. package/dist/chunk-2GQSPQ3U.js +1273 -0
  78. package/dist/chunk-2WWCHIXZ.js +194 -0
  79. package/dist/chunk-3AO7OZLF.js +294 -0
  80. package/dist/chunk-3DZJ64RQ.js +56 -0
  81. package/dist/chunk-3QZHRQ55.js +26 -0
  82. package/dist/chunk-3ZM5PZXA.js +240 -0
  83. package/dist/chunk-43FVCJXV.js +2685 -0
  84. package/dist/chunk-43WVK5KI.js +96 -0
  85. package/dist/chunk-4ZOKEHK4.js +516 -0
  86. package/dist/chunk-5M4U6S3E.js +103 -0
  87. package/dist/chunk-5O4GAKJT.js +49 -0
  88. package/dist/chunk-5Q6TANNH.js +274 -0
  89. package/dist/chunk-5WBIVXMG.js +134 -0
  90. package/dist/chunk-65FN7LIA.js +255 -0
  91. package/dist/chunk-6HVJJT3Y.js +6360 -0
  92. package/dist/chunk-6HVJJT3Y.js.map +7 -0
  93. package/dist/chunk-7HTMIFVR.js +170 -0
  94. package/dist/chunk-AOKINHUU.js +2799 -0
  95. package/dist/chunk-APXULA6M.js +182 -0
  96. package/dist/chunk-C7O67FZJ.js +1844 -0
  97. package/dist/chunk-CCNV3WJO.js +281 -0
  98. package/dist/chunk-DAKRDL76.js +156 -0
  99. package/dist/chunk-EGQVMN6S.js +397 -0
  100. package/dist/chunk-ERCLZ433.js +217 -0
  101. package/dist/chunk-ESLXHJ7W.js +31 -0
  102. package/dist/chunk-ET2KFCXK.js +424 -0
  103. package/dist/chunk-EYIZTX33.js +263 -0
  104. package/dist/chunk-F2PHTKCI.js +243 -0
  105. package/dist/chunk-FJXUMOVQ.js +176 -0
  106. package/dist/chunk-HJCI33L4.js +140 -0
  107. package/dist/chunk-HKXBGMUT.js +80 -0
  108. package/dist/chunk-HNMKK33Y.js +38 -0
  109. package/dist/chunk-IKZAWD7P.js +480 -0
  110. package/dist/chunk-ILPJAASI.js +203 -0
  111. package/dist/chunk-JFZECJY2.js +562 -0
  112. package/dist/chunk-K6CZAEBF.js +119 -0
  113. package/dist/chunk-KXDK6ZOJ.js +13624 -0
  114. package/dist/chunk-L7LRBRUN.js +2960 -0
  115. package/dist/chunk-LMG7Y5IN.js +5799 -0
  116. package/dist/chunk-LMG7Y5IN.js.map +7 -0
  117. package/dist/chunk-LO624OGK.js +102 -0
  118. package/dist/chunk-LPDQ26OP.js +550 -0
  119. package/dist/chunk-M2XWAAIZ.js +340 -0
  120. package/dist/chunk-M37J6Z5U.js +1988 -0
  121. package/dist/chunk-M5SJ42E2.js +468 -0
  122. package/dist/chunk-MJREV2KW.js +692 -0
  123. package/dist/chunk-MRR5GPPP.js +466 -0
  124. package/dist/chunk-NSCNNQOY.js +56 -0
  125. package/dist/chunk-OAQLBII5.js +54 -0
  126. package/dist/chunk-OKHU7EJW.js +194 -0
  127. package/dist/chunk-OXVB4OZC.js +4373 -0
  128. package/dist/chunk-PDZED3RR.js +382 -0
  129. package/dist/chunk-PITPUAWX.js +182 -0
  130. package/dist/chunk-PVXG2BRT.js +59 -0
  131. package/dist/chunk-PX6MHRAN.js +141 -0
  132. package/dist/chunk-REIPTX7J.js +626 -0
  133. package/dist/chunk-RFE2VG6T.js +55 -0
  134. package/dist/chunk-RPFQOIYX.js +418 -0
  135. package/dist/chunk-S2NAGL4V.js +839 -0
  136. package/dist/chunk-T24YYODE.js +217 -0
  137. package/dist/chunk-TDP4PX2S.js +123 -0
  138. package/dist/chunk-TUPJEZSL.js +299 -0
  139. package/dist/chunk-UNXVW5OT.js +379 -0
  140. package/dist/chunk-UOWUMUAX.js +444 -0
  141. package/dist/chunk-V6EIPPMT.js +1339 -0
  142. package/dist/chunk-VGUO2BQ7.js +276 -0
  143. package/dist/chunk-VKWZPC73.js +37 -0
  144. package/dist/chunk-VQ5PDCAJ.js +5213 -0
  145. package/dist/chunk-VQK3UKNA.js +54 -0
  146. package/dist/chunk-WB5MHFHB.js +237 -0
  147. package/dist/chunk-WK6CPMXR.js +302 -0
  148. package/dist/chunk-WNUCR3UF.js +2334 -0
  149. package/dist/chunk-WNUCR3UF.js.map +7 -0
  150. package/dist/chunk-WRYNE3Q4.js +1219 -0
  151. package/dist/chunk-XA6LI63Y.js +54 -0
  152. package/dist/chunk-XJYVMXMZ.js +2279 -0
  153. package/dist/chunk-XJYVMXMZ.js.map +7 -0
  154. package/dist/chunk-Y7Y6X6E5.js +70 -0
  155. package/dist/chunk-YG57X4VD.js +257 -0
  156. package/dist/chunk-YPOIMSJR.js +34 -0
  157. package/dist/chunk-YS7Y257H.js +26152 -0
  158. package/dist/chunk-YS7Y257H.js.map +7 -0
  159. package/dist/chunk-ZRLON6PP.js +14 -0
  160. package/dist/chunk-ZSNZPH6G.js +339 -0
  161. package/dist/cohort-TPMJZ4OH.js +66 -0
  162. package/dist/cohortSunburst-SL5F36RM.js +684 -0
  163. package/dist/cohortSunburst-SL5F36RM.js.map +7 -0
  164. package/dist/condition-QROUALBG.js +323 -0
  165. package/dist/controls-GH37YWOP.js +30 -0
  166. package/dist/controls.config-ZYCDICYF.js +30 -0
  167. package/dist/correlation-JESMUFS6.js +91 -0
  168. package/dist/customdata.inputui-T2DLAZYJ.js +280 -0
  169. package/dist/dataDownload-Z7A6ZEH7.js +325 -0
  170. package/dist/databrowser.ui-ZVMGFYJ2.js +421 -0
  171. package/dist/dictionary-KXFUR3NL.js +109 -0
  172. package/dist/dnaMethylation-2YU2HDD4.js +29 -0
  173. package/dist/dnaMethylation.integration.spec-75Y5RSDO.js +194 -0
  174. package/dist/dofetch-G5ULIRMG.js +47 -0
  175. package/dist/e2pca-75VDPO7P.js +340 -0
  176. package/dist/ep-F2Z7TNAG.js +1247 -0
  177. package/dist/ep-F2Z7TNAG.js.map +7 -0
  178. package/dist/expclust.gdc.spec-PB66FFWD.js +298 -0
  179. package/dist/facet-2RY37EFR.js +515 -0
  180. package/dist/gb-WQQFYFGF.js +77 -0
  181. package/dist/geneExpClustering-ARVZDF6G.js +240 -0
  182. package/dist/geneExpression-FR33PKJW.js +309 -0
  183. package/dist/geneExpression-O7DR5SMR.js +29 -0
  184. package/dist/geneExpression.unit.spec-HGNDSTAI.js +124 -0
  185. package/dist/geneORA-RXXQT44V.js +269 -0
  186. package/dist/geneRanking-WDQZ7TI3.js +544 -0
  187. package/dist/geneVariant-6JYBWFEJ.js +32 -0
  188. package/dist/geneVariant-TKRG5VQN.js +285 -0
  189. package/dist/geneVariant.integration.spec-L2Q2DY67.js +499 -0
  190. package/dist/genefusion.ui-DBLMBU2D.js +299 -0
  191. package/dist/geneset-2ZQF7FET.js +199 -0
  192. package/dist/genomeBrowser.spec-E5RJD53Z.js +272 -0
  193. package/dist/grin2-MJ4SYAFO.js +66 -0
  194. package/dist/grin2-VXRMV7VA.js +945 -0
  195. package/dist/hierCluster-44FPBMNL.js +55 -0
  196. package/dist/hierCluster-SU4BDK6I.js +51 -0
  197. package/dist/hierCluster.config-4OZ65GKH.js +32 -0
  198. package/dist/hierCluster.integration.spec-CHNSKZD4.js +479 -0
  199. package/dist/hierCluster.interactivity-M72CEGCW.js +45 -0
  200. package/dist/hierCluster.renderers-RM43G7ZR.js +18 -0
  201. package/dist/imagePlot-UYMWFNI4.js +152 -0
  202. package/dist/importPlot-W3HPE4LZ.js +8 -0
  203. package/dist/isoformExpression-JEMJE5WY.js +31 -0
  204. package/dist/isoformExpression.unit.spec-GOK5LFME.js +233 -0
  205. package/dist/jspdf.es.min-KB3HW45U.js +40 -0
  206. package/dist/junction-2X4AS47T.js +32 -0
  207. package/dist/junction.customTerm-MVSIUY66.js +15 -0
  208. package/dist/junction.unit.spec-HA74XQYV.js +178 -0
  209. package/dist/launch.adhoc-PZAJ6J2S.js +33 -0
  210. package/dist/leftlabel.sample-7BZKFB3I.js +253 -0
  211. package/dist/lollipop-URSFH4ZE.js +162 -0
  212. package/dist/maf-CM3ETF4N.js +451 -0
  213. package/dist/maftimeline-CRQEUTRY.js +583 -0
  214. package/dist/matrix-IBWB4A3Z.js +50 -0
  215. package/dist/matrix-SOBGWBTY.js +55 -0
  216. package/dist/matrix.cells-GSKC6FXI.js +25 -0
  217. package/dist/matrix.config-4KU5X3LQ.js +33 -0
  218. package/dist/matrix.data-XC2OTBTR.js +22 -0
  219. package/dist/matrix.groups-THXKRQSD.js +25 -0
  220. package/dist/matrix.integration.spec-GKHH4RSR.js +3156 -0
  221. package/dist/matrix.interactivity-ITXMM2ZP.js +33 -0
  222. package/dist/matrix.layout-D6SRLAXS.js +35 -0
  223. package/dist/matrix.legend-OWQAMHI2.js +19 -0
  224. package/dist/matrix.renderers-J66OAQUZ.js +30 -0
  225. package/dist/matrix.serieses-P5I4E2NB.js +18 -0
  226. package/dist/matrix.sort-CXBXF75N.js +25 -0
  227. package/dist/matrix.sort.unit.spec-RSXBKXC5.js +464 -0
  228. package/dist/matrix.sorterUi-WEZRKU63.js +15 -0
  229. package/dist/matrix.sorterUi.unit.spec-6EULDV43.js +334 -0
  230. package/dist/matrix.unit.spec-D4ZLDVDT.js +146 -0
  231. package/dist/mavb-5JAD6CPN.js +726 -0
  232. package/dist/mavb-5JAD6CPN.js.map +7 -0
  233. package/dist/mds.fimo-CQFREH3A.js +509 -0
  234. package/dist/mds.samplescatterplot-XLJITURG.js +1545 -0
  235. package/dist/mds.survivalplot-MLRD27QP.js +472 -0
  236. package/dist/multivalue-KJQCYBHA.js +79 -0
  237. package/dist/numericDictTermCluster-ZOU6R4XP.js +62 -0
  238. package/dist/oncomatrix-4RHDDJDC.js +286 -0
  239. package/dist/oncomatrix.spec-JA6DT4PP.js +439 -0
  240. package/dist/plot.2dvaf-VJWPWCOY.js +368 -0
  241. package/dist/plot.app-JNEOGNVW.js +32 -0
  242. package/dist/plot.barplot-YELRBXUB.js +93 -0
  243. package/dist/plot.boxplot-HNFOB3TV.js +142 -0
  244. package/dist/plot.brainImaging-AZYEGF3U.js +51 -0
  245. package/dist/plot.disco-L6PGGZJI.js +98 -0
  246. package/dist/plot.ssgq-UM64SSXW.js +130 -0
  247. package/dist/plot.vaf2cov-DKUKJRUP.js +249 -0
  248. package/dist/polar2-4YHPENAV.js +228 -0
  249. package/dist/profileForms-KMECFO3K.js +937 -0
  250. package/dist/profilePlot-3AXSIXCK.js +45 -0
  251. package/dist/proteinView-QWHOTL35.js +1346 -0
  252. package/dist/proteomeCohortCompare-DL2QLFL3.js +866 -0
  253. package/dist/pseudbulk.unit.spec-IWR7EZ7O.js +82 -0
  254. package/dist/pseudobulk-IC525IZ2.js +31 -0
  255. package/dist/purify.es-34NJ2D5A.js +1986 -0
  256. package/dist/purify.es-34NJ2D5A.js.map +7 -0
  257. package/dist/qualitative-LK2QEYHU.js +34 -0
  258. package/dist/qualitative-YY4NQGO5.js +241 -0
  259. package/dist/radar2-TJUPENQF.js +323 -0
  260. package/dist/radarFacility2-Q7LBWLCV.js +331 -0
  261. package/dist/rememberedGvQ.unit.spec-2GBLM5AO.js +210 -0
  262. package/dist/render-AHR6SCQX.js +29 -0
  263. package/dist/report-BPHJTRTO.js +213 -0
  264. package/dist/sampleView-CS2FB3K3.js +39 -0
  265. package/dist/samplelst-A3DHKP6U.js +102 -0
  266. package/dist/samplematrix-5X7MFT3G.js +2188 -0
  267. package/dist/sc-RCYXZMN6.js +77 -0
  268. package/dist/scatter-2ITGMX5N.js +921 -0
  269. package/dist/scatter-OAL4YOCA.js +84 -0
  270. package/dist/selectGenomeWithTklst-PB5KDW2N.js +125 -0
  271. package/dist/singleCellCellType-FEFNOHOP.js +29 -0
  272. package/dist/singleCellCellType.unit.spec-V2I32V23.js +150 -0
  273. package/dist/singleCellGeneExpression-RUQQMKDE.js +29 -0
  274. package/dist/singleCellGeneExpression.unit.spec-VCMJRMT7.js +144 -0
  275. package/dist/singleCellNumericValue-JLXZQWNT.js +29 -0
  276. package/dist/singleCellNumericValue.unit.spec-XVCZEN5K.js +412 -0
  277. package/dist/singleCellPlot-4EBYWOJ2.js +44 -0
  278. package/dist/singlecell-UKZJAYVH.js +1562 -0
  279. package/dist/singlecell-VNRWPXGV.js +77 -0
  280. package/dist/snp-2RJDJQZC.js +29 -0
  281. package/dist/snp.unit.spec-Z4DNBFAH.js +167 -0
  282. package/dist/snplocus-OZLIZ7R7.js +200 -0
  283. package/dist/snplst-EVRJ4OCL.js +36 -0
  284. package/dist/spliceevent.a53ss.diagram-N5UXX4OX.js +142 -0
  285. package/dist/spliceevent.exonskip.diagram-WBNFLW4V.js +274 -0
  286. package/dist/spliceevent.noeventdiagram-EI72A6L3.js +451 -0
  287. package/dist/ssGSEA-NONMMNF7.js +29 -0
  288. package/dist/ssGSEA.unit.spec-7JDPNLZA.js +79 -0
  289. package/dist/stattable-NNUHKPF4.js +112 -0
  290. package/dist/studyCatalog-KMLE7Q55.js +457 -0
  291. package/dist/summarizeCnvGeneexp-AHCGPQLE.js +154 -0
  292. package/dist/summarizeGeneexpSurvival-NCST7HDQ.js +101 -0
  293. package/dist/summarizeMutationCnv-VUTQYXO6.js +155 -0
  294. package/dist/summarizeMutationDiagnosis-TFU2HUHQ.js +31 -0
  295. package/dist/summarizeMutationSurvival-F4CJILS3.js +95 -0
  296. package/dist/summary-QQZW7BEE.js +40 -0
  297. package/dist/summary.integration.spec-FILIPD3W.js +405 -0
  298. package/dist/summaryInput-RMY226Y3.js +238 -0
  299. package/dist/sunburst-Y4LNCKMR.js +274 -0
  300. package/dist/survival-4FYQHQHX.js +49 -0
  301. package/dist/survival-6GC267GY.js +1246 -0
  302. package/dist/survival.integration.spec-5ERXR6MG.js +609 -0
  303. package/dist/svg2pdf.es.min-KKHWPFWG.js +3157 -0
  304. package/dist/svgraph-XIQIA7OJ.js +1377 -0
  305. package/dist/svmr-45YJKRQP.js +3834 -0
  306. package/dist/svmr-45YJKRQP.js.map +7 -0
  307. package/dist/swimmer-643B5Q6F.js +741 -0
  308. package/dist/table-JQIBRXTJ.js +192 -0
  309. package/dist/termCollection-LU5NW6KT.js +247 -0
  310. package/dist/termCollection-XZCPBXRV.js +29 -0
  311. package/dist/termCollection.unit.spec-H5LBV3N4.js +295 -0
  312. package/dist/termCollectionFractionSelection-3YHOFXEL.js +38 -0
  313. package/dist/termCollectionFractionSelection.unit.spec-G5X3Y5YI.js +184 -0
  314. package/dist/tk-NPWNBXLB.js +37 -0
  315. package/dist/tk-YSW5NPW2.js +1116 -0
  316. package/dist/tp.ui-W6RG7V2A.js +1453 -0
  317. package/dist/tp.ui-W6RG7V2A.js.map +7 -0
  318. package/dist/tvs.categorical-TUX6KRZI.js +28 -0
  319. package/dist/tvs.condition-2CH25PLO.js +160 -0
  320. package/dist/tvs.dt-YKP3F75O.js +30 -0
  321. package/dist/tvs.dtcnv.categorical-QBJWJNHZ.js +31 -0
  322. package/dist/tvs.dtcnv.continuous-MV25OLBD.js +63 -0
  323. package/dist/tvs.dtfusion-SJ64HNKE.js +31 -0
  324. package/dist/tvs.dtitd-WQLHZK2P.js +31 -0
  325. package/dist/tvs.dtsnvindel-WMFJ7W7U.js +31 -0
  326. package/dist/tvs.dtsv-GKEC5OGA.js +31 -0
  327. package/dist/tvs.multivalue-LFWMQETN.js +84 -0
  328. package/dist/tvs.numeric-63NVZG7U.js +32 -0
  329. package/dist/tvs.samplelst-DEMMYRKK.js +95 -0
  330. package/dist/tvs.survival-M4QUVP5L.js +110 -0
  331. package/dist/tvs.termCollection-J367GZY3.js +118 -0
  332. package/dist/vocabulary-RAVWS5IS.js +32 -0
  333. package/dist/wsi.direct-UY3SIIAD.js +11514 -0
  334. package/package.json +3 -3
  335. package/dist/2dmaf-CIL2ONNM.js +0 -1362
  336. package/dist/AggMatrixInput-NHIZKOEJ.js +0 -402
  337. package/dist/AggregateMatrix-XSH3ABE3.js +0 -37
  338. package/dist/AppHeader-5BJHFV6B.js +0 -826
  339. package/dist/BoxPlot-CQTWWP3V.js +0 -1233
  340. package/dist/CorrelationVolcano-5NCISX65.js +0 -613
  341. package/dist/Cuminc-BLT2JPSD.js +0 -1217
  342. package/dist/DE-ZP46TCQ7.js +0 -85
  343. package/dist/DEinput-STU4BW5M.js +0 -497
  344. package/dist/DM-SUKRUDAG.js +0 -86
  345. package/dist/DifferentialAnalysis-NLYX5JSB.js +0 -235
  346. package/dist/Disco-IVV6MP6F.js +0 -3384
  347. package/dist/Disco.UI-XEGN5DQR.js +0 -239
  348. package/dist/DmrPlot-FS5HEDFS.js +0 -358
  349. package/dist/DmrPlot-FS5HEDFS.js.map +0 -7
  350. package/dist/GB-TOVICNRX.js +0 -1388
  351. package/dist/GSEA-7OFDPLDK.js +0 -870
  352. package/dist/GeneExpInput-GOT2JAHD.js +0 -38
  353. package/dist/Geomap-YEF6A4LT.js +0 -80
  354. package/dist/HicApp-IN6LCUZH.js +0 -2240
  355. package/dist/IDCViewer-QFJH22IE.js +0 -10808
  356. package/dist/NumBinaryEditor-GT3Z5JQD.js +0 -274
  357. package/dist/NumBinaryEditor.unit.spec-RCCNWZ6J.js +0 -308
  358. package/dist/NumContEditor-WLJ4Z3RC.js +0 -100
  359. package/dist/NumContEditor.unit.spec-G2OURVAV.js +0 -160
  360. package/dist/NumCustomBinEditor-LSMCZSV3.js +0 -29
  361. package/dist/NumCustomBinEditor.unit.spec-ZAKGVYD5.js +0 -393
  362. package/dist/NumDiscreteEditor-GRBCPKDX.js +0 -165
  363. package/dist/NumDiscreteEditor.unit.spec-GUHC6TMF.js +0 -229
  364. package/dist/NumRegularBinEditor-DEVTUDUK.js +0 -29
  365. package/dist/NumRegularBinEditor.unit.spec-4A65XLAU.js +0 -274
  366. package/dist/NumSplineEditor-DQJB74LS.js +0 -205
  367. package/dist/NumSplineEditor.unit.spec-GSJBAV5V.js +0 -220
  368. package/dist/NumericDensity-U2NFSYMA.js +0 -29
  369. package/dist/NumericDensity.unit.spec-OKC4ZXKE.js +0 -414
  370. package/dist/NumericHandler-4IREXDIN.js +0 -30
  371. package/dist/NumericHandler.unit.spec-M44XE7VM.js +0 -210
  372. package/dist/ProteomeInput-W3ZFJMN3.js +0 -610
  373. package/dist/Regression-V6UEVWJ2.js +0 -1412
  374. package/dist/RunChart2-4QXD44SZ.js +0 -744
  375. package/dist/SC-G2TTCPHB.js +0 -1344
  376. package/dist/SC-G2TTCPHB.js.map +0 -7
  377. package/dist/Violin-ICLO3WIA.js +0 -1095
  378. package/dist/Volcano-RLSRLDGE.js +0 -2452
  379. package/dist/Volcano-RLSRLDGE.js.map +0 -7
  380. package/dist/Wsi-Q23I6CNU.js +0 -636
  381. package/dist/adSandbox-LK6SIWRU.js +0 -29
  382. package/dist/animatedBubbleChart-CPKZ5IAQ.js +0 -542
  383. package/dist/app-63JVVY2P.js +0 -28
  384. package/dist/app-KDNMMF4V.js +0 -38
  385. package/dist/bam-ZGG3CZ3F.js +0 -872
  386. package/dist/barchart-LT22NFGV.js +0 -38
  387. package/dist/barchart2-PFJY6UDX.js +0 -305
  388. package/dist/block-3BDXSRE2.js +0 -6232
  389. package/dist/block.init-P4EZMHDW.js +0 -29
  390. package/dist/block.mds.expressionrank-D6NXBJVQ.js +0 -350
  391. package/dist/block.mds.geneboxplot-5BCO3XTU.js +0 -819
  392. package/dist/block.mds.junction-UAZFDKDC.js +0 -1534
  393. package/dist/block.mds.svcnv-4E25YHMY.js +0 -6408
  394. package/dist/block.svg-DV36CFYT.js +0 -155
  395. package/dist/block.tk.aicheck-4FARAYJA.js +0 -274
  396. package/dist/block.tk.bam-SXZ5UIYA.js +0 -1897
  397. package/dist/block.tk.bedgraphdot-6GLI6JC7.js +0 -375
  398. package/dist/block.tk.bigwig.ui-6HO44Y4S.js +0 -202
  399. package/dist/block.tk.hicstraw-C2MDLNFC.js +0 -814
  400. package/dist/block.tk.junction-KQVG3KPX.js +0 -2353
  401. package/dist/block.tk.junction.textmatrixui-AATONHSH.js +0 -190
  402. package/dist/block.tk.ld-GT2L3Q7W.js +0 -90
  403. package/dist/block.tk.menu-KPCUW44Y.js +0 -1050
  404. package/dist/block.tk.pgv-CEI6DROP.js +0 -934
  405. package/dist/brainImaging-3HD2D2DU.js +0 -550
  406. package/dist/brainRegions-PQYGC2VX.js +0 -213
  407. package/dist/bubbleHeatmap-UFBJZIEX.js +0 -374
  408. package/dist/cellTypeBubbleHeatmap-MPZGYZNN.js +0 -274
  409. package/dist/chunk-2KW5LFOE.js +0 -1273
  410. package/dist/chunk-3744MZJC.js +0 -692
  411. package/dist/chunk-3E3CBNKZ.js +0 -6358
  412. package/dist/chunk-3E3CBNKZ.js.map +0 -7
  413. package/dist/chunk-3RM7V7BR.js +0 -340
  414. package/dist/chunk-4JLKTIP4.js +0 -468
  415. package/dist/chunk-4MOTOAOU.js +0 -263
  416. package/dist/chunk-4TWRPEGD.js +0 -550
  417. package/dist/chunk-5C3FZM54.js +0 -203
  418. package/dist/chunk-5CAZX356.js +0 -1844
  419. package/dist/chunk-5FIEOWA7.js +0 -156
  420. package/dist/chunk-5T2UWGI6.js +0 -55
  421. package/dist/chunk-65UPR2AG.js +0 -257
  422. package/dist/chunk-7X347XMF.js +0 -397
  423. package/dist/chunk-ACVTLIAU.js +0 -54
  424. package/dist/chunk-AFEFZ74T.js +0 -276
  425. package/dist/chunk-AMW5LCUB.js +0 -424
  426. package/dist/chunk-BI3X5K2H.js +0 -379
  427. package/dist/chunk-BIJOXCLN.js +0 -2277
  428. package/dist/chunk-BIJOXCLN.js.map +0 -7
  429. package/dist/chunk-BZV2BJDU.js +0 -13624
  430. package/dist/chunk-CXEECHP5.js +0 -37
  431. package/dist/chunk-CZN4JCYE.js +0 -34
  432. package/dist/chunk-DFZWE3TR.js +0 -170
  433. package/dist/chunk-F23EQSGU.js +0 -26
  434. package/dist/chunk-FPB4EOWN.js +0 -2325
  435. package/dist/chunk-FPB4EOWN.js.map +0 -7
  436. package/dist/chunk-G7OSIYTA.js +0 -56
  437. package/dist/chunk-GDHQVEIO.js +0 -217
  438. package/dist/chunk-H2FELGYK.js +0 -140
  439. package/dist/chunk-H2Y4IUBO.js +0 -2799
  440. package/dist/chunk-H4KG6SQP.js +0 -1339
  441. package/dist/chunk-HJARHSDC.js +0 -274
  442. package/dist/chunk-HXRG7XYB.js +0 -54
  443. package/dist/chunk-I4LVKOHE.js +0 -182
  444. package/dist/chunk-ICA3GVKW.js +0 -123
  445. package/dist/chunk-IFIUHU72.js +0 -237
  446. package/dist/chunk-IYLGC4WF.js +0 -626
  447. package/dist/chunk-JLDBGKA5.js +0 -102
  448. package/dist/chunk-JMFVXWDX.js +0 -59
  449. package/dist/chunk-K74TUVYA.js +0 -25353
  450. package/dist/chunk-K74TUVYA.js.map +0 -7
  451. package/dist/chunk-KK6CIJLF.js +0 -96
  452. package/dist/chunk-KZHRRLJQ.js +0 -141
  453. package/dist/chunk-L2WOLNZK.js +0 -339
  454. package/dist/chunk-LSQ5AQ6Q.js +0 -562
  455. package/dist/chunk-LZEQYV3V.js +0 -1219
  456. package/dist/chunk-M77SRLIA.js +0 -466
  457. package/dist/chunk-MEG6TPXF.js +0 -839
  458. package/dist/chunk-MJANYPJN.js +0 -255
  459. package/dist/chunk-MLW6KEI7.js +0 -2960
  460. package/dist/chunk-N56BEWRA.js +0 -299
  461. package/dist/chunk-NHMIMTJA.js +0 -281
  462. package/dist/chunk-NKDW4MRL.js +0 -2685
  463. package/dist/chunk-NUEYFEVP.js +0 -49
  464. package/dist/chunk-OOEXVYSJ.js +0 -243
  465. package/dist/chunk-OOSMSVWQ.js +0 -194
  466. package/dist/chunk-OXNBEVNJ.js +0 -480
  467. package/dist/chunk-PGQQ7SGL.js +0 -4373
  468. package/dist/chunk-PLFPXOGX.js +0 -119
  469. package/dist/chunk-QNQ2ZYT7.js +0 -38
  470. package/dist/chunk-QNSESUCC.js +0 -294
  471. package/dist/chunk-QOMGX4EF.js +0 -70
  472. package/dist/chunk-R6C5F7XI.js +0 -103
  473. package/dist/chunk-RRKGUOVG.js +0 -14
  474. package/dist/chunk-S4IZ4VM7.js +0 -31
  475. package/dist/chunk-SFUDTUXF.js +0 -382
  476. package/dist/chunk-U5EZ5JEB.js +0 -134
  477. package/dist/chunk-UXR6JRJE.js +0 -80
  478. package/dist/chunk-VDBNJUAY.js +0 -5213
  479. package/dist/chunk-VLNB4EVT.js +0 -217
  480. package/dist/chunk-VPMQDTYR.js +0 -194
  481. package/dist/chunk-VV6JIG4D.js +0 -444
  482. package/dist/chunk-VWUZT2TX.js +0 -56
  483. package/dist/chunk-WDO4GOLT.js +0 -102
  484. package/dist/chunk-WTFURQK2.js +0 -54
  485. package/dist/chunk-XOCGDNLB.js +0 -516
  486. package/dist/chunk-YHX7HJS6.js +0 -176
  487. package/dist/chunk-YKZXJUQD.js +0 -240
  488. package/dist/chunk-YWS2FZOD.js +0 -182
  489. package/dist/chunk-ZN4W6WU4.js +0 -418
  490. package/dist/chunk-ZORGD72P.js +0 -302
  491. package/dist/chunk-ZPWBYHNE.js +0 -5799
  492. package/dist/chunk-ZPWBYHNE.js.map +0 -7
  493. package/dist/chunk-ZUZ46DIU.js +0 -1988
  494. package/dist/cohort-USQUJH65.js +0 -66
  495. package/dist/cohortSunburst-VRSXHLMP.js +0 -686
  496. package/dist/cohortSunburst-VRSXHLMP.js.map +0 -7
  497. package/dist/condition-UKODOO7B.js +0 -323
  498. package/dist/controls-CQMY7DFR.js +0 -30
  499. package/dist/controls.config-CQUF4FG7.js +0 -30
  500. package/dist/correlation-CGCAX4MY.js +0 -91
  501. package/dist/customdata.inputui-HAMDCSHR.js +0 -280
  502. package/dist/dataDownload-UN253EGZ.js +0 -325
  503. package/dist/databrowser.ui-5P6PDW37.js +0 -421
  504. package/dist/dictionary-WVFDMSQK.js +0 -109
  505. package/dist/dnaMethylation-4QDYABEF.js +0 -29
  506. package/dist/dnaMethylation.integration.spec-KHEO5VBH.js +0 -194
  507. package/dist/dofetch-3C3MI5NR.js +0 -47
  508. package/dist/e2pca-72JWCRI4.js +0 -340
  509. package/dist/ep-XWLO4IMJ.js +0 -1245
  510. package/dist/ep-XWLO4IMJ.js.map +0 -7
  511. package/dist/expclust.gdc.spec-EJZTXHTU.js +0 -298
  512. package/dist/facet-BWJ5655K.js +0 -515
  513. package/dist/gb-Z2QTJNBU.js +0 -77
  514. package/dist/geneExpClustering-N3Q64QDC.js +0 -240
  515. package/dist/geneExpression-VQPRFNKE.js +0 -309
  516. package/dist/geneExpression-YIKPVBTJ.js +0 -29
  517. package/dist/geneExpression.unit.spec-OUBUIYUZ.js +0 -124
  518. package/dist/geneORA-URZOQAQX.js +0 -269
  519. package/dist/geneRanking-M4L77YCZ.js +0 -544
  520. package/dist/geneVariant-PJZU6VDA.js +0 -285
  521. package/dist/geneVariant-ZL672DRD.js +0 -32
  522. package/dist/geneVariant.integration.spec-TRNFCKAB.js +0 -499
  523. package/dist/genefusion.ui-P7TTTF46.js +0 -299
  524. package/dist/geneset-FVANVOWM.js +0 -199
  525. package/dist/genomeBrowser.spec-GK6AD4MO.js +0 -272
  526. package/dist/grin2-R7IKKWQM.js +0 -66
  527. package/dist/grin2-YTGF2J53.js +0 -945
  528. package/dist/hierCluster-3CRQK7IC.js +0 -55
  529. package/dist/hierCluster-TU3QQL25.js +0 -51
  530. package/dist/hierCluster.config-PAGYMNCO.js +0 -32
  531. package/dist/hierCluster.integration.spec-G3IDXWFJ.js +0 -479
  532. package/dist/hierCluster.interactivity-OLEOCVNC.js +0 -45
  533. package/dist/hierCluster.renderers-PAME7BWU.js +0 -18
  534. package/dist/imagePlot-MNAZHIII.js +0 -152
  535. package/dist/importPlot-53M5BVST.js +0 -8
  536. package/dist/isoformExpression-C2IFFMAB.js +0 -31
  537. package/dist/isoformExpression.unit.spec-43QIRLHF.js +0 -233
  538. package/dist/jspdf.es.min-V7ONHJJV.js +0 -40
  539. package/dist/junction-DUFUB3E5.js +0 -32
  540. package/dist/junction.customTerm-UOPUSEOE.js +0 -15
  541. package/dist/junction.unit.spec-TYRPWIHC.js +0 -178
  542. package/dist/launch.adhoc-AOGLYLUB.js +0 -33
  543. package/dist/leftlabel.sample-4FTZWEFI.js +0 -253
  544. package/dist/lollipop-YVVIWUN6.js +0 -162
  545. package/dist/maf-PLSOTYRZ.js +0 -451
  546. package/dist/maftimeline-LPMMCZUU.js +0 -583
  547. package/dist/matrix-SKJLMCLM.js +0 -50
  548. package/dist/matrix-SYWFJGCI.js +0 -55
  549. package/dist/matrix.cells-B4L42TBM.js +0 -25
  550. package/dist/matrix.config-ZTKVUQ4O.js +0 -33
  551. package/dist/matrix.data-FYFXYDA3.js +0 -22
  552. package/dist/matrix.groups-Y7DEG3GS.js +0 -25
  553. package/dist/matrix.integration.spec-F5HC2EBF.js +0 -3156
  554. package/dist/matrix.interactivity-5IXEUY7Y.js +0 -33
  555. package/dist/matrix.layout-AH7DOPFS.js +0 -35
  556. package/dist/matrix.legend-OY7IF6AS.js +0 -19
  557. package/dist/matrix.renderers-3VGVCAGO.js +0 -30
  558. package/dist/matrix.serieses-657TLDAV.js +0 -18
  559. package/dist/matrix.sort-IMA2ES3T.js +0 -25
  560. package/dist/matrix.sort.unit.spec-GTZ3BJYB.js +0 -464
  561. package/dist/matrix.sorterUi-77F36Q5H.js +0 -15
  562. package/dist/matrix.sorterUi.unit.spec-W545SQ2L.js +0 -334
  563. package/dist/matrix.unit.spec-QFLMTDN3.js +0 -146
  564. package/dist/mavb-7NZXBVY7.js +0 -723
  565. package/dist/mavb-7NZXBVY7.js.map +0 -7
  566. package/dist/mds.fimo-VDI352JM.js +0 -509
  567. package/dist/mds.samplescatterplot-DA6VJG2H.js +0 -1545
  568. package/dist/mds.survivalplot-ZZ3ASQSJ.js +0 -472
  569. package/dist/multivalue-QG3WZUHE.js +0 -79
  570. package/dist/numericDictTermCluster-GLLG6IK2.js +0 -62
  571. package/dist/oncomatrix-DHGG5WGO.js +0 -286
  572. package/dist/oncomatrix.spec-73FNQLQH.js +0 -439
  573. package/dist/plot.2dvaf-D73MWO6O.js +0 -368
  574. package/dist/plot.app-ZB7S6F47.js +0 -32
  575. package/dist/plot.barplot-PDKH4DOC.js +0 -93
  576. package/dist/plot.boxplot-G3Z5N5CR.js +0 -142
  577. package/dist/plot.brainImaging-PUNPNRWL.js +0 -51
  578. package/dist/plot.disco-ZHPA5JUU.js +0 -98
  579. package/dist/plot.ssgq-7AF35XL5.js +0 -130
  580. package/dist/plot.vaf2cov-AXUYZHCK.js +0 -249
  581. package/dist/polar2-G6B2BVSV.js +0 -228
  582. package/dist/profileForms-3SO7GP7J.js +0 -937
  583. package/dist/profilePlot-G2GOYAKK.js +0 -45
  584. package/dist/proteinView-AQGKZNKD.js +0 -1346
  585. package/dist/proteomeCohortCompare-QBOSS7ND.js +0 -866
  586. package/dist/pseudbulk.unit.spec-X2MKMEJT.js +0 -82
  587. package/dist/pseudobulk-TICKQN7I.js +0 -31
  588. package/dist/purify.es-3S3RVH5Y.js +0 -1594
  589. package/dist/purify.es-3S3RVH5Y.js.map +0 -7
  590. package/dist/qualitative-J4FX3QBE.js +0 -34
  591. package/dist/qualitative-YHQQT2DB.js +0 -241
  592. package/dist/radar2-GXRNDJI2.js +0 -323
  593. package/dist/radarFacility2-7RVTCX3Y.js +0 -331
  594. package/dist/rememberedGvQ.unit.spec-4PDIU5RY.js +0 -210
  595. package/dist/render-7KXWFGS4.js +0 -29
  596. package/dist/report-5CP3CFTF.js +0 -213
  597. package/dist/sampleView-HBT7UPZG.js +0 -39
  598. package/dist/samplelst-KCCHDGQM.js +0 -102
  599. package/dist/samplematrix-IQHKL3KO.js +0 -2188
  600. package/dist/sc-RJWUKNDH.js +0 -77
  601. package/dist/scatter-LLH3KUOP.js +0 -84
  602. package/dist/scatter-TJAKPWG3.js +0 -921
  603. package/dist/selectGenomeWithTklst-OYII3JO3.js +0 -125
  604. package/dist/singleCellCellType-CSLRJYE5.js +0 -29
  605. package/dist/singleCellCellType.unit.spec-D6D52VTF.js +0 -150
  606. package/dist/singleCellGeneExpression-KSX7FQYG.js +0 -29
  607. package/dist/singleCellGeneExpression.unit.spec-CT4GFFE4.js +0 -144
  608. package/dist/singleCellNumericValue-E4JUD5JH.js +0 -29
  609. package/dist/singleCellNumericValue.unit.spec-QVVK6VK5.js +0 -412
  610. package/dist/singleCellPlot-7NM6ZZOE.js +0 -44
  611. package/dist/singlecell-5B6WHEEN.js +0 -1562
  612. package/dist/singlecell-SIB4GIDJ.js +0 -77
  613. package/dist/snp-I4AI2C54.js +0 -29
  614. package/dist/snp.unit.spec-OIAKRV3Y.js +0 -167
  615. package/dist/snplocus-LQ4WUFUM.js +0 -200
  616. package/dist/snplst-QCH6JJ7S.js +0 -36
  617. package/dist/spliceevent.a53ss.diagram-MZE3NFGH.js +0 -142
  618. package/dist/spliceevent.exonskip.diagram-H6AJBIRM.js +0 -274
  619. package/dist/spliceevent.noeventdiagram-4MCGAKBV.js +0 -451
  620. package/dist/ssGSEA-YLFT44QJ.js +0 -29
  621. package/dist/ssGSEA.unit.spec-MLGJSQHA.js +0 -79
  622. package/dist/stattable-GOSYPYXB.js +0 -112
  623. package/dist/studyCatalog-UHS2SVRZ.js +0 -457
  624. package/dist/summarizeCnvGeneexp-HTEBFQCB.js +0 -154
  625. package/dist/summarizeGeneexpSurvival-PUL5VWCR.js +0 -101
  626. package/dist/summarizeMutationCnv-PCAEMP2I.js +0 -155
  627. package/dist/summarizeMutationDiagnosis-MJKM5AN7.js +0 -31
  628. package/dist/summarizeMutationSurvival-CWZRGANA.js +0 -95
  629. package/dist/summary-EI5POFSK.js +0 -40
  630. package/dist/summary.integration.spec-2T4M4BML.js +0 -405
  631. package/dist/summaryInput-6GZULFH4.js +0 -238
  632. package/dist/sunburst-MBWKP6SE.js +0 -274
  633. package/dist/survival-LDTOT7QH.js +0 -1246
  634. package/dist/survival-VWRXWUTC.js +0 -49
  635. package/dist/survival.integration.spec-NVMZ2ZHQ.js +0 -609
  636. package/dist/svg2pdf.es.min-NIFE2BIE.js +0 -3157
  637. package/dist/svgraph-VJ3Z2KQB.js +0 -1377
  638. package/dist/svmr-ELLP542F.js +0 -3832
  639. package/dist/svmr-ELLP542F.js.map +0 -7
  640. package/dist/swimmer-X3ZUO3OJ.js +0 -741
  641. package/dist/table-QD3574HI.js +0 -192
  642. package/dist/termCollection-2WAA3PYS.js +0 -247
  643. package/dist/termCollection-C4Y7ZBAZ.js +0 -29
  644. package/dist/termCollection.unit.spec-DVRZRBIX.js +0 -295
  645. package/dist/termCollectionFractionSelection-CXS6PV6A.js +0 -38
  646. package/dist/termCollectionFractionSelection.unit.spec-P3ERZKKO.js +0 -184
  647. package/dist/tk-DVMIRU4Y.js +0 -37
  648. package/dist/tk-RQ5SODZH.js +0 -1116
  649. package/dist/tp.ui-AATHAQNO.js +0 -1449
  650. package/dist/tp.ui-AATHAQNO.js.map +0 -7
  651. package/dist/tvs.categorical-WMN357DD.js +0 -28
  652. package/dist/tvs.condition-5AZKVWQ5.js +0 -160
  653. package/dist/tvs.dt-ND63FJSI.js +0 -30
  654. package/dist/tvs.dtcnv.categorical-ID6ZHVUX.js +0 -31
  655. package/dist/tvs.dtcnv.continuous-K44QAHRU.js +0 -63
  656. package/dist/tvs.dtfusion-T3WIRHYK.js +0 -31
  657. package/dist/tvs.dtitd-W2SI4P2S.js +0 -31
  658. package/dist/tvs.dtsnvindel-QZC2OKZN.js +0 -31
  659. package/dist/tvs.dtsv-QCQXPL6B.js +0 -31
  660. package/dist/tvs.multivalue-CG4JFPFT.js +0 -84
  661. package/dist/tvs.numeric-2NCCCV24.js +0 -32
  662. package/dist/tvs.samplelst-52RTEKIR.js +0 -95
  663. package/dist/tvs.survival-UO47FDTY.js +0 -110
  664. package/dist/tvs.termCollection-JJECMQIS.js +0 -118
  665. package/dist/vocabulary-QYEY72KK.js +0 -32
  666. package/dist/wsi.direct-K2OBDXDS.js +0 -11514
  667. /package/dist/{2dmaf-CIL2ONNM.js.map → 2dmaf-BZWQ4YZF.js.map} +0 -0
  668. /package/dist/{AggMatrixInput-NHIZKOEJ.js.map → AggMatrixInput-OXUENYYF.js.map} +0 -0
  669. /package/dist/{AggregateMatrix-XSH3ABE3.js.map → AggregateMatrix-7PYLWY3X.js.map} +0 -0
  670. /package/dist/{AppHeader-5BJHFV6B.js.map → AppHeader-QOLLABH4.js.map} +0 -0
  671. /package/dist/{BoxPlot-CQTWWP3V.js.map → BoxPlot-PDRYKWXF.js.map} +0 -0
  672. /package/dist/{CorrelationVolcano-5NCISX65.js.map → CorrelationVolcano-Z3ABRHL6.js.map} +0 -0
  673. /package/dist/{Cuminc-BLT2JPSD.js.map → Cuminc-ATQT3KDO.js.map} +0 -0
  674. /package/dist/{DE-ZP46TCQ7.js.map → DE-5LMMF5QB.js.map} +0 -0
  675. /package/dist/{DEinput-STU4BW5M.js.map → DEinput-Y2VXYH54.js.map} +0 -0
  676. /package/dist/{DM-SUKRUDAG.js.map → DM-ACIWRZS2.js.map} +0 -0
  677. /package/dist/{DifferentialAnalysis-NLYX5JSB.js.map → DifferentialAnalysis-23WQKT6I.js.map} +0 -0
  678. /package/dist/{Disco-IVV6MP6F.js.map → Disco-5UBCTVTY.js.map} +0 -0
  679. /package/dist/{Disco.UI-XEGN5DQR.js.map → Disco.UI-6YCIW3QK.js.map} +0 -0
  680. /package/dist/{GB-TOVICNRX.js.map → GB-QZZG4DHJ.js.map} +0 -0
  681. /package/dist/{GSEA-7OFDPLDK.js.map → GSEA-3WW4GEXE.js.map} +0 -0
  682. /package/dist/{GeneExpInput-GOT2JAHD.js.map → GeneExpInput-PW6HP5LO.js.map} +0 -0
  683. /package/dist/{Geomap-YEF6A4LT.js.map → Geomap-YDUXJ65P.js.map} +0 -0
  684. /package/dist/{HicApp-IN6LCUZH.js.map → HicApp-CXHLK5UM.js.map} +0 -0
  685. /package/dist/{IDCViewer-QFJH22IE.js.map → IDCViewer-ID46XKWW.js.map} +0 -0
  686. /package/dist/{NumBinaryEditor-GT3Z5JQD.js.map → NumBinaryEditor-7HEQD3UO.js.map} +0 -0
  687. /package/dist/{NumBinaryEditor.unit.spec-RCCNWZ6J.js.map → NumBinaryEditor.unit.spec-CE5FZMLZ.js.map} +0 -0
  688. /package/dist/{NumContEditor-WLJ4Z3RC.js.map → NumContEditor-7J4IODVT.js.map} +0 -0
  689. /package/dist/{NumContEditor.unit.spec-G2OURVAV.js.map → NumContEditor.unit.spec-H3DEDHGO.js.map} +0 -0
  690. /package/dist/{NumCustomBinEditor-LSMCZSV3.js.map → NumCustomBinEditor-URE4NOZI.js.map} +0 -0
  691. /package/dist/{NumCustomBinEditor.unit.spec-ZAKGVYD5.js.map → NumCustomBinEditor.unit.spec-XE5AUM45.js.map} +0 -0
  692. /package/dist/{NumDiscreteEditor-GRBCPKDX.js.map → NumDiscreteEditor-PBV2QXRU.js.map} +0 -0
  693. /package/dist/{NumDiscreteEditor.unit.spec-GUHC6TMF.js.map → NumDiscreteEditor.unit.spec-2TWQ7DAZ.js.map} +0 -0
  694. /package/dist/{NumRegularBinEditor-DEVTUDUK.js.map → NumRegularBinEditor-MG27BRWO.js.map} +0 -0
  695. /package/dist/{NumRegularBinEditor.unit.spec-4A65XLAU.js.map → NumRegularBinEditor.unit.spec-6NJLP3BX.js.map} +0 -0
  696. /package/dist/{NumSplineEditor-DQJB74LS.js.map → NumSplineEditor-ZZKMWU2V.js.map} +0 -0
  697. /package/dist/{NumSplineEditor.unit.spec-GSJBAV5V.js.map → NumSplineEditor.unit.spec-T3C2YPU5.js.map} +0 -0
  698. /package/dist/{NumericDensity-U2NFSYMA.js.map → NumericDensity-BUEAEQZD.js.map} +0 -0
  699. /package/dist/{NumericDensity.unit.spec-OKC4ZXKE.js.map → NumericDensity.unit.spec-XZ77VRO7.js.map} +0 -0
  700. /package/dist/{NumericHandler-4IREXDIN.js.map → NumericHandler-RW2NAEBZ.js.map} +0 -0
  701. /package/dist/{NumericHandler.unit.spec-M44XE7VM.js.map → NumericHandler.unit.spec-BQGTQBV6.js.map} +0 -0
  702. /package/dist/{ProteomeInput-W3ZFJMN3.js.map → ProteomeInput-RL6IDTOA.js.map} +0 -0
  703. /package/dist/{Regression-V6UEVWJ2.js.map → Regression-EVGHTLUT.js.map} +0 -0
  704. /package/dist/{RunChart2-4QXD44SZ.js.map → RunChart2-NK2KWOZ7.js.map} +0 -0
  705. /package/dist/{Violin-ICLO3WIA.js.map → Violin-2HIRC6A2.js.map} +0 -0
  706. /package/dist/{Wsi-Q23I6CNU.js.map → Wsi-M2XRJBGL.js.map} +0 -0
  707. /package/dist/{adSandbox-LK6SIWRU.js.map → adSandbox-T2HORPLC.js.map} +0 -0
  708. /package/dist/{animatedBubbleChart-CPKZ5IAQ.js.map → animatedBubbleChart-PS7KMVSY.js.map} +0 -0
  709. /package/dist/{app-63JVVY2P.js.map → app-FKPGNJDN.js.map} +0 -0
  710. /package/dist/{app-KDNMMF4V.js.map → app-NPGVS6X4.js.map} +0 -0
  711. /package/dist/{bam-ZGG3CZ3F.js.map → bam-QQ54FE3A.js.map} +0 -0
  712. /package/dist/{barchart-LT22NFGV.js.map → barchart-4DLCN7NL.js.map} +0 -0
  713. /package/dist/{barchart2-PFJY6UDX.js.map → barchart2-H65GFNNQ.js.map} +0 -0
  714. /package/dist/{block-3BDXSRE2.js.map → block-RAYA73ZN.js.map} +0 -0
  715. /package/dist/{block.init-P4EZMHDW.js.map → block.init-VE3TQWH4.js.map} +0 -0
  716. /package/dist/{block.mds.expressionrank-D6NXBJVQ.js.map → block.mds.expressionrank-YLFQQHZJ.js.map} +0 -0
  717. /package/dist/{block.mds.geneboxplot-5BCO3XTU.js.map → block.mds.geneboxplot-6V44H7EC.js.map} +0 -0
  718. /package/dist/{block.mds.junction-UAZFDKDC.js.map → block.mds.junction-DEIUZOQK.js.map} +0 -0
  719. /package/dist/{block.mds.svcnv-4E25YHMY.js.map → block.mds.svcnv-PTP7JYS2.js.map} +0 -0
  720. /package/dist/{block.svg-DV36CFYT.js.map → block.svg-RGDXDKV6.js.map} +0 -0
  721. /package/dist/{block.tk.aicheck-4FARAYJA.js.map → block.tk.aicheck-MFXHYAIN.js.map} +0 -0
  722. /package/dist/{block.tk.bam-SXZ5UIYA.js.map → block.tk.bam-ICTVSRQ6.js.map} +0 -0
  723. /package/dist/{block.tk.bedgraphdot-6GLI6JC7.js.map → block.tk.bedgraphdot-X5AYHRUJ.js.map} +0 -0
  724. /package/dist/{block.tk.bigwig.ui-6HO44Y4S.js.map → block.tk.bigwig.ui-FS3DA5JQ.js.map} +0 -0
  725. /package/dist/{block.tk.hicstraw-C2MDLNFC.js.map → block.tk.hicstraw-MBBA3H4E.js.map} +0 -0
  726. /package/dist/{block.tk.junction-KQVG3KPX.js.map → block.tk.junction-L3YVWWOR.js.map} +0 -0
  727. /package/dist/{block.tk.junction.textmatrixui-AATONHSH.js.map → block.tk.junction.textmatrixui-PU3C7W6B.js.map} +0 -0
  728. /package/dist/{block.tk.ld-GT2L3Q7W.js.map → block.tk.ld-SNKUZDPW.js.map} +0 -0
  729. /package/dist/{block.tk.menu-KPCUW44Y.js.map → block.tk.menu-NARHQW7Y.js.map} +0 -0
  730. /package/dist/{block.tk.pgv-CEI6DROP.js.map → block.tk.pgv-NVNFNJZ6.js.map} +0 -0
  731. /package/dist/{brainImaging-3HD2D2DU.js.map → brainImaging-KHFLAPHC.js.map} +0 -0
  732. /package/dist/{brainRegions-PQYGC2VX.js.map → brainRegions-MQL2KZOQ.js.map} +0 -0
  733. /package/dist/{bubbleHeatmap-UFBJZIEX.js.map → bubbleHeatmap-U3GAF5AV.js.map} +0 -0
  734. /package/dist/{cellTypeBubbleHeatmap-MPZGYZNN.js.map → cellTypeBubbleHeatmap-5ENEMDCZ.js.map} +0 -0
  735. /package/dist/{chunk-WDO4GOLT.js.map → chunk-25Q4AX4L.js.map} +0 -0
  736. /package/dist/{chunk-2KW5LFOE.js.map → chunk-2GQSPQ3U.js.map} +0 -0
  737. /package/dist/{chunk-VPMQDTYR.js.map → chunk-2WWCHIXZ.js.map} +0 -0
  738. /package/dist/{chunk-QNSESUCC.js.map → chunk-3AO7OZLF.js.map} +0 -0
  739. /package/dist/{chunk-G7OSIYTA.js.map → chunk-3DZJ64RQ.js.map} +0 -0
  740. /package/dist/{chunk-F23EQSGU.js.map → chunk-3QZHRQ55.js.map} +0 -0
  741. /package/dist/{chunk-YKZXJUQD.js.map → chunk-3ZM5PZXA.js.map} +0 -0
  742. /package/dist/{chunk-NKDW4MRL.js.map → chunk-43FVCJXV.js.map} +0 -0
  743. /package/dist/{chunk-KK6CIJLF.js.map → chunk-43WVK5KI.js.map} +0 -0
  744. /package/dist/{chunk-XOCGDNLB.js.map → chunk-4ZOKEHK4.js.map} +0 -0
  745. /package/dist/{chunk-R6C5F7XI.js.map → chunk-5M4U6S3E.js.map} +0 -0
  746. /package/dist/{chunk-NUEYFEVP.js.map → chunk-5O4GAKJT.js.map} +0 -0
  747. /package/dist/{chunk-HJARHSDC.js.map → chunk-5Q6TANNH.js.map} +0 -0
  748. /package/dist/{chunk-U5EZ5JEB.js.map → chunk-5WBIVXMG.js.map} +0 -0
  749. /package/dist/{chunk-MJANYPJN.js.map → chunk-65FN7LIA.js.map} +0 -0
  750. /package/dist/{chunk-DFZWE3TR.js.map → chunk-7HTMIFVR.js.map} +0 -0
  751. /package/dist/{chunk-H2Y4IUBO.js.map → chunk-AOKINHUU.js.map} +0 -0
  752. /package/dist/{chunk-YWS2FZOD.js.map → chunk-APXULA6M.js.map} +0 -0
  753. /package/dist/{chunk-5CAZX356.js.map → chunk-C7O67FZJ.js.map} +0 -0
  754. /package/dist/{chunk-NHMIMTJA.js.map → chunk-CCNV3WJO.js.map} +0 -0
  755. /package/dist/{chunk-5FIEOWA7.js.map → chunk-DAKRDL76.js.map} +0 -0
  756. /package/dist/{chunk-7X347XMF.js.map → chunk-EGQVMN6S.js.map} +0 -0
  757. /package/dist/{chunk-VLNB4EVT.js.map → chunk-ERCLZ433.js.map} +0 -0
  758. /package/dist/{chunk-S4IZ4VM7.js.map → chunk-ESLXHJ7W.js.map} +0 -0
  759. /package/dist/{chunk-AMW5LCUB.js.map → chunk-ET2KFCXK.js.map} +0 -0
  760. /package/dist/{chunk-4MOTOAOU.js.map → chunk-EYIZTX33.js.map} +0 -0
  761. /package/dist/{chunk-OOEXVYSJ.js.map → chunk-F2PHTKCI.js.map} +0 -0
  762. /package/dist/{chunk-YHX7HJS6.js.map → chunk-FJXUMOVQ.js.map} +0 -0
  763. /package/dist/{chunk-H2FELGYK.js.map → chunk-HJCI33L4.js.map} +0 -0
  764. /package/dist/{chunk-UXR6JRJE.js.map → chunk-HKXBGMUT.js.map} +0 -0
  765. /package/dist/{chunk-QNQ2ZYT7.js.map → chunk-HNMKK33Y.js.map} +0 -0
  766. /package/dist/{chunk-OXNBEVNJ.js.map → chunk-IKZAWD7P.js.map} +0 -0
  767. /package/dist/{chunk-5C3FZM54.js.map → chunk-ILPJAASI.js.map} +0 -0
  768. /package/dist/{chunk-LSQ5AQ6Q.js.map → chunk-JFZECJY2.js.map} +0 -0
  769. /package/dist/{chunk-PLFPXOGX.js.map → chunk-K6CZAEBF.js.map} +0 -0
  770. /package/dist/{chunk-BZV2BJDU.js.map → chunk-KXDK6ZOJ.js.map} +0 -0
  771. /package/dist/{chunk-MLW6KEI7.js.map → chunk-L7LRBRUN.js.map} +0 -0
  772. /package/dist/{chunk-JLDBGKA5.js.map → chunk-LO624OGK.js.map} +0 -0
  773. /package/dist/{chunk-4TWRPEGD.js.map → chunk-LPDQ26OP.js.map} +0 -0
  774. /package/dist/{chunk-3RM7V7BR.js.map → chunk-M2XWAAIZ.js.map} +0 -0
  775. /package/dist/{chunk-ZUZ46DIU.js.map → chunk-M37J6Z5U.js.map} +0 -0
  776. /package/dist/{chunk-4JLKTIP4.js.map → chunk-M5SJ42E2.js.map} +0 -0
  777. /package/dist/{chunk-3744MZJC.js.map → chunk-MJREV2KW.js.map} +0 -0
  778. /package/dist/{chunk-M77SRLIA.js.map → chunk-MRR5GPPP.js.map} +0 -0
  779. /package/dist/{chunk-VWUZT2TX.js.map → chunk-NSCNNQOY.js.map} +0 -0
  780. /package/dist/{chunk-ACVTLIAU.js.map → chunk-OAQLBII5.js.map} +0 -0
  781. /package/dist/{chunk-OOSMSVWQ.js.map → chunk-OKHU7EJW.js.map} +0 -0
  782. /package/dist/{chunk-PGQQ7SGL.js.map → chunk-OXVB4OZC.js.map} +0 -0
  783. /package/dist/{chunk-SFUDTUXF.js.map → chunk-PDZED3RR.js.map} +0 -0
  784. /package/dist/{chunk-I4LVKOHE.js.map → chunk-PITPUAWX.js.map} +0 -0
  785. /package/dist/{chunk-JMFVXWDX.js.map → chunk-PVXG2BRT.js.map} +0 -0
  786. /package/dist/{chunk-KZHRRLJQ.js.map → chunk-PX6MHRAN.js.map} +0 -0
  787. /package/dist/{chunk-IYLGC4WF.js.map → chunk-REIPTX7J.js.map} +0 -0
  788. /package/dist/{chunk-5T2UWGI6.js.map → chunk-RFE2VG6T.js.map} +0 -0
  789. /package/dist/{chunk-ZN4W6WU4.js.map → chunk-RPFQOIYX.js.map} +0 -0
  790. /package/dist/{chunk-MEG6TPXF.js.map → chunk-S2NAGL4V.js.map} +0 -0
  791. /package/dist/{chunk-GDHQVEIO.js.map → chunk-T24YYODE.js.map} +0 -0
  792. /package/dist/{chunk-ICA3GVKW.js.map → chunk-TDP4PX2S.js.map} +0 -0
  793. /package/dist/{chunk-N56BEWRA.js.map → chunk-TUPJEZSL.js.map} +0 -0
  794. /package/dist/{chunk-BI3X5K2H.js.map → chunk-UNXVW5OT.js.map} +0 -0
  795. /package/dist/{chunk-VV6JIG4D.js.map → chunk-UOWUMUAX.js.map} +0 -0
  796. /package/dist/{chunk-H4KG6SQP.js.map → chunk-V6EIPPMT.js.map} +0 -0
  797. /package/dist/{chunk-AFEFZ74T.js.map → chunk-VGUO2BQ7.js.map} +0 -0
  798. /package/dist/{chunk-CXEECHP5.js.map → chunk-VKWZPC73.js.map} +0 -0
  799. /package/dist/{chunk-VDBNJUAY.js.map → chunk-VQ5PDCAJ.js.map} +0 -0
  800. /package/dist/{chunk-HXRG7XYB.js.map → chunk-VQK3UKNA.js.map} +0 -0
  801. /package/dist/{chunk-IFIUHU72.js.map → chunk-WB5MHFHB.js.map} +0 -0
  802. /package/dist/{chunk-ZORGD72P.js.map → chunk-WK6CPMXR.js.map} +0 -0
  803. /package/dist/{chunk-LZEQYV3V.js.map → chunk-WRYNE3Q4.js.map} +0 -0
  804. /package/dist/{chunk-WTFURQK2.js.map → chunk-XA6LI63Y.js.map} +0 -0
  805. /package/dist/{chunk-QOMGX4EF.js.map → chunk-Y7Y6X6E5.js.map} +0 -0
  806. /package/dist/{chunk-65UPR2AG.js.map → chunk-YG57X4VD.js.map} +0 -0
  807. /package/dist/{chunk-CZN4JCYE.js.map → chunk-YPOIMSJR.js.map} +0 -0
  808. /package/dist/{chunk-RRKGUOVG.js.map → chunk-ZRLON6PP.js.map} +0 -0
  809. /package/dist/{chunk-L2WOLNZK.js.map → chunk-ZSNZPH6G.js.map} +0 -0
  810. /package/dist/{cohort-USQUJH65.js.map → cohort-TPMJZ4OH.js.map} +0 -0
  811. /package/dist/{condition-UKODOO7B.js.map → condition-QROUALBG.js.map} +0 -0
  812. /package/dist/{controls-CQMY7DFR.js.map → controls-GH37YWOP.js.map} +0 -0
  813. /package/dist/{controls.config-CQUF4FG7.js.map → controls.config-ZYCDICYF.js.map} +0 -0
  814. /package/dist/{correlation-CGCAX4MY.js.map → correlation-JESMUFS6.js.map} +0 -0
  815. /package/dist/{customdata.inputui-HAMDCSHR.js.map → customdata.inputui-T2DLAZYJ.js.map} +0 -0
  816. /package/dist/{dataDownload-UN253EGZ.js.map → dataDownload-Z7A6ZEH7.js.map} +0 -0
  817. /package/dist/{databrowser.ui-5P6PDW37.js.map → databrowser.ui-ZVMGFYJ2.js.map} +0 -0
  818. /package/dist/{dictionary-WVFDMSQK.js.map → dictionary-KXFUR3NL.js.map} +0 -0
  819. /package/dist/{dnaMethylation-4QDYABEF.js.map → dnaMethylation-2YU2HDD4.js.map} +0 -0
  820. /package/dist/{dnaMethylation.integration.spec-KHEO5VBH.js.map → dnaMethylation.integration.spec-75Y5RSDO.js.map} +0 -0
  821. /package/dist/{dofetch-3C3MI5NR.js.map → dofetch-G5ULIRMG.js.map} +0 -0
  822. /package/dist/{e2pca-72JWCRI4.js.map → e2pca-75VDPO7P.js.map} +0 -0
  823. /package/dist/{expclust.gdc.spec-EJZTXHTU.js.map → expclust.gdc.spec-PB66FFWD.js.map} +0 -0
  824. /package/dist/{facet-BWJ5655K.js.map → facet-2RY37EFR.js.map} +0 -0
  825. /package/dist/{gb-Z2QTJNBU.js.map → gb-WQQFYFGF.js.map} +0 -0
  826. /package/dist/{geneExpClustering-N3Q64QDC.js.map → geneExpClustering-ARVZDF6G.js.map} +0 -0
  827. /package/dist/{geneExpression-VQPRFNKE.js.map → geneExpression-FR33PKJW.js.map} +0 -0
  828. /package/dist/{geneExpression-YIKPVBTJ.js.map → geneExpression-O7DR5SMR.js.map} +0 -0
  829. /package/dist/{geneExpression.unit.spec-OUBUIYUZ.js.map → geneExpression.unit.spec-HGNDSTAI.js.map} +0 -0
  830. /package/dist/{geneORA-URZOQAQX.js.map → geneORA-RXXQT44V.js.map} +0 -0
  831. /package/dist/{geneRanking-M4L77YCZ.js.map → geneRanking-WDQZ7TI3.js.map} +0 -0
  832. /package/dist/{geneVariant-ZL672DRD.js.map → geneVariant-6JYBWFEJ.js.map} +0 -0
  833. /package/dist/{geneVariant-PJZU6VDA.js.map → geneVariant-TKRG5VQN.js.map} +0 -0
  834. /package/dist/{geneVariant.integration.spec-TRNFCKAB.js.map → geneVariant.integration.spec-L2Q2DY67.js.map} +0 -0
  835. /package/dist/{genefusion.ui-P7TTTF46.js.map → genefusion.ui-DBLMBU2D.js.map} +0 -0
  836. /package/dist/{geneset-FVANVOWM.js.map → geneset-2ZQF7FET.js.map} +0 -0
  837. /package/dist/{genomeBrowser.spec-GK6AD4MO.js.map → genomeBrowser.spec-E5RJD53Z.js.map} +0 -0
  838. /package/dist/{grin2-R7IKKWQM.js.map → grin2-MJ4SYAFO.js.map} +0 -0
  839. /package/dist/{grin2-YTGF2J53.js.map → grin2-VXRMV7VA.js.map} +0 -0
  840. /package/dist/{hierCluster-3CRQK7IC.js.map → hierCluster-44FPBMNL.js.map} +0 -0
  841. /package/dist/{hierCluster-TU3QQL25.js.map → hierCluster-SU4BDK6I.js.map} +0 -0
  842. /package/dist/{hierCluster.config-PAGYMNCO.js.map → hierCluster.config-4OZ65GKH.js.map} +0 -0
  843. /package/dist/{hierCluster.integration.spec-G3IDXWFJ.js.map → hierCluster.integration.spec-CHNSKZD4.js.map} +0 -0
  844. /package/dist/{hierCluster.interactivity-OLEOCVNC.js.map → hierCluster.interactivity-M72CEGCW.js.map} +0 -0
  845. /package/dist/{hierCluster.renderers-PAME7BWU.js.map → hierCluster.renderers-RM43G7ZR.js.map} +0 -0
  846. /package/dist/{imagePlot-MNAZHIII.js.map → imagePlot-UYMWFNI4.js.map} +0 -0
  847. /package/dist/{importPlot-53M5BVST.js.map → importPlot-W3HPE4LZ.js.map} +0 -0
  848. /package/dist/{isoformExpression-C2IFFMAB.js.map → isoformExpression-JEMJE5WY.js.map} +0 -0
  849. /package/dist/{isoformExpression.unit.spec-43QIRLHF.js.map → isoformExpression.unit.spec-GOK5LFME.js.map} +0 -0
  850. /package/dist/{jspdf.es.min-V7ONHJJV.js.map → jspdf.es.min-KB3HW45U.js.map} +0 -0
  851. /package/dist/{junction-DUFUB3E5.js.map → junction-2X4AS47T.js.map} +0 -0
  852. /package/dist/{junction.customTerm-UOPUSEOE.js.map → junction.customTerm-MVSIUY66.js.map} +0 -0
  853. /package/dist/{junction.unit.spec-TYRPWIHC.js.map → junction.unit.spec-HA74XQYV.js.map} +0 -0
  854. /package/dist/{launch.adhoc-AOGLYLUB.js.map → launch.adhoc-PZAJ6J2S.js.map} +0 -0
  855. /package/dist/{leftlabel.sample-4FTZWEFI.js.map → leftlabel.sample-7BZKFB3I.js.map} +0 -0
  856. /package/dist/{lollipop-YVVIWUN6.js.map → lollipop-URSFH4ZE.js.map} +0 -0
  857. /package/dist/{maf-PLSOTYRZ.js.map → maf-CM3ETF4N.js.map} +0 -0
  858. /package/dist/{maftimeline-LPMMCZUU.js.map → maftimeline-CRQEUTRY.js.map} +0 -0
  859. /package/dist/{matrix-SKJLMCLM.js.map → matrix-IBWB4A3Z.js.map} +0 -0
  860. /package/dist/{matrix-SYWFJGCI.js.map → matrix-SOBGWBTY.js.map} +0 -0
  861. /package/dist/{matrix.cells-B4L42TBM.js.map → matrix.cells-GSKC6FXI.js.map} +0 -0
  862. /package/dist/{matrix.config-ZTKVUQ4O.js.map → matrix.config-4KU5X3LQ.js.map} +0 -0
  863. /package/dist/{matrix.data-FYFXYDA3.js.map → matrix.data-XC2OTBTR.js.map} +0 -0
  864. /package/dist/{matrix.groups-Y7DEG3GS.js.map → matrix.groups-THXKRQSD.js.map} +0 -0
  865. /package/dist/{matrix.integration.spec-F5HC2EBF.js.map → matrix.integration.spec-GKHH4RSR.js.map} +0 -0
  866. /package/dist/{matrix.interactivity-5IXEUY7Y.js.map → matrix.interactivity-ITXMM2ZP.js.map} +0 -0
  867. /package/dist/{matrix.layout-AH7DOPFS.js.map → matrix.layout-D6SRLAXS.js.map} +0 -0
  868. /package/dist/{matrix.legend-OY7IF6AS.js.map → matrix.legend-OWQAMHI2.js.map} +0 -0
  869. /package/dist/{matrix.renderers-3VGVCAGO.js.map → matrix.renderers-J66OAQUZ.js.map} +0 -0
  870. /package/dist/{matrix.serieses-657TLDAV.js.map → matrix.serieses-P5I4E2NB.js.map} +0 -0
  871. /package/dist/{matrix.sort-IMA2ES3T.js.map → matrix.sort-CXBXF75N.js.map} +0 -0
  872. /package/dist/{matrix.sort.unit.spec-GTZ3BJYB.js.map → matrix.sort.unit.spec-RSXBKXC5.js.map} +0 -0
  873. /package/dist/{matrix.sorterUi-77F36Q5H.js.map → matrix.sorterUi-WEZRKU63.js.map} +0 -0
  874. /package/dist/{matrix.sorterUi.unit.spec-W545SQ2L.js.map → matrix.sorterUi.unit.spec-6EULDV43.js.map} +0 -0
  875. /package/dist/{matrix.unit.spec-QFLMTDN3.js.map → matrix.unit.spec-D4ZLDVDT.js.map} +0 -0
  876. /package/dist/{mds.fimo-VDI352JM.js.map → mds.fimo-CQFREH3A.js.map} +0 -0
  877. /package/dist/{mds.samplescatterplot-DA6VJG2H.js.map → mds.samplescatterplot-XLJITURG.js.map} +0 -0
  878. /package/dist/{mds.survivalplot-ZZ3ASQSJ.js.map → mds.survivalplot-MLRD27QP.js.map} +0 -0
  879. /package/dist/{multivalue-QG3WZUHE.js.map → multivalue-KJQCYBHA.js.map} +0 -0
  880. /package/dist/{numericDictTermCluster-GLLG6IK2.js.map → numericDictTermCluster-ZOU6R4XP.js.map} +0 -0
  881. /package/dist/{oncomatrix-DHGG5WGO.js.map → oncomatrix-4RHDDJDC.js.map} +0 -0
  882. /package/dist/{oncomatrix.spec-73FNQLQH.js.map → oncomatrix.spec-JA6DT4PP.js.map} +0 -0
  883. /package/dist/{plot.2dvaf-D73MWO6O.js.map → plot.2dvaf-VJWPWCOY.js.map} +0 -0
  884. /package/dist/{plot.app-ZB7S6F47.js.map → plot.app-JNEOGNVW.js.map} +0 -0
  885. /package/dist/{plot.barplot-PDKH4DOC.js.map → plot.barplot-YELRBXUB.js.map} +0 -0
  886. /package/dist/{plot.boxplot-G3Z5N5CR.js.map → plot.boxplot-HNFOB3TV.js.map} +0 -0
  887. /package/dist/{plot.brainImaging-PUNPNRWL.js.map → plot.brainImaging-AZYEGF3U.js.map} +0 -0
  888. /package/dist/{plot.disco-ZHPA5JUU.js.map → plot.disco-L6PGGZJI.js.map} +0 -0
  889. /package/dist/{plot.ssgq-7AF35XL5.js.map → plot.ssgq-UM64SSXW.js.map} +0 -0
  890. /package/dist/{plot.vaf2cov-AXUYZHCK.js.map → plot.vaf2cov-DKUKJRUP.js.map} +0 -0
  891. /package/dist/{polar2-G6B2BVSV.js.map → polar2-4YHPENAV.js.map} +0 -0
  892. /package/dist/{profileForms-3SO7GP7J.js.map → profileForms-KMECFO3K.js.map} +0 -0
  893. /package/dist/{profilePlot-G2GOYAKK.js.map → profilePlot-3AXSIXCK.js.map} +0 -0
  894. /package/dist/{proteinView-AQGKZNKD.js.map → proteinView-QWHOTL35.js.map} +0 -0
  895. /package/dist/{proteomeCohortCompare-QBOSS7ND.js.map → proteomeCohortCompare-DL2QLFL3.js.map} +0 -0
  896. /package/dist/{pseudbulk.unit.spec-X2MKMEJT.js.map → pseudbulk.unit.spec-IWR7EZ7O.js.map} +0 -0
  897. /package/dist/{pseudobulk-TICKQN7I.js.map → pseudobulk-IC525IZ2.js.map} +0 -0
  898. /package/dist/{qualitative-J4FX3QBE.js.map → qualitative-LK2QEYHU.js.map} +0 -0
  899. /package/dist/{qualitative-YHQQT2DB.js.map → qualitative-YY4NQGO5.js.map} +0 -0
  900. /package/dist/{radar2-GXRNDJI2.js.map → radar2-TJUPENQF.js.map} +0 -0
  901. /package/dist/{radarFacility2-7RVTCX3Y.js.map → radarFacility2-Q7LBWLCV.js.map} +0 -0
  902. /package/dist/{rememberedGvQ.unit.spec-4PDIU5RY.js.map → rememberedGvQ.unit.spec-2GBLM5AO.js.map} +0 -0
  903. /package/dist/{render-7KXWFGS4.js.map → render-AHR6SCQX.js.map} +0 -0
  904. /package/dist/{report-5CP3CFTF.js.map → report-BPHJTRTO.js.map} +0 -0
  905. /package/dist/{sampleView-HBT7UPZG.js.map → sampleView-CS2FB3K3.js.map} +0 -0
  906. /package/dist/{samplelst-KCCHDGQM.js.map → samplelst-A3DHKP6U.js.map} +0 -0
  907. /package/dist/{samplematrix-IQHKL3KO.js.map → samplematrix-5X7MFT3G.js.map} +0 -0
  908. /package/dist/{sc-RJWUKNDH.js.map → sc-RCYXZMN6.js.map} +0 -0
  909. /package/dist/{scatter-TJAKPWG3.js.map → scatter-2ITGMX5N.js.map} +0 -0
  910. /package/dist/{scatter-LLH3KUOP.js.map → scatter-OAL4YOCA.js.map} +0 -0
  911. /package/dist/{selectGenomeWithTklst-OYII3JO3.js.map → selectGenomeWithTklst-PB5KDW2N.js.map} +0 -0
  912. /package/dist/{singleCellCellType-CSLRJYE5.js.map → singleCellCellType-FEFNOHOP.js.map} +0 -0
  913. /package/dist/{singleCellCellType.unit.spec-D6D52VTF.js.map → singleCellCellType.unit.spec-V2I32V23.js.map} +0 -0
  914. /package/dist/{singleCellGeneExpression-KSX7FQYG.js.map → singleCellGeneExpression-RUQQMKDE.js.map} +0 -0
  915. /package/dist/{singleCellGeneExpression.unit.spec-CT4GFFE4.js.map → singleCellGeneExpression.unit.spec-VCMJRMT7.js.map} +0 -0
  916. /package/dist/{singleCellNumericValue-E4JUD5JH.js.map → singleCellNumericValue-JLXZQWNT.js.map} +0 -0
  917. /package/dist/{singleCellNumericValue.unit.spec-QVVK6VK5.js.map → singleCellNumericValue.unit.spec-XVCZEN5K.js.map} +0 -0
  918. /package/dist/{singleCellPlot-7NM6ZZOE.js.map → singleCellPlot-4EBYWOJ2.js.map} +0 -0
  919. /package/dist/{singlecell-5B6WHEEN.js.map → singlecell-UKZJAYVH.js.map} +0 -0
  920. /package/dist/{singlecell-SIB4GIDJ.js.map → singlecell-VNRWPXGV.js.map} +0 -0
  921. /package/dist/{snp-I4AI2C54.js.map → snp-2RJDJQZC.js.map} +0 -0
  922. /package/dist/{snp.unit.spec-OIAKRV3Y.js.map → snp.unit.spec-Z4DNBFAH.js.map} +0 -0
  923. /package/dist/{snplocus-LQ4WUFUM.js.map → snplocus-OZLIZ7R7.js.map} +0 -0
  924. /package/dist/{snplst-QCH6JJ7S.js.map → snplst-EVRJ4OCL.js.map} +0 -0
  925. /package/dist/{spliceevent.a53ss.diagram-MZE3NFGH.js.map → spliceevent.a53ss.diagram-N5UXX4OX.js.map} +0 -0
  926. /package/dist/{spliceevent.exonskip.diagram-H6AJBIRM.js.map → spliceevent.exonskip.diagram-WBNFLW4V.js.map} +0 -0
  927. /package/dist/{spliceevent.noeventdiagram-4MCGAKBV.js.map → spliceevent.noeventdiagram-EI72A6L3.js.map} +0 -0
  928. /package/dist/{ssGSEA-YLFT44QJ.js.map → ssGSEA-NONMMNF7.js.map} +0 -0
  929. /package/dist/{ssGSEA.unit.spec-MLGJSQHA.js.map → ssGSEA.unit.spec-7JDPNLZA.js.map} +0 -0
  930. /package/dist/{stattable-GOSYPYXB.js.map → stattable-NNUHKPF4.js.map} +0 -0
  931. /package/dist/{studyCatalog-UHS2SVRZ.js.map → studyCatalog-KMLE7Q55.js.map} +0 -0
  932. /package/dist/{summarizeCnvGeneexp-HTEBFQCB.js.map → summarizeCnvGeneexp-AHCGPQLE.js.map} +0 -0
  933. /package/dist/{summarizeGeneexpSurvival-PUL5VWCR.js.map → summarizeGeneexpSurvival-NCST7HDQ.js.map} +0 -0
  934. /package/dist/{summarizeMutationCnv-PCAEMP2I.js.map → summarizeMutationCnv-VUTQYXO6.js.map} +0 -0
  935. /package/dist/{summarizeMutationDiagnosis-MJKM5AN7.js.map → summarizeMutationDiagnosis-TFU2HUHQ.js.map} +0 -0
  936. /package/dist/{summarizeMutationSurvival-CWZRGANA.js.map → summarizeMutationSurvival-F4CJILS3.js.map} +0 -0
  937. /package/dist/{summary-EI5POFSK.js.map → summary-QQZW7BEE.js.map} +0 -0
  938. /package/dist/{summary.integration.spec-2T4M4BML.js.map → summary.integration.spec-FILIPD3W.js.map} +0 -0
  939. /package/dist/{summaryInput-6GZULFH4.js.map → summaryInput-RMY226Y3.js.map} +0 -0
  940. /package/dist/{sunburst-MBWKP6SE.js.map → sunburst-Y4LNCKMR.js.map} +0 -0
  941. /package/dist/{survival-VWRXWUTC.js.map → survival-4FYQHQHX.js.map} +0 -0
  942. /package/dist/{survival-LDTOT7QH.js.map → survival-6GC267GY.js.map} +0 -0
  943. /package/dist/{survival.integration.spec-NVMZ2ZHQ.js.map → survival.integration.spec-5ERXR6MG.js.map} +0 -0
  944. /package/dist/{svg2pdf.es.min-NIFE2BIE.js.map → svg2pdf.es.min-KKHWPFWG.js.map} +0 -0
  945. /package/dist/{svgraph-VJ3Z2KQB.js.map → svgraph-XIQIA7OJ.js.map} +0 -0
  946. /package/dist/{swimmer-X3ZUO3OJ.js.map → swimmer-643B5Q6F.js.map} +0 -0
  947. /package/dist/{table-QD3574HI.js.map → table-JQIBRXTJ.js.map} +0 -0
  948. /package/dist/{termCollection-2WAA3PYS.js.map → termCollection-LU5NW6KT.js.map} +0 -0
  949. /package/dist/{termCollection-C4Y7ZBAZ.js.map → termCollection-XZCPBXRV.js.map} +0 -0
  950. /package/dist/{termCollection.unit.spec-DVRZRBIX.js.map → termCollection.unit.spec-H5LBV3N4.js.map} +0 -0
  951. /package/dist/{termCollectionFractionSelection-CXS6PV6A.js.map → termCollectionFractionSelection-3YHOFXEL.js.map} +0 -0
  952. /package/dist/{termCollectionFractionSelection.unit.spec-P3ERZKKO.js.map → termCollectionFractionSelection.unit.spec-G5X3Y5YI.js.map} +0 -0
  953. /package/dist/{tk-DVMIRU4Y.js.map → tk-NPWNBXLB.js.map} +0 -0
  954. /package/dist/{tk-RQ5SODZH.js.map → tk-YSW5NPW2.js.map} +0 -0
  955. /package/dist/{tvs.categorical-WMN357DD.js.map → tvs.categorical-TUX6KRZI.js.map} +0 -0
  956. /package/dist/{tvs.condition-5AZKVWQ5.js.map → tvs.condition-2CH25PLO.js.map} +0 -0
  957. /package/dist/{tvs.dt-ND63FJSI.js.map → tvs.dt-YKP3F75O.js.map} +0 -0
  958. /package/dist/{tvs.dtcnv.categorical-ID6ZHVUX.js.map → tvs.dtcnv.categorical-QBJWJNHZ.js.map} +0 -0
  959. /package/dist/{tvs.dtcnv.continuous-K44QAHRU.js.map → tvs.dtcnv.continuous-MV25OLBD.js.map} +0 -0
  960. /package/dist/{tvs.dtfusion-T3WIRHYK.js.map → tvs.dtfusion-SJ64HNKE.js.map} +0 -0
  961. /package/dist/{tvs.dtitd-W2SI4P2S.js.map → tvs.dtitd-WQLHZK2P.js.map} +0 -0
  962. /package/dist/{tvs.dtsnvindel-QZC2OKZN.js.map → tvs.dtsnvindel-WMFJ7W7U.js.map} +0 -0
  963. /package/dist/{tvs.dtsv-QCQXPL6B.js.map → tvs.dtsv-GKEC5OGA.js.map} +0 -0
  964. /package/dist/{tvs.multivalue-CG4JFPFT.js.map → tvs.multivalue-LFWMQETN.js.map} +0 -0
  965. /package/dist/{tvs.numeric-2NCCCV24.js.map → tvs.numeric-63NVZG7U.js.map} +0 -0
  966. /package/dist/{tvs.samplelst-52RTEKIR.js.map → tvs.samplelst-DEMMYRKK.js.map} +0 -0
  967. /package/dist/{tvs.survival-UO47FDTY.js.map → tvs.survival-M4QUVP5L.js.map} +0 -0
  968. /package/dist/{tvs.termCollection-JJECMQIS.js.map → tvs.termCollection-J367GZY3.js.map} +0 -0
  969. /package/dist/{vocabulary-QYEY72KK.js.map → vocabulary-RAVWS5IS.js.map} +0 -0
  970. /package/dist/{wsi.direct-K2OBDXDS.js.map → wsi.direct-UY3SIIAD.js.map} +0 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/svmr.unload.js", "../src/svmr.c.js", "../src/svmr.js"],
4
+ "sourcesContent": ["import { genomic2gm } from './coord'\nimport {\n\tdtitd,\n\tdtdel,\n\tdtfusionrna,\n\tdtnloss,\n\tdtcloss,\n\tmclassitd,\n\tmclassnloss,\n\tmclasscloss,\n\tmclassfusionrna\n} from '#shared/common.js'\nimport { newpane, export_data } from './client'\n\nexport function svmr_export_json(svmr, hqonly) {\n\tvar rows = []\n\tfor (const sample of svmr.samples) {\n\t\tfor (const egg of sample.egglst) {\n\t\t\tfor (const eg of egg.lst) {\n\t\t\t\tif (eg.ismsg) {\n\t\t\t\t\tconst lst = eg.lst.map(evt => evt.lst[0])\n\t\t\t\t\tif (hqonly) {\n\t\t\t\t\t\tlet hashq = false\n\t\t\t\t\t\tfor (const i of lst) {\n\t\t\t\t\t\t\tif (i.rating == 'Major') hashq = true\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (hashq) {\n\t\t\t\t\t\t\trows.push(lst)\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\trows.push(lst)\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tfor (const evt of eg.lst) {\n\t\t\t\t\t\tfor (const p of evt.lst) {\n\t\t\t\t\t\t\tif (hqonly) {\n\t\t\t\t\t\t\t\tif (p.rating == 'Major') rows.push([p])\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\trows.push([p])\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tconst lines = [],\n\t\te_itd = [],\n\t\te_nloss = [],\n\t\te_closs = []\n\tfor (const row of rows) {\n\t\tif (row.length == 1 && row[0].usepair) {\n\t\t\tconst p = row[0]\n\t\t\tif (p.isitd) {\n\t\t\t\tconst u = p.usepair\n\t\t\t\tconst gm = svmr.genome.isoformmatch(u.a.isoform, p.chrA, p.posA)\n\t\t\t\tif (!gm) {\n\t\t\t\t\te_itd.push(p.sample + ' ' + p.geneA + ' ITD (' + p.rating + '): no gene model found for ' + u.a.isoform)\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tconst exonbp1 = genomic2gm(p.posA, gm).rnapos\n\t\t\t\tconst exonbp2 = genomic2gm(p.posB, gm).rnapos\n\t\t\t\tif (exonbp1 <= exonbp2) {\n\t\t\t\t\te_itd.push(p.sample + ' ' + p.geneA + ' ITD (' + p.rating + '): negative duplication length')\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tconst itd = {\n\t\t\t\t\ttypecode: dtitd,\n\t\t\t\t\tgene: p.geneA,\n\t\t\t\t\tisoform: u.a.isoform,\n\t\t\t\t\trating: p.rating,\n\t\t\t\t\tscore: p.score,\n\t\t\t\t\tfunctioneffect: p.functioneffect,\n\t\t\t\t\trnaposition: exonbp2,\n\t\t\t\t\trnaduplength: exonbp1 - exonbp2 + 1,\n\t\t\t\t\ta: {\n\t\t\t\t\t\tchr: p.chrA,\n\t\t\t\t\t\tposition: p.posA,\n\t\t\t\t\t\tstrand: p.ortA,\n\t\t\t\t\t\tratio: p.ratioA,\n\t\t\t\t\t\tchimericreads: p.readsA,\n\t\t\t\t\t\ttotalreads: p.totalreadsA,\n\t\t\t\t\t\tmatch: p.matchA,\n\t\t\t\t\t\trepeat: p.repeatA\n\t\t\t\t\t},\n\t\t\t\t\tb: {\n\t\t\t\t\t\tchr: p.chrB,\n\t\t\t\t\t\tposition: p.posB,\n\t\t\t\t\t\tstrand: p.ortB,\n\t\t\t\t\t\tratio: p.ratioB,\n\t\t\t\t\t\tchimericreads: p.readsB,\n\t\t\t\t\t\ttotalreads: p.totalreadsB,\n\t\t\t\t\t\tmatch: p.matchB,\n\t\t\t\t\t\trepeat: p.repeatB\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// interstitial\n\t\t\t\tlet aalen = 0,\n\t\t\t\t\tbplen = 0\n\t\t\t\tif (u.a.contigaa && u.b.contigaa) {\n\t\t\t\t\taalen = u.b.contigaa - u.a.contigaa - 1\n\t\t\t\t}\n\t\t\t\tif (u.a.contigbp && u.b.contigbp) {\n\t\t\t\t\tbplen = u.b.contigbp - u.a.contigbp - 1\n\t\t\t\t}\n\t\t\t\tif (aalen > 0) {\n\t\t\t\t\titd.interstitial = { aalen: aalen }\n\t\t\t\t}\n\t\t\t\tif (bplen > 0) {\n\t\t\t\t\tif (!itd.interstitial) itd.interstitial = {}\n\t\t\t\t\titd.interstitial.bplen = bplen\n\t\t\t\t}\n\t\t\t\tlines.push([p.sample, p.geneA, p.usepair.a.isoform, JSON.stringify(itd)])\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif (p.isnloss) {\n\t\t\t\tconst p2 = p.usepair.b\n\t\t\t\tif (!p2.isoform) {\n\t\t\t\t\te_nloss.push(p.sample + ' ' + p.geneB + ' NLoss (' + p.rating + '): no isoform')\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tconst gm = svmr.genome.isoformmatch(p2.isoform, p.chrB, p.posB)\n\t\t\t\tif (!gm) {\n\t\t\t\t\te_nloss.push(p.sample + ' ' + p.geneB + ' NLoss (' + p.rating + '): no gene model found for ' + p2.isoform)\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tconst exonbp = genomic2gm(p.posB, gm).rnapos\n\t\t\t\tconst pp = {\n\t\t\t\t\ttypecode: dtnloss,\n\t\t\t\t\tgene: p.geneB,\n\t\t\t\t\tisoform: p2.isoform,\n\t\t\t\t\trating: p.rating,\n\t\t\t\t\tscore: p.score,\n\t\t\t\t\tfunctioneffect: p.functioneffect,\n\t\t\t\t\trnaposition: exonbp,\n\t\t\t\t\tchr: p.chrB,\n\t\t\t\t\tposition: p.posB,\n\t\t\t\t\tstrand: p.ortB,\n\t\t\t\t\tratio: p.ratioB,\n\t\t\t\t\tchimericreads: p.readsB,\n\t\t\t\t\tmatch: p.matchB,\n\t\t\t\t\trepeat: p.repeatB,\n\t\t\t\t\tpartner: {\n\t\t\t\t\t\tchr: p.chrA,\n\t\t\t\t\t\tposition: p.posA,\n\t\t\t\t\t\tstrand: p.ortA,\n\t\t\t\t\t\tratio: p.ratioA,\n\t\t\t\t\t\tchimericreads: p.readsA,\n\t\t\t\t\t\tmatch: p.matchA,\n\t\t\t\t\t\trepeat: p.repeatA\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (p.geneA) {\n\t\t\t\t\tpp.partner.gene = p.geneA\n\t\t\t\t}\n\t\t\t\tif (p.usepair.a.isoform) {\n\t\t\t\t\tpp.partner.isoform = p.usepair.a.isoform\n\t\t\t\t}\n\t\t\t\tlines.push([p.sample, p.geneB, p2.isoform, JSON.stringify(pp)])\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif (p.iscloss) {\n\t\t\t\tconst p2 = p.usepair.a\n\t\t\t\tif (!p2.isoform) {\n\t\t\t\t\te_nloss.push(p.sample + ' ' + p.geneA + ' CLoss (' + p.rating + '): no isoform')\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tconst gm = svmr.genome.isoformmatch(p2.isoform, p.chrA, p.posA)\n\t\t\t\tif (!gm) {\n\t\t\t\t\te_nloss.push(p.sample + ' ' + p.geneA + ' CLoss (' + p.rating + '): no gene model found by ' + p2.isoform)\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tconst exonbp = genomic2gm(p.posA, gm).rnapos\n\t\t\t\tconst pp = {\n\t\t\t\t\ttypecode: dtcloss,\n\t\t\t\t\tgene: p.geneA,\n\t\t\t\t\tisoform: p2.isoform,\n\t\t\t\t\trating: p.rating,\n\t\t\t\t\tscore: p.score,\n\t\t\t\t\tfunctioneffect: p.functioneffect,\n\t\t\t\t\trnaposition: exonbp,\n\t\t\t\t\tchr: p.chrA,\n\t\t\t\t\tposition: p.posA,\n\t\t\t\t\tstrand: p.ortA,\n\t\t\t\t\tratio: p.ratioA,\n\t\t\t\t\tchimericreads: p.readsA,\n\t\t\t\t\tmatch: p.matchA,\n\t\t\t\t\trepeat: p.repeatA,\n\t\t\t\t\tpartner: {\n\t\t\t\t\t\tchr: p.chrB,\n\t\t\t\t\t\tposition: p.posB,\n\t\t\t\t\t\tstrand: p.ortB,\n\t\t\t\t\t\tratio: p.ratioB,\n\t\t\t\t\t\tchimericreads: p.readsB,\n\t\t\t\t\t\tmatch: p.matchB,\n\t\t\t\t\t\trepeat: p.repeatB\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (p.geneB) {\n\t\t\t\t\tpp.partner.gene = p.geneB\n\t\t\t\t}\n\t\t\t\tif (p.usepair.b.isoform) {\n\t\t\t\t\tpp.partner.isoform = p.usepair.b.isoform\n\t\t\t\t}\n\t\t\t\tlines.push([p.sample, p.geneA, p2.isoform, JSON.stringify(pp)])\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\t\tconst genes = new Set(),\n\t\t\tisoforms = new Set(),\n\t\t\tcleanup = []\n\t\tfor (const p of row) {\n\t\t\tif (p.geneA) genes.add(p.geneA)\n\t\t\tif (p.geneB) genes.add(p.geneB)\n\t\t\tif (p.usepair) {\n\t\t\t\tif (p.usepair.a.isoform) isoforms.add(p.usepair.a.isoform)\n\t\t\t\tif (p.usepair.b.isoform) isoforms.add(p.usepair.b.isoform)\n\t\t\t}\n\t\t\tconst clean = {\n\t\t\t\ttype: p.type,\n\t\t\t\ttype2: p.type2,\n\t\t\t\trating: p.rating,\n\t\t\t\tscore: p.score,\n\t\t\t\tfunctioneffect: p.functioneffect,\n\t\t\t\ta: {\n\t\t\t\t\tname: p.geneA,\n\t\t\t\t\tchr: p.chrA,\n\t\t\t\t\tposition: p.posA,\n\t\t\t\t\tstrand: p.ortA,\n\t\t\t\t\tratio: p.ratioA,\n\t\t\t\t\tfeature: p.featureA,\n\t\t\t\t\tchimericreads: p.readsA,\n\t\t\t\t\tcontiglen: p.matchA,\n\t\t\t\t\trepeatscore: p.repeatA\n\t\t\t\t},\n\t\t\t\tb: {\n\t\t\t\t\tname: p.geneB,\n\t\t\t\t\tchr: p.chrB,\n\t\t\t\t\tposition: p.posB,\n\t\t\t\t\tstrand: p.ortB,\n\t\t\t\t\tratio: p.ratioB,\n\t\t\t\t\tfeature: p.featureB,\n\t\t\t\t\tchimericreads: p.readsB,\n\t\t\t\t\tcontiglen: p.matchB,\n\t\t\t\t\trepeatscore: p.repeatB\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (p.usepair) {\n\t\t\t\tconst u = p.usepair\n\t\t\t\tclean.frame = u.frame\n\t\t\t\tif (u.a.isoform) {\n\t\t\t\t\tclean.a.isoform = u.a.isoform\n\t\t\t\t}\n\t\t\t\tif (u.b.isoform) {\n\t\t\t\t\tclean.b.isoform = u.b.isoform\n\t\t\t\t}\n\t\t\t\t/*\n\t\t\t\tclean.a.exon=u.a.exon\n\t\t\t\tclean.b.exon=u.b.exon\n\t\t\t\tclean.a.codon=u.a.codon\n\t\t\t\tclean.b.codon=u.b.codon\n\t\t\t\t*/\n\t\t\t\t// interstitial\n\t\t\t\tlet aalen = 0,\n\t\t\t\t\tbplen = 0\n\t\t\t\tif (u.a.contigaa && u.b.contigaa) {\n\t\t\t\t\taalen = u.b.contigaa - u.a.contigaa - 1\n\t\t\t\t}\n\t\t\t\tif (u.a.contigbp && u.b.contigbp) {\n\t\t\t\t\tbplen = u.b.contigbp - u.a.contigbp - 1\n\t\t\t\t}\n\t\t\t\tif (aalen > 0) {\n\t\t\t\t\tclean.interstitial = { aalen: aalen }\n\t\t\t\t}\n\t\t\t\tif (bplen > 0) {\n\t\t\t\t\tif (!clean.interstitial) clean.interstitial = {}\n\t\t\t\t\tclean.interstitial.bplen = bplen\n\t\t\t\t}\n\t\t\t}\n\t\t\tcleanup.push(clean)\n\t\t}\n\t\tconst genenames = [...genes]\n\t\tconst isoformnames = [...isoforms]\n\t\tlines.push([\n\t\t\trow[0].sample,\n\t\t\tgenenames.length ? genenames.join(',') : 'none',\n\t\t\tisoformnames.length ? isoformnames.join(',') : 'none',\n\t\t\tJSON.stringify(cleanup)\n\t\t])\n\t}\n\tif (e_itd.length) {\n\t\tsvmr.err(e_itd.join('<br>'))\n\t}\n\tif (e_nloss.length) {\n\t\tsvmr.err(e_nloss.join('<br>'))\n\t}\n\tif (e_closs.length) {\n\t\tsvmr.err(e_closs.join('<br>'))\n\t}\n\texport_data('Fusion data from ' + svmr.filename, [{ text: lines.map(i => i.join('\\t')).join('\\n') }])\n}\n\nexport function svmr_2pp(svmr, hqonly) {\n\tconst rows = []\n\tfor (const sample of svmr.samples) {\n\t\tfor (const egg of sample.egglst) {\n\t\t\tfor (const eg of egg.lst) {\n\t\t\t\tif (eg.ismsg) {\n\t\t\t\t\tconst lst = eg.lst.map(evt => evt.lst[0])\n\t\t\t\t\tif (hqonly) {\n\t\t\t\t\t\tlet hashq = false\n\t\t\t\t\t\tfor (const i of lst) {\n\t\t\t\t\t\t\tif (i.rating == 'Major') hashq = true\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (hashq) {\n\t\t\t\t\t\t\trows.push(lst)\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\trows.push(lst)\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tfor (const evt of eg.lst) {\n\t\t\t\t\t\tfor (const p of evt.lst) {\n\t\t\t\t\t\t\tif (hqonly) {\n\t\t\t\t\t\t\t\tif (p.rating == 'Major') rows.push([p])\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\trows.push([p])\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tconst genes = {},\n\t\t// k: symbol, original case, will be converted to upper case later\n\t\te_itd = [],\n\t\te_nloss = [],\n\t\te_closs = []\n\tfor (const row of rows) {\n\t\tif (row.length == 1 && row[0].usepair) {\n\t\t\tconst p = row[0]\n\t\t\tif (p.isitd) {\n\t\t\t\tif (!p.geneA) {\n\t\t\t\t\te_itd.push(p.sample + ' ITD (' + p.rating + '): no gene name??')\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tconst u = p.usepair\n\t\t\t\tconst gm = svmr.genome.isoformmatch(u.a.isoform, p.chrA, p.posA)\n\t\t\t\tif (!gm) {\n\t\t\t\t\te_itd.push(p.sample + ' ' + p.geneA + ' ITD (' + p.rating + '): no gene model found for ' + u.a.isoform)\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tconst exonbp1 = genomic2gm(p.posA, gm).rnapos\n\t\t\t\tconst exonbp2 = genomic2gm(p.posB, gm).rnapos\n\t\t\t\tif (exonbp1 <= exonbp2) {\n\t\t\t\t\te_itd.push(p.sample + ' ' + p.geneA + ' ITD (' + p.rating + '): negative duplication length')\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tconst itd = {\n\t\t\t\t\tdt: dtitd,\n\t\t\t\t\tclass: mclassitd,\n\t\t\t\t\tmname: 'ITD',\n\t\t\t\t\tgene: p.geneA,\n\t\t\t\t\tsample: p.sample,\n\t\t\t\t\tisoform: u.a.isoform,\n\t\t\t\t\trating: p.rating,\n\t\t\t\t\tscore: p.score,\n\t\t\t\t\tfunctioneffect: p.functioneffect,\n\t\t\t\t\trnaposition: exonbp2,\n\t\t\t\t\trnaduplength: exonbp1 - exonbp2 + 1,\n\t\t\t\t\ta: {\n\t\t\t\t\t\tchr: p.chrA,\n\t\t\t\t\t\tposition: p.posA,\n\t\t\t\t\t\tstrand: p.ortA,\n\t\t\t\t\t\tratio: p.ratioA,\n\t\t\t\t\t\tchimericreads: p.readsA,\n\t\t\t\t\t\ttotalreads: p.totalreadsA,\n\t\t\t\t\t\tmatch: p.matchA,\n\t\t\t\t\t\trepeat: p.repeatA\n\t\t\t\t\t},\n\t\t\t\t\tb: {\n\t\t\t\t\t\tchr: p.chrB,\n\t\t\t\t\t\tposition: p.posB,\n\t\t\t\t\t\tstrand: p.ortB,\n\t\t\t\t\t\tratio: p.ratioB,\n\t\t\t\t\t\tchimericreads: p.readsB,\n\t\t\t\t\t\ttotalreads: p.totalreadsB,\n\t\t\t\t\t\tmatch: p.matchB,\n\t\t\t\t\t\trepeat: p.repeatB\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// interstitial\n\t\t\t\tlet aalen = 0,\n\t\t\t\t\tbplen = 0\n\t\t\t\tif (u.a.contigaa && u.b.contigaa) {\n\t\t\t\t\taalen = u.b.contigaa - u.a.contigaa - 1\n\t\t\t\t}\n\t\t\t\tif (u.a.contigbp && u.b.contigbp) {\n\t\t\t\t\tbplen = u.b.contigbp - u.a.contigbp - 1\n\t\t\t\t}\n\t\t\t\tif (aalen > 0) {\n\t\t\t\t\titd.interstitial = { aalen: aalen }\n\t\t\t\t}\n\t\t\t\tif (bplen > 0) {\n\t\t\t\t\tif (!itd.interstitial) itd.interstitial = {}\n\t\t\t\t\titd.interstitial.bplen = bplen\n\t\t\t\t}\n\t\t\t\tif (!(p.geneA in genes)) {\n\t\t\t\t\tgenes[p.geneA] = []\n\t\t\t\t}\n\t\t\t\tgenes[p.geneA].push(itd)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif (p.isnloss) {\n\t\t\t\tif (!p.geneB) {\n\t\t\t\t\te_nloss.push(p.sample + ' NLoss (' + p.rating + '): no geneB')\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tconst p2 = p.usepair.b\n\t\t\t\tif (!p2.isoform) {\n\t\t\t\t\te_nloss.push(p.sample + ' ' + p.geneB + ' NLoss (' + p.rating + '): no isoform')\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tconst gm = svmr.genome.isoformmatch(p2.isoform, p.chrB, p.posB)\n\t\t\t\tif (!gm) {\n\t\t\t\t\te_nloss.push(p.sample + ' ' + p.geneB + ' NLoss (' + p.rating + '): no gene model found for ' + p2.isoform)\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tconst exonbp = genomic2gm(p.posB, gm).rnapos\n\t\t\t\tconst pp = {\n\t\t\t\t\tdt: dtnloss,\n\t\t\t\t\tclass: mclassnloss,\n\t\t\t\t\tmname: 'N-loss',\n\t\t\t\t\tgene: p.geneB,\n\t\t\t\t\tsample: p.sample,\n\t\t\t\t\tisoform: p2.isoform,\n\t\t\t\t\trating: p.rating,\n\t\t\t\t\tscore: p.score,\n\t\t\t\t\tfunctioneffect: p.functioneffect,\n\t\t\t\t\trnaposition: exonbp,\n\t\t\t\t\tchr: p.chrB,\n\t\t\t\t\tposition: p.posB,\n\t\t\t\t\tstrand: p.ortB,\n\t\t\t\t\tratio: p.ratioB,\n\t\t\t\t\tchimericreads: p.readsB,\n\t\t\t\t\tmatch: p.matchB,\n\t\t\t\t\trepeat: p.repeatB,\n\t\t\t\t\tpartner: {\n\t\t\t\t\t\tchr: p.chrA,\n\t\t\t\t\t\tposition: p.posA,\n\t\t\t\t\t\tstrand: p.ortA,\n\t\t\t\t\t\tratio: p.ratioA,\n\t\t\t\t\t\tchimericreads: p.readsA,\n\t\t\t\t\t\tmatch: p.matchA,\n\t\t\t\t\t\trepeat: p.repeatA\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (p.geneA) {\n\t\t\t\t\tpp.partner.gene = p.geneA\n\t\t\t\t}\n\t\t\t\tif (p.usepair.a.isoform) {\n\t\t\t\t\tpp.partner.isoform = p.usepair.a.isoform\n\t\t\t\t}\n\t\t\t\tif (!(p.geneB in genes)) {\n\t\t\t\t\tgenes[p.geneB] = []\n\t\t\t\t}\n\t\t\t\tgenes[p.geneB].push(pp)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif (p.iscloss) {\n\t\t\t\tif (!p.geneA) {\n\t\t\t\t\te_closs.push(p.sample + ' CLoss (' + p.rating + '): no geneA')\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tconst p2 = p.usepair.a\n\t\t\t\tif (!p2.isoform) {\n\t\t\t\t\te_closs.push(p.sample + ' ' + p.geneA + ' CLoss (' + p.rating + '): no isoform')\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tconst gm = svmr.genome.isoformmatch(p2.isoform, p.chrA, p.posA)\n\t\t\t\tif (!gm) {\n\t\t\t\t\te_closs.push(p.sample + ' ' + p.geneA + ' CLoss (' + p.rating + '): no gene model found by ' + p2.isoform)\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tconst exonbp = genomic2gm(p.posA, gm).rnapos\n\t\t\t\tconst pp = {\n\t\t\t\t\tdt: dtcloss,\n\t\t\t\t\tclass: mclasscloss,\n\t\t\t\t\tmname: 'C-loss',\n\t\t\t\t\tgene: p.geneA,\n\t\t\t\t\tsample: p.sample,\n\t\t\t\t\tisoform: p2.isoform,\n\t\t\t\t\trating: p.rating,\n\t\t\t\t\tscore: p.score,\n\t\t\t\t\tfunctioneffect: p.functioneffect,\n\t\t\t\t\trnaposition: exonbp,\n\t\t\t\t\tchr: p.chrA,\n\t\t\t\t\tposition: p.posA,\n\t\t\t\t\tstrand: p.ortA,\n\t\t\t\t\tratio: p.ratioA,\n\t\t\t\t\tchimericreads: p.readsA,\n\t\t\t\t\tmatch: p.matchA,\n\t\t\t\t\trepeat: p.repeatA,\n\t\t\t\t\tpartner: {\n\t\t\t\t\t\tchr: p.chrB,\n\t\t\t\t\t\tposition: p.posB,\n\t\t\t\t\t\tstrand: p.ortB,\n\t\t\t\t\t\tratio: p.ratioB,\n\t\t\t\t\t\tchimericreads: p.readsB,\n\t\t\t\t\t\tmatch: p.matchB,\n\t\t\t\t\t\trepeat: p.repeatB\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (p.geneB) {\n\t\t\t\t\tpp.partner.gene = p.geneB\n\t\t\t\t}\n\t\t\t\tif (p.usepair.b.isoform) {\n\t\t\t\t\tpp.partner.isoform = p.usepair.b.isoform\n\t\t\t\t}\n\t\t\t\tif (!(p.geneA in genes)) {\n\t\t\t\t\tgenes[p.geneA] = []\n\t\t\t\t}\n\t\t\t\tgenes[p.geneA].push(pp)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\t\t// regular fusions\n\t\tconst gene2isoform = new Map() // gene -> isoform\n\t\tconst cleanup = []\n\t\tfor (const p of row) {\n\t\t\tif (p.geneA) {\n\t\t\t\tif (!gene2isoform.has(p.geneA)) gene2isoform.set(p.geneA, new Set())\n\t\t\t\tif (p.usepair) {\n\t\t\t\t\tif (p.usepair.a.isoform) gene2isoform.get(p.geneA).add(p.usepair.a.isoform)\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (p.geneB) {\n\t\t\t\tif (!gene2isoform.has(p.geneB)) gene2isoform.set(p.geneB, new Set())\n\t\t\t\tif (p.usepair) {\n\t\t\t\t\tif (p.usepair.b.isoform) gene2isoform.get(p.geneB).add(p.usepair.b.isoform)\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst clean = {\n\t\t\t\ttype: p.type,\n\t\t\t\ttype2: p.type2,\n\t\t\t\trating: p.rating,\n\t\t\t\tscore: p.score,\n\t\t\t\tfunctioneffect: p.functioneffect,\n\t\t\t\ta: {\n\t\t\t\t\tname: p.geneA,\n\t\t\t\t\tchr: p.chrA,\n\t\t\t\t\tposition: p.posA,\n\t\t\t\t\tstrand: p.ortA,\n\t\t\t\t\tratio: p.ratioA,\n\t\t\t\t\tfeature: p.featureA,\n\t\t\t\t\tchimericreads: p.readsA,\n\t\t\t\t\tcontiglen: p.matchA,\n\t\t\t\t\trepeatscore: p.repeatA\n\t\t\t\t},\n\t\t\t\tb: {\n\t\t\t\t\tname: p.geneB,\n\t\t\t\t\tchr: p.chrB,\n\t\t\t\t\tposition: p.posB,\n\t\t\t\t\tstrand: p.ortB,\n\t\t\t\t\tratio: p.ratioB,\n\t\t\t\t\tfeature: p.featureB,\n\t\t\t\t\tchimericreads: p.readsB,\n\t\t\t\t\tcontiglen: p.matchB,\n\t\t\t\t\trepeatscore: p.repeatB\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (p.usepair) {\n\t\t\t\tconst u = p.usepair\n\t\t\t\tclean.frame = u.frame\n\t\t\t\tif (u.a.isoform) {\n\t\t\t\t\tclean.a.isoform = u.a.isoform\n\t\t\t\t}\n\t\t\t\tif (u.b.isoform) {\n\t\t\t\t\tclean.b.isoform = u.b.isoform\n\t\t\t\t}\n\t\t\t\t/*\n\t\t\t\tclean.a.exon=u.a.exon\n\t\t\t\tclean.b.exon=u.b.exon\n\t\t\t\tclean.a.codon=u.a.codon\n\t\t\t\tclean.b.codon=u.b.codon\n\t\t\t\t*/\n\t\t\t\t// interstitial\n\t\t\t\tlet aalen = 0,\n\t\t\t\t\tbplen = 0\n\t\t\t\tif (u.a.contigaa && u.b.contigaa) {\n\t\t\t\t\taalen = u.b.contigaa - u.a.contigaa - 1\n\t\t\t\t}\n\t\t\t\tif (u.a.contigbp && u.b.contigbp) {\n\t\t\t\t\tbplen = u.b.contigbp - u.a.contigbp - 1\n\t\t\t\t}\n\t\t\t\tif (aalen > 0) {\n\t\t\t\t\tclean.interstitial = { aalen: aalen }\n\t\t\t\t}\n\t\t\t\tif (bplen > 0) {\n\t\t\t\t\tif (!clean.interstitial) clean.interstitial = {}\n\t\t\t\t\tclean.interstitial.bplen = bplen\n\t\t\t\t}\n\t\t\t}\n\t\t\tcleanup.push(clean)\n\t\t}\n\t\tfor (const [genename, iset] of gene2isoform) {\n\t\t\tfor (const isoform of iset) {\n\t\t\t\tif (!(genename in genes)) {\n\t\t\t\t\tgenes[genename] = []\n\t\t\t\t}\n\t\t\t\tconst pp = {\n\t\t\t\t\tdt: dtfusionrna,\n\t\t\t\t\tclass: mclassfusionrna,\n\t\t\t\t\tsample: row[0].sample,\n\t\t\t\t\tisoform: isoform,\n\t\t\t\t\tpairlst: duplicate(cleanup)\n\t\t\t\t}\n\t\t\t\t// functional effect is offered on individual breakpoints which does not make sense, should be placed on the entire product\n\t\t\t\tfor (const i of cleanup) {\n\t\t\t\t\tif (i.functioneffect) {\n\t\t\t\t\t\tpp.functioneffect = i.functioneffect\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tgenes[genename].push(pp)\n\t\t\t}\n\t\t}\n\t}\n\tif (e_itd.length) {\n\t\tsvmr.err(e_itd.join('<br>'))\n\t}\n\tif (e_nloss.length) {\n\t\tsvmr.err(e_nloss.join('<br>'))\n\t}\n\tif (e_closs.length) {\n\t\tsvmr.err(e_closs.join('<br>'))\n\t}\n\tlet genecount = 0,\n\t\tgenesup = {}\n\tfor (const k in genes) {\n\t\tgenecount++\n\t\tgenesup[k.toUpperCase()] = genes[k]\n\t}\n\tif (genecount == 0) {\n\t\talert('No data can be added.')\n\t\treturn\n\t}\n\t// to datasets\n\tlet ds = null\n\tfor (const n in svmr.genome.datasets) {\n\t\tif (svmr.genome.datasets[n].svmrid == svmr.id) {\n\t\t\tds = svmr.genome.datasets[n]\n\t\t\tbreak\n\t\t}\n\t}\n\tif (ds) {\n\t\t// update existing\n\t\tds.bulkdata = genesup\n\t} else {\n\t\t// create new\n\t\tds = {\n\t\t\tlabel: svmr.filename,\n\t\t\tsvmrid: svmr.id,\n\t\t\tbulkdata: genesup\n\t\t}\n\t\tsvmr.genome.datasets[svmr.filename] = ds\n\t}\n\tif (svmr.cohort) {\n\t\tsvmr.cohortpane.pane.remove()\n\t} else {\n\t\tsvmr.cohort = {\n\t\t\tname: svmr.filename,\n\t\t\tgenome: svmr.genome,\n\t\t\tshow_genetable: 1,\n\t\t\tjwt: svmr.jwt,\n\t\t\tdsset: {}\n\t\t}\n\t\tsvmr.cohort.dsset[svmr.filename] = ds\n\t}\n\tconst pane = newpane({ x: 200, y: 200 })\n\n\timport('./tp.ui').then(p => {\n\t\tp.default(svmr.cohort, pane.body, svmr.hostURL)\n\t\tsvmr.cohortpane = pane\n\t})\n}\n\nexport function svmr_export_text(svmr, hqonly) {\n\tconst rows = []\n\tconst headerlst = svmr.atlst.map(i => i.label)\n\t// new fields\n\theaderlst.push('transcript_nbr')\n\theaderlst.push('breakpoint_nbr')\n\theaderlst.push('functionalClass')\n\tfor (const sample of svmr.samples) {\n\t\tconst whole = []\n\t\tfor (const egg of sample.egglst) {\n\t\t\tfor (const eg of egg.lst) {\n\t\t\t\tif (eg.ismsg) {\n\t\t\t\t\tconst lst = eg.lst.map(evt => evt.lst[0])\n\t\t\t\t\tif (hqonly) {\n\t\t\t\t\t\tlet hashq = false\n\t\t\t\t\t\tfor (const i of lst) {\n\t\t\t\t\t\t\tif (i.rating == 'Major') hashq = true\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (hashq) {\n\t\t\t\t\t\t\twhole.push(lst)\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\twhole.push(lst)\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tfor (const evt of eg.lst) {\n\t\t\t\t\t\tfor (const p of evt.lst) {\n\t\t\t\t\t\t\tif (hqonly) {\n\t\t\t\t\t\t\t\tif (p.rating == 'Major') whole.push([p])\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\twhole.push([p])\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tfor (let gid = 0; gid < whole.length; gid++) {\n\t\t\tfor (let prodid = 0; prodid < whole[gid].length; prodid++) {\n\t\t\t\tlet prod = whole[gid][prodid]\n\t\t\t\tconst frame = [],\n\t\t\t\t\ta_isoform = [],\n\t\t\t\t\ta_codon = [],\n\t\t\t\t\ta_exon = [],\n\t\t\t\t\ta_anchor = [],\n\t\t\t\t\ta_contigaa = [],\n\t\t\t\t\ta_contigbp = [],\n\t\t\t\t\tb_isoform = [],\n\t\t\t\t\tb_codon = [],\n\t\t\t\t\tb_exon = [],\n\t\t\t\t\tb_anchor = [],\n\t\t\t\t\tb_contigaa = [],\n\t\t\t\t\tb_contigbp = []\n\t\t\t\tfor (const p of prod.pairs) {\n\t\t\t\t\tframe.push(p.frame)\n\t\t\t\t\ta_isoform.push(p.a.isoform)\n\t\t\t\t\tb_isoform.push(p.b.isoform)\n\t\t\t\t\tlet v = p.a.codon\n\t\t\t\t\ta_codon.push(Number.isNaN(v) ? '' : v)\n\t\t\t\t\tv = p.b.codon\n\t\t\t\t\tb_codon.push(Number.isNaN(v) ? '' : v)\n\t\t\t\t\tv = p.a.exon\n\t\t\t\t\ta_exon.push(Number.isNaN(v) ? '' : v)\n\t\t\t\t\tv = p.b.exon\n\t\t\t\t\tb_exon.push(Number.isNaN(v) ? '' : v)\n\t\t\t\t\ta_anchor.push(p.a.anchor ? p.a.anchor : '')\n\t\t\t\t\tb_anchor.push(p.b.anchor ? p.b.anchor : '')\n\t\t\t\t\tv = p.a.contigaa\n\t\t\t\t\ta_contigaa.push(v == undefined ? '' : v)\n\t\t\t\t\tv = p.b.contigaa\n\t\t\t\t\tb_contigaa.push(v == undefined ? '' : v)\n\t\t\t\t\tv = p.a.contigbp\n\t\t\t\t\ta_contigbp.push(v == undefined ? '' : v)\n\t\t\t\t\tv = p.b.contigbp\n\t\t\t\t\tb_contigbp.push(v == undefined ? '' : v)\n\t\t\t\t}\n\t\t\t\tconst row = []\n\t\t\t\tfor (const i of svmr.atlst) {\n\t\t\t\t\tswitch (i.key) {\n\t\t\t\t\t\tcase 'lstframe':\n\t\t\t\t\t\t\trow.push(frame.join(','))\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t// A\n\t\t\t\t\t\tcase 'lstisoforma':\n\t\t\t\t\t\t\trow.push(a_isoform.join(','))\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\tcase 'lstisoformacodon':\n\t\t\t\t\t\t\trow.push(a_codon.join(','))\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\tcase 'lstisoformaexon':\n\t\t\t\t\t\t\trow.push(a_exon.join(','))\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\tcase 'lstisoformaanchor':\n\t\t\t\t\t\t\trow.push(a_anchor.join(','))\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\tcase 'lstcontigaaA':\n\t\t\t\t\t\t\trow.push(a_contigaa.join(','))\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\tcase 'lstcontigbpA':\n\t\t\t\t\t\t\trow.push(a_contigbp.join(','))\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t// B\n\t\t\t\t\t\tcase 'lstisoformb':\n\t\t\t\t\t\t\trow.push(b_isoform.join(','))\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\tcase 'lstisoformbcodon':\n\t\t\t\t\t\t\trow.push(b_codon.join(','))\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\tcase 'lstisoformbexon':\n\t\t\t\t\t\t\trow.push(b_exon.join(','))\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\tcase 'lstisoformbanchor':\n\t\t\t\t\t\t\trow.push(b_anchor.join(','))\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\tcase 'lstcontigaaB':\n\t\t\t\t\t\t\trow.push(b_contigaa.join(','))\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\tcase 'lstcontigbpB':\n\t\t\t\t\t\t\trow.push(b_contigbp.join(','))\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\trow.push(prod[i.key])\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// new field - multi seg group\n\t\t\t\trow.push(gid + 1)\n\t\t\t\trow.push(prodid + 1)\n\t\t\t\t// new field - function effect\n\t\t\t\trow.push(prod.functioneffect ? prod.functioneffect : '')\n\t\t\t\trows.push(row)\n\t\t\t}\n\t\t}\n\t}\n\texport_data('Fusion data from ' + svmr.filename, [{ text: headerlst.join('\\t') + '\\n' + rows.join('\\n') }])\n}\n\nfunction duplicate(i) {\n\tconst lst = []\n\tfor (const j of i) {\n\t\tconst k = {}\n\t\tfor (const n in j) k[n] = j[n]\n\t\tk.a = {}\n\t\tfor (const n in j.a) k.a[n] = j.a[n]\n\t\tk.b = {}\n\t\tfor (const n in j.b) k.b[n] = j.b[n]\n\t\tif (j.interstitial) {\n\t\t\tk.interstitial = {}\n\t\t\tfor (const n in j.interstitial) k.interstitial[n] = j.interstitial[n]\n\t\t}\n\t\tlst.push(k)\n\t}\n\treturn lst\n}\n", "import { select as d3select } from 'd3-selection'\nimport * as client from './client'\nimport { genomic2gm } from './coord'\nimport { bplen as bplength } from '#shared/common.js'\nimport * as unload from './svmr.unload'\nimport { scaleLinear } from 'd3-scale'\nimport { axisTop } from 'd3-axis'\nimport { Menu } from '../dom/menu'\n\nconst genomelimit = 10000 // bp distance\nconst knownprod_c = '#A702C4'\nconst tip = new Menu()\n\nexport default class {\n\tconstructor(genome, atlst, items, filename, holder, hostURL, jwt) {\n\t\twindow.svmr = this\n\n\t\tthis.hostURL = hostURL\n\t\tthis.jwt = jwt\n\t\tthis.id = Math.random()\n\t\tthis.items = items\n\t\tthis.genome = genome\n\t\tthis.filename = filename\n\t\tthis.atlst = atlst\n\t\t;(this.cf_repeat = 0.7), (this.cf_reads = 2)\n\t\tthis.cf_match = 40\n\t\tthis.cf_ratio = 0.01\n\t\tthis.expression = {}\n\t\tthis.samples = []\n\t\tthis.genelst = []\n\t\tthis.elab2sample = {} // for detecting recurrence, only when geneA/B are valid\n\n\t\tif (!holder) {\n\t\t\tconst pane = client.newpane({ x: 100, y: 100, toshrink: true })\n\t\t\tpane.header.append('span').style('color', '#858585').style('font-size', '.7em').html('Fusion Editor&nbsp;')\n\t\t\tpane.header.append('span').text(filename)\n\t\t\tholder = pane.body\n\t\t}\n\t\tthis.holder = holder\n\t\tthis.errdiv = holder.append('div').style('width', '500px').style('margin', '10px')\n\t\tconst butrow = holder.append('div').style('margin', '20px').style('padding', '0px')\n\t\tthis.buttgene = butrow\n\t\t\t.append('button')\n\t\t\t.text('Loading genes')\n\t\t\t.on('click', () => {\n\t\t\t\tif (genediv.style('display') == 'none') {\n\t\t\t\t\tclient.appear(genediv)\n\t\t\t\t} else {\n\t\t\t\t\tclient.disappear(genediv)\n\t\t\t\t}\n\t\t\t})\n\t\tthis.buttsample = butrow\n\t\t\t.append('button')\n\t\t\t.text('Loading samples')\n\t\t\t.on('click', () => {\n\t\t\t\tif (this.ul.style('display') == 'none') {\n\t\t\t\t\tclient.appear(this.ul)\n\t\t\t\t} else {\n\t\t\t\t\tclient.disappear(this.ul)\n\t\t\t\t}\n\t\t\t})\n\t\tbutrow\n\t\t\t.append('button')\n\t\t\t.text('Gene expression')\n\t\t\t.on('click', () => {\n\t\t\t\tif (this.expression.div.style('display') == 'none') {\n\t\t\t\t\tclient.appear(this.expression.div)\n\t\t\t\t} else {\n\t\t\t\t\tclient.disappear(this.expression.div)\n\t\t\t\t}\n\t\t\t})\n\t\tbutrow\n\t\t\t.append('button')\n\t\t\t.text('Parameter cutoff')\n\t\t\t.on('click', () => {\n\t\t\t\tif (cutoffdiv.style('display') == 'none') {\n\t\t\t\t\tclient.appear(cutoffdiv)\n\t\t\t\t} else {\n\t\t\t\t\tclient.disappear(cutoffdiv)\n\t\t\t\t}\n\t\t\t})\n\t\tbutrow\n\t\t\t.append('button')\n\t\t\t.text('Legend')\n\t\t\t.on('click', () => {\n\t\t\t\tif (legenddiv.style('display') == 'none') {\n\t\t\t\t\tclient.appear(legenddiv)\n\t\t\t\t} else {\n\t\t\t\t\tclient.disappear(legenddiv)\n\t\t\t\t}\n\t\t\t})\n\t\tbutrow\n\t\t\t.append('button')\n\t\t\t.style('margin-right', '20px')\n\t\t\t.text('Export data')\n\t\t\t.on('click', event => {\n\t\t\t\t// in fact, using Major instead of HQ\n\t\t\t\tlet single_hq = 0,\n\t\t\t\t\tmulti_hq = 0,\n\t\t\t\t\tsingle_nhq = 0,\n\t\t\t\t\tmulti_nhq = 0,\n\t\t\t\t\titd_hq = 0,\n\t\t\t\t\titd_nhq = 0,\n\t\t\t\t\ttrunc_hq = 0,\n\t\t\t\t\ttrunc_nhq = 0\n\t\t\t\tfor (const sample of this.samples) {\n\t\t\t\t\tfor (const egg of sample.egglst) {\n\t\t\t\t\t\tfor (const eg of egg.lst) {\n\t\t\t\t\t\t\tif (eg.ismsg) {\n\t\t\t\t\t\t\t\tlet hashq = false\n\t\t\t\t\t\t\t\tfor (const i of eg.lst) {\n\t\t\t\t\t\t\t\t\tif (i.rating == 'Major') hashq = true\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (hashq) multi_hq++\n\t\t\t\t\t\t\t\telse multi_nhq++\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tfor (const evt of eg.lst) {\n\t\t\t\t\t\t\t\t\tfor (const p of evt.lst) {\n\t\t\t\t\t\t\t\t\t\tif (p.rating == 'Major') {\n\t\t\t\t\t\t\t\t\t\t\tif (p.isitd) itd_hq++\n\t\t\t\t\t\t\t\t\t\t\telse if (p.iscloss || p.isnloss) trunc_hq++\n\t\t\t\t\t\t\t\t\t\t\telse single_hq++\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\tif (p.isitd) itd_nhq++\n\t\t\t\t\t\t\t\t\t\t\telse if (p.iscloss || p.isnloss) trunc_nhq++\n\t\t\t\t\t\t\t\t\t\t\telse single_nhq++\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst d0 = tip.clear().showunder(event.target).d.append('div')\n\t\t\t\tconst table = d0.append('table').style('border-spacing', '10px').style('border-collapse', 'separate')\n\t\t\t\tlet tr = table.append('tr').style('color', '#858585')\n\t\t\t\ttr.append('td')\n\t\t\t\ttr.append('td').text('2-gene fusion')\n\t\t\t\ttr.append('td').text('Multi-gene fusion')\n\t\t\t\ttr.append('td').text('ITD')\n\t\t\t\ttr.append('td').text('Truncation')\n\t\t\t\ttr = table.append('tr')\n\t\t\t\ttr.append('td').text('Major').style('color', '#858585').style('text-align', 'right')\n\t\t\t\ttr.append('td').text(single_hq)\n\t\t\t\ttr.append('td').text(multi_hq)\n\t\t\t\ttr.append('td').text(itd_hq)\n\t\t\t\ttr.append('td').text(trunc_hq)\n\t\t\t\ttr = table.append('tr')\n\t\t\t\ttr.append('td').text('not Major').style('color', '#858585').style('text-align', 'right')\n\t\t\t\ttr.append('td').text(single_nhq)\n\t\t\t\ttr.append('td').text(multi_nhq)\n\t\t\t\ttr.append('td').text(itd_nhq)\n\t\t\t\ttr.append('td').text(trunc_nhq)\n\t\t\t\tlet dd = d0.append('div').style('margin', '10px').text('Export fusions labeled as \"Major\"')\n\t\t\t\tdd.append('button')\n\t\t\t\t\t.style('margin', '10px')\n\t\t\t\t\t.text('Tabular format')\n\t\t\t\t\t.on('click', () => unload.svmr_export_text(this, true))\n\t\t\t\tdd.append('button')\n\t\t\t\t\t.style('margin', '10px')\n\t\t\t\t\t.text('JSON format')\n\t\t\t\t\t.on('click', () => unload.svmr_export_json(this, true))\n\t\t\t\tdd.append('button')\n\t\t\t\t\t.style('margin', '10px')\n\t\t\t\t\t.text('View in ProteinPaint')\n\t\t\t\t\t.on('click', () => unload.svmr_2pp(this, true))\n\t\t\t\tdd = d0.append('div').style('margin', '10px').text('Export all fusions')\n\t\t\t\tdd.append('button')\n\t\t\t\t\t.style('margin', '10px')\n\t\t\t\t\t.text('Tabular format')\n\t\t\t\t\t.on('click', () => unload.svmr_export_text(this, false))\n\t\t\t\tdd.append('button')\n\t\t\t\t\t.style('margin', '10px')\n\t\t\t\t\t.text('JSON format')\n\t\t\t\t\t.on('click', () => unload.svmr_export_json(this, false))\n\t\t\t\tdd.append('button')\n\t\t\t\t\t.style('margin', '10px')\n\t\t\t\t\t.text('View in ProteinPaint')\n\t\t\t\t\t.on('click', () => unload.svmr_2pp(this, false))\n\t\t\t})\n\t\tbutrow\n\t\t\t.append('a')\n\t\t\t.attr('target', '_blank')\n\t\t\t.attr('href', 'https://docs.google.com/document/d/1DRVzE_WenG490eRYB7VGFOygtSqtF5L97rhK0HOUCNY/edit?usp=sharing')\n\t\t\t.text('Help')\n\t\t// expression\n\t\tthis.expression.div = holder\n\t\t\t.append('div')\n\t\t\t.style('display', 'none')\n\t\t\t.style('margin', '20px')\n\t\t\t.style('padding', '20px')\n\t\t\t.style('border', 'dashed 1px #bbb')\n\t\tthis.expression.prediv = this.expression.div.append('div')\n\t\tthis.expression.prediv\n\t\t\t.append('div')\n\t\t\t.style('margin', '5px')\n\t\t\t.text('Load a file that includes gene expression data for current samples.')\n\t\tthis.expression.prediv\n\t\t\t.append('div')\n\t\t\t.style('margin', '5px 5px 10px 5px')\n\t\t\t.style('font-size', '80%')\n\t\t\t.text('The first 3 columns of the file should be: 1) gene name, 2) expression value, 3) sample name')\n\t\tthis.expression.input = this.expression.prediv\n\t\t\t.append('input')\n\t\t\t.attr('type', 'file')\n\t\t\t.on('change', event => {\n\t\t\t\tloadexpression(this, event.target.files[0])\n\t\t\t})\n\t\tthis.expression.presays = this.expression.prediv.append('span').style('padding-left', '20px')\n\t\tthis.expression.afterdiv = this.expression.div.append('div').style('display', 'none')\n\t\t// gene table\n\t\tconst genediv = holder.append('div').style('display', 'none').style('margin', '20px')\n\t\tlet d0 = genediv.append('div').style('display', 'inline-block').style('border', 'dashed 1px #bbb')\n\t\tthis.genefilter = d0.append('div').style('background-color', '#ededed').style('padding', '10px 20px')\n\t\tlet d01 = d0\n\t\t\t.append('div')\n\t\t\t.style('padding', '10px 20px')\n\t\t\t.style('overflow-y', 'scroll')\n\t\t\t.style('resize', 'vertical')\n\t\t\t.style('height', '300px')\n\t\td01\n\t\t\t.append('div')\n\t\t\t.style('margin', '10px')\n\t\t\t.style('font-size', '70%')\n\t\t\t.text('Not included: read-through and intergenic events (including one or both sides).')\n\t\tthis.genetable = d01.append('table')\n\t\t// cutoff\n\t\tconst cutoffdiv = holder.append('div').style('display', 'none').style('margin', '20px')\n\t\td0 = cutoffdiv\n\t\t\t.append('div')\n\t\t\t.style('display', 'inline-block')\n\t\t\t.style('padding', '20px')\n\t\t\t.style('border', 'solid 1px #ededed')\n\t\td0.append('span').style('padding', '0px 10px').text('Alert if:')\n\t\td01 = d0.append('span').style('padding', '0px 10px')\n\t\td01.append('span').html('chimeric reads &le;&nbsp;')\n\t\td01\n\t\t\t.append('input')\n\t\t\t.attr('size', 3)\n\t\t\t.property('value', this.cf_reads)\n\t\t\t.on('change', event => {\n\t\t\t\tconst v = Number.parseInt(event.target.value)\n\t\t\t\tif (Number.isNaN(v)) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tthis.cf_reads = v\n\t\t\t})\n\t\td01 = d0.append('span').style('padding', '0px 10px')\n\t\td01.append('span').html('repeat score &ge;&nbsp;')\n\t\td01\n\t\t\t.append('input')\n\t\t\t.attr('size', 3)\n\t\t\t.property('value', this.cf_repeat)\n\t\t\t.on('change', event => {\n\t\t\t\tconst v = Number.parseFloat(event.target.value)\n\t\t\t\tif (Number.isNaN(v)) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tthis.cf_repeat = v\n\t\t\t})\n\t\td01 = d0.append('span').style('padding', '0px 10px')\n\t\td01.append('span').html('contig bp length &le;&nbsp;')\n\t\td01\n\t\t\t.append('input')\n\t\t\t.attr('size', 3)\n\t\t\t.property('value', this.cf_match)\n\t\t\t.on('change', event => {\n\t\t\t\tconst v = Number.parseInt(event.target.value)\n\t\t\t\tif (Number.isNaN(v)) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tthis.cf_match = v\n\t\t\t})\n\t\td01 = d0.append('span').style('padding', '0px 10px')\n\t\td01.append('span').html('ratio &le;&nbsp;')\n\t\td01\n\t\t\t.append('input')\n\t\t\t.attr('size', 3)\n\t\t\t.property('value', this.cf_ratio)\n\t\t\t.on('change', event => {\n\t\t\t\tconst v = Number.parseFloat(event.target.value)\n\t\t\t\tif (Number.isNaN(v)) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tthis.cf_ratio = v\n\t\t\t})\n\t\t// legend\n\t\tconst legenddiv = holder.append('div').style('display', 'none').style('margin', '20px')\n\t\tvar h = 16\n\t\tlegenddiv\n\t\t\t.append('div')\n\t\t\t.style('display', 'inline-block')\n\t\t\t.style('padding', '10px')\n\t\t\t.style('border', 'solid 1px #ededed')\n\t\t\t.html(\n\t\t\t\t'<table style=\"margin:20px\">' +\n\t\t\t\t\t'<tr><td><div style=\"display:inline-block;font-size:80%;color:white;background-color:' +\n\t\t\t\t\tclient.colorinframe +\n\t\t\t\t\t';padding:2px 5px\">IN</div></td><td>In-frame fusion</td></tr>' +\n\t\t\t\t\t'<tr><td><div style=\"display:inline-block;font-size:80%;color:white;background-color:' +\n\t\t\t\t\tclient.coloroutframe +\n\t\t\t\t\t';padding:2px 5px\">O</div></td><td>Out-of-frame fusion</td></tr>' +\n\t\t\t\t\t'<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>' +\n\t\t\t\t\t'</table>' +\n\t\t\t\t\t'<table style=\"margin:20px\">' +\n\t\t\t\t\t'<tr><td>chr5 <span style=\"border:solid 1px black;padding:0px 10px;\"></span>' +\n\t\t\t\t\t'-' +\n\t\t\t\t\t'<span style=\"border:solid 1px black;padding:0px 10px;\"></span> chr5</td>' +\n\t\t\t\t\t'<td>Intra-chromosomal breakpoints</td></tr>' +\n\t\t\t\t\t'<tr><td><span style=\"color:red\">chr5</span> <span style=\"border:solid 1px black;padding:0px 10px;\"></span>' +\n\t\t\t\t\t'-' +\n\t\t\t\t\t'<span style=\"border:solid 1px black;padding:0px 10px;\"></span> <span style=\"color:red\">chr10</span></td>' +\n\t\t\t\t\t'<td>Inter-chromosomal breakpoints</td></tr>' +\n\t\t\t\t\t'</tr></table>' +\n\t\t\t\t\t'<table style=\"margin:20px\">' +\n\t\t\t\t\t'<tr><td><div style=\"display:inline-block;border:solid 1px black;padding:2px 10px;font-size:70%\">geneA</div>' +\n\t\t\t\t\t'-' +\n\t\t\t\t\t'<div style=\"display:inline-block;border:solid 1px black;padding:2px 10px;font-size:70%\">geneB</div>' +\n\t\t\t\t\t'</td><td>Neither geneA nor geneB is known fusion partner</td>' +\n\t\t\t\t\t'</tr>' +\n\t\t\t\t\t'<tr><td><div style=\"display:inline-block;border:solid 1px black;padding:2px 10px;font-size:70%;font-weight:bold;\">geneA</div>' +\n\t\t\t\t\t'-' +\n\t\t\t\t\t'<div style=\"display:inline-block;border:solid 1px black;padding:2px 10px;font-size:70%\">geneB</div>' +\n\t\t\t\t\t'</td><td>GeneA is a known fusion partner</td>' +\n\t\t\t\t\t'</tr>' +\n\t\t\t\t\t'<tr><td><div style=\"display:inline-block;border:solid 1px black;padding:2px 10px;font-size:70%;font-weight:bold;\">geneA</div>' +\n\t\t\t\t\t'-' +\n\t\t\t\t\t'<div style=\"display:inline-block;border:solid 1px black;padding:2px 10px;font-size:70%;font-weight:bold;\">geneB</div>' +\n\t\t\t\t\t'</td><td>Both genes are known fusion partners, but they do not make a known fusion product.</td>' +\n\t\t\t\t\t'</tr>' +\n\t\t\t\t\t'<tr><td><div style=\"display:inline-block;border:solid 1px black;padding:2px 10px;font-size:70%;font-weight:bold;color:' +\n\t\t\t\t\tknownprod_c +\n\t\t\t\t\t'\">geneA</div>' +\n\t\t\t\t\t'-' +\n\t\t\t\t\t'<div style=\"display:inline-block;border:solid 1px black;padding:2px 10px;font-size:70%;font-weight:bold;color:' +\n\t\t\t\t\tknownprod_c +\n\t\t\t\t\t'\">geneB</div>' +\n\t\t\t\t\t'</td><td>A known fusion product</td>' +\n\t\t\t\t\t'</tr>' +\n\t\t\t\t\t'</table>' +\n\t\t\t\t\t'<table style=\"margin:20px\">' +\n\t\t\t\t\t'<tr><td><div style=\"width:40px;height:16px;position:relative;\">' +\n\t\t\t\t\t'<div style=\"position:absolute;right:0px;top:0px;width:20px;height:16px;background-color:' +\n\t\t\t\t\tclient.colorbgleft +\n\t\t\t\t\t'\"></div>' +\n\t\t\t\t\t'<div style=\"position:absolute;border:solid 1px black;width:100%;height:15px\"></div>' +\n\t\t\t\t\t'</div>' +\n\t\t\t\t\t'</td>' +\n\t\t\t\t\t'<td>ratioA: for geneA, the ratio of chimeric reads over total reads</td></tr>' +\n\t\t\t\t\t'<tr><td><div style=\"width:40px;height:16px;position:relative;\">' +\n\t\t\t\t\t'<div style=\"position:absolute;left:0px;top:0px;width:20px;height:16px;background-color:' +\n\t\t\t\t\tclient.colorbgright +\n\t\t\t\t\t'\"></div>' +\n\t\t\t\t\t'<div style=\"position:absolute;border:solid 1px black;width:100%;height:15px\"></div>' +\n\t\t\t\t\t'</div>' +\n\t\t\t\t\t'</td>' +\n\t\t\t\t\t'<td>ratioB: for geneB, the ratio of chimeric reads over total reads</td></tr>' +\n\t\t\t\t\t'<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>' +\n\t\t\t\t\t'</table>'\n\t\t\t)\n\n\t\tthis.ul = holder.append('ul') // root of tree\n\n\t\t/*\nthis.hassample=false\nfor(const i of atlst) {\n\tif(i.key=='sample') {\n\t\tthis.hassample=true\n\t}\n}\n*/\n\n\t\tthis.step_isoform(items)\n\t}\n\t// end of constructor\n\n\terr(m) {\n\t\tclient.sayerror(this.errdiv, m)\n\t}\n\n\tstep_isoform(items) {\n\t\t// get isoform info ready before showing table\n\t\tconst newset = new Set()\n\t\tfor (const item of items) {\n\t\t\tfor (const i of item.pairs) {\n\t\t\t\tlet n = i.a.isoform\n\t\t\t\tif (n && !this.genome.isoformcache.has(n.toUpperCase())) {\n\t\t\t\t\tnewset.add(n)\n\t\t\t\t}\n\t\t\t\tn = i.b.isoform\n\t\t\t\tif (n && !this.genome.isoformcache.has(n.toUpperCase())) {\n\t\t\t\t\tnewset.add(n)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (newset.size == 0) {\n\t\t\tthis.step_eat(items)\n\t\t\treturn\n\t\t}\n\t\tconst newisoform = []\n\t\tfor (const n of newset) {\n\t\t\tnewisoform.push(n)\n\t\t}\n\t\tconst wait = this.holder\n\t\t\t.append('div')\n\t\t\t.style('margin', '20px')\n\t\t\t.text('Loading ' + newset.size + ' isoforms ...')\n\n\t\t// FIXME query small amount of isoforms at a time\n\n\t\tfetch(\n\t\t\tnew Request(this.hostURL + '/isoformlst', {\n\t\t\t\tmethod: 'POST',\n\t\t\t\theaders: { 'content-type': 'application/json' },\n\t\t\t\tbody: JSON.stringify({ genome: this.genome.name, lst: newisoform, jwt: this.jwt })\n\t\t\t})\n\t\t)\n\t\t\t.then(data => {\n\t\t\t\treturn data.json()\n\t\t\t})\n\t\t\t.then(data => {\n\t\t\t\tif (data.error) throw { message: 'Cannot load isoforms: ' + data.error }\n\t\t\t\twait.remove()\n\t\t\t\tfor (const ilst of data.lst) {\n\t\t\t\t\tif (ilst[0]) {\n\t\t\t\t\t\tthis.genome.isoformcache.set(ilst[0].isoform, ilst)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// invalid isoforms\n\t\t\t\tconst isoformErr = []\n\t\t\t\tfor (const k of newset) {\n\t\t\t\t\tif (!this.genome.isoformcache.has(k.toUpperCase())) {\n\t\t\t\t\t\tisoformErr.push(k)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (isoformErr.length) {\n\t\t\t\t\tthis.err(\n\t\t\t\t\t\tisoformErr.length + ' invalid isoform' + (isoformErr.length > 1 ? 's' : '') + ': ' + isoformErr.join(', ')\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t\tthis.step_eat(items)\n\t\t\t})\n\t\t\t.catch(err => {\n\t\t\t\tthis.err(err.message)\n\t\t\t\tif (err.stack) console.log(err.stack)\n\t\t\t})\n\t}\n\n\tstep_eat(items) {\n\t\t// call after all isoforms loaded\n\t\tfor (const prod of items) {\n\t\t\tprod.hook = {}\n\t\t\t// set .usepair for product using default isoform\n\t\t\tlet use = null\n\t\t\tfor (const p of prod.pairs) {\n\t\t\t\tlet gm = this.genome.isoformmatch(p.a.isoform, prod.chrA, prod.posA)\n\t\t\t\tif (gm) {\n\t\t\t\t\t// replaces old geneA label!\n\t\t\t\t\tprod.geneA = gm.name\n\t\t\t\t\tp.a.isdefault = gm.isdefault\n\t\t\t\t\tif (Number.isNaN(p.a.codon) || p.a.codon < 0) {\n\t\t\t\t\t\tp.a.codon = undefined\n\t\t\t\t\t\tconst a = genomic2gm(prod.posA, gm)\n\t\t\t\t\t\tif (a.atupstream) {\n\t\t\t\t\t\t\tp.a.atupstream = a.atupstream\n\t\t\t\t\t\t} else if (a.atdownstream) {\n\t\t\t\t\t\t\tp.a.atdownstream = a.atdownstream\n\t\t\t\t\t\t} else if (a.atutr3) {\n\t\t\t\t\t\t\tp.a.atutr3 = a.atutr3\n\t\t\t\t\t\t} else if (a.atutr5) {\n\t\t\t\t\t\t\tp.a.atutr5 = a.atutr5\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tp.a.codon = a.codon\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tgm = this.genome.isoformmatch(p.b.isoform, prod.chrB, prod.posB)\n\t\t\t\tif (gm) {\n\t\t\t\t\tprod.geneB = gm.name\n\t\t\t\t\tp.b.isdefault = gm.isdefault\n\t\t\t\t\tif (Number.isNaN(p.b.codon) || p.b.codon < 0) {\n\t\t\t\t\t\tp.b.codon = undefined\n\t\t\t\t\t\tconst a = genomic2gm(prod.posB, gm)\n\t\t\t\t\t\tif (a.atupstream) {\n\t\t\t\t\t\t\tp.b.atupstream = a.atupstream\n\t\t\t\t\t\t} else if (a.atdownstream) {\n\t\t\t\t\t\t\tp.b.atdownstream = a.atdownstream\n\t\t\t\t\t\t} else if (a.atutr3) {\n\t\t\t\t\t\t\tp.b.atutr3 = a.atutr3\n\t\t\t\t\t\t} else if (a.atutr5) {\n\t\t\t\t\t\t\tp.b.atutr5 = a.atutr5\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tp.b.codon = a.codon\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (p.a.isdefault && p.b.isdefault) {\n\t\t\t\t\tif (!use) {\n\t\t\t\t\t\t// none selected yet\n\t\t\t\t\t\tuse = p\n\t\t\t\t\t}\n\t\t\t\t\tif (p.inframe) {\n\t\t\t\t\t\t// in-frame, must choose, may override previous selected out-of frame pair\n\t\t\t\t\t\tuse = p\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (use) {\n\t\t\t\tprod.usepair = use\n\t\t\t} else {\n\t\t\t\tprod.notes.push('No preferred isoform pair')\n\t\t\t\tprod.usepair = prod.pairs[0] // could be undefined\n\t\t\t}\n\t\t\tif (prod.usepair) {\n\t\t\t\tprod.usepair.inuse = true\n\t\t\t}\n\t\t\t// geneA/B label ready\n\t\t\tprod.eventlabel = (prod.geneA ? prod.geneA : prod.chrA) + '-' + (prod.geneB ? prod.geneB : prod.chrB)\n\t\t}\n\t\t// group by sample\n\t\t// prod.sample is attacker-reachable data (fusioneditor upload/runpp arg); use\n\t\t// null-prototype objects so a sample name of \"__proto__\" cannot pollute Object.prototype\n\t\tconst tmp = Object.create(null)\n\t\tconst sampleless = Object.create(null)\n\t\tlet hassampleless = false\n\t\tfor (const prod of items) {\n\t\t\tlet n = prod.sample\n\t\t\tif (n) {\n\t\t\t\tif (!(n in tmp)) {\n\t\t\t\t\ttmp[n] = {}\n\t\t\t\t}\n\t\t\t\tif (!(prod.eventlabel in tmp[n])) {\n\t\t\t\t\ttmp[n][prod.eventlabel] = []\n\t\t\t\t}\n\t\t\t\ttmp[n][prod.eventlabel].push(prod)\n\t\t\t} else {\n\t\t\t\thassampleless = true\n\t\t\t\tif (!(prod.eventlabel in sampleless)) {\n\t\t\t\t\tsampleless[prod.eventlabel] = []\n\t\t\t\t}\n\t\t\t\tsampleless[prod.eventlabel].push(prod)\n\t\t\t}\n\t\t}\n\t\tfor (const sn in tmp) {\n\t\t\tthis.samples.push({\n\t\t\t\tname: sn,\n\t\t\t\tevents: tmp[sn]\n\t\t\t})\n\t\t}\n\t\tif (hassampleless) {\n\t\t\tthis.samples.push({\n\t\t\t\tname: 'No name',\n\t\t\t\tevents: sampleless\n\t\t\t})\n\t\t}\n\t\tthis.buttsample.text(this.samples.length + ' sample' + (this.samples.length > 1 ? 's' : ''))\n\t\t// \"samples\" done\n\t\t// fill in event-to-sample recurrence\n\t\tfor (const sample of this.samples) {\n\t\t\t// register event label to sample mapping\n\t\t\tfor (const elab in sample.events) {\n\t\t\t\tif (!(elab in this.elab2sample)) {\n\t\t\t\t\tthis.elab2sample[elab] = []\n\t\t\t\t}\n\t\t\t\tthis.elab2sample[elab].push(sample)\n\t\t\t}\n\t\t}\n\t\t// foreach sample, gene to event\n\t\tfor (const sample of this.samples) {\n\t\t\tsample.gene2events = {}\n\t\t\tfor (const elab in sample.events) {\n\t\t\t\tfor (const prod of sample.events[elab]) {\n\t\t\t\t\tconst a = prod.geneA\n\t\t\t\t\tif (a) {\n\t\t\t\t\t\tif (!(a in sample.gene2events)) {\n\t\t\t\t\t\t\tsample.gene2events[a] = {}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tsample.gene2events[a][elab] = 1\n\t\t\t\t\t}\n\t\t\t\t\tconst b = prod.geneB\n\t\t\t\t\tif (b) {\n\t\t\t\t\t\tif (!(b in sample.gene2events)) {\n\t\t\t\t\t\t\tsample.gene2events[b] = {}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tsample.gene2events[b][elab] = 1\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tfor (const sample of this.samples) {\n\t\t\t/* group - multi-seg */\n\t\t\tconst newholder = []\n\t\t\t// multiple rounds, one rating grade each time\n\t\t\tfor (const elab in sample.events) {\n\t\t\t\tfor (const prod of sample.events[elab]) {\n\t\t\t\t\tif (prod.rating == 'HQ') msjoin(prod, newholder)\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (const elab in sample.events) {\n\t\t\t\tfor (const prod of sample.events[elab]) {\n\t\t\t\t\tif (prod.rating == 'LQ') msjoin(prod, newholder)\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (const elab in sample.events) {\n\t\t\t\tfor (const prod of sample.events[elab]) {\n\t\t\t\t\tif (prod.rating == 'RT') msjoin(prod, newholder)\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (const elab in sample.events) {\n\t\t\t\tfor (const prod of sample.events[elab]) {\n\t\t\t\t\tif (prod.rating == 'bad') msjoin(prod, newholder)\n\t\t\t\t}\n\t\t\t}\n\t\t\t// assign id to multi-seg groups\n\t\t\tlet msgid = 0\n\t\t\tconst msglst = [] // multi-seg groups only\n\t\t\tfor (const lst of newholder) {\n\t\t\t\tif (lst.length > 1) {\n\t\t\t\t\tfor (const prod of lst) {\n\t\t\t\t\t\tprod.msgid = msgid\n\t\t\t\t\t}\n\t\t\t\t\tmsgid++\n\t\t\t\t\tmsglst.push(lst)\n\t\t\t\t}\n\t\t\t}\n\t\t\t/* rating grades */\n\t\t\tconst hqin = [], // in frame\n\t\t\t\thqt = [], // truncation, including not in-frame fusion\n\t\t\t\thqo = [], // others\n\t\t\t\tlqin = [],\n\t\t\t\tlqt = [],\n\t\t\t\tlqo = [],\n\t\t\t\trtin = [],\n\t\t\t\trtt = [],\n\t\t\t\trto = [],\n\t\t\t\tbadin = [],\n\t\t\t\tbadt = [],\n\t\t\t\tbado = []\n\t\t\t// stuff multi-seg into grades\n\t\t\tfor (const msg of msglst) {\n\t\t\t\tconst thisset = []\n\t\t\t\t// survey through all events in a group, find the highest grade, assign this group to that grade\n\t\t\t\tlet hqin3 = false,\n\t\t\t\t\thqt3 = false,\n\t\t\t\t\thqo3 = false,\n\t\t\t\t\tlqin3 = false,\n\t\t\t\t\tlqt3 = false,\n\t\t\t\t\tlqo3 = false,\n\t\t\t\t\trtin3 = false,\n\t\t\t\t\trtt3 = false,\n\t\t\t\t\trto3 = false,\n\t\t\t\t\tbadin3 = false,\n\t\t\t\t\tbadt3 = false,\n\t\t\t\t\tbado3 = false\n\t\t\t\tfor (const prod of msg) {\n\t\t\t\t\tthisset.push({ label: prod.eventlabel, lst: [prod] })\n\t\t\t\t\tconst pair = prod.usepair\n\t\t\t\t\tif (prod.rating == 'HQ') {\n\t\t\t\t\t\tif (pair) {\n\t\t\t\t\t\t\tif (pair.inframe) hqin3 = true\n\t\t\t\t\t\t\telse hqt3 = true\n\t\t\t\t\t\t} else if (prod.isnloss || prod.iscloss) {\n\t\t\t\t\t\t\thqt3 = true\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\thqo3 = true\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (prod.rating == 'LQ') {\n\t\t\t\t\t\tif (pair) {\n\t\t\t\t\t\t\tif (pair.inframe) lqin3 = true\n\t\t\t\t\t\t\telse lqt3 = true\n\t\t\t\t\t\t} else if (prod.isnloss || prod.iscloss) {\n\t\t\t\t\t\t\tlqt3 = true\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tlqo3 = true\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (prod.rating == 'RT') {\n\t\t\t\t\t\tif (pair) {\n\t\t\t\t\t\t\tif (pair.inframe) rtin3 = true\n\t\t\t\t\t\t\telse rtt3 = true\n\t\t\t\t\t\t} else if (prod.isnloss || prod.iscloss) {\n\t\t\t\t\t\t\trtt3 = true\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\trto3 = true\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (pair) {\n\t\t\t\t\t\t\tif (pair.inframe) badin3 = true\n\t\t\t\t\t\t\telse badt3 = true\n\t\t\t\t\t\t} else if (prod.isnloss || prod.iscloss) {\n\t\t\t\t\t\t\tbadt3 = true\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tbado3 = true\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// must only assign after going through all events\n\t\t\t\tif (hqin3) {\n\t\t\t\t\thqin.push({ label: '', lst: thisset, ismsg: true })\n\t\t\t\t} else if (hqt3) {\n\t\t\t\t\thqt.push({ label: '', lst: thisset, ismsg: true })\n\t\t\t\t} else if (hqo3) {\n\t\t\t\t\thqo.push({ label: '', lst: thisset, ismsg: true })\n\t\t\t\t} else if (lqin3) {\n\t\t\t\t\tlqin.push({ label: '', lst: thisset, ismsg: true })\n\t\t\t\t} else if (lqt3) {\n\t\t\t\t\tlqt.push({ label: '', lst: thisset, ismsg: true })\n\t\t\t\t} else if (lqo3) {\n\t\t\t\t\tlqo.push({ label: '', lst: thisset, ismsg: true })\n\t\t\t\t} else if (rtin3) {\n\t\t\t\t\trtin.push({ label: '', lst: thisset, ismsg: true })\n\t\t\t\t} else if (rtt3) {\n\t\t\t\t\trtt.push({ label: '', lst: thisset, ismsg: true })\n\t\t\t\t} else if (rto3) {\n\t\t\t\t\trto.push({ label: '', lst: thisset, ismsg: true })\n\t\t\t\t} else if (badin3) {\n\t\t\t\t\tbadin.push({ label: '', lst: thisset, ismsg: true })\n\t\t\t\t} else if (badt3) {\n\t\t\t\t\tbadt.push({ label: '', lst: thisset, ismsg: true })\n\t\t\t\t} else if (bado3) {\n\t\t\t\t\tbado.push({ label: '', lst: thisset, ismsg: true })\n\t\t\t\t} else {\n\t\t\t\t\tconsole.log('multi-seg group unclassfied? ' + key)\n\t\t\t\t}\n\t\t\t}\n\t\t\t/* group - reciprocal gene pairs */\n\t\t\tconst genepairs = {}\n\t\t\t// k: master label, A-B, equivalent with B-A\n\t\t\t// v: {}\n\t\t\t// k: actual label\n\t\t\t// v: prod lst\n\t\t\tfor (const elab in sample.events) {\n\t\t\t\t// to hold non-gene-pair products\n\t\t\t\tconst hqin2 = [],\n\t\t\t\t\thqt2 = [],\n\t\t\t\t\thqo2 = [],\n\t\t\t\t\tlqin2 = [],\n\t\t\t\t\tlqt2 = [],\n\t\t\t\t\tlqo2 = [],\n\t\t\t\t\trtin2 = [],\n\t\t\t\t\trtt2 = [],\n\t\t\t\t\trto2 = [],\n\t\t\t\t\tbadin2 = [],\n\t\t\t\t\tbadt2 = [],\n\t\t\t\t\tbado2 = []\n\t\t\t\tfor (const prod of sample.events[elab]) {\n\t\t\t\t\tif (prod.msgid != undefined) {\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\t\t\t\t\tif (prod.geneA && prod.geneB) {\n\t\t\t\t\t\tconst key = prod.geneA + '-' + prod.geneB // A/B key\n\t\t\t\t\t\tlet hash = genepairs[key]\n\t\t\t\t\t\tif (!hash) {\n\t\t\t\t\t\t\t// B/A key to match reciprocal event\n\t\t\t\t\t\t\tconst key2 = prod.geneB + '-' + prod.geneA\n\t\t\t\t\t\t\thash = genepairs[key2]\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (hash) {\n\t\t\t\t\t\t\t// is such hash\n\t\t\t\t\t\t\tif (!(key in hash)) {\n\t\t\t\t\t\t\t\thash[key] = []\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\thash[key].push(prod)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tgenepairs[key] = {}\n\t\t\t\t\t\t\tgenepairs[key][key] = [prod]\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\t\t\t\t\t// not a gene pair\n\t\t\t\t\tvar pair = prod.usepair\n\t\t\t\t\t// directly to holder\n\t\t\t\t\tif (prod.rating == 'HQ') {\n\t\t\t\t\t\tif (pair) {\n\t\t\t\t\t\t\tif (pair.inframe) hqin2.push(prod)\n\t\t\t\t\t\t\telse hqt2.push(prod)\n\t\t\t\t\t\t} else if (prod.isnloss || prod.iscloss) {\n\t\t\t\t\t\t\thqt2.push(prod)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\thqo2.push(prod)\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (prod.rating == 'LQ') {\n\t\t\t\t\t\tif (pair) {\n\t\t\t\t\t\t\tif (pair.inframe) lqin2.push(prod)\n\t\t\t\t\t\t\telse lqt2.push(prod)\n\t\t\t\t\t\t} else if (prod.isnloss || prod.iscloss) {\n\t\t\t\t\t\t\tlqt2.push(prod)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tlqo2.push(prod)\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (prod.rating == 'RT') {\n\t\t\t\t\t\tif (pair) {\n\t\t\t\t\t\t\tif (pair.inframe) rtin2.push(prod)\n\t\t\t\t\t\t\telse rtt2.push(prod)\n\t\t\t\t\t\t} else if (prod.isnloss || prod.iscloss) {\n\t\t\t\t\t\t\trtt2.push(prod)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\trto2.push(prod)\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (pair) {\n\t\t\t\t\t\t\tif (pair.inframe) badin2.push(prod)\n\t\t\t\t\t\t\telse badt2.push(prod)\n\t\t\t\t\t\t} else if (prod.isnloss || prod.iscloss) {\n\t\t\t\t\t\t\tbadt2.push(prod)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tbado2.push(prod)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// fill-in any non-gene-pairs\n\t\t\t\tif (hqin2.length > 0) {\n\t\t\t\t\thqin.push({ label: elab, lst: [{ label: elab, lst: hqin2 }] })\n\t\t\t\t} else if (hqt2.length > 0) {\n\t\t\t\t\thqt.push({ label: elab, lst: [{ label: elab, lst: hqt2 }] })\n\t\t\t\t} else if (hqo2.length > 0) {\n\t\t\t\t\thqo.push({ label: elab, lst: [{ label: elab, lst: hqo2 }] })\n\t\t\t\t} else if (lqin2.length > 0) {\n\t\t\t\t\tlqin.push({ label: elab, lst: [{ label: elab, lst: lqin2 }] })\n\t\t\t\t} else if (lqt2.length > 0) {\n\t\t\t\t\tlqt.push({ label: elab, lst: [{ label: elab, lst: lqt2 }] })\n\t\t\t\t} else if (lqo2.length > 0) {\n\t\t\t\t\tlqo.push({ label: elab, lst: [{ label: elab, lst: lqo2 }] })\n\t\t\t\t} else if (rtin2.length > 0) {\n\t\t\t\t\trtin.push({ label: elab, lst: [{ label: elab, lst: rtin2 }] })\n\t\t\t\t} else if (rtt2.length > 0) {\n\t\t\t\t\trtt.push({ label: elab, lst: [{ label: elab, lst: rtt2 }] })\n\t\t\t\t} else if (rto2.length > 0) {\n\t\t\t\t\trto.push({ label: elab, lst: [{ label: elab, lst: rto2 }] })\n\t\t\t\t} else if (badin2.length > 0) {\n\t\t\t\t\tbadin.push({ label: elab, lst: [{ label: elab, lst: badin2 }] })\n\t\t\t\t} else if (badt2.length > 0) {\n\t\t\t\t\tbadt.push({ label: elab, lst: [{ label: elab, lst: badt2 }] })\n\t\t\t\t} else if (bado2.length > 0) {\n\t\t\t\t\tbado.push({ label: elab, lst: [{ label: elab, lst: bado2 }] })\n\t\t\t\t}\n\t\t\t}\n\t\t\t// for group of gene pairs, assign to rating grades\n\t\t\tfor (const key in genepairs) {\n\t\t\t\tlet hqin3 = false,\n\t\t\t\t\thqt3 = false,\n\t\t\t\t\thqo3 = false,\n\t\t\t\t\tlqin3 = false,\n\t\t\t\t\tlqt3 = false,\n\t\t\t\t\tlqo3 = false,\n\t\t\t\t\trtin3 = false,\n\t\t\t\t\trtt3 = false,\n\t\t\t\t\trto3 = false,\n\t\t\t\t\tbadin3 = false,\n\t\t\t\t\tbadt3 = false,\n\t\t\t\t\tbado3 = false\n\t\t\t\tconst thisset = []\n\t\t\t\tfor (const elab in genepairs[key]) {\n\t\t\t\t\tconst prodlst = genepairs[key][elab]\n\t\t\t\t\tif (prodlst.length == 1) {\n\t\t\t\t\t\tif (prodlst[0].msgid != undefined) {\n\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tthisset.push({ label: elab, lst: prodlst })\n\t\t\t\t\tfor (const prod of prodlst) {\n\t\t\t\t\t\tconst pair = prod.usepair\n\t\t\t\t\t\tif (prod.rating == 'HQ') {\n\t\t\t\t\t\t\tif (pair) {\n\t\t\t\t\t\t\t\tif (pair.inframe) hqin3 = true\n\t\t\t\t\t\t\t\telse hqt3 = true\n\t\t\t\t\t\t\t} else if (prod.isnloss || prod.iscloss) {\n\t\t\t\t\t\t\t\thqt3 = true\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\thqo3 = true\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (prod.rating == 'LQ') {\n\t\t\t\t\t\t\tif (pair) {\n\t\t\t\t\t\t\t\tif (pair.inframe) lqin3 = true\n\t\t\t\t\t\t\t\telse lqt3 = true\n\t\t\t\t\t\t\t} else if (prod.isnloss || prod.iscloss) {\n\t\t\t\t\t\t\t\tlqt3 = true\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tlqo3 = true\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (prod.rating == 'RT') {\n\t\t\t\t\t\t\tif (pair) {\n\t\t\t\t\t\t\t\tif (pair.inframe) rtin3 = true\n\t\t\t\t\t\t\t\telse rtt3 = true\n\t\t\t\t\t\t\t} else if (prod.isnloss || prod.iscloss) {\n\t\t\t\t\t\t\t\trtt3 = true\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\trto3 = true\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (pair) {\n\t\t\t\t\t\t\t\tif (pair.inframe) badin3 = true\n\t\t\t\t\t\t\t\telse badt3 = true\n\t\t\t\t\t\t\t} else if (prod.isnloss || prod.iscloss) {\n\t\t\t\t\t\t\t\tbadt3 = true\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tbado3 = true\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (hqin3) {\n\t\t\t\t\thqin.push({ label: key, lst: thisset })\n\t\t\t\t} else if (hqt3) {\n\t\t\t\t\thqt.push({ label: key, lst: thisset })\n\t\t\t\t} else if (hqo3) {\n\t\t\t\t\thqo.push({ label: key, lst: thisset })\n\t\t\t\t} else if (lqin3) {\n\t\t\t\t\tlqin.push({ label: key, lst: thisset })\n\t\t\t\t} else if (lqt3) {\n\t\t\t\t\tlqt.push({ label: key, lst: thisset })\n\t\t\t\t} else if (lqo3) {\n\t\t\t\t\tlqo.push({ label: key, lst: thisset })\n\t\t\t\t} else if (rtin3) {\n\t\t\t\t\trtin.push({ label: key, lst: thisset })\n\t\t\t\t} else if (rtt3) {\n\t\t\t\t\trtt.push({ label: key, lst: thisset })\n\t\t\t\t} else if (rto3) {\n\t\t\t\t\trto.push({ label: key, lst: thisset })\n\t\t\t\t} else if (badin3) {\n\t\t\t\t\tbadin.push({ label: key, lst: thisset })\n\t\t\t\t} else if (badt3) {\n\t\t\t\t\tbadt.push({ label: key, lst: thisset })\n\t\t\t\t} else if (bado3) {\n\t\t\t\t\tbado.push({ label: key, lst: thisset })\n\t\t\t\t}\n\t\t\t}\n\t\t\tsample.egglst = []\n\t\t\tsample.hqincount = 0\n\t\t\tsample.lqincount = 0\n\t\t\tif (hqin.length) {\n\t\t\t\tsample.egglst.push({\n\t\t\t\t\thtmlab:\n\t\t\t\t\t\t'HQ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"background-color:' +\n\t\t\t\t\t\tclient.colorinframe +\n\t\t\t\t\t\t';color:white;padding:1px 3px;font-size:80%;\">in-frame&nbsp;&nbsp;</span>',\n\t\t\t\t\tlst: hqin\n\t\t\t\t})\n\t\t\t\tsample.hqincount = hqin.reduce((i, j) => i + j.lst.length, 0)\n\t\t\t}\n\t\t\tif (hqt.length) {\n\t\t\t\tsample.egglst.push({\n\t\t\t\t\thtmlab:\n\t\t\t\t\t\t'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>',\n\t\t\t\t\tlst: hqt\n\t\t\t\t})\n\t\t\t}\n\t\t\tif (hqo.length) {\n\t\t\t\tsample.egglst.push({\n\t\t\t\t\thtmlab:\n\t\t\t\t\t\t'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>',\n\t\t\t\t\tlst: hqo\n\t\t\t\t})\n\t\t\t}\n\t\t\tif (lqin.length) {\n\t\t\t\tsample.egglst.push({\n\t\t\t\t\thtmlab:\n\t\t\t\t\t\t'LQ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"background-color:' +\n\t\t\t\t\t\tclient.colorinframe +\n\t\t\t\t\t\t';color:white;padding:1px 3px;font-size:80%;\">in-frame&nbsp;&nbsp;</span>',\n\t\t\t\t\tlst: lqin\n\t\t\t\t})\n\t\t\t\tsample.lqincount = lqin.reduce((i, j) => i + j, 0)\n\t\t\t}\n\t\t\tif (lqt.length) {\n\t\t\t\tsample.egglst.push({\n\t\t\t\t\thtmlab:\n\t\t\t\t\t\t'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>',\n\t\t\t\t\tlst: lqt\n\t\t\t\t})\n\t\t\t}\n\t\t\tif (lqo.length) {\n\t\t\t\tsample.egglst.push({\n\t\t\t\t\thtmlab:\n\t\t\t\t\t\t'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>',\n\t\t\t\t\tlst: lqo\n\t\t\t\t})\n\t\t\t}\n\t\t\tif (rtin.length) {\n\t\t\t\tsample.egglst.push({\n\t\t\t\t\thtmlab:\n\t\t\t\t\t\t'Read-through <span style=\"background-color:' +\n\t\t\t\t\t\tclient.colorinframe +\n\t\t\t\t\t\t';color:white;padding:1px 3px;font-size:80%;\">in-frame&nbsp;&nbsp;</span>',\n\t\t\t\t\tlst: rtin\n\t\t\t\t})\n\t\t\t}\n\t\t\tif (rtt.length) {\n\t\t\t\tsample.egglst.push({\n\t\t\t\t\thtmlab:\n\t\t\t\t\t\t'Read-through <span style=\"background-color:#E3C3C8;padding:1px 3px;font-size:80%;\">truncation</span>',\n\t\t\t\t\tlst: rtt\n\t\t\t\t})\n\t\t\t}\n\t\t\tif (rto.length) {\n\t\t\t\tsample.egglst.push({\n\t\t\t\t\thtmlab:\n\t\t\t\t\t\t'Read-through <span style=\"background-color:#ccc;padding:1px 3px;font-size:80%;\">others&nbsp;&nbsp;&nbsp;&nbsp;</span>',\n\t\t\t\t\tlst: rto\n\t\t\t\t})\n\t\t\t}\n\t\t\tif (badin.length) {\n\t\t\t\tsample.egglst.push({\n\t\t\t\t\thtmlab:\n\t\t\t\t\t\t'Bad&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"background-color:' +\n\t\t\t\t\t\tclient.colorinframe +\n\t\t\t\t\t\t';color:white;padding:1px 3px;font-size:80%;\">in-frame</span>',\n\t\t\t\t\tlst: badin\n\t\t\t\t})\n\t\t\t}\n\t\t\tif (badt.length) {\n\t\t\t\tsample.egglst.push({\n\t\t\t\t\thtmlab:\n\t\t\t\t\t\t'Bad&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"background-color:#E3C3C8;padding:1px 3px;font-size:80%;\">truncation</span>',\n\t\t\t\t\tlst: badt\n\t\t\t\t})\n\t\t\t}\n\t\t\tif (bado.length) {\n\t\t\t\tsample.egglst.push({\n\t\t\t\t\thtmlab:\n\t\t\t\t\t\t'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>',\n\t\t\t\t\tlst: bado\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t\t// sort samples\n\t\tthis.samples.sort((a, b) => {\n\t\t\tif (a.hqincount == b.hqincount) {\n\t\t\t\treturn b.lqincount - a.lqincount\n\t\t\t}\n\t\t\treturn b.hqincount - a.hqincount\n\t\t})\n\t\t// for each sample\n\t\tfor (const sample of this.samples) {\n\t\t\t// for each egg (rating grade)\n\t\t\tfor (const egg of sample.egglst) {\n\t\t\t\t// for each event group in an egg\n\t\t\t\tfor (const eg of egg.lst) {\n\t\t\t\t\t// for each event\n\t\t\t\t\tfor (const evt of eg.lst) {\n\t\t\t\t\t\t// sort products in an event\n\t\t\t\t\t\tevt.lst.sort((a, b) => {\n\t\t\t\t\t\t\tconst pa = a.usepair,\n\t\t\t\t\t\t\t\tpb = b.usepair\n\t\t\t\t\t\t\tif (pa) {\n\t\t\t\t\t\t\t\tif (pb) {\n\t\t\t\t\t\t\t\t\tif (pa.inframe) {\n\t\t\t\t\t\t\t\t\t\tif (!pb.inframe) {\n\t\t\t\t\t\t\t\t\t\t\treturn -1\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tif (pb.inframe) {\n\t\t\t\t\t\t\t\t\t\t\treturn 1\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\treturn -1\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (pb) {\n\t\t\t\t\t\t\t\t\treturn 1\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn b.score - a.score\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// sort groups in an egg/rating grade\n\t\t\t\tegg.lst.sort((a, b) => {\n\t\t\t\t\t// by max score of products for each event group\n\t\t\t\t\tif (a.lst.length != b.lst.length) {\n\t\t\t\t\t\treturn b.lst.length - a.lst.length\n\t\t\t\t\t}\n\t\t\t\t\tlet scorea = 0\n\t\t\t\t\tfor (const evta of a.lst) {\n\t\t\t\t\t\tfor (const prod of evta.lst) {\n\t\t\t\t\t\t\tscorea = Math.max(scorea, prod.score)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tlet scoreb = 0\n\t\t\t\t\tfor (const evtb of b.lst) {\n\t\t\t\t\t\tfor (const prod of evtb.lst) {\n\t\t\t\t\t\t\tscoreb = Math.max(scoreb, prod.score)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn scoreb - scorea\n\t\t\t\t})\n\t\t\t}\n\t\t\t// assign product id for editing\n\t\t\tlet prodid = 1\n\t\t\tfor (const egg of sample.egglst) {\n\t\t\t\tfor (const eg of egg.lst) {\n\t\t\t\t\tfor (const evt of eg.lst) {\n\t\t\t\t\t\tfor (const prod of evt.lst) {\n\t\t\t\t\t\t\tprod.prodid = prodid++\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tthis.step_gene()\n\t\tthis.step_table()\n\t}\n\tdogenefilter() {\n\t\tlet va = this.gui.inputa.property('value')\n\t\tlet vb = this.gui.inputb.property('value')\n\t\tif (va.length + vb.length == 0) {\n\t\t\tthis.gui.says.text(\n\t\t\t\t'Showing ' + (this.genelst.length > 100 ? 100 : 'all') + ' of ' + this.genelst.length + ' pairs'\n\t\t\t)\n\t\t\tthis.geneshow(this.genelst.length > 100 ? this.genelst.slice(0, 100) : this.genelst)\n\t\t\treturn\n\t\t}\n\t\tva = va.length == 0 ? null : va.toLowerCase()\n\t\tvb = vb.length == 0 ? null : vb.toLowerCase()\n\t\tconst uselst = []\n\t\tfor (const g of this.genelst) {\n\t\t\tif (va) {\n\t\t\t\tif (!g.a) continue\n\t\t\t\tif (g.a.toLowerCase().indexOf(va) == -1) continue\n\t\t\t}\n\t\t\tif (vb) {\n\t\t\t\tif (!g.b) continue\n\t\t\t\tif (g.b.toLowerCase().indexOf(vb) == -1) continue\n\t\t\t}\n\t\t\tuselst.push(g)\n\t\t}\n\t\tthis.gui.says.text('Showing ' + Math.min(100, uselst.length) + ' of ' + this.genelst.length + ' pairs')\n\t\tthis.geneshow(uselst.length > 100 ? uselst.slice(0, 100) : uselst)\n\t}\n\tgeneshow(lst) {\n\t\tthis.genetable.selectAll('*').remove()\n\t\tconst tr = this.genetable.append('tr').style('background-color', '#ededed').style('font-size', '.8em')\n\t\ttr.append('td').text('gene A')\n\t\ttr.append('td').text('gene B')\n\t\ttr.append('td').text('# sample')\n\t\ttr.append('td').text('rating')\n\t\tfor (const evt of lst) {\n\t\t\tlet color1 = 'black',\n\t\t\t\tcolor2 = 'black',\n\t\t\t\tweight1,\n\t\t\t\tweight2\n\t\t\tif (evt.ainter) {\n\t\t\t\tcolor1 = '#aaa'\n\t\t\t\tweight1 = 'normal'\n\t\t\t} else {\n\t\t\t\tconst a = evt.samples[0].prodlst[0].hlgene\n\t\t\t\tif (a == 1 || a == 3 || a == 4) weight1 = 'bold'\n\t\t\t\tif (a == 4) color1 = knownprod_c\n\t\t\t}\n\t\t\tif (evt.binter) {\n\t\t\t\tcolor2 = '#aaa'\n\t\t\t\tweight2 = 'normal'\n\t\t\t} else {\n\t\t\t\tconst a = evt.samples[0].prodlst[0].hlgene\n\t\t\t\tif (a == 2 || a == 3 || a == 4) weight2 = 'bold'\n\t\t\t\tif (a == 4) color2 = knownprod_c\n\t\t\t}\n\t\t\tconst tr = this.genetable.append('tr').attr('class', 'sja_clb')\n\t\t\ttr.append('td').text(evt.a).style('color', color1).style('font-weight', weight1)\n\t\t\ttr.append('td').text(evt.b).style('color', color2).style('font-weight', weight2)\n\t\t\tconst td = tr.append('td').text(evt.samples.length)\n\t\t\ttr.on('click', () => {\n\t\t\t\tconst p = tr.node().getBoundingClientRect()\n\t\t\t\tconst pane2 = client.newpane({ x: p.left + p.width + 10, y: p.top })\n\t\t\t\tpane2.header.text(evt.a + ' - ' + evt.b)\n\t\t\t\tconst table = pane2.body.append('table')\n\t\t\t\tfor (const sample of evt.samples) {\n\t\t\t\t\tconst tr = table.append('tr')\n\t\t\t\t\ttr.append('td').style('vertical-align', 'top').style('padding-top', '5px').text(sample.name)\n\t\t\t\t\tconst td = tr.append('td')\n\t\t\t\t\tfor (const prod of sample.prodlst) {\n\t\t\t\t\t\tconst logo = this.eventlogo([prod], td)\n\t\t\t\t\t\tlogo.style('position', 'relative')\n\t\t\t\t\t\tlogo\n\t\t\t\t\t\t\t.append('div')\n\t\t\t\t\t\t\t.style('position', 'absolute')\n\t\t\t\t\t\t\t.style('width', '100%')\n\t\t\t\t\t\t\t.style('height', '100%')\n\t\t\t\t\t\t\t.style('top', '0px')\n\t\t\t\t\t\t\t.style('left', '0px')\n\t\t\t\t\t\t\t.on('mouseover', event => {\n\t\t\t\t\t\t\t\tconst p = event.target.getBoundingClientRect()\n\t\t\t\t\t\t\t\ttip.clear().show(p.left + p.width - 2, p.top - 30)\n\t\t\t\t\t\t\t\tthis.showsvpairs({\n\t\t\t\t\t\t\t\t\tprodlst: [prod],\n\t\t\t\t\t\t\t\t\tholder: tip.d.append('div'),\n\t\t\t\t\t\t\t\t\tnodetail: true,\n\t\t\t\t\t\t\t\t\tsample: sample,\n\t\t\t\t\t\t\t\t\teglst: null,\n\t\t\t\t\t\t\t\t\tshowothersample: false\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t.on('click', event => {\n\t\t\t\t\t\t\t\tconst p = event.target.getBoundingClientRect()\n\t\t\t\t\t\t\t\tconst pane = client.newpane({ x: p.left + p.width + 40, y: p.top - 60 })\n\t\t\t\t\t\t\t\tpane.header.text(sample.name)\n\t\t\t\t\t\t\t\tthis.showsvpairs({\n\t\t\t\t\t\t\t\t\tprodlst: [prod],\n\t\t\t\t\t\t\t\t\tholder: pane.body\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t\tconst hash = {}\n\t\t\tfor (const smp of evt.samples) {\n\t\t\t\tconst hash2 = {}\n\t\t\t\tfor (const p of smp.prodlst) {\n\t\t\t\t\thash2[p.rating] = 1\n\t\t\t\t}\n\t\t\t\tfor (var n in hash2) {\n\t\t\t\t\tif (!(n in hash)) {\n\t\t\t\t\t\thash[n] = 0\n\t\t\t\t\t}\n\t\t\t\t\thash[n]++\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst lst = []\n\t\t\tfor (const smp of ['HQ', 'LQ', 'RT', 'bad']) {\n\t\t\t\tif (hash[smp]) {\n\t\t\t\t\tlst.push(\n\t\t\t\t\t\t'<span style=\"border-radius:6px;background-color:#ededed;padding:1px 6px;font-size:80%\">' +\n\t\t\t\t\t\t\tsmp +\n\t\t\t\t\t\t\t(hash[smp] > 1 ? ' <span style=\"font-size:80%\">' + hash[smp] + '</span>' : '') +\n\t\t\t\t\t\t\t'</span>'\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t}\n\t\t\ttr.append('td').html(lst.join(' '))\n\t\t}\n\t}\n\tstep_gene() {\n\t\tthis.gui = {}\n\t\tthis.genefilter.append('span').text('Filter:')\n\t\tthis.gui.inputa = this.genefilter\n\t\t\t.append('input')\n\t\t\t.attr('size', 7)\n\t\t\t.attr('placeholder', 'gene A')\n\t\t\t.style('margin-left', '10px')\n\t\t\t.on('keyup', () => this.dogenefilter())\n\t\tthis.gui.inputb = this.genefilter\n\t\t\t.append('input')\n\t\t\t.attr('size', 7)\n\t\t\t.attr('placeholder', 'gene B')\n\t\t\t.style('margin-left', '10px')\n\t\t\t.on('keyup', () => this.dogenefilter())\n\t\tthis.genefilter\n\t\t\t.append('button')\n\t\t\t.style('margin-left', '10px')\n\t\t\t.text('Reset')\n\t\t\t.on('click', () => {\n\t\t\t\tthis.gui.inputa.property('value', '')\n\t\t\t\tthis.gui.inputb.property('value', '')\n\t\t\t\tthis.dogenefilter()\n\t\t\t})\n\t\tthis.gui.says = this.genefilter.append('span').style('padding-left', '20px')\n\t\tconst events = {}\n\t\tconst genes = new Set()\n\t\tfor (const sample of this.samples) {\n\t\t\tfor (const k in sample.events) {\n\t\t\t\tfor (const prod of sample.events[k]) {\n\t\t\t\t\t// exclude events from showing in gene table\n\t\t\t\t\tif (!prod.geneA || !prod.geneB) continue\n\t\t\t\t\tif (prod.rating == 'RT') continue\n\t\t\t\t\tif (prod.geneA) {\n\t\t\t\t\t\tgenes.add(prod.geneA)\n\t\t\t\t\t}\n\t\t\t\t\tif (prod.geneB) {\n\t\t\t\t\t\tgenes.add(prod.geneB)\n\t\t\t\t\t}\n\t\t\t\t\tconst n = (prod.geneA ? prod.geneA : '<' + prod.chrA) + ' - ' + (prod.geneB ? prod.geneB : '<' + prod.chrB)\n\t\t\t\t\tif (!(n in events)) {\n\t\t\t\t\t\t// sample.name (an attacker/user-reachable sample name) indexes this\n\t\t\t\t\t\t// nested bucket, so it must not inherit from Object.prototype\n\t\t\t\t\t\tevents[n] = Object.create(null)\n\t\t\t\t\t}\n\t\t\t\t\tif (!(sample.name in events[n])) {\n\t\t\t\t\t\tevents[n][sample.name] = []\n\t\t\t\t\t}\n\t\t\t\t\tevents[n][sample.name].push(prod)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tthis.buttgene.text(genes.size + ' gene' + (genes.size > 1 ? 's' : ''))\n\t\tfor (const k in events) {\n\t\t\tconst tmp = k.split(' - ')\n\t\t\tconst evt = { samples: [] }\n\t\t\tif (tmp[0][0] == '<') {\n\t\t\t\tevt.a = tmp[0].slice(1, tmp[0].length)\n\t\t\t\tevt.ainter = true\n\t\t\t} else {\n\t\t\t\tevt.a = tmp[0]\n\t\t\t}\n\t\t\tif (tmp[1][0] == '<') {\n\t\t\t\tevt.b = tmp[1].slice(1, tmp[1].length)\n\t\t\t\tevt.binter = true\n\t\t\t} else {\n\t\t\t\tevt.b = tmp[1]\n\t\t\t}\n\t\t\tfor (const sn in events[k]) {\n\t\t\t\tevt.samples.push({ name: sn, prodlst: events[k][sn] })\n\t\t\t}\n\t\t\tthis.genelst.push(evt)\n\t\t}\n\t\tthis.genelst.sort((a, b) => {\n\t\t\t// sort by hq count\n\t\t\tlet ca = 0\n\t\t\tfor (const s of a.samples) {\n\t\t\t\tfor (const p of s.prodlst) {\n\t\t\t\t\tif (p.rating == 'HQ') ca++\n\t\t\t\t}\n\t\t\t}\n\t\t\tlet cb = 0\n\t\t\tfor (const s of b.samples) {\n\t\t\t\tfor (const p of s.prodlst) {\n\t\t\t\t\tif (p.rating == 'HQ') cb++\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn cb - ca\n\t\t})\n\t\tthis.dogenefilter()\n\t}\n\tstep_table() {\n\t\tthis.eggbar = []\n\t\tthis.ul.selectAll('*').remove()\n\t\tfor (const sample of this.samples) {\n\t\t\tthis.ul.append('li').style('font-weight', 'bold').style('color', '#545454').text(sample.name)\n\t\t\tsample.ul = this.ul.append('ul').style('margin-bottom', '10px')\n\t\t\tthis.showsample(sample)\n\t\t}\n\t}\n\tshowsample(sample) {\n\t\tsample.ul.selectAll('*').remove()\n\t\tfor (const egg of sample.egglst) {\n\t\t\t// one egg: rating grade\n\t\t\t// count number of events\n\t\t\tconst evtnum = egg.lst.reduce((i, j) => i + j.lst.length, 0)\n\t\t\tconst li = sample.ul.append('li')\n\t\t\tconst bar = li\n\t\t\t\t.append('div')\n\t\t\t\t.attr('class', 'sja_clb2')\n\t\t\t\t.html(egg.htmlab + ' ' + evtnum)\n\t\t\tbar.on('click', () => {\n\t\t\t\tfor (const bar0 of this.eggbar) {\n\t\t\t\t\tbar0.style('background-color', '')\n\t\t\t\t}\n\t\t\t\tbar.style('background-color', 'yellow')\n\t\t\t\tconst next = d3select(li.node().nextSibling)\n\t\t\t\tif (next.style('display') == 'none') {\n\t\t\t\t\tclient.appear(next)\n\t\t\t\t\tegg.isopen = true\n\t\t\t\t} else {\n\t\t\t\t\tclient.disappear(next)\n\t\t\t\t\tegg.isopen = false\n\t\t\t\t}\n\t\t\t})\n\t\t\tthis.eggbar.push(bar)\n\t\t\tconst div = sample.ul.append('div').style('margin', '10px')\n\t\t\tthis.showevents(sample, egg.lst, div)\n\t\t}\n\t}\n\n\tshowevents(sample, eglst, holder) {\n\t\tconst svg = holder.append('svg')\n\t\tlet rowh = 22,\n\t\t\trowh2 = 15,\n\t\t\trows = 13,\n\t\t\tfontsize = rowh - 3,\n\t\t\tfontsizeframe = 14,\n\t\t\tfontsizefeature = 10,\n\t\t\thpad0 = 20,\n\t\t\thpad = 10,\n\t\t\tvpad = 10,\n\t\t\tgvpad = 10,\n\t\t\tchrAw = 60,\n\t\t\tchrBw = 60,\n\t\t\ts1 = 10,\n\t\t\ts2 = 10,\n\t\t\ts3 = 10,\n\t\t\ts4 = 10,\n\t\t\ts5 = 5,\n\t\t\ts6 = 15,\n\t\t\ts7 = 13,\n\t\t\teventlogow = 0,\n\t\t\tetw = 25,\n\t\t\tgenesp = 12,\n\t\t\tgeneAw = 0,\n\t\t\tgeneBw = 0,\n\t\t\trecurw = 0,\n\t\t\tgraphheight = 0\n\t\tfor (const eg of eglst) {\n\t\t\tgraphheight += rows\n\t\t\tif (eg.lst.length == 1) {\n\t\t\t\tgraphheight += rowh\n\t\t\t} else {\n\t\t\t\tgraphheight += vpad * 2 + (rowh + rows) * eg.lst.length + (rowh2 + rows) * (eg.lst.length - 1) + gvpad\n\t\t\t}\n\t\t\tfor (const evt of eg.lst) {\n\t\t\t\tevt.svg = {} // tmp obj for rendering\n\t\t\t\tconst prodlst = evt.lst\n\t\t\t\tconst prod = prodlst[0]\n\t\t\t\tlet labA, labB\n\t\t\t\tif (prod.geneA) {\n\t\t\t\t\tconst t = prod.geneA.split(',')\n\t\t\t\t\tif (t.length > 2) {\n\t\t\t\t\t\tlabA = t[0] + ',' + t[1] + '...'\n\t\t\t\t\t} else {\n\t\t\t\t\t\tlabA = prod.geneA\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tlabA = ''\n\t\t\t\t}\n\t\t\t\tif (prod.geneB) {\n\t\t\t\t\tconst t = prod.geneB.split(',')\n\t\t\t\t\tif (t.length > 2) {\n\t\t\t\t\t\tlabB = t[0] + ',' + t[1] + '...'\n\t\t\t\t\t} else {\n\t\t\t\t\t\tlabB = prod.geneB\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tlabB = ''\n\t\t\t\t}\n\t\t\t\tsvg\n\t\t\t\t\t.append('text')\n\t\t\t\t\t.text(labA)\n\t\t\t\t\t.attr('font-size', fontsize)\n\t\t\t\t\t.attr('font-family', 'Courier')\n\t\t\t\t\t.each(function () {\n\t\t\t\t\t\tgeneAw = Math.max(geneAw, this.getBBox().width)\n\t\t\t\t\t})\n\t\t\t\t\t.remove()\n\t\t\t\tsvg\n\t\t\t\t\t.append('text')\n\t\t\t\t\t.text(labB)\n\t\t\t\t\t.attr('font-size', fontsize)\n\t\t\t\t\t.attr('font-family', 'Courier')\n\t\t\t\t\t.each(function () {\n\t\t\t\t\t\tgeneBw = Math.max(geneBw, this.getBBox().width)\n\t\t\t\t\t})\n\t\t\t\t\t.remove()\n\t\t\t\t// event logo\n\t\t\t\tsvg\n\t\t\t\t\t.append('text')\n\t\t\t\t\t.text(prod.rating)\n\t\t\t\t\t.attr('font-size', fontsize)\n\t\t\t\t\t.attr('font-family', 'Courier')\n\t\t\t\t\t.each(function () {\n\t\t\t\t\t\tevt.svg.ratingw = this.getBBox().width\n\t\t\t\t\t})\n\t\t\t\t\t.remove()\n\t\t\t\tevt.svg.framew = 22 // fixed\n\t\t\t\tevt.svg.typew = 60 // fixed\n\t\t\t\tif (prod.usepair) {\n\t\t\t\t\tevt.svg.frameword = prod.usepair.inframe ? 'IN' : 'O'\n\t\t\t\t} else {\n\t\t\t\t\tevt.svg.frameword = '?'\n\t\t\t\t}\n\t\t\t\tsvg\n\t\t\t\t\t.append('text')\n\t\t\t\t\t.text(prod.featureA)\n\t\t\t\t\t.attr('font-size', fontsizefeature)\n\t\t\t\t\t.attr('font-family', client.font)\n\t\t\t\t\t.each(function () {\n\t\t\t\t\t\tevt.svg.featurew = this.getBBox().width\n\t\t\t\t\t})\n\t\t\t\t\t.remove()\n\t\t\t\tsvg\n\t\t\t\t\t.append('text')\n\t\t\t\t\t.text(prod.featureB)\n\t\t\t\t\t.attr('font-size', fontsizefeature)\n\t\t\t\t\t.attr('font-family', client.font)\n\t\t\t\t\t.each(function () {\n\t\t\t\t\t\tevt.svg.featurew = Math.max(evt.svg.featurew, this.getBBox().width)\n\t\t\t\t\t})\n\t\t\t\t\t.remove()\n\t\t\t\tsvg\n\t\t\t\t\t.append('text')\n\t\t\t\t\t.text(Math.floor(prod.score))\n\t\t\t\t\t.attr('font-size', fontsize)\n\t\t\t\t\t.attr('font-family', client.font)\n\t\t\t\t\t.each(function () {\n\t\t\t\t\t\tevt.svg.scorew = this.getBBox().width\n\t\t\t\t\t})\n\t\t\t\t\t.remove()\n\t\t\t\tevt.svg.logow = evt.svg.ratingw + evt.svg.framew + evt.svg.typew + evt.svg.featurew + evt.svg.scorew + s5 * 6\n\t\t\t\teventlogow = Math.max(eventlogow, evt.svg.logow + (prodlst.length > 1 ? s4 + etw : 0))\n\t\t\t\tif (prod.geneA && prod.geneB) {\n\t\t\t\t\tconst slst = this.elab2sample[evt.label]\n\t\t\t\t\tif (!slst) {\n\t\t\t\t\t\tevt.svg.recurtext = 'Recurrence check error'\n\t\t\t\t\t\tevt.svg.recurtextcolor = 'red'\n\t\t\t\t\t} else if (slst.length == 1) {\n\t\t\t\t\t\tevt.svg.recurtext = 'No recurrence'\n\t\t\t\t\t\tevt.svg.recurtextcolor = '#aaaaaa'\n\t\t\t\t\t} else {\n\t\t\t\t\t\tevt.svg.hasrecurrence = true\n\t\t\t\t\t\tevt.svg.recurtext = 'In ' + slst.length + ' samples'\n\t\t\t\t\t\tevt.svg.recurtextcolor = 'black'\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tevt.svg.recurtext = 'Unknown recurrence'\n\t\t\t\t\tevt.svg.recurtextcolor = '#aaaaaa'\n\t\t\t\t}\n\t\t\t\tsvg\n\t\t\t\t\t.append('text')\n\t\t\t\t\t.text(evt.svg.recurtext)\n\t\t\t\t\t.attr('font-size', fontsize - 4)\n\t\t\t\t\t.attr('font-family', client.font)\n\t\t\t\t\t.each(function () {\n\t\t\t\t\t\tevt.svg.recurw = this.getBBox().width\n\t\t\t\t\t})\n\t\t\t\t\t.remove()\n\t\t\t\trecurw = Math.max(recurw, evt.svg.recurw)\n\t\t\t}\n\t\t}\n\t\tgeneAw += 10\n\t\tgeneBw += 10\n\t\tgraphheight += rows\n\t\tlet ghandlew = 100\n\t\tlet roww =\n\t\t\tchrAw +\n\t\t\ts1 +\n\t\t\trowh +\n\t\t\ts7 +\n\t\t\tgeneAw +\n\t\t\tgenesp +\n\t\t\ts2 +\n\t\t\tgenesp +\n\t\t\tgeneBw +\n\t\t\ts7 +\n\t\t\trowh +\n\t\t\ts1 +\n\t\t\tchrBw +\n\t\t\ts3 +\n\t\t\teventlogow +\n\t\t\ts6 +\n\t\t\trecurw\n\t\t/****************************** render */\n\t\tsvg.attr('width', hpad0 * 2 + hpad * 2 + roww + ghandlew).attr('height', graphheight)\n\t\tconst g = svg.append('g').attr('transform', 'translate(' + hpad0 + ',0)')\n\t\tlet y = 0\n\t\tfor (const eg of eglst) {\n\t\t\ty += rows\n\t\t\tconst g_eg = g.append('g').attr('transform', 'translate(0,' + y + ')')\n\t\t\tconst groupheight =\n\t\t\t\t(rowh + rows) * eg.lst.length -\n\t\t\t\trows +\n\t\t\t\t(eg.lst.length > 1 ? vpad * 2 : 0) +\n\t\t\t\t(eg.lst.length > 1 ? (rowh2 + rows) * (eg.lst.length - 1) : 0)\n\t\t\tif (eg.lst.length > 1) {\n\t\t\t\t// group box\n\t\t\t\tg_eg\n\t\t\t\t\t.append('rect')\n\t\t\t\t\t.attr('stroke', 'black')\n\t\t\t\t\t.attr('stroke-dasharray', eg.ismsg ? 'none' : '2,3')\n\t\t\t\t\t.attr('fill', 'none')\n\t\t\t\t\t.attr('width', roww + hpad * 2)\n\t\t\t\t\t.attr('height', groupheight)\n\t\t\t\t\t.attr('shape-rendering', 'crispEdges')\n\t\t\t\tif (eg.ismsg) {\n\t\t\t\t\tconst g2 = g_eg.append('g').attr('transform', 'translate(' + (roww + hpad * 2) + ',0)')\n\t\t\t\t\tg2.append('rect')\n\t\t\t\t\t\t.attr('width', ghandlew)\n\t\t\t\t\t\t.attr('height', rowh)\n\t\t\t\t\t\t.attr('fill', '#858585')\n\t\t\t\t\t\t.attr('shape-rendering', 'crispEdges')\n\t\t\t\t\tg2.append('text')\n\t\t\t\t\t\t.text('multi-seg')\n\t\t\t\t\t\t.attr('x', 10)\n\t\t\t\t\t\t.attr('y', rowh / 2)\n\t\t\t\t\t\t.attr('font-size', rowh - 6)\n\t\t\t\t\t\t.attr('font-family', client.font)\n\t\t\t\t\t\t.attr('fill', 'white')\n\t\t\t\t\t\t.attr('dominant-baseline', 'middle')\n\t\t\t\t\tg2.append('rect')\n\t\t\t\t\t\t.attr('width', ghandlew)\n\t\t\t\t\t\t.attr('height', rowh)\n\t\t\t\t\t\t.attr('fill', 'white')\n\t\t\t\t\t\t.attr('fill-opacity', 0)\n\t\t\t\t\t\t.on('click', event => {\n\t\t\t\t\t\t\tconst joinlst = []\n\t\t\t\t\t\t\tconst idlst = []\n\t\t\t\t\t\t\tfor (const evt of eg.lst) {\n\t\t\t\t\t\t\t\tconst prod = evt.lst[0]\n\t\t\t\t\t\t\t\tidlst.push(prod.prodid)\n\t\t\t\t\t\t\t\tconst p = {\n\t\t\t\t\t\t\t\t\ta: {\n\t\t\t\t\t\t\t\t\t\tchr: prod.chrA,\n\t\t\t\t\t\t\t\t\t\tposition: prod.posA,\n\t\t\t\t\t\t\t\t\t\tstrand: prod.ortA,\n\t\t\t\t\t\t\t\t\t\tname: prod.geneA ? prod.geneA : prod.chrA,\n\t\t\t\t\t\t\t\t\t\tratio: prod.ratioA.toFixed(2),\n\t\t\t\t\t\t\t\t\t\tfeature: prod.featureA,\n\t\t\t\t\t\t\t\t\t\tcontiglen: prod.matchA,\n\t\t\t\t\t\t\t\t\t\tchimericreads: prod.readsA,\n\t\t\t\t\t\t\t\t\t\trepeatscore: prod.repeatA\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tb: {\n\t\t\t\t\t\t\t\t\t\tchr: prod.chrB,\n\t\t\t\t\t\t\t\t\t\tposition: prod.posB,\n\t\t\t\t\t\t\t\t\t\tstrand: prod.ortB,\n\t\t\t\t\t\t\t\t\t\tname: prod.geneB ? prod.geneB : prod.chrB,\n\t\t\t\t\t\t\t\t\t\tratio: prod.ratioB.toFixed(2),\n\t\t\t\t\t\t\t\t\t\tfeature: prod.featureB,\n\t\t\t\t\t\t\t\t\t\tcontiglen: prod.matchB,\n\t\t\t\t\t\t\t\t\t\tchimericreads: prod.readsB,\n\t\t\t\t\t\t\t\t\t\trepeatscore: prod.repeatB\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\trating: prod.rating,\n\t\t\t\t\t\t\t\t\tscore: Math.ceil(prod.score)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (prod.usepair) {\n\t\t\t\t\t\t\t\t\tp.inframe = prod.usepair.inframe\n\t\t\t\t\t\t\t\t\tconst x = prod.usepair.a\n\t\t\t\t\t\t\t\t\tp.a.gm = this.genome.isoformmatch(x.isoform, p.a.chr, p.a.position)\n\t\t\t\t\t\t\t\t\tp.a.codon = x.codon\n\t\t\t\t\t\t\t\t\tp.a.exon = x.exon\n\t\t\t\t\t\t\t\t\tp.a.atupstream = x.atupstream\n\t\t\t\t\t\t\t\t\tp.a.atdownstream = x.atdownstream\n\t\t\t\t\t\t\t\t\tp.a.atutr5 = x.atutr5\n\t\t\t\t\t\t\t\t\tp.a.atutr3 = x.atutr3\n\t\t\t\t\t\t\t\t\tconst y = prod.usepair.b\n\t\t\t\t\t\t\t\t\tp.b.gm = this.genome.isoformmatch(y.isoform, p.b.chr, p.b.position)\n\t\t\t\t\t\t\t\t\tp.b.codon = y.codon\n\t\t\t\t\t\t\t\t\tp.b.exon = y.exon\n\t\t\t\t\t\t\t\t\tp.b.atupstream = y.atupstream\n\t\t\t\t\t\t\t\t\tp.b.atdownstream = y.atdownstream\n\t\t\t\t\t\t\t\t\tp.b.atutr5 = y.atutr5\n\t\t\t\t\t\t\t\t\tp.b.atutr3 = y.atutr3\n\t\t\t\t\t\t\t\t\t// interstitial\n\t\t\t\t\t\t\t\t\tlet aalen = 0,\n\t\t\t\t\t\t\t\t\t\tbplen = 0\n\t\t\t\t\t\t\t\t\tif (x.contigaa && y.contigaa) {\n\t\t\t\t\t\t\t\t\t\taalen = y.contigaa - x.contigaa - 1\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif (x.contigbp && y.contigbp) {\n\t\t\t\t\t\t\t\t\t\tbplen = y.contigbp - x.contigbp - 1\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif (aalen) {\n\t\t\t\t\t\t\t\t\t\tp.interstitial = { aalen: aalen }\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif (bplen) {\n\t\t\t\t\t\t\t\t\t\tif (!p.interstitial) p.interstitial = {}\n\t\t\t\t\t\t\t\t\t\tp.interstitial.bplen = bplen\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tjoinlst.push(p)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tconst p = event.target.getBoundingClientRect()\n\t\t\t\t\t\t\tconst pane = client.newpane({ x: p.left + 10, y: p.top + p.height + 10 })\n\t\t\t\t\t\t\tconst div = pane.body.append('div').style('margin', '10px')\n\t\t\t\t\t\t\tdiv\n\t\t\t\t\t\t\t\t.append('span')\n\t\t\t\t\t\t\t\t.style('padding-right', '20px')\n\t\t\t\t\t\t\t\t.text('Product id: ' + idlst.join(', '))\n\t\t\t\t\t\t\t// break msg\n\t\t\t\t\t\t\tdiv\n\t\t\t\t\t\t\t\t.append('button')\n\t\t\t\t\t\t\t\t.style('margin-right', '10px')\n\t\t\t\t\t\t\t\t.text('Break')\n\t\t\t\t\t\t\t\t.on('click', () => {\n\t\t\t\t\t\t\t\t\t// find array index of group eg\n\t\t\t\t\t\t\t\t\tconst eg2id = eg.lst.map(j => j.lst[0].prodid)\n\t\t\t\t\t\t\t\t\tlet idx = 0\n\t\t\t\t\t\t\t\t\tfor (; idx < eglst.length; idx++) {\n\t\t\t\t\t\t\t\t\t\tconst eg2 = eglst[idx]\n\t\t\t\t\t\t\t\t\t\tif (eg2.ismsg) {\n\t\t\t\t\t\t\t\t\t\t\tconst eg22id = eg2.lst.map(j => j.lst[0].prodid)\n\t\t\t\t\t\t\t\t\t\t\tif (eg22id.join(',') == eg2id.join(',')) {\n\t\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t// break group\n\t\t\t\t\t\t\t\t\tdelete eg.ismsg\n\t\t\t\t\t\t\t\t\tconst oldlst = eg.lst\n\t\t\t\t\t\t\t\t\teg.lst = [eg.lst[0]]\n\t\t\t\t\t\t\t\t\tfor (let j = 1; j < oldlst.length; j++) {\n\t\t\t\t\t\t\t\t\t\teglst.splice(idx, 0, {\n\t\t\t\t\t\t\t\t\t\t\tlabel: '',\n\t\t\t\t\t\t\t\t\t\t\tlst: [oldlst[j]]\n\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t// remake graph\n\t\t\t\t\t\t\t\t\tsvg.remove()\n\t\t\t\t\t\t\t\t\tthis.showevents(sample, eglst, holder)\n\t\t\t\t\t\t\t\t\t// done\n\t\t\t\t\t\t\t\t\tpane.pane.remove()\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t// edit msg\n\t\t\t\t\t\t\tdiv\n\t\t\t\t\t\t\t\t.append('button')\n\t\t\t\t\t\t\t\t.text('Edit')\n\t\t\t\t\t\t\t\t.on('click', event => {\n\t\t\t\t\t\t\t\t\tconst inputdom = document.createElement('input')\n\t\t\t\t\t\t\t\t\tdiv.node().insertBefore(inputdom, event.target)\n\t\t\t\t\t\t\t\t\tconst buttdom = document.createElement('button')\n\t\t\t\t\t\t\t\t\tdiv.node().insertBefore(buttdom, event.target)\n\t\t\t\t\t\t\t\t\tdiv.node().removeChild(event.target)\n\t\t\t\t\t\t\t\t\tinputdom.focus()\n\t\t\t\t\t\t\t\t\tconst input = d3select(inputdom)\n\t\t\t\t\t\t\t\t\tconst butt = d3select(buttdom)\n\t\t\t\t\t\t\t\t\tinput.attr('size', 10).style('margin', '0px 10px').property('value', idlst.join(','))\n\t\t\t\t\t\t\t\t\tbutt.text('Apply').on('click', () => {\n\t\t\t\t\t\t\t\t\t\tconst lst0 = inputdom.value.trim().split(',')\n\t\t\t\t\t\t\t\t\t\tconst goodid = []\n\t\t\t\t\t\t\t\t\t\tfor (const s of lst0) {\n\t\t\t\t\t\t\t\t\t\t\tif (!s) continue\n\t\t\t\t\t\t\t\t\t\t\tconst j = Number.parseInt(s)\n\t\t\t\t\t\t\t\t\t\t\tif (Number.isNaN(j)) return alert('invalid id: ' + s)\n\t\t\t\t\t\t\t\t\t\t\tif (this.prodidisinvalid(j, sample)) return alert('invalid id ' + j)\n\t\t\t\t\t\t\t\t\t\t\tgoodid.push(j)\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (goodid.length <= 1) return alert('must be at least 2 products')\n\t\t\t\t\t\t\t\t\t\tconst newevtlst = []\n\t\t\t\t\t\t\t\t\t\tfor (const id of goodid) {\n\t\t\t\t\t\t\t\t\t\t\tconst lookprod = this.extractprod(id, sample)\n\t\t\t\t\t\t\t\t\t\t\tif (lookprod) {\n\t\t\t\t\t\t\t\t\t\t\t\tnewevtlst.push({ label: lookprod.eventlabel, lst: [lookprod] })\n\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\treturn alert('unknown product id ' + id)\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (newevtlst.length <= 1) return alert('less than 2 products cannot make a group')\n\t\t\t\t\t\t\t\t\t\teglst.unshift({ lst: newevtlst, ismsg: true })\n\t\t\t\t\t\t\t\t\t\t// remake entire sample\n\t\t\t\t\t\t\t\t\t\tthis.showsample(sample)\n\t\t\t\t\t\t\t\t\t\t// done\n\t\t\t\t\t\t\t\t\t\tpane.pane.remove()\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\tsvtable({\n\t\t\t\t\t\t\t\tsamplelst: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tpairlst: joinlst\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\tnosample: true,\n\t\t\t\t\t\t\t\tholder: pane.body\n\t\t\t\t\t\t\t})\n\n\t\t\t\t\t\t\tconst par = {\n\t\t\t\t\t\t\t\tpairlst: joinlst,\n\t\t\t\t\t\t\t\tgenome: this.genome,\n\t\t\t\t\t\t\t\tholder: pane.body,\n\t\t\t\t\t\t\t\thostURL: this.hostURL,\n\t\t\t\t\t\t\t\tjwt: this.jwt\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\timport('./svgraph').then(p => {\n\t\t\t\t\t\t\t\tp.default(par)\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\t// end of event group business\n\t\t\t}\n\t\t\tconst g_rows = g_eg\n\t\t\t\t.append('g')\n\t\t\t\t.attr('transform', 'translate(' + hpad + ',' + (eg.lst.length > 1 ? vpad : 0) + ')')\n\t\t\tlet y1 = 0\n\t\t\tlet evtid = 0\n\t\t\tconst bgcolor = '#ededed'\n\t\t\t// collect event labels in this group, for subtracting out *this event* when showing external events\n\t\t\tconst elabhash = {}\n\t\t\tfor (const e of eg.lst) {\n\t\t\t\telabhash[e.label] = 1\n\t\t\t}\n\t\t\t// collect shown gene names, shown genes won't display tips (ext events) to avoid duplication\n\t\t\tconst showngenenotip = {}\n\t\t\tfor (const evt of eg.lst) {\n\t\t\t\tconst prodlst = evt.lst\n\t\t\t\tconst prod = prodlst[0]\n\t\t\t\tconst thispair = prod.usepair\n\t\t\t\tif (eg.lst.length > 1 && evtid > 0) {\n\t\t\t\t\t// marker in-the-middle row inside a group\n\t\t\t\t\tconst g_row = g_rows\n\t\t\t\t\t\t.append('g')\n\t\t\t\t\t\t.attr('transform', 'translate(' + (chrAw + s1 + rowh + s7 + geneAw + genesp + s2 / 2) + ',' + y1 + ')')\n\t\t\t\t\tconst text = g_row\n\t\t\t\t\t\t.append('text')\n\t\t\t\t\t\t.attr('fill', '#858585')\n\t\t\t\t\t\t.attr('font-size', rowh2)\n\t\t\t\t\t\t.attr('text-anchor', 'middle')\n\t\t\t\t\t\t.attr('font-family', client.font)\n\t\t\t\t\t\t.attr('y', rowh2 / 2)\n\t\t\t\t\t\t.attr('dominant-baseline', 'middle')\n\t\t\t\t\tif (eg.ismsg) {\n\t\t\t\t\t\ttext.text(prod.mswhat ? prod.mswhat : 'No connection detail')\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttext.text('Reciprocal')\n\t\t\t\t\t}\n\t\t\t\t\ty1 += rowh2 + rows\n\t\t\t\t}\n\t\t\t\tconst textcolor = prod.chrA == prod.chrB ? 'black' : client.colorctx\n\t\t\t\tconst g_row = g_rows.append('g').attr('transform', 'translate(0,' + y1 + ')')\n\t\t\t\t// chr a\n\t\t\t\tg_row\n\t\t\t\t\t.append('text')\n\t\t\t\t\t.text(prod.chrA)\n\t\t\t\t\t.attr('x', chrAw)\n\t\t\t\t\t.attr('y', rowh / 2)\n\t\t\t\t\t.attr('font-size', fontsize - 4)\n\t\t\t\t\t.attr('text-anchor', 'end')\n\t\t\t\t\t.attr('dominant-baseline', 'middle')\n\t\t\t\t\t.attr('fill', textcolor)\n\t\t\t\tconst extevt = { a: null, b: null }\n\t\t\t\tif (prod.geneA) {\n\t\t\t\t\tif (prod.geneA in showngenenotip) {\n\t\t\t\t\t\tshowngenenotip[prod.geneA] = 1\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst lst = []\n\t\t\t\t\t\tfor (const elab in sample.gene2events[prod.geneA]) {\n\t\t\t\t\t\t\tif (!(elab in elabhash)) {\n\t\t\t\t\t\t\t\tlst.push(elab)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (lst.length > 0) {\n\t\t\t\t\t\t\textevt.a = { lst: lst }\n\t\t\t\t\t\t\t// gene a tip\n\t\t\t\t\t\t\textevt.a.circle = g_row\n\t\t\t\t\t\t\t\t.append('circle')\n\t\t\t\t\t\t\t\t.attr('fill', 'white')\n\t\t\t\t\t\t\t\t.attr('stroke', 'black')\n\t\t\t\t\t\t\t\t.attr('cx', chrAw + s1 + rowh / 2)\n\t\t\t\t\t\t\t\t.attr('cy', rowh / 2)\n\t\t\t\t\t\t\t\t.attr('r', rowh / 2)\n\t\t\t\t\t\t\tif (lst.length > 1) {\n\t\t\t\t\t\t\t\textevt.a.text = g_row\n\t\t\t\t\t\t\t\t\t.append('text')\n\t\t\t\t\t\t\t\t\t.text(lst.length)\n\t\t\t\t\t\t\t\t\t.attr('x', chrAw + s1 + rowh / 2)\n\t\t\t\t\t\t\t\t\t.attr('y', rowh / 2)\n\t\t\t\t\t\t\t\t\t.attr('text-anchor', 'middle')\n\t\t\t\t\t\t\t\t\t.attr('font-size', rowh2)\n\t\t\t\t\t\t\t\t\t.attr('dominant-baseline', 'middle')\n\t\t\t\t\t\t\t\t\t.attr('fill', 'black')\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tg_row\n\t\t\t\t\t\t\t\t.append('line')\n\t\t\t\t\t\t\t\t.attr('x1', chrAw + s1 + rowh)\n\t\t\t\t\t\t\t\t.attr('x2', chrAw + s1 + rowh + s7)\n\t\t\t\t\t\t\t\t.attr('y1', rowh / 2)\n\t\t\t\t\t\t\t\t.attr('y2', rowh / 2)\n\t\t\t\t\t\t\t\t.attr('stroke', 'black')\n\t\t\t\t\t\t\t\t.attr('shape-rendering', 'crispEdges')\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// ratio a\n\t\t\t\tg_row\n\t\t\t\t\t.append('rect')\n\t\t\t\t\t.attr('fill', client.colorbgleft)\n\t\t\t\t\t.attr('x', chrAw + s1 + rowh + s7 + (geneAw + genesp) * (1 - prod.ratioA))\n\t\t\t\t\t.attr('width', (geneAw + genesp) * prod.ratioA)\n\t\t\t\t\t.attr('height', rowh)\n\t\t\t\t\t.attr('shape-rendering', 'crispEdges')\n\t\t\t\tlet antisense = false\n\t\t\t\tif (thispair) {\n\t\t\t\t\tconst thisn = thispair.a.isoform\n\t\t\t\t\tif (thisn) {\n\t\t\t\t\t\tconst _gm = this.genome.isoformmatch(thisn, prod.chrA, prod.posA)\n\t\t\t\t\t\tif (_gm && _gm.strand != prod.ortA) {\n\t\t\t\t\t\t\t// gene a antisense\n\t\t\t\t\t\t\tantisense = true\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// gene a box\n\t\t\t\tconst boxa = g_row\n\t\t\t\t\t.append('rect')\n\t\t\t\t\t.attr('fill', 'none')\n\t\t\t\t\t.attr('stroke', antisense ? 'red' : 'black')\n\t\t\t\t\t.attr('shape-rendering', 'crispEdges')\n\t\t\t\t\t.attr('x', chrAw + s1 + rowh + s7)\n\t\t\t\t\t.attr('width', geneAw + genesp)\n\t\t\t\t\t.attr('height', rowh)\n\t\t\t\t// name a\n\t\t\t\tlet labA\n\t\t\t\tif (prod.geneA) {\n\t\t\t\t\tconst t = prod.geneA.split(',')\n\t\t\t\t\tif (t.length > 2) {\n\t\t\t\t\t\tlabA = t[0] + ',' + t[1] + '...'\n\t\t\t\t\t} else {\n\t\t\t\t\t\tlabA = prod.geneA\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tlabA = ''\n\t\t\t\t}\n\t\t\t\t// gene a label\n\t\t\t\tg_row\n\t\t\t\t\t.append('text')\n\t\t\t\t\t.text(labA)\n\t\t\t\t\t.attr('x', chrAw + s1 + rowh + s7 + geneAw)\n\t\t\t\t\t.attr('y', rowh / 2)\n\t\t\t\t\t.attr('font-size', fontsize)\n\t\t\t\t\t.attr('font-family', 'Courier')\n\t\t\t\t\t.attr(\n\t\t\t\t\t\t'font-weight',\n\t\t\t\t\t\tprod.hlgene ? (prod.hlgene == 1 || prod.hlgene == 3 || prod.hlgene == 4 ? 'bold' : 'normal') : 'normal'\n\t\t\t\t\t)\n\t\t\t\t\t.attr('fill', prod.hlgene ? (prod.hlgene == 4 ? knownprod_c : '#545454') : '#545454')\n\t\t\t\t\t.attr('text-anchor', 'end')\n\t\t\t\t\t.attr('dominant-baseline', 'central')\n\t\t\t\t// a-b conn\n\t\t\t\tg_row\n\t\t\t\t\t.append('line')\n\t\t\t\t\t.attr('x1', chrAw + s1 + rowh + s7 + geneAw + genesp)\n\t\t\t\t\t.attr('x2', chrAw + s1 + rowh + s7 + geneAw + genesp + s2)\n\t\t\t\t\t.attr('y1', rowh / 2)\n\t\t\t\t\t.attr('y2', rowh / 2)\n\t\t\t\t\t.attr('shape-rendering', 'crispEdges')\n\t\t\t\t\t.attr('stroke', 'black')\n\t\t\t\t// ratio b\n\t\t\t\tg_row\n\t\t\t\t\t.append('rect')\n\t\t\t\t\t.attr('fill', client.colorbgright)\n\t\t\t\t\t.attr('x', chrAw + s1 + rowh + s7 + geneAw + genesp + s2)\n\t\t\t\t\t.attr('width', (genesp + geneBw) * prod.ratioB)\n\t\t\t\t\t.attr('height', rowh)\n\t\t\t\t\t.attr('shape-rendering', 'crispEdges')\n\t\t\t\tantisense = false\n\t\t\t\tif (thispair) {\n\t\t\t\t\tconst thisn = thispair.b.isoform\n\t\t\t\t\tif (thisn) {\n\t\t\t\t\t\tconst _gm = this.genome.isoformmatch(thisn, prod.chrB, prod.posB)\n\t\t\t\t\t\tif (_gm && _gm.strand != prod.ortB) {\n\t\t\t\t\t\t\t// gene b antisense\n\t\t\t\t\t\t\tantisense = true\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// gene b box\n\t\t\t\tconst boxb = g_row\n\t\t\t\t\t.append('rect')\n\t\t\t\t\t.attr('fill', 'none')\n\t\t\t\t\t.attr('stroke', antisense ? 'red' : 'black')\n\t\t\t\t\t.attr('shape-rendering', 'crispEdges')\n\t\t\t\t\t.attr('x', chrAw + s1 + rowh + s7 + geneAw + genesp + s2)\n\t\t\t\t\t.attr('width', geneBw + genesp)\n\t\t\t\t\t.attr('height', rowh)\n\t\t\t\t// name b\n\t\t\t\tlet labB\n\t\t\t\tif (prod.geneB) {\n\t\t\t\t\tlet t = prod.geneB.split(',')\n\t\t\t\t\tif (t.length > 2) {\n\t\t\t\t\t\tlabB = t[0] + ',' + t[1] + '...'\n\t\t\t\t\t} else {\n\t\t\t\t\t\tlabB = prod.geneB\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tlabB = ''\n\t\t\t\t}\n\t\t\t\t// gene b label\n\t\t\t\tg_row\n\t\t\t\t\t.append('text')\n\t\t\t\t\t.text(labB)\n\t\t\t\t\t.attr('x', chrAw + s1 + rowh + s7 + geneAw + genesp + s2 + genesp)\n\t\t\t\t\t.attr('y', rowh / 2)\n\t\t\t\t\t.attr('font-size', fontsize)\n\t\t\t\t\t.attr('font-family', 'Courier')\n\t\t\t\t\t.attr(\n\t\t\t\t\t\t'font-weight',\n\t\t\t\t\t\tprod.hlgene ? (prod.hlgene == 2 || prod.hlgene == 3 || prod.hlgene == 4 ? 'bold' : 'normal') : 'normal'\n\t\t\t\t\t)\n\t\t\t\t\t.attr('fill', prod.hlgene ? (prod.hlgene == 4 ? knownprod_c : '#545454') : '#545454')\n\t\t\t\t\t.attr('dominant-baseline', 'central')\n\t\t\t\tif (prod.geneB) {\n\t\t\t\t\tif (prod.geneB in showngenenotip) {\n\t\t\t\t\t} else {\n\t\t\t\t\t\tshowngenenotip[prod.geneB] = 1\n\t\t\t\t\t\tconst lst = []\n\t\t\t\t\t\tfor (const elab in sample.gene2events[prod.geneB]) {\n\t\t\t\t\t\t\tif (!(elab in elabhash)) {\n\t\t\t\t\t\t\t\tlst.push(elab)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (lst.length > 0) {\n\t\t\t\t\t\t\textevt.b = { lst: lst }\n\t\t\t\t\t\t\t// gene b tip\n\t\t\t\t\t\t\textevt.b.circle = g_row\n\t\t\t\t\t\t\t\t.append('circle')\n\t\t\t\t\t\t\t\t.attr('fill', 'white')\n\t\t\t\t\t\t\t\t.attr('stroke', 'black')\n\t\t\t\t\t\t\t\t.attr('cx', chrAw + s1 + rowh + s7 + geneAw + genesp + s2 + genesp + geneBw + s7 + rowh / 2)\n\t\t\t\t\t\t\t\t.attr('cy', rowh / 2)\n\t\t\t\t\t\t\t\t.attr('r', rowh / 2)\n\t\t\t\t\t\t\tif (lst.length > 1) {\n\t\t\t\t\t\t\t\textevt.b.text = g_row\n\t\t\t\t\t\t\t\t\t.append('text')\n\t\t\t\t\t\t\t\t\t.text(lst.length)\n\t\t\t\t\t\t\t\t\t.attr('x', chrAw + s1 + rowh + s7 + geneAw + genesp + s2 + genesp + geneBw + s7 + rowh / 2)\n\t\t\t\t\t\t\t\t\t.attr('y', rowh / 2)\n\t\t\t\t\t\t\t\t\t.attr('text-anchor', 'middle')\n\t\t\t\t\t\t\t\t\t.attr('font-size', rowh2)\n\t\t\t\t\t\t\t\t\t.attr('dominant-baseline', 'middle')\n\t\t\t\t\t\t\t\t\t.attr('fill', 'black')\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tg_row\n\t\t\t\t\t\t\t\t.append('line')\n\t\t\t\t\t\t\t\t.attr('x1', chrAw + s1 + rowh + s7 + geneAw + genesp + s2 + genesp + geneBw)\n\t\t\t\t\t\t\t\t.attr('x2', chrAw + s1 + rowh + s7 + geneAw + genesp + s2 + genesp + geneBw + s7)\n\t\t\t\t\t\t\t\t.attr('y1', rowh / 2)\n\t\t\t\t\t\t\t\t.attr('y2', rowh / 2)\n\t\t\t\t\t\t\t\t.attr('stroke', 'black')\n\t\t\t\t\t\t\t\t.attr('shape-rendering', 'crispEdges')\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// chr b\n\t\t\t\tg_row\n\t\t\t\t\t.append('text')\n\t\t\t\t\t.text(prod.chrB)\n\t\t\t\t\t.attr('x', chrAw + s1 + rowh + s7 + geneAw + genesp + s2 + genesp + geneBw + s7 + rowh + s1)\n\t\t\t\t\t.attr('y', rowh / 2)\n\t\t\t\t\t.attr('font-size', fontsize - 4)\n\t\t\t\t\t.attr('dominant-baseline', 'middle')\n\t\t\t\t\t.attr('fill', textcolor)\n\t\t\t\t// event logo\n\t\t\t\tlet x = chrAw + s1 + rowh + s7 + geneAw + genesp + s2 + genesp + geneBw + s7 + rowh + s1 + chrBw + s3\n\t\t\t\tconst x0 = x\n\t\t\t\tconst logobg = g_row\n\t\t\t\t\t.append('rect')\n\t\t\t\t\t.attr('fill', 'white')\n\t\t\t\t\t.attr('stroke', '#858585')\n\t\t\t\t\t.attr('x', x)\n\t\t\t\t\t.attr('y', -1.5)\n\t\t\t\t\t.attr('width', evt.svg.logow)\n\t\t\t\t\t.attr('height', rowh + 2)\n\t\t\t\t\t.attr('rx', 5)\n\t\t\t\t\t.attr('ry', 5)\n\t\t\t\tx += s5\n\t\t\t\tprod.hook.mainRating = g_row\n\t\t\t\t\t.append('text')\n\t\t\t\t\t.text(prod.rating)\n\t\t\t\t\t.attr('font-size', fontsize)\n\t\t\t\t\t.attr('font-family', client.font)\n\t\t\t\t\t.attr('fill', '#858585')\n\t\t\t\t\t.attr('x', x)\n\t\t\t\t\t.attr('y', rowh / 2)\n\t\t\t\t\t.attr('dominant-baseline', 'middle')\n\t\t\t\tx += evt.svg.ratingw + s5\n\t\t\t\tprod.hook.mainFrame = {}\n\t\t\t\tprod.hook.mainFrame.bg = g_row\n\t\t\t\t\t.append('rect')\n\t\t\t\t\t.attr('x', x + 1)\n\t\t\t\t\t.attr('y', 3)\n\t\t\t\t\t.attr('width', evt.svg.framew)\n\t\t\t\t\t.attr('height', rowh - 7)\n\t\t\t\t\t.attr('shape-rendering', 'crispEdges')\n\t\t\t\tif (prod.usepair) {\n\t\t\t\t\tprod.hook.mainFrame.bg.attr('fill', prod.usepair.inframe ? client.colorinframe : client.coloroutframe)\n\t\t\t\t} else {\n\t\t\t\t\tprod.hook.mainFrame.bg.attr('fill', 'none').attr('stroke', 'black')\n\t\t\t\t}\n\t\t\t\tprod.hook.mainFrame.text = g_row\n\t\t\t\t\t.append('text')\n\t\t\t\t\t.text(evt.svg.frameword)\n\t\t\t\t\t.attr('font-size', fontsizeframe)\n\t\t\t\t\t.attr('font-family', client.font)\n\t\t\t\t\t.attr('fill', prod.usepair ? 'white' : 'black')\n\t\t\t\t\t.attr('x', x + 1 + evt.svg.framew / 2)\n\t\t\t\t\t.attr('text-anchor', 'middle')\n\t\t\t\t\t.attr('y', rowh / 2)\n\t\t\t\t\t.attr('dominant-baseline', 'middle')\n\t\t\t\tx += evt.svg.framew + s5\n\t\t\t\tprod.hook.mainType = g_row\n\t\t\t\t\t.append('text')\n\t\t\t\t\t.text(prod.type2)\n\t\t\t\t\t.attr('font-size', fontsize)\n\t\t\t\t\t.attr('font-family', client.font)\n\t\t\t\t\t.attr('fill', '#858585')\n\t\t\t\t\t.attr('x', x)\n\t\t\t\t\t.attr('y', rowh / 2)\n\t\t\t\t\t.attr('dominant-baseline', 'middle')\n\t\t\t\tx += evt.svg.typew + s5\n\t\t\t\tg_row\n\t\t\t\t\t.append('text')\n\t\t\t\t\t.text(prod.featureA)\n\t\t\t\t\t.attr('font-size', fontsizefeature)\n\t\t\t\t\t.attr('font-family', client.font)\n\t\t\t\t\t.attr('fill', 'black')\n\t\t\t\t\t.attr('x', x)\n\t\t\t\t\t.attr('y', rowh / 4)\n\t\t\t\t\t.attr('dominant-baseline', 'middle')\n\t\t\t\tg_row\n\t\t\t\t\t.append('text')\n\t\t\t\t\t.text(prod.featureB)\n\t\t\t\t\t.attr('font-size', fontsizefeature)\n\t\t\t\t\t.attr('font-family', client.font)\n\t\t\t\t\t.attr('fill', 'black')\n\t\t\t\t\t.attr('x', x)\n\t\t\t\t\t.attr('y', (rowh * 3) / 4)\n\t\t\t\t\t.attr('dominant-baseline', 'middle')\n\t\t\t\tx += evt.svg.featurew + s5\n\t\t\t\tg_row\n\t\t\t\t\t.append('text')\n\t\t\t\t\t.text(Math.floor(prod.score))\n\t\t\t\t\t.attr('font-size', fontsize)\n\t\t\t\t\t.attr('font-family', client.font)\n\t\t\t\t\t.attr('fill', '#858585')\n\t\t\t\t\t.attr('x', x)\n\t\t\t\t\t.attr('y', rowh / 2)\n\t\t\t\t\t.attr('dominant-baseline', 'middle')\n\t\t\t\tx += evt.svg.scorew + s5 + s4\n\t\t\t\t// logo kick\n\t\t\t\tg_row\n\t\t\t\t\t.append('rect')\n\t\t\t\t\t.attr('fill', 'white')\n\t\t\t\t\t.attr('fill-opacity', 0)\n\t\t\t\t\t.attr('stroke', 'none')\n\t\t\t\t\t.attr('x', x0)\n\t\t\t\t\t.attr('y', -1.5)\n\t\t\t\t\t.attr('width', evt.svg.logow)\n\t\t\t\t\t.attr('height', rowh + 2)\n\t\t\t\t\t.on('mouseover', () => {\n\t\t\t\t\t\tlogobg.attr('stroke-width', '2')\n\t\t\t\t\t\tconst d = tip.clear().showunder(logobg.node()).d.append('div')\n\t\t\t\t\t\tthis.prodstat(prod, d)\n\t\t\t\t\t})\n\t\t\t\t\t.on('mouseout', () => {\n\t\t\t\t\t\tlogobg.attr('stroke-width', '1')\n\t\t\t\t\t\ttip.hide()\n\t\t\t\t\t})\n\t\t\t\tif (prodlst.length > 1) {\n\t\t\t\t\tconst logobg2 = g_row\n\t\t\t\t\t\t.append('rect')\n\t\t\t\t\t\t.attr('fill', 'none')\n\t\t\t\t\t\t.attr('stroke', '#858585')\n\t\t\t\t\t\t.attr('x', x)\n\t\t\t\t\t\t.attr('y', 3.5)\n\t\t\t\t\t\t.attr('width', etw)\n\t\t\t\t\t\t.attr('height', rowh - 4)\n\t\t\t\t\t\t.attr('rx', 5)\n\t\t\t\t\t\t.attr('ry', 5)\n\t\t\t\t\tg_row\n\t\t\t\t\t\t.append('text')\n\t\t\t\t\t\t.text(prodlst.length - 1)\n\t\t\t\t\t\t.attr('fill', 'black')\n\t\t\t\t\t\t.attr('font-size', fontsizefeature)\n\t\t\t\t\t\t.attr('font-family', client.font)\n\t\t\t\t\t\t.attr('x', x + etw / 2)\n\t\t\t\t\t\t.attr('y', 3.5 + (rowh - 3.5) / 2)\n\t\t\t\t\t\t.attr('text-anchor', 'middle')\n\t\t\t\t\t\t.attr('dominant-baseline', 'middle')\n\t\t\t\t\tg_row\n\t\t\t\t\t\t.append('rect')\n\t\t\t\t\t\t.attr('fill', 'white')\n\t\t\t\t\t\t.attr('fill-opacity', 0)\n\t\t\t\t\t\t.attr('x', x)\n\t\t\t\t\t\t.attr('y', 3.5)\n\t\t\t\t\t\t.attr('width', etw)\n\t\t\t\t\t\t.attr('height', rowh - 4)\n\t\t\t\t\t\t.on('mouseover', event => {\n\t\t\t\t\t\t\tlogobg2.attr('stroke-width', '2')\n\t\t\t\t\t\t\tconst table = tip\n\t\t\t\t\t\t\t\t.clear()\n\t\t\t\t\t\t\t\t.showunder(event.target)\n\t\t\t\t\t\t\t\t.d.append('table')\n\t\t\t\t\t\t\t\t.style('border-spacing', '10px')\n\t\t\t\t\t\t\t\t.style('border-collapse', 'separate')\n\t\t\t\t\t\t\tconst tr1 = table.append('tr')\n\t\t\t\t\t\t\tconst tr2 = table.append('tr')\n\t\t\t\t\t\t\tfor (var k = 1; k < prodlst.length; k++) {\n\t\t\t\t\t\t\t\tthis.eventlogo([prodlst[k]], tr1.append('td'))\n\t\t\t\t\t\t\t\tthis.prodstat(prodlst[k], tr2.append('td'))\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.on('mouseout', () => {\n\t\t\t\t\t\t\tlogobg2.attr('stroke-width', '1')\n\t\t\t\t\t\t\ttip.hide()\n\t\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\t// recurrence\n\t\t\t\tx =\n\t\t\t\t\tchrAw +\n\t\t\t\t\ts1 +\n\t\t\t\t\trowh +\n\t\t\t\t\ts7 +\n\t\t\t\t\tgeneAw +\n\t\t\t\t\tgenesp +\n\t\t\t\t\ts2 +\n\t\t\t\t\tgenesp +\n\t\t\t\t\tgeneBw +\n\t\t\t\t\ts7 +\n\t\t\t\t\trowh +\n\t\t\t\t\ts1 +\n\t\t\t\t\tchrBw +\n\t\t\t\t\ts3 +\n\t\t\t\t\teventlogow +\n\t\t\t\t\ts6\n\t\t\t\tconst text = g_row\n\t\t\t\t\t.append('text')\n\t\t\t\t\t.text(evt.svg.recurtext)\n\t\t\t\t\t.attr('font-size', fontsize - 4)\n\t\t\t\t\t.attr('font-family', client.font)\n\t\t\t\t\t.attr('fill', evt.svg.recurtextcolor)\n\t\t\t\t\t.attr('x', x)\n\t\t\t\t\t.attr('y', rowh / 2)\n\t\t\t\t\t.attr('dominant-baseline', 'middle')\n\t\t\t\tif (evt.svg.hasrecurrence) {\n\t\t\t\t\ttext\n\t\t\t\t\t\t.attr('class', 'sja_svgtext2')\n\t\t\t\t\t\t.on('mouseover', event => {\n\t\t\t\t\t\t\tconst p = event.target.getBoundingClientRect()\n\t\t\t\t\t\t\ttip.clear().show(p.left + p.width + 10, p.top - 15)\n\t\t\t\t\t\t\tconst slst = this.elab2sample[evt.label]\n\t\t\t\t\t\t\tconst dd = tip.d\n\t\t\t\t\t\t\tdd.append('div')\n\t\t\t\t\t\t\t\t.style('margin', '10px')\n\t\t\t\t\t\t\t\t.style('color', '#aaa')\n\t\t\t\t\t\t\t\t.text('This fusion is recurrent in other samples:')\n\t\t\t\t\t\t\tconst table = dd.append('table').style('border-spacing', '10px').style('border-collapse', 'separate')\n\t\t\t\t\t\t\tfor (const s of slst) {\n\t\t\t\t\t\t\t\tif (s.name == sample.name) {\n\t\t\t\t\t\t\t\t\t// self, no show\n\t\t\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst tr = table.append('tr')\n\t\t\t\t\t\t\t\ttr.append('td').style('font-weight', 'bold').style('color', '#858585').text(s.name)\n\t\t\t\t\t\t\t\tthis.eventlogo(s.events[evt.label], tr.append('td'))\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.on('mouseout', () => tip.hide())\n\t\t\t\t}\n\t\t\t\t// row kick\n\t\t\t\tg_row\n\t\t\t\t\t.append('rect')\n\t\t\t\t\t.attr('x', chrAw + s1 + rowh + s7)\n\t\t\t\t\t.attr('width', geneAw + genesp + s2 + genesp + geneBw)\n\t\t\t\t\t.attr('height', rowh)\n\t\t\t\t\t.attr('fill', 'white')\n\t\t\t\t\t.attr('fill-opacity', 0)\n\t\t\t\t\t.on('mouseover', event => {\n\t\t\t\t\t\tboxa.attr('stroke-width', 2)\n\t\t\t\t\t\tboxb.attr('stroke-width', 2)\n\t\t\t\t\t\t/* old behavior to remember the one under highlight and not to re-show tip on it\n\t\t\t\t\t\tif (evt.inview) return\n\t\t\t\t\t\tfor (const eg2 of eglst) {\n\t\t\t\t\t\t\tfor (const e2 of eg2.lst) {\n\t\t\t\t\t\t\t\te2.inview = false\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tevt.inview = true\n\t\t\t\t\t\td3select(document.body).on('mousedown', () => (evt.inview = false))\n\t\t\t\t\t\t*/\n\t\t\t\t\t\tconst p = event.target.getBoundingClientRect()\n\t\t\t\t\t\ttip.clear().show(p.left + p.width + s7 / 2, p.top - 30)\n\t\t\t\t\t\tthis.showsvpairs({\n\t\t\t\t\t\t\tprodlst: evt.lst,\n\t\t\t\t\t\t\tholder: tip.d,\n\t\t\t\t\t\t\tnodetail: true,\n\t\t\t\t\t\t\tsample: sample,\n\t\t\t\t\t\t\teglst: eglst,\n\t\t\t\t\t\t\tshowothersample: true\n\t\t\t\t\t\t})\n\t\t\t\t\t})\n\t\t\t\t\t.on('mouseout', () => {\n\t\t\t\t\t\ttip.hide()\n\t\t\t\t\t\tboxa.attr('stroke-width', 1)\n\t\t\t\t\t\tboxb.attr('stroke-width', 1)\n\t\t\t\t\t})\n\t\t\t\t\t.on('click', event => {\n\t\t\t\t\t\tif (evt.inclick) {\n\t\t\t\t\t\t\t// shake\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t}\n\t\t\t\t\t\tevt.inclick = true\n\t\t\t\t\t\tconst p = event.target.getBoundingClientRect()\n\t\t\t\t\t\tconst pane3 = client.newpane({\n\t\t\t\t\t\t\tx: p.left + p.width + s7 + rowh + s1 + chrBw + s3 + eventlogow + s6 + recurw + 5,\n\t\t\t\t\t\t\ty: p.top - 100,\n\t\t\t\t\t\t\tclose: function () {\n\t\t\t\t\t\t\t\tevt.inclick = false\n\t\t\t\t\t\t\t\tpane3.pane.remove()\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t\t\tconst prod = evt.lst[0]\n\t\t\t\t\t\tpane3.header.html(\n\t\t\t\t\t\t\t'<span style=\"padding:2px 4px;background-color:' +\n\t\t\t\t\t\t\t\tclient.colorbgleft +\n\t\t\t\t\t\t\t\t';\">' +\n\t\t\t\t\t\t\t\t(prod.geneA ? prod.geneA : prod.chrA) +\n\t\t\t\t\t\t\t\t'</span>' +\n\t\t\t\t\t\t\t\t'<span style=\"padding:2px 4px;background-color:' +\n\t\t\t\t\t\t\t\tclient.colorbgright +\n\t\t\t\t\t\t\t\t';\">' +\n\t\t\t\t\t\t\t\t(prod.geneB ? prod.geneB : prod.chrB) +\n\t\t\t\t\t\t\t\t'</span>'\n\t\t\t\t\t\t)\n\t\t\t\t\t\tthis.showsvpairs({\n\t\t\t\t\t\t\tprodlst: evt.lst,\n\t\t\t\t\t\t\tholder: pane3.body\n\t\t\t\t\t\t})\n\t\t\t\t\t})\n\t\t\t\t// external events for a, kick\n\t\t\t\tif (extevt.a) {\n\t\t\t\t\tg_row\n\t\t\t\t\t\t.append('circle')\n\t\t\t\t\t\t.attr('cx', chrAw + s1 + rowh / 2)\n\t\t\t\t\t\t.attr('cy', rowh / 2)\n\t\t\t\t\t\t.attr('r', rowh / 2)\n\t\t\t\t\t\t.attr('fill', 'white')\n\t\t\t\t\t\t.attr('fill-opacity', 0)\n\t\t\t\t\t\t.on('mouseover', event => this.extevt_mover(extevt.a, event.target, sample))\n\t\t\t\t\t\t.on('mouseout', () => {\n\t\t\t\t\t\t\tthis.extevt_mo(extevt.a)\n\t\t\t\t\t\t\ttip.hide()\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.on('click', event => {\n\t\t\t\t\t\t\tthis.extevt_c(extevt.a, event.target, sample)\n\t\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tif (extevt.b) {\n\t\t\t\t\tg_row\n\t\t\t\t\t\t.append('circle')\n\t\t\t\t\t\t.attr('cx', chrAw + s1 + rowh + s7 + geneAw + genesp + s2 + genesp + geneBw + s7 + rowh / 2)\n\t\t\t\t\t\t.attr('cy', rowh / 2)\n\t\t\t\t\t\t.attr('r', rowh / 2)\n\t\t\t\t\t\t.attr('fill', 'white')\n\t\t\t\t\t\t.attr('fill-opacity', 0)\n\t\t\t\t\t\t.on('mouseover', event => this.extevt_mover(extevt.b, event.target, sample))\n\t\t\t\t\t\t.on('mouseout', () => {\n\t\t\t\t\t\t\tthis.extevt_mo(extevt.b)\n\t\t\t\t\t\t\ttip.hide()\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.on('click', event => this.extevt_c(extevt.b, event.target, sample))\n\t\t\t\t}\n\t\t\t\ty1 += rowh + rows\n\t\t\t\tevtid++\n\t\t\t}\n\t\t\ty += groupheight + (eg.lst.length > 1 ? gvpad : 0)\n\t\t}\n\t\tholder.style('display', 'none')\n\t}\n\n\textevt_mover(ext, dom, sample) {\n\t\text.circle.attr('fill', '#858585')\n\t\tif (ext.text) {\n\t\t\text.text.attr('fill', 'white')\n\t\t}\n\t\ttip.clear().showunder(dom)\n\t\ttip.d.append('div').style('margin', '10px').style('color', '#aaa').text('Associated fusions from this sample:')\n\t\tthis.extevt_table(ext.lst, tip.d, sample)\n\t}\n\textevt_mo(ext) {\n\t\text.circle.attr('fill', 'white')\n\t\tif (ext.text) {\n\t\t\text.text.attr('fill', 'black')\n\t\t}\n\t}\n\textevt_c(ext, dom, sample) {\n\t\tconst p = dom.getBoundingClientRect()\n\t\tconst pane = client.newpane({ x: p.left, y: p.top + p.height + 10 })\n\t\tthis.extevt_table(ext.lst, pane.body, sample)\n\t}\n\textevt_table(lst, holder, sample) {\n\t\tconst table = holder.append('table').style('border-spacing', '10px').style('border-collapse', 'separate')\n\t\tfor (const elab of lst) {\n\t\t\tconst tr = table.append('tr')\n\t\t\tconst prodlst = sample.events[elab]\n\t\t\tif (!prodlst) {\n\t\t\t\ttr.append('<td colspan=2 style=\"color:red\">No products found for ' + elab + '</td>')\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tconst prod = prodlst[0]\n\t\t\ttr.append('td')\n\t\t\t\t.style('text-align', 'right')\n\t\t\t\t.text(prod.geneA ? prod.geneA : prod.chrA)\n\t\t\ttr.append('td').text(prod.geneB ? prod.geneB : prod.chrB)\n\t\t\tthis.eventlogo(prodlst, tr.append('td'))\n\t\t}\n\t}\n\teventlogo(prodlst, holder) {\n\t\tconst d = holder.append('div')\n\t\tif (!prodlst || prodlst.length == 0) {\n\t\t\td.style('color', 'red').text('No products')\n\t\t} else {\n\t\t\tconst p = prodlst[0]\n\t\t\td.append('div')\n\t\t\t\t.style('display', 'inline-block')\n\t\t\t\t.style('padding', '2px 4px')\n\t\t\t\t.style('border', 'solid 1px #858585')\n\t\t\t\t.style('border-radius', '5px')\n\t\t\t\t.html(\n\t\t\t\t\tp.rating +\n\t\t\t\t\t\t'&nbsp;' +\n\t\t\t\t\t\t'<span style=\"font-size:70%;vertical-align:2px;' +\n\t\t\t\t\t\t(p.usepair\n\t\t\t\t\t\t\t? p.usepair.inframe\n\t\t\t\t\t\t\t\t? 'padding:2px 4px;background-color:' + client.colorinframe + ';color:white;\">IN'\n\t\t\t\t\t\t\t\t: 'padding:2px 4px;background-color:' + client.coloroutframe + ';color:white;\">O'\n\t\t\t\t\t\t\t: 'padding:1px 3px;border:solid 1px black;background-color:white;color:black;\">?') +\n\t\t\t\t\t\t'</span>' +\n\t\t\t\t\t\t'&nbsp;<span style=\"color:#858585\">' +\n\t\t\t\t\t\tp.type2 +\n\t\t\t\t\t\t'</span>&nbsp;' +\n\t\t\t\t\t\t'<div style=\"display:inline-block;font-size:70%;line-height:.9\">' +\n\t\t\t\t\t\tp.featureA +\n\t\t\t\t\t\t'<br>' +\n\t\t\t\t\t\tp.featureB +\n\t\t\t\t\t\t'</div>' +\n\t\t\t\t\t\t'&nbsp;' +\n\t\t\t\t\t\tMath.floor(p.score)\n\t\t\t\t)\n\t\t\tif (prodlst.length > 1) {\n\t\t\t\td.append('div')\n\t\t\t\t\t.style('display', 'inline-block')\n\t\t\t\t\t.style('margin-left', '10px')\n\t\t\t\t\t.style('padding', '2px 4px')\n\t\t\t\t\t.style('font-size', '.7em')\n\t\t\t\t\t.style('border', 'solid 1px #858585')\n\t\t\t\t\t.style('border-radius', 5)\n\t\t\t\t\t.text(prodlst.length - 1)\n\t\t\t}\n\t\t}\n\t\treturn d\n\t}\n\n\tprodstat(prod, holder) {\n\t\tholder.append('p').text('Product id: ' + prod.prodid)\n\t\tconst alertcolor = '#FFb3b3',\n\t\t\tbg = '#f1f1f1'\n\t\tconst table = holder.append('table').style('border-spacing', '8px').style('border-collapse', 'separate')\n\t\tlet tr = table.append('tr')\n\t\ttr.append('td')\n\t\ttr.append('td')\n\t\t\t.style('background-color', bg)\n\t\t\t.text(prod.geneA ? prod.geneA : prod.chrA)\n\t\ttr.append('td')\n\t\t\t.style('background-color', bg)\n\t\t\t.text(prod.geneB ? prod.geneB : prod.chrB)\n\t\ttr = table.append('tr')\n\t\ttr.append('td').style('font-size', '80%').style('background-color', bg).text('chimeric reads')\n\t\ttr.append('td')\n\t\t\t.style('padding', '5px')\n\t\t\t.style('background-color', prod.readsA <= this.cf_reads ? alertcolor : '')\n\t\t\t.text(prod.readsA)\n\t\ttr.append('td')\n\t\t\t.style('padding', '5px')\n\t\t\t.style('background-color', prod.readsB <= this.cf_reads ? alertcolor : '')\n\t\t\t.text(prod.readsB)\n\t\ttr = table.append('tr')\n\t\ttr.append('td').style('font-size', '80%').style('background-color', bg).text('ratio')\n\t\ttr.append('td')\n\t\t\t.style('padding', '5px')\n\t\t\t.style('background-color', prod.ratioA <= this.cf_ratio ? alertcolor : '')\n\t\t\t.text(Math.ceil(prod.ratioA * 100) + '%')\n\t\ttr.append('td')\n\t\t\t.style('padding', '5px')\n\t\t\t.style('background-color', prod.ratioB <= this.cf_ratio ? alertcolor : '')\n\t\t\t.text(Math.ceil(prod.ratioB * 100) + '%')\n\t\ttr = table.append('tr')\n\t\ttr.append('td').style('font-size', '80%').style('background-color', bg).text('contig length')\n\t\ttr.append('td')\n\t\t\t.style('padding', '5px')\n\t\t\t.style('background-color', prod.matchA <= this.cf_match ? alertcolor : '')\n\t\t\t.text(prod.matchA + ' bp')\n\t\ttr.append('td')\n\t\t\t.style('padding', '5px')\n\t\t\t.style('background-color', prod.matchB <= this.cf_match ? alertcolor : '')\n\t\t\t.text(prod.matchB + ' bp')\n\t\ttr = table.append('tr')\n\t\ttr.append('td').style('font-size', '80%').style('background-color', bg).text('repeat score')\n\t\ttr.append('td')\n\t\t\t.style('padding', '5px')\n\t\t\t.style('background-color', prod.repeatA >= this.cf_repeat ? alertcolor : '')\n\t\t\t.text(prod.repeatA)\n\t\ttr.append('td')\n\t\t\t.style('padding', '5px')\n\t\t\t.style('background-color', prod.repeatB >= this.cf_repeat ? alertcolor : '')\n\t\t\t.text(prod.repeatB)\n\t}\n\n\tshowsvpairs(arg) {\n\t\t// individual pairs show separately\n\t\tconst table = arg.holder.append('table').style('border-spacing', '10px').style('border-collapse', 'separate')\n\t\tconst tr = table.append('tr')\n\t\tconst _tr = table.append('tr')\n\t\tconst expressiontd = _tr.append('td').attr('colspan', arg.prodlst.length)\n\t\tconst tr2 = table.append('tr')\n\t\t// collect genes for showing expression\n\t\tconst geneset = new Set()\n\t\tfor (const prod of arg.prodlst) {\n\t\t\tif (prod.geneA) {\n\t\t\t\tgeneset.add(prod.geneA)\n\t\t\t}\n\t\t\tif (prod.geneB) {\n\t\t\t\tgeneset.add(prod.geneB)\n\t\t\t}\n\t\t\tconst td = tr.append('td').style('vertical-align', 'top')\n\t\t\t// edit function\n\t\t\tif (arg.nodetail) {\n\t\t\t\tconst div = td.append('div')\n\t\t\t\tdiv\n\t\t\t\t\t.append('span')\n\t\t\t\t\t.style('padding-right', '20px')\n\t\t\t\t\t.text('Product id: ' + prod.prodid)\n\t\t\t\tconst ratingsl = div\n\t\t\t\t\t.append('select')\n\t\t\t\t\t.style('margin-right', '5px')\n\t\t\t\t\t.on('change', event => {\n\t\t\t\t\t\tconst sl = event.target\n\t\t\t\t\t\tconst newv = sl.options[sl.selectedIndex].innerHTML\n\t\t\t\t\t\tprod.rating = newv\n\t\t\t\t\t\tif (prod.hook.mainRating) {\n\t\t\t\t\t\t\tprod.hook.mainRating.text(newv)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (prod.hook.lessRating) {\n\t\t\t\t\t\t\tprod.hook.lessRating.text(newv)\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\tconst framesl = div\n\t\t\t\t\t.append('select')\n\t\t\t\t\t.style('margin-right', '5px')\n\t\t\t\t\t.on('change', event => {\n\t\t\t\t\t\tconst sl = event.target\n\t\t\t\t\t\tconst inframe = sl.options[sl.selectedIndex].innerHTML == 'in-frame'\n\t\t\t\t\t\tprod.usepair.inframe = inframe\n\t\t\t\t\t\tif (prod.hook.mainFrame) {\n\t\t\t\t\t\t\tprod.hook.mainFrame.text.text(inframe ? 'IN' : 'O')\n\t\t\t\t\t\t\tprod.hook.mainFrame.bg.attr('fill', inframe ? client.colorinframe : client.coloroutframe)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (prod.hook.lessFrame) {\n\t\t\t\t\t\t\tprod.hook.lessFrame.html(\n\t\t\t\t\t\t\t\tinframe\n\t\t\t\t\t\t\t\t\t? '<span style=\"background-color:' +\n\t\t\t\t\t\t\t\t\t\t\tclient.colorinframe +\n\t\t\t\t\t\t\t\t\t\t\t';color:white;padding:2px 3px;font-size:80%;white-space:nowrap\">In frame</span>'\n\t\t\t\t\t\t\t\t\t: '<span style=\"background-color:' +\n\t\t\t\t\t\t\t\t\t\t\tclient.coloroutframe +\n\t\t\t\t\t\t\t\t\t\t\t';color:white;padding:2px 3px;font-size:80%;white-space:nowrap\">Out of frame</span>'\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\tconst typesl = div\n\t\t\t\t\t.append('select')\n\t\t\t\t\t.style('margin-right', '5px')\n\t\t\t\t\t.on('change', event => {\n\t\t\t\t\t\tconst sl = event.target\n\t\t\t\t\t\tconst i = sl.selectedIndex\n\t\t\t\t\t\tconst newv = sl.options[i].innerHTML\n\t\t\t\t\t\tprod.type2 = newv\n\t\t\t\t\t\tif (prod.hook.mainType) {\n\t\t\t\t\t\t\tprod.hook.mainType.text(newv)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tprod.iscloss = i == 0\n\t\t\t\t\t\tprod.isnloss = i == 1\n\t\t\t\t\t\tprod.isfusion = i == 2\n\t\t\t\t\t\tprod.isitd = i == 3\n\t\t\t\t\t\tprod.isuptss = i == 4\n\t\t\t\t\t\tprod.isother = i == 5\n\t\t\t\t\t})\n\t\t\t\tconst effectsl = div\n\t\t\t\t\t.append('select')\n\t\t\t\t\t.style('margin-right', '5px')\n\t\t\t\t\t.on('change', event => {\n\t\t\t\t\t\tconst sl = event.target\n\t\t\t\t\t\tconst newv = sl.options[sl.selectedIndex].innerHTML\n\t\t\t\t\t\tprod.functioneffect = newv\n\t\t\t\t\t})\n\t\t\t\tdiv\n\t\t\t\t\t.append('button')\n\t\t\t\t\t.text('Create group')\n\t\t\t\t\t.on('click', event => {\n\t\t\t\t\t\tlet dnew = document.createElement('div')\n\t\t\t\t\t\tdiv.node().insertBefore(dnew, event.target)\n\t\t\t\t\t\td3select(event.target).remove()\n\t\t\t\t\t\tdnew = d3select(dnew)\n\t\t\t\t\t\tdnew.style('display', 'inline-block')\n\t\t\t\t\t\tif (!arg.eglst) {\n\t\t\t\t\t\t\t// this is showing recurrent event from other samples, not able to dig up eglst\n\t\t\t\t\t\t\tdnew.text('Cannot do it here: please go to sample ' + arg.sample.name)\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdnew\n\t\t\t\t\t\t\t.append('input')\n\t\t\t\t\t\t\t.attr('size', 10)\n\t\t\t\t\t\t\t.property('value', prod.prodid + ',')\n\t\t\t\t\t\tdnew\n\t\t\t\t\t\t\t.append('button')\n\t\t\t\t\t\t\t.style('margin', '0px 10px')\n\t\t\t\t\t\t\t.text('Apply')\n\t\t\t\t\t\t\t.on('click', event => {\n\t\t\t\t\t\t\t\tconst lst0 = event.target.previousSibling.value.trim().split(',')\n\t\t\t\t\t\t\t\tconst goodid = []\n\t\t\t\t\t\t\t\tfor (const i of lst0) {\n\t\t\t\t\t\t\t\t\tconst j = Number.parseInt(i)\n\t\t\t\t\t\t\t\t\tif (Number.isNaN(j)) return alert('invalid id ' + i)\n\t\t\t\t\t\t\t\t\tif (this.prodidisinvalid(j, arg.sample)) return alert('invalid id ' + j)\n\t\t\t\t\t\t\t\t\tgoodid.push(j)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (goodid.length <= 1) return alert('need at least 2 id')\n\t\t\t\t\t\t\t\tconst newevtlst = []\n\t\t\t\t\t\t\t\tfor (const i of goodid) {\n\t\t\t\t\t\t\t\t\tconst thisprod = this.extractprod(i, arg.sample)\n\t\t\t\t\t\t\t\t\tif (thisprod) {\n\t\t\t\t\t\t\t\t\t\tnewevtlst.push({ label: thisprod.eventlabel, lst: [thisprod] })\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\treturn alert('invalid id ' + i)\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (newevtlst.length <= 1) return alert('less than 2 products cannot make a group')\n\t\t\t\t\t\t\t\targ.eglst.unshift({ lst: newevtlst, ismsg: true })\n\t\t\t\t\t\t\t\t// remake entire sample\n\t\t\t\t\t\t\t\tthis.showsample(arg.sample)\n\t\t\t\t\t\t\t\t// done\n\t\t\t\t\t\t\t\ttip.hide()\n\t\t\t\t\t\t\t})\n\t\t\t\t\t})\n\t\t\t\t// <select>\n\t\t\t\tratingsl.append('option').text('HQ')\n\t\t\t\tratingsl.append('option').text('LQ')\n\t\t\t\tratingsl.append('option').text('RT')\n\t\t\t\tratingsl.append('option').text('bad')\n\t\t\t\tratingsl.append('option').text('Major')\n\t\t\t\tswitch (prod.rating) {\n\t\t\t\t\tcase 'HQ':\n\t\t\t\t\t\tratingsl.property('selectedindex', 0)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase 'LQ':\n\t\t\t\t\t\tratingsl.property('selectedIndex', 1)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase 'RT':\n\t\t\t\t\t\tratingsl.property('selectedIndex', 2)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase 'bad':\n\t\t\t\t\t\tratingsl.property('selectedIndex', 3)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase 'Major':\n\t\t\t\t\t\tratingsl.property('selectedIndex', 4)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tdefault:\n\t\t\t\t\t\talert('unknown rating: ' + prod.rating)\n\t\t\t\t}\n\t\t\t\tframesl.append('option').text('in-frame')\n\t\t\t\tframesl.append('option').text('out-of-frame')\n\t\t\t\tif (!prod.usepair) {\n\t\t\t\t\tframesl.attr('disabled', 1)\n\t\t\t\t} else {\n\t\t\t\t\tframesl.property('selectedIndex', prod.usepair.inframe ? 0 : 1)\n\t\t\t\t}\n\t\t\t\ttypesl.append('option').text('CLoss')\n\t\t\t\ttypesl.append('option').text('NLoss')\n\t\t\t\ttypesl.append('option').text('Fusion')\n\t\t\t\ttypesl.append('option').text('ITD')\n\t\t\t\ttypesl.append('option').text('upTSS')\n\t\t\t\ttypesl.append('option').text('other')\n\t\t\t\tif (prod.iscloss) {\n\t\t\t\t\ttypesl.property('selectedIndex', 0)\n\t\t\t\t} else if (prod.isnloss) {\n\t\t\t\t\ttypesl.property('selectedIndex', 1)\n\t\t\t\t} else if (prod.isfusion) {\n\t\t\t\t\ttypesl.property('selectedIndex', 2)\n\t\t\t\t} else if (prod.isitd) {\n\t\t\t\t\ttypesl.property('selectedIndex', 3)\n\t\t\t\t} else if (prod.isuptss) {\n\t\t\t\t\ttypesl.property('selectedIndex', 4)\n\t\t\t\t} else if (prod.isother) {\n\t\t\t\t\ttypesl.property('selectedIndex', 5)\n\t\t\t\t} else {\n\t\t\t\t\talert('unknown type2: ' + prod.type2)\n\t\t\t\t}\n\t\t\t\t// <select> done\n\t\t\t\teffectsl.append('option').text('unknown effect')\n\t\t\t\teffectsl.append('option').text('fusion gene')\n\t\t\t\teffectsl.append('option').text('truncation, activated oncogene')\n\t\t\t\teffectsl.append('option').text('truncation, loss-of-function')\n\t\t\t\teffectsl.append('option').text('truncation, no consequence')\n\t\t\t\teffectsl.append('option').text('ITD')\n\t\t\t\tswitch (prod.functioneffect) {\n\t\t\t\t\tcase undefined:\n\t\t\t\t\t\teffectsl.property('selectedIndex', 0)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase 'fusion gene':\n\t\t\t\t\t\teffectsl.property('selectedIndex', 1)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase 'truncation, activated oncogene':\n\t\t\t\t\t\teffectsl.property('selectedIndex', 2)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase 'truncation, loss-of-function':\n\t\t\t\t\t\teffectsl.property('selectedIndex', 3)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase 'truncation, no consequence':\n\t\t\t\t\t\teffectsl.property('selectedIndex', 4)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase 'ITD':\n\t\t\t\t\t\teffectsl.property('selectedIndex', 5)\n\t\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst p = {\n\t\t\t\ta: {\n\t\t\t\t\tchr: prod.chrA,\n\t\t\t\t\tposition: prod.posA,\n\t\t\t\t\tstrand: prod.ortA,\n\t\t\t\t\tname: prod.geneA ? prod.geneA : prod.chrA,\n\t\t\t\t\tratio: prod.ratioA.toFixed(2),\n\t\t\t\t\tfeature: prod.featureA,\n\t\t\t\t\tcontiglen: prod.matchA,\n\t\t\t\t\tchimericreads: prod.readsA,\n\t\t\t\t\trepeatscore: prod.repeatA\n\t\t\t\t},\n\t\t\t\tb: {\n\t\t\t\t\tchr: prod.chrB,\n\t\t\t\t\tposition: prod.posB,\n\t\t\t\t\tstrand: prod.ortB,\n\t\t\t\t\tname: prod.geneB ? prod.geneB : prod.chrB,\n\t\t\t\t\tratio: prod.ratioB.toFixed(2),\n\t\t\t\t\tfeature: prod.featureB,\n\t\t\t\t\tcontiglen: prod.matchB,\n\t\t\t\t\tchimericreads: prod.readsB,\n\t\t\t\t\trepeatscore: prod.repeatB\n\t\t\t\t},\n\t\t\t\trating: prod.rating,\n\t\t\t\tscore: Math.ceil(prod.score),\n\t\t\t\toriginalprod: prod\n\t\t\t}\n\t\t\tif (prod.usepair) {\n\t\t\t\tp.inframe = prod.usepair.inframe\n\t\t\t\tconst x = prod.usepair.a\n\t\t\t\tp.a.gm = this.genome.isoformmatch(x.isoform, prod.chrA, prod.posA)\n\t\t\t\tp.a.codon = x.codon\n\t\t\t\tp.a.exon = x.exon\n\t\t\t\tp.a.atupstream = x.atupstream\n\t\t\t\tp.a.atdownstream = x.atdownstream\n\t\t\t\tp.a.atutr5 = x.atutr5\n\t\t\t\tp.a.atutr3 = x.atutr3\n\t\t\t\tconst y = prod.usepair.b\n\t\t\t\tp.b.gm = this.genome.isoformmatch(y.isoform, prod.chrB, prod.posB)\n\t\t\t\tp.b.codon = y.codon\n\t\t\t\tp.b.exon = y.exon\n\t\t\t\tp.b.atupstream = y.atupstream\n\t\t\t\tp.b.atdownstream = y.atdownstream\n\t\t\t\tp.b.atutr5 = y.atutr5\n\t\t\t\tp.b.atutr3 = y.atutr3\n\t\t\t\t// interstitial\n\t\t\t\tlet aalen = 0,\n\t\t\t\t\tbplen = 0\n\t\t\t\tif (x.contigaa && y.contigaa) {\n\t\t\t\t\taalen = y.contigaa - x.contigaa - 1\n\t\t\t\t}\n\t\t\t\tif (x.contigbp && y.contigbp) {\n\t\t\t\t\tbplen = y.contigbp - x.contigbp - 1\n\t\t\t\t}\n\t\t\t\tif (aalen) {\n\t\t\t\t\tp.interstitial = { aalen: aalen }\n\t\t\t\t}\n\t\t\t\tif (bplen) {\n\t\t\t\t\tif (!p.interstitial) p.interstitial = {}\n\t\t\t\t\tp.interstitial.bplen = bplen\n\t\t\t\t}\n\t\t\t}\n\t\t\tsvtable({\n\t\t\t\tsamplelst: [\n\t\t\t\t\t{\n\t\t\t\t\t\tpairlst: [p]\n\t\t\t\t\t}\n\t\t\t\t],\n\t\t\t\tnosample: true,\n\t\t\t\tholder: td\n\t\t\t})\n\n\t\t\tconst par = {\n\t\t\t\tpairlst: [p],\n\t\t\t\tgenome: this.genome,\n\t\t\t\tholder: td,\n\t\t\t\tquiet: true,\n\t\t\t\thostURL: this.hostURL,\n\t\t\t\tjwt: this.jwt\n\t\t\t}\n\t\t\timport('./svgraph').then(p => {\n\t\t\t\tp.default(par)\n\t\t\t})\n\n\t\t\tif (!arg.nodetail) {\n\t\t\t\tconst td = tr2.append('td').style('font-size', '.8em').style('vertical-align', 'top')\n\t\t\t\t// custom attributes\n\t\t\t\tconst lst = []\n\t\t\t\tfor (const at of this.atlst) {\n\t\t\t\t\tif (!at.custom) continue\n\t\t\t\t\tconst v = prod[at.key]\n\t\t\t\t\tlst.push({\n\t\t\t\t\t\tk: at.label,\n\t\t\t\t\t\tv: v == undefined ? '' : v\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tclient.make_table_2col(td, lst, 25)\n\t\t\t\t// isoform pairs\n\t\t\t\tprod.pairs.sort((a, b) => {\n\t\t\t\t\tif (a.inuse) return -1\n\t\t\t\t\tif (b.inuse) return 1\n\t\t\t\t\treturn 0\n\t\t\t\t})\n\t\t\t\tconst table0 = td.append('table')\n\t\t\t\tfor (const pair of prod.pairs) {\n\t\t\t\t\tconst tr = table0.append('tr')\n\t\t\t\t\ttr.append('td').html(\n\t\t\t\t\t\t(pair.inframe ? 'in-frame' : 'out-of-frame') +\n\t\t\t\t\t\t\t'<div style=\"font-size:70%\">frame code: ' +\n\t\t\t\t\t\t\tpair.frame +\n\t\t\t\t\t\t\t'</div>'\n\t\t\t\t\t)\n\t\t\t\t\tconst td = tr.append('td')\n\t\t\t\t\tconst table = td\n\t\t\t\t\t\t.append('table')\n\t\t\t\t\t\t.style('margin-bottom', '20px')\n\t\t\t\t\t\t.style('border', pair.inuse ? 'solid 1px black' : '')\n\t\t\t\t\t\t.style('border-spacing', '10px')\n\t\t\t\t\t\t.style('border-collapse', 'separate')\n\t\t\t\t\tlet _tr = table.append('tr').style('color', '#858585').style('font-size', '.7em')\n\t\t\t\t\t_tr.append('td').text('gene')\n\t\t\t\t\t_tr.append('td').text('isoform')\n\t\t\t\t\t_tr.append('td').text('gene position')\n\t\t\t\t\t_tr.append('td').text('exon')\n\t\t\t\t\t_tr.append('td').text('anchor')\n\t\t\t\t\t_tr.append('td').text('contig AA')\n\t\t\t\t\t_tr.append('td').text('contig bp')\n\t\t\t\t\tconst tr1 = table.append('tr')\n\t\t\t\t\tconst tr2 = table.append('tr')\n\t\t\t\t\ttr1.append('td').text(prod.geneA ? prod.geneA : prod.chrA)\n\t\t\t\t\ttr2.append('td').text(prod.geneB ? prod.geneB : prod.chrB)\n\t\t\t\t\ttr1.append('td').text(pair.a.isoform ? pair.a.isoform : '')\n\t\t\t\t\ttr2.append('td').text(pair.b.isoform ? pair.b.isoform : '')\n\t\t\t\t\ttr1\n\t\t\t\t\t\t.append('td')\n\t\t\t\t\t\t.text(\n\t\t\t\t\t\t\tpair.a.isoform\n\t\t\t\t\t\t\t\t? pair.a.codon != undefined\n\t\t\t\t\t\t\t\t\t? 'codon: ' + pair.a.codon\n\t\t\t\t\t\t\t\t\t: pair.a.atutr5\n\t\t\t\t\t\t\t\t\t? \"5' UTR\"\n\t\t\t\t\t\t\t\t\t: pair.a.atutr3\n\t\t\t\t\t\t\t\t\t? \"3' UTR\"\n\t\t\t\t\t\t\t\t\t: pair.a.atupstream\n\t\t\t\t\t\t\t\t\t? 'upstream'\n\t\t\t\t\t\t\t\t\t: 'downstream'\n\t\t\t\t\t\t\t\t: ''\n\t\t\t\t\t\t)\n\t\t\t\t\ttr2\n\t\t\t\t\t\t.append('td')\n\t\t\t\t\t\t.text(\n\t\t\t\t\t\t\tpair.b.isoform\n\t\t\t\t\t\t\t\t? pair.b.codon != undefined\n\t\t\t\t\t\t\t\t\t? 'codon: ' + pair.b.codon\n\t\t\t\t\t\t\t\t\t: pair.b.atutr5\n\t\t\t\t\t\t\t\t\t? \"5' UTR\"\n\t\t\t\t\t\t\t\t\t: pair.b.atutr3\n\t\t\t\t\t\t\t\t\t? \"3' UTR\"\n\t\t\t\t\t\t\t\t\t: pair.b.atupstream\n\t\t\t\t\t\t\t\t\t? 'upstream'\n\t\t\t\t\t\t\t\t\t: 'downstream'\n\t\t\t\t\t\t\t\t: ''\n\t\t\t\t\t\t)\n\t\t\t\t\ttr1.append('td').text(pair.a.exon ? pair.a.exon : '')\n\t\t\t\t\ttr2.append('td').text(pair.b.exon ? pair.b.exon : '')\n\t\t\t\t\ttr1.append('td').text(pair.a.anchor ? pair.a.anchor : '')\n\t\t\t\t\ttr2.append('td').text(pair.b.anchor ? pair.b.anchor : '')\n\t\t\t\t\ttr1\n\t\t\t\t\t\t.append('td')\n\t\t\t\t\t\t.html(pair.a.contigaa ? '<span style=\"color:#858585;font-size:70%\">ends at</span> ' + pair.a.contigaa : '?')\n\t\t\t\t\ttr2\n\t\t\t\t\t\t.append('td')\n\t\t\t\t\t\t.html(\n\t\t\t\t\t\t\tpair.b.contigaa ? '<span style=\"color:#858585;font-size:70%\">starts at</span> ' + pair.b.contigaa : '?'\n\t\t\t\t\t\t)\n\t\t\t\t\ttr1\n\t\t\t\t\t\t.append('td')\n\t\t\t\t\t\t.html(pair.a.contigbp ? '<span style=\"color:#858585;font-size:70%\">ends at</span> ' + pair.a.contigbp : '?')\n\t\t\t\t\ttr2\n\t\t\t\t\t\t.append('td')\n\t\t\t\t\t\t.html(\n\t\t\t\t\t\t\tpair.b.contigbp ? '<span style=\"color:#858585;font-size:70%\">starts at</span> ' + pair.b.contigbp : '?'\n\t\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (!arg.sample) {\n\t\t\t// the current sample is not provided, won't try to find out samples with recurrent events\n\t\t\treturn\n\t\t}\n\t\tconst thislab = arg.prodlst[0].eventlabel\n\t\tconst samplelst = this.elab2sample[thislab]\n\t\tconst othersample = []\n\t\tif (samplelst) {\n\t\t\tfor (const s of samplelst) {\n\t\t\t\tif (s.name != arg.sample.name) othersample.push(s)\n\t\t\t}\n\t\t}\n\t\tif (arg.showothersample && othersample.length > 0) {\n\t\t\targ.holder\n\t\t\t\t.append('button')\n\t\t\t\t.style('display', 'block')\n\t\t\t\t.style('margin', '20px')\n\t\t\t\t.text('Show in ' + othersample.length + ' other sample' + (othersample.length > 1 ? 's' : ''))\n\t\t\t\t.on('click', event => {\n\t\t\t\t\td3select(event.target).remove()\n\t\t\t\t\tfor (const sample of othersample) {\n\t\t\t\t\t\tconst prodlst = sample.events[thislab]\n\t\t\t\t\t\tif (!prodlst) {\n\t\t\t\t\t\t\targ.holder\n\t\t\t\t\t\t\t\t.append('div')\n\t\t\t\t\t\t\t\t.style('margin', '20px')\n\t\t\t\t\t\t\t\t.style('color', 'red')\n\t\t\t\t\t\t\t\t.text('Error: no products for this event in ' + sample.name)\n\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst table = arg.holder.append('table').style('margin-top', '20px').style('border', 'solid 1px #ccc')\n\t\t\t\t\t\tconst tr = table.append('tr')\n\t\t\t\t\t\ttr.append('td').text(sample.name)\n\t\t\t\t\t\tconst td = tr.append('td')\n\t\t\t\t\t\tthis.showsvpairs({\n\t\t\t\t\t\t\tprodlst: prodlst,\n\t\t\t\t\t\t\tholder: td,\n\t\t\t\t\t\t\tnodetail: true,\n\t\t\t\t\t\t\tsample: sample,\n\t\t\t\t\t\t\t// FIXME: eglst info is hidden somewhere in sample.egglst\n\t\t\t\t\t\t\teglst: null\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t}\n\t\tif (this.expression.genes && geneset.size > 0) {\n\t\t\tconst table = expressiontd.append('table')\n\t\t\tconst tr = table.append('tr')\n\t\t\tfor (const gene of geneset) {\n\t\t\t\tconst expd = this.expression.genes[gene]\n\t\t\t\tif (expd) {\n\t\t\t\t\tconst div = tr\n\t\t\t\t\t\t.append('td')\n\t\t\t\t\t\t.style('vertical-align', 'top')\n\t\t\t\t\t\t.append('div')\n\t\t\t\t\t\t.style('display', 'inline-block')\n\t\t\t\t\t\t.style('margin-right', '20px')\n\t\t\t\t\t\t.style('border', 'solid 1px #ccc')\n\t\t\t\t\tdiv.append('div').style('background-color', '#ededed').style('padding', '10px').text(gene)\n\t\t\t\t\tif (arg.sample) {\n\t\t\t\t\t\tfor (const v of expd) {\n\t\t\t\t\t\t\tif (v.sample == arg.sample.name) {\n\t\t\t\t\t\t\t\tv.ishighlight = true\n\t\t\t\t\t\t\t\tdiv\n\t\t\t\t\t\t\t\t\t.append('div')\n\t\t\t\t\t\t\t\t\t.style('padding', '10px')\n\t\t\t\t\t\t\t\t\t.style('font-size', '70%')\n\t\t\t\t\t\t\t\t\t.html('Expression in ' + arg.sample.name + ': <span style=\"font-size:150%\">' + v.value + '</span>')\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tv.ishighlight = false\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tshowgenevalues({\n\t\t\t\t\t\tdata: this.expression.genes[gene],\n\t\t\t\t\t\tholder: div.append('div').style('margin', '10px'),\n\t\t\t\t\t\twidth: 200,\n\t\t\t\t\t\theight: 200,\n\t\t\t\t\t\tnamename: 'sample'\n\t\t\t\t\t})\n\t\t\t\t} else {\n\t\t\t\t\ttr.append('td')\n\t\t\t\t\t\t.style('vertical-align', 'top')\n\t\t\t\t\t\t.text('No expression data for ' + gene + '</td>')\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprodidisinvalid(id, sample) {\n\t\tfor (const egg of sample.egglst) {\n\t\t\tfor (const eg of egg.lst) {\n\t\t\t\tfor (const e of eg.lst) {\n\t\t\t\t\tfor (const p of e.lst) {\n\t\t\t\t\t\tif (p.prodid == id) return false\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn true\n\t}\n\n\textractprod(id, sample) {\n\t\tlet prod = null\n\t\tfor (let n = 0; n < sample.egglst.length; n++) {\n\t\t\tconst _egg = sample.egglst[n]\n\t\t\tfor (let j = 0; j < _egg.lst.length; j++) {\n\t\t\t\tconst _eg = _egg.lst[j]\n\t\t\t\tfor (let k = 0; k < _eg.lst.length; k++) {\n\t\t\t\t\tconst _evt = _eg.lst[k]\n\t\t\t\t\tfor (let p = 0; p < _evt.lst.length; p++) {\n\t\t\t\t\t\tconst p2 = _evt.lst[p]\n\t\t\t\t\t\tif (p2.prodid == id) {\n\t\t\t\t\t\t\tprod = p2\n\t\t\t\t\t\t\t_evt.lst.splice(p, 1)\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (prod) {\n\t\t\t\t\t\tif (_evt.lst.length == 0) {\n\t\t\t\t\t\t\t_eg.lst.splice(k, 1)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (prod) {\n\t\t\t\t\tif (_eg.lst.length == 0) {\n\t\t\t\t\t\t_egg.lst.splice(j, 1)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (_eg.ismsg && _eg.lst.length == 1) {\n\t\t\t\t\t\t\tdelete _eg.ismsg\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (prod) {\n\t\t\t\tif (_egg.lst.length == 0) {\n\t\t\t\t\tsample.egglst.splice(n, 1)\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\treturn prod\n\t}\n\t// end of class\n}\n\nfunction msjoin(prod, newholder) {\n\tif (prod.isitd) return\n\tif (prod.sv_ort == '?') return\n\tvar single = true\n\tvar thispair = prod.usepair\n\tfor (var i = 0; i < newholder.length; i++) {\n\t\tvar tmplst = newholder[i]\n\t\t// test head\n\t\tvar prod2 = tmplst[0]\n\t\tif (prod.chrB == prod2.chrA && prod.ortB == prod2.ortA) {\n\t\t\tif (testreadcount(prod, prod2)) {\n\t\t\t\t// compare isoform/codon position\n\t\t\t\tvar thatpair = prod2.usepair\n\t\t\t\tif (thispair && thatpair && thispair.b.isoform && thispair.b.isoform == thatpair.a.isoform) {\n\t\t\t\t\tvar p1 = thispair.b\n\t\t\t\t\tvar p2 = thatpair.a\n\t\t\t\t\tvar ahead = false\n\t\t\t\t\tif (p1.atutr5) {\n\t\t\t\t\t\tif (p2.codon != undefined) {\n\t\t\t\t\t\t\tahead = true\n\t\t\t\t\t\t\tprod2.mswhat = \"5' UTR to coding region\"\n\t\t\t\t\t\t} else if (p2.atutr3) {\n\t\t\t\t\t\t\tahead = true\n\t\t\t\t\t\t\tprod2.mswhat = \"5' UTR to 3' UTR\"\n\t\t\t\t\t\t} else if (p2.atutr5 && p1.atutr5.off < p2.atutr5.off) {\n\t\t\t\t\t\t\tahead = true\n\t\t\t\t\t\t\tprod2.mswhat = p2.atutr5.off - p1.atutr5.off + \" bp apart in 5' UTR\"\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (p1.atutr3) {\n\t\t\t\t\t\tif (p2.atutr3 && p1.atutr3.off < p2.atutr3.off) {\n\t\t\t\t\t\t\tahead = true\n\t\t\t\t\t\t\tprod2.mswhat = p2.atutr3.off - p1.atutr3.off + \" bp apart in 3' UTR\"\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (p1.codon != undefined) {\n\t\t\t\t\t\tif (p2.codon != undefined && p2.codon > p1.codon) {\n\t\t\t\t\t\t\tahead = true\n\t\t\t\t\t\t\tprod2.mswhat = p2.codon - p1.codon + ' aa apart in protein'\n\t\t\t\t\t\t} else if (p2.atutr3) {\n\t\t\t\t\t\t\tahead = true\n\t\t\t\t\t\t\tprod2.mswhat = \"coding region to 3' UTR\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (ahead) {\n\t\t\t\t\t\ttmplst.unshift(prod)\n\t\t\t\t\t\tsingle = false\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// compare by genomic pos, if upstream of head\n\t\t\t\tvar dst = prod2.posA - prod.posB\n\t\t\t\tif ((prod.ortB == '+' && dst > 0 && dst < genomelimit) || (prod.ortB == '-' && dst < 0 && -dst < genomelimit)) {\n\t\t\t\t\tprod2.mswhat = Math.abs(dst) + ' bp apart on genome'\n\t\t\t\t\ttmplst.unshift(prod)\n\t\t\t\t\tsingle = false\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t// test tail\n\t\tprod2 = tmplst[tmplst.length - 1]\n\t\tif (prod.chrA == prod2.chrB && prod.ortA == prod2.ortB) {\n\t\t\tif (testreadcount(prod2, prod)) {\n\t\t\t\tvar thatpair = prod2.usepair\n\t\t\t\tif (thispair && thatpair && thispair.a.isoform && thispair.a.isoform == thatpair.b.isoform) {\n\t\t\t\t\tvar p1 = thatpair.b\n\t\t\t\t\tvar p2 = thispair.a\n\t\t\t\t\tvar behind = false\n\t\t\t\t\tif (p1.atutr5) {\n\t\t\t\t\t\tif (p2.codon != undefined) {\n\t\t\t\t\t\t\tbehind = true\n\t\t\t\t\t\t\tprod.mswhat = \"5' UTR to coding region\"\n\t\t\t\t\t\t} else if (p2.atutr3) {\n\t\t\t\t\t\t\tbehind = true\n\t\t\t\t\t\t\tprod.mswhat = \"5' UTR to 3' UTR\"\n\t\t\t\t\t\t} else if (p2.atutr5 && p1.atutr5.off < p2.atutr5.off) {\n\t\t\t\t\t\t\tbehind = true\n\t\t\t\t\t\t\tprod.mswhat = p2.atutr5.off - p1.atutr5.off + \" bp apart in 5' UTR\"\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (p1.atutr3) {\n\t\t\t\t\t\tif (p2.atutr3 && p1.atutr3.off < p2.atutr3.off) {\n\t\t\t\t\t\t\tbehind = true\n\t\t\t\t\t\t\tprod.mswhat = p2.atutr3.off - p1.atutr3.off + \" bp apart in 3' UTR\"\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (p1.codon != undefined) {\n\t\t\t\t\t\tif (p2.codon != undefined && p2.codon > p1.codon) {\n\t\t\t\t\t\t\tbehind = true\n\t\t\t\t\t\t\tprod.mswhat = p2.codon - p1.codon + ' aa apart in protein'\n\t\t\t\t\t\t} else if (p2.atutr3) {\n\t\t\t\t\t\t\tbehind = true\n\t\t\t\t\t\t\tprod.mswhat = \"coding region to 3' UTR\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (behind) {\n\t\t\t\t\t\ttmplst.push(prod)\n\t\t\t\t\t\tsingle = false\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// if downstream of tail\n\t\t\t\tvar dst = prod.posA - prod2.posB\n\t\t\t\tif (prod.ortA == '+' && dst > 0 && dst < genomelimit && prod.ortA == '-' && dst < 0 && -dst < genomelimit) {\n\t\t\t\t\tprod.mswhat = Math.abs(dst) + ' bp apart on genome'\n\t\t\t\t\ttmplst.push(prod)\n\t\t\t\t\tsingle = false\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tif (single) {\n\t\tnewholder.push([prod])\n\t}\n\tfunction testreadcount(p1, p2) {\n\t\tif (!p1.usepair || !p1.usepair.inframe) return false\n\t\tif (!p2.usepair || !p2.usepair.inframe) return false\n\t\t// Another problem is too many multi-seg. Please use read count to filter out some artifacts. Following is an artifact multi-seg LINC00598- PLXNB2-MUC4. The number of reads are not comparable for these two segments. We should not connect these two. I suggest using 5 fold as threshold to connect segments.\n\t\tif (p1.readsB == 0 || p2.readsA == 0) return false\n\t\tvar fold = p1.readsB / p2.readsA\n\t\treturn fold >= 0.2 && fold <= 5\n\t}\n}\n\nfunction svtable(arg) {\n\t// sample level events\n\tconst table = arg.holder.append('table').style('border-spacing', '10px').style('border-collapse', 'separate')\n\tconst htr = table.append('tr').style('font-size', '70%').style('color', '#858585')\n\tconst fields = [\n\t\t{ label: 'Feature', hide: true, get: a => a.feature },\n\t\t{ label: 'Ratio', hide: true, get: a => Math.ceil(a.ratio * 100) + '%' },\n\t\t{ label: 'Chimeric<br>reads', hide: true, get: a => a.chimericreads },\n\t\t{ label: 'Contig<br>length', hide: true, get: a => a.contiglen },\n\t\t{ label: 'Repeat<br>score', hide: true, get: a => a.repeatscore },\n\t\t{ label: 'Cicero<br>score', hide: true, atpair: true, get: a => a.score },\n\t\t{ label: 'Cicero<br>rating', israting: true, hide: true, atpair: true, get: a => a.rating }\n\t]\n\tfor (const sample of arg.samplelst) {\n\t\tfor (const p of sample.pairlst) {\n\t\t\tif (p.a.feature || p.b.feature) fields[0].hide = false\n\t\t\tif (typeof p.a.ratio == 'number' || typeof (p.b.ratio == 'number')) fields[1].hide = false\n\t\t\tif (typeof p.a.chimericreads == 'number' || typeof p.b.chimericreads == 'number') fields[2].hide = false\n\t\t\tif (typeof p.a.contiglen == 'number' || typeof p.b.contiglen == 'number') fields[3].hide = false\n\t\t\tif (typeof p.a.repeatscore == 'number' || typeof p.b.repeatscore == 'number') fields[4].hide = false\n\t\t\tif (typeof p.score == 'number') fields[5].hide = false\n\t\t\tif (p.rating) fields[6].hide = false\n\t\t}\n\t}\n\t// header\n\tif (!arg.nosample) {\n\t\thtr.append('td')\n\t}\n\thtr.append('td') // gene\n\thtr.append('td') // frame\n\thtr.append('td').html('Genomic<br>position') // coord\n\thtr.append('td').html('Genomic<br>dist.') //\n\tfor (const f of fields) {\n\t\tif (f.hide) return\n\t\thtr.append('td').html(f.label)\n\t}\n\tfor (const sample of arg.samplelst) {\n\t\tlet tr = table.append('tr')\n\t\tif (!arg.nosample) {\n\t\t\tconst td = tr.append('td').text(sample.sample)\n\t\t\tif (sample.pairlst.length > 1) {\n\t\t\t\ttd.attr('rowspan', sample.pairlst.length)\n\t\t\t}\n\t\t}\n\t\tfor (let i = 0; i < sample.pairlst.length; i++) {\n\t\t\tif (i > 0) {\n\t\t\t\t// new\n\t\t\t\ttr = table.append('tr')\n\t\t\t}\n\t\t\tconst pair = sample.pairlst[i]\n\t\t\t// gene\n\t\t\ttr.append('td')\n\t\t\t\t.style('text-align', 'right')\n\t\t\t\t.html(\n\t\t\t\t\t'<span style=\"background-color:' +\n\t\t\t\t\t\tclient.colorbgleft +\n\t\t\t\t\t\t';padding:2px 3px;font-size:80%\">' +\n\t\t\t\t\t\tpair.a.name +\n\t\t\t\t\t\t'</span>' +\n\t\t\t\t\t\t'<span style=\"background-color:' +\n\t\t\t\t\t\tclient.colorbgright +\n\t\t\t\t\t\t';padding:2px 3px;font-size:80%\">' +\n\t\t\t\t\t\tpair.b.name +\n\t\t\t\t\t\t'</span>'\n\t\t\t\t)\n\t\t\t// frame\n\t\t\tconst td = tr.append('td')\n\t\t\tif (pair.originalprod && pair.originalprod.hook.lessFrame) {\n\t\t\t\tpair.originalprod.hook.lessFrame = td\n\t\t\t}\n\t\t\tif (pair.inframe) {\n\t\t\t\ttd.html(\n\t\t\t\t\t'<span style=\"background-color:' +\n\t\t\t\t\t\tclient.colorinframe +\n\t\t\t\t\t\t';color:white;padding:2px 3px;font-size:80%;white-space:nowrap\">In frame</span>'\n\t\t\t\t)\n\t\t\t} else {\n\t\t\t\tif (pair.a.gm || pair.b.gm) {\n\t\t\t\t\ttd.html(\n\t\t\t\t\t\t'<span style=\"background-color:#858585;color:white;padding:2px 3px;font-size:80%;white-space:nowrap\">Out of frame</span>'\n\t\t\t\t\t)\n\t\t\t\t} else {\n\t\t\t\t\ttd.html(\n\t\t\t\t\t\t'<span style=\"border:solid 1px #858585;color:#858585;padding:1px 2px;font-size:80%;white-space:nowrap\">no gene ?</span>'\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t}\n\t\t\t// coord\n\t\t\ttr.append('td').html(\n\t\t\t\t'<div style=\"background-color:' +\n\t\t\t\t\tclient.colorbgleft +\n\t\t\t\t\t';padding:1px 3px;font-size:70%;white-space:nowrap\">' +\n\t\t\t\t\tpair.a.chr +\n\t\t\t\t\t':' +\n\t\t\t\t\tpair.a.position +\n\t\t\t\t\t' ' +\n\t\t\t\t\tpair.a.strand +\n\t\t\t\t\t'</div>' +\n\t\t\t\t\t'<div style=\"background-color:' +\n\t\t\t\t\tclient.colorbgright +\n\t\t\t\t\t';padding:1px 3px;font-size:70%;white-space:nowrap\">' +\n\t\t\t\t\tpair.b.chr +\n\t\t\t\t\t':' +\n\t\t\t\t\tpair.b.position +\n\t\t\t\t\t' ' +\n\t\t\t\t\tpair.b.strand +\n\t\t\t\t\t'</div>'\n\t\t\t)\n\t\t\t// dist\n\t\t\ttr.append('td').html(\n\t\t\t\tpair.a.chr == pair.b.chr\n\t\t\t\t\t? bplength(Math.abs(pair.a.position - pair.b.position))\n\t\t\t\t\t: '<span style=\"color:' + client.colorctx + '\">CTX</span>'\n\t\t\t)\n\t\t\tfor (const f of fields) {\n\t\t\t\tif (f.hide) continue\n\t\t\t\tconst td = tr.append('td')\n\t\t\t\tif (f.israting && pair.originalprod && pair.originalprod.hook.lessRating) {\n\t\t\t\t\tpair.originalprod.hook.lessRating = td\n\t\t\t\t}\n\t\t\t\tif (f.atpair) {\n\t\t\t\t\ttd.text(f.get(pair))\n\t\t\t\t} else {\n\t\t\t\t\ttd.html(\n\t\t\t\t\t\t'<span style=\"background-color:' +\n\t\t\t\t\t\t\tclient.colorbgleft +\n\t\t\t\t\t\t\t';padding:2px 3px;font-size:80%\">' +\n\t\t\t\t\t\t\tf.get(pair.a) +\n\t\t\t\t\t\t\t'</span>' +\n\t\t\t\t\t\t\t'<span style=\"background-color:' +\n\t\t\t\t\t\t\tclient.colorbgright +\n\t\t\t\t\t\t\t';padding:2px 3px;font-size:80%\">' +\n\t\t\t\t\t\t\tf.get(pair.b) +\n\t\t\t\t\t\t\t'</span>'\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction loadexpression(svmr, file) {\n\tconst genes = {}\n\tconst ep = svmr.expression\n\tep.genes = genes\n\tconst reader = new FileReader()\n\tconst chunksize = 4096\n\tlet chunks = []\n\tlet offset = 0\n\treader.onloadend = e => {\n\t\tif (e.target.readyState != FileReader.DONE) return\n\t\tconst chunk = e.target.result\n\t\tchunks.push(chunk)\n\t\tconst isend = offset >= file.size\n\t\tprocess(isend)\n\t\tif (isend) {\n\t\t\tdone()\n\t\t} else {\n\t\t\toffset += chunksize\n\t\t\tep.presays.text('Reading file: ' + Math.ceil((offset / file.size) * 100) + '%')\n\t\t\treader.readAsText(file.slice(offset, offset + chunksize))\n\t\t}\n\t}\n\treader.readAsText(file.slice(0, chunksize))\n\tconst hg = {},\n\t\ths = {}\n\tlet good = 0,\n\t\tbad = 0\n\tfunction process(isend) {\n\t\tconst lines = chunks.join('').split('\\n')\n\t\tfor (let i = 0; i < lines.length - 1 - (isend ? 0 : 1); i++) {\n\t\t\tconst l = lines[i].split('\\t')\n\t\t\tif (l.length == 3) {\n\t\t\t\tconst v = Number.parseFloat(l[1])\n\t\t\t\tif (Number.isNaN(v)) {\n\t\t\t\t\tbad++\n\t\t\t\t} else {\n\t\t\t\t\tgood++\n\t\t\t\t\thg[l[0]] = 1\n\t\t\t\t\ths[l[2]] = 1\n\t\t\t\t\tif (!(l[0] in genes)) {\n\t\t\t\t\t\tgenes[l[0]] = []\n\t\t\t\t\t}\n\t\t\t\t\tgenes[l[0]].push({\n\t\t\t\t\t\tsample: l[2],\n\t\t\t\t\t\tvalue: v\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tbad++\n\t\t\t}\n\t\t}\n\t\tif (!isend) {\n\t\t\tchunks = [lines[lines.length - 1]]\n\t\t}\n\t}\n\tfunction done() {\n\t\tlet genec = 0\n\t\tfor (const n in hg) genec++\n\t\tlet samplec = 0\n\t\tfor (const n in hs) samplec++\n\t\tclient.disappear(ep.prediv)\n\t\tclient.appear(ep.afterdiv)\n\t\tep.afterdiv.selectAll('*').remove()\n\t\tep.afterdiv\n\t\t\t.append('div')\n\t\t\t.text(\n\t\t\t\t'Expression data loaded for ' +\n\t\t\t\t\tgenec +\n\t\t\t\t\t' genes, ' +\n\t\t\t\t\tsamplec +\n\t\t\t\t\t' samples, ' +\n\t\t\t\t\tgood +\n\t\t\t\t\t' data points' +\n\t\t\t\t\t(bad > 0 ? ', ' + bad + ' bad lines' : '')\n\t\t\t)\n\t\tep.afterdiv\n\t\t\t.append('button')\n\t\t\t.text('Delete')\n\t\t\t.style('margin', '20px')\n\t\t\t.on('click', () => {\n\t\t\t\tdelete ep.genes\n\t\t\t\tep.prediv.node().removeChild(ep.input.node())\n\t\t\t\tep.input = ep.prediv\n\t\t\t\t\t.append('input')\n\t\t\t\t\t.attr('type', 'file')\n\t\t\t\t\t.on('change', event => {\n\t\t\t\t\t\tloadexpression(svmr, event.target.files[0])\n\t\t\t\t\t})\n\t\t\t\tep.presays.text('')\n\t\t\t\tclient.disappear(ep.afterdiv)\n\t\t\t\tclient.appear(ep.prediv)\n\t\t\t})\n\t}\n}\n\nfunction showgenevalues(arg) {\n\t// arg.data: [ {sample:'xx', patient:, sampletype:, value:10.4}, ... ]\n\tconst hlcolor = 'red'\n\targ.data.sort((a, b) => {\n\t\treturn b.value - a.value\n\t})\n\tlet width = arg.width ? arg.width : 400,\n\t\theight = arg.height ? arg.height : 400\n\tlet maxv = 0\n\tfor (const v of arg.data) {\n\t\tmaxv = Math.max(maxv, v.value)\n\t}\n\tlet dotr // radius\n\tconst xscale = scaleLinear().domain([0, maxv])\n\tconst svg = arg.holder.append('svg')\n\tconst axisg = svg.append('g')\n\tconst dotg = svg.append('g')\n\tconst dotset = dotg.selectAll().data(arg.data).enter().append('g')\n\tconst dotcir = dotset\n\t\t.append('circle')\n\t\t.attr('fill', 'white')\n\t\t.attr('fill-opacity', 0)\n\t\t.attr('stroke', d => (d.ishighlight ? hlcolor : 'black'))\n\t\t.attr('stroke-opacity', d => (d.ishighlight ? 0.7 : 0.2))\n\t\t.on('mouseover', (event, d) => {\n\t\t\tevent.target.setAttribute('transform', 'scale(1.5)')\n\t\t\tdrag\n\t\t\t\t.text((d.sample ? d.sample : d.patient + ' ' + d.sampletype) + ' ' + d.value)\n\t\t\t\t.attr('fill', d.ishighlight ? hlcolor : 'black')\n\t\t})\n\t\t.on('mouseout', (event, d) => {\n\t\t\tevent.target.setAttribute('transform', 'scale(1)')\n\t\t\tdrag.text('drag to resize').attr('fill', 'black')\n\t\t})\n\tconst drag = svg\n\t\t.append('text')\n\t\t.text('drag to resize')\n\t\t.attr('font-size', 12)\n\t\t.attr('class', 'sja_svgtext')\n\t\t.attr('font-family', client.font)\n\t\t.attr('text-anchor', 'end')\n\t\t.on('mousedown', event => {\n\t\t\tevent.preventDefault()\n\t\t\tconst x0 = event.clientX,\n\t\t\t\ty0 = event.clientY,\n\t\t\t\twidth0 = width,\n\t\t\t\theight0 = height\n\t\t\tconst b = d3select(document.body)\n\t\t\tb.on('mousemove', () => {\n\t\t\t\twidth = width0 + event.clientX - x0\n\t\t\t\theight = height0 + event.clientY - y0\n\t\t\t\tsizing()\n\t\t\t}).on('mouseup', () => {\n\t\t\t\tb.on('mousemove', null).on('mouseup', null)\n\t\t\t})\n\t\t})\n\tfunction sizing() {\n\t\tdotr = Math.max(5, Math.min(width, height) / 40)\n\t\tconst fontsize = Math.min(18, Math.max(12, dotr * 2)),\n\t\t\tticksize = 5,\n\t\t\taxish = fontsize + ticksize + 5,\n\t\t\taxispad = dotr + 5,\n\t\t\twidth2 = dotr * 3\n\t\txscale.range([0, width])\n\t\tsvg.attr('width', dotr * 2 + width + width2).attr('height', axish + axispad + height + dotr * 2)\n\t\tclient.axisstyle({\n\t\t\taxis: axisg.attr('transform', 'translate(' + dotr * 2 + ',' + axish + ')').call(\n\t\t\t\taxisTop()\n\t\t\t\t\t.scale(xscale)\n\t\t\t\t\t.ticks(Math.min(10, Math.ceil(width / 50)))\n\t\t\t),\n\t\t\tfontsize: fontsize,\n\t\t\tcolor: 'black',\n\t\t\tshowline: true\n\t\t})\n\t\tdotg.attr('transform', 'translate(' + dotr * 2 + ',' + (axish + axispad) + ')')\n\t\tdotset.attr('transform', (d, i) => {\n\t\t\treturn 'translate(' + xscale(d.value) + ',' + (height * i) / arg.data.length + ')'\n\t\t})\n\t\tdotcir.attr('r', d => {\n\t\t\treturn dotr * (d.ishighlight ? 1.5 : 1)\n\t\t})\n\t\tdrag\n\t\t\t.attr('font-size', fontsize)\n\t\t\t.attr('x', dotr * 2 + width + width2 - 5)\n\t\t\t.attr('y', axish + axispad + height + dotr * 2 - 5)\n\t}\n\tsizing()\n\t/*\n\tthis.highlighttoggle=function(sample) {\n\t\tif(!sample) return\n\t\tvar thisd=null\n\t\tdotcir.attr('transform',function(d){\n\t\t\tif(d.sample==sample) {\n\t\t\t\tthisd=d\n\t\t\t\treturn 'scale(1.5)'\n\t\t\t}\n\t\t\treturn 'scale(1)'\n\t\t})\n\t\tif(thisd) {\n\t\t\tdrag.text(thisd.sample+' '+thisd.value)\n\t\t} else {\n\t\t\tdrag.text('drag to resize')\n\t\t}\n\t}\n\t*/\n\treturn this\n}\n", "import { select as d3select } from 'd3-selection'\nimport * as client from './client'\nimport { genomic2gm } from './coord'\nimport { bplen as bplength } from '#shared/common.js'\nimport Svmr from './svmr.c'\n\nexport function svmrparseinput(arg, sayerror, genome, holder, hostURL, jwt) {\n\tif (!arg.dataname) {\n\t\targ.dataname = 'Unnamed dataset'\n\t}\n\tif (arg.input) {\n\t\tconst [e, header, items] = svmrparseraw(arg.input, genome)\n\t\tif (e) {\n\t\t\tsayerror('Fusion Editor input error: ' + e)\n\t\t\treturn\n\t\t}\n\t\tsvmrlaunch(genome, header, items, arg.dataname, holder, hostURL, jwt)\n\t\treturn\n\t}\n\tif (!arg.urls) {\n\t\tsayerror('neither .input:\"\" or .urls:[] is provided for Fusion Editor')\n\t\treturn\n\t}\n\tif (!Array.isArray(arg.urls)) {\n\t\tsayerror('fusioneditor.urls[] should be an array of URL strings')\n\t\treturn\n\t}\n\tif (arg.urls.length == 0) {\n\t\tsayerror('fusioneditor.urls[] is empty')\n\t\treturn\n\t}\n\tconst wait = holder\n\t\t.append('div')\n\t\t.style('margin', '20px')\n\t\t.style('color', '#aaa')\n\t\t.style('font-size', '1.5em')\n\t\t.text('Loading fusion gene data ...')\n\n\tconst tasks = []\n\n\targ.urls.forEach(url => {\n\t\ttasks.push(\n\t\t\tfetch(\n\t\t\t\tnew Request(hostURL + '/urltextfile', {\n\t\t\t\t\tmethod: 'POST',\n\t\t\t\t\theaders: { 'content-type': 'application/json' },\n\t\t\t\t\tbody: JSON.stringify({ url: url, jwt: jwt })\n\t\t\t\t})\n\t\t\t)\n\t\t\t\t.then(data => {\n\t\t\t\t\treturn data.json()\n\t\t\t\t})\n\t\t\t\t.then(data => {\n\t\t\t\t\tif (data.error) throw { message: 'Error with ' + url + ': ' + data.error }\n\t\t\t\t\treturn { data: data.text, url: url }\n\t\t\t\t})\n\t\t)\n\t})\n\n\tPromise.all(tasks)\n\t\t.then(data => {\n\t\t\twait.remove()\n\t\t\tif (data.length == 0) {\n\t\t\t\tsayerror('No data retrieved from fusioneditor.urls')\n\t\t\t\treturn\n\t\t\t}\n\t\t\t// begin with parsing the first file and initialize holders\n\t\t\tconst [e, header, items] = svmrparseraw(data[0].data, genome)\n\t\t\tif (e) {\n\t\t\t\tsayerror('Error parsing fusion gene data in file ' + data[0].url)\n\t\t\t\treturn\n\t\t\t}\n\t\t\t// first file parsed, proceed with more\n\t\t\tfor (let i = 1; i < data.length; i++) {\n\t\t\t\tconst [e, header2, items2] = svmrparseraw(data[i].data, genome)\n\t\t\t\tif (e) {\n\t\t\t\t\tsayerror('Error parsing fusion gene data in file ' + data[i].url)\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tfor (const j of items2) {\n\t\t\t\t\titems.push(j)\n\t\t\t\t}\n\t\t\t\t// anything new in header2 will be added to header\n\t\t\t\tfor (const h of header2) {\n\t\t\t\t\tlet notfound = true\n\t\t\t\t\tfor (const h2 of header) {\n\t\t\t\t\t\tif (h2.key == h.key) {\n\t\t\t\t\t\t\tnotfound = false\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (notfound) {\n\t\t\t\t\t\theader.push(h)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (items.length == 0) {\n\t\t\t\tsayerror('No fusion genes parsed from fusioneditor')\n\t\t\t\treturn\n\t\t\t}\n\t\t\tsvmrlaunch(genome, header, items, arg.dataname, holder, hostURL, jwt)\n\t\t})\n\t\t.catch(err => {\n\t\t\twait.remove()\n\t\t\tsayerror(err.message)\n\t\t\tif (err.stack) console.log(err.stack)\n\t\t})\n}\n\nexport function svmrui(dlst, genomes, hostURL, jwt) {\n\tconst [pane, inputdiv, gselect, filediv, saydiv, visualdiv] = dlst\n\tinputdiv\n\t\t.append('div')\n\t\t.style('margin-top', '20px')\n\t\t.html(\n\t\t\t'<p>Please upload CICERO output as a text file. ' +\n\t\t\t\t'See <a href=https://docs.google.com/document/d/1jkVYRPIJpkWvA9vqtahRlNn63Hk5DehjHbF_BH9k7Rs/edit?usp=sharing target=_blank>file format</a>.</p>' +\n\t\t\t\t'<p>See <a href=https://docs.google.com/document/d/1DRVzE_WenG490eRYB7VGFOygtSqtF5L97rhK0HOUCNY/edit?usp=sharing target=_blank>function usage</a>.</p>'\n\t\t)\n\tinputdiv\n\t\t.append('p')\n\t\t.html('<a href=https://proteinpaint.stjude.org/ppdemo/hg19/fusion/cicero.output target=_blank>Example file</a>')\n\tfunction cmt(t, red) {\n\t\tsaydiv.style('color', red ? 'red' : 'black').text(t)\n\t}\n\tconst fileui = () => {\n\t\tfilediv.selectAll('*').remove()\n\t\tconst input = filediv\n\t\t\t.append('input')\n\t\t\t.attr('type', 'file')\n\t\t\t.on('change', event => {\n\t\t\t\tconst file = event.target.files[0]\n\t\t\t\tif (!file) {\n\t\t\t\t\tfileui()\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tif (!file.size) {\n\t\t\t\t\tcmt('Invalid file ' + file.name)\n\t\t\t\t\tfileui()\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tconst reader = new FileReader()\n\t\t\t\treader.onload = event => {\n\t\t\t\t\tconst usegenome = gselect.options[gselect.selectedIndex].innerHTML\n\t\t\t\t\tconst genomeobj = genomes[usegenome]\n\t\t\t\t\tconst [err, header, items] = svmrparseraw(event.target.result, genomeobj)\n\t\t\t\t\tif (err) {\n\t\t\t\t\t\tcmt(err, 1)\n\t\t\t\t\t\tfileui()\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t\tsvmrlaunch(genomeobj, header, items, file.name, visualdiv, hostURL, jwt)\n\t\t\t\t\tfilediv.remove()\n\t\t\t\t\tinputdiv.remove()\n\t\t\t\t}\n\t\t\t\treader.onerror = function () {\n\t\t\t\t\tcmt('Error reading file ' + file.name, 1)\n\t\t\t\t\tfileui()\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\treader.readAsText(file, 'utf8')\n\t\t\t})\n\n\t\tsetTimeout(() => input.node().focus(), 1100)\n\t}\n\tfileui()\n}\n\nexport function svmrlaunch(genome, header, items, filename, holder, hostURL, jwt) {\n\tnew Svmr(genome, header, items, filename, holder, hostURL, jwt)\n}\n\nexport function svmrparseraw(raw, genome) {\n\tconst lines = raw.trim().split('\\n')\n\tconst [err, header] = parseheader(lines[0])\n\tif (err) {\n\t\treturn ['File header error: ' + err]\n\t}\n\tconst skipword = lines[0].split('\\t')[0]\n\tconst items = []\n\tconst badlines = []\n\tfor (let i = 1; i < lines.length; i++) {\n\t\tconst line = lines[i]\n\t\tif (line == '') continue\n\t\tif (line[0] == '#') continue\n\t\tconst lst = line.trim().split('\\t')\n\t\tif (lst[0] == skipword) continue\n\t\t// m is a product\n\t\tconst m = {\n\t\t\tnotes: [] // collect notes\n\t\t}\n\t\tfor (let j = 0; j < header.length; j++) {\n\t\t\tif (lst[j] !== undefined && lst[j].includes('\"'))\n\t\t\t\treturn ['Input file has invalid character \" e.g. \"NM_001007565\"']\n\t\t\tm[header[j].key] = lst[j]\n\t\t}\n\t\tif (!m.rating) {\n\t\t\tbadlines.push([i, 'rating unspecified', lst])\n\t\t\tcontinue\n\t\t}\n\t\tlet s = m.rating\n\t\tif (s.toLowerCase() == 'major') {\n\t\t\tm.rating = 'HQ'\n\t\t\ts = 'HQ'\n\t\t}\n\t\tif (s != 'HQ' && s != 'LQ' && s != 'RT' && s != 'bad') {\n\t\t\tbadlines.push([i, 'invalid rating: ' + m.rating, lst])\n\t\t\tcontinue\n\t\t}\n\t\tif (!m.chrA) {\n\t\t\tbadlines.push([i, 'missing chrA', lst])\n\t\t\tcontinue\n\t\t}\n\t\tif (!genome.chrlookup[m.chrA.toUpperCase()]) {\n\t\t\tbadlines.push([i, 'invalid chrA: ' + m.chrA, lst])\n\t\t\tcontinue\n\t\t}\n\t\tif (!m.chrB) {\n\t\t\tbadlines.push([i, 'missing chrB', lst])\n\t\t\tcontinue\n\t\t}\n\t\tif (!genome.chrlookup[m.chrB.toUpperCase()]) {\n\t\t\tbadlines.push([i, 'invalid chrB: ' + m.chrB, lst])\n\t\t\tcontinue\n\t\t}\n\t\ts = m.posA\n\t\tif (!s) {\n\t\t\tbadlines.push([i, 'missing posA', lst])\n\t\t\tcontinue\n\t\t}\n\t\tlet v = Number.parseInt(s)\n\t\tif (Number.isNaN(v)) {\n\t\t\tbadlines.push([i, 'invalid posA: ' + s, lst])\n\t\t\tcontinue\n\t\t}\n\t\tif (v < 0 || v >= genome.chrlookup[m.chrA.toUpperCase()]) {\n\t\t\tbadlines.push([i, 'invalid posA: ' + s, lst])\n\t\t\tcontinue\n\t\t}\n\t\tm.posA = v\n\t\ts = m.posB\n\t\tif (!s) {\n\t\t\tbadlines.push([i, 'missing posB', lst])\n\t\t\tcontinue\n\t\t}\n\t\tv = Number.parseInt(s)\n\t\tif (isNaN(v)) {\n\t\t\tbadlines.push([i, 'invalid posB: ' + s, lst])\n\t\t\tcontinue\n\t\t}\n\t\tif (v < 0 || v >= genome.chrlookup[m.chrB.toUpperCase()]) {\n\t\t\tbadlines.push([i, 'invalid posB: ' + s, lst])\n\t\t\tcontinue\n\t\t}\n\t\tm.posB = v\n\t\tif (!m.ratioA) {\n\t\t\tbadlines.push([i, 'missing ratioA', lst])\n\t\t\tcontinue\n\t\t}\n\t\tv = Number.parseFloat(m.ratioA)\n\t\tif (Number.isNaN(v)) {\n\t\t\tbadlines.push([i, 'invalid value for ratioA', lst])\n\t\t\tcontinue\n\t\t}\n\t\tif (v > 1) {\n\t\t\tbadlines.push([i, 'ratioA > 100%', lst])\n\t\t\tv = 1\n\t\t}\n\t\tm.ratioA = v\n\t\tif (!m.ratioB) {\n\t\t\tbadlines.push([i, 'missing ratioB', lst])\n\t\t\tcontinue\n\t\t}\n\t\tv = Number.parseFloat(m.ratioB)\n\t\tif (Number.isNaN(v)) {\n\t\t\tbadlines.push([i, 'invalid value for ratioB', lst])\n\t\t\tcontinue\n\t\t}\n\t\tif (v > 1) {\n\t\t\tbadlines.push([i, 'ratioB > 100%', lst])\n\t\t\tv = 1\n\t\t}\n\t\tm.ratioB = v\n\t\tif (!m.score) {\n\t\t\tbadlines.push([i, 'missing score', lst])\n\t\t\tcontinue\n\t\t}\n\t\tv = Number.parseFloat(m.score)\n\t\tif (Number.isNaN(v)) {\n\t\t\tbadlines.push([i, 'invalid value for score', lst])\n\t\t\tcontinue\n\t\t}\n\t\tm.score = v\n\n\t\tif (!m.readsA) {\n\t\t\tbadlines.push([i, 'readsA missing', lst])\n\t\t\tcontinue\n\t\t}\n\t\tv = Number.parseInt(m.readsA)\n\t\tif (Number.isNaN(v)) {\n\t\t\tbadlines.push([i, 'invalid value for readsA', lst])\n\t\t\tcontinue\n\t\t}\n\t\tm.readsA = v\n\t\tif (!m.readsB) {\n\t\t\tbadlines.push([i, 'readsB missing', lst])\n\t\t\tcontinue\n\t\t}\n\t\tv = Number.parseInt(m.readsB)\n\t\tif (Number.isNaN(v)) {\n\t\t\tbadlines.push([i, 'invalid value for readsB', lst])\n\t\t\tcontinue\n\t\t}\n\t\tm.readsB = v\n\n\t\tif (!m.matchA) {\n\t\t\tbadlines.push([i, 'matchA missing', lst])\n\t\t\tcontinue\n\t\t}\n\t\tv = Number.parseInt(m.matchA)\n\t\tif (Number.isNaN(v)) {\n\t\t\tbadlines.push([i, 'invalid value for matchA', lst])\n\t\t\tcontinue\n\t\t}\n\t\tm.matchA = v\n\t\tif (!m.matchB) {\n\t\t\tbadlines.push([i, 'matchB missing', lst])\n\t\t\tcontinue\n\t\t}\n\t\tv = Number.parseInt(m.matchB)\n\t\tif (Number.isNaN(v)) {\n\t\t\tbadlines.push([i, 'invalid value for matchB', lst])\n\t\t\tcontinue\n\t\t}\n\t\tm.matchB = v\n\n\t\tif (!m.repeatA) {\n\t\t\tbadlines.push([i, 'repeatA missing', lst])\n\t\t\tcontinue\n\t\t}\n\t\tv = Number.parseFloat(m.repeatA)\n\t\tif (Number.isNaN(v)) {\n\t\t\tbadlines.push([i, 'invalid value for repeatA', lst])\n\t\t\tcontinue\n\t\t}\n\t\tm.repeatA = v\n\t\tif (!m.repeatB) {\n\t\t\tbadlines.push([i, 'repeatB missing', lst])\n\t\t\tcontinue\n\t\t}\n\t\tv = Number.parseFloat(m.repeatB)\n\t\tif (Number.isNaN(v)) {\n\t\t\tbadlines.push([i, 'invalid value for repeatB', lst])\n\t\t\tcontinue\n\t\t}\n\t\tm.repeatB = v\n\n\t\tif (m.type2) {\n\t\t\tswitch (m.type2.toLowerCase()) {\n\t\t\t\tcase 'closs':\n\t\t\t\t\tm.iscloss = true\n\t\t\t\t\tbreak\n\t\t\t\tcase 'nloss':\n\t\t\t\t\tm.isnloss = true\n\t\t\t\t\tbreak\n\t\t\t\tcase 'fusion':\n\t\t\t\t\tm.isfusion = true\n\t\t\t\t\tbreak\n\t\t\t\tcase 'itd':\n\t\t\t\t\tm.isitd = true\n\t\t\t\t\tbreak\n\t\t\t\tcase 'other':\n\t\t\t\t\tm.isother = true\n\t\t\t\t\tbreak\n\t\t\t\tcase 'uptss':\n\t\t\t\t\tm.isuptss = true\n\t\t\t\t\tbreak\n\t\t\t\tdefault:\n\t\t\t\t\tbadlines.push([i, 'unknown type2: ' + m.type2, lst])\n\t\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\t\t// A B names\n\t\tif (m.geneA == '' || m.geneA == 'NA') {\n\t\t\tm.geneA = null\n\t\t}\n\t\tif (m.geneB == '' || m.geneB == 'NA') {\n\t\t\tm.geneB = null\n\t\t}\n\t\tif (m.featureA == 'intergenic') m.geneA = null\n\t\tif (m.featureB == 'intergenic') m.geneB = null\n\t\t// validate isoform pairs\n\t\tconst isoforma = m.lstisoforma ? m.lstisoforma.toUpperCase().split(',') : [],\n\t\t\tisoformb = m.lstisoformb ? m.lstisoformb.toUpperCase().split(',') : [],\n\t\t\tcodona = m.lstisoformacodon ? m.lstisoformacodon.split(',') : [],\n\t\t\tcodonb = m.lstisoformbcodon ? m.lstisoformbcodon.split(',') : [],\n\t\t\tframe = m.lstframe ? m.lstframe.split(',') : []\n\t\tlet exona = null,\n\t\t\texonb = null,\n\t\t\tanchora = null,\n\t\t\tanchorb = null,\n\t\t\tcontigaaA = null,\n\t\t\tcontigaaB = null,\n\t\t\tcontigbpA = null,\n\t\t\tcontigbpB = null\n\t\tif (m.lstisoformaexon) exona = m.lstisoformaexon.split(',')\n\t\tif (m.lstisoformbexon) exonb = m.lstisoformbexon.split(',')\n\t\tif (m.lstisoformaanchor) anchora = m.lstisoformaanchor.split(',')\n\t\tif (m.lstisoformbanchor) anchorb = m.lstisoformbanchor.split(',')\n\t\tif (m.lstcontigaaA) contigaaA = m.lstcontigaaA.split(',')\n\t\tif (m.lstcontigaaB) contigaaB = m.lstcontigaaB.split(',')\n\t\tif (m.lstcontigbpA) contigbpA = m.lstcontigbpA.split(',')\n\t\tif (m.lstcontigbpB) contigbpB = m.lstcontigbpB.split(',')\n\t\tconst paircount = Math.max(isoforma.length, isoformb.length, codona.length, codonb.length, frame.length)\n\t\t// good one, make pairs\n\t\tm.pairs = []\n\t\tfor (let j = 0; j < paircount; j++) {\n\t\t\tconst pair = {\n\t\t\t\ta: {\n\t\t\t\t\tisoform: isoforma[j] && isoforma[j].length > 0 ? isoforma[j] : null,\n\t\t\t\t\texon: exona ? Number.parseInt(exona[j]) : NaN,\n\t\t\t\t\tcodon: codona[j] ? Number.parseInt(codona[j]) : NaN,\n\t\t\t\t\tanchor: anchora ? anchora[j] : undefined\n\t\t\t\t},\n\t\t\t\tb: {\n\t\t\t\t\tisoform: isoformb[j] && isoformb[j].length > 0 ? isoformb[j] : null,\n\t\t\t\t\texon: exonb ? Number.parseInt(exonb[j]) : NaN,\n\t\t\t\t\tcodon: codonb[j] ? Number.parseInt(codonb[j]) : NaN,\n\t\t\t\t\tanchor: anchorb ? anchorb[j] : undefined\n\t\t\t\t},\n\t\t\t\tframe: frame[j],\n\t\t\t\tinframe: frame[j] == '1' || frame[j] == '2'\n\t\t\t}\n\t\t\tif (m.isuptss) {\n\t\t\t\tpair.inframe = true\n\t\t\t}\n\t\t\tlet aaa = NaN,\n\t\t\t\taab = NaN,\n\t\t\t\tbpa = NaN,\n\t\t\t\tbpb = NaN\n\t\t\tif (contigaaA && contigaaA[j]) aaa = Number.parseInt(contigaaA[j])\n\t\t\tif (contigaaB && contigaaB[j]) aab = Number.parseInt(contigaaB[j])\n\t\t\tif (contigbpA && contigbpA[j]) bpa = Number.parseInt(contigbpA[j])\n\t\t\tif (contigbpB && contigbpB[j]) bpb = Number.parseInt(contigbpB[j])\n\t\t\tif (!Number.isNaN(aaa) && !Number.isNaN(aab)) {\n\t\t\t\tpair.a.contigaa = aaa\n\t\t\t\tpair.b.contigaa = aab\n\t\t\t}\n\t\t\tif (!Number.isNaN(bpa) && !Number.isNaN(bpb)) {\n\t\t\t\tpair.a.contigbp = bpa\n\t\t\t\tpair.b.contigbp = bpb\n\t\t\t}\n\t\t\tm.pairs.push(pair)\n\t\t}\n\t\tif (m.exception) {\n\t\t\tm.notes.push(m.exception)\n\t\t}\n\t\tif (m.hlgene) {\n\t\t\tconst v = Number.parseInt(m.hlgene)\n\t\t\tif (Number.isNaN(v) || (v != 0 && v != 1 && v != 2 && v != 3 && v != 4)) {\n\t\t\t\tbadlines.push([i, 'invalid value for highlight gene flag: ' + m.hlgene, lst])\n\t\t\t\tdelete m.hlgene\n\t\t\t} else {\n\t\t\t\tm.hlgene = v\n\t\t\t}\n\t\t}\n\t\titems.push(m)\n\t}\n\tif (badlines.length > 0) {\n\t\tconst hlst = header.map(i => i.key)\n\t\tclient.bulk_badline(hlst, badlines)\n\t}\n\tif (items.length == 0) {\n\t\treturn ['No data loaded']\n\t}\n\treturn [null, header, items]\n}\n\nfunction parseheader(line) {\n\tconst original = line.trim().split('\\t')\n\tif (original.length <= 1) return ['invalid file header']\n\tconst header = []\n\tconst lower = []\n\tfor (const i of original) {\n\t\tlower.push(i.toLowerCase())\n\t\theader.push({\n\t\t\tlabel: i,\n\t\t\tkey: i.toLowerCase(),\n\t\t\tcustom: true\n\t\t})\n\t}\n\tconst htry = (...arg) => {\n\t\tfor (const s of arg) {\n\t\t\tconst i = lower.indexOf(s)\n\t\t\tif (i != -1) return i\n\t\t}\n\t\treturn -1\n\t}\n\t// A\n\tlet i = htry('genea')\n\tif (i == -1) return ['geneA missing']\n\theader[i].key = 'geneA'\n\tdelete header[i].custom\n\ti = htry('chra')\n\tif (i == -1) return ['chrA missing']\n\theader[i].key = 'chrA'\n\tdelete header[i].custom\n\ti = htry('posa')\n\tif (i == -1) return ['posA missing']\n\theader[i].key = 'posA'\n\tdelete header[i].custom\n\ti = htry('orta')\n\tif (i == -1) return ['ortA missing']\n\theader[i].key = 'ortA'\n\tdelete header[i].custom\n\ti = htry('featurea')\n\tif (i == -1) return ['featureA missing']\n\theader[i].key = 'featureA'\n\tdelete header[i].custom\n\ti = htry('ratioa')\n\tif (i == -1) return ['ratioA missing']\n\theader[i].key = 'ratioA'\n\tdelete header[i].custom\n\ti = htry('readsa')\n\tif (i == -1) return ['readsA missing']\n\theader[i].key = 'readsA'\n\tdelete header[i].custom\n\ti = htry('sv_refseqa_aa_index')\n\tif (i != -1) {\n\t\theader[i].key = 'lstcontigaaA'\n\t\tdelete header[i].custom\n\t}\n\ti = htry('sv_refseqa_contig_index')\n\tif (i != -1) {\n\t\theader[i].key = 'lstcontigbpA'\n\t\tdelete header[i].custom\n\t}\n\ti = htry('total_readsa')\n\tif (i != -1) {\n\t\theader[i].key = 'totalreadsA'\n\t\tdelete header[i].custom\n\t}\n\n\t// B\n\ti = htry('geneb')\n\tif (i == -1) return ['geneB missing']\n\theader[i].key = 'geneB'\n\tdelete header[i].custom\n\ti = htry('chrb')\n\tif (i == -1) return ['chrB missing']\n\theader[i].key = 'chrB'\n\tdelete header[i].custom\n\ti = htry('posb')\n\tif (i == -1) return ['posB missing']\n\theader[i].key = 'posB'\n\tdelete header[i].custom\n\ti = htry('ortb')\n\tif (i == -1) return ['ortB missing']\n\theader[i].key = 'ortB'\n\tdelete header[i].custom\n\ti = htry('featureb')\n\tif (i == -1) return ['featureB missing']\n\theader[i].key = 'featureB'\n\tdelete header[i].custom\n\ti = htry('ratiob')\n\tif (i == -1) return ['ratioB missing']\n\theader[i].key = 'ratioB'\n\tdelete header[i].custom\n\ti = htry('readsb')\n\tif (i == -1) return ['readsB missing']\n\theader[i].key = 'readsB'\n\tdelete header[i].custom\n\ti = htry('sv_refseqb_aa_index')\n\tif (i != -1) {\n\t\theader[i].key = 'lstcontigaaB'\n\t\tdelete header[i].custom\n\t}\n\ti = htry('sv_refseqb_contig_index')\n\tif (i != -1) {\n\t\theader[i].key = 'lstcontigbpB'\n\t\tdelete header[i].custom\n\t}\n\ti = htry('total_readsb')\n\tif (i != -1) {\n\t\theader[i].key = 'totalreadsB'\n\t\tdelete header[i].custom\n\t}\n\t// others\n\ti = htry('sv_inframe', 'frame')\n\tif (i == -1) return ['sv_inframe missing']\n\theader[i].key = 'lstframe'\n\tdelete header[i].custom\n\ti = htry('sv_refseqa')\n\tif (i == -1) return ['sv_refseqA missing']\n\theader[i].key = 'lstisoforma'\n\tdelete header[i].custom\n\n\ti = htry('sv_refseqa_codon')\n\t//if(i==-1) return ['sv_refseqA_codon missing']\n\t//header[i].key='lstisoformacodon'\n\tif (i != -1) {\n\t\theader[i].key = 'lstisoformacodon'\n\t}\n\n\ti = htry('sv_refseqb_codon')\n\t//if(i==-1) return ['sv_refseqB_codon missing']\n\t//header[i].key='lstisoformbcodon'\n\tif (i != -1) {\n\t\theader[i].key = 'lstisoformbcodon'\n\t}\n\n\ti = htry('score')\n\tif (i == -1) return ['score missing']\n\theader[i].key = 'score'\n\tdelete header[i].custom\n\ti = htry('sv_refseqb')\n\tif (i == -1) return ['sv_refseqB missing']\n\theader[i].key = 'lstisoformb'\n\tdelete header[i].custom\n\ti = htry('rating')\n\tif (i == -1) return ['rating missing']\n\theader[i].key = 'rating'\n\tdelete header[i].custom\n\n\ti = htry('matcha')\n\tif (i == -1) return ['matchA missing']\n\theader[i].key = 'matchA'\n\tdelete header[i].custom\n\ti = htry('matchb')\n\tif (i == -1) return ['matchB missing']\n\theader[i].key = 'matchB'\n\tdelete header[i].custom\n\ti = htry('repeata')\n\tif (i == -1) return ['repeatA missing']\n\theader[i].key = 'repeatA'\n\tdelete header[i].custom\n\ti = htry('repeatb')\n\tif (i == -1) return ['repeatB missing']\n\theader[i].key = 'repeatB'\n\tdelete header[i].custom\n\n\ti = htry('functional effect')\n\tif (i == -1) return ['functional effect missing']\n\theader[i].key = 'type2'\n\tdelete header[i].custom\n\n\t// may need to support other fusion builder format, so keep optional fields\n\ti = htry('sample')\n\tif (i != -1) {\n\t\theader[i].key = 'sample'\n\t\tdelete header[i].custom\n\t}\n\ti = htry('sv_processing_exception')\n\tif (i != -1) {\n\t\theader[i].key = 'exception'\n\t}\n\ti = htry('medal')\n\tif (i != -1) {\n\t\theader[i].key = 'hlgene'\n\t}\n\ti = htry('sv_refseqa_exon')\n\tif (i != -1) {\n\t\theader[i].key = 'lstisoformaexon'\n\t\tdelete header[i].custom\n\t}\n\ti = htry('sv_refseqb_exon')\n\tif (i != -1) {\n\t\theader[i].key = 'lstisoformbexon'\n\t\tdelete header[i].custom\n\t}\n\ti = htry('sv_refseqa_anchor_type')\n\tif (i != -1) {\n\t\theader[i].key = 'lstisoformaanchor'\n\t\tdelete header[i].custom\n\t}\n\ti = htry('sv_refseqb_anchor_type')\n\tif (i != -1) {\n\t\theader[i].key = 'lstisoformbanchor'\n\t\tdelete header[i].custom\n\t}\n\treturn [null, header]\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["bplen", "d0", "pair", "key", "key2", "tr", "td", "p", "lst", "y", "bplen", "event", "g_row", "text", "prod", "table", "_tr", "tr2", "p1", "p2", "sayerror", "e", "event", "v", "i"]
7
+ }