@sjcrh/proteinpaint-client 2.187.0 → 2.188.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 (963) hide show
  1. package/dist/2dmaf-6YIEXAIG.js +1372 -0
  2. package/dist/AIProjectAdmin-5K5NIQNT.js +828 -0
  3. package/dist/AppHeader-4SN5M6SZ.js +834 -0
  4. package/dist/BoxPlot-DBJA6TQF.js +1218 -0
  5. package/dist/CorrelationVolcano-MDMTMTT5.js +618 -0
  6. package/dist/DE-S5AFNI4I.js +94 -0
  7. package/dist/DEinput-XVBBA74N.js +300 -0
  8. package/dist/DifferentialAnalysis-TUBGPAB2.js +244 -0
  9. package/dist/DifferentialAnalysis-TUBGPAB2.js.map +7 -0
  10. package/dist/Disco-VV7FQ7WW.js +3236 -0
  11. package/dist/Disco.UI-JDJFJFEY.js +244 -0
  12. package/dist/DmrPlot-XOG67W74.js +641 -0
  13. package/dist/GB-K3AWZQFF.js +1129 -0
  14. package/dist/GeneExpInput-Y7MDS2CA.js +365 -0
  15. package/dist/HicApp-53OTZ3YU.js +2249 -0
  16. package/dist/NumBinaryEditor-SB4YR3JM.js +269 -0
  17. package/dist/NumBinaryEditor.unit.spec-V2W2OZYP.js +285 -0
  18. package/dist/NumContEditor-RZZBM7PR.js +106 -0
  19. package/dist/NumContEditor.unit.spec-GAAW3ZZN.js +168 -0
  20. package/dist/NumCustomBinEditor-GFCGPRPI.js +37 -0
  21. package/dist/NumCustomBinEditor.unit.spec-24MXSO3L.js +283 -0
  22. package/dist/NumDiscreteEditor-HAHIOFNC.js +178 -0
  23. package/dist/NumDiscreteEditor.unit.spec-JYN2CWSI.js +201 -0
  24. package/dist/NumRegularBinEditor-7DOE64RB.js +37 -0
  25. package/dist/NumRegularBinEditor.unit.spec-2WU4GGNT.js +226 -0
  26. package/dist/NumSplineEditor-JLRD5TVX.js +191 -0
  27. package/dist/NumSplineEditor.unit.spec-LOG7CECJ.js +198 -0
  28. package/dist/NumericDensity-IDOP7I34.js +37 -0
  29. package/dist/NumericDensity.unit.spec-HTJQRPVH.js +220 -0
  30. package/dist/NumericHandler-DWVVGLLB.js +38 -0
  31. package/dist/NumericHandler.unit.spec-BDDFTHOF.js +218 -0
  32. package/dist/ProteomeInput-PK4ZM3SZ.js +395 -0
  33. package/dist/ProteomeInput-PK4ZM3SZ.js.map +7 -0
  34. package/dist/RunChart2-PBJ56YX3.js +757 -0
  35. package/dist/SC-UC3HP2MY.js +830 -0
  36. package/dist/SC-UC3HP2MY.js.map +7 -0
  37. package/dist/Volcano-BZJCA53R.js +1314 -0
  38. package/dist/Volcano-BZJCA53R.js.map +7 -0
  39. package/dist/WSIViewer-OHOP2DZT.js +48475 -0
  40. package/dist/WSIViewer-OHOP2DZT.js.map +7 -0
  41. package/dist/WsiSamplesPlot-FOMPMEXK.js +164 -0
  42. package/dist/adSandbox-SRPPCYYR.js +37 -0
  43. package/dist/alphaGenome-IS2WAJCK.js +174 -0
  44. package/dist/app-GTHYSGWI.js +36 -0
  45. package/dist/app-XEKETNLG.js +48 -0
  46. package/dist/app.js +20 -20
  47. package/dist/bam-GQBFL6A7.js +859 -0
  48. package/dist/barchart-AESC4JSX.js +46 -0
  49. package/dist/barchart.data-RE34IC4G.js +22 -0
  50. package/dist/barchart.events-KM4J5ISO.js +46 -0
  51. package/dist/barchart.integration.spec-DFVSBGO3.js +1676 -0
  52. package/dist/barchart2-NNTL4RQZ.js +310 -0
  53. package/dist/block-EHZM3FUX.js +6201 -0
  54. package/dist/block.init-EAEFNNF6.js +37 -0
  55. package/dist/block.mds.expressionrank-ZBHA2CFE.js +358 -0
  56. package/dist/block.mds.geneboxplot-4ZU3QUAK.js +827 -0
  57. package/dist/block.mds.junction-PDH55JXO.js +1544 -0
  58. package/dist/block.mds.svcnv-QWBU54XQ.js +6800 -0
  59. package/dist/block.svg-HUGBYWXU.js +163 -0
  60. package/dist/block.tk.aicheck-SDCWXQZF.js +282 -0
  61. package/dist/block.tk.ase-HMUTHCJS.js +364 -0
  62. package/dist/block.tk.bam-Q7B2YQLI.js +1905 -0
  63. package/dist/block.tk.bedgraphdot-QBGBSVHN.js +383 -0
  64. package/dist/block.tk.bigwig.ui-767A3MUH.js +211 -0
  65. package/dist/block.tk.hicstraw-LEZUZHLF.js +822 -0
  66. package/dist/block.tk.junction-GQHCZOYR.js +2363 -0
  67. package/dist/block.tk.junction.textmatrixui-D5QUO7KQ.js +198 -0
  68. package/dist/block.tk.ld-E3MHZOG5.js +98 -0
  69. package/dist/block.tk.menu-XE7PFYGR.js +1028 -0
  70. package/dist/block.tk.pgv-MPPMPDED.js +943 -0
  71. package/dist/brainImaging-YQ443NOL.js +422 -0
  72. package/dist/chunk-26WXJBSR.js +228 -0
  73. package/dist/chunk-2P6Z7JFC.js +119 -0
  74. package/dist/chunk-2QQO4RRD.js +2681 -0
  75. package/dist/chunk-2T7VYQLY.js +281 -0
  76. package/dist/chunk-2T7VYQLY.js.map +7 -0
  77. package/dist/chunk-2XPDA6NL.js +20652 -0
  78. package/dist/chunk-2XPDA6NL.js.map +7 -0
  79. package/dist/chunk-37ARSZOI.js +2815 -0
  80. package/dist/chunk-42Q53PXE.js +381 -0
  81. package/dist/chunk-46ASPS5Y.js +386 -0
  82. package/dist/chunk-4KPI7PB5.js +142 -0
  83. package/dist/chunk-4MDNMCGZ.js +102 -0
  84. package/dist/chunk-5IG3E4DT.js +272 -0
  85. package/dist/chunk-5MIR7IHI.js +52 -0
  86. package/dist/chunk-5MZVXJVA.js +55 -0
  87. package/dist/chunk-66D5GRS5.js +263 -0
  88. package/dist/chunk-6ATE2TRC.js +534 -0
  89. package/dist/chunk-6BFR6MK3.js +158 -0
  90. package/dist/chunk-6NJMCO4X.js +335 -0
  91. package/dist/chunk-6ON5KAMO.js +54 -0
  92. package/dist/chunk-76GPYMHZ.js +102 -0
  93. package/dist/chunk-7AAFBFOH.js +147 -0
  94. package/dist/chunk-7OOZHEUC.js +302 -0
  95. package/dist/chunk-A4VLWLYF.js +226 -0
  96. package/dist/chunk-A6EFWGWD.js +444 -0
  97. package/dist/chunk-ALW5XXVW.js +170 -0
  98. package/dist/chunk-ANCT2BGO.js +34 -0
  99. package/dist/chunk-AROMXWCY.js +291 -0
  100. package/dist/chunk-AY4UBGLC.js +815 -0
  101. package/dist/chunk-B43MTEYB.js +84 -0
  102. package/dist/chunk-B43MTEYB.js.map +7 -0
  103. package/dist/chunk-BMVLR3TM.js +1210 -0
  104. package/dist/chunk-BR7JA2EO.js +621 -0
  105. package/dist/chunk-C3SYSMNE.js +42 -0
  106. package/dist/chunk-C3SYSMNE.js.map +7 -0
  107. package/dist/chunk-D3HJXMTH.js +17 -0
  108. package/dist/chunk-DKUEZ4XD.js +205 -0
  109. package/dist/chunk-DT3MMC5U.js +31 -0
  110. package/dist/chunk-DYVKN7EE.js +5000 -0
  111. package/dist/chunk-EF37UZY6.js +37 -0
  112. package/dist/chunk-ESXMS7FW.js +229 -0
  113. package/dist/chunk-FDK4UJMN.js +263 -0
  114. package/dist/chunk-FDK4UJMN.js.map +7 -0
  115. package/dist/chunk-FUSVXQ6C.js +368 -0
  116. package/dist/chunk-G7JRRTS5.js +170 -0
  117. package/dist/chunk-G7JRRTS5.js.map +7 -0
  118. package/dist/chunk-GHWHLSUX.js +192 -0
  119. package/dist/chunk-GHWHLSUX.js.map +7 -0
  120. package/dist/chunk-GXKVAPGP.js +2786 -0
  121. package/dist/chunk-H4JIENLQ.js +39 -0
  122. package/dist/chunk-H7YJG4YM.js +470 -0
  123. package/dist/chunk-I24KPIDD.js +148 -0
  124. package/dist/chunk-IENFDUWD.js +203 -0
  125. package/dist/chunk-IKHIY6IZ.js +2327 -0
  126. package/dist/chunk-IKHIY6IZ.js.map +7 -0
  127. package/dist/chunk-J7BISJTL.js +50 -0
  128. package/dist/chunk-J7KYOSEK.js +824 -0
  129. package/dist/chunk-JGPZ5254.js +371 -0
  130. package/dist/chunk-JUIPCWAM.js +194 -0
  131. package/dist/chunk-LO4NMQ7W.js +293 -0
  132. package/dist/chunk-LSSLS5HV.js +95 -0
  133. package/dist/chunk-MDLRB3MR.js +407 -0
  134. package/dist/chunk-MJLKGZ27.js +129 -0
  135. package/dist/chunk-MYWJQRTD.js +1849 -0
  136. package/dist/chunk-MYWJQRTD.js.map +7 -0
  137. package/dist/chunk-NL5T3SBK.js +4209 -0
  138. package/dist/chunk-NMBIT4IK.js +46 -0
  139. package/dist/chunk-NMBIT4IK.js.map +7 -0
  140. package/dist/chunk-ONAYJVN2.js +217 -0
  141. package/dist/chunk-PP7K4R2E.js +141 -0
  142. package/dist/chunk-PP7K4R2E.js.map +7 -0
  143. package/dist/chunk-PSMFOARZ.js +14 -0
  144. package/dist/chunk-QX3GF2IA.js +514 -0
  145. package/dist/chunk-QZ2U4BOS.js +1159 -0
  146. package/dist/chunk-RBZBBNLL.js +1087 -0
  147. package/dist/chunk-RQ2ZJ66W.js +276 -0
  148. package/dist/chunk-RQ2ZJ66W.js.map +7 -0
  149. package/dist/chunk-RZTFQXWV.js +117 -0
  150. package/dist/chunk-SJC2C77V.js +177 -0
  151. package/dist/chunk-THUXB7EE.js +698 -0
  152. package/dist/chunk-THUXB7EE.js.map +7 -0
  153. package/dist/chunk-TVXVP4M6.js +215 -0
  154. package/dist/chunk-UTDPKDIY.js +482 -0
  155. package/dist/chunk-UVIUB7QI.js +280 -0
  156. package/dist/chunk-VAUSRBL5.js +6364 -0
  157. package/dist/chunk-VP3IZVQA.js +54 -0
  158. package/dist/chunk-VP3IZVQA.js.map +7 -0
  159. package/dist/chunk-WP22GYZ2.js +446 -0
  160. package/dist/chunk-WUNX3VST.js +1271 -0
  161. package/dist/chunk-X7GDCYND.js +1561 -0
  162. package/dist/chunk-X7GDCYND.js.map +7 -0
  163. package/dist/chunk-XB3V6S2X.js +1230 -0
  164. package/dist/chunk-XB3V6S2X.js.map +7 -0
  165. package/dist/chunk-XD4TBJK2.js +455 -0
  166. package/dist/chunk-Y6DSXMPB.js +121 -0
  167. package/dist/chunk-YBIZRASR.js +252 -0
  168. package/dist/chunk-YI2YH7ZK.js +158 -0
  169. package/dist/chunk-YLDE3PVC.js +1943 -0
  170. package/dist/chunk-Z736NYXL.js +26 -0
  171. package/dist/chunk-ZEJB7CPC.js +95 -0
  172. package/dist/chunk-ZGWEBKZ4.js +100 -0
  173. package/dist/condition-FSF6ROJV.js +331 -0
  174. package/dist/controls-OPSBFDFZ.js +40 -0
  175. package/dist/controls.config-3QRV5363.js +38 -0
  176. package/dist/correlation-WLOI7Z35.js +97 -0
  177. package/dist/cuminc-G2UGJUUA.js +1148 -0
  178. package/dist/cuminc.integration.spec-X5NEZ6S5.js +677 -0
  179. package/dist/customdata.inputui-RNW3AO3Z.js +288 -0
  180. package/dist/dataDownload-4U3TGDMH.js +329 -0
  181. package/dist/dataDownload.integration.spec-6FUI2SJ4.js +192 -0
  182. package/dist/databrowser.ui-4GVJVJWG.js +432 -0
  183. package/dist/dictionary-NSDS7Z4K.js +110 -0
  184. package/dist/dnaMethylation-OYQB75LD.js +37 -0
  185. package/dist/dnaMethylation.integration.spec-6TTLV34N.js +202 -0
  186. package/dist/dofetch-4TO3QMT6.js +50 -0
  187. package/dist/e2pca-NYBVR6PL.js +349 -0
  188. package/dist/ep-RTDVEA4D.js +1255 -0
  189. package/dist/expclust.gdc.spec-JVIRESTP.js +306 -0
  190. package/dist/facet-OVBF2QMO.js +520 -0
  191. package/dist/forms2-HTLS54CX.js +533 -0
  192. package/dist/gb-Y3546HMZ.js +87 -0
  193. package/dist/geneExpClustering-PH3PWH3K.js +248 -0
  194. package/dist/geneExpression-2Z2EV3XM.js +37 -0
  195. package/dist/geneExpression-6CFXOCGW.js +312 -0
  196. package/dist/geneExpression.unit.spec-WKUTHRHC.js +101 -0
  197. package/dist/geneORA-SHLZESLB.js +277 -0
  198. package/dist/geneVariant-FHZUIFPM.js +38 -0
  199. package/dist/geneVariant-Y7ZUBEOX.js +40 -0
  200. package/dist/geneVariant.integration.spec-N7TZUOY3.js +197 -0
  201. package/dist/genefusion.ui-7PDVZPZ2.js +308 -0
  202. package/dist/geneset-HLVOGYUI.js +202 -0
  203. package/dist/genomeBrowser.spec-7IVIMUR5.js +280 -0
  204. package/dist/grin2-2GNWIYFU.js +845 -0
  205. package/dist/grin2-2GNWIYFU.js.map +7 -0
  206. package/dist/grin2-Z5O7254R.js +1555 -0
  207. package/dist/gsea-TFC3MBRW.js +46 -0
  208. package/dist/hierCluster-ERSE5I4I.js +62 -0
  209. package/dist/hierCluster-QQZQU5ZG.js +58 -0
  210. package/dist/hierCluster.config-WPINWW37.js +39 -0
  211. package/dist/hierCluster.integration.spec-Y6OHSKPW.js +394 -0
  212. package/dist/hierCluster.interactivity-HS3G5QC5.js +53 -0
  213. package/dist/hierCluster.renderers-W63ZKZTT.js +21 -0
  214. package/dist/imagePlot-QFVN25PM.js +162 -0
  215. package/dist/importPlot-MIDM5APH.js +8 -0
  216. package/dist/isoformExpression-L4TRNT4A.js +39 -0
  217. package/dist/isoformExpression.unit.spec-QQG323LA.js +207 -0
  218. package/dist/launch.adhoc-4NQ6GGGL.js +41 -0
  219. package/dist/leftlabel.sample-JU7AIPZL.js +259 -0
  220. package/dist/legacyDataset-TT4CHF23.js +119 -0
  221. package/dist/lollipop-JG74M6PJ.js +170 -0
  222. package/dist/maf-PDL2EGHI.js +451 -0
  223. package/dist/maftimeline-V43NQEEE.js +592 -0
  224. package/dist/matrix-EB2EFP4S.js +57 -0
  225. package/dist/matrix-Q57FU5FE.js +62 -0
  226. package/dist/matrix.cells-NJIMPD32.js +28 -0
  227. package/dist/matrix.config-GLDEQD3H.js +40 -0
  228. package/dist/matrix.data-6SHAKOQU.js +25 -0
  229. package/dist/matrix.groups-MTDEANQA.js +26 -0
  230. package/dist/matrix.integration.spec-JCZ5VQJU.js +3071 -0
  231. package/dist/matrix.interactivity-SVRNWL6V.js +41 -0
  232. package/dist/matrix.layout-2HREO42N.js +43 -0
  233. package/dist/matrix.legend-QHVKT3MP.js +22 -0
  234. package/dist/matrix.renderers-IYR3ZY6V.js +37 -0
  235. package/dist/matrix.serieses-2VMTQXL2.js +21 -0
  236. package/dist/matrix.sort-PWA2RQQR.js +27 -0
  237. package/dist/matrix.sort.unit.spec-3OYIPTFY.js +471 -0
  238. package/dist/matrix.sorterUi-Y5QLO75X.js +18 -0
  239. package/dist/matrix.sorterUi.unit.spec-BNEXQHLP.js +341 -0
  240. package/dist/mavb-IZDDU4KK.js +731 -0
  241. package/dist/mds.fimo-FWBL7JE6.js +517 -0
  242. package/dist/mds.samplescatterplot-T47C7DJB.js +1549 -0
  243. package/dist/mds.survivalplot-MFZJCGS6.js +482 -0
  244. package/dist/numericDictTermCluster-I2W67RGA.js +72 -0
  245. package/dist/oncomatrix-6W7IBAED.js +294 -0
  246. package/dist/oncomatrix.spec-CEFH5IGH.js +447 -0
  247. package/dist/plot.2dvaf-BN6CFLNU.js +376 -0
  248. package/dist/plot.app-7EYWUCZV.js +40 -0
  249. package/dist/plot.barplot-MDIARSQD.js +101 -0
  250. package/dist/plot.boxplot-RUHGXC54.js +151 -0
  251. package/dist/plot.brainImaging-JEE32ZBV.js +51 -0
  252. package/dist/plot.disco-2RPNPX6E.js +101 -0
  253. package/dist/plot.dzi-7VTYYGGW.js +33 -0
  254. package/dist/plot.ssgq-FHE5KU5C.js +138 -0
  255. package/dist/plot.vaf2cov-WDJJM5Q4.js +258 -0
  256. package/dist/plot.wsi-FQZWHNSF.js +36 -0
  257. package/dist/polar-M7EGINN4.js +185 -0
  258. package/dist/polar2-JFYY43K2.js +227 -0
  259. package/dist/profile.spec-SIOHASOX.js +79 -0
  260. package/dist/profileBarchart-6JLEKVJV.js +266 -0
  261. package/dist/profileForms-G6CH73RV.js +440 -0
  262. package/dist/profilePlot-NQYJOBVV.js +53 -0
  263. package/dist/profileRadar-4TNWIXDB.js +262 -0
  264. package/dist/profileRadarFacility-XPH3LCBQ.js +262 -0
  265. package/dist/proteinView-OZLHO45J.js +1222 -0
  266. package/dist/proteinView-OZLHO45J.js.map +7 -0
  267. package/dist/proteomeAbundance-NQ4635NL.js +12 -0
  268. package/dist/proteomeAbundance-OV24UTZN.js +59 -0
  269. package/dist/proteomeAbundance-OV24UTZN.js.map +7 -0
  270. package/dist/qualitative-DL4WJG3O.js +42 -0
  271. package/dist/radar2-YNOQWHBT.js +315 -0
  272. package/dist/radarFacility2-24UPSI7S.js +324 -0
  273. package/dist/regression-URAUTLTD.js +55 -0
  274. package/dist/regression.inputs-UDVOU7FB.js +47 -0
  275. package/dist/regression.inputs.term-BWW6W34R.js +47 -0
  276. package/dist/regression.inputs.values.table-UKGIZTXG.js +44 -0
  277. package/dist/regression.integration.spec-EBHQTNA3.js +783 -0
  278. package/dist/regression.results-XTOSWIP6.js +39 -0
  279. package/dist/regression.spec-KG2I53VR.js +707 -0
  280. package/dist/report-KH7SNPVF.js +221 -0
  281. package/dist/sampleScatter.spec-PIXGS3LG.js +201 -0
  282. package/dist/sampleView-TWS6VT55.js +47 -0
  283. package/dist/samplelst-6AB5Y4WR.js +110 -0
  284. package/dist/samplematrix-AJAF555E.js +2197 -0
  285. package/dist/sc-PMNYZKXA.js +85 -0
  286. package/dist/scatter-Q2GH3ZJD.js +801 -0
  287. package/dist/scatter.integration.spec-SMMYKWH3.js +1195 -0
  288. package/dist/selectGenomeWithTklst-VE4SDYY7.js +133 -0
  289. package/dist/singleCellCellType-S324GCKW.js +37 -0
  290. package/dist/singleCellCellType.unit.spec-NXC2GELH.js +159 -0
  291. package/dist/singleCellGeneExpression-6H4HRKIA.js +37 -0
  292. package/dist/singleCellGeneExpression.unit.spec-HIJXVUWJ.js +152 -0
  293. package/dist/singleCellPlot-H7PCZ2DP.js +52 -0
  294. package/dist/singlecell-4LH3MQVL.js +85 -0
  295. package/dist/singlecell-MOSYT3RI.js +1571 -0
  296. package/dist/snp-IKLGTD4Q.js +37 -0
  297. package/dist/snp.unit.spec-GC74MUVM.js +175 -0
  298. package/dist/snplocus-RIABFSBQ.js +207 -0
  299. package/dist/spliceevent.a53ss.diagram-4E2IYYHL.js +150 -0
  300. package/dist/spliceevent.exonskip.diagram-C56R6XLQ.js +276 -0
  301. package/dist/spliceevent.noeventdiagram-SIPMAKXI.js +459 -0
  302. package/dist/ssGSEA-5QNHLSOI.js +37 -0
  303. package/dist/ssGSEA.unit.spec-KVPN553B.js +87 -0
  304. package/dist/summarizeCnvGeneexp-K4VGJSW6.js +162 -0
  305. package/dist/summarizeGeneexpSurvival-HGHX65FN.js +107 -0
  306. package/dist/summarizeMutationCnv-3K4Z6R2X.js +163 -0
  307. package/dist/summarizeMutationDiagnosis-M2MHUPRT.js +39 -0
  308. package/dist/summarizeMutationSurvival-WVBUP3GA.js +98 -0
  309. package/dist/summary-RZHZXCU5.js +48 -0
  310. package/dist/summary.integration.spec-FGZP7DY7.js +413 -0
  311. package/dist/summaryInput-UGM7MMCR.js +234 -0
  312. package/dist/sunburst-L27U7LV7.js +283 -0
  313. package/dist/survival-5ZMEBV6O.js +57 -0
  314. package/dist/survival-JWRRGTJT.js +45 -0
  315. package/dist/survival.integration.spec-Z5542I4V.js +801 -0
  316. package/dist/svgraph-O6ZVLNNN.js +1386 -0
  317. package/dist/svmr-ULFV7OSH.js +3841 -0
  318. package/dist/table-CHRQH2GH.js +199 -0
  319. package/dist/termCollection-FAO6ZA6F.js +178 -0
  320. package/dist/termCollection-GBXS3GOY.js +37 -0
  321. package/dist/termCollection.unit.spec-4WRTOV6E.js +207 -0
  322. package/dist/tk-KNUBWRNK.js +45 -0
  323. package/dist/tp.ui-2PPYOQYL.js +1458 -0
  324. package/dist/tvs.density-BZ5SKDQS.js +18 -0
  325. package/dist/tvs.dt-TDNSTGQR.js +38 -0
  326. package/dist/tvs.dtcnv.categorical-P2IGIE4I.js +39 -0
  327. package/dist/tvs.dtcnv.continuous-2XUCRBDR.js +71 -0
  328. package/dist/tvs.dtfusion-PRHZVMOG.js +39 -0
  329. package/dist/tvs.dtsnvindel-KGKBW5JS.js +39 -0
  330. package/dist/tvs.dtsv-M3CY5TZF.js +39 -0
  331. package/dist/tvs.numeric-W74JCC5P.js +21 -0
  332. package/dist/tvs.samplelst-BTWFBBAN.js +103 -0
  333. package/dist/tvs.termCollection-Y64QIKOA.js +158 -0
  334. package/dist/violin-3LLHHV3L.js +45 -0
  335. package/dist/violin.integration.spec-6NF5FDLQ.js +1424 -0
  336. package/dist/violin.interactivity-W2AKZ24D.js +37 -0
  337. package/dist/violin.renderer-CRFYYZRI.js +39 -0
  338. package/dist/vocabulary-AUJOAVYS.js +40 -0
  339. package/package.json +4 -3
  340. package/dist/2dmaf-DTWWXOZC.js +0 -1372
  341. package/dist/AIProjectAdmin-BCYIWOXD.js +0 -828
  342. package/dist/AppHeader-H3L2MRWP.js +0 -834
  343. package/dist/BoxPlot-INZ6IN3V.js +0 -1218
  344. package/dist/CorrelationVolcano-AK3XW4ZH.js +0 -618
  345. package/dist/DE-IBSFUKNG.js +0 -94
  346. package/dist/DEinput-H4GMQWDY.js +0 -300
  347. package/dist/DifferentialAnalysis-3DSL5LQC.js +0 -243
  348. package/dist/DifferentialAnalysis-3DSL5LQC.js.map +0 -7
  349. package/dist/Disco-5PXXMGGQ.js +0 -3236
  350. package/dist/Disco.UI-23LOT2U6.js +0 -244
  351. package/dist/DmrPlot-PBCU2XNF.js +0 -641
  352. package/dist/GB-HIEPWNPV.js +0 -1129
  353. package/dist/GeneExpInput-A4JNX7PU.js +0 -365
  354. package/dist/HicApp-IDH2A4BC.js +0 -2249
  355. package/dist/NumBinaryEditor-CZ54X7J3.js +0 -269
  356. package/dist/NumBinaryEditor.unit.spec-QLBRM7MJ.js +0 -285
  357. package/dist/NumContEditor-Z5MGLQ2I.js +0 -106
  358. package/dist/NumContEditor.unit.spec-TR7D7ULV.js +0 -168
  359. package/dist/NumCustomBinEditor-B7JID42Y.js +0 -37
  360. package/dist/NumCustomBinEditor.unit.spec-GZJIVY4K.js +0 -283
  361. package/dist/NumDiscreteEditor-LWHZ36T6.js +0 -178
  362. package/dist/NumDiscreteEditor.unit.spec-QCQCMEWO.js +0 -201
  363. package/dist/NumRegularBinEditor-IATRIUKD.js +0 -37
  364. package/dist/NumRegularBinEditor.unit.spec-J6UTQO76.js +0 -226
  365. package/dist/NumSplineEditor-2KMU6SRO.js +0 -191
  366. package/dist/NumSplineEditor.unit.spec-MX7Y4MTD.js +0 -198
  367. package/dist/NumericDensity-JCH7F5FV.js +0 -37
  368. package/dist/NumericDensity.unit.spec-4TKKRKHF.js +0 -220
  369. package/dist/NumericHandler-7FB3RJM7.js +0 -38
  370. package/dist/NumericHandler.unit.spec-U6DCADZY.js +0 -218
  371. package/dist/RunChart2-VQTIVMKM.js +0 -757
  372. package/dist/SC-XW272KAP.js +0 -827
  373. package/dist/SC-XW272KAP.js.map +0 -7
  374. package/dist/Volcano-Y4U3L6D2.js +0 -1352
  375. package/dist/Volcano-Y4U3L6D2.js.map +0 -7
  376. package/dist/WSIViewer-UFB7TI2D.js +0 -47972
  377. package/dist/WSIViewer-UFB7TI2D.js.map +0 -7
  378. package/dist/WsiSamplesPlot-2OAR57YB.js +0 -164
  379. package/dist/adSandbox-IKKFYRF7.js +0 -37
  380. package/dist/alphaGenome-WJNFQGGK.js +0 -174
  381. package/dist/app-UHGTFH6D.js +0 -48
  382. package/dist/app-YETYAR45.js +0 -36
  383. package/dist/bam-S6U7VNJP.js +0 -859
  384. package/dist/barchart-3NJDGHXU.js +0 -46
  385. package/dist/barchart.data-MVVKPDLE.js +0 -22
  386. package/dist/barchart.events-WQGA4CGB.js +0 -46
  387. package/dist/barchart.integration.spec-E6CJTWRN.js +0 -1676
  388. package/dist/barchart2-UNHFOYKB.js +0 -310
  389. package/dist/block-2XHZLY26.js +0 -6201
  390. package/dist/block.init-CMG4V6RB.js +0 -37
  391. package/dist/block.mds.expressionrank-QX2JOEMV.js +0 -358
  392. package/dist/block.mds.geneboxplot-USVQSDBT.js +0 -827
  393. package/dist/block.mds.junction-R6GJO75N.js +0 -1544
  394. package/dist/block.mds.svcnv-MRISSDAX.js +0 -6800
  395. package/dist/block.svg-Z5KKZTDB.js +0 -163
  396. package/dist/block.tk.aicheck-SOFJYYZX.js +0 -282
  397. package/dist/block.tk.ase-EHX5FV2Y.js +0 -364
  398. package/dist/block.tk.bam-DJS6LODM.js +0 -1905
  399. package/dist/block.tk.bedgraphdot-R2YHPXZA.js +0 -383
  400. package/dist/block.tk.bigwig.ui-VPEEQJLS.js +0 -211
  401. package/dist/block.tk.hicstraw-BDYN573B.js +0 -822
  402. package/dist/block.tk.junction-BONB4BXU.js +0 -2363
  403. package/dist/block.tk.junction.textmatrixui-Y5R6KY4N.js +0 -198
  404. package/dist/block.tk.ld-EGVVSXCB.js +0 -98
  405. package/dist/block.tk.menu-4YBMB5JT.js +0 -1028
  406. package/dist/block.tk.pgv-SBHGL6UH.js +0 -943
  407. package/dist/brainImaging-G3WZDYG6.js +0 -422
  408. package/dist/chunk-2K5DSRBJ.js +0 -84
  409. package/dist/chunk-2K5DSRBJ.js.map +0 -7
  410. package/dist/chunk-2O6JF76T.js +0 -121
  411. package/dist/chunk-2QULGYVE.js +0 -368
  412. package/dist/chunk-2VLGHVOL.js +0 -215
  413. package/dist/chunk-32TTOWY6.js +0 -1210
  414. package/dist/chunk-43PMSEMV.js +0 -50
  415. package/dist/chunk-4KSU6NBP.js +0 -194
  416. package/dist/chunk-4SFX42S7.js +0 -1271
  417. package/dist/chunk-4Y444IRJ.js +0 -272
  418. package/dist/chunk-56AN5PPQ.js +0 -679
  419. package/dist/chunk-56AN5PPQ.js.map +0 -7
  420. package/dist/chunk-5FO3NKA4.js +0 -155
  421. package/dist/chunk-5FO3NKA4.js.map +0 -7
  422. package/dist/chunk-5HOR6JQ2.js +0 -100
  423. package/dist/chunk-5LZKQFLO.js +0 -180
  424. package/dist/chunk-5LZKQFLO.js.map +0 -7
  425. package/dist/chunk-5RE3J6HK.js +0 -293
  426. package/dist/chunk-5SMOOFRW.js +0 -386
  427. package/dist/chunk-64Z22QAH.js +0 -14
  428. package/dist/chunk-6NMH6WPB.js +0 -446
  429. package/dist/chunk-7FKIAQ4K.js +0 -17
  430. package/dist/chunk-7NOKTEHK.js +0 -407
  431. package/dist/chunk-7UHUOC6F.js +0 -119
  432. package/dist/chunk-AMYSEKPF.js +0 -1658
  433. package/dist/chunk-AMYSEKPF.js.map +0 -7
  434. package/dist/chunk-ANGDY7VC.js +0 -170
  435. package/dist/chunk-AQ4OP4GR.js +0 -39
  436. package/dist/chunk-AQVOYTLS.js +0 -177
  437. package/dist/chunk-ARINZFQG.js +0 -276
  438. package/dist/chunk-ARINZFQG.js.map +0 -7
  439. package/dist/chunk-BQJVLXEL.js +0 -55
  440. package/dist/chunk-BRMASRRS.js +0 -455
  441. package/dist/chunk-BT4OOYPT.js +0 -280
  442. package/dist/chunk-BTJFVY3R.js +0 -190
  443. package/dist/chunk-BTJFVY3R.js.map +0 -7
  444. package/dist/chunk-C62CSWMV.js +0 -335
  445. package/dist/chunk-CAWDQURD.js +0 -6364
  446. package/dist/chunk-DMAHNBGN.js +0 -1230
  447. package/dist/chunk-DMAHNBGN.js.map +0 -7
  448. package/dist/chunk-EGWVYY7K.js +0 -264
  449. package/dist/chunk-EGWVYY7K.js.map +0 -7
  450. package/dist/chunk-ENWVV6EU.js +0 -2681
  451. package/dist/chunk-EPOELG75.js +0 -56
  452. package/dist/chunk-EPOELG75.js.map +0 -7
  453. package/dist/chunk-FA44G3GZ.js +0 -470
  454. package/dist/chunk-GD7FKXOA.js +0 -148
  455. package/dist/chunk-GF4OSOYW.js +0 -2815
  456. package/dist/chunk-GQOBT2W7.js +0 -203
  457. package/dist/chunk-GTBL7UHX.js +0 -2786
  458. package/dist/chunk-HE7CD7BD.js +0 -482
  459. package/dist/chunk-I7JDV4ZC.js +0 -226
  460. package/dist/chunk-IABWKPRK.js +0 -534
  461. package/dist/chunk-IPDH4FHY.js +0 -54
  462. package/dist/chunk-JNOOLCYB.js +0 -1159
  463. package/dist/chunk-JPKYHLNI.js +0 -158
  464. package/dist/chunk-KMQ6GQ3I.js +0 -1943
  465. package/dist/chunk-KTCW3JA6.js +0 -4209
  466. package/dist/chunk-L4QG7XZE.js +0 -46
  467. package/dist/chunk-L4QG7XZE.js.map +0 -7
  468. package/dist/chunk-LGUE54VX.js +0 -302
  469. package/dist/chunk-LJ4AUJXC.js +0 -95
  470. package/dist/chunk-LN3QYBGI.js +0 -20495
  471. package/dist/chunk-LN3QYBGI.js.map +0 -7
  472. package/dist/chunk-LQQSRNR5.js +0 -228
  473. package/dist/chunk-LSV4Z473.js +0 -31
  474. package/dist/chunk-LTSR7SLO.js +0 -514
  475. package/dist/chunk-LY7GD74F.js +0 -381
  476. package/dist/chunk-MHCTLVGE.js +0 -26
  477. package/dist/chunk-MSAMGAQF.js +0 -2370
  478. package/dist/chunk-MSAMGAQF.js.map +0 -7
  479. package/dist/chunk-NYX4B5CO.js +0 -291
  480. package/dist/chunk-OPPNZXYG.js +0 -129
  481. package/dist/chunk-P6TPXUMP.js +0 -117
  482. package/dist/chunk-PL2CM7RY.js +0 -621
  483. package/dist/chunk-PSGQWZN4.js +0 -147
  484. package/dist/chunk-PZLYNNST.js +0 -371
  485. package/dist/chunk-RA4RQYXQ.js +0 -142
  486. package/dist/chunk-RAJZYWFN.js +0 -95
  487. package/dist/chunk-ROLVOPVR.js +0 -252
  488. package/dist/chunk-RQZJIBIH.js +0 -34
  489. package/dist/chunk-RSE2FOKW.js +0 -217
  490. package/dist/chunk-SDLRTORS.js +0 -263
  491. package/dist/chunk-TF4EDNQO.js +0 -158
  492. package/dist/chunk-TV74I3Y5.js +0 -43
  493. package/dist/chunk-TV74I3Y5.js.map +0 -7
  494. package/dist/chunk-UPPBAFUK.js +0 -5000
  495. package/dist/chunk-UVPAZM3G.js +0 -52
  496. package/dist/chunk-UWYCEYML.js +0 -815
  497. package/dist/chunk-VB3SRNBK.js +0 -37
  498. package/dist/chunk-W6XQR5UL.js +0 -444
  499. package/dist/chunk-XBBUQW52.js +0 -824
  500. package/dist/chunk-XSA3VIEQ.js +0 -205
  501. package/dist/chunk-XZ6MGJQ3.js +0 -102
  502. package/dist/chunk-YC6ZJ7RP.js +0 -1842
  503. package/dist/chunk-YC6ZJ7RP.js.map +0 -7
  504. package/dist/chunk-YEMIL6QU.js +0 -1087
  505. package/dist/chunk-ZD47FENE.js +0 -229
  506. package/dist/chunk-ZYBM24FU.js +0 -102
  507. package/dist/chunk-ZYY54HBU.js +0 -330
  508. package/dist/chunk-ZYY54HBU.js.map +0 -7
  509. package/dist/condition-ARCN26MF.js +0 -331
  510. package/dist/controls-PKWN2JGN.js +0 -40
  511. package/dist/controls.config-NFRPXFUJ.js +0 -38
  512. package/dist/correlation-DPT6XL2U.js +0 -97
  513. package/dist/cuminc-M4U7LQD5.js +0 -1148
  514. package/dist/cuminc.integration.spec-MH4OFYDJ.js +0 -677
  515. package/dist/customdata.inputui-6TAHAMSV.js +0 -288
  516. package/dist/dataDownload-7GZEYSUT.js +0 -329
  517. package/dist/dataDownload.integration.spec-NAIJRFTV.js +0 -192
  518. package/dist/databrowser.ui-LLXHZ5O6.js +0 -432
  519. package/dist/dictionary-MUAURMYE.js +0 -110
  520. package/dist/dnaMethylation-AU5D3U3E.js +0 -37
  521. package/dist/dnaMethylation.integration.spec-JIDBRA6P.js +0 -202
  522. package/dist/dofetch-WSYK5OTB.js +0 -50
  523. package/dist/e2pca-ICG35YR5.js +0 -349
  524. package/dist/ep-CSSSQOUP.js +0 -1255
  525. package/dist/expclust.gdc.spec-4WPQUXH4.js +0 -306
  526. package/dist/facet-JAGILNY6.js +0 -520
  527. package/dist/forms2-IMVDB6AT.js +0 -533
  528. package/dist/gb-36LTYICV.js +0 -87
  529. package/dist/geneExpClustering-CGMENTHI.js +0 -248
  530. package/dist/geneExpression-AD2L46J4.js +0 -37
  531. package/dist/geneExpression-G2FHBDUQ.js +0 -312
  532. package/dist/geneExpression.unit.spec-XWCB7K5L.js +0 -101
  533. package/dist/geneORA-GVHQF7DF.js +0 -277
  534. package/dist/geneVariant-HE22CH76.js +0 -40
  535. package/dist/geneVariant-SQD5QUFH.js +0 -38
  536. package/dist/geneVariant.integration.spec-66XFLDNN.js +0 -197
  537. package/dist/genefusion.ui-TD32NWD4.js +0 -308
  538. package/dist/geneset-NSYPDXS3.js +0 -202
  539. package/dist/genomeBrowser.spec-CYFONLNQ.js +0 -280
  540. package/dist/grin2-3QB57OPH.js +0 -1555
  541. package/dist/grin2-FLQNWPMZ.js +0 -851
  542. package/dist/grin2-FLQNWPMZ.js.map +0 -7
  543. package/dist/gsea-RMTU5I3U.js +0 -46
  544. package/dist/hierCluster-LSQL6PGC.js +0 -58
  545. package/dist/hierCluster-XTEBDEVO.js +0 -62
  546. package/dist/hierCluster.config-SHXFSPOH.js +0 -39
  547. package/dist/hierCluster.integration.spec-KNMIYWV3.js +0 -394
  548. package/dist/hierCluster.interactivity-6NAKTUR5.js +0 -53
  549. package/dist/hierCluster.renderers-FWOV4Q47.js +0 -21
  550. package/dist/imagePlot-3IVG4SFN.js +0 -162
  551. package/dist/importPlot-HEMDRIVF.js +0 -8
  552. package/dist/isoformExpression-FJ3GEU6D.js +0 -39
  553. package/dist/isoformExpression.unit.spec-L7D22UDB.js +0 -207
  554. package/dist/launch.adhoc-PDGQF2UP.js +0 -41
  555. package/dist/leftlabel.sample-ZBI4NHCV.js +0 -259
  556. package/dist/legacyDataset-PBCPC5I7.js +0 -119
  557. package/dist/lollipop-K7S6ASFE.js +0 -170
  558. package/dist/maf-JEW6PPJB.js +0 -451
  559. package/dist/maftimeline-7URL27MC.js +0 -592
  560. package/dist/matrix-6EK5WGIG.js +0 -57
  561. package/dist/matrix-DKBD5RIL.js +0 -62
  562. package/dist/matrix.cells-KEIOXJQ7.js +0 -28
  563. package/dist/matrix.config-FGJB4VVM.js +0 -40
  564. package/dist/matrix.data-QGCGFLD7.js +0 -25
  565. package/dist/matrix.groups-HBPLZ2QX.js +0 -26
  566. package/dist/matrix.integration.spec-R4PF67KF.js +0 -3071
  567. package/dist/matrix.interactivity-M3SY33ET.js +0 -41
  568. package/dist/matrix.layout-H6WQ3ZMW.js +0 -43
  569. package/dist/matrix.legend-UCL7HM26.js +0 -22
  570. package/dist/matrix.renderers-3PPFSS7Z.js +0 -37
  571. package/dist/matrix.serieses-S2TJ3E6P.js +0 -21
  572. package/dist/matrix.sort-CFA4UWBJ.js +0 -27
  573. package/dist/matrix.sort.unit.spec-562VIWDS.js +0 -471
  574. package/dist/matrix.sorterUi-FT7K5664.js +0 -18
  575. package/dist/matrix.sorterUi.unit.spec-GAHHUN3K.js +0 -341
  576. package/dist/mavb-HPW5X55U.js +0 -731
  577. package/dist/mds.fimo-HSBKLIOX.js +0 -517
  578. package/dist/mds.samplescatterplot-DE27OMJE.js +0 -1549
  579. package/dist/mds.survivalplot-IW22UGCE.js +0 -482
  580. package/dist/numericDictTermCluster-DOD66G3A.js +0 -72
  581. package/dist/oncomatrix-BZCVCPR4.js +0 -294
  582. package/dist/oncomatrix.spec-IHYCIAP4.js +0 -447
  583. package/dist/plot.2dvaf-QLOZ54VC.js +0 -376
  584. package/dist/plot.app-XDVDR23J.js +0 -40
  585. package/dist/plot.barplot-XOESF7OQ.js +0 -101
  586. package/dist/plot.boxplot-VNOC2CHT.js +0 -151
  587. package/dist/plot.brainImaging-7ZEOY4UR.js +0 -51
  588. package/dist/plot.disco-6GVDYK7A.js +0 -101
  589. package/dist/plot.dzi-TEFPPPL6.js +0 -33
  590. package/dist/plot.ssgq-OG4TODLO.js +0 -138
  591. package/dist/plot.vaf2cov-VMZRJULA.js +0 -258
  592. package/dist/plot.wsi-2CHZZ7AC.js +0 -36
  593. package/dist/polar-QUYQRQOQ.js +0 -185
  594. package/dist/polar2-OXXLAXJC.js +0 -227
  595. package/dist/profile.spec-TI6PRHNJ.js +0 -79
  596. package/dist/profileBarchart-GEK77XEB.js +0 -266
  597. package/dist/profileForms-NR3VNHKM.js +0 -440
  598. package/dist/profilePlot-GGKO3IW5.js +0 -53
  599. package/dist/profileRadar-MN3LX5ER.js +0 -262
  600. package/dist/profileRadarFacility-3G2HWB2L.js +0 -262
  601. package/dist/proteinView-TZ5BGOTA.js +0 -1188
  602. package/dist/proteinView-TZ5BGOTA.js.map +0 -7
  603. package/dist/proteomeAbundance-JXNECXF7.js +0 -68
  604. package/dist/proteomeAbundance-JXNECXF7.js.map +0 -7
  605. package/dist/proteomeAbundance-O4BB55O3.js +0 -21
  606. package/dist/qualitative-Q3TT73O7.js +0 -42
  607. package/dist/radar2-LSD3VPZT.js +0 -315
  608. package/dist/radarFacility2-LZGIXY7A.js +0 -324
  609. package/dist/regression-J3XDAPAZ.js +0 -55
  610. package/dist/regression.inputs-BBZYI5OI.js +0 -47
  611. package/dist/regression.inputs.term-7BW6XGLG.js +0 -47
  612. package/dist/regression.inputs.values.table-DYX2YU4H.js +0 -44
  613. package/dist/regression.integration.spec-WLXZYKWW.js +0 -783
  614. package/dist/regression.results-K5Q2N2KW.js +0 -39
  615. package/dist/regression.spec-VT7T6KBY.js +0 -707
  616. package/dist/report-3D3L573D.js +0 -221
  617. package/dist/sampleScatter.spec-6IPJQLM2.js +0 -201
  618. package/dist/sampleView-5JMFI4HF.js +0 -47
  619. package/dist/samplelst-SUCB5WOZ.js +0 -110
  620. package/dist/samplematrix-A5SZBKO6.js +0 -2197
  621. package/dist/sc-NAA6ESO6.js +0 -85
  622. package/dist/scatter-EQCN2HYE.js +0 -801
  623. package/dist/scatter.integration.spec-7NXIYS67.js +0 -1195
  624. package/dist/selectGenomeWithTklst-KXODNCY6.js +0 -133
  625. package/dist/singleCellCellType-HMIW76YB.js +0 -37
  626. package/dist/singleCellCellType.unit.spec-ZCZET56X.js +0 -159
  627. package/dist/singleCellGeneExpression-IUCUHF6R.js +0 -37
  628. package/dist/singleCellGeneExpression.unit.spec-J4D6F2N3.js +0 -152
  629. package/dist/singleCellPlot-L6W3MDGG.js +0 -52
  630. package/dist/singlecell-A6ECAAPI.js +0 -85
  631. package/dist/singlecell-KBABNXC5.js +0 -1571
  632. package/dist/snp-RO7ATG6E.js +0 -37
  633. package/dist/snp.unit.spec-ZJLRGJD4.js +0 -175
  634. package/dist/snplocus-N3CU6NRP.js +0 -207
  635. package/dist/spliceevent.a53ss.diagram-7PHT4COB.js +0 -150
  636. package/dist/spliceevent.exonskip.diagram-3CZTY6QD.js +0 -276
  637. package/dist/spliceevent.noeventdiagram-GQE256DT.js +0 -459
  638. package/dist/ssGSEA-4I3L5MX2.js +0 -37
  639. package/dist/ssGSEA.unit.spec-PZCC5YU7.js +0 -87
  640. package/dist/summarizeCnvGeneexp-ASXUQW56.js +0 -162
  641. package/dist/summarizeGeneexpSurvival-ULGUOW5V.js +0 -107
  642. package/dist/summarizeMutationCnv-VDUCIUGM.js +0 -163
  643. package/dist/summarizeMutationDiagnosis-FMAAMCZC.js +0 -39
  644. package/dist/summarizeMutationSurvival-GZ4NGDJT.js +0 -98
  645. package/dist/summary-2WNZ6JSB.js +0 -48
  646. package/dist/summary.integration.spec-XPMYB6GM.js +0 -413
  647. package/dist/summaryInput-2UGXEA5C.js +0 -234
  648. package/dist/sunburst-76WCQLTT.js +0 -283
  649. package/dist/survival-23IZM4ML.js +0 -45
  650. package/dist/survival-3EAMPHSX.js +0 -57
  651. package/dist/survival.integration.spec-YNVAKBV3.js +0 -801
  652. package/dist/svgraph-G2M5LXEP.js +0 -1386
  653. package/dist/svmr-BUDBVU34.js +0 -3841
  654. package/dist/table-QJSZ6YFK.js +0 -199
  655. package/dist/termCollection-2YAY3RLZ.js +0 -178
  656. package/dist/termCollection-MAMDMEDD.js +0 -37
  657. package/dist/termCollection.unit.spec-UY7G2BHG.js +0 -207
  658. package/dist/tk-GFGP3F76.js +0 -45
  659. package/dist/tp.ui-OQ757UIE.js +0 -1458
  660. package/dist/tvs.density-BJK23JYJ.js +0 -18
  661. package/dist/tvs.dt-TOYEFKNT.js +0 -38
  662. package/dist/tvs.dtcnv.categorical-EO2VLFL2.js +0 -39
  663. package/dist/tvs.dtcnv.continuous-ZAHTKZ4Y.js +0 -71
  664. package/dist/tvs.dtfusion-BY3AHBL3.js +0 -39
  665. package/dist/tvs.dtsnvindel-UM5LQ4FR.js +0 -39
  666. package/dist/tvs.dtsv-H7ZVHLS5.js +0 -39
  667. package/dist/tvs.numeric-66FP6RRH.js +0 -21
  668. package/dist/tvs.samplelst-Q5ECTZOY.js +0 -103
  669. package/dist/tvs.termCollection-FYNMKZTR.js +0 -158
  670. package/dist/violin-EGWLAJVM.js +0 -45
  671. package/dist/violin.integration.spec-3P4TYHBR.js +0 -1424
  672. package/dist/violin.interactivity-VWDR4LYB.js +0 -37
  673. package/dist/violin.renderer-WWTU6J7X.js +0 -39
  674. package/dist/vocabulary-JG4ZITOH.js +0 -40
  675. /package/dist/{2dmaf-DTWWXOZC.js.map → 2dmaf-6YIEXAIG.js.map} +0 -0
  676. /package/dist/{AIProjectAdmin-BCYIWOXD.js.map → AIProjectAdmin-5K5NIQNT.js.map} +0 -0
  677. /package/dist/{AppHeader-H3L2MRWP.js.map → AppHeader-4SN5M6SZ.js.map} +0 -0
  678. /package/dist/{BoxPlot-INZ6IN3V.js.map → BoxPlot-DBJA6TQF.js.map} +0 -0
  679. /package/dist/{CorrelationVolcano-AK3XW4ZH.js.map → CorrelationVolcano-MDMTMTT5.js.map} +0 -0
  680. /package/dist/{DE-IBSFUKNG.js.map → DE-S5AFNI4I.js.map} +0 -0
  681. /package/dist/{DEinput-H4GMQWDY.js.map → DEinput-XVBBA74N.js.map} +0 -0
  682. /package/dist/{Disco-5PXXMGGQ.js.map → Disco-VV7FQ7WW.js.map} +0 -0
  683. /package/dist/{Disco.UI-23LOT2U6.js.map → Disco.UI-JDJFJFEY.js.map} +0 -0
  684. /package/dist/{DmrPlot-PBCU2XNF.js.map → DmrPlot-XOG67W74.js.map} +0 -0
  685. /package/dist/{GB-HIEPWNPV.js.map → GB-K3AWZQFF.js.map} +0 -0
  686. /package/dist/{GeneExpInput-A4JNX7PU.js.map → GeneExpInput-Y7MDS2CA.js.map} +0 -0
  687. /package/dist/{HicApp-IDH2A4BC.js.map → HicApp-53OTZ3YU.js.map} +0 -0
  688. /package/dist/{NumBinaryEditor-CZ54X7J3.js.map → NumBinaryEditor-SB4YR3JM.js.map} +0 -0
  689. /package/dist/{NumBinaryEditor.unit.spec-QLBRM7MJ.js.map → NumBinaryEditor.unit.spec-V2W2OZYP.js.map} +0 -0
  690. /package/dist/{NumContEditor-Z5MGLQ2I.js.map → NumContEditor-RZZBM7PR.js.map} +0 -0
  691. /package/dist/{NumContEditor.unit.spec-TR7D7ULV.js.map → NumContEditor.unit.spec-GAAW3ZZN.js.map} +0 -0
  692. /package/dist/{NumCustomBinEditor-B7JID42Y.js.map → NumCustomBinEditor-GFCGPRPI.js.map} +0 -0
  693. /package/dist/{NumCustomBinEditor.unit.spec-GZJIVY4K.js.map → NumCustomBinEditor.unit.spec-24MXSO3L.js.map} +0 -0
  694. /package/dist/{NumDiscreteEditor-LWHZ36T6.js.map → NumDiscreteEditor-HAHIOFNC.js.map} +0 -0
  695. /package/dist/{NumDiscreteEditor.unit.spec-QCQCMEWO.js.map → NumDiscreteEditor.unit.spec-JYN2CWSI.js.map} +0 -0
  696. /package/dist/{NumRegularBinEditor-IATRIUKD.js.map → NumRegularBinEditor-7DOE64RB.js.map} +0 -0
  697. /package/dist/{NumRegularBinEditor.unit.spec-J6UTQO76.js.map → NumRegularBinEditor.unit.spec-2WU4GGNT.js.map} +0 -0
  698. /package/dist/{NumSplineEditor-2KMU6SRO.js.map → NumSplineEditor-JLRD5TVX.js.map} +0 -0
  699. /package/dist/{NumSplineEditor.unit.spec-MX7Y4MTD.js.map → NumSplineEditor.unit.spec-LOG7CECJ.js.map} +0 -0
  700. /package/dist/{NumericDensity-JCH7F5FV.js.map → NumericDensity-IDOP7I34.js.map} +0 -0
  701. /package/dist/{NumericDensity.unit.spec-4TKKRKHF.js.map → NumericDensity.unit.spec-HTJQRPVH.js.map} +0 -0
  702. /package/dist/{NumericHandler-7FB3RJM7.js.map → NumericHandler-DWVVGLLB.js.map} +0 -0
  703. /package/dist/{NumericHandler.unit.spec-U6DCADZY.js.map → NumericHandler.unit.spec-BDDFTHOF.js.map} +0 -0
  704. /package/dist/{RunChart2-VQTIVMKM.js.map → RunChart2-PBJ56YX3.js.map} +0 -0
  705. /package/dist/{WsiSamplesPlot-2OAR57YB.js.map → WsiSamplesPlot-FOMPMEXK.js.map} +0 -0
  706. /package/dist/{adSandbox-IKKFYRF7.js.map → adSandbox-SRPPCYYR.js.map} +0 -0
  707. /package/dist/{alphaGenome-WJNFQGGK.js.map → alphaGenome-IS2WAJCK.js.map} +0 -0
  708. /package/dist/{app-UHGTFH6D.js.map → app-GTHYSGWI.js.map} +0 -0
  709. /package/dist/{app-YETYAR45.js.map → app-XEKETNLG.js.map} +0 -0
  710. /package/dist/{bam-S6U7VNJP.js.map → bam-GQBFL6A7.js.map} +0 -0
  711. /package/dist/{barchart-3NJDGHXU.js.map → barchart-AESC4JSX.js.map} +0 -0
  712. /package/dist/{barchart.data-MVVKPDLE.js.map → barchart.data-RE34IC4G.js.map} +0 -0
  713. /package/dist/{barchart.events-WQGA4CGB.js.map → barchart.events-KM4J5ISO.js.map} +0 -0
  714. /package/dist/{barchart.integration.spec-E6CJTWRN.js.map → barchart.integration.spec-DFVSBGO3.js.map} +0 -0
  715. /package/dist/{barchart2-UNHFOYKB.js.map → barchart2-NNTL4RQZ.js.map} +0 -0
  716. /package/dist/{block-2XHZLY26.js.map → block-EHZM3FUX.js.map} +0 -0
  717. /package/dist/{block.init-CMG4V6RB.js.map → block.init-EAEFNNF6.js.map} +0 -0
  718. /package/dist/{block.mds.expressionrank-QX2JOEMV.js.map → block.mds.expressionrank-ZBHA2CFE.js.map} +0 -0
  719. /package/dist/{block.mds.geneboxplot-USVQSDBT.js.map → block.mds.geneboxplot-4ZU3QUAK.js.map} +0 -0
  720. /package/dist/{block.mds.junction-R6GJO75N.js.map → block.mds.junction-PDH55JXO.js.map} +0 -0
  721. /package/dist/{block.mds.svcnv-MRISSDAX.js.map → block.mds.svcnv-QWBU54XQ.js.map} +0 -0
  722. /package/dist/{block.svg-Z5KKZTDB.js.map → block.svg-HUGBYWXU.js.map} +0 -0
  723. /package/dist/{block.tk.aicheck-SOFJYYZX.js.map → block.tk.aicheck-SDCWXQZF.js.map} +0 -0
  724. /package/dist/{block.tk.ase-EHX5FV2Y.js.map → block.tk.ase-HMUTHCJS.js.map} +0 -0
  725. /package/dist/{block.tk.bam-DJS6LODM.js.map → block.tk.bam-Q7B2YQLI.js.map} +0 -0
  726. /package/dist/{block.tk.bedgraphdot-R2YHPXZA.js.map → block.tk.bedgraphdot-QBGBSVHN.js.map} +0 -0
  727. /package/dist/{block.tk.bigwig.ui-VPEEQJLS.js.map → block.tk.bigwig.ui-767A3MUH.js.map} +0 -0
  728. /package/dist/{block.tk.hicstraw-BDYN573B.js.map → block.tk.hicstraw-LEZUZHLF.js.map} +0 -0
  729. /package/dist/{block.tk.junction-BONB4BXU.js.map → block.tk.junction-GQHCZOYR.js.map} +0 -0
  730. /package/dist/{block.tk.junction.textmatrixui-Y5R6KY4N.js.map → block.tk.junction.textmatrixui-D5QUO7KQ.js.map} +0 -0
  731. /package/dist/{block.tk.ld-EGVVSXCB.js.map → block.tk.ld-E3MHZOG5.js.map} +0 -0
  732. /package/dist/{block.tk.menu-4YBMB5JT.js.map → block.tk.menu-XE7PFYGR.js.map} +0 -0
  733. /package/dist/{block.tk.pgv-SBHGL6UH.js.map → block.tk.pgv-MPPMPDED.js.map} +0 -0
  734. /package/dist/{brainImaging-G3WZDYG6.js.map → brainImaging-YQ443NOL.js.map} +0 -0
  735. /package/dist/{chunk-LQQSRNR5.js.map → chunk-26WXJBSR.js.map} +0 -0
  736. /package/dist/{chunk-7UHUOC6F.js.map → chunk-2P6Z7JFC.js.map} +0 -0
  737. /package/dist/{chunk-ENWVV6EU.js.map → chunk-2QQO4RRD.js.map} +0 -0
  738. /package/dist/{chunk-GF4OSOYW.js.map → chunk-37ARSZOI.js.map} +0 -0
  739. /package/dist/{chunk-LY7GD74F.js.map → chunk-42Q53PXE.js.map} +0 -0
  740. /package/dist/{chunk-5SMOOFRW.js.map → chunk-46ASPS5Y.js.map} +0 -0
  741. /package/dist/{chunk-RA4RQYXQ.js.map → chunk-4KPI7PB5.js.map} +0 -0
  742. /package/dist/{chunk-XZ6MGJQ3.js.map → chunk-4MDNMCGZ.js.map} +0 -0
  743. /package/dist/{chunk-4Y444IRJ.js.map → chunk-5IG3E4DT.js.map} +0 -0
  744. /package/dist/{chunk-UVPAZM3G.js.map → chunk-5MIR7IHI.js.map} +0 -0
  745. /package/dist/{chunk-BQJVLXEL.js.map → chunk-5MZVXJVA.js.map} +0 -0
  746. /package/dist/{chunk-SDLRTORS.js.map → chunk-66D5GRS5.js.map} +0 -0
  747. /package/dist/{chunk-IABWKPRK.js.map → chunk-6ATE2TRC.js.map} +0 -0
  748. /package/dist/{chunk-JPKYHLNI.js.map → chunk-6BFR6MK3.js.map} +0 -0
  749. /package/dist/{chunk-C62CSWMV.js.map → chunk-6NJMCO4X.js.map} +0 -0
  750. /package/dist/{chunk-IPDH4FHY.js.map → chunk-6ON5KAMO.js.map} +0 -0
  751. /package/dist/{chunk-ZYBM24FU.js.map → chunk-76GPYMHZ.js.map} +0 -0
  752. /package/dist/{chunk-PSGQWZN4.js.map → chunk-7AAFBFOH.js.map} +0 -0
  753. /package/dist/{chunk-LGUE54VX.js.map → chunk-7OOZHEUC.js.map} +0 -0
  754. /package/dist/{chunk-I7JDV4ZC.js.map → chunk-A4VLWLYF.js.map} +0 -0
  755. /package/dist/{chunk-W6XQR5UL.js.map → chunk-A6EFWGWD.js.map} +0 -0
  756. /package/dist/{chunk-ANGDY7VC.js.map → chunk-ALW5XXVW.js.map} +0 -0
  757. /package/dist/{chunk-RQZJIBIH.js.map → chunk-ANCT2BGO.js.map} +0 -0
  758. /package/dist/{chunk-NYX4B5CO.js.map → chunk-AROMXWCY.js.map} +0 -0
  759. /package/dist/{chunk-UWYCEYML.js.map → chunk-AY4UBGLC.js.map} +0 -0
  760. /package/dist/{chunk-32TTOWY6.js.map → chunk-BMVLR3TM.js.map} +0 -0
  761. /package/dist/{chunk-PL2CM7RY.js.map → chunk-BR7JA2EO.js.map} +0 -0
  762. /package/dist/{chunk-7FKIAQ4K.js.map → chunk-D3HJXMTH.js.map} +0 -0
  763. /package/dist/{chunk-XSA3VIEQ.js.map → chunk-DKUEZ4XD.js.map} +0 -0
  764. /package/dist/{chunk-LSV4Z473.js.map → chunk-DT3MMC5U.js.map} +0 -0
  765. /package/dist/{chunk-UPPBAFUK.js.map → chunk-DYVKN7EE.js.map} +0 -0
  766. /package/dist/{chunk-VB3SRNBK.js.map → chunk-EF37UZY6.js.map} +0 -0
  767. /package/dist/{chunk-ZD47FENE.js.map → chunk-ESXMS7FW.js.map} +0 -0
  768. /package/dist/{chunk-2QULGYVE.js.map → chunk-FUSVXQ6C.js.map} +0 -0
  769. /package/dist/{chunk-GTBL7UHX.js.map → chunk-GXKVAPGP.js.map} +0 -0
  770. /package/dist/{chunk-AQ4OP4GR.js.map → chunk-H4JIENLQ.js.map} +0 -0
  771. /package/dist/{chunk-FA44G3GZ.js.map → chunk-H7YJG4YM.js.map} +0 -0
  772. /package/dist/{chunk-GD7FKXOA.js.map → chunk-I24KPIDD.js.map} +0 -0
  773. /package/dist/{chunk-GQOBT2W7.js.map → chunk-IENFDUWD.js.map} +0 -0
  774. /package/dist/{chunk-43PMSEMV.js.map → chunk-J7BISJTL.js.map} +0 -0
  775. /package/dist/{chunk-XBBUQW52.js.map → chunk-J7KYOSEK.js.map} +0 -0
  776. /package/dist/{chunk-PZLYNNST.js.map → chunk-JGPZ5254.js.map} +0 -0
  777. /package/dist/{chunk-4KSU6NBP.js.map → chunk-JUIPCWAM.js.map} +0 -0
  778. /package/dist/{chunk-5RE3J6HK.js.map → chunk-LO4NMQ7W.js.map} +0 -0
  779. /package/dist/{chunk-RAJZYWFN.js.map → chunk-LSSLS5HV.js.map} +0 -0
  780. /package/dist/{chunk-7NOKTEHK.js.map → chunk-MDLRB3MR.js.map} +0 -0
  781. /package/dist/{chunk-OPPNZXYG.js.map → chunk-MJLKGZ27.js.map} +0 -0
  782. /package/dist/{chunk-KTCW3JA6.js.map → chunk-NL5T3SBK.js.map} +0 -0
  783. /package/dist/{chunk-RSE2FOKW.js.map → chunk-ONAYJVN2.js.map} +0 -0
  784. /package/dist/{chunk-64Z22QAH.js.map → chunk-PSMFOARZ.js.map} +0 -0
  785. /package/dist/{chunk-LTSR7SLO.js.map → chunk-QX3GF2IA.js.map} +0 -0
  786. /package/dist/{chunk-JNOOLCYB.js.map → chunk-QZ2U4BOS.js.map} +0 -0
  787. /package/dist/{chunk-YEMIL6QU.js.map → chunk-RBZBBNLL.js.map} +0 -0
  788. /package/dist/{chunk-P6TPXUMP.js.map → chunk-RZTFQXWV.js.map} +0 -0
  789. /package/dist/{chunk-AQVOYTLS.js.map → chunk-SJC2C77V.js.map} +0 -0
  790. /package/dist/{chunk-2VLGHVOL.js.map → chunk-TVXVP4M6.js.map} +0 -0
  791. /package/dist/{chunk-HE7CD7BD.js.map → chunk-UTDPKDIY.js.map} +0 -0
  792. /package/dist/{chunk-BT4OOYPT.js.map → chunk-UVIUB7QI.js.map} +0 -0
  793. /package/dist/{chunk-CAWDQURD.js.map → chunk-VAUSRBL5.js.map} +0 -0
  794. /package/dist/{chunk-6NMH6WPB.js.map → chunk-WP22GYZ2.js.map} +0 -0
  795. /package/dist/{chunk-4SFX42S7.js.map → chunk-WUNX3VST.js.map} +0 -0
  796. /package/dist/{chunk-BRMASRRS.js.map → chunk-XD4TBJK2.js.map} +0 -0
  797. /package/dist/{chunk-2O6JF76T.js.map → chunk-Y6DSXMPB.js.map} +0 -0
  798. /package/dist/{chunk-ROLVOPVR.js.map → chunk-YBIZRASR.js.map} +0 -0
  799. /package/dist/{chunk-TF4EDNQO.js.map → chunk-YI2YH7ZK.js.map} +0 -0
  800. /package/dist/{chunk-KMQ6GQ3I.js.map → chunk-YLDE3PVC.js.map} +0 -0
  801. /package/dist/{chunk-MHCTLVGE.js.map → chunk-Z736NYXL.js.map} +0 -0
  802. /package/dist/{chunk-LJ4AUJXC.js.map → chunk-ZEJB7CPC.js.map} +0 -0
  803. /package/dist/{chunk-5HOR6JQ2.js.map → chunk-ZGWEBKZ4.js.map} +0 -0
  804. /package/dist/{condition-ARCN26MF.js.map → condition-FSF6ROJV.js.map} +0 -0
  805. /package/dist/{controls-PKWN2JGN.js.map → controls-OPSBFDFZ.js.map} +0 -0
  806. /package/dist/{controls.config-NFRPXFUJ.js.map → controls.config-3QRV5363.js.map} +0 -0
  807. /package/dist/{correlation-DPT6XL2U.js.map → correlation-WLOI7Z35.js.map} +0 -0
  808. /package/dist/{cuminc-M4U7LQD5.js.map → cuminc-G2UGJUUA.js.map} +0 -0
  809. /package/dist/{cuminc.integration.spec-MH4OFYDJ.js.map → cuminc.integration.spec-X5NEZ6S5.js.map} +0 -0
  810. /package/dist/{customdata.inputui-6TAHAMSV.js.map → customdata.inputui-RNW3AO3Z.js.map} +0 -0
  811. /package/dist/{dataDownload-7GZEYSUT.js.map → dataDownload-4U3TGDMH.js.map} +0 -0
  812. /package/dist/{dataDownload.integration.spec-NAIJRFTV.js.map → dataDownload.integration.spec-6FUI2SJ4.js.map} +0 -0
  813. /package/dist/{databrowser.ui-LLXHZ5O6.js.map → databrowser.ui-4GVJVJWG.js.map} +0 -0
  814. /package/dist/{dictionary-MUAURMYE.js.map → dictionary-NSDS7Z4K.js.map} +0 -0
  815. /package/dist/{dnaMethylation-AU5D3U3E.js.map → dnaMethylation-OYQB75LD.js.map} +0 -0
  816. /package/dist/{dnaMethylation.integration.spec-JIDBRA6P.js.map → dnaMethylation.integration.spec-6TTLV34N.js.map} +0 -0
  817. /package/dist/{dofetch-WSYK5OTB.js.map → dofetch-4TO3QMT6.js.map} +0 -0
  818. /package/dist/{e2pca-ICG35YR5.js.map → e2pca-NYBVR6PL.js.map} +0 -0
  819. /package/dist/{ep-CSSSQOUP.js.map → ep-RTDVEA4D.js.map} +0 -0
  820. /package/dist/{expclust.gdc.spec-4WPQUXH4.js.map → expclust.gdc.spec-JVIRESTP.js.map} +0 -0
  821. /package/dist/{facet-JAGILNY6.js.map → facet-OVBF2QMO.js.map} +0 -0
  822. /package/dist/{forms2-IMVDB6AT.js.map → forms2-HTLS54CX.js.map} +0 -0
  823. /package/dist/{gb-36LTYICV.js.map → gb-Y3546HMZ.js.map} +0 -0
  824. /package/dist/{geneExpClustering-CGMENTHI.js.map → geneExpClustering-PH3PWH3K.js.map} +0 -0
  825. /package/dist/{geneExpression-AD2L46J4.js.map → geneExpression-2Z2EV3XM.js.map} +0 -0
  826. /package/dist/{geneExpression-G2FHBDUQ.js.map → geneExpression-6CFXOCGW.js.map} +0 -0
  827. /package/dist/{geneExpression.unit.spec-XWCB7K5L.js.map → geneExpression.unit.spec-WKUTHRHC.js.map} +0 -0
  828. /package/dist/{geneORA-GVHQF7DF.js.map → geneORA-SHLZESLB.js.map} +0 -0
  829. /package/dist/{geneVariant-HE22CH76.js.map → geneVariant-FHZUIFPM.js.map} +0 -0
  830. /package/dist/{geneVariant-SQD5QUFH.js.map → geneVariant-Y7ZUBEOX.js.map} +0 -0
  831. /package/dist/{geneVariant.integration.spec-66XFLDNN.js.map → geneVariant.integration.spec-N7TZUOY3.js.map} +0 -0
  832. /package/dist/{genefusion.ui-TD32NWD4.js.map → genefusion.ui-7PDVZPZ2.js.map} +0 -0
  833. /package/dist/{geneset-NSYPDXS3.js.map → geneset-HLVOGYUI.js.map} +0 -0
  834. /package/dist/{genomeBrowser.spec-CYFONLNQ.js.map → genomeBrowser.spec-7IVIMUR5.js.map} +0 -0
  835. /package/dist/{grin2-3QB57OPH.js.map → grin2-Z5O7254R.js.map} +0 -0
  836. /package/dist/{gsea-RMTU5I3U.js.map → gsea-TFC3MBRW.js.map} +0 -0
  837. /package/dist/{hierCluster-LSQL6PGC.js.map → hierCluster-ERSE5I4I.js.map} +0 -0
  838. /package/dist/{hierCluster-XTEBDEVO.js.map → hierCluster-QQZQU5ZG.js.map} +0 -0
  839. /package/dist/{hierCluster.config-SHXFSPOH.js.map → hierCluster.config-WPINWW37.js.map} +0 -0
  840. /package/dist/{hierCluster.integration.spec-KNMIYWV3.js.map → hierCluster.integration.spec-Y6OHSKPW.js.map} +0 -0
  841. /package/dist/{hierCluster.interactivity-6NAKTUR5.js.map → hierCluster.interactivity-HS3G5QC5.js.map} +0 -0
  842. /package/dist/{hierCluster.renderers-FWOV4Q47.js.map → hierCluster.renderers-W63ZKZTT.js.map} +0 -0
  843. /package/dist/{imagePlot-3IVG4SFN.js.map → imagePlot-QFVN25PM.js.map} +0 -0
  844. /package/dist/{importPlot-HEMDRIVF.js.map → importPlot-MIDM5APH.js.map} +0 -0
  845. /package/dist/{isoformExpression-FJ3GEU6D.js.map → isoformExpression-L4TRNT4A.js.map} +0 -0
  846. /package/dist/{isoformExpression.unit.spec-L7D22UDB.js.map → isoformExpression.unit.spec-QQG323LA.js.map} +0 -0
  847. /package/dist/{launch.adhoc-PDGQF2UP.js.map → launch.adhoc-4NQ6GGGL.js.map} +0 -0
  848. /package/dist/{leftlabel.sample-ZBI4NHCV.js.map → leftlabel.sample-JU7AIPZL.js.map} +0 -0
  849. /package/dist/{legacyDataset-PBCPC5I7.js.map → legacyDataset-TT4CHF23.js.map} +0 -0
  850. /package/dist/{lollipop-K7S6ASFE.js.map → lollipop-JG74M6PJ.js.map} +0 -0
  851. /package/dist/{maf-JEW6PPJB.js.map → maf-PDL2EGHI.js.map} +0 -0
  852. /package/dist/{maftimeline-7URL27MC.js.map → maftimeline-V43NQEEE.js.map} +0 -0
  853. /package/dist/{matrix-6EK5WGIG.js.map → matrix-EB2EFP4S.js.map} +0 -0
  854. /package/dist/{matrix-DKBD5RIL.js.map → matrix-Q57FU5FE.js.map} +0 -0
  855. /package/dist/{matrix.cells-KEIOXJQ7.js.map → matrix.cells-NJIMPD32.js.map} +0 -0
  856. /package/dist/{matrix.config-FGJB4VVM.js.map → matrix.config-GLDEQD3H.js.map} +0 -0
  857. /package/dist/{matrix.data-QGCGFLD7.js.map → matrix.data-6SHAKOQU.js.map} +0 -0
  858. /package/dist/{matrix.groups-HBPLZ2QX.js.map → matrix.groups-MTDEANQA.js.map} +0 -0
  859. /package/dist/{matrix.integration.spec-R4PF67KF.js.map → matrix.integration.spec-JCZ5VQJU.js.map} +0 -0
  860. /package/dist/{matrix.interactivity-M3SY33ET.js.map → matrix.interactivity-SVRNWL6V.js.map} +0 -0
  861. /package/dist/{matrix.layout-H6WQ3ZMW.js.map → matrix.layout-2HREO42N.js.map} +0 -0
  862. /package/dist/{matrix.legend-UCL7HM26.js.map → matrix.legend-QHVKT3MP.js.map} +0 -0
  863. /package/dist/{matrix.renderers-3PPFSS7Z.js.map → matrix.renderers-IYR3ZY6V.js.map} +0 -0
  864. /package/dist/{matrix.serieses-S2TJ3E6P.js.map → matrix.serieses-2VMTQXL2.js.map} +0 -0
  865. /package/dist/{matrix.sort-CFA4UWBJ.js.map → matrix.sort-PWA2RQQR.js.map} +0 -0
  866. /package/dist/{matrix.sort.unit.spec-562VIWDS.js.map → matrix.sort.unit.spec-3OYIPTFY.js.map} +0 -0
  867. /package/dist/{matrix.sorterUi-FT7K5664.js.map → matrix.sorterUi-Y5QLO75X.js.map} +0 -0
  868. /package/dist/{matrix.sorterUi.unit.spec-GAHHUN3K.js.map → matrix.sorterUi.unit.spec-BNEXQHLP.js.map} +0 -0
  869. /package/dist/{mavb-HPW5X55U.js.map → mavb-IZDDU4KK.js.map} +0 -0
  870. /package/dist/{mds.fimo-HSBKLIOX.js.map → mds.fimo-FWBL7JE6.js.map} +0 -0
  871. /package/dist/{mds.samplescatterplot-DE27OMJE.js.map → mds.samplescatterplot-T47C7DJB.js.map} +0 -0
  872. /package/dist/{mds.survivalplot-IW22UGCE.js.map → mds.survivalplot-MFZJCGS6.js.map} +0 -0
  873. /package/dist/{numericDictTermCluster-DOD66G3A.js.map → numericDictTermCluster-I2W67RGA.js.map} +0 -0
  874. /package/dist/{oncomatrix-BZCVCPR4.js.map → oncomatrix-6W7IBAED.js.map} +0 -0
  875. /package/dist/{oncomatrix.spec-IHYCIAP4.js.map → oncomatrix.spec-CEFH5IGH.js.map} +0 -0
  876. /package/dist/{plot.2dvaf-QLOZ54VC.js.map → plot.2dvaf-BN6CFLNU.js.map} +0 -0
  877. /package/dist/{plot.app-XDVDR23J.js.map → plot.app-7EYWUCZV.js.map} +0 -0
  878. /package/dist/{plot.barplot-XOESF7OQ.js.map → plot.barplot-MDIARSQD.js.map} +0 -0
  879. /package/dist/{plot.boxplot-VNOC2CHT.js.map → plot.boxplot-RUHGXC54.js.map} +0 -0
  880. /package/dist/{plot.brainImaging-7ZEOY4UR.js.map → plot.brainImaging-JEE32ZBV.js.map} +0 -0
  881. /package/dist/{plot.disco-6GVDYK7A.js.map → plot.disco-2RPNPX6E.js.map} +0 -0
  882. /package/dist/{plot.dzi-TEFPPPL6.js.map → plot.dzi-7VTYYGGW.js.map} +0 -0
  883. /package/dist/{plot.ssgq-OG4TODLO.js.map → plot.ssgq-FHE5KU5C.js.map} +0 -0
  884. /package/dist/{plot.vaf2cov-VMZRJULA.js.map → plot.vaf2cov-WDJJM5Q4.js.map} +0 -0
  885. /package/dist/{plot.wsi-2CHZZ7AC.js.map → plot.wsi-FQZWHNSF.js.map} +0 -0
  886. /package/dist/{polar-QUYQRQOQ.js.map → polar-M7EGINN4.js.map} +0 -0
  887. /package/dist/{polar2-OXXLAXJC.js.map → polar2-JFYY43K2.js.map} +0 -0
  888. /package/dist/{profile.spec-TI6PRHNJ.js.map → profile.spec-SIOHASOX.js.map} +0 -0
  889. /package/dist/{profileBarchart-GEK77XEB.js.map → profileBarchart-6JLEKVJV.js.map} +0 -0
  890. /package/dist/{profileForms-NR3VNHKM.js.map → profileForms-G6CH73RV.js.map} +0 -0
  891. /package/dist/{profilePlot-GGKO3IW5.js.map → profilePlot-NQYJOBVV.js.map} +0 -0
  892. /package/dist/{profileRadar-MN3LX5ER.js.map → profileRadar-4TNWIXDB.js.map} +0 -0
  893. /package/dist/{profileRadarFacility-3G2HWB2L.js.map → profileRadarFacility-XPH3LCBQ.js.map} +0 -0
  894. /package/dist/{proteomeAbundance-O4BB55O3.js.map → proteomeAbundance-NQ4635NL.js.map} +0 -0
  895. /package/dist/{qualitative-Q3TT73O7.js.map → qualitative-DL4WJG3O.js.map} +0 -0
  896. /package/dist/{radar2-LSD3VPZT.js.map → radar2-YNOQWHBT.js.map} +0 -0
  897. /package/dist/{radarFacility2-LZGIXY7A.js.map → radarFacility2-24UPSI7S.js.map} +0 -0
  898. /package/dist/{regression-J3XDAPAZ.js.map → regression-URAUTLTD.js.map} +0 -0
  899. /package/dist/{regression.inputs-BBZYI5OI.js.map → regression.inputs-UDVOU7FB.js.map} +0 -0
  900. /package/dist/{regression.inputs.term-7BW6XGLG.js.map → regression.inputs.term-BWW6W34R.js.map} +0 -0
  901. /package/dist/{regression.inputs.values.table-DYX2YU4H.js.map → regression.inputs.values.table-UKGIZTXG.js.map} +0 -0
  902. /package/dist/{regression.integration.spec-WLXZYKWW.js.map → regression.integration.spec-EBHQTNA3.js.map} +0 -0
  903. /package/dist/{regression.results-K5Q2N2KW.js.map → regression.results-XTOSWIP6.js.map} +0 -0
  904. /package/dist/{regression.spec-VT7T6KBY.js.map → regression.spec-KG2I53VR.js.map} +0 -0
  905. /package/dist/{report-3D3L573D.js.map → report-KH7SNPVF.js.map} +0 -0
  906. /package/dist/{sampleScatter.spec-6IPJQLM2.js.map → sampleScatter.spec-PIXGS3LG.js.map} +0 -0
  907. /package/dist/{sampleView-5JMFI4HF.js.map → sampleView-TWS6VT55.js.map} +0 -0
  908. /package/dist/{samplelst-SUCB5WOZ.js.map → samplelst-6AB5Y4WR.js.map} +0 -0
  909. /package/dist/{samplematrix-A5SZBKO6.js.map → samplematrix-AJAF555E.js.map} +0 -0
  910. /package/dist/{sc-NAA6ESO6.js.map → sc-PMNYZKXA.js.map} +0 -0
  911. /package/dist/{scatter-EQCN2HYE.js.map → scatter-Q2GH3ZJD.js.map} +0 -0
  912. /package/dist/{scatter.integration.spec-7NXIYS67.js.map → scatter.integration.spec-SMMYKWH3.js.map} +0 -0
  913. /package/dist/{selectGenomeWithTklst-KXODNCY6.js.map → selectGenomeWithTklst-VE4SDYY7.js.map} +0 -0
  914. /package/dist/{singleCellCellType-HMIW76YB.js.map → singleCellCellType-S324GCKW.js.map} +0 -0
  915. /package/dist/{singleCellCellType.unit.spec-ZCZET56X.js.map → singleCellCellType.unit.spec-NXC2GELH.js.map} +0 -0
  916. /package/dist/{singleCellGeneExpression-IUCUHF6R.js.map → singleCellGeneExpression-6H4HRKIA.js.map} +0 -0
  917. /package/dist/{singleCellGeneExpression.unit.spec-J4D6F2N3.js.map → singleCellGeneExpression.unit.spec-HIJXVUWJ.js.map} +0 -0
  918. /package/dist/{singleCellPlot-L6W3MDGG.js.map → singleCellPlot-H7PCZ2DP.js.map} +0 -0
  919. /package/dist/{singlecell-A6ECAAPI.js.map → singlecell-4LH3MQVL.js.map} +0 -0
  920. /package/dist/{singlecell-KBABNXC5.js.map → singlecell-MOSYT3RI.js.map} +0 -0
  921. /package/dist/{snp-RO7ATG6E.js.map → snp-IKLGTD4Q.js.map} +0 -0
  922. /package/dist/{snp.unit.spec-ZJLRGJD4.js.map → snp.unit.spec-GC74MUVM.js.map} +0 -0
  923. /package/dist/{snplocus-N3CU6NRP.js.map → snplocus-RIABFSBQ.js.map} +0 -0
  924. /package/dist/{spliceevent.a53ss.diagram-7PHT4COB.js.map → spliceevent.a53ss.diagram-4E2IYYHL.js.map} +0 -0
  925. /package/dist/{spliceevent.exonskip.diagram-3CZTY6QD.js.map → spliceevent.exonskip.diagram-C56R6XLQ.js.map} +0 -0
  926. /package/dist/{spliceevent.noeventdiagram-GQE256DT.js.map → spliceevent.noeventdiagram-SIPMAKXI.js.map} +0 -0
  927. /package/dist/{ssGSEA-4I3L5MX2.js.map → ssGSEA-5QNHLSOI.js.map} +0 -0
  928. /package/dist/{ssGSEA.unit.spec-PZCC5YU7.js.map → ssGSEA.unit.spec-KVPN553B.js.map} +0 -0
  929. /package/dist/{summarizeCnvGeneexp-ASXUQW56.js.map → summarizeCnvGeneexp-K4VGJSW6.js.map} +0 -0
  930. /package/dist/{summarizeGeneexpSurvival-ULGUOW5V.js.map → summarizeGeneexpSurvival-HGHX65FN.js.map} +0 -0
  931. /package/dist/{summarizeMutationCnv-VDUCIUGM.js.map → summarizeMutationCnv-3K4Z6R2X.js.map} +0 -0
  932. /package/dist/{summarizeMutationDiagnosis-FMAAMCZC.js.map → summarizeMutationDiagnosis-M2MHUPRT.js.map} +0 -0
  933. /package/dist/{summarizeMutationSurvival-GZ4NGDJT.js.map → summarizeMutationSurvival-WVBUP3GA.js.map} +0 -0
  934. /package/dist/{summary-2WNZ6JSB.js.map → summary-RZHZXCU5.js.map} +0 -0
  935. /package/dist/{summary.integration.spec-XPMYB6GM.js.map → summary.integration.spec-FGZP7DY7.js.map} +0 -0
  936. /package/dist/{summaryInput-2UGXEA5C.js.map → summaryInput-UGM7MMCR.js.map} +0 -0
  937. /package/dist/{sunburst-76WCQLTT.js.map → sunburst-L27U7LV7.js.map} +0 -0
  938. /package/dist/{survival-3EAMPHSX.js.map → survival-5ZMEBV6O.js.map} +0 -0
  939. /package/dist/{survival-23IZM4ML.js.map → survival-JWRRGTJT.js.map} +0 -0
  940. /package/dist/{survival.integration.spec-YNVAKBV3.js.map → survival.integration.spec-Z5542I4V.js.map} +0 -0
  941. /package/dist/{svgraph-G2M5LXEP.js.map → svgraph-O6ZVLNNN.js.map} +0 -0
  942. /package/dist/{svmr-BUDBVU34.js.map → svmr-ULFV7OSH.js.map} +0 -0
  943. /package/dist/{table-QJSZ6YFK.js.map → table-CHRQH2GH.js.map} +0 -0
  944. /package/dist/{termCollection-2YAY3RLZ.js.map → termCollection-FAO6ZA6F.js.map} +0 -0
  945. /package/dist/{termCollection-MAMDMEDD.js.map → termCollection-GBXS3GOY.js.map} +0 -0
  946. /package/dist/{termCollection.unit.spec-UY7G2BHG.js.map → termCollection.unit.spec-4WRTOV6E.js.map} +0 -0
  947. /package/dist/{tk-GFGP3F76.js.map → tk-KNUBWRNK.js.map} +0 -0
  948. /package/dist/{tp.ui-OQ757UIE.js.map → tp.ui-2PPYOQYL.js.map} +0 -0
  949. /package/dist/{tvs.density-BJK23JYJ.js.map → tvs.density-BZ5SKDQS.js.map} +0 -0
  950. /package/dist/{tvs.dt-TOYEFKNT.js.map → tvs.dt-TDNSTGQR.js.map} +0 -0
  951. /package/dist/{tvs.dtcnv.categorical-EO2VLFL2.js.map → tvs.dtcnv.categorical-P2IGIE4I.js.map} +0 -0
  952. /package/dist/{tvs.dtcnv.continuous-ZAHTKZ4Y.js.map → tvs.dtcnv.continuous-2XUCRBDR.js.map} +0 -0
  953. /package/dist/{tvs.dtfusion-BY3AHBL3.js.map → tvs.dtfusion-PRHZVMOG.js.map} +0 -0
  954. /package/dist/{tvs.dtsnvindel-UM5LQ4FR.js.map → tvs.dtsnvindel-KGKBW5JS.js.map} +0 -0
  955. /package/dist/{tvs.dtsv-H7ZVHLS5.js.map → tvs.dtsv-M3CY5TZF.js.map} +0 -0
  956. /package/dist/{tvs.numeric-66FP6RRH.js.map → tvs.numeric-W74JCC5P.js.map} +0 -0
  957. /package/dist/{tvs.samplelst-Q5ECTZOY.js.map → tvs.samplelst-BTWFBBAN.js.map} +0 -0
  958. /package/dist/{tvs.termCollection-FYNMKZTR.js.map → tvs.termCollection-Y64QIKOA.js.map} +0 -0
  959. /package/dist/{violin-EGWLAJVM.js.map → violin-3LLHHV3L.js.map} +0 -0
  960. /package/dist/{violin.integration.spec-3P4TYHBR.js.map → violin.integration.spec-6NF5FDLQ.js.map} +0 -0
  961. /package/dist/{violin.interactivity-VWDR4LYB.js.map → violin.interactivity-W2AKZ24D.js.map} +0 -0
  962. /package/dist/{violin.renderer-WWTU6J7X.js.map → violin.renderer-CRFYYZRI.js.map} +0 -0
  963. /package/dist/{vocabulary-JG4ZITOH.js.map → vocabulary-AUJOAVYS.js.map} +0 -0
