@sjcrh/proteinpaint-client 2.225.0 → 2.227.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 (951) hide show
  1. package/dist/2dmaf-B34EJADN.js +1362 -0
  2. package/dist/AggMatrixInput-USCXGZT2.js +402 -0
  3. package/dist/AggregateMatrix-VLCSBD65.js +37 -0
  4. package/dist/AppHeader-KE7QVEW5.js +826 -0
  5. package/dist/BoxPlot-3H5QKYRD.js +1247 -0
  6. package/dist/CorrelationVolcano-ACEJOJS6.js +613 -0
  7. package/dist/CorrelationVolcano-ACEJOJS6.js.map +7 -0
  8. package/dist/Cuminc-6LPS4LR7.js +1217 -0
  9. package/dist/DE-TTKEQYC7.js +85 -0
  10. package/dist/DEinput-W7WEO2NO.js +483 -0
  11. package/dist/DEinput-W7WEO2NO.js.map +7 -0
  12. package/dist/DM-2TUF6Q3C.js +86 -0
  13. package/dist/DifferentialAnalysis-3LP4RAWF.js +236 -0
  14. package/dist/Disco-UP5C7UWX.js +3445 -0
  15. package/dist/Disco.UI-V4I4LOMF.js +239 -0
  16. package/dist/DmrPlot-TZR2NGIH.js +366 -0
  17. package/dist/GB-4NRY4YMF.js +1388 -0
  18. package/dist/GB-4NRY4YMF.js.map +7 -0
  19. package/dist/GSEA-YGKBRJJO.js +870 -0
  20. package/dist/GeneExpInput-L3J2ECVQ.js +38 -0
  21. package/dist/Geomap-4MHU6F57.js +80 -0
  22. package/dist/HicApp-27VGP5F6.js +2240 -0
  23. package/dist/IDCViewer-37GJPPUY.js +10810 -0
  24. package/dist/NumBinaryEditor-SEC2NDGG.js +274 -0
  25. package/dist/NumBinaryEditor.unit.spec-UDYSUC4S.js +308 -0
  26. package/dist/NumContEditor-YPSYWU2A.js +100 -0
  27. package/dist/NumContEditor.unit.spec-NHFBMHQ5.js +160 -0
  28. package/dist/NumCustomBinEditor-N7US5Q64.js +29 -0
  29. package/dist/NumCustomBinEditor.unit.spec-2BMMUBYU.js +393 -0
  30. package/dist/NumDiscreteEditor-BLQ5DEB7.js +165 -0
  31. package/dist/NumDiscreteEditor.unit.spec-JOFPUFU5.js +229 -0
  32. package/dist/NumRegularBinEditor-7BFPBUW2.js +29 -0
  33. package/dist/NumRegularBinEditor.unit.spec-6GZMNRHA.js +274 -0
  34. package/dist/NumSplineEditor-LO3ZR3T3.js +205 -0
  35. package/dist/NumSplineEditor.unit.spec-MRA3DQSB.js +220 -0
  36. package/dist/NumericDensity-NUCVJZ74.js +29 -0
  37. package/dist/NumericDensity.unit.spec-TZLKWH4U.js +414 -0
  38. package/dist/NumericHandler-NH533VBN.js +30 -0
  39. package/dist/NumericHandler.unit.spec-V7MNEHML.js +225 -0
  40. package/dist/ProteomeInput-FEXWZOA2.js +610 -0
  41. package/dist/Regression-NJAPUGT7.js +1412 -0
  42. package/dist/RunChart2-QIJ6NUWY.js +744 -0
  43. package/dist/SC-5NWBVOEE.js +1290 -0
  44. package/dist/Violin-TMACI43Q.js +1105 -0
  45. package/dist/Volcano-BMLHQEXU.js +2745 -0
  46. package/dist/Volcano-BMLHQEXU.js.map +7 -0
  47. package/dist/Wsi-5TWAOBFG.js +650 -0
  48. package/dist/Wsi-5TWAOBFG.js.map +7 -0
  49. package/dist/aboutSunburst-53YAWTV5.js +93 -0
  50. package/dist/adSandbox-7VHXEI7W.js +29 -0
  51. package/dist/animatedBubbleChart-CTFGJIRR.js +542 -0
  52. package/dist/app-AQAQAPUN.js +38 -0
  53. package/dist/app-SZDIV5U4.js +28 -0
  54. package/dist/app.js +12 -12
  55. package/dist/bam-3U5R2KNC.js +872 -0
  56. package/dist/barchart-ZL5VSR7P.js +38 -0
  57. package/dist/barchart2-YELP2HI7.js +305 -0
  58. package/dist/block-AGX6Z4BR.js +6208 -0
  59. package/dist/block-AGX6Z4BR.js.map +7 -0
  60. package/dist/block.init-IBITFICI.js +29 -0
  61. package/dist/block.mds.expressionrank-4L76ILD4.js +350 -0
  62. package/dist/block.mds.geneboxplot-XA7DFHPV.js +819 -0
  63. package/dist/block.mds.junction-GTZD3HEN.js +1534 -0
  64. package/dist/block.mds.svcnv-HTXQ3LGR.js +6325 -0
  65. package/dist/block.svg-BM6OMVRF.js +155 -0
  66. package/dist/block.tk.aicheck-CV53ULEP.js +274 -0
  67. package/dist/block.tk.bam-KJYFNJCX.js +1906 -0
  68. package/dist/block.tk.bigwig.ui-A352D6PT.js +202 -0
  69. package/dist/block.tk.hicstraw-QAFTQESL.js +814 -0
  70. package/dist/block.tk.junction-XURB4RWZ.js +2353 -0
  71. package/dist/block.tk.junction.textmatrixui-RNRWWNGY.js +190 -0
  72. package/dist/block.tk.ld-GWJMVPX3.js +90 -0
  73. package/dist/block.tk.menu-BJZYFMQX.js +1050 -0
  74. package/dist/block.tk.pgv-7XNJTHEW.js +934 -0
  75. package/dist/brainImaging-37EDZLGN.js +550 -0
  76. package/dist/brainRegions-FEW52QUB.js +213 -0
  77. package/dist/bubbleHeatmap-YN34AA4H.js +374 -0
  78. package/dist/bubbleHeatmap-YN34AA4H.js.map +7 -0
  79. package/dist/cellTypeBubbleHeatmap-X4K63FOK.js +274 -0
  80. package/dist/cellTypeBubbleHeatmap-X4K63FOK.js.map +7 -0
  81. package/dist/chunk-24CVFDVW.js +1219 -0
  82. package/dist/chunk-24CVFDVW.js.map +7 -0
  83. package/dist/chunk-2B3CYHUF.js +30 -0
  84. package/dist/chunk-2IAELUCN.js +348 -0
  85. package/dist/chunk-2W6U53AG.js +195 -0
  86. package/dist/chunk-46GCGTHJ.js +1339 -0
  87. package/dist/chunk-4ZX5KHD7.js +96 -0
  88. package/dist/chunk-544DSOC3.js +466 -0
  89. package/dist/chunk-6CV3YVJD.js +194 -0
  90. package/dist/chunk-6UHSGC6G.js +276 -0
  91. package/dist/chunk-6ZZGFZV2.js +35 -0
  92. package/dist/chunk-72FUMSAN.js +6375 -0
  93. package/dist/chunk-7DC4PD5R.js +182 -0
  94. package/dist/chunk-7ISYXUJ7.js +243 -0
  95. package/dist/chunk-7NVFEGCE.js +30 -0
  96. package/dist/chunk-7PQ6MLKG.js +1253 -0
  97. package/dist/chunk-BGPRKPKH.js +56 -0
  98. package/dist/chunk-BILGOVOR.js +480 -0
  99. package/dist/chunk-BKJLRLQQ.js +2008 -0
  100. package/dist/chunk-BQYMKS7S.js +4521 -0
  101. package/dist/chunk-BQYMKS7S.js.map +7 -0
  102. package/dist/chunk-C4BKP67I.js +123 -0
  103. package/dist/chunk-CFYWQJ7F.js +472 -0
  104. package/dist/chunk-CFYWQJ7F.js.map +7 -0
  105. package/dist/chunk-CQNTAIM3.js +328 -0
  106. package/dist/chunk-CW3IVTRX.js +2685 -0
  107. package/dist/chunk-D7KZWYP5.js +516 -0
  108. package/dist/chunk-DFHERVYA.js +961 -0
  109. package/dist/chunk-DFHERVYA.js.map +7 -0
  110. package/dist/chunk-DNXOZATD.js +848 -0
  111. package/dist/chunk-DXF3YDRG.js +2334 -0
  112. package/dist/chunk-ECBVUPDE.js +626 -0
  113. package/dist/chunk-ES22B563.js +257 -0
  114. package/dist/chunk-FA2B6PKK.js +42 -0
  115. package/dist/chunk-FMHSDIVG.js +2932 -0
  116. package/dist/chunk-G5UFOMON.js +255 -0
  117. package/dist/chunk-GKA6USKV.js +550 -0
  118. package/dist/chunk-HGIPR72Y.js +299 -0
  119. package/dist/chunk-IBUDYN5E.js +468 -0
  120. package/dist/chunk-J37WYVIZ.js +418 -0
  121. package/dist/chunk-JG5CF5Q3.js +397 -0
  122. package/dist/chunk-JI632MAR.js +400 -0
  123. package/dist/chunk-JI632MAR.js.map +7 -0
  124. package/dist/chunk-JKPMBNRM.js +100 -0
  125. package/dist/chunk-JKPMBNRM.js.map +7 -0
  126. package/dist/chunk-JSQH233D.js +263 -0
  127. package/dist/chunk-JWWLSDVM.js +296 -0
  128. package/dist/chunk-KGK4JJ4L.js +830 -0
  129. package/dist/chunk-KGK4JJ4L.js.map +7 -0
  130. package/dist/chunk-KTJUDDVQ.js +340 -0
  131. package/dist/chunk-MY5MF4RI.js +55 -0
  132. package/dist/chunk-P4ZGUPGA.js +56 -0
  133. package/dist/chunk-PQDYA3ZQ.js +274 -0
  134. package/dist/chunk-PVJ6IIFA.js +176 -0
  135. package/dist/chunk-QGG5MTIL.js +161 -0
  136. package/dist/chunk-QGG5MTIL.js.map +7 -0
  137. package/dist/chunk-QKVKQD6S.js +184 -0
  138. package/dist/chunk-QNACCFOA.js +48 -0
  139. package/dist/chunk-QNACCFOA.js.map +7 -0
  140. package/dist/chunk-R6O3FLKW.js +141 -0
  141. package/dist/chunk-RFQQRF6Q.js +54 -0
  142. package/dist/chunk-RG27DDKN.js +267 -0
  143. package/dist/chunk-SB5DR4NL.js +562 -0
  144. package/dist/chunk-SF42FFDZ.js +2799 -0
  145. package/dist/chunk-SORR4JHU.js +14 -0
  146. package/dist/chunk-SZEBQMZW.js +50 -0
  147. package/dist/chunk-THDOHHDN.js +102 -0
  148. package/dist/chunk-TXDCZOPG.js +305 -0
  149. package/dist/chunk-U6GSEOBY.js +54 -0
  150. package/dist/chunk-UBTNM5RO.js +203 -0
  151. package/dist/chunk-UHZDDPUU.js +444 -0
  152. package/dist/chunk-UVES3USV.js +134 -0
  153. package/dist/chunk-UYA5LCAR.js +281 -0
  154. package/dist/chunk-VHEXNBCO.js +379 -0
  155. package/dist/chunk-VJJJFEOU.js +96 -0
  156. package/dist/chunk-VJJJFEOU.js.map +7 -0
  157. package/dist/chunk-VPRP24DY.js +2095 -0
  158. package/dist/chunk-VPRP24DY.js.map +7 -0
  159. package/dist/chunk-VVWZ4BOI.js +2349 -0
  160. package/dist/chunk-WENNRY5E.js +170 -0
  161. package/dist/chunk-WTLUZOBK.js +103 -0
  162. package/dist/chunk-YBXQBSFY.js +26888 -0
  163. package/dist/chunk-YBXQBSFY.js.map +7 -0
  164. package/dist/chunk-ZLEGHQOO.js +217 -0
  165. package/dist/chunk-ZO7KUAIF.js +5258 -0
  166. package/dist/chunk-ZO7KUAIF.js.map +7 -0
  167. package/dist/chunk-ZX7527EE.js +240 -0
  168. package/dist/cohort-NKRTCX5Z.js +66 -0
  169. package/dist/cohortSunburst-DFJW6WXU.js +402 -0
  170. package/dist/condition-PYFOEVX5.js +323 -0
  171. package/dist/controls-RVNIN66W.js +30 -0
  172. package/dist/controls.config-XVEYYBI4.js +30 -0
  173. package/dist/correlation-MNL4DGSW.js +91 -0
  174. package/dist/customdata.inputui-WFIIJATQ.js +280 -0
  175. package/dist/dataDownload-CMSP5FA4.js +326 -0
  176. package/dist/databrowser.ui-FYZPXXEJ.js +424 -0
  177. package/dist/dictionary-76BXY6WU.js +109 -0
  178. package/dist/dnaMethylation-WTIJVNIU.js +29 -0
  179. package/dist/dnaMethylation.integration.spec-YXQEFLC5.js +194 -0
  180. package/dist/dnaMethylation.unit.spec-22FLJWVB.js +95 -0
  181. package/dist/dnaMethylation.unit.spec-22FLJWVB.js.map +7 -0
  182. package/dist/dofetch-XID2XEJT.js +49 -0
  183. package/dist/e2pca-DD6DA7X3.js +340 -0
  184. package/dist/ep-S4PI4AUJ.js +1247 -0
  185. package/dist/expclust.gdc.spec-BDV4RJO6.js +298 -0
  186. package/dist/facet-EOXEW2LN.js +556 -0
  187. package/dist/gb-AKE7RDPB.js +77 -0
  188. package/dist/geneExpClustering-73ED7HIN.js +240 -0
  189. package/dist/geneExpression-AEJILDKJ.js +29 -0
  190. package/dist/geneExpression-NXDXXKEA.js +309 -0
  191. package/dist/geneExpression.unit.spec-VUJWR4TA.js +150 -0
  192. package/dist/geneExpression.unit.spec-VUJWR4TA.js.map +7 -0
  193. package/dist/geneORA-7KFQ4PW2.js +269 -0
  194. package/dist/geneRanking-RKJU4PM2.js +544 -0
  195. package/dist/geneVariant-2AGC3ECG.js +32 -0
  196. package/dist/geneVariant-PWMXP6H4.js +289 -0
  197. package/dist/geneVariant-PWMXP6H4.js.map +7 -0
  198. package/dist/geneVariant.integration.spec-UJXGQEZG.js +672 -0
  199. package/dist/genefusion.ui-KEBOA3TK.js +299 -0
  200. package/dist/geneset-BU6V3CB5.js +199 -0
  201. package/dist/genomeBrowser.spec-BGQHJZKH.js +272 -0
  202. package/dist/grin2-OUZN5LOU.js +66 -0
  203. package/dist/grin2-WRGQ7BDG.js +945 -0
  204. package/dist/hierCluster-3ERW47JJ.js +51 -0
  205. package/dist/hierCluster-JAFKBC6C.js +55 -0
  206. package/dist/hierCluster.config-QIJNY5OD.js +32 -0
  207. package/dist/hierCluster.integration.spec-XA4K3UU6.js +479 -0
  208. package/dist/hierCluster.interactivity-RDFPQOOP.js +45 -0
  209. package/dist/hierCluster.renderers-SU5IYI33.js +18 -0
  210. package/dist/imagePlot-J4PHG7V2.js +152 -0
  211. package/dist/importPlot-U67MZZXY.js +8 -0
  212. package/dist/isoformExpression-K5BCDJLL.js +31 -0
  213. package/dist/isoformExpression.unit.spec-35FHEO27.js +233 -0
  214. package/dist/junction-6GGWFF2J.js +32 -0
  215. package/dist/junction.unit.spec-7EJK4HML.js +224 -0
  216. package/dist/junction.unit.spec-7EJK4HML.js.map +7 -0
  217. package/dist/launch.adhoc-ONCSL65L.js +33 -0
  218. package/dist/leftlabel.sample-H5G3U7AA.js +260 -0
  219. package/dist/leftlabel.sample-H5G3U7AA.js.map +7 -0
  220. package/dist/lollipop-BWP4BG7Q.js +162 -0
  221. package/dist/maf-GV6JHWYK.js +451 -0
  222. package/dist/maftimeline-HE7XLJWG.js +583 -0
  223. package/dist/matrix-IAM6SA7K.js +50 -0
  224. package/dist/matrix-QF5MBV5Y.js +55 -0
  225. package/dist/matrix.cells-A5E63KDN.js +25 -0
  226. package/dist/matrix.config-VLRMO7J2.js +33 -0
  227. package/dist/matrix.data-R4FW2PQH.js +22 -0
  228. package/dist/matrix.groups-3UH2KOIY.js +25 -0
  229. package/dist/matrix.integration.spec-57YYARQU.js +3156 -0
  230. package/dist/matrix.interactivity-KNRJSSTQ.js +33 -0
  231. package/dist/matrix.layout-OMNDDITA.js +35 -0
  232. package/dist/matrix.legend-SE7SQTNN.js +19 -0
  233. package/dist/matrix.renderers-6MMW7XMU.js +30 -0
  234. package/dist/matrix.serieses-BEZCQDLJ.js +18 -0
  235. package/dist/matrix.sort-KRNS4VPF.js +25 -0
  236. package/dist/matrix.sort.unit.spec-UXTQPKVV.js +464 -0
  237. package/dist/matrix.sorterUi.unit.spec-LJJ7GCEB.js +334 -0
  238. package/dist/matrix.unit.spec-2OSFPN5T.js +146 -0
  239. package/dist/mavb-CZAZO6AO.js +726 -0
  240. package/dist/mds.samplescatterplot-ENSEO2VX.js +1545 -0
  241. package/dist/mds.survivalplot-QSKD6FSX.js +472 -0
  242. package/dist/multivalue-FZTFADA2.js +79 -0
  243. package/dist/numericDictTermCluster-IFIEM3E4.js +62 -0
  244. package/dist/oncomatrix-GZKCAMSR.js +286 -0
  245. package/dist/oncomatrix.spec-FTLMVGTH.js +439 -0
  246. package/dist/plot.2dvaf-PWO4XOFU.js +368 -0
  247. package/dist/plot.app-JYBZEBHK.js +32 -0
  248. package/dist/plot.barplot-PA2PDVOB.js +93 -0
  249. package/dist/plot.boxplot-IHIEWQWG.js +142 -0
  250. package/dist/plot.brainImaging-WQ2WWEW3.js +51 -0
  251. package/dist/plot.disco-QIURLAHA.js +100 -0
  252. package/dist/plot.ssgq-T27XDC4K.js +130 -0
  253. package/dist/plot.vaf2cov-Y2DJRQED.js +249 -0
  254. package/dist/polar2-3MFBRZ4G.js +228 -0
  255. package/dist/profileForms-J3O7XDHY.js +937 -0
  256. package/dist/profilePlot-C45ERAOZ.js +45 -0
  257. package/dist/proteinView-F2EVY7V5.js +1346 -0
  258. package/dist/proteinView-F2EVY7V5.js.map +7 -0
  259. package/dist/proteomeCohortCompare-2IS7GNJZ.js +866 -0
  260. package/dist/pseudbulk.unit.spec-SY3ATAPK.js +82 -0
  261. package/dist/pseudobulk-N6WNHKAC.js +31 -0
  262. package/dist/qualitative-SKUTWJLA.js +34 -0
  263. package/dist/qualitative-XWN5V3EE.js +241 -0
  264. package/dist/radar2-AHZME5CF.js +323 -0
  265. package/dist/radarFacility2-CVEVC4U5.js +331 -0
  266. package/dist/render-S47OJIIP.js +29 -0
  267. package/dist/report-IPX3PKSW.js +213 -0
  268. package/dist/sampleView-OZQUKPVV.js +39 -0
  269. package/dist/samplelst-7XXJTJ4J.js +114 -0
  270. package/dist/samplematrix-JN35HJBG.js +2188 -0
  271. package/dist/sc-6ZHDNPYP.js +77 -0
  272. package/dist/scatter-4MP6TG67.js +84 -0
  273. package/dist/scatter-TRMY47CC.js +919 -0
  274. package/dist/selectGenomeWithTklst-UDNTL544.js +125 -0
  275. package/dist/singleCellCellType-UXABRPQQ.js +29 -0
  276. package/dist/singleCellCellType.unit.spec-N22EQMZW.js +150 -0
  277. package/dist/singleCellGeneExpression-OBPVP6IU.js +29 -0
  278. package/dist/singleCellGeneExpression.unit.spec-NVCFU5B4.js +144 -0
  279. package/dist/singleCellNumericValue-Z2X3LLRB.js +29 -0
  280. package/dist/singleCellNumericValue.unit.spec-Q7DCQHEE.js +412 -0
  281. package/dist/singleCellPlot-S5N6ZEEA.js +44 -0
  282. package/dist/singlecell-OK2P4AS2.js +1562 -0
  283. package/dist/singlecell-RI6HA3NI.js +77 -0
  284. package/dist/snp-XRM2UAEJ.js +29 -0
  285. package/dist/snp.unit.spec-CDTYGH4K.js +167 -0
  286. package/dist/snplocus-CAUGDRZE.js +200 -0
  287. package/dist/snplst-DP533FL2.js +36 -0
  288. package/dist/spliceevent.a53ss.diagram-XWEN4UMO.js +142 -0
  289. package/dist/spliceevent.exonskip.diagram-HBXQOUT4.js +274 -0
  290. package/dist/spliceevent.noeventdiagram-ORQJ62ON.js +451 -0
  291. package/dist/ssGSEA-PLDZ2556.js +29 -0
  292. package/dist/ssGSEA.unit.spec-ORFJFZJY.js +79 -0
  293. package/dist/stattable-GVRVRO2Y.js +112 -0
  294. package/dist/studyCatalog-K46WJHC6.js +457 -0
  295. package/dist/summarizeCnvGeneexp-7WSJTWKH.js +154 -0
  296. package/dist/summarizeGeneexpSurvival-H3TW7I4I.js +101 -0
  297. package/dist/summarizeMutationCnv-JOYXEMFP.js +155 -0
  298. package/dist/summarizeMutationDiagnosis-GBIGXFY5.js +31 -0
  299. package/dist/summarizeMutationSurvival-3RULG3KW.js +95 -0
  300. package/dist/summary-VKLFTPC2.js +40 -0
  301. package/dist/summary.integration.spec-EK3MPFVD.js +405 -0
  302. package/dist/summaryInput-POI5KQSP.js +238 -0
  303. package/dist/sunburst-BIVYHF5R.js +274 -0
  304. package/dist/sunburst-SYHQOCGQ.js +34 -0
  305. package/dist/survival-CG2GQ4YY.js +1248 -0
  306. package/dist/survival-NEO3E2HS.js +49 -0
  307. package/dist/survival.integration.spec-PPK5KO4V.js +609 -0
  308. package/dist/svgraph-Q2U2HEMF.js +1377 -0
  309. package/dist/svmr-HKFHKGLI.js +3574 -0
  310. package/dist/svmr-HKFHKGLI.js.map +7 -0
  311. package/dist/swimmer-GA4C6YH7.js +993 -0
  312. package/dist/table-DJJIES6L.js +192 -0
  313. package/dist/termCollection-CHVUM5C6.js +247 -0
  314. package/dist/termCollection-R3LTBPJ4.js +29 -0
  315. package/dist/termCollection.unit.spec-B7KAAOFT.js +295 -0
  316. package/dist/termCollectionFractionSelection-A72QM36J.js +38 -0
  317. package/dist/termCollectionFractionSelection.unit.spec-JR77QEIG.js +184 -0
  318. package/dist/tk-GRGKFATN.js +38 -0
  319. package/dist/tk-WV2G2UPY.js +1224 -0
  320. package/dist/tk-WV2G2UPY.js.map +7 -0
  321. package/dist/tp.ui-NATRJ5EN.js +1453 -0
  322. package/dist/tvs.categorical-U2ZYLPSW.js +28 -0
  323. package/dist/tvs.condition-6EBZALR4.js +160 -0
  324. package/dist/tvs.dt-H626ESMQ.js +34 -0
  325. package/dist/tvs.dtcnv.categorical-6S7INDYC.js +31 -0
  326. package/dist/tvs.dtcnv.continuous-MLYNEMHI.js +72 -0
  327. package/dist/tvs.dtfusion-2OLY6X7G.js +31 -0
  328. package/dist/tvs.dtitd-Z6MEL5SH.js +31 -0
  329. package/dist/tvs.dtsnvindel-HPBQSCYV.js +31 -0
  330. package/dist/tvs.dtsv-BRRNX64J.js +31 -0
  331. package/dist/tvs.multivalue-H2G7WKAL.js +84 -0
  332. package/dist/tvs.numeric-OKYGMQSK.js +32 -0
  333. package/dist/tvs.samplelst-46FGACU7.js +95 -0
  334. package/dist/tvs.survival-QL4KC3SQ.js +110 -0
  335. package/dist/tvs.termCollection-22DFW3PF.js +118 -0
  336. package/dist/vocabulary-LJEERZJ6.js +32 -0
  337. package/dist/wsi.direct-3GGVEVQ4.js +11600 -0
  338. package/dist/wsi.direct-3GGVEVQ4.js.map +7 -0
  339. package/package.json +3 -3
  340. package/dist/2dmaf-4W2R2HXG.js +0 -1362
  341. package/dist/AggMatrixInput-3SQ7UW5L.js +0 -402
  342. package/dist/AggregateMatrix-QI55DXDU.js +0 -37
  343. package/dist/AppHeader-C26OHIUQ.js +0 -826
  344. package/dist/BoxPlot-27OYBGJ3.js +0 -1247
  345. package/dist/CorrelationVolcano-XIMXCSHG.js +0 -613
  346. package/dist/CorrelationVolcano-XIMXCSHG.js.map +0 -7
  347. package/dist/Cuminc-737O733E.js +0 -1217
  348. package/dist/DE-EDTGDY6L.js +0 -85
  349. package/dist/DEinput-ZN76I5M5.js +0 -479
  350. package/dist/DEinput-ZN76I5M5.js.map +0 -7
  351. package/dist/DM-25IRANGL.js +0 -86
  352. package/dist/DifferentialAnalysis-7HQYEA5T.js +0 -236
  353. package/dist/Disco-4YNXWGRX.js +0 -3445
  354. package/dist/Disco.UI-67HBGS4Y.js +0 -239
  355. package/dist/DmrPlot-KZVDVPUT.js +0 -366
  356. package/dist/GB-HT3B7Y7R.js +0 -1388
  357. package/dist/GB-HT3B7Y7R.js.map +0 -7
  358. package/dist/GSEA-CMFMNK5Y.js +0 -870
  359. package/dist/GeneExpInput-HMGV23E7.js +0 -38
  360. package/dist/Geomap-RB4SGVPC.js +0 -80
  361. package/dist/HicApp-YRP6YQFA.js +0 -2240
  362. package/dist/IDCViewer-OUSOZNSR.js +0 -10810
  363. package/dist/NumBinaryEditor-YFQDPBB6.js +0 -274
  364. package/dist/NumBinaryEditor.unit.spec-6YC5PCPK.js +0 -308
  365. package/dist/NumContEditor-EH6MA2RW.js +0 -100
  366. package/dist/NumContEditor.unit.spec-Q2JBVIRT.js +0 -160
  367. package/dist/NumCustomBinEditor-USQA3BC6.js +0 -29
  368. package/dist/NumCustomBinEditor.unit.spec-PE2HFRCK.js +0 -393
  369. package/dist/NumDiscreteEditor-VKE4WT24.js +0 -165
  370. package/dist/NumDiscreteEditor.unit.spec-JNG673LE.js +0 -229
  371. package/dist/NumRegularBinEditor-KCCPGJSX.js +0 -29
  372. package/dist/NumRegularBinEditor.unit.spec-4BLKQRZU.js +0 -274
  373. package/dist/NumSplineEditor-4YELHGUO.js +0 -205
  374. package/dist/NumSplineEditor.unit.spec-CKHHK6GH.js +0 -220
  375. package/dist/NumericDensity-LCFM7VSY.js +0 -29
  376. package/dist/NumericDensity.unit.spec-R4ARTJ5I.js +0 -414
  377. package/dist/NumericHandler-2OHRSY6Z.js +0 -30
  378. package/dist/NumericHandler.unit.spec-M3TRIFZW.js +0 -225
  379. package/dist/ProteomeInput-G2EP6QH2.js +0 -610
  380. package/dist/Regression-2HKE6C7F.js +0 -1412
  381. package/dist/RunChart2-WRVW63PB.js +0 -744
  382. package/dist/SC-37RDNFGH.js +0 -1290
  383. package/dist/Violin-KD6FPWC7.js +0 -1105
  384. package/dist/Volcano-U62TCDEL.js +0 -2748
  385. package/dist/Volcano-U62TCDEL.js.map +0 -7
  386. package/dist/Wsi-PB77PVAA.js +0 -637
  387. package/dist/Wsi-PB77PVAA.js.map +0 -7
  388. package/dist/aboutSunburst-5Z24ODIN.js +0 -93
  389. package/dist/adSandbox-AFORHU3V.js +0 -29
  390. package/dist/animatedBubbleChart-F75OBRZW.js +0 -542
  391. package/dist/app-4RZ76DZZ.js +0 -28
  392. package/dist/app-IHE3RNI5.js +0 -38
  393. package/dist/bam-IIRZX3IK.js +0 -872
  394. package/dist/barchart-UIHRIMOE.js +0 -38
  395. package/dist/barchart2-DG3S6FDJ.js +0 -305
  396. package/dist/block-COZKGPXY.js +0 -6203
  397. package/dist/block-COZKGPXY.js.map +0 -7
  398. package/dist/block.init-UBXYVTPQ.js +0 -29
  399. package/dist/block.mds.expressionrank-KSXPPPGR.js +0 -350
  400. package/dist/block.mds.geneboxplot-5RDFDVDE.js +0 -819
  401. package/dist/block.mds.junction-LMM24KXJ.js +0 -1534
  402. package/dist/block.mds.svcnv-4XRXZMPS.js +0 -6325
  403. package/dist/block.svg-VAKLMPMS.js +0 -155
  404. package/dist/block.tk.aicheck-6GHZK2YY.js +0 -274
  405. package/dist/block.tk.bam-7H3BSHR2.js +0 -1906
  406. package/dist/block.tk.bigwig.ui-KX2GACY5.js +0 -202
  407. package/dist/block.tk.hicstraw-OOWEWGMF.js +0 -814
  408. package/dist/block.tk.junction-U7W36OZA.js +0 -2353
  409. package/dist/block.tk.junction.textmatrixui-PAMSBYZT.js +0 -190
  410. package/dist/block.tk.ld-RFQPDG7Q.js +0 -90
  411. package/dist/block.tk.menu-JDJU2OGK.js +0 -1050
  412. package/dist/block.tk.pgv-G2UFCQUT.js +0 -934
  413. package/dist/brainImaging-ASAHWZJH.js +0 -550
  414. package/dist/brainRegions-XTJDLUU4.js +0 -213
  415. package/dist/bubbleHeatmap-UPUITTU6.js +0 -374
  416. package/dist/bubbleHeatmap-UPUITTU6.js.map +0 -7
  417. package/dist/cellTypeBubbleHeatmap-25SOXC2Q.js +0 -274
  418. package/dist/cellTypeBubbleHeatmap-25SOXC2Q.js.map +0 -7
  419. package/dist/chunk-2ZYAC3DC.js +0 -299
  420. package/dist/chunk-325X3T7G.js +0 -692
  421. package/dist/chunk-325X3T7G.js.map +0 -7
  422. package/dist/chunk-3UXHTSZJ.js +0 -159
  423. package/dist/chunk-3UXHTSZJ.js.map +0 -7
  424. package/dist/chunk-4DFKK46J.js +0 -96
  425. package/dist/chunk-54W2RWRB.js +0 -123
  426. package/dist/chunk-5QGC2624.js +0 -54
  427. package/dist/chunk-5YKXYWP3.js +0 -480
  428. package/dist/chunk-6B4AME6E.js +0 -4389
  429. package/dist/chunk-6B4AME6E.js.map +0 -7
  430. package/dist/chunk-6H4FFHFQ.js +0 -82
  431. package/dist/chunk-6H4FFHFQ.js.map +0 -7
  432. package/dist/chunk-72QBXULB.js +0 -102
  433. package/dist/chunk-7APH7QLC.js +0 -141
  434. package/dist/chunk-7HBAALWJ.js +0 -2685
  435. package/dist/chunk-7UK7CU4F.js +0 -398
  436. package/dist/chunk-7UK7CU4F.js.map +0 -7
  437. package/dist/chunk-7ZTUUKLX.js +0 -203
  438. package/dist/chunk-A7GCFL3R.js +0 -30
  439. package/dist/chunk-AGWIWLOP.js +0 -14
  440. package/dist/chunk-CHQ43UJQ.js +0 -397
  441. package/dist/chunk-CQWR4QZO.js +0 -70
  442. package/dist/chunk-CQWR4QZO.js.map +0 -7
  443. package/dist/chunk-D6TLBMIX.js +0 -1339
  444. package/dist/chunk-DDABG5BR.js +0 -328
  445. package/dist/chunk-DR5JLHTB.js +0 -35
  446. package/dist/chunk-E2Z4X6C2.js +0 -55
  447. package/dist/chunk-E4WAVMI5.js +0 -194
  448. package/dist/chunk-EM76Y3HQ.js +0 -1253
  449. package/dist/chunk-ES7XNERS.js +0 -468
  450. package/dist/chunk-F2RTD23W.js +0 -848
  451. package/dist/chunk-FEE2HAON.js +0 -418
  452. package/dist/chunk-G5BQJGRA.js +0 -2799
  453. package/dist/chunk-GAYYXHOG.js +0 -257
  454. package/dist/chunk-GDIKNIEA.js +0 -263
  455. package/dist/chunk-GIZTZCE5.js +0 -195
  456. package/dist/chunk-GONC3LVY.js +0 -626
  457. package/dist/chunk-HGC4EON3.js +0 -348
  458. package/dist/chunk-HM23KADV.js +0 -281
  459. package/dist/chunk-I7R6YROK.js +0 -267
  460. package/dist/chunk-JWX6GEWQ.js +0 -276
  461. package/dist/chunk-K4LZR3HU.js +0 -56
  462. package/dist/chunk-K55KOEI6.js +0 -6375
  463. package/dist/chunk-K7YJILBY.js +0 -5254
  464. package/dist/chunk-K7YJILBY.js.map +0 -7
  465. package/dist/chunk-KLJM7HE5.js +0 -2349
  466. package/dist/chunk-LFH5VSSF.js +0 -176
  467. package/dist/chunk-MBWG3QHI.js +0 -1219
  468. package/dist/chunk-MBWG3QHI.js.map +0 -7
  469. package/dist/chunk-MZTVOOR6.js +0 -56
  470. package/dist/chunk-N2JOZ3QD.js +0 -444
  471. package/dist/chunk-NG2U3VHX.js +0 -170
  472. package/dist/chunk-NUGYNLTL.js +0 -2334
  473. package/dist/chunk-OCOB7XJW.js +0 -2008
  474. package/dist/chunk-OGDBTL5C.js +0 -54
  475. package/dist/chunk-OOVVKQSD.js +0 -26747
  476. package/dist/chunk-OOVVKQSD.js.map +0 -7
  477. package/dist/chunk-PAF5KZCR.js +0 -2932
  478. package/dist/chunk-PPICALUF.js +0 -2102
  479. package/dist/chunk-PPICALUF.js.map +0 -7
  480. package/dist/chunk-QFOT5WAZ.js +0 -134
  481. package/dist/chunk-QFQJO7LD.js +0 -472
  482. package/dist/chunk-QFQJO7LD.js.map +0 -7
  483. package/dist/chunk-QGCB5AKN.js +0 -243
  484. package/dist/chunk-QRZRAMHA.js +0 -184
  485. package/dist/chunk-RGOZHZCN.js +0 -103
  486. package/dist/chunk-RJKY22D4.js +0 -240
  487. package/dist/chunk-RZ2HG7G3.js +0 -102
  488. package/dist/chunk-RZ2HG7G3.js.map +0 -7
  489. package/dist/chunk-SI2KSG6E.js +0 -379
  490. package/dist/chunk-U4PLKSSS.js +0 -50
  491. package/dist/chunk-U7G65D2G.js +0 -466
  492. package/dist/chunk-UU3FWU6D.js +0 -305
  493. package/dist/chunk-UXLT7W2N.js +0 -562
  494. package/dist/chunk-VHQDN3OA.js +0 -182
  495. package/dist/chunk-VTMNHAFC.js +0 -30
  496. package/dist/chunk-W3K7KLIR.js +0 -217
  497. package/dist/chunk-WSLS55SH.js +0 -296
  498. package/dist/chunk-XQIB27PB.js +0 -516
  499. package/dist/chunk-XSBGICK5.js +0 -652
  500. package/dist/chunk-XSBGICK5.js.map +0 -7
  501. package/dist/chunk-YHW2RAAG.js +0 -274
  502. package/dist/chunk-Z7CCL464.js +0 -550
  503. package/dist/chunk-ZBNPXXMK.js +0 -42
  504. package/dist/chunk-ZNHC46CT.js +0 -340
  505. package/dist/chunk-ZSTD6Y3K.js +0 -255
  506. package/dist/cohort-ZFGFEEBD.js +0 -66
  507. package/dist/cohortSunburst-EEPGV2RB.js +0 -402
  508. package/dist/condition-7EWFLQSO.js +0 -323
  509. package/dist/controls-QHDSDWKI.js +0 -30
  510. package/dist/controls.config-LBSCZ6GP.js +0 -30
  511. package/dist/correlation-IJQJPNNP.js +0 -91
  512. package/dist/customdata.inputui-TZGX2CUD.js +0 -280
  513. package/dist/dataDownload-33EWD3AD.js +0 -326
  514. package/dist/databrowser.ui-YNKDTAAN.js +0 -424
  515. package/dist/dictionary-OTR6Z5EZ.js +0 -109
  516. package/dist/dnaMethylation-LQTCTOOE.js +0 -29
  517. package/dist/dnaMethylation.integration.spec-U5VQYAK3.js +0 -194
  518. package/dist/dofetch-HLG7G7RX.js +0 -49
  519. package/dist/e2pca-AXDPYR7U.js +0 -340
  520. package/dist/ep-4WK46CH7.js +0 -1247
  521. package/dist/expclust.gdc.spec-CYGWGREQ.js +0 -298
  522. package/dist/facet-IZSSZDHK.js +0 -556
  523. package/dist/gb-AUZBUZFM.js +0 -77
  524. package/dist/geneExpClustering-AQBFLXLP.js +0 -240
  525. package/dist/geneExpression-HDJVPVPK.js +0 -309
  526. package/dist/geneExpression-V4JMTMLI.js +0 -29
  527. package/dist/geneExpression.unit.spec-KFMSDVMX.js +0 -151
  528. package/dist/geneExpression.unit.spec-KFMSDVMX.js.map +0 -7
  529. package/dist/geneORA-LDFFSEMQ.js +0 -269
  530. package/dist/geneRanking-IVKDSNDV.js +0 -544
  531. package/dist/geneVariant-7X7EEUDW.js +0 -289
  532. package/dist/geneVariant-7X7EEUDW.js.map +0 -7
  533. package/dist/geneVariant-TK3FJ22L.js +0 -32
  534. package/dist/geneVariant.integration.spec-ZHAFWQ2O.js +0 -672
  535. package/dist/genefusion.ui-U5YPVXAF.js +0 -299
  536. package/dist/geneset-NSHQ2NDR.js +0 -199
  537. package/dist/genomeBrowser.spec-HP4OQPCV.js +0 -272
  538. package/dist/grin2-5WKONQPG.js +0 -66
  539. package/dist/grin2-V2ZBOJBO.js +0 -945
  540. package/dist/hierCluster-7IOPNYFN.js +0 -55
  541. package/dist/hierCluster-IDBCUKHJ.js +0 -51
  542. package/dist/hierCluster.config-Z4NRL5P5.js +0 -32
  543. package/dist/hierCluster.integration.spec-PHEXOGPI.js +0 -479
  544. package/dist/hierCluster.interactivity-NHZ5EPBV.js +0 -45
  545. package/dist/hierCluster.renderers-WXJUMDFN.js +0 -18
  546. package/dist/imagePlot-NMNCAYS7.js +0 -152
  547. package/dist/importPlot-HZML5XMJ.js +0 -8
  548. package/dist/isoformExpression-4IU4AUQ2.js +0 -31
  549. package/dist/isoformExpression.unit.spec-KKMKU5Z2.js +0 -233
  550. package/dist/junction-EXA2WANI.js +0 -32
  551. package/dist/junction.unit.spec-H3FGTLEP.js +0 -178
  552. package/dist/junction.unit.spec-H3FGTLEP.js.map +0 -7
  553. package/dist/launch.adhoc-YA6FRHSC.js +0 -33
  554. package/dist/leftlabel.sample-N6M4OL2X.js +0 -254
  555. package/dist/leftlabel.sample-N6M4OL2X.js.map +0 -7
  556. package/dist/lollipop-EWLGYDIR.js +0 -162
  557. package/dist/maf-PXMHR3PY.js +0 -451
  558. package/dist/maftimeline-QFKT7PW2.js +0 -583
  559. package/dist/matrix-KASG3KIY.js +0 -55
  560. package/dist/matrix-VSX63V3L.js +0 -50
  561. package/dist/matrix.cells-7TTOQRWU.js +0 -25
  562. package/dist/matrix.config-U3I726EC.js +0 -33
  563. package/dist/matrix.data-Y4DXSR2P.js +0 -22
  564. package/dist/matrix.groups-C5CHYWQZ.js +0 -25
  565. package/dist/matrix.integration.spec-4KWLFXMY.js +0 -3156
  566. package/dist/matrix.interactivity-JK6URU6Z.js +0 -33
  567. package/dist/matrix.layout-KKOA7GGL.js +0 -35
  568. package/dist/matrix.legend-3FFHXTLX.js +0 -19
  569. package/dist/matrix.renderers-F7EWYQWL.js +0 -30
  570. package/dist/matrix.serieses-I4JWWONC.js +0 -18
  571. package/dist/matrix.sort-5JTCLBPB.js +0 -25
  572. package/dist/matrix.sort.unit.spec-EW53F5DT.js +0 -464
  573. package/dist/matrix.sorterUi.unit.spec-OGTYY6GC.js +0 -334
  574. package/dist/matrix.unit.spec-RXKKHRUN.js +0 -146
  575. package/dist/mavb-YI2WEGFI.js +0 -726
  576. package/dist/mds.samplescatterplot-GGJE67MF.js +0 -1545
  577. package/dist/mds.survivalplot-A6DS6FHO.js +0 -472
  578. package/dist/multivalue-3WCYDVL3.js +0 -79
  579. package/dist/numericDictTermCluster-AOTEPNEI.js +0 -62
  580. package/dist/oncomatrix-BB4SB5AJ.js +0 -286
  581. package/dist/oncomatrix.spec-M4ZC3KFC.js +0 -439
  582. package/dist/plot.2dvaf-QUD743E6.js +0 -368
  583. package/dist/plot.app-35I4DJXK.js +0 -32
  584. package/dist/plot.barplot-7OL4HWZB.js +0 -93
  585. package/dist/plot.boxplot-N2VSPDYA.js +0 -142
  586. package/dist/plot.brainImaging-4PIAFROV.js +0 -51
  587. package/dist/plot.disco-6CFYMWU3.js +0 -100
  588. package/dist/plot.ssgq-MGUBQNWE.js +0 -130
  589. package/dist/plot.vaf2cov-KVI2GMG4.js +0 -249
  590. package/dist/polar2-IGAOHGPE.js +0 -228
  591. package/dist/profileForms-MW7JQURG.js +0 -937
  592. package/dist/profilePlot-OVOSFR47.js +0 -45
  593. package/dist/proteinView-LFP5YYMK.js +0 -1346
  594. package/dist/proteinView-LFP5YYMK.js.map +0 -7
  595. package/dist/proteomeCohortCompare-ONYL2UN4.js +0 -866
  596. package/dist/pseudbulk.unit.spec-CGV4JTEK.js +0 -82
  597. package/dist/pseudobulk-WFCQX5KR.js +0 -31
  598. package/dist/qualitative-4SLUE6BW.js +0 -241
  599. package/dist/qualitative-6H674T7D.js +0 -34
  600. package/dist/radar2-QXHO2MQA.js +0 -323
  601. package/dist/radarFacility2-JCVOYMH4.js +0 -331
  602. package/dist/render-IIFS3Y2N.js +0 -29
  603. package/dist/report-NFBB3PUI.js +0 -213
  604. package/dist/sampleView-XQXKIPC7.js +0 -39
  605. package/dist/samplelst-RIC5E2W4.js +0 -114
  606. package/dist/samplematrix-WLCFCPBR.js +0 -2188
  607. package/dist/sc-TXRF7D6F.js +0 -77
  608. package/dist/scatter-JUGGPR4B.js +0 -919
  609. package/dist/scatter-YQ47446T.js +0 -84
  610. package/dist/selectGenomeWithTklst-2ELB6HQK.js +0 -125
  611. package/dist/singleCellCellType-DUTH4SZF.js +0 -29
  612. package/dist/singleCellCellType.unit.spec-PWP6I5PZ.js +0 -150
  613. package/dist/singleCellGeneExpression-3563T7GE.js +0 -29
  614. package/dist/singleCellGeneExpression.unit.spec-66IDCFJC.js +0 -144
  615. package/dist/singleCellNumericValue-XVQTKLTS.js +0 -29
  616. package/dist/singleCellNumericValue.unit.spec-LJSTGKNS.js +0 -412
  617. package/dist/singleCellPlot-MKYJJXSG.js +0 -44
  618. package/dist/singlecell-ANCWPAAO.js +0 -1562
  619. package/dist/singlecell-KMRVFOC5.js +0 -77
  620. package/dist/snp-B5UHGWVD.js +0 -29
  621. package/dist/snp.unit.spec-YAHITASM.js +0 -167
  622. package/dist/snplocus-MLGICRGT.js +0 -200
  623. package/dist/snplst-DZPIQEKI.js +0 -36
  624. package/dist/spliceevent.a53ss.diagram-4NYPSFC2.js +0 -142
  625. package/dist/spliceevent.exonskip.diagram-WLLTP7NP.js +0 -274
  626. package/dist/spliceevent.noeventdiagram-NOSO752Y.js +0 -451
  627. package/dist/ssGSEA-4DVY6Z5U.js +0 -29
  628. package/dist/ssGSEA.unit.spec-UDXV4Q7S.js +0 -79
  629. package/dist/stattable-T5X76Q32.js +0 -112
  630. package/dist/studyCatalog-O3EPBJPW.js +0 -457
  631. package/dist/summarizeCnvGeneexp-ST36TPEJ.js +0 -154
  632. package/dist/summarizeGeneexpSurvival-AZOFCBMT.js +0 -101
  633. package/dist/summarizeMutationCnv-HRCW6BYV.js +0 -155
  634. package/dist/summarizeMutationDiagnosis-RQQO2MOR.js +0 -31
  635. package/dist/summarizeMutationSurvival-UHSUJ7FU.js +0 -95
  636. package/dist/summary-ZMM5ET67.js +0 -40
  637. package/dist/summary.integration.spec-GW5UGDDU.js +0 -405
  638. package/dist/summaryInput-ZO5TPARQ.js +0 -238
  639. package/dist/sunburst-6VJS2SUY.js +0 -34
  640. package/dist/sunburst-LXRG2SFE.js +0 -274
  641. package/dist/survival-QXHY7JRR.js +0 -49
  642. package/dist/survival-U6J6KFN2.js +0 -1248
  643. package/dist/survival.integration.spec-HN3LL6IY.js +0 -609
  644. package/dist/svgraph-CVI27CTM.js +0 -1377
  645. package/dist/svmr-GZHAP5IV.js +0 -3834
  646. package/dist/svmr-GZHAP5IV.js.map +0 -7
  647. package/dist/swimmer-M4JGBO72.js +0 -993
  648. package/dist/table-QO22C2ER.js +0 -192
  649. package/dist/termCollection-EN73BZV5.js +0 -247
  650. package/dist/termCollection-KWNFLRWJ.js +0 -29
  651. package/dist/termCollection.unit.spec-Z27AZUE6.js +0 -295
  652. package/dist/termCollectionFractionSelection-Q7QFEPKA.js +0 -38
  653. package/dist/termCollectionFractionSelection.unit.spec-PYLIFZN5.js +0 -184
  654. package/dist/tk-BISILMKL.js +0 -1198
  655. package/dist/tk-BISILMKL.js.map +0 -7
  656. package/dist/tk-WVEDS5OU.js +0 -38
  657. package/dist/tp.ui-CG36YXBY.js +0 -1453
  658. package/dist/tvs.categorical-GCJISWBS.js +0 -28
  659. package/dist/tvs.condition-YTCVMB3I.js +0 -160
  660. package/dist/tvs.dt-UCSZ5S44.js +0 -34
  661. package/dist/tvs.dtcnv.categorical-KYB6XPL3.js +0 -31
  662. package/dist/tvs.dtcnv.continuous-MJWJNMKJ.js +0 -72
  663. package/dist/tvs.dtfusion-IZCEMTH5.js +0 -31
  664. package/dist/tvs.dtitd-DZ4WWGNO.js +0 -31
  665. package/dist/tvs.dtsnvindel-PMJCV4E7.js +0 -31
  666. package/dist/tvs.dtsv-5K2RNWDH.js +0 -31
  667. package/dist/tvs.multivalue-6NSC6JPR.js +0 -84
  668. package/dist/tvs.numeric-7U2NDY4A.js +0 -32
  669. package/dist/tvs.samplelst-3SIYTFWZ.js +0 -95
  670. package/dist/tvs.survival-Q3F5SLBW.js +0 -110
  671. package/dist/tvs.termCollection-OR73LBNX.js +0 -118
  672. package/dist/vocabulary-RWRAQ4VJ.js +0 -32
  673. package/dist/wsi.direct-HABLR3IF.js +0 -11515
  674. package/dist/wsi.direct-HABLR3IF.js.map +0 -7
  675. /package/dist/{2dmaf-4W2R2HXG.js.map → 2dmaf-B34EJADN.js.map} +0 -0
  676. /package/dist/{AggMatrixInput-3SQ7UW5L.js.map → AggMatrixInput-USCXGZT2.js.map} +0 -0
  677. /package/dist/{AggregateMatrix-QI55DXDU.js.map → AggregateMatrix-VLCSBD65.js.map} +0 -0
  678. /package/dist/{AppHeader-C26OHIUQ.js.map → AppHeader-KE7QVEW5.js.map} +0 -0
  679. /package/dist/{BoxPlot-27OYBGJ3.js.map → BoxPlot-3H5QKYRD.js.map} +0 -0
  680. /package/dist/{Cuminc-737O733E.js.map → Cuminc-6LPS4LR7.js.map} +0 -0
  681. /package/dist/{DE-EDTGDY6L.js.map → DE-TTKEQYC7.js.map} +0 -0
  682. /package/dist/{DM-25IRANGL.js.map → DM-2TUF6Q3C.js.map} +0 -0
  683. /package/dist/{DifferentialAnalysis-7HQYEA5T.js.map → DifferentialAnalysis-3LP4RAWF.js.map} +0 -0
  684. /package/dist/{Disco-4YNXWGRX.js.map → Disco-UP5C7UWX.js.map} +0 -0
  685. /package/dist/{Disco.UI-67HBGS4Y.js.map → Disco.UI-V4I4LOMF.js.map} +0 -0
  686. /package/dist/{DmrPlot-KZVDVPUT.js.map → DmrPlot-TZR2NGIH.js.map} +0 -0
  687. /package/dist/{GSEA-CMFMNK5Y.js.map → GSEA-YGKBRJJO.js.map} +0 -0
  688. /package/dist/{GeneExpInput-HMGV23E7.js.map → GeneExpInput-L3J2ECVQ.js.map} +0 -0
  689. /package/dist/{Geomap-RB4SGVPC.js.map → Geomap-4MHU6F57.js.map} +0 -0
  690. /package/dist/{HicApp-YRP6YQFA.js.map → HicApp-27VGP5F6.js.map} +0 -0
  691. /package/dist/{IDCViewer-OUSOZNSR.js.map → IDCViewer-37GJPPUY.js.map} +0 -0
  692. /package/dist/{NumBinaryEditor-YFQDPBB6.js.map → NumBinaryEditor-SEC2NDGG.js.map} +0 -0
  693. /package/dist/{NumBinaryEditor.unit.spec-6YC5PCPK.js.map → NumBinaryEditor.unit.spec-UDYSUC4S.js.map} +0 -0
  694. /package/dist/{NumContEditor-EH6MA2RW.js.map → NumContEditor-YPSYWU2A.js.map} +0 -0
  695. /package/dist/{NumContEditor.unit.spec-Q2JBVIRT.js.map → NumContEditor.unit.spec-NHFBMHQ5.js.map} +0 -0
  696. /package/dist/{NumCustomBinEditor-USQA3BC6.js.map → NumCustomBinEditor-N7US5Q64.js.map} +0 -0
  697. /package/dist/{NumCustomBinEditor.unit.spec-PE2HFRCK.js.map → NumCustomBinEditor.unit.spec-2BMMUBYU.js.map} +0 -0
  698. /package/dist/{NumDiscreteEditor-VKE4WT24.js.map → NumDiscreteEditor-BLQ5DEB7.js.map} +0 -0
  699. /package/dist/{NumDiscreteEditor.unit.spec-JNG673LE.js.map → NumDiscreteEditor.unit.spec-JOFPUFU5.js.map} +0 -0
  700. /package/dist/{NumRegularBinEditor-KCCPGJSX.js.map → NumRegularBinEditor-7BFPBUW2.js.map} +0 -0
  701. /package/dist/{NumRegularBinEditor.unit.spec-4BLKQRZU.js.map → NumRegularBinEditor.unit.spec-6GZMNRHA.js.map} +0 -0
  702. /package/dist/{NumSplineEditor-4YELHGUO.js.map → NumSplineEditor-LO3ZR3T3.js.map} +0 -0
  703. /package/dist/{NumSplineEditor.unit.spec-CKHHK6GH.js.map → NumSplineEditor.unit.spec-MRA3DQSB.js.map} +0 -0
  704. /package/dist/{NumericDensity-LCFM7VSY.js.map → NumericDensity-NUCVJZ74.js.map} +0 -0
  705. /package/dist/{NumericDensity.unit.spec-R4ARTJ5I.js.map → NumericDensity.unit.spec-TZLKWH4U.js.map} +0 -0
  706. /package/dist/{NumericHandler-2OHRSY6Z.js.map → NumericHandler-NH533VBN.js.map} +0 -0
  707. /package/dist/{NumericHandler.unit.spec-M3TRIFZW.js.map → NumericHandler.unit.spec-V7MNEHML.js.map} +0 -0
  708. /package/dist/{ProteomeInput-G2EP6QH2.js.map → ProteomeInput-FEXWZOA2.js.map} +0 -0
  709. /package/dist/{Regression-2HKE6C7F.js.map → Regression-NJAPUGT7.js.map} +0 -0
  710. /package/dist/{RunChart2-WRVW63PB.js.map → RunChart2-QIJ6NUWY.js.map} +0 -0
  711. /package/dist/{SC-37RDNFGH.js.map → SC-5NWBVOEE.js.map} +0 -0
  712. /package/dist/{Violin-KD6FPWC7.js.map → Violin-TMACI43Q.js.map} +0 -0
  713. /package/dist/{aboutSunburst-5Z24ODIN.js.map → aboutSunburst-53YAWTV5.js.map} +0 -0
  714. /package/dist/{adSandbox-AFORHU3V.js.map → adSandbox-7VHXEI7W.js.map} +0 -0
  715. /package/dist/{animatedBubbleChart-F75OBRZW.js.map → animatedBubbleChart-CTFGJIRR.js.map} +0 -0
  716. /package/dist/{app-4RZ76DZZ.js.map → app-AQAQAPUN.js.map} +0 -0
  717. /package/dist/{app-IHE3RNI5.js.map → app-SZDIV5U4.js.map} +0 -0
  718. /package/dist/{bam-IIRZX3IK.js.map → bam-3U5R2KNC.js.map} +0 -0
  719. /package/dist/{barchart-UIHRIMOE.js.map → barchart-ZL5VSR7P.js.map} +0 -0
  720. /package/dist/{barchart2-DG3S6FDJ.js.map → barchart2-YELP2HI7.js.map} +0 -0
  721. /package/dist/{block.init-UBXYVTPQ.js.map → block.init-IBITFICI.js.map} +0 -0
  722. /package/dist/{block.mds.expressionrank-KSXPPPGR.js.map → block.mds.expressionrank-4L76ILD4.js.map} +0 -0
  723. /package/dist/{block.mds.geneboxplot-5RDFDVDE.js.map → block.mds.geneboxplot-XA7DFHPV.js.map} +0 -0
  724. /package/dist/{block.mds.junction-LMM24KXJ.js.map → block.mds.junction-GTZD3HEN.js.map} +0 -0
  725. /package/dist/{block.mds.svcnv-4XRXZMPS.js.map → block.mds.svcnv-HTXQ3LGR.js.map} +0 -0
  726. /package/dist/{block.svg-VAKLMPMS.js.map → block.svg-BM6OMVRF.js.map} +0 -0
  727. /package/dist/{block.tk.aicheck-6GHZK2YY.js.map → block.tk.aicheck-CV53ULEP.js.map} +0 -0
  728. /package/dist/{block.tk.bam-7H3BSHR2.js.map → block.tk.bam-KJYFNJCX.js.map} +0 -0
  729. /package/dist/{block.tk.bigwig.ui-KX2GACY5.js.map → block.tk.bigwig.ui-A352D6PT.js.map} +0 -0
  730. /package/dist/{block.tk.hicstraw-OOWEWGMF.js.map → block.tk.hicstraw-QAFTQESL.js.map} +0 -0
  731. /package/dist/{block.tk.junction-U7W36OZA.js.map → block.tk.junction-XURB4RWZ.js.map} +0 -0
  732. /package/dist/{block.tk.junction.textmatrixui-PAMSBYZT.js.map → block.tk.junction.textmatrixui-RNRWWNGY.js.map} +0 -0
  733. /package/dist/{block.tk.ld-RFQPDG7Q.js.map → block.tk.ld-GWJMVPX3.js.map} +0 -0
  734. /package/dist/{block.tk.menu-JDJU2OGK.js.map → block.tk.menu-BJZYFMQX.js.map} +0 -0
  735. /package/dist/{block.tk.pgv-G2UFCQUT.js.map → block.tk.pgv-7XNJTHEW.js.map} +0 -0
  736. /package/dist/{brainImaging-ASAHWZJH.js.map → brainImaging-37EDZLGN.js.map} +0 -0
  737. /package/dist/{brainRegions-XTJDLUU4.js.map → brainRegions-FEW52QUB.js.map} +0 -0
  738. /package/dist/{chunk-A7GCFL3R.js.map → chunk-2B3CYHUF.js.map} +0 -0
  739. /package/dist/{chunk-HGC4EON3.js.map → chunk-2IAELUCN.js.map} +0 -0
  740. /package/dist/{chunk-GIZTZCE5.js.map → chunk-2W6U53AG.js.map} +0 -0
  741. /package/dist/{chunk-D6TLBMIX.js.map → chunk-46GCGTHJ.js.map} +0 -0
  742. /package/dist/{chunk-4DFKK46J.js.map → chunk-4ZX5KHD7.js.map} +0 -0
  743. /package/dist/{chunk-U7G65D2G.js.map → chunk-544DSOC3.js.map} +0 -0
  744. /package/dist/{chunk-E4WAVMI5.js.map → chunk-6CV3YVJD.js.map} +0 -0
  745. /package/dist/{chunk-JWX6GEWQ.js.map → chunk-6UHSGC6G.js.map} +0 -0
  746. /package/dist/{chunk-DR5JLHTB.js.map → chunk-6ZZGFZV2.js.map} +0 -0
  747. /package/dist/{chunk-K55KOEI6.js.map → chunk-72FUMSAN.js.map} +0 -0
  748. /package/dist/{chunk-VHQDN3OA.js.map → chunk-7DC4PD5R.js.map} +0 -0
  749. /package/dist/{chunk-QGCB5AKN.js.map → chunk-7ISYXUJ7.js.map} +0 -0
  750. /package/dist/{chunk-VTMNHAFC.js.map → chunk-7NVFEGCE.js.map} +0 -0
  751. /package/dist/{chunk-EM76Y3HQ.js.map → chunk-7PQ6MLKG.js.map} +0 -0
  752. /package/dist/{chunk-K4LZR3HU.js.map → chunk-BGPRKPKH.js.map} +0 -0
  753. /package/dist/{chunk-5YKXYWP3.js.map → chunk-BILGOVOR.js.map} +0 -0
  754. /package/dist/{chunk-OCOB7XJW.js.map → chunk-BKJLRLQQ.js.map} +0 -0
  755. /package/dist/{chunk-54W2RWRB.js.map → chunk-C4BKP67I.js.map} +0 -0
  756. /package/dist/{chunk-DDABG5BR.js.map → chunk-CQNTAIM3.js.map} +0 -0
  757. /package/dist/{chunk-7HBAALWJ.js.map → chunk-CW3IVTRX.js.map} +0 -0
  758. /package/dist/{chunk-XQIB27PB.js.map → chunk-D7KZWYP5.js.map} +0 -0
  759. /package/dist/{chunk-F2RTD23W.js.map → chunk-DNXOZATD.js.map} +0 -0
  760. /package/dist/{chunk-NUGYNLTL.js.map → chunk-DXF3YDRG.js.map} +0 -0
  761. /package/dist/{chunk-GONC3LVY.js.map → chunk-ECBVUPDE.js.map} +0 -0
  762. /package/dist/{chunk-GAYYXHOG.js.map → chunk-ES22B563.js.map} +0 -0
  763. /package/dist/{chunk-ZBNPXXMK.js.map → chunk-FA2B6PKK.js.map} +0 -0
  764. /package/dist/{chunk-PAF5KZCR.js.map → chunk-FMHSDIVG.js.map} +0 -0
  765. /package/dist/{chunk-ZSTD6Y3K.js.map → chunk-G5UFOMON.js.map} +0 -0
  766. /package/dist/{chunk-Z7CCL464.js.map → chunk-GKA6USKV.js.map} +0 -0
  767. /package/dist/{chunk-2ZYAC3DC.js.map → chunk-HGIPR72Y.js.map} +0 -0
  768. /package/dist/{chunk-ES7XNERS.js.map → chunk-IBUDYN5E.js.map} +0 -0
  769. /package/dist/{chunk-FEE2HAON.js.map → chunk-J37WYVIZ.js.map} +0 -0
  770. /package/dist/{chunk-CHQ43UJQ.js.map → chunk-JG5CF5Q3.js.map} +0 -0
  771. /package/dist/{chunk-GDIKNIEA.js.map → chunk-JSQH233D.js.map} +0 -0
  772. /package/dist/{chunk-WSLS55SH.js.map → chunk-JWWLSDVM.js.map} +0 -0
  773. /package/dist/{chunk-ZNHC46CT.js.map → chunk-KTJUDDVQ.js.map} +0 -0
  774. /package/dist/{chunk-E2Z4X6C2.js.map → chunk-MY5MF4RI.js.map} +0 -0
  775. /package/dist/{chunk-MZTVOOR6.js.map → chunk-P4ZGUPGA.js.map} +0 -0
  776. /package/dist/{chunk-YHW2RAAG.js.map → chunk-PQDYA3ZQ.js.map} +0 -0
  777. /package/dist/{chunk-LFH5VSSF.js.map → chunk-PVJ6IIFA.js.map} +0 -0
  778. /package/dist/{chunk-QRZRAMHA.js.map → chunk-QKVKQD6S.js.map} +0 -0
  779. /package/dist/{chunk-7APH7QLC.js.map → chunk-R6O3FLKW.js.map} +0 -0
  780. /package/dist/{chunk-OGDBTL5C.js.map → chunk-RFQQRF6Q.js.map} +0 -0
  781. /package/dist/{chunk-I7R6YROK.js.map → chunk-RG27DDKN.js.map} +0 -0
  782. /package/dist/{chunk-UXLT7W2N.js.map → chunk-SB5DR4NL.js.map} +0 -0
  783. /package/dist/{chunk-G5BQJGRA.js.map → chunk-SF42FFDZ.js.map} +0 -0
  784. /package/dist/{chunk-AGWIWLOP.js.map → chunk-SORR4JHU.js.map} +0 -0
  785. /package/dist/{chunk-U4PLKSSS.js.map → chunk-SZEBQMZW.js.map} +0 -0
  786. /package/dist/{chunk-72QBXULB.js.map → chunk-THDOHHDN.js.map} +0 -0
  787. /package/dist/{chunk-UU3FWU6D.js.map → chunk-TXDCZOPG.js.map} +0 -0
  788. /package/dist/{chunk-5QGC2624.js.map → chunk-U6GSEOBY.js.map} +0 -0
  789. /package/dist/{chunk-7ZTUUKLX.js.map → chunk-UBTNM5RO.js.map} +0 -0
  790. /package/dist/{chunk-N2JOZ3QD.js.map → chunk-UHZDDPUU.js.map} +0 -0
  791. /package/dist/{chunk-QFOT5WAZ.js.map → chunk-UVES3USV.js.map} +0 -0
  792. /package/dist/{chunk-HM23KADV.js.map → chunk-UYA5LCAR.js.map} +0 -0
  793. /package/dist/{chunk-SI2KSG6E.js.map → chunk-VHEXNBCO.js.map} +0 -0
  794. /package/dist/{chunk-KLJM7HE5.js.map → chunk-VVWZ4BOI.js.map} +0 -0
  795. /package/dist/{chunk-NG2U3VHX.js.map → chunk-WENNRY5E.js.map} +0 -0
  796. /package/dist/{chunk-RGOZHZCN.js.map → chunk-WTLUZOBK.js.map} +0 -0
  797. /package/dist/{chunk-W3K7KLIR.js.map → chunk-ZLEGHQOO.js.map} +0 -0
  798. /package/dist/{chunk-RJKY22D4.js.map → chunk-ZX7527EE.js.map} +0 -0
  799. /package/dist/{cohort-ZFGFEEBD.js.map → cohort-NKRTCX5Z.js.map} +0 -0
  800. /package/dist/{cohortSunburst-EEPGV2RB.js.map → cohortSunburst-DFJW6WXU.js.map} +0 -0
  801. /package/dist/{condition-7EWFLQSO.js.map → condition-PYFOEVX5.js.map} +0 -0
  802. /package/dist/{controls-QHDSDWKI.js.map → controls-RVNIN66W.js.map} +0 -0
  803. /package/dist/{controls.config-LBSCZ6GP.js.map → controls.config-XVEYYBI4.js.map} +0 -0
  804. /package/dist/{correlation-IJQJPNNP.js.map → correlation-MNL4DGSW.js.map} +0 -0
  805. /package/dist/{customdata.inputui-TZGX2CUD.js.map → customdata.inputui-WFIIJATQ.js.map} +0 -0
  806. /package/dist/{dataDownload-33EWD3AD.js.map → dataDownload-CMSP5FA4.js.map} +0 -0
  807. /package/dist/{databrowser.ui-YNKDTAAN.js.map → databrowser.ui-FYZPXXEJ.js.map} +0 -0
  808. /package/dist/{dictionary-OTR6Z5EZ.js.map → dictionary-76BXY6WU.js.map} +0 -0
  809. /package/dist/{dnaMethylation-LQTCTOOE.js.map → dnaMethylation-WTIJVNIU.js.map} +0 -0
  810. /package/dist/{dnaMethylation.integration.spec-U5VQYAK3.js.map → dnaMethylation.integration.spec-YXQEFLC5.js.map} +0 -0
  811. /package/dist/{dofetch-HLG7G7RX.js.map → dofetch-XID2XEJT.js.map} +0 -0
  812. /package/dist/{e2pca-AXDPYR7U.js.map → e2pca-DD6DA7X3.js.map} +0 -0
  813. /package/dist/{ep-4WK46CH7.js.map → ep-S4PI4AUJ.js.map} +0 -0
  814. /package/dist/{expclust.gdc.spec-CYGWGREQ.js.map → expclust.gdc.spec-BDV4RJO6.js.map} +0 -0
  815. /package/dist/{facet-IZSSZDHK.js.map → facet-EOXEW2LN.js.map} +0 -0
  816. /package/dist/{gb-AUZBUZFM.js.map → gb-AKE7RDPB.js.map} +0 -0
  817. /package/dist/{geneExpClustering-AQBFLXLP.js.map → geneExpClustering-73ED7HIN.js.map} +0 -0
  818. /package/dist/{geneExpression-V4JMTMLI.js.map → geneExpression-AEJILDKJ.js.map} +0 -0
  819. /package/dist/{geneExpression-HDJVPVPK.js.map → geneExpression-NXDXXKEA.js.map} +0 -0
  820. /package/dist/{geneORA-LDFFSEMQ.js.map → geneORA-7KFQ4PW2.js.map} +0 -0
  821. /package/dist/{geneRanking-IVKDSNDV.js.map → geneRanking-RKJU4PM2.js.map} +0 -0
  822. /package/dist/{geneVariant-TK3FJ22L.js.map → geneVariant-2AGC3ECG.js.map} +0 -0
  823. /package/dist/{geneVariant.integration.spec-ZHAFWQ2O.js.map → geneVariant.integration.spec-UJXGQEZG.js.map} +0 -0
  824. /package/dist/{genefusion.ui-U5YPVXAF.js.map → genefusion.ui-KEBOA3TK.js.map} +0 -0
  825. /package/dist/{geneset-NSHQ2NDR.js.map → geneset-BU6V3CB5.js.map} +0 -0
  826. /package/dist/{genomeBrowser.spec-HP4OQPCV.js.map → genomeBrowser.spec-BGQHJZKH.js.map} +0 -0
  827. /package/dist/{grin2-5WKONQPG.js.map → grin2-OUZN5LOU.js.map} +0 -0
  828. /package/dist/{grin2-V2ZBOJBO.js.map → grin2-WRGQ7BDG.js.map} +0 -0
  829. /package/dist/{hierCluster-7IOPNYFN.js.map → hierCluster-3ERW47JJ.js.map} +0 -0
  830. /package/dist/{hierCluster-IDBCUKHJ.js.map → hierCluster-JAFKBC6C.js.map} +0 -0
  831. /package/dist/{hierCluster.config-Z4NRL5P5.js.map → hierCluster.config-QIJNY5OD.js.map} +0 -0
  832. /package/dist/{hierCluster.integration.spec-PHEXOGPI.js.map → hierCluster.integration.spec-XA4K3UU6.js.map} +0 -0
  833. /package/dist/{hierCluster.interactivity-NHZ5EPBV.js.map → hierCluster.interactivity-RDFPQOOP.js.map} +0 -0
  834. /package/dist/{hierCluster.renderers-WXJUMDFN.js.map → hierCluster.renderers-SU5IYI33.js.map} +0 -0
  835. /package/dist/{imagePlot-NMNCAYS7.js.map → imagePlot-J4PHG7V2.js.map} +0 -0
  836. /package/dist/{importPlot-HZML5XMJ.js.map → importPlot-U67MZZXY.js.map} +0 -0
  837. /package/dist/{isoformExpression-4IU4AUQ2.js.map → isoformExpression-K5BCDJLL.js.map} +0 -0
  838. /package/dist/{isoformExpression.unit.spec-KKMKU5Z2.js.map → isoformExpression.unit.spec-35FHEO27.js.map} +0 -0
  839. /package/dist/{junction-EXA2WANI.js.map → junction-6GGWFF2J.js.map} +0 -0
  840. /package/dist/{launch.adhoc-YA6FRHSC.js.map → launch.adhoc-ONCSL65L.js.map} +0 -0
  841. /package/dist/{lollipop-EWLGYDIR.js.map → lollipop-BWP4BG7Q.js.map} +0 -0
  842. /package/dist/{maf-PXMHR3PY.js.map → maf-GV6JHWYK.js.map} +0 -0
  843. /package/dist/{maftimeline-QFKT7PW2.js.map → maftimeline-HE7XLJWG.js.map} +0 -0
  844. /package/dist/{matrix-KASG3KIY.js.map → matrix-IAM6SA7K.js.map} +0 -0
  845. /package/dist/{matrix-VSX63V3L.js.map → matrix-QF5MBV5Y.js.map} +0 -0
  846. /package/dist/{matrix.cells-7TTOQRWU.js.map → matrix.cells-A5E63KDN.js.map} +0 -0
  847. /package/dist/{matrix.config-U3I726EC.js.map → matrix.config-VLRMO7J2.js.map} +0 -0
  848. /package/dist/{matrix.data-Y4DXSR2P.js.map → matrix.data-R4FW2PQH.js.map} +0 -0
  849. /package/dist/{matrix.groups-C5CHYWQZ.js.map → matrix.groups-3UH2KOIY.js.map} +0 -0
  850. /package/dist/{matrix.integration.spec-4KWLFXMY.js.map → matrix.integration.spec-57YYARQU.js.map} +0 -0
  851. /package/dist/{matrix.interactivity-JK6URU6Z.js.map → matrix.interactivity-KNRJSSTQ.js.map} +0 -0
  852. /package/dist/{matrix.layout-KKOA7GGL.js.map → matrix.layout-OMNDDITA.js.map} +0 -0
  853. /package/dist/{matrix.legend-3FFHXTLX.js.map → matrix.legend-SE7SQTNN.js.map} +0 -0
  854. /package/dist/{matrix.renderers-F7EWYQWL.js.map → matrix.renderers-6MMW7XMU.js.map} +0 -0
  855. /package/dist/{matrix.serieses-I4JWWONC.js.map → matrix.serieses-BEZCQDLJ.js.map} +0 -0
  856. /package/dist/{matrix.sort-5JTCLBPB.js.map → matrix.sort-KRNS4VPF.js.map} +0 -0
  857. /package/dist/{matrix.sort.unit.spec-EW53F5DT.js.map → matrix.sort.unit.spec-UXTQPKVV.js.map} +0 -0
  858. /package/dist/{matrix.sorterUi.unit.spec-OGTYY6GC.js.map → matrix.sorterUi.unit.spec-LJJ7GCEB.js.map} +0 -0
  859. /package/dist/{matrix.unit.spec-RXKKHRUN.js.map → matrix.unit.spec-2OSFPN5T.js.map} +0 -0
  860. /package/dist/{mavb-YI2WEGFI.js.map → mavb-CZAZO6AO.js.map} +0 -0
  861. /package/dist/{mds.samplescatterplot-GGJE67MF.js.map → mds.samplescatterplot-ENSEO2VX.js.map} +0 -0
  862. /package/dist/{mds.survivalplot-A6DS6FHO.js.map → mds.survivalplot-QSKD6FSX.js.map} +0 -0
  863. /package/dist/{multivalue-3WCYDVL3.js.map → multivalue-FZTFADA2.js.map} +0 -0
  864. /package/dist/{numericDictTermCluster-AOTEPNEI.js.map → numericDictTermCluster-IFIEM3E4.js.map} +0 -0
  865. /package/dist/{oncomatrix-BB4SB5AJ.js.map → oncomatrix-GZKCAMSR.js.map} +0 -0
  866. /package/dist/{oncomatrix.spec-M4ZC3KFC.js.map → oncomatrix.spec-FTLMVGTH.js.map} +0 -0
  867. /package/dist/{plot.2dvaf-QUD743E6.js.map → plot.2dvaf-PWO4XOFU.js.map} +0 -0
  868. /package/dist/{plot.app-35I4DJXK.js.map → plot.app-JYBZEBHK.js.map} +0 -0
  869. /package/dist/{plot.barplot-7OL4HWZB.js.map → plot.barplot-PA2PDVOB.js.map} +0 -0
  870. /package/dist/{plot.boxplot-N2VSPDYA.js.map → plot.boxplot-IHIEWQWG.js.map} +0 -0
  871. /package/dist/{plot.brainImaging-4PIAFROV.js.map → plot.brainImaging-WQ2WWEW3.js.map} +0 -0
  872. /package/dist/{plot.disco-6CFYMWU3.js.map → plot.disco-QIURLAHA.js.map} +0 -0
  873. /package/dist/{plot.ssgq-MGUBQNWE.js.map → plot.ssgq-T27XDC4K.js.map} +0 -0
  874. /package/dist/{plot.vaf2cov-KVI2GMG4.js.map → plot.vaf2cov-Y2DJRQED.js.map} +0 -0
  875. /package/dist/{polar2-IGAOHGPE.js.map → polar2-3MFBRZ4G.js.map} +0 -0
  876. /package/dist/{profileForms-MW7JQURG.js.map → profileForms-J3O7XDHY.js.map} +0 -0
  877. /package/dist/{profilePlot-OVOSFR47.js.map → profilePlot-C45ERAOZ.js.map} +0 -0
  878. /package/dist/{proteomeCohortCompare-ONYL2UN4.js.map → proteomeCohortCompare-2IS7GNJZ.js.map} +0 -0
  879. /package/dist/{pseudbulk.unit.spec-CGV4JTEK.js.map → pseudbulk.unit.spec-SY3ATAPK.js.map} +0 -0
  880. /package/dist/{pseudobulk-WFCQX5KR.js.map → pseudobulk-N6WNHKAC.js.map} +0 -0
  881. /package/dist/{qualitative-6H674T7D.js.map → qualitative-SKUTWJLA.js.map} +0 -0
  882. /package/dist/{qualitative-4SLUE6BW.js.map → qualitative-XWN5V3EE.js.map} +0 -0
  883. /package/dist/{radar2-QXHO2MQA.js.map → radar2-AHZME5CF.js.map} +0 -0
  884. /package/dist/{radarFacility2-JCVOYMH4.js.map → radarFacility2-CVEVC4U5.js.map} +0 -0
  885. /package/dist/{render-IIFS3Y2N.js.map → render-S47OJIIP.js.map} +0 -0
  886. /package/dist/{report-NFBB3PUI.js.map → report-IPX3PKSW.js.map} +0 -0
  887. /package/dist/{sampleView-XQXKIPC7.js.map → sampleView-OZQUKPVV.js.map} +0 -0
  888. /package/dist/{samplelst-RIC5E2W4.js.map → samplelst-7XXJTJ4J.js.map} +0 -0
  889. /package/dist/{samplematrix-WLCFCPBR.js.map → samplematrix-JN35HJBG.js.map} +0 -0
  890. /package/dist/{sc-TXRF7D6F.js.map → sc-6ZHDNPYP.js.map} +0 -0
  891. /package/dist/{scatter-YQ47446T.js.map → scatter-4MP6TG67.js.map} +0 -0
  892. /package/dist/{scatter-JUGGPR4B.js.map → scatter-TRMY47CC.js.map} +0 -0
  893. /package/dist/{selectGenomeWithTklst-2ELB6HQK.js.map → selectGenomeWithTklst-UDNTL544.js.map} +0 -0
  894. /package/dist/{singleCellCellType-DUTH4SZF.js.map → singleCellCellType-UXABRPQQ.js.map} +0 -0
  895. /package/dist/{singleCellCellType.unit.spec-PWP6I5PZ.js.map → singleCellCellType.unit.spec-N22EQMZW.js.map} +0 -0
  896. /package/dist/{singleCellGeneExpression-3563T7GE.js.map → singleCellGeneExpression-OBPVP6IU.js.map} +0 -0
  897. /package/dist/{singleCellGeneExpression.unit.spec-66IDCFJC.js.map → singleCellGeneExpression.unit.spec-NVCFU5B4.js.map} +0 -0
  898. /package/dist/{singleCellNumericValue-XVQTKLTS.js.map → singleCellNumericValue-Z2X3LLRB.js.map} +0 -0
  899. /package/dist/{singleCellNumericValue.unit.spec-LJSTGKNS.js.map → singleCellNumericValue.unit.spec-Q7DCQHEE.js.map} +0 -0
  900. /package/dist/{singleCellPlot-MKYJJXSG.js.map → singleCellPlot-S5N6ZEEA.js.map} +0 -0
  901. /package/dist/{singlecell-ANCWPAAO.js.map → singlecell-OK2P4AS2.js.map} +0 -0
  902. /package/dist/{singlecell-KMRVFOC5.js.map → singlecell-RI6HA3NI.js.map} +0 -0
  903. /package/dist/{snp-B5UHGWVD.js.map → snp-XRM2UAEJ.js.map} +0 -0
  904. /package/dist/{snp.unit.spec-YAHITASM.js.map → snp.unit.spec-CDTYGH4K.js.map} +0 -0
  905. /package/dist/{snplocus-MLGICRGT.js.map → snplocus-CAUGDRZE.js.map} +0 -0
  906. /package/dist/{snplst-DZPIQEKI.js.map → snplst-DP533FL2.js.map} +0 -0
  907. /package/dist/{spliceevent.a53ss.diagram-4NYPSFC2.js.map → spliceevent.a53ss.diagram-XWEN4UMO.js.map} +0 -0
  908. /package/dist/{spliceevent.exonskip.diagram-WLLTP7NP.js.map → spliceevent.exonskip.diagram-HBXQOUT4.js.map} +0 -0
  909. /package/dist/{spliceevent.noeventdiagram-NOSO752Y.js.map → spliceevent.noeventdiagram-ORQJ62ON.js.map} +0 -0
  910. /package/dist/{ssGSEA-4DVY6Z5U.js.map → ssGSEA-PLDZ2556.js.map} +0 -0
  911. /package/dist/{ssGSEA.unit.spec-UDXV4Q7S.js.map → ssGSEA.unit.spec-ORFJFZJY.js.map} +0 -0
  912. /package/dist/{stattable-T5X76Q32.js.map → stattable-GVRVRO2Y.js.map} +0 -0
  913. /package/dist/{studyCatalog-O3EPBJPW.js.map → studyCatalog-K46WJHC6.js.map} +0 -0
  914. /package/dist/{summarizeCnvGeneexp-ST36TPEJ.js.map → summarizeCnvGeneexp-7WSJTWKH.js.map} +0 -0
  915. /package/dist/{summarizeGeneexpSurvival-AZOFCBMT.js.map → summarizeGeneexpSurvival-H3TW7I4I.js.map} +0 -0
  916. /package/dist/{summarizeMutationCnv-HRCW6BYV.js.map → summarizeMutationCnv-JOYXEMFP.js.map} +0 -0
  917. /package/dist/{summarizeMutationDiagnosis-RQQO2MOR.js.map → summarizeMutationDiagnosis-GBIGXFY5.js.map} +0 -0
  918. /package/dist/{summarizeMutationSurvival-UHSUJ7FU.js.map → summarizeMutationSurvival-3RULG3KW.js.map} +0 -0
  919. /package/dist/{summary-ZMM5ET67.js.map → summary-VKLFTPC2.js.map} +0 -0
  920. /package/dist/{summary.integration.spec-GW5UGDDU.js.map → summary.integration.spec-EK3MPFVD.js.map} +0 -0
  921. /package/dist/{summaryInput-ZO5TPARQ.js.map → summaryInput-POI5KQSP.js.map} +0 -0
  922. /package/dist/{sunburst-LXRG2SFE.js.map → sunburst-BIVYHF5R.js.map} +0 -0
  923. /package/dist/{sunburst-6VJS2SUY.js.map → sunburst-SYHQOCGQ.js.map} +0 -0
  924. /package/dist/{survival-U6J6KFN2.js.map → survival-CG2GQ4YY.js.map} +0 -0
  925. /package/dist/{survival-QXHY7JRR.js.map → survival-NEO3E2HS.js.map} +0 -0
  926. /package/dist/{survival.integration.spec-HN3LL6IY.js.map → survival.integration.spec-PPK5KO4V.js.map} +0 -0
  927. /package/dist/{svgraph-CVI27CTM.js.map → svgraph-Q2U2HEMF.js.map} +0 -0
  928. /package/dist/{swimmer-M4JGBO72.js.map → swimmer-GA4C6YH7.js.map} +0 -0
  929. /package/dist/{table-QO22C2ER.js.map → table-DJJIES6L.js.map} +0 -0
  930. /package/dist/{termCollection-EN73BZV5.js.map → termCollection-CHVUM5C6.js.map} +0 -0
  931. /package/dist/{termCollection-KWNFLRWJ.js.map → termCollection-R3LTBPJ4.js.map} +0 -0
  932. /package/dist/{termCollection.unit.spec-Z27AZUE6.js.map → termCollection.unit.spec-B7KAAOFT.js.map} +0 -0
  933. /package/dist/{termCollectionFractionSelection-Q7QFEPKA.js.map → termCollectionFractionSelection-A72QM36J.js.map} +0 -0
  934. /package/dist/{termCollectionFractionSelection.unit.spec-PYLIFZN5.js.map → termCollectionFractionSelection.unit.spec-JR77QEIG.js.map} +0 -0
  935. /package/dist/{tk-WVEDS5OU.js.map → tk-GRGKFATN.js.map} +0 -0
  936. /package/dist/{tp.ui-CG36YXBY.js.map → tp.ui-NATRJ5EN.js.map} +0 -0
  937. /package/dist/{tvs.categorical-GCJISWBS.js.map → tvs.categorical-U2ZYLPSW.js.map} +0 -0
  938. /package/dist/{tvs.condition-YTCVMB3I.js.map → tvs.condition-6EBZALR4.js.map} +0 -0
  939. /package/dist/{tvs.dt-UCSZ5S44.js.map → tvs.dt-H626ESMQ.js.map} +0 -0
  940. /package/dist/{tvs.dtcnv.categorical-KYB6XPL3.js.map → tvs.dtcnv.categorical-6S7INDYC.js.map} +0 -0
  941. /package/dist/{tvs.dtcnv.continuous-MJWJNMKJ.js.map → tvs.dtcnv.continuous-MLYNEMHI.js.map} +0 -0
  942. /package/dist/{tvs.dtfusion-IZCEMTH5.js.map → tvs.dtfusion-2OLY6X7G.js.map} +0 -0
  943. /package/dist/{tvs.dtitd-DZ4WWGNO.js.map → tvs.dtitd-Z6MEL5SH.js.map} +0 -0
  944. /package/dist/{tvs.dtsnvindel-PMJCV4E7.js.map → tvs.dtsnvindel-HPBQSCYV.js.map} +0 -0
  945. /package/dist/{tvs.dtsv-5K2RNWDH.js.map → tvs.dtsv-BRRNX64J.js.map} +0 -0
  946. /package/dist/{tvs.multivalue-6NSC6JPR.js.map → tvs.multivalue-H2G7WKAL.js.map} +0 -0
  947. /package/dist/{tvs.numeric-7U2NDY4A.js.map → tvs.numeric-OKYGMQSK.js.map} +0 -0
  948. /package/dist/{tvs.samplelst-3SIYTFWZ.js.map → tvs.samplelst-46FGACU7.js.map} +0 -0
  949. /package/dist/{tvs.survival-Q3F5SLBW.js.map → tvs.survival-QL4KC3SQ.js.map} +0 -0
  950. /package/dist/{tvs.termCollection-OR73LBNX.js.map → tvs.termCollection-22DFW3PF.js.map} +0 -0
  951. /package/dist/{vocabulary-RWRAQ4VJ.js.map → vocabulary-LJEERZJ6.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\n/*\naccepted values of the \"functional effect\" input column, stored as prod.type2, matched case-insensitively\nthe list order is the option order in the edit menu\nflag: optional boolean property set on a product of this type; iscloss, isnloss, isitd and isuptss change how the product is processed\n*/\nexport const type2lst = [\n\t{ label: 'CLoss', flag: 'iscloss' },\n\t{ label: 'ENHANCER_PROX' },\n\t{ label: 'Fusion', flag: 'isfusion' },\n\t{ label: 'GENE_PROX' },\n\t{ label: 'GENIC' },\n\t{ label: 'HALF_INTERGENIC' },\n\t{ label: 'INTERGENIC' },\n\t{ label: 'INTRONIC' },\n\t{ label: 'INVERTED_REPEAT' },\n\t{ label: 'ITD', flag: 'isitd' },\n\t{ label: 'NLoss', flag: 'isnloss' },\n\t{ label: 'other', flag: 'isother' },\n\t{ label: 'TRUNCATING' },\n\t{ label: 'upTSS', flag: 'isuptss' }\n]\n\nexport function findType2(value) {\n\tif (!value) return\n\tconst v = value.toLowerCase()\n\treturn type2lst.find(t => t.label.toLowerCase() == v)\n}\n\n/*\naccepted values of prod.rating, from the highest to the lowest grade\nNA: not rated, an empty rating in the input is read as NA\nthe rating menu also offers \"Major\", for exporting the products a curator has marked as major\n*/\nexport const ratingGrades = [\n\t{ rating: 'HQ', htmlab: 'HQ' + '&nbsp;'.repeat(11) },\n\t{ rating: 'LQ', htmlab: 'LQ' + '&nbsp;'.repeat(11) },\n\t{ rating: 'RT', htmlab: 'Read-through ' },\n\t{ rating: 'bad', htmlab: 'Bad' + '&nbsp;'.repeat(10) },\n\t{ rating: 'NA', htmlab: 'NA' + '&nbsp;'.repeat(11) }\n]\n\n// categories of products within a rating grade, from the highest to the lowest\nconst productCategories = [\n\t{\n\t\thtmlab:\n\t\t\t'<span style=\"background-color:' +\n\t\t\tclient.colorinframe +\n\t\t\t';color:white;padding:1px 3px;font-size:80%;\">in-frame&nbsp;&nbsp;</span>'\n\t},\n\t{ htmlab: '<span style=\"background-color:#E3C3C8;padding:1px 3px;font-size:80%;\">truncation</span>' },\n\t{ htmlab: '<span style=\"background-color:#ccc;padding:1px 3px;font-size:80%;\">others&nbsp;&nbsp;&nbsp;&nbsp;</span>' }\n]\n\n/*\nrank of the rating grade and category of a product, a smaller value is a higher rank\na rating not in ratingGrades, such as Major, is ranked as bad\n*/\nfunction getBucket(prod) {\n\tlet grade = ratingGrades.findIndex(g => g.rating == prod.rating)\n\tif (grade == -1) grade = ratingGrades.findIndex(g => g.rating == 'bad')\n\tconst pair = prod.usepair\n\tlet category\n\tif (pair) {\n\t\tcategory = pair.inframe ? 0 : 1 // in-frame, or truncation for a not in-frame fusion\n\t} else if (prod.isnloss || prod.iscloss) {\n\t\tcategory = 1\n\t} else {\n\t\tcategory = 2\n\t}\n\treturn grade * productCategories.length + category\n}\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 grade of ratingGrades) {\n\t\t\t\tfor (const elab in sample.events) {\n\t\t\t\t\tfor (const prod of sample.events[elab]) {\n\t\t\t\t\t\tif (prod.rating == grade.rating) msjoin(prod, newholder)\n\t\t\t\t\t}\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\tone bucket for each rating grade and category, ordered by rank, see getBucket()\n\t\t\t*/\n\t\t\tconst buckets = ratingGrades.flatMap(() => productCategories.map(() => []))\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 best = buckets.length\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\tbest = Math.min(best, getBucket(prod))\n\t\t\t\t}\n\t\t\t\t// must only assign after going through all events\n\t\t\t\tbuckets[best].push({ label: '', lst: thisset, ismsg: true })\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, one list for each bucket\n\t\t\t\tconst buckets2 = buckets.map(() => [])\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\t// directly to holder\n\t\t\t\t\tbuckets2[getBucket(prod)].push(prod)\n\t\t\t\t}\n\t\t\t\t// fill-in any non-gene-pairs, only those of the highest grade\n\t\t\t\tconst best = buckets2.findIndex(lst => lst.length > 0)\n\t\t\t\tif (best != -1) {\n\t\t\t\t\tbuckets[best].push({ label: elab, lst: [{ label: elab, lst: buckets2[best] }] })\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 best = buckets.length\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\tbest = Math.min(best, getBucket(prod))\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (best < buckets.length) {\n\t\t\t\t\tbuckets[best].push({ label: key, lst: thisset })\n\t\t\t\t}\n\t\t\t}\n\t\t\tsample.egglst = []\n\t\t\tratingGrades.forEach((grade, i) => {\n\t\t\t\tproductCategories.forEach((category, j) => {\n\t\t\t\t\tconst lst = buckets[i * productCategories.length + j]\n\t\t\t\t\tif (!lst.length) return\n\t\t\t\t\tsample.egglst.push({ htmlab: grade.htmlab + category.htmlab, lst })\n\t\t\t\t})\n\t\t\t})\n\t\t\t// number of in-frame events of HQ and LQ, for sorting samples\n\t\t\tconst countInframe = rating => {\n\t\t\t\tconst i = ratingGrades.findIndex(g => g.rating == rating)\n\t\t\t\treturn buckets[i * productCategories.length].reduce((n, eg) => n + eg.lst.length, 0)\n\t\t\t}\n\t\t\tsample.hqincount = countInframe('HQ')\n\t\t\tsample.lqincount = countInframe('LQ')\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 ratingGrades.map(g => g.rating)) {\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\n\t\t\t\tsvg\n\t\t\t\t\t.append('text')\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\t// Reserve space for the current label and every selectable type.\n\t\t\t\t\t\tfor (const label of [prod.type2 || '', ...type2lst.map(t => t.label)]) {\n\t\t\t\t\t\t\tthis.textContent = label\n\t\t\t\t\t\t\tevt.svg.typew = Math.max(evt.svg.typew, this.getBBox().width)\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t\t.remove()\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 newv = event.target.value\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 t = findType2(event.target.value)\n\t\t\t\t\t\tif (!t) return\n\t\t\t\t\t\tprod.type2 = t.label\n\t\t\t\t\t\tif (prod.hook.mainType) {\n\t\t\t\t\t\t\tprod.hook.mainType.text(t.label)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor (const t2 of type2lst) {\n\t\t\t\t\t\t\tif (t2.flag) prod[t2.flag] = t2 === t\n\t\t\t\t\t\t}\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\tfor (const rating of ['HQ', 'LQ', 'RT', 'bad', 'Major', 'NA']) {\n\t\t\t\t\tratingsl.append('option').attr('value', rating).text(rating)\n\t\t\t\t}\n\t\t\t\tratingsl.property('value', prod.rating)\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\tconst curtype = findType2(prod.type2)\n\t\t\t\tif (!curtype) {\n\t\t\t\t\t// no value given for this product, show a blank option until a type is chosen\n\t\t\t\t\ttypesl\n\t\t\t\t\t\t.append('option')\n\t\t\t\t\t\t.attr('value', '')\n\t\t\t\t\t\t.attr('disabled', 1)\n\t\t\t\t\t\t.text(prod.type2 || '')\n\t\t\t\t}\n\t\t\t\tfor (const t of type2lst) {\n\t\t\t\t\ttypesl.append('option').attr('value', t.label).text(t.label)\n\t\t\t\t}\n\t\t\t\ttypesl.property('value', curtype ? curtype.label : '')\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, { findType2, ratingGrades } 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\t// a product without a rating is not rated, read as NA\n\t\tif (!m.rating || m.rating.toUpperCase() == 'NA') {\n\t\t\tm.rating = 'NA'\n\t\t} else if (m.rating.toLowerCase() == 'major') {\n\t\t\tm.rating = 'HQ'\n\t\t}\n\t\tif (!ratingGrades.some(g => g.rating == m.rating)) {\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\tlet s = 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()].len) {\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()].len) {\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\tconst t = findType2(m.type2)\n\t\t\tif (!t) {\n\t\t\t\tbadlines.push([i, 'unknown functional effect: ' + m.type2, lst])\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif (t.flag) m[t.flag] = true\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", "tr", "td", "p", "lst", "y", "bplen", "event", "g_row", "text", "prod", "table", "_tr", "tr2", "p1", "p2", "sayerror", "e", "event", "v", "i"]
7
+ }