@@ -0,0 +1,3841 @@
1
+ import {
2
+ appear2 as appear,
3
+ axisstyle,
4
+ bulk_badline,
5
+ colorbgleft,
6
+ colorbgright,
7
+ colorctx,
8
+ colorinframe,
9
+ coloroutframe,
10
+ disappear2 as disappear,
11
+ export_data,
12
+ font,
13
+ make_table_2col,
14
+ newpane,
15
+ sayerror
16
+ } from "./chunk-2XPDA6NL.js";
17
+ import {
18
+ genomic2gm
19
+ } from "./chunk-HJ6L54YS.js";
20
+ import "./chunk-LSEFWW72.js";
21
+ import "./chunk-GHWHLSUX.js";
22
+ import {
23
+ Menu
24
+ } from "./chunk-HYOEWQ5P.js";
25
+ import "./chunk-HBW42TDT.js";
26
+ import "./chunk-G6O3URDN.js";
27
+ import "./chunk-FN5XPUPH.js";
28
+ import "./chunk-KWM6B3NL.js";
29
+ import "./chunk-UCLS2SVB.js";
30
+ import "./chunk-AY4UBGLC.js";
31
+ import "./chunk-2P6Z7JFC.js";
32
+ import "./chunk-MYWJQRTD.js";
33
+ import "./chunk-MVTCBVSX.js";
34
+ import "./chunk-B43MTEYB.js";
35
+ import "./chunk-2T7VYQLY.js";
36
+ import "./chunk-FDK4UJMN.js";
37
+ import {
38
+ bplen,
39
+ dtcloss,
40
+ dtfusionrna,
41
+ dtitd,
42
+ dtnloss,
43
+ mclasscloss,
44
+ mclassfusionrna,
45
+ mclassitd,
46
+ mclassnloss
47
+ } from "./chunk-X7GDCYND.js";
48
+ import "./chunk-SJC2C77V.js";
49
+ import "./chunk-C3SYSMNE.js";
50
+ import "./chunk-KSGA62R2.js";
51
+ import {
52
+ axisTop
53
+ } from "./chunk-LOZEKOES.js";
54
+ import "./chunk-TOU7EVFQ.js";
55
+ import {
56
+ linear
57
+ } from "./chunk-OAWQ6LOO.js";
58
+ import "./chunk-NMBIT4IK.js";
59
+ import "./chunk-KYBIQBXE.js";
60
+ import {
61
+ select_default
62
+ } from "./chunk-I6Y4O3RR.js";
63
+ import "./chunk-OMR2DT66.js";
64
+ import "./chunk-DQC5FFGV.js";
65
+ import "./chunk-HFNDKYVF.js";
66
+
67
+ // src/svmr.unload.js
68
+ function svmr_export_json(svmr, hqonly) {
69
+ var rows = [];
70
+ for (const sample of svmr.samples) {
71
+ for (const egg of sample.egglst) {
72
+ for (const eg of egg.lst) {
73
+ if (eg.ismsg) {
74
+ const lst = eg.lst.map((evt) => evt.lst[0]);
75
+ if (hqonly) {
76
+ let hashq = false;
77
+ for (const i of lst) {
78
+ if (i.rating == "Major") hashq = true;
79
+ }
80
+ if (hashq) {
81
+ rows.push(lst);
82
+ }
83
+ } else {
84
+ rows.push(lst);
85
+ }
86
+ } else {
87
+ for (const evt of eg.lst) {
88
+ for (const p of evt.lst) {
89
+ if (hqonly) {
90
+ if (p.rating == "Major") rows.push([p]);
91
+ } else {
92
+ rows.push([p]);
93
+ }
94
+ }
95
+ }
96
+ }
97
+ }
98
+ }
99
+ }
100
+ const lines = [], e_itd = [], e_nloss = [], e_closs = [];
101
+ for (const row of rows) {
102
+ if (row.length == 1 && row[0].usepair) {
103
+ const p = row[0];
104
+ if (p.isitd) {
105
+ const u = p.usepair;
106
+ const gm = svmr.genome.isoformmatch(u.a.isoform, p.chrA, p.posA);
107
+ if (!gm) {
108
+ e_itd.push(p.sample + " " + p.geneA + " ITD (" + p.rating + "): no gene model found for " + u.a.isoform);
109
+ continue;
110
+ }
111
+ const exonbp1 = genomic2gm(p.posA, gm).rnapos;
112
+ const exonbp2 = genomic2gm(p.posB, gm).rnapos;
113
+ if (exonbp1 <= exonbp2) {
114
+ e_itd.push(p.sample + " " + p.geneA + " ITD (" + p.rating + "): negative duplication length");
115
+ continue;
116
+ }
117
+ const itd = {
118
+ typecode: dtitd,
119
+ gene: p.geneA,
120
+ isoform: u.a.isoform,
121
+ rating: p.rating,
122
+ score: p.score,
123
+ functioneffect: p.functioneffect,
124
+ rnaposition: exonbp2,
125
+ rnaduplength: exonbp1 - exonbp2 + 1,
126
+ a: {
127
+ chr: p.chrA,
128
+ position: p.posA,
129
+ strand: p.ortA,
130
+ ratio: p.ratioA,
131
+ chimericreads: p.readsA,
132
+ totalreads: p.totalreadsA,
133
+ match: p.matchA,
134
+ repeat: p.repeatA
135
+ },
136
+ b: {
137
+ chr: p.chrB,
138
+ position: p.posB,
139
+ strand: p.ortB,
140
+ ratio: p.ratioB,
141
+ chimericreads: p.readsB,
142
+ totalreads: p.totalreadsB,
143
+ match: p.matchB,
144
+ repeat: p.repeatB
145
+ }
146
+ };
147
+ let aalen = 0, bplen2 = 0;
148
+ if (u.a.contigaa && u.b.contigaa) {
149
+ aalen = u.b.contigaa - u.a.contigaa - 1;
150
+ }
151
+ if (u.a.contigbp && u.b.contigbp) {
152
+ bplen2 = u.b.contigbp - u.a.contigbp - 1;
153
+ }
154
+ if (aalen > 0) {
155
+ itd.interstitial = { aalen };
156
+ }
157
+ if (bplen2 > 0) {
158
+ if (!itd.interstitial) itd.interstitial = {};
159
+ itd.interstitial.bplen = bplen2;
160
+ }
161
+ lines.push([p.sample, p.geneA, p.usepair.a.isoform, JSON.stringify(itd)]);
162
+ continue;
163
+ }
164
+ if (p.isnloss) {
165
+ const p2 = p.usepair.b;
166
+ if (!p2.isoform) {
167
+ e_nloss.push(p.sample + " " + p.geneB + " NLoss (" + p.rating + "): no isoform");
168
+ continue;
169
+ }
170
+ const gm = svmr.genome.isoformmatch(p2.isoform, p.chrB, p.posB);
171
+ if (!gm) {
172
+ e_nloss.push(p.sample + " " + p.geneB + " NLoss (" + p.rating + "): no gene model found for " + p2.isoform);
173
+ continue;
174
+ }
175
+ const exonbp = genomic2gm(p.posB, gm).rnapos;
176
+ const pp = {
177
+ typecode: dtnloss,
178
+ gene: p.geneB,
179
+ isoform: p2.isoform,
180
+ rating: p.rating,
181
+ score: p.score,
182
+ functioneffect: p.functioneffect,
183
+ rnaposition: exonbp,
184
+ chr: p.chrB,
185
+ position: p.posB,
186
+ strand: p.ortB,
187
+ ratio: p.ratioB,
188
+ chimericreads: p.readsB,
189
+ match: p.matchB,
190
+ repeat: p.repeatB,
191
+ partner: {
192
+ chr: p.chrA,
193
+ position: p.posA,
194
+ strand: p.ortA,
195
+ ratio: p.ratioA,
196
+ chimericreads: p.readsA,
197
+ match: p.matchA,
198
+ repeat: p.repeatA
199
+ }
200
+ };
201
+ if (p.geneA) {
202
+ pp.partner.gene = p.geneA;
203
+ }
204
+ if (p.usepair.a.isoform) {
205
+ pp.partner.isoform = p.usepair.a.isoform;
206
+ }
207
+ lines.push([p.sample, p.geneB, p2.isoform, JSON.stringify(pp)]);
208
+ continue;
209
+ }
210
+ if (p.iscloss) {
211
+ const p2 = p.usepair.a;
212
+ if (!p2.isoform) {
213
+ e_nloss.push(p.sample + " " + p.geneA + " CLoss (" + p.rating + "): no isoform");
214
+ continue;
215
+ }
216
+ const gm = svmr.genome.isoformmatch(p2.isoform, p.chrA, p.posA);
217
+ if (!gm) {
218
+ e_nloss.push(p.sample + " " + p.geneA + " CLoss (" + p.rating + "): no gene model found by " + p2.isoform);
219
+ continue;
220
+ }
221
+ const exonbp = genomic2gm(p.posA, gm).rnapos;
222
+ const pp = {
223
+ typecode: dtcloss,
224
+ gene: p.geneA,
225
+ isoform: p2.isoform,
226
+ rating: p.rating,
227
+ score: p.score,
228
+ functioneffect: p.functioneffect,
229
+ rnaposition: exonbp,
230
+ chr: p.chrA,
231
+ position: p.posA,
232
+ strand: p.ortA,
233
+ ratio: p.ratioA,
234
+ chimericreads: p.readsA,
235
+ match: p.matchA,
236
+ repeat: p.repeatA,
237
+ partner: {
238
+ chr: p.chrB,
239
+ position: p.posB,
240
+ strand: p.ortB,
241
+ ratio: p.ratioB,
242
+ chimericreads: p.readsB,
243
+ match: p.matchB,
244
+ repeat: p.repeatB
245
+ }
246
+ };
247
+ if (p.geneB) {
248
+ pp.partner.gene = p.geneB;
249
+ }
250
+ if (p.usepair.b.isoform) {
251
+ pp.partner.isoform = p.usepair.b.isoform;
252
+ }
253
+ lines.push([p.sample, p.geneA, p2.isoform, JSON.stringify(pp)]);
254
+ continue;
255
+ }
256
+ }
257
+ const genes = /* @__PURE__ */ new Set(), isoforms = /* @__PURE__ */ new Set(), cleanup = [];
258
+ for (const p of row) {
259
+ if (p.geneA) genes.add(p.geneA);
260
+ if (p.geneB) genes.add(p.geneB);
261
+ if (p.usepair) {
262
+ if (p.usepair.a.isoform) isoforms.add(p.usepair.a.isoform);
263
+ if (p.usepair.b.isoform) isoforms.add(p.usepair.b.isoform);
264
+ }
265
+ const clean = {
266
+ type: p.type,
267
+ type2: p.type2,
268
+ rating: p.rating,
269
+ score: p.score,
270
+ functioneffect: p.functioneffect,
271
+ a: {
272
+ name: p.geneA,
273
+ chr: p.chrA,
274
+ position: p.posA,
275
+ strand: p.ortA,
276
+ ratio: p.ratioA,
277
+ feature: p.featureA,
278
+ chimericreads: p.readsA,
279
+ contiglen: p.matchA,
280
+ repeatscore: p.repeatA
281
+ },
282
+ b: {
283
+ name: p.geneB,
284
+ chr: p.chrB,
285
+ position: p.posB,
286
+ strand: p.ortB,
287
+ ratio: p.ratioB,
288
+ feature: p.featureB,
289
+ chimericreads: p.readsB,
290
+ contiglen: p.matchB,
291
+ repeatscore: p.repeatB
292
+ }
293
+ };
294
+ if (p.usepair) {
295
+ const u = p.usepair;
296
+ clean.frame = u.frame;
297
+ if (u.a.isoform) {
298
+ clean.a.isoform = u.a.isoform;
299
+ }
300
+ if (u.b.isoform) {
301
+ clean.b.isoform = u.b.isoform;
302
+ }
303
+ let aalen = 0, bplen2 = 0;
304
+ if (u.a.contigaa && u.b.contigaa) {
305
+ aalen = u.b.contigaa - u.a.contigaa - 1;
306
+ }
307
+ if (u.a.contigbp && u.b.contigbp) {
308
+ bplen2 = u.b.contigbp - u.a.contigbp - 1;
309
+ }
310
+ if (aalen > 0) {
311
+ clean.interstitial = { aalen };
312
+ }
313
+ if (bplen2 > 0) {
314
+ if (!clean.interstitial) clean.interstitial = {};
315
+ clean.interstitial.bplen = bplen2;
316
+ }
317
+ }
318
+ cleanup.push(clean);
319
+ }
320
+ const genenames = [...genes];
321
+ const isoformnames = [...isoforms];
322
+ lines.push([
323
+ row[0].sample,
324
+ genenames.length ? genenames.join(",") : "none",
325
+ isoformnames.length ? isoformnames.join(",") : "none",
326
+ JSON.stringify(cleanup)
327
+ ]);
328
+ }
329
+ if (e_itd.length) {
330
+ svmr.err(e_itd.join("<br>"));
331
+ }
332
+ if (e_nloss.length) {
333
+ svmr.err(e_nloss.join("<br>"));
334
+ }
335
+ if (e_closs.length) {
336
+ svmr.err(e_closs.join("<br>"));
337
+ }
338
+ export_data("Fusion data from " + svmr.filename, [{ text: lines.map((i) => i.join(" ")).join("\n") }]);
339
+ }
340
+ function svmr_2pp(svmr, hqonly) {
341
+ const rows = [];
342
+ for (const sample of svmr.samples) {
343
+ for (const egg of sample.egglst) {
344
+ for (const eg of egg.lst) {
345
+ if (eg.ismsg) {
346
+ const lst = eg.lst.map((evt) => evt.lst[0]);
347
+ if (hqonly) {
348
+ let hashq = false;
349
+ for (const i of lst) {
350
+ if (i.rating == "Major") hashq = true;
351
+ }
352
+ if (hashq) {
353
+ rows.push(lst);
354
+ }
355
+ } else {
356
+ rows.push(lst);
357
+ }
358
+ } else {
359
+ for (const evt of eg.lst) {
360
+ for (const p of evt.lst) {
361
+ if (hqonly) {
362
+ if (p.rating == "Major") rows.push([p]);
363
+ } else {
364
+ rows.push([p]);
365
+ }
366
+ }
367
+ }
368
+ }
369
+ }
370
+ }
371
+ }
372
+ const genes = {}, e_itd = [], e_nloss = [], e_closs = [];
373
+ for (const row of rows) {
374
+ if (row.length == 1 && row[0].usepair) {
375
+ const p = row[0];
376
+ if (p.isitd) {
377
+ if (!p.geneA) {
378
+ e_itd.push(p.sample + " ITD (" + p.rating + "): no gene name??");
379
+ continue;
380
+ }
381
+ const u = p.usepair;
382
+ const gm = svmr.genome.isoformmatch(u.a.isoform, p.chrA, p.posA);
383
+ if (!gm) {
384
+ e_itd.push(p.sample + " " + p.geneA + " ITD (" + p.rating + "): no gene model found for " + u.a.isoform);
385
+ continue;
386
+ }
387
+ const exonbp1 = genomic2gm(p.posA, gm).rnapos;
388
+ const exonbp2 = genomic2gm(p.posB, gm).rnapos;
389
+ if (exonbp1 <= exonbp2) {
390
+ e_itd.push(p.sample + " " + p.geneA + " ITD (" + p.rating + "): negative duplication length");
391
+ continue;
392
+ }
393
+ const itd = {
394
+ dt: dtitd,
395
+ class: mclassitd,
396
+ mname: "ITD",
397
+ gene: p.geneA,
398
+ sample: p.sample,
399
+ isoform: u.a.isoform,
400
+ rating: p.rating,
401
+ score: p.score,
402
+ functioneffect: p.functioneffect,
403
+ rnaposition: exonbp2,
404
+ rnaduplength: exonbp1 - exonbp2 + 1,
405
+ a: {
406
+ chr: p.chrA,
407
+ position: p.posA,
408
+ strand: p.ortA,
409
+ ratio: p.ratioA,
410
+ chimericreads: p.readsA,
411
+ totalreads: p.totalreadsA,
412
+ match: p.matchA,
413
+ repeat: p.repeatA
414
+ },
415
+ b: {
416
+ chr: p.chrB,
417
+ position: p.posB,
418
+ strand: p.ortB,
419
+ ratio: p.ratioB,
420
+ chimericreads: p.readsB,
421
+ totalreads: p.totalreadsB,
422
+ match: p.matchB,
423
+ repeat: p.repeatB
424
+ }
425
+ };
426
+ let aalen = 0, bplen2 = 0;
427
+ if (u.a.contigaa && u.b.contigaa) {
428
+ aalen = u.b.contigaa - u.a.contigaa - 1;
429
+ }
430
+ if (u.a.contigbp && u.b.contigbp) {
431
+ bplen2 = u.b.contigbp - u.a.contigbp - 1;
432
+ }
433
+ if (aalen > 0) {
434
+ itd.interstitial = { aalen };
435
+ }
436
+ if (bplen2 > 0) {
437
+ if (!itd.interstitial) itd.interstitial = {};
438
+ itd.interstitial.bplen = bplen2;
439
+ }
440
+ if (!(p.geneA in genes)) {
441
+ genes[p.geneA] = [];
442
+ }
443
+ genes[p.geneA].push(itd);
444
+ continue;
445
+ }
446
+ if (p.isnloss) {
447
+ if (!p.geneB) {
448
+ e_nloss.push(p.sample + " NLoss (" + p.rating + "): no geneB");
449
+ continue;
450
+ }
451
+ const p2 = p.usepair.b;
452
+ if (!p2.isoform) {
453
+ e_nloss.push(p.sample + " " + p.geneB + " NLoss (" + p.rating + "): no isoform");
454
+ continue;
455
+ }
456
+ const gm = svmr.genome.isoformmatch(p2.isoform, p.chrB, p.posB);
457
+ if (!gm) {
458
+ e_nloss.push(p.sample + " " + p.geneB + " NLoss (" + p.rating + "): no gene model found for " + p2.isoform);
459
+ continue;
460
+ }
461
+ const exonbp = genomic2gm(p.posB, gm).rnapos;
462
+ const pp = {
463
+ dt: dtnloss,
464
+ class: mclassnloss,
465
+ mname: "N-loss",
466
+ gene: p.geneB,
467
+ sample: p.sample,
468
+ isoform: p2.isoform,
469
+ rating: p.rating,
470
+ score: p.score,
471
+ functioneffect: p.functioneffect,
472
+ rnaposition: exonbp,
473
+ chr: p.chrB,
474
+ position: p.posB,
475
+ strand: p.ortB,
476
+ ratio: p.ratioB,
477
+ chimericreads: p.readsB,
478
+ match: p.matchB,
479
+ repeat: p.repeatB,
480
+ partner: {
481
+ chr: p.chrA,
482
+ position: p.posA,
483
+ strand: p.ortA,
484
+ ratio: p.ratioA,
485
+ chimericreads: p.readsA,
486
+ match: p.matchA,
487
+ repeat: p.repeatA
488
+ }
489
+ };
490
+ if (p.geneA) {
491
+ pp.partner.gene = p.geneA;
492
+ }
493
+ if (p.usepair.a.isoform) {
494
+ pp.partner.isoform = p.usepair.a.isoform;
495
+ }
496
+ if (!(p.geneB in genes)) {
497
+ genes[p.geneB] = [];
498
+ }
499
+ genes[p.geneB].push(pp);
500
+ continue;
501
+ }
502
+ if (p.iscloss) {
503
+ if (!p.geneA) {
504
+ e_closs.push(p.sample + " CLoss (" + p.rating + "): no geneA");
505
+ continue;
506
+ }
507
+ const p2 = p.usepair.a;
508
+ if (!p2.isoform) {
509
+ e_closs.push(p.sample + " " + p.geneA + " CLoss (" + p.rating + "): no isoform");
510
+ continue;
511
+ }
512
+ const gm = svmr.genome.isoformmatch(p2.isoform, p.chrA, p.posA);
513
+ if (!gm) {
514
+ e_closs.push(p.sample + " " + p.geneA + " CLoss (" + p.rating + "): no gene model found by " + p2.isoform);
515
+ continue;
516
+ }
517
+ const exonbp = genomic2gm(p.posA, gm).rnapos;
518
+ const pp = {
519
+ dt: dtcloss,
520
+ class: mclasscloss,
521
+ mname: "C-loss",
522
+ gene: p.geneA,
523
+ sample: p.sample,
524
+ isoform: p2.isoform,
525
+ rating: p.rating,
526
+ score: p.score,
527
+ functioneffect: p.functioneffect,
528
+ rnaposition: exonbp,
529
+ chr: p.chrA,
530
+ position: p.posA,
531
+ strand: p.ortA,
532
+ ratio: p.ratioA,
533
+ chimericreads: p.readsA,
534
+ match: p.matchA,
535
+ repeat: p.repeatA,
536
+ partner: {
537
+ chr: p.chrB,
538
+ position: p.posB,
539
+ strand: p.ortB,
540
+ ratio: p.ratioB,
541
+ chimericreads: p.readsB,
542
+ match: p.matchB,
543
+ repeat: p.repeatB
544
+ }
545
+ };
546
+ if (p.geneB) {
547
+ pp.partner.gene = p.geneB;
548
+ }
549
+ if (p.usepair.b.isoform) {
550
+ pp.partner.isoform = p.usepair.b.isoform;
551
+ }
552
+ if (!(p.geneA in genes)) {
553
+ genes[p.geneA] = [];
554
+ }
555
+ genes[p.geneA].push(pp);
556
+ continue;
557
+ }
558
+ }
559
+ const gene2isoform = /* @__PURE__ */ new Map();
560
+ const cleanup = [];
561
+ for (const p of row) {
562
+ if (p.geneA) {
563
+ if (!gene2isoform.has(p.geneA)) gene2isoform.set(p.geneA, /* @__PURE__ */ new Set());
564
+ if (p.usepair) {
565
+ if (p.usepair.a.isoform) gene2isoform.get(p.geneA).add(p.usepair.a.isoform);
566
+ }
567
+ }
568
+ if (p.geneB) {
569
+ if (!gene2isoform.has(p.geneB)) gene2isoform.set(p.geneB, /* @__PURE__ */ new Set());
570
+ if (p.usepair) {
571
+ if (p.usepair.b.isoform) gene2isoform.get(p.geneB).add(p.usepair.b.isoform);
572
+ }
573
+ }
574
+ const clean = {
575
+ type: p.type,
576
+ type2: p.type2,
577
+ rating: p.rating,
578
+ score: p.score,
579
+ functioneffect: p.functioneffect,
580
+ a: {
581
+ name: p.geneA,
582
+ chr: p.chrA,
583
+ position: p.posA,
584
+ strand: p.ortA,
585
+ ratio: p.ratioA,
586
+ feature: p.featureA,
587
+ chimericreads: p.readsA,
588
+ contiglen: p.matchA,
589
+ repeatscore: p.repeatA
590
+ },
591
+ b: {
592
+ name: p.geneB,
593
+ chr: p.chrB,
594
+ position: p.posB,
595
+ strand: p.ortB,
596
+ ratio: p.ratioB,
597
+ feature: p.featureB,
598
+ chimericreads: p.readsB,
599
+ contiglen: p.matchB,
600
+ repeatscore: p.repeatB
601
+ }
602
+ };
603
+ if (p.usepair) {
604
+ const u = p.usepair;
605
+ clean.frame = u.frame;
606
+ if (u.a.isoform) {
607
+ clean.a.isoform = u.a.isoform;
608
+ }
609
+ if (u.b.isoform) {
610
+ clean.b.isoform = u.b.isoform;
611
+ }
612
+ let aalen = 0, bplen2 = 0;
613
+ if (u.a.contigaa && u.b.contigaa) {
614
+ aalen = u.b.contigaa - u.a.contigaa - 1;
615
+ }
616
+ if (u.a.contigbp && u.b.contigbp) {
617
+ bplen2 = u.b.contigbp - u.a.contigbp - 1;
618
+ }
619
+ if (aalen > 0) {
620
+ clean.interstitial = { aalen };
621
+ }
622
+ if (bplen2 > 0) {
623
+ if (!clean.interstitial) clean.interstitial = {};
624
+ clean.interstitial.bplen = bplen2;
625
+ }
626
+ }
627
+ cleanup.push(clean);
628
+ }
629
+ for (const [genename, iset] of gene2isoform) {
630
+ for (const isoform of iset) {
631
+ if (!(genename in genes)) {
632
+ genes[genename] = [];
633
+ }
634
+ const pp = {
635
+ dt: dtfusionrna,
636
+ class: mclassfusionrna,
637
+ sample: row[0].sample,
638
+ isoform,
639
+ pairlst: duplicate(cleanup)
640
+ };
641
+ for (const i of cleanup) {
642
+ if (i.functioneffect) {
643
+ pp.functioneffect = i.functioneffect;
644
+ }
645
+ }
646
+ genes[genename].push(pp);
647
+ }
648
+ }
649
+ }
650
+ if (e_itd.length) {
651
+ svmr.err(e_itd.join("<br>"));
652
+ }
653
+ if (e_nloss.length) {
654
+ svmr.err(e_nloss.join("<br>"));
655
+ }
656
+ if (e_closs.length) {
657
+ svmr.err(e_closs.join("<br>"));
658
+ }
659
+ let genecount = 0, genesup = {};
660
+ for (const k in genes) {
661
+ genecount++;
662
+ genesup[k.toUpperCase()] = genes[k];
663
+ }
664
+ if (genecount == 0) {
665
+ alert("No data can be added.");
666
+ return;
667
+ }
668
+ let ds = null;
669
+ for (const n in svmr.genome.datasets) {
670
+ if (svmr.genome.datasets[n].svmrid == svmr.id) {
671
+ ds = svmr.genome.datasets[n];
672
+ break;
673
+ }
674
+ }
675
+ if (ds) {
676
+ ds.bulkdata = genesup;
677
+ } else {
678
+ ds = {
679
+ label: svmr.filename,
680
+ svmrid: svmr.id,
681
+ bulkdata: genesup
682
+ };
683
+ svmr.genome.datasets[svmr.filename] = ds;
684
+ }
685
+ if (svmr.cohort) {
686
+ svmr.cohortpane.pane.remove();
687
+ } else {
688
+ svmr.cohort = {
689
+ name: svmr.filename,
690
+ genome: svmr.genome,
691
+ show_genetable: 1,
692
+ jwt: svmr.jwt,
693
+ dsset: {}
694
+ };
695
+ svmr.cohort.dsset[svmr.filename] = ds;
696
+ }
697
+ const pane = newpane({ x: 200, y: 200 });
698
+ import("./tp.ui-2PPYOQYL.js").then((p) => {
699
+ p.default(svmr.cohort, pane.body, svmr.hostURL);
700
+ svmr.cohortpane = pane;
701
+ });
702
+ }
703
+ function svmr_export_text(svmr, hqonly) {
704
+ const rows = [];
705
+ const headerlst = svmr.atlst.map((i) => i.label);
706
+ headerlst.push("transcript_nbr");
707
+ headerlst.push("breakpoint_nbr");
708
+ headerlst.push("functionalClass");
709
+ for (const sample of svmr.samples) {
710
+ const whole = [];
711
+ for (const egg of sample.egglst) {
712
+ for (const eg of egg.lst) {
713
+ if (eg.ismsg) {
714
+ const lst = eg.lst.map((evt) => evt.lst[0]);
715
+ if (hqonly) {
716
+ let hashq = false;
717
+ for (const i of lst) {
718
+ if (i.rating == "Major") hashq = true;
719
+ }
720
+ if (hashq) {
721
+ whole.push(lst);
722
+ }
723
+ } else {
724
+ whole.push(lst);
725
+ }
726
+ } else {
727
+ for (const evt of eg.lst) {
728
+ for (const p of evt.lst) {
729
+ if (hqonly) {
730
+ if (p.rating == "Major") whole.push([p]);
731
+ } else {
732
+ whole.push([p]);
733
+ }
734
+ }
735
+ }
736
+ }
737
+ }
738
+ }
739
+ for (let gid = 0; gid < whole.length; gid++) {
740
+ for (let prodid = 0; prodid < whole[gid].length; prodid++) {
741
+ let prod = whole[gid][prodid];
742
+ const frame = [], a_isoform = [], a_codon = [], a_exon = [], a_anchor = [], a_contigaa = [], a_contigbp = [], b_isoform = [], b_codon = [], b_exon = [], b_anchor = [], b_contigaa = [], b_contigbp = [];
743
+ for (const p of prod.pairs) {
744
+ frame.push(p.frame);
745
+ a_isoform.push(p.a.isoform);
746
+ b_isoform.push(p.b.isoform);
747
+ let v = p.a.codon;
748
+ a_codon.push(Number.isNaN(v) ? "" : v);
749
+ v = p.b.codon;
750
+ b_codon.push(Number.isNaN(v) ? "" : v);
751
+ v = p.a.exon;
752
+ a_exon.push(Number.isNaN(v) ? "" : v);
753
+ v = p.b.exon;
754
+ b_exon.push(Number.isNaN(v) ? "" : v);
755
+ a_anchor.push(p.a.anchor ? p.a.anchor : "");
756
+ b_anchor.push(p.b.anchor ? p.b.anchor : "");
757
+ v = p.a.contigaa;
758
+ a_contigaa.push(v == void 0 ? "" : v);
759
+ v = p.b.contigaa;
760
+ b_contigaa.push(v == void 0 ? "" : v);
761
+ v = p.a.contigbp;
762
+ a_contigbp.push(v == void 0 ? "" : v);
763
+ v = p.b.contigbp;
764
+ b_contigbp.push(v == void 0 ? "" : v);
765
+ }
766
+ const row = [];
767
+ for (const i of svmr.atlst) {
768
+ switch (i.key) {
769
+ case "lstframe":
770
+ row.push(frame.join(","));
771
+ break;
772
+ // A
773
+ case "lstisoforma":
774
+ row.push(a_isoform.join(","));
775
+ break;
776
+ case "lstisoformacodon":
777
+ row.push(a_codon.join(","));
778
+ break;
779
+ case "lstisoformaexon":
780
+ row.push(a_exon.join(","));
781
+ break;
782
+ case "lstisoformaanchor":
783
+ row.push(a_anchor.join(","));
784
+ break;
785
+ case "lstcontigaaA":
786
+ row.push(a_contigaa.join(","));
787
+ break;
788
+ case "lstcontigbpA":
789
+ row.push(a_contigbp.join(","));
790
+ break;
791
+ // B
792
+ case "lstisoformb":
793
+ row.push(b_isoform.join(","));
794
+ break;
795
+ case "lstisoformbcodon":
796
+ row.push(b_codon.join(","));
797
+ break;
798
+ case "lstisoformbexon":
799
+ row.push(b_exon.join(","));
800
+ break;
801
+ case "lstisoformbanchor":
802
+ row.push(b_anchor.join(","));
803
+ break;
804
+ case "lstcontigaaB":
805
+ row.push(b_contigaa.join(","));
806
+ break;
807
+ case "lstcontigbpB":
808
+ row.push(b_contigbp.join(","));
809
+ break;
810
+ default:
811
+ row.push(prod[i.key]);
812
+ }
813
+ }
814
+ row.push(gid + 1);
815
+ row.push(prodid + 1);
816
+ row.push(prod.functioneffect ? prod.functioneffect : "");
817
+ rows.push(row);
818
+ }
819
+ }
820
+ }
821
+ export_data("Fusion data from " + svmr.filename, [{ text: headerlst.join(" ") + "\n" + rows.join("\n") }]);
822
+ }
823
+ function duplicate(i) {
824
+ const lst = [];
825
+ for (const j of i) {
826
+ const k = {};
827
+ for (const n in j) k[n] = j[n];
828
+ k.a = {};
829
+ for (const n in j.a) k.a[n] = j.a[n];
830
+ k.b = {};
831
+ for (const n in j.b) k.b[n] = j.b[n];
832
+ if (j.interstitial) {
833
+ k.interstitial = {};
834
+ for (const n in j.interstitial) k.interstitial[n] = j.interstitial[n];
835
+ }
836
+ lst.push(k);
837
+ }
838
+ return lst;
839
+ }
840
+
841
+ // src/svmr.c.js
842
+ var genomelimit = 1e4;
843
+ var knownprod_c = "#A702C4";
844
+ var tip = new Menu();
845
+ var svmr_c_default = class {
846
+ constructor(genome, atlst, items, filename, holder, hostURL, jwt) {
847
+ window.svmr = this;
848
+ this.hostURL = hostURL;
849
+ this.jwt = jwt;
850
+ this.id = Math.random();
851
+ this.items = items;
852
+ this.genome = genome;
853
+ this.filename = filename;
854
+ this.atlst = atlst;
855
+ this.cf_repeat = 0.7, this.cf_reads = 2;
856
+ this.cf_match = 40;
857
+ this.cf_ratio = 0.01;
858
+ this.expression = {};
859
+ this.samples = [];
860
+ this.genelst = [];
861
+ this.elab2sample = {};
862
+ if (!holder) {
863
+ const pane = newpane({ x: 100, y: 100, toshrink: true });
864
+ pane.header.append("span").style("color", "#858585").style("font-size", ".7em").html("Fusion Editor&nbsp;");
865
+ pane.header.append("span").text(filename);
866
+ holder = pane.body;
867
+ }
868
+ this.holder = holder;
869
+ this.errdiv = holder.append("div").style("width", "500px").style("margin", "10px");
870
+ const butrow = holder.append("div").style("margin", "20px").style("padding", "0px");
871
+ this.buttgene = butrow.append("button").text("Loading genes").on("click", () => {
872
+ if (genediv.style("display") == "none") {
873
+ appear(genediv);
874
+ } else {
875
+ disappear(genediv);
876
+ }
877
+ });
878
+ this.buttsample = butrow.append("button").text("Loading samples").on("click", () => {
879
+ if (this.ul.style("display") == "none") {
880
+ appear(this.ul);
881
+ } else {
882
+ disappear(this.ul);
883
+ }
884
+ });
885
+ butrow.append("button").text("Gene expression").on("click", () => {
886
+ if (this.expression.div.style("display") == "none") {
887
+ appear(this.expression.div);
888
+ } else {
889
+ disappear(this.expression.div);
890
+ }
891
+ });
892
+ butrow.append("button").text("Parameter cutoff").on("click", () => {
893
+ if (cutoffdiv.style("display") == "none") {
894
+ appear(cutoffdiv);
895
+ } else {
896
+ disappear(cutoffdiv);
897
+ }
898
+ });
899
+ butrow.append("button").text("Legend").on("click", () => {
900
+ if (legenddiv.style("display") == "none") {
901
+ appear(legenddiv);
902
+ } else {
903
+ disappear(legenddiv);
904
+ }
905
+ });
906
+ butrow.append("button").style("margin-right", "20px").text("Export data").on("click", (event) => {
907
+ let single_hq = 0, multi_hq = 0, single_nhq = 0, multi_nhq = 0, itd_hq = 0, itd_nhq = 0, trunc_hq = 0, trunc_nhq = 0;
908
+ for (const sample of this.samples) {
909
+ for (const egg of sample.egglst) {
910
+ for (const eg of egg.lst) {
911
+ if (eg.ismsg) {
912
+ let hashq = false;
913
+ for (const i of eg.lst) {
914
+ if (i.rating == "Major") hashq = true;
915
+ }
916
+ if (hashq) multi_hq++;
917
+ else multi_nhq++;
918
+ } else {
919
+ for (const evt of eg.lst) {
920
+ for (const p of evt.lst) {
921
+ if (p.rating == "Major") {
922
+ if (p.isitd) itd_hq++;
923
+ else if (p.iscloss || p.isnloss) trunc_hq++;
924
+ else single_hq++;
925
+ } else {
926
+ if (p.isitd) itd_nhq++;
927
+ else if (p.iscloss || p.isnloss) trunc_nhq++;
928
+ else single_nhq++;
929
+ }
930
+ }
931
+ }
932
+ }
933
+ }
934
+ }
935
+ }
936
+ const d02 = tip.clear().showunder(event.target).d.append("div");
937
+ const table = d02.append("table").style("border-spacing", "10px").style("border-collapse", "separate");
938
+ let tr = table.append("tr").style("color", "#858585");
939
+ tr.append("td");
940
+ tr.append("td").text("2-gene fusion");
941
+ tr.append("td").text("Multi-gene fusion");
942
+ tr.append("td").text("ITD");
943
+ tr.append("td").text("Truncation");
944
+ tr = table.append("tr");
945
+ tr.append("td").text("Major").style("color", "#858585").style("text-align", "right");
946
+ tr.append("td").text(single_hq);
947
+ tr.append("td").text(multi_hq);
948
+ tr.append("td").text(itd_hq);
949
+ tr.append("td").text(trunc_hq);
950
+ tr = table.append("tr");
951
+ tr.append("td").text("not Major").style("color", "#858585").style("text-align", "right");
952
+ tr.append("td").text(single_nhq);
953
+ tr.append("td").text(multi_nhq);
954
+ tr.append("td").text(itd_nhq);
955
+ tr.append("td").text(trunc_nhq);
956
+ let dd = d02.append("div").style("margin", "10px").text('Export fusions labeled as "Major"');
957
+ dd.append("button").style("margin", "10px").text("Tabular format").on("click", () => svmr_export_text(this, true));
958
+ dd.append("button").style("margin", "10px").text("JSON format").on("click", () => svmr_export_json(this, true));
959
+ dd.append("button").style("margin", "10px").text("View in ProteinPaint").on("click", () => svmr_2pp(this, true));
960
+ dd = d02.append("div").style("margin", "10px").text("Export all fusions");
961
+ dd.append("button").style("margin", "10px").text("Tabular format").on("click", () => svmr_export_text(this, false));
962
+ dd.append("button").style("margin", "10px").text("JSON format").on("click", () => svmr_export_json(this, false));
963
+ dd.append("button").style("margin", "10px").text("View in ProteinPaint").on("click", () => svmr_2pp(this, false));
964
+ });
965
+ butrow.append("a").attr("target", "_blank").attr("href", "https://docs.google.com/document/d/1DRVzE_WenG490eRYB7VGFOygtSqtF5L97rhK0HOUCNY/edit?usp=sharing").text("Help");
966
+ this.expression.div = holder.append("div").style("display", "none").style("margin", "20px").style("padding", "20px").style("border", "dashed 1px #bbb");
967
+ this.expression.prediv = this.expression.div.append("div");
968
+ this.expression.prediv.append("div").style("margin", "5px").text("Load a file that includes gene expression data for current samples.");
969
+ this.expression.prediv.append("div").style("margin", "5px 5px 10px 5px").style("font-size", "80%").text("The first 3 columns of the file should be: 1) gene name, 2) expression value, 3) sample name");
970
+ this.expression.input = this.expression.prediv.append("input").attr("type", "file").on("change", (event) => {
971
+ loadexpression(this, event.target.files[0]);
972
+ });
973
+ this.expression.presays = this.expression.prediv.append("span").style("padding-left", "20px");
974
+ this.expression.afterdiv = this.expression.div.append("div").style("display", "none");
975
+ const genediv = holder.append("div").style("display", "none").style("margin", "20px");
976
+ let d0 = genediv.append("div").style("display", "inline-block").style("border", "dashed 1px #bbb");
977
+ this.genefilter = d0.append("div").style("background-color", "#ededed").style("padding", "10px 20px");
978
+ let d01 = d0.append("div").style("padding", "10px 20px").style("overflow-y", "scroll").style("resize", "vertical").style("height", "300px");
979
+ d01.append("div").style("margin", "10px").style("font-size", "70%").text("Not included: read-through and intergenic events (including one or both sides).");
980
+ this.genetable = d01.append("table");
981
+ const cutoffdiv = holder.append("div").style("display", "none").style("margin", "20px");
982
+ d0 = cutoffdiv.append("div").style("display", "inline-block").style("padding", "20px").style("border", "solid 1px #ededed");
983
+ d0.append("span").style("padding", "0px 10px").text("Alert if:");
984
+ d01 = d0.append("span").style("padding", "0px 10px");
985
+ d01.append("span").html("chimeric reads &le;&nbsp;");
986
+ d01.append("input").attr("size", 3).property("value", this.cf_reads).on("change", (event) => {
987
+ const v = Number.parseInt(event.target.value);
988
+ if (Number.isNaN(v)) {
989
+ return;
990
+ }
991
+ this.cf_reads = v;
992
+ });
993
+ d01 = d0.append("span").style("padding", "0px 10px");
994
+ d01.append("span").html("repeat score &ge;&nbsp;");
995
+ d01.append("input").attr("size", 3).property("value", this.cf_repeat).on("change", (event) => {
996
+ const v = Number.parseFloat(event.target.value);
997
+ if (Number.isNaN(v)) {
998
+ return;
999
+ }
1000
+ this.cf_repeat = v;
1001
+ });
1002
+ d01 = d0.append("span").style("padding", "0px 10px");
1003
+ d01.append("span").html("contig bp length &le;&nbsp;");
1004
+ d01.append("input").attr("size", 3).property("value", this.cf_match).on("change", (event) => {
1005
+ const v = Number.parseInt(event.target.value);
1006
+ if (Number.isNaN(v)) {
1007
+ return;
1008
+ }
1009
+ this.cf_match = v;
1010
+ });
1011
+ d01 = d0.append("span").style("padding", "0px 10px");
1012
+ d01.append("span").html("ratio &le;&nbsp;");
1013
+ d01.append("input").attr("size", 3).property("value", this.cf_ratio).on("change", (event) => {
1014
+ const v = Number.parseFloat(event.target.value);
1015
+ if (Number.isNaN(v)) {
1016
+ return;
1017
+ }
1018
+ this.cf_ratio = v;
1019
+ });
1020
+ const legenddiv = holder.append("div").style("display", "none").style("margin", "20px");
1021
+ var h = 16;
1022
+ legenddiv.append("div").style("display", "inline-block").style("padding", "10px").style("border", "solid 1px #ededed").html(
1023
+ '<table style="margin:20px"><tr><td><div style="display:inline-block;font-size:80%;color:white;background-color:' + colorinframe + ';padding:2px 5px">IN</div></td><td>In-frame fusion</td></tr><tr><td><div style="display:inline-block;font-size:80%;color:white;background-color:' + coloroutframe + ';padding:2px 5px">O</div></td><td>Out-of-frame fusion</td></tr><tr><td><div style="display:inline-block;font-size:80%;color:black;border:solid 1px black;padding:1px 3px">?</div></td><td>Intergenic fusion, or gene isoform not specified</td></tr></table><table style="margin:20px"><tr><td>chr5 <span style="border:solid 1px black;padding:0px 10px;"></span>-<span style="border:solid 1px black;padding:0px 10px;"></span> chr5</td><td>Intra-chromosomal breakpoints</td></tr><tr><td><span style="color:red">chr5</span> <span style="border:solid 1px black;padding:0px 10px;"></span>-<span style="border:solid 1px black;padding:0px 10px;"></span> <span style="color:red">chr10</span></td><td>Inter-chromosomal breakpoints</td></tr></tr></table><table style="margin:20px"><tr><td><div style="display:inline-block;border:solid 1px black;padding:2px 10px;font-size:70%">geneA</div>-<div style="display:inline-block;border:solid 1px black;padding:2px 10px;font-size:70%">geneB</div></td><td>Neither geneA nor geneB is known fusion partner</td></tr><tr><td><div style="display:inline-block;border:solid 1px black;padding:2px 10px;font-size:70%;font-weight:bold;">geneA</div>-<div style="display:inline-block;border:solid 1px black;padding:2px 10px;font-size:70%">geneB</div></td><td>GeneA is a known fusion partner</td></tr><tr><td><div style="display:inline-block;border:solid 1px black;padding:2px 10px;font-size:70%;font-weight:bold;">geneA</div>-<div style="display:inline-block;border:solid 1px black;padding:2px 10px;font-size:70%;font-weight:bold;">geneB</div></td><td>Both genes are known fusion partners, but they do not make a known fusion product.</td></tr><tr><td><div style="display:inline-block;border:solid 1px black;padding:2px 10px;font-size:70%;font-weight:bold;color:' + knownprod_c + '">geneA</div>-<div style="display:inline-block;border:solid 1px black;padding:2px 10px;font-size:70%;font-weight:bold;color:' + knownprod_c + '">geneB</div></td><td>A known fusion product</td></tr></table><table style="margin:20px"><tr><td><div style="width:40px;height:16px;position:relative;"><div style="position:absolute;right:0px;top:0px;width:20px;height:16px;background-color:' + colorbgleft + '"></div><div style="position:absolute;border:solid 1px black;width:100%;height:15px"></div></div></td><td>ratioA: for geneA, the ratio of chimeric reads over total reads</td></tr><tr><td><div style="width:40px;height:16px;position:relative;"><div style="position:absolute;left:0px;top:0px;width:20px;height:16px;background-color:' + colorbgright + '"></div><div style="position:absolute;border:solid 1px black;width:100%;height:15px"></div></div></td><td>ratioB: for geneB, the ratio of chimeric reads over total reads</td></tr><tr><td><div style="width:40px;height:16px;border:solid 1px red;"></div></td><td>Antisense (reported strand is on the opposite of gene strand)</td></tr></table>'
1024
+ );
1025
+ this.ul = holder.append("ul");
1026
+ this.step_isoform(items);
1027
+ }
1028
+ // end of constructor
1029
+ err(m) {
1030
+ sayerror(this.errdiv, m);
1031
+ }
1032
+ step_isoform(items) {
1033
+ const newset = /* @__PURE__ */ new Set();
1034
+ for (const item of items) {
1035
+ for (const i of item.pairs) {
1036
+ let n = i.a.isoform;
1037
+ if (n && !this.genome.isoformcache.has(n.toUpperCase())) {
1038
+ newset.add(n);
1039
+ }
1040
+ n = i.b.isoform;
1041
+ if (n && !this.genome.isoformcache.has(n.toUpperCase())) {
1042
+ newset.add(n);
1043
+ }
1044
+ }
1045
+ }
1046
+ if (newset.size == 0) {
1047
+ this.step_eat(items);
1048
+ return;
1049
+ }
1050
+ const newisoform = [];
1051
+ for (const n of newset) {
1052
+ newisoform.push(n);
1053
+ }
1054
+ const wait = this.holder.append("div").style("margin", "20px").text("Loading " + newset.size + " isoforms ...");
1055
+ fetch(
1056
+ new Request(this.hostURL + "/isoformlst", {
1057
+ method: "POST",
1058
+ body: JSON.stringify({ genome: this.genome.name, lst: newisoform, jwt: this.jwt })
1059
+ })
1060
+ ).then((data) => {
1061
+ return data.json();
1062
+ }).then((data) => {
1063
+ if (data.error) throw { message: "Cannot load isoforms: " + data.error };
1064
+ wait.remove();
1065
+ for (const ilst of data.lst) {
1066
+ if (ilst[0]) {
1067
+ this.genome.isoformcache.set(ilst[0].isoform, ilst);
1068
+ }
1069
+ }
1070
+ const isoformErr = [];
1071
+ for (const k of newset) {
1072
+ if (!this.genome.isoformcache.has(k.toUpperCase())) {
1073
+ isoformErr.push(k);
1074
+ }
1075
+ }
1076
+ if (isoformErr.length) {
1077
+ this.err(
1078
+ isoformErr.length + " invalid isoform" + (isoformErr.length > 1 ? "s" : "") + ": " + isoformErr.join(", ")
1079
+ );
1080
+ }
1081
+ this.step_eat(items);
1082
+ }).catch((err) => {
1083
+ this.err(err.message);
1084
+ if (err.stack) console.log(err.stack);
1085
+ });
1086
+ }
1087
+ step_eat(items) {
1088
+ for (const prod of items) {
1089
+ prod.hook = {};
1090
+ let use = null;
1091
+ for (const p of prod.pairs) {
1092
+ let gm = this.genome.isoformmatch(p.a.isoform, prod.chrA, prod.posA);
1093
+ if (gm) {
1094
+ prod.geneA = gm.name;
1095
+ p.a.isdefault = gm.isdefault;
1096
+ if (Number.isNaN(p.a.codon) || p.a.codon < 0) {
1097
+ p.a.codon = void 0;
1098
+ const a = genomic2gm(prod.posA, gm);
1099
+ if (a.atupstream) {
1100
+ p.a.atupstream = a.atupstream;
1101
+ } else if (a.atdownstream) {
1102
+ p.a.atdownstream = a.atdownstream;
1103
+ } else if (a.atutr3) {
1104
+ p.a.atutr3 = a.atutr3;
1105
+ } else if (a.atutr5) {
1106
+ p.a.atutr5 = a.atutr5;
1107
+ } else {
1108
+ p.a.codon = a.codon;
1109
+ }
1110
+ }
1111
+ }
1112
+ gm = this.genome.isoformmatch(p.b.isoform, prod.chrB, prod.posB);
1113
+ if (gm) {
1114
+ prod.geneB = gm.name;
1115
+ p.b.isdefault = gm.isdefault;
1116
+ if (Number.isNaN(p.b.codon) || p.b.codon < 0) {
1117
+ p.b.codon = void 0;
1118
+ const a = genomic2gm(prod.posB, gm);
1119
+ if (a.atupstream) {
1120
+ p.b.atupstream = a.atupstream;
1121
+ } else if (a.atdownstream) {
1122
+ p.b.atdownstream = a.atdownstream;
1123
+ } else if (a.atutr3) {
1124
+ p.b.atutr3 = a.atutr3;
1125
+ } else if (a.atutr5) {
1126
+ p.b.atutr5 = a.atutr5;
1127
+ } else {
1128
+ p.b.codon = a.codon;
1129
+ }
1130
+ }
1131
+ }
1132
+ if (p.a.isdefault && p.b.isdefault) {
1133
+ if (!use) {
1134
+ use = p;
1135
+ }
1136
+ if (p.inframe) {
1137
+ use = p;
1138
+ }
1139
+ }
1140
+ }
1141
+ if (use) {
1142
+ prod.usepair = use;
1143
+ } else {
1144
+ prod.notes.push("No preferred isoform pair");
1145
+ prod.usepair = prod.pairs[0];
1146
+ }
1147
+ if (prod.usepair) {
1148
+ prod.usepair.inuse = true;
1149
+ }
1150
+ prod.eventlabel = (prod.geneA ? prod.geneA : prod.chrA) + "-" + (prod.geneB ? prod.geneB : prod.chrB);
1151
+ }
1152
+ const tmp = {};
1153
+ const sampleless = {};
1154
+ let hassampleless = false;
1155
+ for (const prod of items) {
1156
+ let n = prod.sample;
1157
+ if (n) {
1158
+ if (!(n in tmp)) {
1159
+ tmp[n] = {};
1160
+ }
1161
+ if (!(prod.eventlabel in tmp[n])) {
1162
+ tmp[n][prod.eventlabel] = [];
1163
+ }
1164
+ tmp[n][prod.eventlabel].push(prod);
1165
+ } else {
1166
+ hassampleless = true;
1167
+ if (!(prod.eventlabel in sampleless)) {
1168
+ sampleless[prod.eventlabel] = [];
1169
+ }
1170
+ sampleless[prod.eventlabel].push(prod);
1171
+ }
1172
+ }
1173
+ for (const sn in tmp) {
1174
+ this.samples.push({
1175
+ name: sn,
1176
+ events: tmp[sn]
1177
+ });
1178
+ }
1179
+ if (hassampleless) {
1180
+ this.samples.push({
1181
+ name: "No name",
1182
+ events: sampleless
1183
+ });
1184
+ }
1185
+ this.buttsample.text(this.samples.length + " sample" + (this.samples.length > 1 ? "s" : ""));
1186
+ for (const sample of this.samples) {
1187
+ for (const elab in sample.events) {
1188
+ if (!(elab in this.elab2sample)) {
1189
+ this.elab2sample[elab] = [];
1190
+ }
1191
+ this.elab2sample[elab].push(sample);
1192
+ }
1193
+ }
1194
+ for (const sample of this.samples) {
1195
+ sample.gene2events = {};
1196
+ for (const elab in sample.events) {
1197
+ for (const prod of sample.events[elab]) {
1198
+ const a = prod.geneA;
1199
+ if (a) {
1200
+ if (!(a in sample.gene2events)) {
1201
+ sample.gene2events[a] = {};
1202
+ }
1203
+ sample.gene2events[a][elab] = 1;
1204
+ }
1205
+ const b = prod.geneB;
1206
+ if (b) {
1207
+ if (!(b in sample.gene2events)) {
1208
+ sample.gene2events[b] = {};
1209
+ }
1210
+ sample.gene2events[b][elab] = 1;
1211
+ }
1212
+ }
1213
+ }
1214
+ }
1215
+ for (const sample of this.samples) {
1216
+ const newholder = [];
1217
+ for (const elab in sample.events) {
1218
+ for (const prod of sample.events[elab]) {
1219
+ if (prod.rating == "HQ") msjoin(prod, newholder);
1220
+ }
1221
+ }
1222
+ for (const elab in sample.events) {
1223
+ for (const prod of sample.events[elab]) {
1224
+ if (prod.rating == "LQ") msjoin(prod, newholder);
1225
+ }
1226
+ }
1227
+ for (const elab in sample.events) {
1228
+ for (const prod of sample.events[elab]) {
1229
+ if (prod.rating == "RT") msjoin(prod, newholder);
1230
+ }
1231
+ }
1232
+ for (const elab in sample.events) {
1233
+ for (const prod of sample.events[elab]) {
1234
+ if (prod.rating == "bad") msjoin(prod, newholder);
1235
+ }
1236
+ }
1237
+ let msgid = 0;
1238
+ const msglst = [];
1239
+ for (const lst of newholder) {
1240
+ if (lst.length > 1) {
1241
+ for (const prod of lst) {
1242
+ prod.msgid = msgid;
1243
+ }
1244
+ msgid++;
1245
+ msglst.push(lst);
1246
+ }
1247
+ }
1248
+ const hqin = [], hqt = [], hqo = [], lqin = [], lqt = [], lqo = [], rtin = [], rtt = [], rto = [], badin = [], badt = [], bado = [];
1249
+ for (const msg of msglst) {
1250
+ const thisset = [];
1251
+ let hqin3 = false, hqt3 = false, hqo3 = false, lqin3 = false, lqt3 = false, lqo3 = false, rtin3 = false, rtt3 = false, rto3 = false, badin3 = false, badt3 = false, bado3 = false;
1252
+ for (const prod of msg) {
1253
+ thisset.push({ label: prod.eventlabel, lst: [prod] });
1254
+ const pair2 = prod.usepair;
1255
+ if (prod.rating == "HQ") {
1256
+ if (pair2) {
1257
+ if (pair2.inframe) hqin3 = true;
1258
+ else hqt3 = true;
1259
+ } else if (prod.isnloss || prod.iscloss) {
1260
+ hqt3 = true;
1261
+ } else {
1262
+ hqo3 = true;
1263
+ }
1264
+ } else if (prod.rating == "LQ") {
1265
+ if (pair2) {
1266
+ if (pair2.inframe) lqin3 = true;
1267
+ else lqt3 = true;
1268
+ } else if (prod.isnloss || prod.iscloss) {
1269
+ lqt3 = true;
1270
+ } else {
1271
+ lqo3 = true;
1272
+ }
1273
+ } else if (prod.rating == "RT") {
1274
+ if (pair2) {
1275
+ if (pair2.inframe) rtin3 = true;
1276
+ else rtt3 = true;
1277
+ } else if (prod.isnloss || prod.iscloss) {
1278
+ rtt3 = true;
1279
+ } else {
1280
+ rto3 = true;
1281
+ }
1282
+ } else {
1283
+ if (pair2) {
1284
+ if (pair2.inframe) badin3 = true;
1285
+ else badt3 = true;
1286
+ } else if (prod.isnloss || prod.iscloss) {
1287
+ badt3 = true;
1288
+ } else {
1289
+ bado3 = true;
1290
+ }
1291
+ }
1292
+ }
1293
+ if (hqin3) {
1294
+ hqin.push({ label: "", lst: thisset, ismsg: true });
1295
+ } else if (hqt3) {
1296
+ hqt.push({ label: "", lst: thisset, ismsg: true });
1297
+ } else if (hqo3) {
1298
+ hqo.push({ label: "", lst: thisset, ismsg: true });
1299
+ } else if (lqin3) {
1300
+ lqin.push({ label: "", lst: thisset, ismsg: true });
1301
+ } else if (lqt3) {
1302
+ lqt.push({ label: "", lst: thisset, ismsg: true });
1303
+ } else if (lqo3) {
1304
+ lqo.push({ label: "", lst: thisset, ismsg: true });
1305
+ } else if (rtin3) {
1306
+ rtin.push({ label: "", lst: thisset, ismsg: true });
1307
+ } else if (rtt3) {
1308
+ rtt.push({ label: "", lst: thisset, ismsg: true });
1309
+ } else if (rto3) {
1310
+ rto.push({ label: "", lst: thisset, ismsg: true });
1311
+ } else if (badin3) {
1312
+ badin.push({ label: "", lst: thisset, ismsg: true });
1313
+ } else if (badt3) {
1314
+ badt.push({ label: "", lst: thisset, ismsg: true });
1315
+ } else if (bado3) {
1316
+ bado.push({ label: "", lst: thisset, ismsg: true });
1317
+ } else {
1318
+ console.log("multi-seg group unclassfied? " + key);
1319
+ }
1320
+ }
1321
+ const genepairs = {};
1322
+ for (const elab in sample.events) {
1323
+ const hqin2 = [], hqt2 = [], hqo2 = [], lqin2 = [], lqt2 = [], lqo2 = [], rtin2 = [], rtt2 = [], rto2 = [], badin2 = [], badt2 = [], bado2 = [];
1324
+ for (const prod of sample.events[elab]) {
1325
+ if (prod.msgid != void 0) {
1326
+ continue;
1327
+ }
1328
+ if (prod.geneA && prod.geneB) {
1329
+ const key2 = prod.geneA + "-" + prod.geneB;
1330
+ let hash = genepairs[key2];
1331
+ if (!hash) {
1332
+ const key22 = prod.geneB + "-" + prod.geneA;
1333
+ hash = genepairs[key22];
1334
+ }
1335
+ if (hash) {
1336
+ if (!(key2 in hash)) {
1337
+ hash[key2] = [];
1338
+ }
1339
+ hash[key2].push(prod);
1340
+ } else {
1341
+ genepairs[key2] = {};
1342
+ genepairs[key2][key2] = [prod];
1343
+ }
1344
+ continue;
1345
+ }
1346
+ var pair = prod.usepair;
1347
+ if (prod.rating == "HQ") {
1348
+ if (pair) {
1349
+ if (pair.inframe) hqin2.push(prod);
1350
+ else hqt2.push(prod);
1351
+ } else if (prod.isnloss || prod.iscloss) {
1352
+ hqt2.push(prod);
1353
+ } else {
1354
+ hqo2.push(prod);
1355
+ }
1356
+ } else if (prod.rating == "LQ") {
1357
+ if (pair) {
1358
+ if (pair.inframe) lqin2.push(prod);
1359
+ else lqt2.push(prod);
1360
+ } else if (prod.isnloss || prod.iscloss) {
1361
+ lqt2.push(prod);
1362
+ } else {
1363
+ lqo2.push(prod);
1364
+ }
1365
+ } else if (prod.rating == "RT") {
1366
+ if (pair) {
1367
+ if (pair.inframe) rtin2.push(prod);
1368
+ else rtt2.push(prod);
1369
+ } else if (prod.isnloss || prod.iscloss) {
1370
+ rtt2.push(prod);
1371
+ } else {
1372
+ rto2.push(prod);
1373
+ }
1374
+ } else {
1375
+ if (pair) {
1376
+ if (pair.inframe) badin2.push(prod);
1377
+ else badt2.push(prod);
1378
+ } else if (prod.isnloss || prod.iscloss) {
1379
+ badt2.push(prod);
1380
+ } else {
1381
+ bado2.push(prod);
1382
+ }
1383
+ }
1384
+ }
1385
+ if (hqin2.length > 0) {
1386
+ hqin.push({ label: elab, lst: [{ label: elab, lst: hqin2 }] });
1387
+ } else if (hqt2.length > 0) {
1388
+ hqt.push({ label: elab, lst: [{ label: elab, lst: hqt2 }] });
1389
+ } else if (hqo2.length > 0) {
1390
+ hqo.push({ label: elab, lst: [{ label: elab, lst: hqo2 }] });
1391
+ } else if (lqin2.length > 0) {
1392
+ lqin.push({ label: elab, lst: [{ label: elab, lst: lqin2 }] });
1393
+ } else if (lqt2.length > 0) {
1394
+ lqt.push({ label: elab, lst: [{ label: elab, lst: lqt2 }] });
1395
+ } else if (lqo2.length > 0) {
1396
+ lqo.push({ label: elab, lst: [{ label: elab, lst: lqo2 }] });
1397
+ } else if (rtin2.length > 0) {
1398
+ rtin.push({ label: elab, lst: [{ label: elab, lst: rtin2 }] });
1399
+ } else if (rtt2.length > 0) {
1400
+ rtt.push({ label: elab, lst: [{ label: elab, lst: rtt2 }] });
1401
+ } else if (rto2.length > 0) {
1402
+ rto.push({ label: elab, lst: [{ label: elab, lst: rto2 }] });
1403
+ } else if (badin2.length > 0) {
1404
+ badin.push({ label: elab, lst: [{ label: elab, lst: badin2 }] });
1405
+ } else if (badt2.length > 0) {
1406
+ badt.push({ label: elab, lst: [{ label: elab, lst: badt2 }] });
1407
+ } else if (bado2.length > 0) {
1408
+ bado.push({ label: elab, lst: [{ label: elab, lst: bado2 }] });
1409
+ }
1410
+ }
1411
+ for (const key2 in genepairs) {
1412
+ let hqin3 = false, hqt3 = false, hqo3 = false, lqin3 = false, lqt3 = false, lqo3 = false, rtin3 = false, rtt3 = false, rto3 = false, badin3 = false, badt3 = false, bado3 = false;
1413
+ const thisset = [];
1414
+ for (const elab in genepairs[key2]) {
1415
+ const prodlst = genepairs[key2][elab];
1416
+ if (prodlst.length == 1) {
1417
+ if (prodlst[0].msgid != void 0) {
1418
+ continue;
1419
+ }
1420
+ }
1421
+ thisset.push({ label: elab, lst: prodlst });
1422
+ for (const prod of prodlst) {
1423
+ const pair2 = prod.usepair;
1424
+ if (prod.rating == "HQ") {
1425
+ if (pair2) {
1426
+ if (pair2.inframe) hqin3 = true;
1427
+ else hqt3 = true;
1428
+ } else if (prod.isnloss || prod.iscloss) {
1429
+ hqt3 = true;
1430
+ } else {
1431
+ hqo3 = true;
1432
+ }
1433
+ } else if (prod.rating == "LQ") {
1434
+ if (pair2) {
1435
+ if (pair2.inframe) lqin3 = true;
1436
+ else lqt3 = true;
1437
+ } else if (prod.isnloss || prod.iscloss) {
1438
+ lqt3 = true;
1439
+ } else {
1440
+ lqo3 = true;
1441
+ }
1442
+ } else if (prod.rating == "RT") {
1443
+ if (pair2) {
1444
+ if (pair2.inframe) rtin3 = true;
1445
+ else rtt3 = true;
1446
+ } else if (prod.isnloss || prod.iscloss) {
1447
+ rtt3 = true;
1448
+ } else {
1449
+ rto3 = true;
1450
+ }
1451
+ } else {
1452
+ if (pair2) {
1453
+ if (pair2.inframe) badin3 = true;
1454
+ else badt3 = true;
1455
+ } else if (prod.isnloss || prod.iscloss) {
1456
+ badt3 = true;
1457
+ } else {
1458
+ bado3 = true;
1459
+ }
1460
+ }
1461
+ }
1462
+ }
1463
+ if (hqin3) {
1464
+ hqin.push({ label: key2, lst: thisset });
1465
+ } else if (hqt3) {
1466
+ hqt.push({ label: key2, lst: thisset });
1467
+ } else if (hqo3) {
1468
+ hqo.push({ label: key2, lst: thisset });
1469
+ } else if (lqin3) {
1470
+ lqin.push({ label: key2, lst: thisset });
1471
+ } else if (lqt3) {
1472
+ lqt.push({ label: key2, lst: thisset });
1473
+ } else if (lqo3) {
1474
+ lqo.push({ label: key2, lst: thisset });
1475
+ } else if (rtin3) {
1476
+ rtin.push({ label: key2, lst: thisset });
1477
+ } else if (rtt3) {
1478
+ rtt.push({ label: key2, lst: thisset });
1479
+ } else if (rto3) {
1480
+ rto.push({ label: key2, lst: thisset });
1481
+ } else if (badin3) {
1482
+ badin.push({ label: key2, lst: thisset });
1483
+ } else if (badt3) {
1484
+ badt.push({ label: key2, lst: thisset });
1485
+ } else if (bado3) {
1486
+ bado.push({ label: key2, lst: thisset });
1487
+ }
1488
+ }
1489
+ sample.egglst = [];
1490
+ sample.hqincount = 0;
1491
+ sample.lqincount = 0;
1492
+ if (hqin.length) {
1493
+ sample.egglst.push({
1494
+ htmlab: 'HQ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="background-color:' + colorinframe + ';color:white;padding:1px 3px;font-size:80%;">in-frame&nbsp;&nbsp;</span>',
1495
+ lst: hqin
1496
+ });
1497
+ sample.hqincount = hqin.reduce((i, j) => i + j.lst.length, 0);
1498
+ }
1499
+ if (hqt.length) {
1500
+ sample.egglst.push({
1501
+ htmlab: 'HQ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="background-color:#E3C3C8;padding:1px 3px;font-size:80%;">truncation</span>',
1502
+ lst: hqt
1503
+ });
1504
+ }
1505
+ if (hqo.length) {
1506
+ sample.egglst.push({
1507
+ htmlab: 'HQ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="background-color:#ccc;padding:1px 3px;font-size:80%;">others&nbsp;&nbsp;&nbsp;&nbsp;</span>',
1508
+ lst: hqo
1509
+ });
1510
+ }
1511
+ if (lqin.length) {
1512
+ sample.egglst.push({
1513
+ htmlab: 'LQ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="background-color:' + colorinframe + ';color:white;padding:1px 3px;font-size:80%;">in-frame&nbsp;&nbsp;</span>',
1514
+ lst: lqin
1515
+ });
1516
+ sample.lqincount = lqin.reduce((i, j) => i + j, 0);
1517
+ }
1518
+ if (lqt.length) {
1519
+ sample.egglst.push({
1520
+ htmlab: 'LQ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="background-color:#E3C3C8;padding:1px 3px;font-size:80%;">truncation</span>',
1521
+ lst: lqt
1522
+ });
1523
+ }
1524
+ if (lqo.length) {
1525
+ sample.egglst.push({
1526
+ htmlab: 'LQ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="background-color:#ccc;padding:1px 3px;font-size:80%;">others&nbsp;&nbsp;&nbsp;&nbsp;</span>',
1527
+ lst: lqo
1528
+ });
1529
+ }
1530
+ if (rtin.length) {
1531
+ sample.egglst.push({
1532
+ htmlab: 'Read-through <span style="background-color:' + colorinframe + ';color:white;padding:1px 3px;font-size:80%;">in-frame&nbsp;&nbsp;</span>',
1533
+ lst: rtin
1534
+ });
1535
+ }
1536
+ if (rtt.length) {
1537
+ sample.egglst.push({
1538
+ htmlab: 'Read-through <span style="background-color:#E3C3C8;padding:1px 3px;font-size:80%;">truncation</span>',
1539
+ lst: rtt
1540
+ });
1541
+ }
1542
+ if (rto.length) {
1543
+ sample.egglst.push({
1544
+ htmlab: 'Read-through <span style="background-color:#ccc;padding:1px 3px;font-size:80%;">others&nbsp;&nbsp;&nbsp;&nbsp;</span>',
1545
+ lst: rto
1546
+ });
1547
+ }
1548
+ if (badin.length) {
1549
+ sample.egglst.push({
1550
+ htmlab: 'Bad&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="background-color:' + colorinframe + ';color:white;padding:1px 3px;font-size:80%;">in-frame</span>',
1551
+ lst: badin
1552
+ });
1553
+ }
1554
+ if (badt.length) {
1555
+ sample.egglst.push({
1556
+ htmlab: 'Bad&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="background-color:#E3C3C8;padding:1px 3px;font-size:80%;">truncation</span>',
1557
+ lst: badt
1558
+ });
1559
+ }
1560
+ if (bado.length) {
1561
+ sample.egglst.push({
1562
+ htmlab: 'Bad&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="background-color:#ccc;padding:1px 3px;font-size:80%;">others&nbsp;&nbsp;&nbsp;&nbsp;</span>',
1563
+ lst: bado
1564
+ });
1565
+ }
1566
+ }
1567
+ this.samples.sort((a, b) => {
1568
+ if (a.hqincount == b.hqincount) {
1569
+ return b.lqincount - a.lqincount;
1570
+ }
1571
+ return b.hqincount - a.hqincount;
1572
+ });
1573
+ for (const sample of this.samples) {
1574
+ for (const egg of sample.egglst) {
1575
+ for (const eg of egg.lst) {
1576
+ for (const evt of eg.lst) {
1577
+ evt.lst.sort((a, b) => {
1578
+ const pa = a.usepair, pb = b.usepair;
1579
+ if (pa) {
1580
+ if (pb) {
1581
+ if (pa.inframe) {
1582
+ if (!pb.inframe) {
1583
+ return -1;
1584
+ }
1585
+ } else {
1586
+ if (pb.inframe) {
1587
+ return 1;
1588
+ }
1589
+ }
1590
+ } else {
1591
+ return -1;
1592
+ }
1593
+ } else {
1594
+ if (pb) {
1595
+ return 1;
1596
+ }
1597
+ }
1598
+ return b.score - a.score;
1599
+ });
1600
+ }
1601
+ }
1602
+ egg.lst.sort((a, b) => {
1603
+ if (a.lst.length != b.lst.length) {
1604
+ return b.lst.length - a.lst.length;
1605
+ }
1606
+ let scorea = 0;
1607
+ for (const evta of a.lst) {
1608
+ for (const prod of evta.lst) {
1609
+ scorea = Math.max(scorea, prod.score);
1610
+ }
1611
+ }
1612
+ let scoreb = 0;
1613
+ for (const evtb of b.lst) {
1614
+ for (const prod of evtb.lst) {
1615
+ scoreb = Math.max(scoreb, prod.score);
1616
+ }
1617
+ }
1618
+ return scoreb - scorea;
1619
+ });
1620
+ }
1621
+ let prodid = 1;
1622
+ for (const egg of sample.egglst) {
1623
+ for (const eg of egg.lst) {
1624
+ for (const evt of eg.lst) {
1625
+ for (const prod of evt.lst) {
1626
+ prod.prodid = prodid++;
1627
+ }
1628
+ }
1629
+ }
1630
+ }
1631
+ }
1632
+ this.step_gene();
1633
+ this.step_table();
1634
+ }
1635
+ dogenefilter() {
1636
+ let va = this.gui.inputa.property("value");
1637
+ let vb = this.gui.inputb.property("value");
1638
+ if (va.length + vb.length == 0) {
1639
+ this.gui.says.text(
1640
+ "Showing " + (this.genelst.length > 100 ? 100 : "all") + " of " + this.genelst.length + " pairs"
1641
+ );
1642
+ this.geneshow(this.genelst.length > 100 ? this.genelst.slice(0, 100) : this.genelst);
1643
+ return;
1644
+ }
1645
+ va = va.length == 0 ? null : va.toLowerCase();
1646
+ vb = vb.length == 0 ? null : vb.toLowerCase();
1647
+ const uselst = [];
1648
+ for (const g of this.genelst) {
1649
+ if (va) {
1650
+ if (!g.a) continue;
1651
+ if (g.a.toLowerCase().indexOf(va) == -1) continue;
1652
+ }
1653
+ if (vb) {
1654
+ if (!g.b) continue;
1655
+ if (g.b.toLowerCase().indexOf(vb) == -1) continue;
1656
+ }
1657
+ uselst.push(g);
1658
+ }
1659
+ this.gui.says.text("Showing " + Math.min(100, uselst.length) + " of " + this.genelst.length + " pairs");
1660
+ this.geneshow(uselst.length > 100 ? uselst.slice(0, 100) : uselst);
1661
+ }
1662
+ geneshow(lst) {
1663
+ this.genetable.selectAll("*").remove();
1664
+ const tr = this.genetable.append("tr").style("background-color", "#ededed").style("font-size", ".8em");
1665
+ tr.append("td").text("gene A");
1666
+ tr.append("td").text("gene B");
1667
+ tr.append("td").text("# sample");
1668
+ tr.append("td").text("rating");
1669
+ for (const evt of lst) {
1670
+ let color1 = "black", color2 = "black", weight1, weight2;
1671
+ if (evt.ainter) {
1672
+ color1 = "#aaa";
1673
+ weight1 = "normal";
1674
+ } else {
1675
+ const a = evt.samples[0].prodlst[0].hlgene;
1676
+ if (a == 1 || a == 3 || a == 4) weight1 = "bold";
1677
+ if (a == 4) color1 = knownprod_c;
1678
+ }
1679
+ if (evt.binter) {
1680
+ color2 = "#aaa";
1681
+ weight2 = "normal";
1682
+ } else {
1683
+ const a = evt.samples[0].prodlst[0].hlgene;
1684
+ if (a == 2 || a == 3 || a == 4) weight2 = "bold";
1685
+ if (a == 4) color2 = knownprod_c;
1686
+ }
1687
+ const tr2 = this.genetable.append("tr").attr("class", "sja_clb");
1688
+ tr2.append("td").text(evt.a).style("color", color1).style("font-weight", weight1);
1689
+ tr2.append("td").text(evt.b).style("color", color2).style("font-weight", weight2);
1690
+ const td = tr2.append("td").text(evt.samples.length);
1691
+ tr2.on("click", () => {
1692
+ const p = tr2.node().getBoundingClientRect();
1693
+ const pane2 = newpane({ x: p.left + p.width + 10, y: p.top });
1694
+ pane2.header.text(evt.a + " - " + evt.b);
1695
+ const table = pane2.body.append("table");
1696
+ for (const sample of evt.samples) {
1697
+ const tr3 = table.append("tr");
1698
+ tr3.append("td").style("vertical-align", "top").style("padding-top", "5px").text(sample.name);
1699
+ const td2 = tr3.append("td");
1700
+ for (const prod of sample.prodlst) {
1701
+ const logo = this.eventlogo([prod], td2);
1702
+ logo.style("position", "relative");
1703
+ logo.append("div").style("position", "absolute").style("width", "100%").style("height", "100%").style("top", "0px").style("left", "0px").on("mouseover", (event) => {
1704
+ const p2 = event.target.getBoundingClientRect();
1705
+ tip.clear().show(p2.left + p2.width - 2, p2.top - 30);
1706
+ this.showsvpairs({
1707
+ prodlst: [prod],
1708
+ holder: tip.d.append("div"),
1709
+ nodetail: true,
1710
+ sample,
1711
+ eglst: null,
1712
+ showothersample: false
1713
+ });
1714
+ }).on("click", (event) => {
1715
+ const p2 = event.target.getBoundingClientRect();
1716
+ const pane = newpane({ x: p2.left + p2.width + 40, y: p2.top - 60 });
1717
+ pane.header.text(sample.name);
1718
+ this.showsvpairs({
1719
+ prodlst: [prod],
1720
+ holder: pane.body
1721
+ });
1722
+ });
1723
+ }
1724
+ }
1725
+ });
1726
+ const hash = {};
1727
+ for (const smp of evt.samples) {
1728
+ const hash2 = {};
1729
+ for (const p of smp.prodlst) {
1730
+ hash2[p.rating] = 1;
1731
+ }
1732
+ for (var n in hash2) {
1733
+ if (!(n in hash)) {
1734
+ hash[n] = 0;
1735
+ }
1736
+ hash[n]++;
1737
+ }
1738
+ }
1739
+ const lst2 = [];
1740
+ for (const smp of ["HQ", "LQ", "RT", "bad"]) {
1741
+ if (hash[smp]) {
1742
+ lst2.push(
1743
+ '<span style="border-radius:6px;background-color:#ededed;padding:1px 6px;font-size:80%">' + smp + (hash[smp] > 1 ? ' <span style="font-size:80%">' + hash[smp] + "</span>" : "") + "</span>"
1744
+ );
1745
+ }
1746
+ }
1747
+ tr2.append("td").html(lst2.join(" "));
1748
+ }
1749
+ }
1750
+ step_gene() {
1751
+ this.gui = {};
1752
+ this.genefilter.append("span").text("Filter:");
1753
+ this.gui.inputa = this.genefilter.append("input").attr("size", 7).attr("placeholder", "gene A").style("margin-left", "10px").on("keyup", () => this.dogenefilter());
1754
+ this.gui.inputb = this.genefilter.append("input").attr("size", 7).attr("placeholder", "gene B").style("margin-left", "10px").on("keyup", () => this.dogenefilter());
1755
+ this.genefilter.append("button").style("margin-left", "10px").text("Reset").on("click", () => {
1756
+ this.gui.inputa.property("value", "");
1757
+ this.gui.inputb.property("value", "");
1758
+ this.dogenefilter();
1759
+ });
1760
+ this.gui.says = this.genefilter.append("span").style("padding-left", "20px");
1761
+ const events = {};
1762
+ const genes = /* @__PURE__ */ new Set();
1763
+ for (const sample of this.samples) {
1764
+ for (const k in sample.events) {
1765
+ for (const prod of sample.events[k]) {
1766
+ if (!prod.geneA || !prod.geneB) continue;
1767
+ if (prod.rating == "RT") continue;
1768
+ if (prod.geneA) {
1769
+ genes.add(prod.geneA);
1770
+ }
1771
+ if (prod.geneB) {
1772
+ genes.add(prod.geneB);
1773
+ }
1774
+ const n = (prod.geneA ? prod.geneA : "<" + prod.chrA) + " - " + (prod.geneB ? prod.geneB : "<" + prod.chrB);
1775
+ if (!(n in events)) {
1776
+ events[n] = {};
1777
+ }
1778
+ if (!(sample.name in events[n])) {
1779
+ events[n][sample.name] = [];
1780
+ }
1781
+ events[n][sample.name].push(prod);
1782
+ }
1783
+ }
1784
+ }
1785
+ this.buttgene.text(genes.size + " gene" + (genes.size > 1 ? "s" : ""));
1786
+ for (const k in events) {
1787
+ const tmp = k.split(" - ");
1788
+ const evt = { samples: [] };
1789
+ if (tmp[0][0] == "<") {
1790
+ evt.a = tmp[0].slice(1, tmp[0].length);
1791
+ evt.ainter = true;
1792
+ } else {
1793
+ evt.a = tmp[0];
1794
+ }
1795
+ if (tmp[1][0] == "<") {
1796
+ evt.b = tmp[1].slice(1, tmp[1].length);
1797
+ evt.binter = true;
1798
+ } else {
1799
+ evt.b = tmp[1];
1800
+ }
1801
+ for (const sn in events[k]) {
1802
+ evt.samples.push({ name: sn, prodlst: events[k][sn] });
1803
+ }
1804
+ this.genelst.push(evt);
1805
+ }
1806
+ this.genelst.sort((a, b) => {
1807
+ let ca = 0;
1808
+ for (const s of a.samples) {
1809
+ for (const p of s.prodlst) {
1810
+ if (p.rating == "HQ") ca++;
1811
+ }
1812
+ }
1813
+ let cb = 0;
1814
+ for (const s of b.samples) {
1815
+ for (const p of s.prodlst) {
1816
+ if (p.rating == "HQ") cb++;
1817
+ }
1818
+ }
1819
+ return cb - ca;
1820
+ });
1821
+ this.dogenefilter();
1822
+ }
1823
+ step_table() {
1824
+ this.eggbar = [];
1825
+ this.ul.selectAll("*").remove();
1826
+ for (const sample of this.samples) {
1827
+ this.ul.append("li").style("font-weight", "bold").style("color", "#545454").text(sample.name);
1828
+ sample.ul = this.ul.append("ul").style("margin-bottom", "10px");
1829
+ this.showsample(sample);
1830
+ }
1831
+ }
1832
+ showsample(sample) {
1833
+ sample.ul.selectAll("*").remove();
1834
+ for (const egg of sample.egglst) {
1835
+ const evtnum = egg.lst.reduce((i, j) => i + j.lst.length, 0);
1836
+ const li = sample.ul.append("li");
1837
+ const bar = li.append("div").attr("class", "sja_clb2").html(egg.htmlab + " " + evtnum);
1838
+ bar.on("click", () => {
1839
+ for (const bar0 of this.eggbar) {
1840
+ bar0.style("background-color", "");
1841
+ }
1842
+ bar.style("background-color", "yellow");
1843
+ const next = select_default(li.node().nextSibling);
1844
+ if (next.style("display") == "none") {
1845
+ appear(next);
1846
+ egg.isopen = true;
1847
+ } else {
1848
+ disappear(next);
1849
+ egg.isopen = false;
1850
+ }
1851
+ });
1852
+ this.eggbar.push(bar);
1853
+ const div = sample.ul.append("div").style("margin", "10px");
1854
+ this.showevents(sample, egg.lst, div);
1855
+ }
1856
+ }
1857
+ showevents(sample, eglst, holder) {
1858
+ const svg = holder.append("svg");
1859
+ let rowh = 22, rowh2 = 15, rows = 13, fontsize = rowh - 3, fontsizeframe = 14, fontsizefeature = 10, hpad0 = 20, hpad = 10, vpad = 10, gvpad = 10, chrAw = 60, chrBw = 60, s1 = 10, s2 = 10, s3 = 10, s4 = 10, s5 = 5, s6 = 15, s7 = 13, eventlogow = 0, etw = 25, genesp = 12, geneAw = 0, geneBw = 0, recurw = 0, graphheight = 0;
1860
+ for (const eg of eglst) {
1861
+ graphheight += rows;
1862
+ if (eg.lst.length == 1) {
1863
+ graphheight += rowh;
1864
+ } else {
1865
+ graphheight += vpad * 2 + (rowh + rows) * eg.lst.length + (rowh2 + rows) * (eg.lst.length - 1) + gvpad;
1866
+ }
1867
+ for (const evt of eg.lst) {
1868
+ evt.svg = {};
1869
+ const prodlst = evt.lst;
1870
+ const prod = prodlst[0];
1871
+ let labA, labB;
1872
+ if (prod.geneA) {
1873
+ const t = prod.geneA.split(",");
1874
+ if (t.length > 2) {
1875
+ labA = t[0] + "," + t[1] + "...";
1876
+ } else {
1877
+ labA = prod.geneA;
1878
+ }
1879
+ } else {
1880
+ labA = "";
1881
+ }
1882
+ if (prod.geneB) {
1883
+ const t = prod.geneB.split(",");
1884
+ if (t.length > 2) {
1885
+ labB = t[0] + "," + t[1] + "...";
1886
+ } else {
1887
+ labB = prod.geneB;
1888
+ }
1889
+ } else {
1890
+ labB = "";
1891
+ }
1892
+ svg.append("text").text(labA).attr("font-size", fontsize).attr("font-family", "Courier").each(function() {
1893
+ geneAw = Math.max(geneAw, this.getBBox().width);
1894
+ }).remove();
1895
+ svg.append("text").text(labB).attr("font-size", fontsize).attr("font-family", "Courier").each(function() {
1896
+ geneBw = Math.max(geneBw, this.getBBox().width);
1897
+ }).remove();
1898
+ svg.append("text").text(prod.rating).attr("font-size", fontsize).attr("font-family", "Courier").each(function() {
1899
+ evt.svg.ratingw = this.getBBox().width;
1900
+ }).remove();
1901
+ evt.svg.framew = 22;
1902
+ evt.svg.typew = 60;
1903
+ if (prod.usepair) {
1904
+ evt.svg.frameword = prod.usepair.inframe ? "IN" : "O";
1905
+ } else {
1906
+ evt.svg.frameword = "?";
1907
+ }
1908
+ svg.append("text").text(prod.featureA).attr("font-size", fontsizefeature).attr("font-family", font).each(function() {
1909
+ evt.svg.featurew = this.getBBox().width;
1910
+ }).remove();
1911
+ svg.append("text").text(prod.featureB).attr("font-size", fontsizefeature).attr("font-family", font).each(function() {
1912
+ evt.svg.featurew = Math.max(evt.svg.featurew, this.getBBox().width);
1913
+ }).remove();
1914
+ svg.append("text").text(Math.floor(prod.score)).attr("font-size", fontsize).attr("font-family", font).each(function() {
1915
+ evt.svg.scorew = this.getBBox().width;
1916
+ }).remove();
1917
+ evt.svg.logow = evt.svg.ratingw + evt.svg.framew + evt.svg.typew + evt.svg.featurew + evt.svg.scorew + s5 * 6;
1918
+ eventlogow = Math.max(eventlogow, evt.svg.logow + (prodlst.length > 1 ? s4 + etw : 0));
1919
+ if (prod.geneA && prod.geneB) {
1920
+ const slst = this.elab2sample[evt.label];
1921
+ if (!slst) {
1922
+ evt.svg.recurtext = "Recurrence check error";
1923
+ evt.svg.recurtextcolor = "red";
1924
+ } else if (slst.length == 1) {
1925
+ evt.svg.recurtext = "No recurrence";
1926
+ evt.svg.recurtextcolor = "#aaaaaa";
1927
+ } else {
1928
+ evt.svg.hasrecurrence = true;
1929
+ evt.svg.recurtext = "In " + slst.length + " samples";
1930
+ evt.svg.recurtextcolor = "black";
1931
+ }
1932
+ } else {
1933
+ evt.svg.recurtext = "Unknown recurrence";
1934
+ evt.svg.recurtextcolor = "#aaaaaa";
1935
+ }
1936
+ svg.append("text").text(evt.svg.recurtext).attr("font-size", fontsize - 4).attr("font-family", font).each(function() {
1937
+ evt.svg.recurw = this.getBBox().width;
1938
+ }).remove();
1939
+ recurw = Math.max(recurw, evt.svg.recurw);
1940
+ }
1941
+ }
1942
+ geneAw += 10;
1943
+ geneBw += 10;
1944
+ graphheight += rows;
1945
+ let ghandlew = 100;
1946
+ let roww = chrAw + s1 + rowh + s7 + geneAw + genesp + s2 + genesp + geneBw + s7 + rowh + s1 + chrBw + s3 + eventlogow + s6 + recurw;
1947
+ svg.attr("width", hpad0 * 2 + hpad * 2 + roww + ghandlew).attr("height", graphheight);
1948
+ const g = svg.append("g").attr("transform", "translate(" + hpad0 + ",0)");
1949
+ let y = 0;
1950
+ for (const eg of eglst) {
1951
+ y += rows;
1952
+ const g_eg = g.append("g").attr("transform", "translate(0," + y + ")");
1953
+ const groupheight = (rowh + rows) * eg.lst.length - rows + (eg.lst.length > 1 ? vpad * 2 : 0) + (eg.lst.length > 1 ? (rowh2 + rows) * (eg.lst.length - 1) : 0);
1954
+ if (eg.lst.length > 1) {
1955
+ g_eg.append("rect").attr("stroke", "black").attr("stroke-dasharray", eg.ismsg ? "none" : "2,3").attr("fill", "none").attr("width", roww + hpad * 2).attr("height", groupheight).attr("shape-rendering", "crispEdges");
1956
+ if (eg.ismsg) {
1957
+ const g2 = g_eg.append("g").attr("transform", "translate(" + (roww + hpad * 2) + ",0)");
1958
+ g2.append("rect").attr("width", ghandlew).attr("height", rowh).attr("fill", "#858585").attr("shape-rendering", "crispEdges");
1959
+ g2.append("text").text("multi-seg").attr("x", 10).attr("y", rowh / 2).attr("font-size", rowh - 6).attr("font-family", font).attr("fill", "white").attr("dominant-baseline", "middle");
1960
+ g2.append("rect").attr("width", ghandlew).attr("height", rowh).attr("fill", "white").attr("fill-opacity", 0).on("click", (event) => {
1961
+ const joinlst = [];
1962
+ const idlst = [];
1963
+ for (const evt of eg.lst) {
1964
+ const prod = evt.lst[0];
1965
+ idlst.push(prod.prodid);
1966
+ const p2 = {
1967
+ a: {
1968
+ chr: prod.chrA,
1969
+ position: prod.posA,
1970
+ strand: prod.ortA,
1971
+ name: prod.geneA ? prod.geneA : prod.chrA,
1972
+ ratio: prod.ratioA.toFixed(2),
1973
+ feature: prod.featureA,
1974
+ contiglen: prod.matchA,
1975
+ chimericreads: prod.readsA,
1976
+ repeatscore: prod.repeatA
1977
+ },
1978
+ b: {
1979
+ chr: prod.chrB,
1980
+ position: prod.posB,
1981
+ strand: prod.ortB,
1982
+ name: prod.geneB ? prod.geneB : prod.chrB,
1983
+ ratio: prod.ratioB.toFixed(2),
1984
+ feature: prod.featureB,
1985
+ contiglen: prod.matchB,
1986
+ chimericreads: prod.readsB,
1987
+ repeatscore: prod.repeatB
1988
+ },
1989
+ rating: prod.rating,
1990
+ score: Math.ceil(prod.score)
1991
+ };
1992
+ if (prod.usepair) {
1993
+ p2.inframe = prod.usepair.inframe;
1994
+ const x = prod.usepair.a;
1995
+ p2.a.gm = this.genome.isoformmatch(x.isoform, p2.a.chr, p2.a.position);
1996
+ p2.a.codon = x.codon;
1997
+ p2.a.exon = x.exon;
1998
+ p2.a.atupstream = x.atupstream;
1999
+ p2.a.atdownstream = x.atdownstream;
2000
+ p2.a.atutr5 = x.atutr5;
2001
+ p2.a.atutr3 = x.atutr3;
2002
+ const y2 = prod.usepair.b;
2003
+ p2.b.gm = this.genome.isoformmatch(y2.isoform, p2.b.chr, p2.b.position);
2004
+ p2.b.codon = y2.codon;
2005
+ p2.b.exon = y2.exon;
2006
+ p2.b.atupstream = y2.atupstream;
2007
+ p2.b.atdownstream = y2.atdownstream;
2008
+ p2.b.atutr5 = y2.atutr5;
2009
+ p2.b.atutr3 = y2.atutr3;
2010
+ let aalen = 0, bplen2 = 0;
2011
+ if (x.contigaa && y2.contigaa) {
2012
+ aalen = y2.contigaa - x.contigaa - 1;
2013
+ }
2014
+ if (x.contigbp && y2.contigbp) {
2015
+ bplen2 = y2.contigbp - x.contigbp - 1;
2016
+ }
2017
+ if (aalen) {
2018
+ p2.interstitial = { aalen };
2019
+ }
2020
+ if (bplen2) {
2021
+ if (!p2.interstitial) p2.interstitial = {};
2022
+ p2.interstitial.bplen = bplen2;
2023
+ }
2024
+ }
2025
+ joinlst.push(p2);
2026
+ }
2027
+ const p = event.target.getBoundingClientRect();
2028
+ const pane = newpane({ x: p.left + 10, y: p.top + p.height + 10 });
2029
+ const div = pane.body.append("div").style("margin", "10px");
2030
+ div.append("span").style("padding-right", "20px").text("Product id: " + idlst.join(", "));
2031
+ div.append("button").style("margin-right", "10px").text("Break").on("click", () => {
2032
+ const eg2id = eg.lst.map((j) => j.lst[0].prodid);
2033
+ let idx = 0;
2034
+ for (; idx < eglst.length; idx++) {
2035
+ const eg2 = eglst[idx];
2036
+ if (eg2.ismsg) {
2037
+ const eg22id = eg2.lst.map((j) => j.lst[0].prodid);
2038
+ if (eg22id.join(",") == eg2id.join(",")) {
2039
+ break;
2040
+ }
2041
+ }
2042
+ }
2043
+ delete eg.ismsg;
2044
+ const oldlst = eg.lst;
2045
+ eg.lst = [eg.lst[0]];
2046
+ for (let j = 1; j < oldlst.length; j++) {
2047
+ eglst.splice(idx, 0, {
2048
+ label: "",
2049
+ lst: [oldlst[j]]
2050
+ });
2051
+ }
2052
+ svg.remove();
2053
+ this.showevents(sample, eglst, holder);
2054
+ pane.pane.remove();
2055
+ });
2056
+ div.append("button").text("Edit").on("click", (event2) => {
2057
+ const inputdom = document.createElement("input");
2058
+ div.node().insertBefore(inputdom, event2.target);
2059
+ const buttdom = document.createElement("button");
2060
+ div.node().insertBefore(buttdom, event2.target);
2061
+ div.node().removeChild(event2.target);
2062
+ inputdom.focus();
2063
+ const input = select_default(inputdom);
2064
+ const butt = select_default(buttdom);
2065
+ input.attr("size", 10).style("margin", "0px 10px").property("value", idlst.join(","));
2066
+ butt.text("Apply").on("click", () => {
2067
+ const lst0 = inputdom.value.trim().split(",");
2068
+ const goodid = [];
2069
+ for (const s of lst0) {
2070
+ if (!s) continue;
2071
+ const j = Number.parseInt(s);
2072
+ if (Number.isNaN(j)) return alert("invalid id: " + s);
2073
+ if (this.prodidisinvalid(j, sample)) return alert("invalid id " + j);
2074
+ goodid.push(j);
2075
+ }
2076
+ if (goodid.length <= 1) return alert("must be at least 2 products");
2077
+ const newevtlst = [];
2078
+ for (const id of goodid) {
2079
+ const lookprod = this.extractprod(id, sample);
2080
+ if (lookprod) {
2081
+ newevtlst.push({ label: lookprod.eventlabel, lst: [lookprod] });
2082
+ } else {
2083
+ return alert("unknown product id " + id);
2084
+ }
2085
+ }
2086
+ if (newevtlst.length <= 1) return alert("less than 2 products cannot make a group");
2087
+ eglst.unshift({ lst: newevtlst, ismsg: true });
2088
+ this.showsample(sample);
2089
+ pane.pane.remove();
2090
+ });
2091
+ });
2092
+ svtable({
2093
+ samplelst: [
2094
+ {
2095
+ pairlst: joinlst
2096
+ }
2097
+ ],
2098
+ nosample: true,
2099
+ holder: pane.body
2100
+ });
2101
+ const par = {
2102
+ pairlst: joinlst,
2103
+ genome: this.genome,
2104
+ holder: pane.body,
2105
+ hostURL: this.hostURL,
2106
+ jwt: this.jwt
2107
+ };
2108
+ import("./svgraph-O6ZVLNNN.js").then((p2) => {
2109
+ p2.default(par);
2110
+ });
2111
+ });
2112
+ }
2113
+ }
2114
+ const g_rows = g_eg.append("g").attr("transform", "translate(" + hpad + "," + (eg.lst.length > 1 ? vpad : 0) + ")");
2115
+ let y1 = 0;
2116
+ let evtid = 0;
2117
+ const bgcolor = "#ededed";
2118
+ const elabhash = {};
2119
+ for (const e of eg.lst) {
2120
+ elabhash[e.label] = 1;
2121
+ }
2122
+ const showngenenotip = {};
2123
+ for (const evt of eg.lst) {
2124
+ const prodlst = evt.lst;
2125
+ const prod = prodlst[0];
2126
+ const thispair = prod.usepair;
2127
+ if (eg.lst.length > 1 && evtid > 0) {
2128
+ const g_row2 = g_rows.append("g").attr("transform", "translate(" + (chrAw + s1 + rowh + s7 + geneAw + genesp + s2 / 2) + "," + y1 + ")");
2129
+ const text2 = g_row2.append("text").attr("fill", "#858585").attr("font-size", rowh2).attr("text-anchor", "middle").attr("font-family", font).attr("y", rowh2 / 2).attr("dominant-baseline", "middle");
2130
+ if (eg.ismsg) {
2131
+ text2.text(prod.mswhat ? prod.mswhat : "No connection detail");
2132
+ } else {
2133
+ text2.text("Reciprocal");
2134
+ }
2135
+ y1 += rowh2 + rows;
2136
+ }
2137
+ const textcolor = prod.chrA == prod.chrB ? "black" : colorctx;
2138
+ const g_row = g_rows.append("g").attr("transform", "translate(0," + y1 + ")");
2139
+ g_row.append("text").text(prod.chrA).attr("x", chrAw).attr("y", rowh / 2).attr("font-size", fontsize - 4).attr("text-anchor", "end").attr("dominant-baseline", "middle").attr("fill", textcolor);
2140
+ const extevt = { a: null, b: null };
2141
+ if (prod.geneA) {
2142
+ if (prod.geneA in showngenenotip) {
2143
+ showngenenotip[prod.geneA] = 1;
2144
+ } else {
2145
+ const lst = [];
2146
+ for (const elab in sample.gene2events[prod.geneA]) {
2147
+ if (!(elab in elabhash)) {
2148
+ lst.push(elab);
2149
+ }
2150
+ }
2151
+ if (lst.length > 0) {
2152
+ extevt.a = { lst };
2153
+ extevt.a.circle = g_row.append("circle").attr("fill", "white").attr("stroke", "black").attr("cx", chrAw + s1 + rowh / 2).attr("cy", rowh / 2).attr("r", rowh / 2);
2154
+ if (lst.length > 1) {
2155
+ extevt.a.text = g_row.append("text").text(lst.length).attr("x", chrAw + s1 + rowh / 2).attr("y", rowh / 2).attr("text-anchor", "middle").attr("font-size", rowh2).attr("dominant-baseline", "middle").attr("fill", "black");
2156
+ }
2157
+ g_row.append("line").attr("x1", chrAw + s1 + rowh).attr("x2", chrAw + s1 + rowh + s7).attr("y1", rowh / 2).attr("y2", rowh / 2).attr("stroke", "black").attr("shape-rendering", "crispEdges");
2158
+ }
2159
+ }
2160
+ }
2161
+ g_row.append("rect").attr("fill", colorbgleft).attr("x", chrAw + s1 + rowh + s7 + (geneAw + genesp) * (1 - prod.ratioA)).attr("width", (geneAw + genesp) * prod.ratioA).attr("height", rowh).attr("shape-rendering", "crispEdges");
2162
+ let antisense = false;
2163
+ if (thispair) {
2164
+ const thisn = thispair.a.isoform;
2165
+ if (thisn) {
2166
+ const _gm = this.genome.isoformmatch(thisn, prod.chrA, prod.posA);
2167
+ if (_gm && _gm.strand != prod.ortA) {
2168
+ antisense = true;
2169
+ }
2170
+ }
2171
+ }
2172
+ const boxa = g_row.append("rect").attr("fill", "none").attr("stroke", antisense ? "red" : "black").attr("shape-rendering", "crispEdges").attr("x", chrAw + s1 + rowh + s7).attr("width", geneAw + genesp).attr("height", rowh);
2173
+ let labA;
2174
+ if (prod.geneA) {
2175
+ const t = prod.geneA.split(",");
2176
+ if (t.length > 2) {
2177
+ labA = t[0] + "," + t[1] + "...";
2178
+ } else {
2179
+ labA = prod.geneA;
2180
+ }
2181
+ } else {
2182
+ labA = "";
2183
+ }
2184
+ g_row.append("text").text(labA).attr("x", chrAw + s1 + rowh + s7 + geneAw).attr("y", rowh / 2).attr("font-size", fontsize).attr("font-family", "Courier").attr(
2185
+ "font-weight",
2186
+ prod.hlgene ? prod.hlgene == 1 || prod.hlgene == 3 || prod.hlgene == 4 ? "bold" : "normal" : "normal"
2187
+ ).attr("fill", prod.hlgene ? prod.hlgene == 4 ? knownprod_c : "#545454" : "#545454").attr("text-anchor", "end").attr("dominant-baseline", "central");
2188
+ g_row.append("line").attr("x1", chrAw + s1 + rowh + s7 + geneAw + genesp).attr("x2", chrAw + s1 + rowh + s7 + geneAw + genesp + s2).attr("y1", rowh / 2).attr("y2", rowh / 2).attr("shape-rendering", "crispEdges").attr("stroke", "black");
2189
+ g_row.append("rect").attr("fill", colorbgright).attr("x", chrAw + s1 + rowh + s7 + geneAw + genesp + s2).attr("width", (genesp + geneBw) * prod.ratioB).attr("height", rowh).attr("shape-rendering", "crispEdges");
2190
+ antisense = false;
2191
+ if (thispair) {
2192
+ const thisn = thispair.b.isoform;
2193
+ if (thisn) {
2194
+ const _gm = this.genome.isoformmatch(thisn, prod.chrB, prod.posB);
2195
+ if (_gm && _gm.strand != prod.ortB) {
2196
+ antisense = true;
2197
+ }
2198
+ }
2199
+ }
2200
+ const boxb = g_row.append("rect").attr("fill", "none").attr("stroke", antisense ? "red" : "black").attr("shape-rendering", "crispEdges").attr("x", chrAw + s1 + rowh + s7 + geneAw + genesp + s2).attr("width", geneBw + genesp).attr("height", rowh);
2201
+ let labB;
2202
+ if (prod.geneB) {
2203
+ let t = prod.geneB.split(",");
2204
+ if (t.length > 2) {
2205
+ labB = t[0] + "," + t[1] + "...";
2206
+ } else {
2207
+ labB = prod.geneB;
2208
+ }
2209
+ } else {
2210
+ labB = "";
2211
+ }
2212
+ g_row.append("text").text(labB).attr("x", chrAw + s1 + rowh + s7 + geneAw + genesp + s2 + genesp).attr("y", rowh / 2).attr("font-size", fontsize).attr("font-family", "Courier").attr(
2213
+ "font-weight",
2214
+ prod.hlgene ? prod.hlgene == 2 || prod.hlgene == 3 || prod.hlgene == 4 ? "bold" : "normal" : "normal"
2215
+ ).attr("fill", prod.hlgene ? prod.hlgene == 4 ? knownprod_c : "#545454" : "#545454").attr("dominant-baseline", "central");
2216
+ if (prod.geneB) {
2217
+ if (prod.geneB in showngenenotip) {
2218
+ } else {
2219
+ showngenenotip[prod.geneB] = 1;
2220
+ const lst = [];
2221
+ for (const elab in sample.gene2events[prod.geneB]) {
2222
+ if (!(elab in elabhash)) {
2223
+ lst.push(elab);
2224
+ }
2225
+ }
2226
+ if (lst.length > 0) {
2227
+ extevt.b = { lst };
2228
+ extevt.b.circle = g_row.append("circle").attr("fill", "white").attr("stroke", "black").attr("cx", chrAw + s1 + rowh + s7 + geneAw + genesp + s2 + genesp + geneBw + s7 + rowh / 2).attr("cy", rowh / 2).attr("r", rowh / 2);
2229
+ if (lst.length > 1) {
2230
+ extevt.b.text = g_row.append("text").text(lst.length).attr("x", chrAw + s1 + rowh + s7 + geneAw + genesp + s2 + genesp + geneBw + s7 + rowh / 2).attr("y", rowh / 2).attr("text-anchor", "middle").attr("font-size", rowh2).attr("dominant-baseline", "middle").attr("fill", "black");
2231
+ }
2232
+ g_row.append("line").attr("x1", chrAw + s1 + rowh + s7 + geneAw + genesp + s2 + genesp + geneBw).attr("x2", chrAw + s1 + rowh + s7 + geneAw + genesp + s2 + genesp + geneBw + s7).attr("y1", rowh / 2).attr("y2", rowh / 2).attr("stroke", "black").attr("shape-rendering", "crispEdges");
2233
+ }
2234
+ }
2235
+ }
2236
+ g_row.append("text").text(prod.chrB).attr("x", chrAw + s1 + rowh + s7 + geneAw + genesp + s2 + genesp + geneBw + s7 + rowh + s1).attr("y", rowh / 2).attr("font-size", fontsize - 4).attr("dominant-baseline", "middle").attr("fill", textcolor);
2237
+ let x = chrAw + s1 + rowh + s7 + geneAw + genesp + s2 + genesp + geneBw + s7 + rowh + s1 + chrBw + s3;
2238
+ const x0 = x;
2239
+ const logobg = g_row.append("rect").attr("fill", "white").attr("stroke", "#858585").attr("x", x).attr("y", -1.5).attr("width", evt.svg.logow).attr("height", rowh + 2).attr("rx", 5).attr("ry", 5);
2240
+ x += s5;
2241
+ prod.hook.mainRating = g_row.append("text").text(prod.rating).attr("font-size", fontsize).attr("font-family", font).attr("fill", "#858585").attr("x", x).attr("y", rowh / 2).attr("dominant-baseline", "middle");
2242
+ x += evt.svg.ratingw + s5;
2243
+ prod.hook.mainFrame = {};
2244
+ prod.hook.mainFrame.bg = g_row.append("rect").attr("x", x + 1).attr("y", 3).attr("width", evt.svg.framew).attr("height", rowh - 7).attr("shape-rendering", "crispEdges");
2245
+ if (prod.usepair) {
2246
+ prod.hook.mainFrame.bg.attr("fill", prod.usepair.inframe ? colorinframe : coloroutframe);
2247
+ } else {
2248
+ prod.hook.mainFrame.bg.attr("fill", "none").attr("stroke", "black");
2249
+ }
2250
+ prod.hook.mainFrame.text = g_row.append("text").text(evt.svg.frameword).attr("font-size", fontsizeframe).attr("font-family", font).attr("fill", prod.usepair ? "white" : "black").attr("x", x + 1 + evt.svg.framew / 2).attr("text-anchor", "middle").attr("y", rowh / 2).attr("dominant-baseline", "middle");
2251
+ x += evt.svg.framew + s5;
2252
+ prod.hook.mainType = g_row.append("text").text(prod.type2).attr("font-size", fontsize).attr("font-family", font).attr("fill", "#858585").attr("x", x).attr("y", rowh / 2).attr("dominant-baseline", "middle");
2253
+ x += evt.svg.typew + s5;
2254
+ g_row.append("text").text(prod.featureA).attr("font-size", fontsizefeature).attr("font-family", font).attr("fill", "black").attr("x", x).attr("y", rowh / 4).attr("dominant-baseline", "middle");
2255
+ g_row.append("text").text(prod.featureB).attr("font-size", fontsizefeature).attr("font-family", font).attr("fill", "black").attr("x", x).attr("y", rowh * 3 / 4).attr("dominant-baseline", "middle");
2256
+ x += evt.svg.featurew + s5;
2257
+ g_row.append("text").text(Math.floor(prod.score)).attr("font-size", fontsize).attr("font-family", font).attr("fill", "#858585").attr("x", x).attr("y", rowh / 2).attr("dominant-baseline", "middle");
2258
+ x += evt.svg.scorew + s5 + s4;
2259
+ g_row.append("rect").attr("fill", "white").attr("fill-opacity", 0).attr("stroke", "none").attr("x", x0).attr("y", -1.5).attr("width", evt.svg.logow).attr("height", rowh + 2).on("mouseover", () => {
2260
+ logobg.attr("stroke-width", "2");
2261
+ const d = tip.clear().showunder(logobg.node()).d.append("div");
2262
+ this.prodstat(prod, d);
2263
+ }).on("mouseout", () => {
2264
+ logobg.attr("stroke-width", "1");
2265
+ tip.hide();
2266
+ });
2267
+ if (prodlst.length > 1) {
2268
+ const logobg2 = g_row.append("rect").attr("fill", "none").attr("stroke", "#858585").attr("x", x).attr("y", 3.5).attr("width", etw).attr("height", rowh - 4).attr("rx", 5).attr("ry", 5);
2269
+ g_row.append("text").text(prodlst.length - 1).attr("fill", "black").attr("font-size", fontsizefeature).attr("font-family", font).attr("x", x + etw / 2).attr("y", 3.5 + (rowh - 3.5) / 2).attr("text-anchor", "middle").attr("dominant-baseline", "middle");
2270
+ g_row.append("rect").attr("fill", "white").attr("fill-opacity", 0).attr("x", x).attr("y", 3.5).attr("width", etw).attr("height", rowh - 4).on("mouseover", (event) => {
2271
+ logobg2.attr("stroke-width", "2");
2272
+ const table = tip.clear().showunder(event.target).d.append("table").style("border-spacing", "10px").style("border-collapse", "separate");
2273
+ const tr1 = table.append("tr");
2274
+ const tr2 = table.append("tr");
2275
+ for (var k = 1; k < prodlst.length; k++) {
2276
+ this.eventlogo([prodlst[k]], tr1.append("td"));
2277
+ this.prodstat(prodlst[k], tr2.append("td"));
2278
+ }
2279
+ }).on("mouseout", () => {
2280
+ logobg2.attr("stroke-width", "1");
2281
+ tip.hide();
2282
+ });
2283
+ }
2284
+ x = chrAw + s1 + rowh + s7 + geneAw + genesp + s2 + genesp + geneBw + s7 + rowh + s1 + chrBw + s3 + eventlogow + s6;
2285
+ const text = g_row.append("text").text(evt.svg.recurtext).attr("font-size", fontsize - 4).attr("font-family", font).attr("fill", evt.svg.recurtextcolor).attr("x", x).attr("y", rowh / 2).attr("dominant-baseline", "middle");
2286
+ if (evt.svg.hasrecurrence) {
2287
+ text.attr("class", "sja_svgtext2").on("mouseover", (event) => {
2288
+ const p = event.target.getBoundingClientRect();
2289
+ tip.clear().show(p.left + p.width + 10, p.top - 15);
2290
+ const slst = this.elab2sample[evt.label];
2291
+ const dd = tip.d;
2292
+ dd.append("div").style("margin", "10px").style("color", "#aaa").text("This fusion is recurrent in other samples:");
2293
+ const table = dd.append("table").style("border-spacing", "10px").style("border-collapse", "separate");
2294
+ for (const s of slst) {
2295
+ if (s.name == sample.name) {
2296
+ continue;
2297
+ }
2298
+ const tr = table.append("tr");
2299
+ tr.append("td").style("font-weight", "bold").style("color", "#858585").text(s.name);
2300
+ this.eventlogo(s.events[evt.label], tr.append("td"));
2301
+ }
2302
+ }).on("mouseout", () => tip.hide());
2303
+ }
2304
+ g_row.append("rect").attr("x", chrAw + s1 + rowh + s7).attr("width", geneAw + genesp + s2 + genesp + geneBw).attr("height", rowh).attr("fill", "white").attr("fill-opacity", 0).on("mouseover", (event) => {
2305
+ boxa.attr("stroke-width", 2);
2306
+ boxb.attr("stroke-width", 2);
2307
+ const p = event.target.getBoundingClientRect();
2308
+ tip.clear().show(p.left + p.width + s7 / 2, p.top - 30);
2309
+ this.showsvpairs({
2310
+ prodlst: evt.lst,
2311
+ holder: tip.d,
2312
+ nodetail: true,
2313
+ sample,
2314
+ eglst,
2315
+ showothersample: true
2316
+ });
2317
+ }).on("mouseout", () => {
2318
+ tip.hide();
2319
+ boxa.attr("stroke-width", 1);
2320
+ boxb.attr("stroke-width", 1);
2321
+ }).on("click", (event) => {
2322
+ if (evt.inclick) {
2323
+ return;
2324
+ }
2325
+ evt.inclick = true;
2326
+ const p = event.target.getBoundingClientRect();
2327
+ const pane3 = newpane({
2328
+ x: p.left + p.width + s7 + rowh + s1 + chrBw + s3 + eventlogow + s6 + recurw + 5,
2329
+ y: p.top - 100,
2330
+ close: function() {
2331
+ evt.inclick = false;
2332
+ pane3.pane.remove();
2333
+ }
2334
+ });
2335
+ const prod2 = evt.lst[0];
2336
+ pane3.header.html(
2337
+ '<span style="padding:2px 4px;background-color:' + colorbgleft + ';">' + (prod2.geneA ? prod2.geneA : prod2.chrA) + '</span><span style="padding:2px 4px;background-color:' + colorbgright + ';">' + (prod2.geneB ? prod2.geneB : prod2.chrB) + "</span>"
2338
+ );
2339
+ this.showsvpairs({
2340
+ prodlst: evt.lst,
2341
+ holder: pane3.body
2342
+ });
2343
+ });
2344
+ if (extevt.a) {
2345
+ g_row.append("circle").attr("cx", chrAw + s1 + rowh / 2).attr("cy", rowh / 2).attr("r", rowh / 2).attr("fill", "white").attr("fill-opacity", 0).on("mouseover", (event) => this.extevt_mover(extevt.a, event.target, sample)).on("mouseout", () => {
2346
+ this.extevt_mo(extevt.a);
2347
+ tip.hide();
2348
+ }).on("click", (event) => {
2349
+ this.extevt_c(extevt.a, event.target, sample);
2350
+ });
2351
+ }
2352
+ if (extevt.b) {
2353
+ g_row.append("circle").attr("cx", chrAw + s1 + rowh + s7 + geneAw + genesp + s2 + genesp + geneBw + s7 + rowh / 2).attr("cy", rowh / 2).attr("r", rowh / 2).attr("fill", "white").attr("fill-opacity", 0).on("mouseover", (event) => this.extevt_mover(extevt.b, event.target, sample)).on("mouseout", () => {
2354
+ this.extevt_mo(extevt.b);
2355
+ tip.hide();
2356
+ }).on("click", (event) => this.extevt_c(extevt.b, event.target, sample));
2357
+ }
2358
+ y1 += rowh + rows;
2359
+ evtid++;
2360
+ }
2361
+ y += groupheight + (eg.lst.length > 1 ? gvpad : 0);
2362
+ }
2363
+ holder.style("display", "none");
2364
+ }
2365
+ extevt_mover(ext, dom, sample) {
2366
+ ext.circle.attr("fill", "#858585");
2367
+ if (ext.text) {
2368
+ ext.text.attr("fill", "white");
2369
+ }
2370
+ tip.clear().showunder(dom);
2371
+ tip.d.append("div").style("margin", "10px").style("color", "#aaa").text("Associated fusions from this sample:");
2372
+ this.extevt_table(ext.lst, tip.d, sample);
2373
+ }
2374
+ extevt_mo(ext) {
2375
+ ext.circle.attr("fill", "white");
2376
+ if (ext.text) {
2377
+ ext.text.attr("fill", "black");
2378
+ }
2379
+ }
2380
+ extevt_c(ext, dom, sample) {
2381
+ const p = dom.getBoundingClientRect();
2382
+ const pane = newpane({ x: p.left, y: p.top + p.height + 10 });
2383
+ this.extevt_table(ext.lst, pane.body, sample);
2384
+ }
2385
+ extevt_table(lst, holder, sample) {
2386
+ const table = holder.append("table").style("border-spacing", "10px").style("border-collapse", "separate");
2387
+ for (const elab of lst) {
2388
+ const tr = table.append("tr");
2389
+ const prodlst = sample.events[elab];
2390
+ if (!prodlst) {
2391
+ tr.append('<td colspan=2 style="color:red">No products found for ' + elab + "</td>");
2392
+ continue;
2393
+ }
2394
+ const prod = prodlst[0];
2395
+ tr.append("td").style("text-align", "right").text(prod.geneA ? prod.geneA : prod.chrA);
2396
+ tr.append("td").text(prod.geneB ? prod.geneB : prod.chrB);
2397
+ this.eventlogo(prodlst, tr.append("td"));
2398
+ }
2399
+ }
2400
+ eventlogo(prodlst, holder) {
2401
+ const d = holder.append("div");
2402
+ if (!prodlst || prodlst.length == 0) {
2403
+ d.style("color", "red").text("No products");
2404
+ } else {
2405
+ const p = prodlst[0];
2406
+ d.append("div").style("display", "inline-block").style("padding", "2px 4px").style("border", "solid 1px #858585").style("border-radius", "5px").html(
2407
+ p.rating + '&nbsp;<span style="font-size:70%;vertical-align:2px;' + (p.usepair ? p.usepair.inframe ? "padding:2px 4px;background-color:" + colorinframe + ';color:white;">IN' : "padding:2px 4px;background-color:" + coloroutframe + ';color:white;">O' : 'padding:1px 3px;border:solid 1px black;background-color:white;color:black;">?') + '</span>&nbsp;<span style="color:#858585">' + p.type2 + '</span>&nbsp;<div style="display:inline-block;font-size:70%;line-height:.9">' + p.featureA + "<br>" + p.featureB + "</div>&nbsp;" + Math.floor(p.score)
2408
+ );
2409
+ if (prodlst.length > 1) {
2410
+ d.append("div").style("display", "inline-block").style("margin-left", "10px").style("padding", "2px 4px").style("font-size", ".7em").style("border", "solid 1px #858585").style("border-radius", 5).text(prodlst.length - 1);
2411
+ }
2412
+ }
2413
+ return d;
2414
+ }
2415
+ prodstat(prod, holder) {
2416
+ holder.append("p").text("Product id: " + prod.prodid);
2417
+ const alertcolor = "#FFb3b3", bg = "#f1f1f1";
2418
+ const table = holder.append("table").style("border-spacing", "8px").style("border-collapse", "separate");
2419
+ let tr = table.append("tr");
2420
+ tr.append("td");
2421
+ tr.append("td").style("background-color", bg).text(prod.geneA ? prod.geneA : prod.chrA);
2422
+ tr.append("td").style("background-color", bg).text(prod.geneB ? prod.geneB : prod.chrB);
2423
+ tr = table.append("tr");
2424
+ tr.append("td").style("font-size", "80%").style("background-color", bg).text("chimeric reads");
2425
+ tr.append("td").style("padding", "5px").style("background-color", prod.readsA <= this.cf_reads ? alertcolor : "").text(prod.readsA);
2426
+ tr.append("td").style("padding", "5px").style("background-color", prod.readsB <= this.cf_reads ? alertcolor : "").text(prod.readsB);
2427
+ tr = table.append("tr");
2428
+ tr.append("td").style("font-size", "80%").style("background-color", bg).text("ratio");
2429
+ tr.append("td").style("padding", "5px").style("background-color", prod.ratioA <= this.cf_ratio ? alertcolor : "").text(Math.ceil(prod.ratioA * 100) + "%");
2430
+ tr.append("td").style("padding", "5px").style("background-color", prod.ratioB <= this.cf_ratio ? alertcolor : "").text(Math.ceil(prod.ratioB * 100) + "%");
2431
+ tr = table.append("tr");
2432
+ tr.append("td").style("font-size", "80%").style("background-color", bg).text("contig length");
2433
+ tr.append("td").style("padding", "5px").style("background-color", prod.matchA <= this.cf_match ? alertcolor : "").text(prod.matchA + " bp");
2434
+ tr.append("td").style("padding", "5px").style("background-color", prod.matchB <= this.cf_match ? alertcolor : "").text(prod.matchB + " bp");
2435
+ tr = table.append("tr");
2436
+ tr.append("td").style("font-size", "80%").style("background-color", bg).text("repeat score");
2437
+ tr.append("td").style("padding", "5px").style("background-color", prod.repeatA >= this.cf_repeat ? alertcolor : "").text(prod.repeatA);
2438
+ tr.append("td").style("padding", "5px").style("background-color", prod.repeatB >= this.cf_repeat ? alertcolor : "").text(prod.repeatB);
2439
+ }
2440
+ showsvpairs(arg) {
2441
+ const table = arg.holder.append("table").style("border-spacing", "10px").style("border-collapse", "separate");
2442
+ const tr = table.append("tr");
2443
+ const _tr = table.append("tr");
2444
+ const expressiontd = _tr.append("td").attr("colspan", arg.prodlst.length);
2445
+ const tr2 = table.append("tr");
2446
+ const geneset = /* @__PURE__ */ new Set();
2447
+ for (const prod of arg.prodlst) {
2448
+ if (prod.geneA) {
2449
+ geneset.add(prod.geneA);
2450
+ }
2451
+ if (prod.geneB) {
2452
+ geneset.add(prod.geneB);
2453
+ }
2454
+ const td = tr.append("td").style("vertical-align", "top");
2455
+ if (arg.nodetail) {
2456
+ const div = td.append("div");
2457
+ div.append("span").style("padding-right", "20px").text("Product id: " + prod.prodid);
2458
+ const ratingsl = div.append("select").style("margin-right", "5px").on("change", (event) => {
2459
+ const sl = event.target;
2460
+ const newv = sl.options[sl.selectedIndex].innerHTML;
2461
+ prod.rating = newv;
2462
+ if (prod.hook.mainRating) {
2463
+ prod.hook.mainRating.text(newv);
2464
+ }
2465
+ if (prod.hook.lessRating) {
2466
+ prod.hook.lessRating.text(newv);
2467
+ }
2468
+ });
2469
+ const framesl = div.append("select").style("margin-right", "5px").on("change", (event) => {
2470
+ const sl = event.target;
2471
+ const inframe = sl.options[sl.selectedIndex].innerHTML == "in-frame";
2472
+ prod.usepair.inframe = inframe;
2473
+ if (prod.hook.mainFrame) {
2474
+ prod.hook.mainFrame.text.text(inframe ? "IN" : "O");
2475
+ prod.hook.mainFrame.bg.attr("fill", inframe ? colorinframe : coloroutframe);
2476
+ }
2477
+ if (prod.hook.lessFrame) {
2478
+ prod.hook.lessFrame.html(
2479
+ inframe ? '<span style="background-color:' + colorinframe + ';color:white;padding:2px 3px;font-size:80%;white-space:nowrap">In frame</span>' : '<span style="background-color:' + coloroutframe + ';color:white;padding:2px 3px;font-size:80%;white-space:nowrap">Out of frame</span>'
2480
+ );
2481
+ }
2482
+ });
2483
+ const typesl = div.append("select").style("margin-right", "5px").on("change", (event) => {
2484
+ const sl = event.target;
2485
+ const i = sl.selectedIndex;
2486
+ const newv = sl.options[i].innerHTML;
2487
+ prod.type2 = newv;
2488
+ if (prod.hook.mainType) {
2489
+ prod.hook.mainType.text(newv);
2490
+ }
2491
+ prod.iscloss = i == 0;
2492
+ prod.isnloss = i == 1;
2493
+ prod.isfusion = i == 2;
2494
+ prod.isitd = i == 3;
2495
+ prod.isuptss = i == 4;
2496
+ prod.isother = i == 5;
2497
+ });
2498
+ const effectsl = div.append("select").style("margin-right", "5px").on("change", (event) => {
2499
+ const sl = event.target;
2500
+ const newv = sl.options[sl.selectedIndex].innerHTML;
2501
+ prod.functioneffect = newv;
2502
+ });
2503
+ div.append("button").text("Create group").on("click", (event) => {
2504
+ let dnew = document.createElement("div");
2505
+ div.node().insertBefore(dnew, event.target);
2506
+ select_default(event.target).remove();
2507
+ dnew = select_default(dnew);
2508
+ dnew.style("display", "inline-block");
2509
+ if (!arg.eglst) {
2510
+ dnew.text("Cannot do it here: please go to sample " + arg.sample.name);
2511
+ return;
2512
+ }
2513
+ dnew.append("input").attr("size", 10).property("value", prod.prodid + ",");
2514
+ dnew.append("button").style("margin", "0px 10px").text("Apply").on("click", (event2) => {
2515
+ const lst0 = event2.target.previousSibling.value.trim().split(",");
2516
+ const goodid = [];
2517
+ for (const i of lst0) {
2518
+ const j = Number.parseInt(i);
2519
+ if (Number.isNaN(j)) return alert("invalid id " + i);
2520
+ if (this.prodidisinvalid(j, arg.sample)) return alert("invalid id " + j);
2521
+ goodid.push(j);
2522
+ }
2523
+ if (goodid.length <= 1) return alert("need at least 2 id");
2524
+ const newevtlst = [];
2525
+ for (const i of goodid) {
2526
+ const thisprod = this.extractprod(i, arg.sample);
2527
+ if (thisprod) {
2528
+ newevtlst.push({ label: thisprod.eventlabel, lst: [thisprod] });
2529
+ } else {
2530
+ return alert("invalid id " + i);
2531
+ }
2532
+ }
2533
+ if (newevtlst.length <= 1) return alert("less than 2 products cannot make a group");
2534
+ arg.eglst.unshift({ lst: newevtlst, ismsg: true });
2535
+ this.showsample(arg.sample);
2536
+ tip.hide();
2537
+ });
2538
+ });
2539
+ ratingsl.append("option").text("HQ");
2540
+ ratingsl.append("option").text("LQ");
2541
+ ratingsl.append("option").text("RT");
2542
+ ratingsl.append("option").text("bad");
2543
+ ratingsl.append("option").text("Major");
2544
+ switch (prod.rating) {
2545
+ case "HQ":
2546
+ ratingsl.property("selectedindex", 0);
2547
+ break;
2548
+ case "LQ":
2549
+ ratingsl.property("selectedIndex", 1);
2550
+ break;
2551
+ case "RT":
2552
+ ratingsl.property("selectedIndex", 2);
2553
+ break;
2554
+ case "bad":
2555
+ ratingsl.property("selectedIndex", 3);
2556
+ break;
2557
+ case "Major":
2558
+ ratingsl.property("selectedIndex", 4);
2559
+ break;
2560
+ default:
2561
+ alert("unknown rating: " + prod.rating);
2562
+ }
2563
+ framesl.append("option").text("in-frame");
2564
+ framesl.append("option").text("out-of-frame");
2565
+ if (!prod.usepair) {
2566
+ framesl.attr("disabled", 1);
2567
+ } else {
2568
+ framesl.property("selectedIndex", prod.usepair.inframe ? 0 : 1);
2569
+ }
2570
+ typesl.append("option").text("CLoss");
2571
+ typesl.append("option").text("NLoss");
2572
+ typesl.append("option").text("Fusion");
2573
+ typesl.append("option").text("ITD");
2574
+ typesl.append("option").text("upTSS");
2575
+ typesl.append("option").text("other");
2576
+ if (prod.iscloss) {
2577
+ typesl.property("selectedIndex", 0);
2578
+ } else if (prod.isnloss) {
2579
+ typesl.property("selectedIndex", 1);
2580
+ } else if (prod.isfusion) {
2581
+ typesl.property("selectedIndex", 2);
2582
+ } else if (prod.isitd) {
2583
+ typesl.property("selectedIndex", 3);
2584
+ } else if (prod.isuptss) {
2585
+ typesl.property("selectedIndex", 4);
2586
+ } else if (prod.isother) {
2587
+ typesl.property("selectedIndex", 5);
2588
+ } else {
2589
+ alert("unknown type2: " + prod.type2);
2590
+ }
2591
+ effectsl.append("option").text("unknown effect");
2592
+ effectsl.append("option").text("fusion gene");
2593
+ effectsl.append("option").text("truncation, activated oncogene");
2594
+ effectsl.append("option").text("truncation, loss-of-function");
2595
+ effectsl.append("option").text("truncation, no consequence");
2596
+ effectsl.append("option").text("ITD");
2597
+ switch (prod.functioneffect) {
2598
+ case void 0:
2599
+ effectsl.property("selectedIndex", 0);
2600
+ break;
2601
+ case "fusion gene":
2602
+ effectsl.property("selectedIndex", 1);
2603
+ break;
2604
+ case "truncation, activated oncogene":
2605
+ effectsl.property("selectedIndex", 2);
2606
+ break;
2607
+ case "truncation, loss-of-function":
2608
+ effectsl.property("selectedIndex", 3);
2609
+ break;
2610
+ case "truncation, no consequence":
2611
+ effectsl.property("selectedIndex", 4);
2612
+ break;
2613
+ case "ITD":
2614
+ effectsl.property("selectedIndex", 5);
2615
+ break;
2616
+ }
2617
+ }
2618
+ const p = {
2619
+ a: {
2620
+ chr: prod.chrA,
2621
+ position: prod.posA,
2622
+ strand: prod.ortA,
2623
+ name: prod.geneA ? prod.geneA : prod.chrA,
2624
+ ratio: prod.ratioA.toFixed(2),
2625
+ feature: prod.featureA,
2626
+ contiglen: prod.matchA,
2627
+ chimericreads: prod.readsA,
2628
+ repeatscore: prod.repeatA
2629
+ },
2630
+ b: {
2631
+ chr: prod.chrB,
2632
+ position: prod.posB,
2633
+ strand: prod.ortB,
2634
+ name: prod.geneB ? prod.geneB : prod.chrB,
2635
+ ratio: prod.ratioB.toFixed(2),
2636
+ feature: prod.featureB,
2637
+ contiglen: prod.matchB,
2638
+ chimericreads: prod.readsB,
2639
+ repeatscore: prod.repeatB
2640
+ },
2641
+ rating: prod.rating,
2642
+ score: Math.ceil(prod.score),
2643
+ originalprod: prod
2644
+ };
2645
+ if (prod.usepair) {
2646
+ p.inframe = prod.usepair.inframe;
2647
+ const x = prod.usepair.a;
2648
+ p.a.gm = this.genome.isoformmatch(x.isoform, prod.chrA, prod.posA);
2649
+ p.a.codon = x.codon;
2650
+ p.a.exon = x.exon;
2651
+ p.a.atupstream = x.atupstream;
2652
+ p.a.atdownstream = x.atdownstream;
2653
+ p.a.atutr5 = x.atutr5;
2654
+ p.a.atutr3 = x.atutr3;
2655
+ const y = prod.usepair.b;
2656
+ p.b.gm = this.genome.isoformmatch(y.isoform, prod.chrB, prod.posB);
2657
+ p.b.codon = y.codon;
2658
+ p.b.exon = y.exon;
2659
+ p.b.atupstream = y.atupstream;
2660
+ p.b.atdownstream = y.atdownstream;
2661
+ p.b.atutr5 = y.atutr5;
2662
+ p.b.atutr3 = y.atutr3;
2663
+ let aalen = 0, bplen2 = 0;
2664
+ if (x.contigaa && y.contigaa) {
2665
+ aalen = y.contigaa - x.contigaa - 1;
2666
+ }
2667
+ if (x.contigbp && y.contigbp) {
2668
+ bplen2 = y.contigbp - x.contigbp - 1;
2669
+ }
2670
+ if (aalen) {
2671
+ p.interstitial = { aalen };
2672
+ }
2673
+ if (bplen2) {
2674
+ if (!p.interstitial) p.interstitial = {};
2675
+ p.interstitial.bplen = bplen2;
2676
+ }
2677
+ }
2678
+ svtable({
2679
+ samplelst: [
2680
+ {
2681
+ pairlst: [p]
2682
+ }
2683
+ ],
2684
+ nosample: true,
2685
+ holder: td
2686
+ });
2687
+ const par = {
2688
+ pairlst: [p],
2689
+ genome: this.genome,
2690
+ holder: td,
2691
+ quiet: true,
2692
+ hostURL: this.hostURL,
2693
+ jwt: this.jwt
2694
+ };
2695
+ import("./svgraph-O6ZVLNNN.js").then((p2) => {
2696
+ p2.default(par);
2697
+ });
2698
+ if (!arg.nodetail) {
2699
+ const td2 = tr2.append("td").style("font-size", ".8em").style("vertical-align", "top");
2700
+ const lst = [];
2701
+ for (const at of this.atlst) {
2702
+ if (!at.custom) continue;
2703
+ const v = prod[at.key];
2704
+ lst.push({
2705
+ k: at.label,
2706
+ v: v == void 0 ? "" : v
2707
+ });
2708
+ }
2709
+ make_table_2col(td2, lst, 25);
2710
+ prod.pairs.sort((a, b) => {
2711
+ if (a.inuse) return -1;
2712
+ if (b.inuse) return 1;
2713
+ return 0;
2714
+ });
2715
+ const table0 = td2.append("table");
2716
+ for (const pair of prod.pairs) {
2717
+ const tr3 = table0.append("tr");
2718
+ tr3.append("td").html(
2719
+ (pair.inframe ? "in-frame" : "out-of-frame") + '<div style="font-size:70%">frame code: ' + pair.frame + "</div>"
2720
+ );
2721
+ const td3 = tr3.append("td");
2722
+ const table2 = td3.append("table").style("margin-bottom", "20px").style("border", pair.inuse ? "solid 1px black" : "").style("border-spacing", "10px").style("border-collapse", "separate");
2723
+ let _tr2 = table2.append("tr").style("color", "#858585").style("font-size", ".7em");
2724
+ _tr2.append("td").text("gene");
2725
+ _tr2.append("td").text("isoform");
2726
+ _tr2.append("td").text("gene position");
2727
+ _tr2.append("td").text("exon");
2728
+ _tr2.append("td").text("anchor");
2729
+ _tr2.append("td").text("contig AA");
2730
+ _tr2.append("td").text("contig bp");
2731
+ const tr1 = table2.append("tr");
2732
+ const tr22 = table2.append("tr");
2733
+ tr1.append("td").text(prod.geneA ? prod.geneA : prod.chrA);
2734
+ tr22.append("td").text(prod.geneB ? prod.geneB : prod.chrB);
2735
+ tr1.append("td").text(pair.a.isoform ? pair.a.isoform : "");
2736
+ tr22.append("td").text(pair.b.isoform ? pair.b.isoform : "");
2737
+ tr1.append("td").text(
2738
+ pair.a.isoform ? pair.a.codon != void 0 ? "codon: " + pair.a.codon : pair.a.atutr5 ? "5' UTR" : pair.a.atutr3 ? "3' UTR" : pair.a.atupstream ? "upstream" : "downstream" : ""
2739
+ );
2740
+ tr22.append("td").text(
2741
+ pair.b.isoform ? pair.b.codon != void 0 ? "codon: " + pair.b.codon : pair.b.atutr5 ? "5' UTR" : pair.b.atutr3 ? "3' UTR" : pair.b.atupstream ? "upstream" : "downstream" : ""
2742
+ );
2743
+ tr1.append("td").text(pair.a.exon ? pair.a.exon : "");
2744
+ tr22.append("td").text(pair.b.exon ? pair.b.exon : "");
2745
+ tr1.append("td").text(pair.a.anchor ? pair.a.anchor : "");
2746
+ tr22.append("td").text(pair.b.anchor ? pair.b.anchor : "");
2747
+ tr1.append("td").html(pair.a.contigaa ? '<span style="color:#858585;font-size:70%">ends at</span> ' + pair.a.contigaa : "?");
2748
+ tr22.append("td").html(
2749
+ pair.b.contigaa ? '<span style="color:#858585;font-size:70%">starts at</span> ' + pair.b.contigaa : "?"
2750
+ );
2751
+ tr1.append("td").html(pair.a.contigbp ? '<span style="color:#858585;font-size:70%">ends at</span> ' + pair.a.contigbp : "?");
2752
+ tr22.append("td").html(
2753
+ pair.b.contigbp ? '<span style="color:#858585;font-size:70%">starts at</span> ' + pair.b.contigbp : "?"
2754
+ );
2755
+ }
2756
+ }
2757
+ }
2758
+ if (!arg.sample) {
2759
+ return;
2760
+ }
2761
+ const thislab = arg.prodlst[0].eventlabel;
2762
+ const samplelst = this.elab2sample[thislab];
2763
+ const othersample = [];
2764
+ if (samplelst) {
2765
+ for (const s of samplelst) {
2766
+ if (s.name != arg.sample.name) othersample.push(s);
2767
+ }
2768
+ }
2769
+ if (arg.showothersample && othersample.length > 0) {
2770
+ arg.holder.append("button").style("display", "block").style("margin", "20px").text("Show in " + othersample.length + " other sample" + (othersample.length > 1 ? "s" : "")).on("click", (event) => {
2771
+ select_default(event.target).remove();
2772
+ for (const sample of othersample) {
2773
+ const prodlst = sample.events[thislab];
2774
+ if (!prodlst) {
2775
+ arg.holder.append("div").style("margin", "20px").style("color", "red").text("Error: no products for this event in " + sample.name);
2776
+ continue;
2777
+ }
2778
+ const table2 = arg.holder.append("table").style("margin-top", "20px").style("border", "solid 1px #ccc");
2779
+ const tr3 = table2.append("tr");
2780
+ tr3.append("td").text(sample.name);
2781
+ const td = tr3.append("td");
2782
+ this.showsvpairs({
2783
+ prodlst,
2784
+ holder: td,
2785
+ nodetail: true,
2786
+ sample,
2787
+ // FIXME: eglst info is hidden somewhere in sample.egglst
2788
+ eglst: null
2789
+ });
2790
+ }
2791
+ });
2792
+ }
2793
+ if (this.expression.genes && geneset.size > 0) {
2794
+ const table2 = expressiontd.append("table");
2795
+ const tr3 = table2.append("tr");
2796
+ for (const gene of geneset) {
2797
+ const expd = this.expression.genes[gene];
2798
+ if (expd) {
2799
+ const div = tr3.append("td").style("vertical-align", "top").append("div").style("display", "inline-block").style("margin-right", "20px").style("border", "solid 1px #ccc");
2800
+ div.append("div").style("background-color", "#ededed").style("padding", "10px").text(gene);
2801
+ if (arg.sample) {
2802
+ for (const v of expd) {
2803
+ if (v.sample == arg.sample.name) {
2804
+ v.ishighlight = true;
2805
+ div.append("div").style("padding", "10px").style("font-size", "70%").html("Expression in " + arg.sample.name + ': <span style="font-size:150%">' + v.value + "</span>");
2806
+ } else {
2807
+ v.ishighlight = false;
2808
+ }
2809
+ }
2810
+ }
2811
+ showgenevalues({
2812
+ data: this.expression.genes[gene],
2813
+ holder: div.append("div").style("margin", "10px"),
2814
+ width: 200,
2815
+ height: 200,
2816
+ namename: "sample"
2817
+ });
2818
+ } else {
2819
+ tr3.append("td").style("vertical-align", "top").text("No expression data for " + gene + "</td>");
2820
+ }
2821
+ }
2822
+ }
2823
+ }
2824
+ prodidisinvalid(id, sample) {
2825
+ for (const egg of sample.egglst) {
2826
+ for (const eg of egg.lst) {
2827
+ for (const e of eg.lst) {
2828
+ for (const p of e.lst) {
2829
+ if (p.prodid == id) return false;
2830
+ }
2831
+ }
2832
+ }
2833
+ }
2834
+ return true;
2835
+ }
2836
+ extractprod(id, sample) {
2837
+ let prod = null;
2838
+ for (let n = 0; n < sample.egglst.length; n++) {
2839
+ const _egg = sample.egglst[n];
2840
+ for (let j = 0; j < _egg.lst.length; j++) {
2841
+ const _eg = _egg.lst[j];
2842
+ for (let k = 0; k < _eg.lst.length; k++) {
2843
+ const _evt = _eg.lst[k];
2844
+ for (let p = 0; p < _evt.lst.length; p++) {
2845
+ const p2 = _evt.lst[p];
2846
+ if (p2.prodid == id) {
2847
+ prod = p2;
2848
+ _evt.lst.splice(p, 1);
2849
+ break;
2850
+ }
2851
+ }
2852
+ if (prod) {
2853
+ if (_evt.lst.length == 0) {
2854
+ _eg.lst.splice(k, 1);
2855
+ }
2856
+ break;
2857
+ }
2858
+ }
2859
+ if (prod) {
2860
+ if (_eg.lst.length == 0) {
2861
+ _egg.lst.splice(j, 1);
2862
+ } else {
2863
+ if (_eg.ismsg && _eg.lst.length == 1) {
2864
+ delete _eg.ismsg;
2865
+ }
2866
+ }
2867
+ break;
2868
+ }
2869
+ }
2870
+ if (prod) {
2871
+ if (_egg.lst.length == 0) {
2872
+ sample.egglst.splice(n, 1);
2873
+ }
2874
+ break;
2875
+ }
2876
+ }
2877
+ return prod;
2878
+ }
2879
+ // end of class
2880
+ };
2881
+ function msjoin(prod, newholder) {
2882
+ if (prod.isitd) return;
2883
+ if (prod.sv_ort == "?") return;
2884
+ var single = true;
2885
+ var thispair = prod.usepair;
2886
+ for (var i = 0; i < newholder.length; i++) {
2887
+ var tmplst = newholder[i];
2888
+ var prod2 = tmplst[0];
2889
+ if (prod.chrB == prod2.chrA && prod.ortB == prod2.ortA) {
2890
+ if (testreadcount(prod, prod2)) {
2891
+ var thatpair = prod2.usepair;
2892
+ if (thispair && thatpair && thispair.b.isoform && thispair.b.isoform == thatpair.a.isoform) {
2893
+ var p1 = thispair.b;
2894
+ var p2 = thatpair.a;
2895
+ var ahead = false;
2896
+ if (p1.atutr5) {
2897
+ if (p2.codon != void 0) {
2898
+ ahead = true;
2899
+ prod2.mswhat = "5' UTR to coding region";
2900
+ } else if (p2.atutr3) {
2901
+ ahead = true;
2902
+ prod2.mswhat = "5' UTR to 3' UTR";
2903
+ } else if (p2.atutr5 && p1.atutr5.off < p2.atutr5.off) {
2904
+ ahead = true;
2905
+ prod2.mswhat = p2.atutr5.off - p1.atutr5.off + " bp apart in 5' UTR";
2906
+ }
2907
+ } else if (p1.atutr3) {
2908
+ if (p2.atutr3 && p1.atutr3.off < p2.atutr3.off) {
2909
+ ahead = true;
2910
+ prod2.mswhat = p2.atutr3.off - p1.atutr3.off + " bp apart in 3' UTR";
2911
+ }
2912
+ } else if (p1.codon != void 0) {
2913
+ if (p2.codon != void 0 && p2.codon > p1.codon) {
2914
+ ahead = true;
2915
+ prod2.mswhat = p2.codon - p1.codon + " aa apart in protein";
2916
+ } else if (p2.atutr3) {
2917
+ ahead = true;
2918
+ prod2.mswhat = "coding region to 3' UTR";
2919
+ }
2920
+ }
2921
+ if (ahead) {
2922
+ tmplst.unshift(prod);
2923
+ single = false;
2924
+ break;
2925
+ }
2926
+ }
2927
+ var dst = prod2.posA - prod.posB;
2928
+ if (prod.ortB == "+" && dst > 0 && dst < genomelimit || prod.ortB == "-" && dst < 0 && -dst < genomelimit) {
2929
+ prod2.mswhat = Math.abs(dst) + " bp apart on genome";
2930
+ tmplst.unshift(prod);
2931
+ single = false;
2932
+ break;
2933
+ }
2934
+ }
2935
+ }
2936
+ prod2 = tmplst[tmplst.length - 1];
2937
+ if (prod.chrA == prod2.chrB && prod.ortA == prod2.ortB) {
2938
+ if (testreadcount(prod2, prod)) {
2939
+ var thatpair = prod2.usepair;
2940
+ if (thispair && thatpair && thispair.a.isoform && thispair.a.isoform == thatpair.b.isoform) {
2941
+ var p1 = thatpair.b;
2942
+ var p2 = thispair.a;
2943
+ var behind = false;
2944
+ if (p1.atutr5) {
2945
+ if (p2.codon != void 0) {
2946
+ behind = true;
2947
+ prod.mswhat = "5' UTR to coding region";
2948
+ } else if (p2.atutr3) {
2949
+ behind = true;
2950
+ prod.mswhat = "5' UTR to 3' UTR";
2951
+ } else if (p2.atutr5 && p1.atutr5.off < p2.atutr5.off) {
2952
+ behind = true;
2953
+ prod.mswhat = p2.atutr5.off - p1.atutr5.off + " bp apart in 5' UTR";
2954
+ }
2955
+ } else if (p1.atutr3) {
2956
+ if (p2.atutr3 && p1.atutr3.off < p2.atutr3.off) {
2957
+ behind = true;
2958
+ prod.mswhat = p2.atutr3.off - p1.atutr3.off + " bp apart in 3' UTR";
2959
+ }
2960
+ } else if (p1.codon != void 0) {
2961
+ if (p2.codon != void 0 && p2.codon > p1.codon) {
2962
+ behind = true;
2963
+ prod.mswhat = p2.codon - p1.codon + " aa apart in protein";
2964
+ } else if (p2.atutr3) {
2965
+ behind = true;
2966
+ prod.mswhat = "coding region to 3' UTR";
2967
+ }
2968
+ }
2969
+ if (behind) {
2970
+ tmplst.push(prod);
2971
+ single = false;
2972
+ break;
2973
+ }
2974
+ }
2975
+ var dst = prod.posA - prod2.posB;
2976
+ if (prod.ortA == "+" && dst > 0 && dst < genomelimit && prod.ortA == "-" && dst < 0 && -dst < genomelimit) {
2977
+ prod.mswhat = Math.abs(dst) + " bp apart on genome";
2978
+ tmplst.push(prod);
2979
+ single = false;
2980
+ break;
2981
+ }
2982
+ }
2983
+ }
2984
+ }
2985
+ if (single) {
2986
+ newholder.push([prod]);
2987
+ }
2988
+ function testreadcount(p12, p22) {
2989
+ if (!p12.usepair || !p12.usepair.inframe) return false;
2990
+ if (!p22.usepair || !p22.usepair.inframe) return false;
2991
+ if (p12.readsB == 0 || p22.readsA == 0) return false;
2992
+ var fold = p12.readsB / p22.readsA;
2993
+ return fold >= 0.2 && fold <= 5;
2994
+ }
2995
+ }
2996
+ function svtable(arg) {
2997
+ const table = arg.holder.append("table").style("border-spacing", "10px").style("border-collapse", "separate");
2998
+ const htr = table.append("tr").style("font-size", "70%").style("color", "#858585");
2999
+ const fields = [
3000
+ { label: "Feature", hide: true, get: (a) => a.feature },
3001
+ { label: "Ratio", hide: true, get: (a) => Math.ceil(a.ratio * 100) + "%" },
3002
+ { label: "Chimeric<br>reads", hide: true, get: (a) => a.chimericreads },
3003
+ { label: "Contig<br>length", hide: true, get: (a) => a.contiglen },
3004
+ { label: "Repeat<br>score", hide: true, get: (a) => a.repeatscore },
3005
+ { label: "Cicero<br>score", hide: true, atpair: true, get: (a) => a.score },
3006
+ { label: "Cicero<br>rating", israting: true, hide: true, atpair: true, get: (a) => a.rating }
3007
+ ];
3008
+ for (const sample of arg.samplelst) {
3009
+ for (const p of sample.pairlst) {
3010
+ if (p.a.feature || p.b.feature) fields[0].hide = false;
3011
+ if (typeof p.a.ratio == "number" || typeof (p.b.ratio == "number")) fields[1].hide = false;
3012
+ if (typeof p.a.chimericreads == "number" || typeof p.b.chimericreads == "number") fields[2].hide = false;
3013
+ if (typeof p.a.contiglen == "number" || typeof p.b.contiglen == "number") fields[3].hide = false;
3014
+ if (typeof p.a.repeatscore == "number" || typeof p.b.repeatscore == "number") fields[4].hide = false;
3015
+ if (typeof p.score == "number") fields[5].hide = false;
3016
+ if (p.rating) fields[6].hide = false;
3017
+ }
3018
+ }
3019
+ if (!arg.nosample) {
3020
+ htr.append("td");
3021
+ }
3022
+ htr.append("td");
3023
+ htr.append("td");
3024
+ htr.append("td").html("Genomic<br>position");
3025
+ htr.append("td").html("Genomic<br>dist.");
3026
+ for (const f of fields) {
3027
+ if (f.hide) return;
3028
+ htr.append("td").html(f.label);
3029
+ }
3030
+ for (const sample of arg.samplelst) {
3031
+ let tr = table.append("tr");
3032
+ if (!arg.nosample) {
3033
+ const td = tr.append("td").text(sample.sample);
3034
+ if (sample.pairlst.length > 1) {
3035
+ td.attr("rowspan", sample.pairlst.length);
3036
+ }
3037
+ }
3038
+ for (let i = 0; i < sample.pairlst.length; i++) {
3039
+ if (i > 0) {
3040
+ tr = table.append("tr");
3041
+ }
3042
+ const pair = sample.pairlst[i];
3043
+ tr.append("td").style("text-align", "right").html(
3044
+ '<span style="background-color:' + colorbgleft + ';padding:2px 3px;font-size:80%">' + pair.a.name + '</span><span style="background-color:' + colorbgright + ';padding:2px 3px;font-size:80%">' + pair.b.name + "</span>"
3045
+ );
3046
+ const td = tr.append("td");
3047
+ if (pair.originalprod && pair.originalprod.hook.lessFrame) {
3048
+ pair.originalprod.hook.lessFrame = td;
3049
+ }
3050
+ if (pair.inframe) {
3051
+ td.html(
3052
+ '<span style="background-color:' + colorinframe + ';color:white;padding:2px 3px;font-size:80%;white-space:nowrap">In frame</span>'
3053
+ );
3054
+ } else {
3055
+ if (pair.a.gm || pair.b.gm) {
3056
+ td.html(
3057
+ '<span style="background-color:#858585;color:white;padding:2px 3px;font-size:80%;white-space:nowrap">Out of frame</span>'
3058
+ );
3059
+ } else {
3060
+ td.html(
3061
+ '<span style="border:solid 1px #858585;color:#858585;padding:1px 2px;font-size:80%;white-space:nowrap">no gene ?</span>'
3062
+ );
3063
+ }
3064
+ }
3065
+ tr.append("td").html(
3066
+ '<div style="background-color:' + colorbgleft + ';padding:1px 3px;font-size:70%;white-space:nowrap">' + pair.a.chr + ":" + pair.a.position + " " + pair.a.strand + '</div><div style="background-color:' + colorbgright + ';padding:1px 3px;font-size:70%;white-space:nowrap">' + pair.b.chr + ":" + pair.b.position + " " + pair.b.strand + "</div>"
3067
+ );
3068
+ tr.append("td").html(
3069
+ pair.a.chr == pair.b.chr ? bplen(Math.abs(pair.a.position - pair.b.position)) : '<span style="color:' + colorctx + '">CTX</span>'
3070
+ );
3071
+ for (const f of fields) {
3072
+ if (f.hide) continue;
3073
+ const td2 = tr.append("td");
3074
+ if (f.israting && pair.originalprod && pair.originalprod.hook.lessRating) {
3075
+ pair.originalprod.hook.lessRating = td2;
3076
+ }
3077
+ if (f.atpair) {
3078
+ td2.text(f.get(pair));
3079
+ } else {
3080
+ td2.html(
3081
+ '<span style="background-color:' + colorbgleft + ';padding:2px 3px;font-size:80%">' + f.get(pair.a) + '</span><span style="background-color:' + colorbgright + ';padding:2px 3px;font-size:80%">' + f.get(pair.b) + "</span>"
3082
+ );
3083
+ }
3084
+ }
3085
+ }
3086
+ }
3087
+ }
3088
+ function loadexpression(svmr, file) {
3089
+ const genes = {};
3090
+ const ep = svmr.expression;
3091
+ ep.genes = genes;
3092
+ const reader = new FileReader();
3093
+ const chunksize = 4096;
3094
+ let chunks = [];
3095
+ let offset = 0;
3096
+ reader.onloadend = (e) => {
3097
+ if (e.target.readyState != FileReader.DONE) return;
3098
+ const chunk = e.target.result;
3099
+ chunks.push(chunk);
3100
+ const isend = offset >= file.size;
3101
+ process(isend);
3102
+ if (isend) {
3103
+ done();
3104
+ } else {
3105
+ offset += chunksize;
3106
+ ep.presays.text("Reading file: " + Math.ceil(offset / file.size * 100) + "%");
3107
+ reader.readAsText(file.slice(offset, offset + chunksize));
3108
+ }
3109
+ };
3110
+ reader.readAsText(file.slice(0, chunksize));
3111
+ const hg = {}, hs = {};
3112
+ let good = 0, bad = 0;
3113
+ function process(isend) {
3114
+ const lines = chunks.join("").split("\n");
3115
+ for (let i = 0; i < lines.length - 1 - (isend ? 0 : 1); i++) {
3116
+ const l = lines[i].split(" ");
3117
+ if (l.length == 3) {
3118
+ const v = Number.parseFloat(l[1]);
3119
+ if (Number.isNaN(v)) {
3120
+ bad++;
3121
+ } else {
3122
+ good++;
3123
+ hg[l[0]] = 1;
3124
+ hs[l[2]] = 1;
3125
+ if (!(l[0] in genes)) {
3126
+ genes[l[0]] = [];
3127
+ }
3128
+ genes[l[0]].push({
3129
+ sample: l[2],
3130
+ value: v
3131
+ });
3132
+ }
3133
+ } else {
3134
+ bad++;
3135
+ }
3136
+ }
3137
+ if (!isend) {
3138
+ chunks = [lines[lines.length - 1]];
3139
+ }
3140
+ }
3141
+ function done() {
3142
+ let genec = 0;
3143
+ for (const n in hg) genec++;
3144
+ let samplec = 0;
3145
+ for (const n in hs) samplec++;
3146
+ disappear(ep.prediv);
3147
+ appear(ep.afterdiv);
3148
+ ep.afterdiv.selectAll("*").remove();
3149
+ ep.afterdiv.append("div").text(
3150
+ "Expression data loaded for " + genec + " genes, " + samplec + " samples, " + good + " data points" + (bad > 0 ? ", " + bad + " bad lines" : "")
3151
+ );
3152
+ ep.afterdiv.append("button").text("Delete").style("margin", "20px").on("click", () => {
3153
+ delete ep.genes;
3154
+ ep.prediv.node().removeChild(ep.input.node());
3155
+ ep.input = ep.prediv.append("input").attr("type", "file").on("change", (event) => {
3156
+ loadexpression(svmr, event.target.files[0]);
3157
+ });
3158
+ ep.presays.text("");
3159
+ disappear(ep.afterdiv);
3160
+ appear(ep.prediv);
3161
+ });
3162
+ }
3163
+ }
3164
+ function showgenevalues(arg) {
3165
+ const hlcolor = "red";
3166
+ arg.data.sort((a, b) => {
3167
+ return b.value - a.value;
3168
+ });
3169
+ let width = arg.width ? arg.width : 400, height = arg.height ? arg.height : 400;
3170
+ let maxv = 0;
3171
+ for (const v of arg.data) {
3172
+ maxv = Math.max(maxv, v.value);
3173
+ }
3174
+ let dotr;
3175
+ const xscale = linear().domain([0, maxv]);
3176
+ const svg = arg.holder.append("svg");
3177
+ const axisg = svg.append("g");
3178
+ const dotg = svg.append("g");
3179
+ const dotset = dotg.selectAll().data(arg.data).enter().append("g");
3180
+ const dotcir = dotset.append("circle").attr("fill", "white").attr("fill-opacity", 0).attr("stroke", (d) => d.ishighlight ? hlcolor : "black").attr("stroke-opacity", (d) => d.ishighlight ? 0.7 : 0.2).on("mouseover", (event, d) => {
3181
+ event.target.setAttribute("transform", "scale(1.5)");
3182
+ drag.text((d.sample ? d.sample : d.patient + " " + d.sampletype) + " " + d.value).attr("fill", d.ishighlight ? hlcolor : "black");
3183
+ }).on("mouseout", (event, d) => {
3184
+ event.target.setAttribute("transform", "scale(1)");
3185
+ drag.text("drag to resize").attr("fill", "black");
3186
+ });
3187
+ const drag = svg.append("text").text("drag to resize").attr("font-size", 12).attr("class", "sja_svgtext").attr("font-family", font).attr("text-anchor", "end").on("mousedown", (event) => {
3188
+ event.preventDefault();
3189
+ const x0 = event.clientX, y0 = event.clientY, width0 = width, height0 = height;
3190
+ const b = select_default(document.body);
3191
+ b.on("mousemove", () => {
3192
+ width = width0 + event.clientX - x0;
3193
+ height = height0 + event.clientY - y0;
3194
+ sizing();
3195
+ }).on("mouseup", () => {
3196
+ b.on("mousemove", null).on("mouseup", null);
3197
+ });
3198
+ });
3199
+ function sizing() {
3200
+ dotr = Math.max(5, Math.min(width, height) / 40);
3201
+ const fontsize = Math.min(18, Math.max(12, dotr * 2)), ticksize = 5, axish = fontsize + ticksize + 5, axispad = dotr + 5, width2 = dotr * 3;
3202
+ xscale.range([0, width]);
3203
+ svg.attr("width", dotr * 2 + width + width2).attr("height", axish + axispad + height + dotr * 2);
3204
+ axisstyle({
3205
+ axis: axisg.attr("transform", "translate(" + dotr * 2 + "," + axish + ")").call(
3206
+ axisTop().scale(xscale).ticks(Math.min(10, Math.ceil(width / 50)))
3207
+ ),
3208
+ fontsize,
3209
+ color: "black",
3210
+ showline: true
3211
+ });
3212
+ dotg.attr("transform", "translate(" + dotr * 2 + "," + (axish + axispad) + ")");
3213
+ dotset.attr("transform", (d, i) => {
3214
+ return "translate(" + xscale(d.value) + "," + height * i / arg.data.length + ")";
3215
+ });
3216
+ dotcir.attr("r", (d) => {
3217
+ return dotr * (d.ishighlight ? 1.5 : 1);
3218
+ });
3219
+ drag.attr("font-size", fontsize).attr("x", dotr * 2 + width + width2 - 5).attr("y", axish + axispad + height + dotr * 2 - 5);
3220
+ }
3221
+ sizing();
3222
+ return this;
3223
+ }
3224
+
3225
+ // src/svmr.js
3226
+ function svmrparseinput(arg, sayerror2, genome, holder, hostURL, jwt) {
3227
+ if (!arg.dataname) {
3228
+ arg.dataname = "Unnamed dataset";
3229
+ }
3230
+ if (arg.input) {
3231
+ const [e, header, items] = svmrparseraw(arg.input, genome);
3232
+ if (e) {
3233
+ sayerror2("Fusion Editor input error: " + e);
3234
+ return;
3235
+ }
3236
+ svmrlaunch(genome, header, items, arg.dataname, holder, hostURL, jwt);
3237
+ return;
3238
+ }
3239
+ if (!arg.urls) {
3240
+ sayerror2('neither .input:"" or .urls:[] is provided for Fusion Editor');
3241
+ return;
3242
+ }
3243
+ if (!Array.isArray(arg.urls)) {
3244
+ sayerror2("fusioneditor.urls[] should be an array of URL strings");
3245
+ return;
3246
+ }
3247
+ if (arg.urls.length == 0) {
3248
+ sayerror2("fusioneditor.urls[] is empty");
3249
+ return;
3250
+ }
3251
+ const wait = holder.append("div").style("margin", "20px").style("color", "#aaa").style("font-size", "1.5em").text("Loading fusion gene data ...");
3252
+ const tasks = [];
3253
+ arg.urls.forEach((url) => {
3254
+ tasks.push(
3255
+ fetch(
3256
+ new Request(hostURL + "/urltextfile", {
3257
+ method: "POST",
3258
+ body: JSON.stringify({ url, jwt })
3259
+ })
3260
+ ).then((data) => {
3261
+ return data.json();
3262
+ }).then((data) => {
3263
+ if (data.error) throw { message: "Error with " + url + ": " + data.error };
3264
+ return { data: data.text, url };
3265
+ })
3266
+ );
3267
+ });
3268
+ Promise.all(tasks).then((data) => {
3269
+ wait.remove();
3270
+ if (data.length == 0) {
3271
+ sayerror2("No data retrieved from fusioneditor.urls");
3272
+ return;
3273
+ }
3274
+ const [e, header, items] = svmrparseraw(data[0].data, genome);
3275
+ if (e) {
3276
+ sayerror2("Error parsing fusion gene data in file " + data[0].url);
3277
+ return;
3278
+ }
3279
+ for (let i = 1; i < data.length; i++) {
3280
+ const [e2, header2, items2] = svmrparseraw(data[i].data, genome);
3281
+ if (e2) {
3282
+ sayerror2("Error parsing fusion gene data in file " + data[i].url);
3283
+ return;
3284
+ }
3285
+ for (const j of items2) {
3286
+ items.push(j);
3287
+ }
3288
+ for (const h of header2) {
3289
+ let notfound = true;
3290
+ for (const h2 of header) {
3291
+ if (h2.key == h.key) {
3292
+ notfound = false;
3293
+ break;
3294
+ }
3295
+ }
3296
+ if (notfound) {
3297
+ header.push(h);
3298
+ }
3299
+ }
3300
+ }
3301
+ if (items.length == 0) {
3302
+ sayerror2("No fusion genes parsed from fusioneditor");
3303
+ return;
3304
+ }
3305
+ svmrlaunch(genome, header, items, arg.dataname, holder, hostURL, jwt);
3306
+ }).catch((err) => {
3307
+ wait.remove();
3308
+ sayerror2(err.message);
3309
+ if (err.stack) console.log(err.stack);
3310
+ });
3311
+ }
3312
+ function svmrui(dlst, genomes, hostURL, jwt) {
3313
+ const [pane, inputdiv, gselect, filediv, saydiv, visualdiv] = dlst;
3314
+ inputdiv.append("div").style("margin-top", "20px").html(
3315
+ "<p>Please upload CICERO output as a text file. See <a href=https://docs.google.com/document/d/1jkVYRPIJpkWvA9vqtahRlNn63Hk5DehjHbF_BH9k7Rs/edit?usp=sharing target=_blank>file format</a>.</p><p>See <a href=https://docs.google.com/document/d/1DRVzE_WenG490eRYB7VGFOygtSqtF5L97rhK0HOUCNY/edit?usp=sharing target=_blank>function usage</a>.</p>"
3316
+ );
3317
+ inputdiv.append("p").html("<a href=https://proteinpaint.stjude.org/ppdemo/hg19/fusion/cicero.output target=_blank>Example file</a>");
3318
+ function cmt(t, red) {
3319
+ saydiv.style("color", red ? "red" : "black").text(t);
3320
+ }
3321
+ const fileui = () => {
3322
+ filediv.selectAll("*").remove();
3323
+ const input = filediv.append("input").attr("type", "file").on("change", (event) => {
3324
+ const file = event.target.files[0];
3325
+ if (!file) {
3326
+ fileui();
3327
+ return;
3328
+ }
3329
+ if (!file.size) {
3330
+ cmt("Invalid file " + file.name);
3331
+ fileui();
3332
+ return;
3333
+ }
3334
+ const reader = new FileReader();
3335
+ reader.onload = (event2) => {
3336
+ const usegenome = gselect.options[gselect.selectedIndex].innerHTML;
3337
+ const genomeobj = genomes[usegenome];
3338
+ const [err, header, items] = svmrparseraw(event2.target.result, genomeobj);
3339
+ if (err) {
3340
+ cmt(err, 1);
3341
+ fileui();
3342
+ return;
3343
+ }
3344
+ svmrlaunch(genomeobj, header, items, file.name, visualdiv, hostURL, jwt);
3345
+ filediv.remove();
3346
+ inputdiv.remove();
3347
+ };
3348
+ reader.onerror = function() {
3349
+ cmt("Error reading file " + file.name, 1);
3350
+ fileui();
3351
+ return;
3352
+ };
3353
+ reader.readAsText(file, "utf8");
3354
+ });
3355
+ setTimeout(() => input.node().focus(), 1100);
3356
+ };
3357
+ fileui();
3358
+ }
3359
+ function svmrlaunch(genome, header, items, filename, holder, hostURL, jwt) {
3360
+ new svmr_c_default(genome, header, items, filename, holder, hostURL, jwt);
3361
+ }
3362
+ function svmrparseraw(raw, genome) {
3363
+ const lines = raw.trim().split("\n");
3364
+ const [err, header] = parseheader(lines[0]);
3365
+ if (err) {
3366
+ return ["File header error: " + err];
3367
+ }
3368
+ const skipword = lines[0].split(" ")[0];
3369
+ const items = [];
3370
+ const badlines = [];
3371
+ for (let i = 1; i < lines.length; i++) {
3372
+ const line = lines[i];
3373
+ if (line == "") continue;
3374
+ if (line[0] == "#") continue;
3375
+ const lst = line.trim().split(" ");
3376
+ if (lst[0] == skipword) continue;
3377
+ const m = {
3378
+ notes: []
3379
+ // collect notes
3380
+ };
3381
+ for (let j = 0; j < header.length; j++) {
3382
+ if (lst[j] !== void 0 && lst[j].includes('"'))
3383
+ return ['Input file has invalid character " e.g. "NM_001007565"'];
3384
+ m[header[j].key] = lst[j];
3385
+ }
3386
+ if (!m.rating) {
3387
+ badlines.push([i, "rating unspecified", lst]);
3388
+ continue;
3389
+ }
3390
+ let s = m.rating;
3391
+ if (s.toLowerCase() == "major") {
3392
+ m.rating = "HQ";
3393
+ s = "HQ";
3394
+ }
3395
+ if (s != "HQ" && s != "LQ" && s != "RT" && s != "bad") {
3396
+ badlines.push([i, "invalid rating: " + m.rating, lst]);
3397
+ continue;
3398
+ }
3399
+ if (!m.chrA) {
3400
+ badlines.push([i, "missing chrA", lst]);
3401
+ continue;
3402
+ }
3403
+ if (!genome.chrlookup[m.chrA.toUpperCase()]) {
3404
+ badlines.push([i, "invalid chrA: " + m.chrA, lst]);
3405
+ continue;
3406
+ }
3407
+ if (!m.chrB) {
3408
+ badlines.push([i, "missing chrB", lst]);
3409
+ continue;
3410
+ }
3411
+ if (!genome.chrlookup[m.chrB.toUpperCase()]) {
3412
+ badlines.push([i, "invalid chrB: " + m.chrB, lst]);
3413
+ continue;
3414
+ }
3415
+ s = m.posA;
3416
+ if (!s) {
3417
+ badlines.push([i, "missing posA", lst]);
3418
+ continue;
3419
+ }
3420
+ let v = Number.parseInt(s);
3421
+ if (Number.isNaN(v)) {
3422
+ badlines.push([i, "invalid posA: " + s, lst]);
3423
+ continue;
3424
+ }
3425
+ if (v < 0 || v >= genome.chrlookup[m.chrA.toUpperCase()]) {
3426
+ badlines.push([i, "invalid posA: " + s, lst]);
3427
+ continue;
3428
+ }
3429
+ m.posA = v;
3430
+ s = m.posB;
3431
+ if (!s) {
3432
+ badlines.push([i, "missing posB", lst]);
3433
+ continue;
3434
+ }
3435
+ v = Number.parseInt(s);
3436
+ if (isNaN(v)) {
3437
+ badlines.push([i, "invalid posB: " + s, lst]);
3438
+ continue;
3439
+ }
3440
+ if (v < 0 || v >= genome.chrlookup[m.chrB.toUpperCase()]) {
3441
+ badlines.push([i, "invalid posB: " + s, lst]);
3442
+ continue;
3443
+ }
3444
+ m.posB = v;
3445
+ if (!m.ratioA) {
3446
+ badlines.push([i, "missing ratioA", lst]);
3447
+ continue;
3448
+ }
3449
+ v = Number.parseFloat(m.ratioA);
3450
+ if (Number.isNaN(v)) {
3451
+ badlines.push([i, "invalid value for ratioA", lst]);
3452
+ continue;
3453
+ }
3454
+ if (v > 1) {
3455
+ badlines.push([i, "ratioA > 100%", lst]);
3456
+ v = 1;
3457
+ }
3458
+ m.ratioA = v;
3459
+ if (!m.ratioB) {
3460
+ badlines.push([i, "missing ratioB", lst]);
3461
+ continue;
3462
+ }
3463
+ v = Number.parseFloat(m.ratioB);
3464
+ if (Number.isNaN(v)) {
3465
+ badlines.push([i, "invalid value for ratioB", lst]);
3466
+ continue;
3467
+ }
3468
+ if (v > 1) {
3469
+ badlines.push([i, "ratioB > 100%", lst]);
3470
+ v = 1;
3471
+ }
3472
+ m.ratioB = v;
3473
+ if (!m.score) {
3474
+ badlines.push([i, "missing score", lst]);
3475
+ continue;
3476
+ }
3477
+ v = Number.parseFloat(m.score);
3478
+ if (Number.isNaN(v)) {
3479
+ badlines.push([i, "invalid value for score", lst]);
3480
+ continue;
3481
+ }
3482
+ m.score = v;
3483
+ if (!m.readsA) {
3484
+ badlines.push([i, "readsA missing", lst]);
3485
+ continue;
3486
+ }
3487
+ v = Number.parseInt(m.readsA);
3488
+ if (Number.isNaN(v)) {
3489
+ badlines.push([i, "invalid value for readsA", lst]);
3490
+ continue;
3491
+ }
3492
+ m.readsA = v;
3493
+ if (!m.readsB) {
3494
+ badlines.push([i, "readsB missing", lst]);
3495
+ continue;
3496
+ }
3497
+ v = Number.parseInt(m.readsB);
3498
+ if (Number.isNaN(v)) {
3499
+ badlines.push([i, "invalid value for readsB", lst]);
3500
+ continue;
3501
+ }
3502
+ m.readsB = v;
3503
+ if (!m.matchA) {
3504
+ badlines.push([i, "matchA missing", lst]);
3505
+ continue;
3506
+ }
3507
+ v = Number.parseInt(m.matchA);
3508
+ if (Number.isNaN(v)) {
3509
+ badlines.push([i, "invalid value for matchA", lst]);
3510
+ continue;
3511
+ }
3512
+ m.matchA = v;
3513
+ if (!m.matchB) {
3514
+ badlines.push([i, "matchB missing", lst]);
3515
+ continue;
3516
+ }
3517
+ v = Number.parseInt(m.matchB);
3518
+ if (Number.isNaN(v)) {
3519
+ badlines.push([i, "invalid value for matchB", lst]);
3520
+ continue;
3521
+ }
3522
+ m.matchB = v;
3523
+ if (!m.repeatA) {
3524
+ badlines.push([i, "repeatA missing", lst]);
3525
+ continue;
3526
+ }
3527
+ v = Number.parseFloat(m.repeatA);
3528
+ if (Number.isNaN(v)) {
3529
+ badlines.push([i, "invalid value for repeatA", lst]);
3530
+ continue;
3531
+ }
3532
+ m.repeatA = v;
3533
+ if (!m.repeatB) {
3534
+ badlines.push([i, "repeatB missing", lst]);
3535
+ continue;
3536
+ }
3537
+ v = Number.parseFloat(m.repeatB);
3538
+ if (Number.isNaN(v)) {
3539
+ badlines.push([i, "invalid value for repeatB", lst]);
3540
+ continue;
3541
+ }
3542
+ m.repeatB = v;
3543
+ if (m.type2) {
3544
+ switch (m.type2.toLowerCase()) {
3545
+ case "closs":
3546
+ m.iscloss = true;
3547
+ break;
3548
+ case "nloss":
3549
+ m.isnloss = true;
3550
+ break;
3551
+ case "fusion":
3552
+ m.isfusion = true;
3553
+ break;
3554
+ case "itd":
3555
+ m.isitd = true;
3556
+ break;
3557
+ case "other":
3558
+ m.isother = true;
3559
+ break;
3560
+ case "uptss":
3561
+ m.isuptss = true;
3562
+ break;
3563
+ default:
3564
+ badlines.push([i, "unknown type2: " + m.type2, lst]);
3565
+ continue;
3566
+ }
3567
+ }
3568
+ if (m.geneA == "" || m.geneA == "NA") {
3569
+ m.geneA = null;
3570
+ }
3571
+ if (m.geneB == "" || m.geneB == "NA") {
3572
+ m.geneB = null;
3573
+ }
3574
+ if (m.featureA == "intergenic") m.geneA = null;
3575
+ if (m.featureB == "intergenic") m.geneB = null;
3576
+ const isoforma = m.lstisoforma ? m.lstisoforma.toUpperCase().split(",") : [], isoformb = m.lstisoformb ? m.lstisoformb.toUpperCase().split(",") : [], codona = m.lstisoformacodon ? m.lstisoformacodon.split(",") : [], codonb = m.lstisoformbcodon ? m.lstisoformbcodon.split(",") : [], frame = m.lstframe ? m.lstframe.split(",") : [];
3577
+ let exona = null, exonb = null, anchora = null, anchorb = null, contigaaA = null, contigaaB = null, contigbpA = null, contigbpB = null;
3578
+ if (m.lstisoformaexon) exona = m.lstisoformaexon.split(",");
3579
+ if (m.lstisoformbexon) exonb = m.lstisoformbexon.split(",");
3580
+ if (m.lstisoformaanchor) anchora = m.lstisoformaanchor.split(",");
3581
+ if (m.lstisoformbanchor) anchorb = m.lstisoformbanchor.split(",");
3582
+ if (m.lstcontigaaA) contigaaA = m.lstcontigaaA.split(",");
3583
+ if (m.lstcontigaaB) contigaaB = m.lstcontigaaB.split(",");
3584
+ if (m.lstcontigbpA) contigbpA = m.lstcontigbpA.split(",");
3585
+ if (m.lstcontigbpB) contigbpB = m.lstcontigbpB.split(",");
3586
+ const paircount = Math.max(isoforma.length, isoformb.length, codona.length, codonb.length, frame.length);
3587
+ m.pairs = [];
3588
+ for (let j = 0; j < paircount; j++) {
3589
+ const pair = {
3590
+ a: {
3591
+ isoform: isoforma[j] && isoforma[j].length > 0 ? isoforma[j] : null,
3592
+ exon: exona ? Number.parseInt(exona[j]) : NaN,
3593
+ codon: codona[j] ? Number.parseInt(codona[j]) : NaN,
3594
+ anchor: anchora ? anchora[j] : void 0
3595
+ },
3596
+ b: {
3597
+ isoform: isoformb[j] && isoformb[j].length > 0 ? isoformb[j] : null,
3598
+ exon: exonb ? Number.parseInt(exonb[j]) : NaN,
3599
+ codon: codonb[j] ? Number.parseInt(codonb[j]) : NaN,
3600
+ anchor: anchorb ? anchorb[j] : void 0
3601
+ },
3602
+ frame: frame[j],
3603
+ inframe: frame[j] == "1" || frame[j] == "2"
3604
+ };
3605
+ if (m.isuptss) {
3606
+ pair.inframe = true;
3607
+ }
3608
+ let aaa = NaN, aab = NaN, bpa = NaN, bpb = NaN;
3609
+ if (contigaaA && contigaaA[j]) aaa = Number.parseInt(contigaaA[j]);
3610
+ if (contigaaB && contigaaB[j]) aab = Number.parseInt(contigaaB[j]);
3611
+ if (contigbpA && contigbpA[j]) bpa = Number.parseInt(contigbpA[j]);
3612
+ if (contigbpB && contigbpB[j]) bpb = Number.parseInt(contigbpB[j]);
3613
+ if (!Number.isNaN(aaa) && !Number.isNaN(aab)) {
3614
+ pair.a.contigaa = aaa;
3615
+ pair.b.contigaa = aab;
3616
+ }
3617
+ if (!Number.isNaN(bpa) && !Number.isNaN(bpb)) {
3618
+ pair.a.contigbp = bpa;
3619
+ pair.b.contigbp = bpb;
3620
+ }
3621
+ m.pairs.push(pair);
3622
+ }
3623
+ if (m.exception) {
3624
+ m.notes.push(m.exception);
3625
+ }
3626
+ if (m.hlgene) {
3627
+ const v2 = Number.parseInt(m.hlgene);
3628
+ if (Number.isNaN(v2) || v2 != 0 && v2 != 1 && v2 != 2 && v2 != 3 && v2 != 4) {
3629
+ badlines.push([i, "invalid value for highlight gene flag: " + m.hlgene, lst]);
3630
+ delete m.hlgene;
3631
+ } else {
3632
+ m.hlgene = v2;
3633
+ }
3634
+ }
3635
+ items.push(m);
3636
+ }
3637
+ if (badlines.length > 0) {
3638
+ const hlst = header.map((i) => i.key);
3639
+ bulk_badline(hlst, badlines);
3640
+ }
3641
+ if (items.length == 0) {
3642
+ return ["No data loaded"];
3643
+ }
3644
+ return [null, header, items];
3645
+ }
3646
+ function parseheader(line) {
3647
+ const original = line.trim().split(" ");
3648
+ if (original.length <= 1) return ["invalid file header"];
3649
+ const header = [];
3650
+ const lower = [];
3651
+ for (const i2 of original) {
3652
+ lower.push(i2.toLowerCase());
3653
+ header.push({
3654
+ label: i2,
3655
+ key: i2.toLowerCase(),
3656
+ custom: true
3657
+ });
3658
+ }
3659
+ const htry = (...arg) => {
3660
+ for (const s of arg) {
3661
+ const i2 = lower.indexOf(s);
3662
+ if (i2 != -1) return i2;
3663
+ }
3664
+ return -1;
3665
+ };
3666
+ let i = htry("genea");
3667
+ if (i == -1) return ["geneA missing"];
3668
+ header[i].key = "geneA";
3669
+ delete header[i].custom;
3670
+ i = htry("chra");
3671
+ if (i == -1) return ["chrA missing"];
3672
+ header[i].key = "chrA";
3673
+ delete header[i].custom;
3674
+ i = htry("posa");
3675
+ if (i == -1) return ["posA missing"];
3676
+ header[i].key = "posA";
3677
+ delete header[i].custom;
3678
+ i = htry("orta");
3679
+ if (i == -1) return ["ortA missing"];
3680
+ header[i].key = "ortA";
3681
+ delete header[i].custom;
3682
+ i = htry("featurea");
3683
+ if (i == -1) return ["featureA missing"];
3684
+ header[i].key = "featureA";
3685
+ delete header[i].custom;
3686
+ i = htry("ratioa");
3687
+ if (i == -1) return ["ratioA missing"];
3688
+ header[i].key = "ratioA";
3689
+ delete header[i].custom;
3690
+ i = htry("readsa");
3691
+ if (i == -1) return ["readsA missing"];
3692
+ header[i].key = "readsA";
3693
+ delete header[i].custom;
3694
+ i = htry("sv_refseqa_aa_index");
3695
+ if (i != -1) {
3696
+ header[i].key = "lstcontigaaA";
3697
+ delete header[i].custom;
3698
+ }
3699
+ i = htry("sv_refseqa_contig_index");
3700
+ if (i != -1) {
3701
+ header[i].key = "lstcontigbpA";
3702
+ delete header[i].custom;
3703
+ }
3704
+ i = htry("total_readsa");
3705
+ if (i != -1) {
3706
+ header[i].key = "totalreadsA";
3707
+ delete header[i].custom;
3708
+ }
3709
+ i = htry("geneb");
3710
+ if (i == -1) return ["geneB missing"];
3711
+ header[i].key = "geneB";
3712
+ delete header[i].custom;
3713
+ i = htry("chrb");
3714
+ if (i == -1) return ["chrB missing"];
3715
+ header[i].key = "chrB";
3716
+ delete header[i].custom;
3717
+ i = htry("posb");
3718
+ if (i == -1) return ["posB missing"];
3719
+ header[i].key = "posB";
3720
+ delete header[i].custom;
3721
+ i = htry("ortb");
3722
+ if (i == -1) return ["ortB missing"];
3723
+ header[i].key = "ortB";
3724
+ delete header[i].custom;
3725
+ i = htry("featureb");
3726
+ if (i == -1) return ["featureB missing"];
3727
+ header[i].key = "featureB";
3728
+ delete header[i].custom;
3729
+ i = htry("ratiob");
3730
+ if (i == -1) return ["ratioB missing"];
3731
+ header[i].key = "ratioB";
3732
+ delete header[i].custom;
3733
+ i = htry("readsb");
3734
+ if (i == -1) return ["readsB missing"];
3735
+ header[i].key = "readsB";
3736
+ delete header[i].custom;
3737
+ i = htry("sv_refseqb_aa_index");
3738
+ if (i != -1) {
3739
+ header[i].key = "lstcontigaaB";
3740
+ delete header[i].custom;
3741
+ }
3742
+ i = htry("sv_refseqb_contig_index");
3743
+ if (i != -1) {
3744
+ header[i].key = "lstcontigbpB";
3745
+ delete header[i].custom;
3746
+ }
3747
+ i = htry("total_readsb");
3748
+ if (i != -1) {
3749
+ header[i].key = "totalreadsB";
3750
+ delete header[i].custom;
3751
+ }
3752
+ i = htry("sv_inframe", "frame");
3753
+ if (i == -1) return ["sv_inframe missing"];
3754
+ header[i].key = "lstframe";
3755
+ delete header[i].custom;
3756
+ i = htry("sv_refseqa");
3757
+ if (i == -1) return ["sv_refseqA missing"];
3758
+ header[i].key = "lstisoforma";
3759
+ delete header[i].custom;
3760
+ i = htry("sv_refseqa_codon");
3761
+ if (i != -1) {
3762
+ header[i].key = "lstisoformacodon";
3763
+ }
3764
+ i = htry("sv_refseqb_codon");
3765
+ if (i != -1) {
3766
+ header[i].key = "lstisoformbcodon";
3767
+ }
3768
+ i = htry("score");
3769
+ if (i == -1) return ["score missing"];
3770
+ header[i].key = "score";
3771
+ delete header[i].custom;
3772
+ i = htry("sv_refseqb");
3773
+ if (i == -1) return ["sv_refseqB missing"];
3774
+ header[i].key = "lstisoformb";
3775
+ delete header[i].custom;
3776
+ i = htry("rating");
3777
+ if (i == -1) return ["rating missing"];
3778
+ header[i].key = "rating";
3779
+ delete header[i].custom;
3780
+ i = htry("matcha");
3781
+ if (i == -1) return ["matchA missing"];
3782
+ header[i].key = "matchA";
3783
+ delete header[i].custom;
3784
+ i = htry("matchb");
3785
+ if (i == -1) return ["matchB missing"];
3786
+ header[i].key = "matchB";
3787
+ delete header[i].custom;
3788
+ i = htry("repeata");
3789
+ if (i == -1) return ["repeatA missing"];
3790
+ header[i].key = "repeatA";
3791
+ delete header[i].custom;
3792
+ i = htry("repeatb");
3793
+ if (i == -1) return ["repeatB missing"];
3794
+ header[i].key = "repeatB";
3795
+ delete header[i].custom;
3796
+ i = htry("functional effect");
3797
+ if (i == -1) return ["functional effect missing"];
3798
+ header[i].key = "type2";
3799
+ delete header[i].custom;
3800
+ i = htry("sample");
3801
+ if (i != -1) {
3802
+ header[i].key = "sample";
3803
+ delete header[i].custom;
3804
+ }
3805
+ i = htry("sv_processing_exception");
3806
+ if (i != -1) {
3807
+ header[i].key = "exception";
3808
+ }
3809
+ i = htry("medal");
3810
+ if (i != -1) {
3811
+ header[i].key = "hlgene";
3812
+ }
3813
+ i = htry("sv_refseqa_exon");
3814
+ if (i != -1) {
3815
+ header[i].key = "lstisoformaexon";
3816
+ delete header[i].custom;
3817
+ }
3818
+ i = htry("sv_refseqb_exon");
3819
+ if (i != -1) {
3820
+ header[i].key = "lstisoformbexon";
3821
+ delete header[i].custom;
3822
+ }
3823
+ i = htry("sv_refseqa_anchor_type");
3824
+ if (i != -1) {
3825
+ header[i].key = "lstisoformaanchor";
3826
+ delete header[i].custom;
3827
+ }
3828
+ i = htry("sv_refseqb_anchor_type");
3829
+ if (i != -1) {
3830
+ header[i].key = "lstisoformbanchor";
3831
+ delete header[i].custom;
3832
+ }
3833
+ return [null, header];
3834
+ }
3835
+ export {
3836
+ svmrlaunch,
3837
+ svmrparseinput,
3838
+ svmrparseraw,
3839
+ svmrui
3840
+ };
3841
+ //# sourceMappingURL=svmr-ULFV7OSH.js.map