@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
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../shared/utils/src/bulk.js", "../../shared/utils/src/clustering.js", "../../shared/utils/src/compute.percentile.js", "../../shared/utils/src/hash.js", "../../shared/utils/src/urljson.js", "../../shared/utils/src/fetch-helpers.js", "../../shared/utils/src/fileSize.js", "../../shared/utils/src/mds3tk.js", "../../shared/utils/src/termdb.initbinconfig.js", "../../shared/utils/src/termdb.usecase.js", "../../shared/utils/src/time.js", "../../shared/utils/src/vcf.ann.js", "../../shared/utils/src/vcf.csq.js", "../../shared/utils/src/vcf.info.js", "../../shared/utils/src/vcf.type.js", "../../shared/utils/src/vcf.js", "../common/auth.js", "../common/dofetch.js"],
4
- "sourcesContent": ["////////////////////////////////////\n//\n// shared between client and server\n//\n////////////////////////////////////\n\nimport * as common from \"./common.js\"\n\nexport default {}\n\nexport function init_bulk_flag(genome) {\n\tif (!genome) {\n\t\treturn null\n\t}\n\tconst mclasslabel2key = {}\n\tfor (const n in common.mclass) {\n\t\tmclasslabel2key[common.mclass[n].label.toUpperCase()] = n\n\t}\n\treturn {\n\t\tgenome: genome,\n\t\tmclasslabel2key: mclasslabel2key,\n\t\tdata: {},\n\t\tsample2disease: {}, // (proof) k: sample, v: disease\n\t\t// will only record this when origin is used\n\t\tpatient2st: {},\n\t\t// k: patient, v: { k: sampletype, v: sample }\n\t\t// new sample names always override old\n\t\tgood: 0,\n\t\tgeneToUpper: true, // option to not force uppercase on gene names\n\t\tsnv: {\n\t\t\tloaded: false,\n\t\t\theader: null,\n\t\t\tbadlines: [],\n\t\t\t// jinghui: based on missense/silent ratio of entire dataset to decide whether to include silent when importing...\n\t\t\t// hard-coded class codes\n\t\t\tmissense: 0,\n\t\t\tsilent: 0,\n\t\t},\n\t\tsvjson: {\n\t\t\tloaded: false,\n\t\t\theader: null,\n\t\t\tbadlines: [],\n\t\t},\n\t\tfusion: {\n\t\t\tloaded: false,\n\t\t\theader: null,\n\t\t\tbadlines: [],\n\t\t\toriginal: [],\n\t\t},\n\t\tsv: {\n\t\t\tloaded: false,\n\t\t\theader: null,\n\t\t\tbadlines: [],\n\t\t\toriginal: [],\n\t\t},\n\t\tcnv: {\n\t\t\tloaded: false,\n\t\t\theader: null,\n\t\t\tbadlines: [],\n\t\t},\n\t\titd: {\n\t\t\tloaded: false,\n\t\t\theader: null,\n\t\t\tbadlines: [],\n\t\t},\n\t\tdel: {\n\t\t\tloaded: false,\n\t\t\theader: null,\n\t\t\tbadlines: [],\n\t\t},\n\t\ttruncation: {\n\t\t\tloaded: false,\n\t\t\theader: null,\n\t\t\tbadlines: [],\n\t\t},\n\t}\n}\n\nexport function parsesample(m, flag, i, lst, badline) {\n\tlet variantorigin = common.moriginsomatic\n\tif (m.sampletype) {\n\t\tconst s = m.sampletype.toLowerCase()\n\t\tswitch (s) {\n\t\t\tcase \"relapse\":\n\t\t\t\tvariantorigin = common.moriginrelapse\n\t\t\t\tbreak\n\t\t\tcase \"germline\":\n\t\t\t\tvariantorigin = common.morigingermline\n\t\t\t\tbreak\n\t\t\tcase \"somatic\":\n\t\t\tcase \"diagnosis\":\n\t\t\t\tbreak\n\t\t}\n\t\tif (m.sample) {\n\t\t\tif (m.patient) {\n\t\t\t\t// good\n\t\t\t} else {\n\t\t\t\tm.patient = m.sample + \" \" + m.sampletype\n\t\t\t}\n\t\t} else {\n\t\t\tif (m.patient) {\n\t\t\t\tm.sample = m.patient + \" \" + m.sampletype\n\t\t\t} else {\n\t\t\t\t// neither sample or patient, will quit later\n\t\t\t}\n\t\t}\n\t} else {\n\t\tif (m.patient) {\n\t\t\tif (m.sample) {\n\t\t\t\tm.sampletype = m.sample\n\t\t\t} else {\n\t\t\t\tm.sample = m.sampletype = m.patient\n\t\t\t}\n\t\t} else {\n\t\t\tif (m.sample) {\n\t\t\t\tm.sampletype = m.sample\n\t\t\t} else {\n\t\t\t\t// no patient/sample, will quit later\n\t\t\t}\n\t\t}\n\t}\n\tif (m.origin) {\n\t\t// override existing variantorigin\n\t\tconst s = m.origin.toLowerCase()\n\t\tswitch (s) {\n\t\t\tcase \"r\":\n\t\t\tcase \"relapse\":\n\t\t\t\tvariantorigin = common.moriginrelapse\n\t\t\t\tm.isrim2 = true\n\t\t\t\tbreak\n\t\t\tcase \"g\":\n\t\t\tcase \"germline\":\n\t\t\t\tvariantorigin = common.morigingermline\n\t\t\t\tm.isrim1 = true\n\t\t\t\tbreak\n\t\t\tcase \"gp\":\n\t\t\tcase \"germline pathogenic\":\n\t\t\t\tvariantorigin = common.morigingermlinepathogenic\n\t\t\t\tm.isrim1 = true\n\t\t\t\tbreak\n\t\t\tcase \"gnp\":\n\t\t\tcase \"germline nonpathogenic\":\n\t\t\tcase \"germline non-pathogenic\":\n\t\t\t\tvariantorigin = common.morigingermlinenonpathogenic\n\t\t\t\tm.isrim1 = true\n\t\t\t\tbreak\n\t\t\tcase \"s\":\n\t\t\tcase \"somatic\":\n\t\t\tcase \"diagnosis\":\n\t\t\t\tvariantorigin = common.moriginsomatic\n\t\t\t\tbreak\n\t\t}\n\t}\n\tm.origin = variantorigin\n\n\tif (!m.sample && !m.patient) {\n\t\t// will not go into sample table\n\t\treturn\n\t}\n\n\tconst nopatientname = \"no patient/individual name\"\n\tlet p\n\tif (m.patient) {\n\t\tif (!flag.patient2st[m.patient]) {\n\t\t\tflag.patient2st[m.patient] = {}\n\t\t}\n\t\tflag.patient2st[m.patient][m.sampletype] = m.sample\n\t} else {\n\t\tif (!flag.patient2st[nopatientname]) {\n\t\t\tflag.patient2st[nopatientname] = {}\n\t\t}\n\t\tflag.patient2st[nopatientname][m.sampletype] = m.sample\n\t}\n\n\tif (m.sample) {\n\t\tif (m.disease) {\n\t\t\tif (m.sample in flag.sample2disease) {\n\t\t\t\tif (m.disease != flag.sample2disease[m.sample]) {\n\t\t\t\t\tflag.snv.badlines.push([\n\t\t\t\t\t\ti,\n\t\t\t\t\t\t'conflict of disease types for sample \"' +\n\t\t\t\t\t\t\tm.sample +\n\t\t\t\t\t\t\t'\": ' +\n\t\t\t\t\t\t\tm.disease +\n\t\t\t\t\t\t\t\", \" +\n\t\t\t\t\t\t\tflag.sample2disease[m.sample],\n\t\t\t\t\t\tlst,\n\t\t\t\t\t])\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tflag.sample2disease[m.sample] = m.disease\n\t\t\t}\n\t\t}\n\t}\n\treturn false\n}\n", "export const clusterMethodLst = [\n\t{\n\t\tlabel: \"Average\",\n\t\tvalue: \"average\",\n\t\ttitle: `Cluster by average value`,\n\t},\n\t{\n\t\tlabel: `Complete`,\n\t\tvalue: \"complete\",\n\t\ttitle: `Use the complete clustering method`,\n\t},\n\t{\n\t\tlabel: `Single`,\n\t\tvalue: \"single\",\n\t\ttitle: `Use the single clustering method`,\n\t},\n\t{\n\t\tlabel: `Ward.D`,\n\t\tvalue: \"ward.D\",\n\t\ttitle: `Use the ward.D clustering method`,\n\t},\n\t{\n\t\tlabel: `Ward.D2`,\n\t\tvalue: \"ward.D2\",\n\t\ttitle: `Use the ward.D2 clustering method`,\n\t},\n\t{\n\t\tlabel: `Mcquitty`,\n\t\tvalue: \"mcquitty\",\n\t\ttitle: `Use the Mcquity clustering method`,\n\t},\n\t/* These methods are currently disabled because the dendrogram lines tend to cross one another.\n\t{\n\t\tlabel: `Centroid`,\n\t\tvalue: 'centroid',\n\t\ttitle: `Use the centroid clustering method`\n\t},\n \t{\n\t\tlabel: `Median`,\n\t\tvalue: 'median',\n\t\ttitle: `Use the median clustering method`\n\t}\n */\n]\nexport const distanceMethodLst = [\n\t{\n\t\tlabel: \"Euclidean\",\n\t\tvalue: \"euclidean\",\n\t\ttitle: `Calculate distance using euclidean method`,\n\t},\n\t{\n\t\tlabel: \"Maximum\",\n\t\tvalue: \"maximum\",\n\t\ttitle: `Maximum distance between two components of x and y`,\n\t},\n\t{\n\t\tlabel: \"Manhattan\",\n\t\tvalue: \"manhattan\",\n\t\ttitle: `Calculate distance using the absolute distance between the two vectors`,\n\t},\n\t{\n\t\tlabel: \"Canberra\",\n\t\tvalue: \"canberra\",\n\t\ttitle: `Calculate distance using Canberra method`,\n\t},\n]\n", "// compute the percentile value from an array of values\n// sorted parameter allows to skip sorting if array is pre-sorted\n// source: https://www.dummies.com/article/academics-the-arts/math/statistics/how-to-calculate-percentiles-in-statistics-169783/\nexport default function computePercentile(values, percentile, sorted = false) {\n\tif (!sorted) values.sort((a, b) => a - b)\n\tconst index = Math.abs((percentile / 100) * values.length - 1)\n\tconst value = Number.isInteger(index)\n\t\t? (values[index] + values[index + 1]) / 2\n\t\t: values[Math.ceil(index)]\n\treturn value\n}\n", "const encoder = new TextEncoder()\n\nexport async function hash(message) {\n\tconst msgUint8 = encoder.encode(message) // encode as (utf-8) Uint8Array\n\tconst hashBuffer = await crypto.subtle.digest(\"SHA-1\", msgUint8) // hash the message\n\tconst hashArray = Array.from(new Uint8Array(hashBuffer)) // convert buffer to byte array\n\tconst hashHex = hashArray.map((b) => b.toString(16).padStart(2, \"0\")).join(\"\") // convert bytes to hex string\n\treturn hexToBase64(hashHex).replace(\"=\", \"-\") // shorten from 40 to 28 chars\n}\n\nfunction hexToBase64(hexStr) {\n\treturn btoa(\n\t\t[...hexStr].reduce(\n\t\t\t(acc, _, i) =>\n\t\t\t\t(acc += !((i - 1) & 1)\n\t\t\t\t\t? String.fromCharCode(parseInt(hexStr.substring(i - 1, i + 1), 16))\n\t\t\t\t\t: \"\"),\n\t\t\t\"\"\n\t\t)\n\t)\n}\n", "import { isNumeric } from \"./helpers.js\"\nconst reserved = [\"false\", \"true\", \"null\", \"undefined\"]\nconst delimiters = ['\"', \"{\", \"[\"]\nfunction encode(rawObject) {\n\tconst params = []\n\tfor (const [key, value] of Object.entries(rawObject)) {\n\t\tif (\n\t\t\ttypeof value == \"string\" &&\n\t\t\t!isNumeric(value) &&\n\t\t\t!reserved.includes(value) &&\n\t\t\t!delimiters.includes(value[0])\n\t\t) {\n\t\t\tparams.push(`${key}=${encodeURIComponent(value)}`)\n\t\t} else if (value !== void 0) {\n\t\t\tparams.push(`${key}=${encodeURIComponent(JSON.stringify(value))}`)\n\t\t}\n\t}\n\treturn params.join(\"&\")\n}\nfunction decode(query) {\n\tconst encoding = query.encoding\n\tfor (const [key, value] of Object.entries(query)) {\n\t\tif (\n\t\t\tencoding == \"json\" ||\n\t\t\tvalue == \"null\" || // not new, always been\n\t\t\tvalue == \"true\" || // NEED TO FIND-REPLACE CODE THAT USES value == 'true'\n\t\t\tvalue == \"false\" || // NEED TO FIND-REPLACE CODE THAT USES value == 'false'\n\t\t\tisNumeric(value) || // NEED TO check\n\t\t\t(typeof value == \"string\" &&\n\t\t\t\tvalue.startsWith('\"') &&\n\t\t\t\tvalue.endsWith('\"')) ||\n\t\t\t(typeof value == \"string\" &&\n\t\t\t\tvalue.startsWith(\"{\") &&\n\t\t\t\tvalue.endsWith(\"}\")) ||\n\t\t\t(typeof value == \"string\" && value.startsWith(\"[\") && value.endsWith(\"]\"))\n\t\t)\n\t\t\tquery[key] = JSON.parse(value)\n\t}\n\treturn query\n}\nexport { decode, encode }\n", "import { hash } from \"./hash.js\"\nimport { encode } from \"./urljson.js\"\nimport { deepFreeze } from \"./helpers.js\"\n\n/*\n\tezFetch()\n\tfetch wrapper with automatic response content-type detection and handling\n\n\t- this addresses issues with ky.json() or got.json(), where a HTTP 404 NOT FOUND\n\t\tresponse with text/html can break error handling/logging, making it harder to debug\n\n\t- this also automatically handles multipart responses\n\n - NOTE: for backend, use xfetch() instead, it uses ky() and its built-in retry support\n\n\targuments:\n\turl\n\tinit{headers?, body?}\n\t- first two arguments are same as native fetch\n*/\nexport async function ezFetch(_url, init = {}, opts = {}) {\n\tconst url = opts.autoMethod ? mayAdjustRequest(_url, init) : _url\n\tif (typeof init.body === \"object\") init.body = JSON.stringify(init.body)\n\n\treturn fetch(url, init).then(async (r) => {\n\t\tconst response = await processResponse(r)\n\t\tif (!r.ok) {\n\t\t\tconsole.log(\"ezFetch error \" + r.status)\n\t\t\tconsole.log(response)\n\t\t\tthrow response\n\t\t}\n\t\treturn response\n\t})\n}\n\nfunction mayAdjustRequest(url, init) {\n\tconst method = init.method?.toUpperCase() || \"GET\"\n\tif (method == \"POST\") {\n\t\tif (!init.headers) init.headers = {}\n\t\tif (init.body) {\n\t\t\tif (!init.headers[\"content-type\"])\n\t\t\t\tinit.headers[\"content-type\"] = \"application/json\"\n\t\t\tif (init.headers[\"content-type\"].toLowerCase() == \"application/json\") {\n\t\t\t\t// if consumer code has pre-encoded the body, parse to verify correctness\n\t\t\t\tif (typeof init.body == \"string\") init.body = JSON.parse(init.body)\n\t\t\t\tinit.body = JSON.stringify(init.body)\n\t\t\t}\n\t\t}\n\t\treturn url\n\t}\n\t// default to GET method per native fetch\n\tif (init.body) {\n\t\tif (typeof init.body != \"object\") throw `init.body should be an object`\n\t\t// init.body should be an object, to be converted to GET URL search parameter strings\n\t\tif (!url.includes(\"?\")) url += \"?\"\n\t\treturn `${url}${encode(init.body)}`\n\t}\n}\n\n/* \nr: a native fetch response argument\n\npotentially allow \"application/octet-stream\" as response type\nin such case it will not try to parse it as json\nalso the caller should just call dofetch2() without a serverData{}\nrather than dofetch3\n*/\nexport async function processResponse(r) {\n\t// if (!r.ok) {\n\t// throw new Error(`HTTP error! status: ${r.status}`)\n\t// }\n\tconst ct = r.headers.get(\"content-type\") // content type is always present\n\tif (!ct) throw `missing response.header['content-type']`\n\tif (ct.includes(\"/json\")) {\n\t\tconst payload = await r.json()\n\t\t// server should use a standard HTTP response status 400+, 500+\n\t\t// so that !r.ok will already be caught when wrapping fetch with try-catch\n\t\t// if (payload.error || payload.status == '') throw payload\n\t\t// if (payload.status === 'error') throw payload.message || payload\n\t\treturn payload\n\t}\n\tif (ct.includes(\"/text\") || ct.includes(\"text/\")) {\n\t\treturn r.text()\n\t}\n\tif (ct.includes(\"multipart\")) {\n\t\tif (ct.startsWith(\"multipart/form-data\")) return processFormData(r)\n\t\telse throw `cannot handle response content-type: '${ct}'`\n\t}\n\tif (ct == \"application/x-ndjson-nestedkey\") {\n\t\treturn processNDJSON_nestedKey(r)\n\t}\n\t// call blob() as catch-all\n\t// https://developer.mozilla.org/en-US/docs/Web/API/Response\n\treturn r.blob()\n}\n\n/*\n\texpected response format\n\t--boundary-text-from-HTTP-headers-content-type\n\theader-key1: header-value1\n\theader-key2: header-value2\n\n\t...json, text, blob, value, etc...\n\t--boundary-text-from-HTTP-headers-content-type\n\t... same format as previous chunk ...\n\n\t--boundary-text-from-HTTP-headers-content-type--\n*/\n\nexport async function processFormData(res) {\n\tconst decoder = new TextDecoder()\n\tconst data = {}\n\ttry {\n\t\tconst form = await res.formData()\n\t\t// The key of each form entry is a string, and the value is either a string or a Blob.\n\t\t// see https://developer.mozilla.org/en-US/docs/Web/API/FormData/entries\n\t\tfor (const [key, value] of form.entries()) {\n\t\t\tif (value.type) {\n\t\t\t\t// value is a Blob\n\t\t\t\tdata[key] = { headers: { \"content-type\": value.type }, body: value }\n\t\t\t} else {\n\t\t\t\t// value is a string, assume to be application/x-jsonlines (one json encoded value per line)\n\t\t\t\t// and convert into an array of json-decoded values\n\t\t\t\tconst body = !value ? [] : value.trim().split(\"\\n\").map(JSON.parse)\n\t\t\t\tdata[key] = { headers: { \"content-type\": \"application/json\" }, body }\n\t\t\t}\n\t\t}\n\t\treturn data\n\t} catch (e) {\n\t\tthrow e\n\t}\n}\n\nasync function processNDJSON_nestedKey(r) {\n\t// 1. Pipe through TextDecoder to convert bytes to text\n\tconst stream = r.body.pipeThrough(new TextDecoderStream())\n\tconst reader = stream.getReader()\n\tlet rootObj = {}\n\n\tlet buffer = \"\"\n\n\twhile (true) {\n\t\tconst { value, done } = await reader.read()\n\t\tif (done) break\n\n\t\t// 2. Add new chunk to buffer\n\t\tbuffer += value\n\n\t\t// 3. Split by newline\n\t\tlet parts = buffer.split(\"\\n\")\n\n\t\t// 4. Keep the last partial line in the buffer\n\t\tbuffer = parts.pop()\n\n\t\t// 5. Process complete lines\n\t\tfor (const line of parts) {\n\t\t\tif (line.trim()) {\n\t\t\t\tconst [keys, data] = JSON.parse(line) //; console.log(143, keys, data) // Process JSON data\n\t\t\t\tif (!keys.length) rootObj = data\n\t\t\t\telse {\n\t\t\t\t\tconst lastKey = keys.pop()\n\t\t\t\t\tlet target = rootObj\n\t\t\t\t\tfor (const k of keys) target = target[k]\n\t\t\t\t\ttarget[lastKey] = data\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn rootObj\n}\n\n// key: request object reference or computed string dataName\n// value: {\n// response: fetch promise or response,\n// exp: expiration timestamp\n// }\nconst dataCache = new Map()\n// maximum number of cached dataNames, oldest will be deleted if this is exceeded\nconst maxNumOfDataKeys = 10\nconst cacheLifetime = 1000 * 60 * 5\n/*\n\tmemFetch()\n\t- fetch wrapper that saves cached responses into memory and recovers them for matching subsequent requests\n\t- recommended for caching responses in the backend, with the opts.q argument to cache per expressjs request object\n\t- should call deleteCache(request) at the end of request handling, to free unneeded cache\n\t\n\tSee the usage note for getDataName() to avoid non-unique request/response.\n\t\n\tArguments:\n\turl\n\tinit{headers?, body?}\n\t- first two arguments are same as native fetch\n - when passing opts.client, may include other applicable options inside the init{} object, such as retry\n\n\topts{client}\n\n client: use this http client instead of native fetch\n - since fetch-helpers is shared between server and frontend workspaces, \n cannot directly import non-native modules at the beginning of this code file \n - for server side usage, client may be `xfetch()`, `ky` or other libraries \n*/\nexport async function memFetch(url, init, opts = {}) {\n\tif (typeof init.body === \"object\") init.body = JSON.stringify(init.body)\n\tconst dataKey = opts.q || (await getDataName(url, init))\n\tconst { response, exp } = dataCache.get(dataKey) || {}\n\tconst now = Date.now()\n\tlet result = response // either a Promise or actual data\n\n\tif (result) {\n\t\t// extend the expiration, since exp is more about managing the cache size\n\t\t// and not the validity of the cached response. A response for the current\n\t\t// dataName req.url + body + headers is technically valid until a new data version\n\t\t// gets published.\n\t\tdataCache.set(dataKey, { response, exp: now + cacheLifetime })\n\t\treturn result\n\t} else {\n\t\ttry {\n\t\t\t// IMPORTANT: do not await so that this same promise may be reused\n\t\t\t// by subsequent requests with the same dataKey\n\t\t\tresult = opts.client\n\t\t\t\t? opts\n\t\t\t\t\t\t.client(url, init, Object.assign(opts, { client: undefined }))\n\t\t\t\t\t\t.then((response) => {\n\t\t\t\t\t\t\t// replace the cached promise result with the actual data,\n\t\t\t\t\t\t\t// since persisting a cached promise for a long time is likely not best practice\n\t\t\t\t\t\t\tdataCache.set(dataKey, {\n\t\t\t\t\t\t\t\tresponse,\n\t\t\t\t\t\t\t\texp: Date.now() + cacheLifetime,\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\treturn response\n\t\t\t\t\t\t})\n\t\t\t\t: fetch(url, init)\n\t\t\t\t\t\t.then(async (r) => {\n\t\t\t\t\t\t\tconst response = await processResponse(r)\n\t\t\t\t\t\t\tif (!r.ok) {\n\t\t\t\t\t\t\t\tconsole.trace(response)\n\t\t\t\t\t\t\t\tthrow (\n\t\t\t\t\t\t\t\t\t\"memFetch error \" +\n\t\t\t\t\t\t\t\t\tr.status +\n\t\t\t\t\t\t\t\t\t\": \" +\n\t\t\t\t\t\t\t\t\t(typeof response == \"object\"\n\t\t\t\t\t\t\t\t\t\t? response.message || response.error\n\t\t\t\t\t\t\t\t\t\t: response)\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// replace the cached promise result with the actual data,\n\t\t\t\t\t\t\t// since persisting a cached promise for a long time is likely not best practice\n\t\t\t\t\t\t\tdataCache.set(dataKey, {\n\t\t\t\t\t\t\t\tresponse: deepFreeze(response),\n\t\t\t\t\t\t\t\texp: Date.now() + cacheLifetime,\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\treturn response\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.catch((e) => {\n\t\t\t\t\t\t\tif (dataCache.get(dataKey)) dataCache.delete(dataKey)\n\t\t\t\t\t\t\tthrow e\n\t\t\t\t\t\t})\n\n\t\t\tdataCache.set(dataKey, {\n\t\t\t\tresponse: result,\n\t\t\t\texp: Date.now() + cacheLifetime,\n\t\t\t})\n\t\t\tmanageCacheSize(now)\n\t\t\treturn result\n\t\t} catch (e) {\n\t\t\t// delete this cache only if it is a promise;\n\t\t\t// do not delete a valid resolved data cache\n\t\t\tif (dataCache.get(dataKey) instanceof Promise) dataCache.delete(dataKey)\n\t\t\tthrow e\n\t\t}\n\t}\n}\n\nexport function deleteCache(key) {\n\tdataCache.delete(key)\n}\n\nexport function manageCacheSize(_now) {\n\tconst now = _now || Date.now()\n\tconst keyExp = []\n\tfor (const [key, result] of dataCache.entries()) {\n\t\tif (result.exp < now) dataCache.delete(key)\n\t\telse keyExp.push({ key, exp: result.exp })\n\t}\n\tif (dataCache.size > maxNumOfDataKeys) {\n\t\tconst oldestEntries = keyExp\n\t\t\t.sort((a, b) => a.exp - b.exp)\n\t\t\t.slice(maxNumOfDataKeys)\n\t\tfor (const entry of oldestEntries) dataCache.delete(entry.key)\n\t}\n}\n\n/*\n\tNOTE: When used in client-side code, an HttpOnly cookie for a logged in user will not be\n\ttracked in init.headers below. \n*/\nexport async function getDataName(url, init) {\n\t// IMPORTANT: must ensure dataName is unique to either public or logged-in user\n\tconst dataName =\n\t\turl +\n\t\t\" | \" +\n\t\tinit.method +\n\t\t\" | \" +\n\t\tinit.body +\n\t\t\" | \" +\n\t\tJSON.stringify(init.headers)\n\treturn await hash(dataName)\n}\n\n//\nexport function clearMemFetchDataCache(opts = {}) {\n\tif (!opts.serverData) {\n\t\tdataCache.clear()\n\t\treturn\n\t}\n\tif (typeof opts.serverData != \"object\")\n\t\tthrow `opts.serverData is not an object`\n\tfor (const k of Object.keys(opts.serverData)) {\n\t\tdelete opts.serverData[k]\n\t}\n\tif (optsServerDataNames.has(opts.serverData))\n\t\toptsServerDataNames.delete(opts.serverData)\n}\n", "export function fileSize(v) {\n\tif (v > 1e9) return (v / 1e9).toFixed(2) + \" GB\"\n\tif (v > 1e6) return (v / 1e6).toFixed(2) + \" MB\"\n\tif (v > 1e3) return (v / 1e3).toFixed(2) + \" KB\"\n\treturn v + \" Bytes\"\n}\n", "import { dtcnv, dtsnvindel, dtsv, dtfusionrna } from \"./common.js\"\n\n// this script should contain mds3 track-related stuff shared between client and backend\n\n/*\nthe separator is used to join essential bits of a variant obj into a string as the \"ssm_id\", aims to uniquely identify a variant irrespective of sample\nthis is to mimic the GDC \"ssm_id\" which is a random id, with below benefits:\n- consistent way to pass request body for both gdc and non-gdc\n- uniform identification of ssm/cnv/sv in non-gdc backend code\n- uniform identification of all variants in client\n\nssm: chr + pos + ref + alt\ncnv: chr + start + stop + class\nsvfusion: dt + chr + pos + strand + pairlstidx + mname\n\nthe separator must avoid conflicting with characters from gene names, and can be changed based on needs\n*/\nexport const ssmIdFieldsSeparator = \"__\"\n\n/*\ninput: array of mixture of ssm, svfusion and cnv\n\noutput: sorted array. each element: [ class/dt, count of m ]\n*/\nexport function summarize_mclass(mlst) {\n\tconst m2c = new Map() // k: mclass, v: {}\n\tconst cnvs = []\n\tfor (const m of mlst) {\n\t\tif (m.dt == dtcnv) {\n\t\t\tcnvs.push(m)\n\t\t\tcontinue // process cnv later\n\t\t}\n\t\t// snvindel has m.class=str, svfusion has only dt=int\n\t\tconst key = m.class || m.dt\n\t\tm2c.set(key, 1 + (m2c.get(key) || 0))\n\t}\n\n\tif (cnvs.length) {\n\t\tif (Number.isFinite(cnvs[0].value)) {\n\t\t\t// first cnv uses numeric value (assumes all the same). record by dt\n\t\t\tm2c.set(dtcnv, cnvs.length)\n\t\t} else {\n\t\t\t// cnv not numeric and uses class; record by each class\n\t\t\tfor (const c of cnvs) {\n\t\t\t\tif (!c.class) continue // should not happen\n\t\t\t\tm2c.set(c.class, 1 + (m2c.get(c.class) || 0))\n\t\t\t}\n\t\t}\n\t}\n\treturn [...m2c].sort((i, j) => j[1] - i[1])\n}\n\n/*\nssmid is not specific for ssm, it covers all alterations\ngdc ssm are identified by a specific uuid, thus the design\n*/\nexport function guessSsmid(ssmid) {\n\tconst l = ssmid.split(ssmIdFieldsSeparator)\n\tif (l.length == 4) {\n\t\tconst [chr, tmp, ref, alt] = l\n\t\tconst pos = Number(tmp)\n\t\tif (Number.isNaN(pos)) throw \"ssmid snvindel pos not integer\"\n\t\treturn { dt: dtsnvindel, l: [chr, pos, ref, alt] }\n\t}\n\tif (l.length == 5) {\n\t\t// cnv. if type=cat, _value is blank string\n\t\tconst [chr, _start, _stop, _class, _value] = l\n\t\tconst start = Number(_start),\n\t\t\tstop = Number(_stop),\n\t\t\tvalue = _value == \"\" ? null : Number(_value)\n\t\tif (Number.isNaN(start) || Number.isNaN(stop))\n\t\t\tthrow \"ssmid cnv start/stop not integer\"\n\t\treturn { dt: dtcnv, l: [chr, start, stop, _class, value] }\n\t}\n\tif (l.length == 6) {\n\t\tif (l[3] == \"+\" || l[3] == \"-\") {\n\t\t\t// sv/fusion\n\t\t\tconst [_dt, chr, _pos, strand, _pi, _mname] = l\n\n\t\t\t// mname is encoded in case it contains comma (and is same as ssmIdFieldsSeparator)\n\t\t\tconst mname = decodeURIComponent(_mname)\n\t\t\tconst dt = Number(_dt)\n\t\t\tif (dt != dtsv && dt != dtfusionrna) throw \"ssmid dt not sv/fusion\"\n\t\t\tconst pos = Number(_pos)\n\t\t\tif (Number.isNaN(pos)) throw \"ssmid svfusion position not integer\"\n\t\t\tconst pairlstIdx = Number(_pi)\n\t\t\tif (Number.isNaN(pairlstIdx)) throw \"ssmid pairlstIdx not integer\"\n\t\t\treturn { dt, l: [dt, chr, pos, strand, pairlstIdx, mname] }\n\t\t}\n\t\t// cnv with sample\n\t\tconst [chr, _start, _stop, _class, _value, sample] = l\n\t\tconst start = Number(_start),\n\t\t\tstop = Number(_stop),\n\t\t\tvalue = _value == \"\" ? null : Number(_value) // if cnv not using value, must avoid `Number('')=0`\n\t\tif (Number.isNaN(start) || Number.isNaN(stop))\n\t\t\tthrow \"ssmid cnv start/stop not integer\"\n\t\treturn { dt: dtcnv, l: [chr, start, stop, _class, value, sample] }\n\t}\n\tthrow \"unknown ssmid\"\n}\n", "/*\nInitialize a bin configuration for a numeric dataset\n<data>: array of numeric data values\n<opts> (optional): object of options\n {}: output bin config as JavaScript object (default)\n {format: 'string'}: output bin config as JSON string\n*/\nexport default function initBinConfig(data, opts = {}) {\n\tif (!data.length)\n\t\treturn {\n\t\t\tmode: \"discrete\",\n\t\t\ttype: \"regular-bin\",\n\t\t\tstartinclusive: true,\n\t\t\tbin_size: null,\n\t\t\tfirst_bin: { stop: null },\n\t\t}\n\tif (data.find((d) => !Number.isFinite(d)))\n\t\tthrow new Error(\"non-numeric values found\")\n\n\tlet binConfig\n\tconst s = new Set(data)\n\tif (s.size === 1) {\n\t\t// single unique value in data array\n\t\t// prepare custom bin config for 3 bins: first bin\n\t\t// for values less than the value, second bin for values\n\t\t// equal to the value, and third bin one for values\n\t\t// greater than the value\n\t\t// all data values will fall into the second bin\n\t\tconst value = [...s][0]\n\t\tbinConfig = {\n\t\t\ttype: \"custom-bin\",\n\t\t\tlst: [\n\t\t\t\t{\n\t\t\t\t\tstop: value,\n\t\t\t\t\tstopinclusive: false,\n\t\t\t\t\tstartunbounded: true,\n\t\t\t\t\tlabel: \"<\" + value,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tstart: value,\n\t\t\t\t\tstop: value,\n\t\t\t\t\tstartinclusive: true,\n\t\t\t\t\tstopinclusive: true,\n\t\t\t\t\tlabel: \"=\" + value,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tstart: value,\n\t\t\t\t\tstartinclusive: false,\n\t\t\t\t\tstopunbounded: true,\n\t\t\t\t\tlabel: \">\" + value,\n\t\t\t\t},\n\t\t\t],\n\t\t}\n\t} else {\n\t\t// multiple unique values in data array\n\t\t// prepare regular bin config\n\n\t\t// compute the bin size for a maximum bin number of 8\n\t\tdata.sort((a, b) => a - b)\n\t\tconst l = data.length\n\t\tconst min = data[0]\n\t\tconst max = data[l - 1]\n\t\tconst p5idx = Math.ceil(l * 0.05) - 1\n\t\tconst p98idx = Math.ceil(l * 0.98) - 1\n\t\tconst p5 = data[p5idx]\n\t\tconst p98 = data[p98idx]\n\t\t// use 98th and 5th percentiles to compute bin size to reduce outlier influence\n\t\t// if 98th = 5th, use max and min instead\n\t\tconst binSize = p98 != p5 ? (p98 - p5) / 8 : (max - min) / 8\n\t\t// first bin stop will equal either (minimum + bin size) or (5th percentile), whichever is larger.\n\t\tconst firstBinStop = Math.max(min + binSize, p5)\n\t\t// round the bin values\n\t\tlet [binSize_rnd, firstBinStop_rnd, lastBinStart_rnd, rounding] =\n\t\t\troundBinVals(binSize, firstBinStop, max, min)\n\t\t// generate the bin configuration\n\t\tbinConfig = {\n\t\t\ttype: \"regular-bin\",\n\t\t\tstartinclusive: true,\n\t\t\tbin_size: binSize_rnd,\n\t\t\tfirst_bin: { stop: firstBinStop_rnd },\n\t\t}\n\t\tif (lastBinStart_rnd) binConfig.last_bin = { start: lastBinStart_rnd }\n\t\tif (rounding) binConfig.rounding = rounding\n\t}\n\tif (\"format\" in opts) {\n\t\tif (opts.format === \"string\") {\n\t\t\treturn JSON.stringify(binConfig)\n\t\t} else {\n\t\t\tthrow \"options are not in the correct format\"\n\t\t}\n\t} else {\n\t\treturn binConfig\n\t}\n}\n\nfunction roundBinVals(binSize, firstBinStop, max, min) {\n\tlet binSize_rnd, firstBinStop_rnd, lastBinStart_rnd, rounding\n\tconst log = Math.floor(Math.log10(binSize))\n\tif (binSize >= 0.1 && binSize <= 2) {\n\t\t// Round to the nearest one for small bin sizes\n\t\tbinSize_rnd = Math.round(binSize / (1 * 10 ** log)) * (1 * 10 ** log)\n\t\tfirstBinStop_rnd =\n\t\t\tMath.round(firstBinStop / (1 * 10 ** log)) * (1 * 10 ** log)\n\t} else {\n\t\t// Round to the nearest five for large bin sizes\n\t\tbinSize_rnd = Math.round(binSize / (5 * 10 ** log)) * (5 * 10 ** log)\n\t\tfirstBinStop_rnd =\n\t\t\tMath.round(firstBinStop / (5 * 10 ** log)) * (5 * 10 ** log)\n\t\tif (binSize_rnd === 0) binSize_rnd = 1 * 10 ** log\n\t\tif (firstBinStop_rnd === 0) firstBinStop_rnd = 1 * 10 ** log\n\t\tif (binSize_rnd === 5 * 10 ** log && firstBinStop_rnd === 1 * 10 ** log)\n\t\t\tfirstBinStop_rnd = 5 * 10 ** log\n\t}\n\tif (firstBinStop_rnd < min) firstBinStop_rnd = firstBinStop_rnd * 2\n\t// if the number of bins is above 8 after rounding, then set the last bin start to restrict the number of bins to 8\n\tconst eighthBinStop_rnd = firstBinStop_rnd + binSize_rnd * 7\n\tif (max > eighthBinStop_rnd) {\n\t\tlastBinStart_rnd = firstBinStop_rnd + binSize_rnd * 6\n\t}\n\tif (binSize < 1) {\n\t\tconst digits = Math.abs(log)\n\t\tbinSize_rnd = Number(binSize_rnd.toFixed(digits))\n\t\tfirstBinStop_rnd = Number(firstBinStop_rnd.toFixed(digits))\n\t\tif (lastBinStart_rnd)\n\t\t\tlastBinStart_rnd = Number(lastBinStart_rnd.toFixed(digits))\n\t\trounding = \".\" + digits + \"f\"\n\t}\n\tif (Object.is(firstBinStop_rnd, -0)) firstBinStop_rnd = 0\n\treturn [binSize_rnd, firstBinStop_rnd, lastBinStart_rnd, rounding]\n}\n", "import {\n\tTermTypes,\n\tisNumericTerm,\n\tSINGLECELL_CELLTYPE,\n\tSINGLECELL_GENE_EXPRESSION,\n\tISOFORM_EXPRESSION,\n} from \"./terms.js\"\n\nexport const graphableTypes = new Set([\n\t\"categorical\",\n\t\"integer\",\n\t\"float\",\n\t\"condition\",\n\t\"survival\",\n\t\"snplst\",\n\t\"snplocus\",\n\t\"geneVariant\",\n\t\"samplelst\",\n\t\"geneExpression\",\n\tISOFORM_EXPRESSION,\n\t\"dtcnv\",\n\t\"dtsnvindel\",\n\t\"dtfusion\",\n\t\"dtsv\",\n\t\"date\",\n\tTermTypes.SSGSEA,\n\tTermTypes.DNA_METHYLATION,\n\tTermTypes.METABOLITE_INTENSITY,\n\tTermTypes.PROTEOME_ABUNDANCE,\n\tSINGLECELL_GENE_EXPRESSION,\n\tSINGLECELL_CELLTYPE,\n\tTermTypes.SNP,\n\tTermTypes.TERM_COLLECTION,\n])\n\n/*\nisUsableTerm() will\n\n\t- centralize the \"allowed term\" logic\n\twhich can be intricate or dataset-specific \n\tfor certain terms or contexts\n\t- make it easy to handle new term types\n\nArguments:\n\n\tterm {}\n\t\t.type: 'categorical', etc.\n\t\t.child_types: []\n\t\n\t_usecase {}\n\t\t.target (REQUIRED): 'barchart', 'regression', etc\n\t\t\t- used as a switch-case \"router\" for additional use-specific logic\n\t\t\t- other parameters, if applicable, are described in the route \"handler\" \n\t\t.detail \n\t\t - a more specific detailed use case\n\t\n\n\ttermdbConfig\n\t\toptional. provides ds overrides on default rules via excludedTermtypeByTarget. for use on client\n\n\tds\n\t\toptional. provides ds overrides when the function runs on backend\n\t\tserver-side dataset object that can supply overrides (in the form of functions) to the use case logic,\n\t\tfor example, to apply role-based allowed term uses or performance-related restrictions\n\t\tto ancestor terms when a use case aggregates too many data points for a given chart type\n\nReturns\n\n\ta Set{} with zero or more of the following strings:\n\t- 'plot' if the term can be used in a plot chartType\n\t- 'branch' if the term can be used only as an expandable tree branch, but not in a plot\n\t- an empty Set means that the term has no valid uses, i.e, it cannot be used either for plotting or as a tree branch\n*/\nexport function isUsableTerm(term, _usecase, termdbConfig, ds) {\n\tconst usecase = _usecase || {}\n\n\t// may apply dataset specific override filter for a use case\n\tif (typeof ds?.usecase?.[usecase.target] == \"function\") {\n\t\treturn ds.usecase[usecase.target](term, usecase)\n\t}\n\n\t// if (term.isprivate && !user.roleCanUse(term)) return false\n\n\tconst uses = new Set()\n\t// note: expects term.child_types to be null if term.isleaf == true\n\tconst child_types = term.child_types || []\n\t// default handling\n\tswitch (usecase.target) {\n\t\tcase \"barchart\":\n\t\tcase \"violin\":\n\t\tcase \"boxplot\":\n\t\tcase \"summary\":\n\t\t\tif (term.type && term.type !== \"survival\") uses.add(\"plot\")\n\t\t\tif (hasAllowedChildTypes(child_types, [\"survival\"])) uses.add(\"branch\")\n\t\t\treturn uses\n\n\t\tcase \"summaryInput\":\n\t\t\tif (usecase.detail === \"term2\" || usecase.detail == \"term0\") {\n\t\t\t\tif (term.type && term.type !== \"survival\") uses.add(\"plot\")\n\t\t\t\tif (hasAllowedChildTypes(child_types, [\"survival\"])) uses.add(\"branch\")\n\t\t\t\treturn uses\n\t\t\t} else {\n\t\t\t\tif (graphableTypes.has(term.type)) uses.add(\"plot\")\n\t\t\t\tif (!term.isleaf) uses.add(\"branch\")\n\t\t\t\treturn uses\n\t\t\t}\n\n\t\tcase \"matrix\":\n\t\t\tif (term.type) uses.add(\"plot\")\n\t\t\tif (!term.isleaf) uses.add(\"branch\")\n\t\t\treturn uses\n\n\t\tcase \"table\":\n\t\t\tif (usecase.detail == \"term\") uses.add(\"plot\")\n\t\t\tif (child_types.length > 1) uses.add(\"branch\")\n\t\t\treturn uses\n\n\t\tcase \"sampleScatter\":\n\t\t\tif (usecase.detail == \"numeric\") {\n\t\t\t\tif (isNumericTerm(term)) {\n\t\t\t\t\tuses.add(\"plot\")\n\t\t\t\t}\n\t\t\t\tif (hasNumericChild(child_types)) uses.add(\"branch\")\n\t\t\t}\n\t\t\t// Commenting out for now. May need later for another single\n\t\t\t// cell term. Revisit logic at that time.\n\t\t\t// else if (usecase?.specialCase?.type == 'singleCell') {\n\t\t\t// \t\tif (term.type && term.type.startsWith('singleCell')) {\n\t\t\t// \t\t\tif (term.plot && term.plot == usecase.specialCase?.config.name) {\n\t\t\t// \t\t\t\tuses.add('plot')\n\t\t\t// \t\t\t}\n\t\t\t// \t\t}\n\t\t\t// }\n\t\t\telse {\n\t\t\t\tif (graphableTypes.has(term.type)) uses.add(\"plot\")\n\t\t\t\tif (!term.isleaf) uses.add(\"branch\")\n\t\t\t}\n\t\t\treturn uses\n\t\tcase \"runChart2\":\n\t\t\tif (usecase.detail == \"date\" || usecase.detail == \"xtw\") {\n\t\t\t\tif (term.type == \"date\") {\n\t\t\t\t\tuses.add(\"plot\")\n\t\t\t\t}\n\t\t\t\tif (child_types.includes(\"date\")) uses.add(\"branch\")\n\t\t\t} else if (usecase.detail == \"numeric\") {\n\t\t\t\tif (isNumericTerm(term) && term.type != \"date\") {\n\t\t\t\t\tuses.add(\"plot\")\n\t\t\t\t}\n\t\t\t\tif (hasNumericChild(child_types)) uses.add(\"branch\")\n\t\t\t} else {\n\t\t\t\tif (graphableTypes.has(term.type)) uses.add(\"plot\")\n\t\t\t\tif (!term.isleaf) uses.add(\"branch\")\n\t\t\t}\n\t\t\treturn uses\n\n\t\tcase \"numericDictTermCluster\":\n\t\t\tif (!usecase.detail?.exclude?.includes(term.id)) {\n\t\t\t\tif (isNumericTerm(term)) {\n\t\t\t\t\tuses.add(\"plot\")\n\t\t\t\t}\n\t\t\t\tif (hasNumericChild(child_types)) {\n\t\t\t\t\tuses.add(\"branch\")\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn uses\n\n\t\tcase \"termCollections\":\n\t\t\tif (usecase.detail?.termIds?.includes(term.id)) uses.add(\"plot\")\n\t\t\tif (usecase.detail?.branchIds?.includes(term.id)) uses.add(\"branch\")\n\t\t\treturn uses\n\n\t\tcase \"profileForms\":\n\t\t\tif (!term.isleaf) {\n\t\t\t\tconst ancestors = term.id.split(\"__\").length //depends on using the __ naming convension!\n\t\t\t\tif (ancestors == 3) {\n\t\t\t\t\t// 3rd level term is a domain, we show the templates associated to this domain\n\t\t\t\t\tuses.add(\"plot\")\n\t\t\t\t} else if (ancestors < 3) uses.add(\"branch\")\n\t\t\t}\n\t\t\treturn uses\n\n\t\tcase \"profileForms2\": {\n\t\t\t// Picker (forms2.ts makeChartBtnMenu) sets usecase.cohort + usecase.subtype.\n\t\t\t// Reads the per-cohort domains list directly from the dataset config at\n\t\t\t// plotConfigByCohort[cohort].profileForms2.domains \u2014 each entry is { id, plotTypes }.\n\t\t\tif (term.isleaf) return uses\n\t\t\tconst allowed =\n\t\t\t\ttermdbConfig?.plotConfigByCohort?.[usecase.cohort]?.profileForms2\n\t\t\t\t\t?.domains\n\t\t\tif (!allowed) return uses\n\t\t\tconst ancestors = term.id.split(\"__\").length\n\t\t\tconst subtype = usecase.subtype\n\t\t\tif (ancestors == 3) {\n\t\t\t\tif (allowed.find((d) => d.id === term.id)?.plotTypes?.includes(subtype))\n\t\t\t\t\tuses.add(\"plot\")\n\t\t\t} else if (ancestors < 3) {\n\t\t\t\tconst prefix = term.id + \"__\"\n\t\t\t\tif (\n\t\t\t\t\tallowed.some(\n\t\t\t\t\t\t(d) => d.id.startsWith(prefix) && d.plotTypes.includes(subtype)\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\tuses.add(\"branch\")\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn uses\n\t\t}\n\n\t\t// case 'boxplot':\n\t\t// \tif (term.type == 'float' || term.type == 'integer') uses.add('plot')\n\t\t// \tif (usecase.detail === 'term2' && hasNumericChild(child_types)) uses.add('branch')\n\t\t// \treturn uses\n\n\t\tcase \"cuminc\":\n\t\t\tif (usecase.detail == \"term\") {\n\t\t\t\tif (term.type == \"condition\") uses.add(\"plot\")\n\t\t\t\tif (child_types.includes(\"condition\")) uses.add(\"branch\")\n\t\t\t\treturn uses\n\t\t\t}\n\t\t\tif (usecase.detail === \"term2\" || usecase.detail == \"term0\") {\n\t\t\t\tif (term.type && term.type != \"condition\" && term.type != \"survival\")\n\t\t\t\t\tuses.add(\"plot\")\n\t\t\t\tif (hasAllowedChildTypes(child_types, [\"condition\", \"survival\"]))\n\t\t\t\t\tuses.add(\"branch\")\n\t\t\t\treturn uses\n\t\t\t}\n\t\t\treturn uses\n\n\t\tcase \"survival\":\n\t\t\tif (usecase.detail == \"term\") {\n\t\t\t\tif (term.type == \"survival\") uses.add(\"plot\")\n\t\t\t\tif (child_types.includes(\"survival\")) uses.add(\"branch\")\n\t\t\t\treturn uses\n\t\t\t}\n\t\t\tif (usecase.detail === \"term2\" || usecase.detail == \"term0\") {\n\t\t\t\tif (term.type && term.type != \"survival\") uses.add(\"plot\")\n\t\t\t\tif (hasAllowedChildTypes(child_types, [\"survival\"])) uses.add(\"branch\")\n\t\t\t\treturn uses\n\t\t\t}\n\t\t\treturn uses\n\n\t\tcase \"regression\":\n\t\t\tif (usecase.detail == \"outcome\") {\n\t\t\t\tif (usecase.regressionType == \"linear\") {\n\t\t\t\t\tif (term.type == \"float\" || term.type == \"integer\") uses.add(\"plot\")\n\t\t\t\t\tif (hasNumericChild(child_types)) uses.add(\"branch\")\n\t\t\t\t\treturn uses\n\t\t\t\t}\n\t\t\t\tif (usecase.regressionType == \"logistic\") {\n\t\t\t\t\tif (term.type && term.type != \"survival\") uses.add(\"plot\")\n\t\t\t\t\tif (hasAllowedChildTypes(child_types, [\"survival\"]))\n\t\t\t\t\t\tuses.add(\"branch\")\n\t\t\t\t\treturn uses\n\t\t\t\t} else if (usecase.regressionType == \"cox\") {\n\t\t\t\t\tif (term.type == \"condition\" || term.type == \"survival\")\n\t\t\t\t\t\tuses.add(\"plot\")\n\t\t\t\t\tif (\n\t\t\t\t\t\tchild_types.includes(\"condition\") ||\n\t\t\t\t\t\tchild_types.includes(\"survival\")\n\t\t\t\t\t)\n\t\t\t\t\t\tuses.add(\"branch\")\n\t\t\t\t\treturn uses\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (usecase.detail == \"independent\") {\n\t\t\t\tif (\n\t\t\t\t\tterm.type == \"float\" ||\n\t\t\t\t\tterm.type == \"integer\" ||\n\t\t\t\t\tterm.type == \"categorical\" ||\n\t\t\t\t\tterm.type == \"samplelst\"\n\t\t\t\t)\n\t\t\t\t\tuses.add(\"plot\")\n\t\t\t\tif (hasChildTypes(child_types, [\"categorical\", \"float\", \"integer\"]))\n\t\t\t\t\tuses.add(\"branch\")\n\t\t\t\treturn uses\n\t\t\t}\n\t\t\treturn uses\n\n\t\tcase \"filter\": {\n\t\t\t// apply \"exlst\" to other targets as needed\n\t\t\tconst exlst = termdbConfig?.excludedTermtypeByTarget?.filter\n\t\t\tif (exlst) {\n\t\t\t\tif (graphableTypes.has(term.type) && !exlst.includes(term.type))\n\t\t\t\t\tuses.add(\"plot\")\n\t\t\t\tif (child_types.find((t) => !exlst.includes(t))) uses.add(\"branch\") // there's a non-excluded child type, allow branch to show\n\t\t\t\treturn uses\n\t\t\t}\n\t\t\t// no specific rule for filter. use default rules\n\t\t\tif (graphableTypes.has(term.type)) uses.add(\"plot\")\n\t\t\tif (!term.isleaf) uses.add(\"branch\")\n\t\t\treturn uses\n\t\t}\n\n\t\tcase \"correlationVolcano\":\n\t\t\tif (usecase.detail == \"numeric\") {\n\t\t\t\tif (isNumericTerm(term)) {\n\t\t\t\t\tuses.add(\"plot\")\n\t\t\t\t}\n\t\t\t\tif (hasNumericChild(child_types)) uses.add(\"branch\")\n\t\t\t} else {\n\t\t\t\tif (graphableTypes.has(term.type)) uses.add(\"plot\")\n\t\t\t\tif (!term.isleaf) uses.add(\"branch\")\n\t\t\t}\n\t\t\treturn uses\n\n\t\tcase \"proteinView\":\n\t\t\tif (term.type == TermTypes.PROTEOME_ABUNDANCE) uses.add(\"plot\")\n\t\t\tif (child_types.includes(TermTypes.PROTEOME_ABUNDANCE)) uses.add(\"branch\")\n\t\t\treturn uses\n\n\t\tdefault:\n\t\t\tif (graphableTypes.has(term.type)) uses.add(\"plot\")\n\t\t\tif (!term.isleaf) uses.add(\"branch\")\n\t\t\treturn uses\n\t}\n}\n\n// determine if the term has at least one child type that\n// is not excluded\nfunction hasAllowedChildTypes(child_types, excluded_types) {\n\tif (!child_types.length) {\n\t\t// term does not have children\n\t\treturn false\n\t}\n\tif (!excluded_types?.length) {\n\t\t// no excluded types\n\t\treturn true\n\t}\n\tif (child_types.some((type) => !excluded_types.includes(type))) {\n\t\t// at least one child type is not excluded\n\t\treturn true\n\t}\n}\n\nfunction hasNumericChild(child_types) {\n\treturn child_types.includes(\"float\") || child_types.includes(\"integer\")\n}\n\nfunction hasChildTypes(child_types, expected_types) {\n\tfor (const a of expected_types) {\n\t\tif (child_types.includes(a)) return true\n\t}\n}\n", "function formatElapsedTime(ms, precision = 2) {\n\tif (typeof ms !== \"number\" || isNaN(ms)) {\n\t\treturn typeof ms !== \"number\"\n\t\t\t? \"Invalid time: not a number\"\n\t\t\t: \"Invalid time: NaN\"\n\t}\n\tif (!isFinite(ms)) {\n\t\treturn ms > 0 ? \"Infinite time\" : \"-Infinite time\"\n\t}\n\tconst absMs = Math.abs(ms)\n\tconst sign = ms < 0 ? \"-\" : \"\"\n\tif (absMs < 1e3) {\n\t\treturn `${sign}${absMs}ms`\n\t}\n\tif (absMs < 6e4) {\n\t\treturn `${sign}${(absMs / 1e3).toFixed(precision)}s`\n\t}\n\tconst minutes = Math.floor(absMs / 6e4)\n\tconst seconds = ((absMs % 6e4) / 1e3).toFixed(precision)\n\treturn `${sign}${minutes}m ${seconds}s`\n}\nexport { formatElapsedTime }\n", "import { vepinfo } from \"./common.js\"\n\nexport function parse_ANN(str, header, m) {\n\t// snpEff\n\tif (!header) {\n\t\treturn null\n\t}\n\tfor (const thisannotation of str.split(\",\")) {\n\t\tconst lst = thisannotation.replace(/&/g, \",\").split(\"|\")\n\n\t\tconst o = {}\n\n\t\tfor (let i = 0; i < header.length; i++) {\n\t\t\tif (lst[i]) {\n\t\t\t\to[header[i].name] = lst[i]\n\t\t\t}\n\t\t}\n\t\tif (!o.Allele) {\n\t\t\tcontinue\n\t\t}\n\t\tlet allele = null\n\t\tfor (const a of m.alleles) {\n\t\t\tif (a.allele == o.Allele) {\n\t\t\t\tallele = a\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tif (!allele) {\n\t\t\t// cannot match to allele!!!\n\t\t\tcontinue\n\t\t}\n\t\tif (!allele.ann) {\n\t\t\tallele.ann = []\n\t\t}\n\t\tallele.ann.push(o)\n\t\to._gene = o.Gene_Name\n\t\t// isoform\n\t\tif (o.Feature_Type && o.Feature_Type == \"transcript\" && o.Feature_ID) {\n\t\t\to._isoform = o.Feature_ID.split(\".\")[0]\n\t\t}\n\t\t// class\n\t\tif (o.Annotation) {\n\t\t\tconst [dt, cls, rank] = vepinfo(o.Annotation)\n\t\t\to._dt = dt\n\t\t\to._class = cls\n\t\t\to._csqrank = rank\n\t\t} else {\n\t\t\t// FIXME\n\t\t\to._dt = dtsnvindel\n\t\t\to._class = mclassnonstandard\n\t\t}\n\t\t// mname\n\t\tif (o[\"HGVS.p\"]) {\n\t\t\t//o._mname=decodeURIComponent(o.HGVSp.substr(o.HGVSp.indexOf(':')+1))\n\t\t\to._mname = o[\"HGVS.p\"]\n\t\t} else if (o[\"HGVS.c\"]) {\n\t\t\to._mname = o[\"HGVS.c\"]\n\t\t} else {\n\t\t}\n\t}\n\treturn true\n}\n", "import { vepinfo } from \"./common.js\"\n/*\nparse csq field from a variant line, not header\nCSQ header must have already been parsed\n\nstr: the csq value for a vcf line\nheader: [ // something like this\n { name: 'Allele' },\n { name: 'Consequence' },\n { name: 'IMPACT' },\n { name: 'SYMBOL' },\n { name: 'Gene' },\n { name: 'Feature_type' },\n { name: 'Feature' },\n { name: 'BIOTYPE' },\n { name: 'EXON' },\n { name: 'INTRON' },\n { name: 'HGVSc' },\n { name: 'HGVSp' },\n { name: 'cDNA_position' },\n { name: 'CDS_position' },\n { name: 'Protein_position' },\n { name: 'Amino_acids' },\n { name: 'Codons' },\n { name: 'Existing_variation' },\n { name: 'DISTANCE' },\n { name: 'STRAND' },\n { name: 'FLAGS' },\n { name: 'SYMBOL_SOURCE' },\n { name: 'HGNC_ID' },\n { name: 'CANONICAL' },\n { name: 'REFSEQ_MATCH' },\n { name: 'GIVEN_REF' },\n { name: 'USED_REF' },\n { name: 'BAM_EDIT' },\n { name: 'HGVS_OFFSET' },\n { name: 'CLIN_SIG' },\n { name: 'SOMATIC' },\n { name: 'PHENO' }\n]\n\nm: {\n\tmlst[ {} ]\n\t\t.allele_original\n\t\t.csq[ {} ] // parse_CSQ will add this array to this allele\n\t\t\t._class\n\t\t\t._csqrank\n\t\t\t._dt\n\t\t\t._gene\n\t\t\t._isoform\n\t\t\t._mname\n}\n\n*/\n\nexport function parse_CSQ(str, header, m) {\n\tif (!header) {\n\t\treturn null\n\t}\n\tfor (const thisannotation of str.split(\",\")) {\n\t\tconst lst = thisannotation.replace(/&/g, \",\").split(\"|\")\n\n\t\tconst o = {}\n\n\t\tfor (let i = 0; i < header.length; i++) {\n\t\t\tif (lst[i]) {\n\t\t\t\to[header[i].name] = lst[i]\n\t\t\t}\n\t\t}\n\t\tif (!o.Allele) {\n\t\t\tcontinue\n\t\t}\n\t\tlet allele = null\n\n\t\t//////////////////////////////////////\n\t\t// NOTE\n\t\t// mds2delete\n\t\t// m.alleles[] is based on old vcf parsing and may delete?\n\t\t// latest spec is m.mlst[]\n\t\t//////////////////////////////////////\n\n\t\tfor (const a of m.mlst || m.alleles) {\n\t\t\tif (a.allele_original == o.Allele) {\n\t\t\t\tallele = a\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tif (!allele) {\n\t\t\tif (o.Allele == \"-\") {\n\t\t\t\t// deletion\n\t\t\t\tif (m.mlst) {\n\t\t\t\t\tif (m.mlst.length == 1) {\n\t\t\t\t\t\tallele = m.mlst[0]\n\t\t\t\t\t}\n\t\t\t\t} else if (m.alleles) {\n\t\t\t\t\tif (m.alleles.length == 1) {\n\t\t\t\t\t\tallele = m.alleles[0]\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor (const a of m.mlst || m.alleles) {\n\t\t\t\t\tif (a.allele_original.substr(1) == o.Allele) {\n\t\t\t\t\t\t// insertion, without first padding base\n\t\t\t\t\t\tallele = a\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!allele) {\n\t\t\t\t// cannot match to allele!!!\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\t\tif (!allele.csq) {\n\t\t\tallele.csq = []\n\t\t}\n\t\tallele.csq.push(o)\n\n\t\t// gene\n\t\to._gene = o.SYMBOL || o.Gene\n\n\t\t// isoform\n\t\tif (o.Feature_type && o.Feature_type == \"Transcript\") {\n\t\t\to._isoform = o.Feature.split(\".\")[0] // remove version\n\t\t} else {\n\t\t\to._isoform = o._gene\n\t\t}\n\n\t\t// class\n\t\tif (o.Consequence) {\n\t\t\tconst [dt, cls, rank] = vepinfo(o.Consequence)\n\t\t\to._dt = dt\n\t\t\to._class = cls\n\t\t\to._csqrank = rank\n\t\t} else {\n\t\t\t// FIXME\n\t\t\to._dt = dtsnvindel\n\t\t\to._class = mclassnonstandard\n\t\t}\n\t\t// mname\n\t\tif (o.HGVSp) {\n\t\t\to._mname = decodeURIComponent(o.HGVSp.substr(o.HGVSp.indexOf(\":\") + 1))\n\t\t} else if (o.Protein_position && o.Amino_acids) {\n\t\t\to._mname = decodeURIComponent(o.Protein_position + o.Amino_acids)\n\t\t} else if (o.HGVSc) {\n\t\t\to._mname = o.HGVSc.substr(o.HGVSc.indexOf(\":\") + 1)\n\t\t} else if (o.Existing_variation) {\n\t\t\to._name = o.Existing_variation\n\t\t} else {\n\t\t}\n\t}\n\treturn true\n}\n", "/*\nto parse a variant line, not header\n\ncannot simply slice by /[;=]/, but read char by char\ncase CLNVI=Breast_Cancer_Information_Core__(BRCA2):745-4&base_change=C_to_G;\ncase k1=v1;DB;k2=v2;\n*/\nexport function dissect_INFO(str) {\n\t//let findequal=true\n\tlet findsemicolon = false\n\tlet findequalorsemicolon = true\n\n\tlet i = 0\n\tlet idx = 0\n\n\tconst k2v = {}\n\tlet lastkey\n\n\twhile (i < str.length) {\n\t\tconst c = str[i]\n\t\tif (findequalorsemicolon) {\n\t\t\tif (c == \"=\") {\n\t\t\t\tfindsemicolon = true\n\t\t\t\tfindequalorsemicolon = false\n\t\t\t\tlastkey = str.substring(idx, i)\n\t\t\t\tidx = i + 1\n\t\t\t} else if (c == \";\") {\n\t\t\t\t// should be a flag\n\t\t\t\tk2v[str.substring(idx, i)] = 1\n\t\t\t\tidx = i + 1\n\t\t\t}\n\t\t} else if (findsemicolon && c == \";\") {\n\t\t\tfindequalorsemicolon = true\n\t\t\tfindsemicolon = false\n\t\t\tk2v[lastkey] = str.substring(idx, i)\n\t\t\tlastkey = null\n\t\t\tidx = i + 1\n\t\t}\n\t\ti++\n\t}\n\n\tconst remainstr = str.substr(idx, i)\n\tif (lastkey) {\n\t\tk2v[lastkey] = remainstr\n\t} else {\n\t\tk2v[remainstr] = 1\n\t}\n\n\treturn k2v\n}\n", "import {\n\tmclassdeletion,\n\tmclasssnv,\n\tmclassmnv,\n\tmclassinsertion,\n\tmclassnonstandard,\n} from \"./common.js\"\n\nexport function getVariantType(ref, alt) {\n\tif (ref.length == 1 && alt.length == 1) {\n\t\t// both alleles length of 1\n\t\tif (alt == \".\") {\n\t\t\t// alt is missing\n\t\t\treturn mclassdeletion\n\t\t}\n\t\t// snv\n\t\treturn mclasssnv\n\t}\n\tif (ref.length == alt.length) return mclassmnv\n\t// FIXME only when empty length of one allele\n\tif (ref.length < alt.length) return mclassinsertion\n\tif (ref.length > alt.length) return mclassdeletion\n\treturn mclassnonstandard\n}\n", "import { mclass } from \"./common.js\"\nimport { dissect_INFO } from \"./vcf.info.js\"\nimport { parse_CSQ } from \"./vcf.csq.js\"\nimport { parse_ANN } from \"./vcf.ann.js\"\nimport { getVariantType } from \"./vcf.type.js\"\n\n/*\nOnly for parsing vcf files\nis not involved in creating vcf tracks\n\nshared between client-server\n*/\n\n// for telling symbolic alleles e.g. <*:DEL>\nconst getallelename = new RegExp(/<(.+)>/)\n\nconst mclasslabel2key = {}\nfor (const k in mclass) {\n\tmclasslabel2key[mclass[k].label.toUpperCase()] = k\n}\n\nexport function vcfparsemeta(lines) {\n\t/*\n\tinput: array of string, as lines separated by linebreak\n\n\t##INFO for meta lines\n\t#CHROM for header, to get samples\n\n\t*/\n\n\tlet sample = [],\n\t\terrlst = [],\n\t\tinfo = {},\n\t\thasinfo = false,\n\t\tformat = {},\n\t\thasformat = false\n\n\tfor (const line of lines) {\n\t\tif (!line.startsWith(\"#\")) {\n\t\t\tcontinue\n\t\t}\n\n\t\tif (line.startsWith(\"#C\")) {\n\t\t\t// header, get samples\n\t\t\tsample = line.split(\"\\t\").slice(9)\n\t\t\tcontinue\n\t\t}\n\n\t\tif (line.startsWith(\"##INFO\")) {\n\t\t\tconst e = tohash(line.substring(8, line.length - 1), info)\n\t\t\tif (e) {\n\t\t\t\terrlst.push(\"INFO error: \" + e)\n\t\t\t} else {\n\t\t\t\thasinfo = true\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\n\t\tif (line.startsWith(\"##FORMAT\")) {\n\t\t\tconst e = tohash(line.substring(10, line.length - 1), format)\n\t\t\tif (e) {\n\t\t\t\terrlst.push(\"FORMAT error: \" + e)\n\t\t\t} else {\n\t\t\t\thasformat = true\n\t\t\t}\n\t\t}\n\t}\n\n\tconst sampleobjlst = []\n\tfor (const samplename of sample) {\n\t\tconst a = { name: samplename }\n\n\t\t// this enables adding key4annotation to match with .ds.cohort.annotation\n\n\t\tsampleobjlst.push(a)\n\t}\n\n\t// reserved INFO fields\n\tif (info.CSQ) {\n\t\tconst lst = info.CSQ.Description.split(\" Format: \")\n\t\tif (lst[1]) {\n\t\t\tconst lst2 = lst[1].split(\"|\")\n\t\t\tif (lst2.length > 1) {\n\t\t\t\t// fix csq headers so to allow configuring show/hide of csq fields\n\t\t\t\tinfo.CSQ.csqheader = []\n\t\t\t\tfor (const str of lst2) {\n\t\t\t\t\tconst attr = { name: str }\n\t\t\t\t\tinfo.CSQ.csqheader.push(attr)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\terrlst.push(\"unknown format for CSQ header: \" + info.CSQ.Description)\n\t\t\t}\n\t\t} else {\n\t\t\terrlst.push(\"unknown format for CSQ header: \" + info.CSQ.Description)\n\t\t}\n\t}\n\n\tif (info.ANN) {\n\t\tconst lst = info.ANN.Description.split(\"'\")\n\t\tif (lst[1]) {\n\t\t\tconst lst2 = lst[1].split(\" | \")\n\t\t\tif (lst2.length) {\n\t\t\t\tinfo.ANN.annheader = []\n\t\t\t\tfor (const s of lst2) {\n\t\t\t\t\tconst attr = { name: s }\n\t\t\t\t\tinfo.ANN.annheader.push(attr)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\terrlst.push(\n\t\t\t\t\t'no \" | \" joined annotation fields for ANN (snpEff annotation): ' +\n\t\t\t\t\t\tinfo.ANN.Description\n\t\t\t\t)\n\t\t\t}\n\t\t} else {\n\t\t\terrlst.push(\n\t\t\t\t\"no single-quote enclosed annotation fields for ANN (snpEff annotation): \" +\n\t\t\t\t\tinfo.ANN.Description\n\t\t\t)\n\t\t}\n\t}\n\n\treturn [\n\t\thasinfo ? info : null,\n\t\thasformat ? format : null,\n\t\tsampleobjlst,\n\t\terrlst.length ? errlst : null,\n\t]\n}\n\nexport function vcfparseline(line, vcf) {\n\t/*\n\tvcf, samples/info is generated by vcfparsemeta()\n\t\t.nochr BOOL\n\t\t.samples [ {} ]\n\t\t\t.name\n\t\t.info {}\n\t\t.format {}\n\n\treturn:\n\t\terror message STR\n\t\taltinvalid []\n\t\tmlst [ m ] one m per alt allele\n\t\t\tchr\n\t\t\tpos\n\t\t\tname\n\t\t\ttype\n\t\t\tref\n\t\t\talt\n\t\t\taltstr\n\t\t\tsampledata []\n\t\t\taltinfo\n\t*/\n\n\tconst lst = line.split(\"\\t\")\n\tif (lst.length < 8) {\n\t\t// no good\n\t\treturn [\"line has less than 8 fields\", null, null]\n\t}\n\n\tconst rawpos = Number.parseInt(lst[2 - 1])\n\tif (!Number.isInteger(rawpos)) {\n\t\treturn [\"invalid value for genomic position\", null, null]\n\t}\n\n\tconst refallele = lst[4 - 1]\n\n\tconst m = {\n\t\tvcf_ID: lst[3 - 1],\n\t\tchr: (vcf.nochr ? \"chr\" : \"\") + lst[1 - 1],\n\t\tpos: rawpos - 1,\n\t\tref: refallele,\n\t\t//refstr:refallele, // e.g. GA>GCC, ref:A, refstr:GA, \"refstr\" is required for matching in FORMAT\n\t\taltstr: lst[5 - 1],\n\t\talleles: [\n\t\t\t{\n\t\t\t\t/*\n\t\t\t\tref allele only a placeholder, to be removed, this array only contains alt alleles\n\t\t\t\tthis is a must\n\t\t\t\talso allows GT allele index to work\n\t\t\t\t*/\n\t\t\t\tallele: refallele,\n\t\t\t\tsampledata: [],\n\t\t\t},\n\t\t],\n\n\t\tinfo: {}, // locus info, do not contain allele info\n\n\t\tname: lst[3 - 1] == \".\" ? null : lst[3 - 1],\n\t}\n\n\t// parse alt\n\tconst altinvalid = []\n\tfor (const alt of lst[5 - 1].split(\",\")) {\n\t\tconst a = {\n\t\t\tref: m.ref, // may be corrected just below!\n\t\t\tallele: alt,\n\t\t\t// 5078356.TATCAGAGAA.GGGAGGA keep original allele for matching with csq which hardcodes original allele\n\t\t\tallele_original: alt,\n\t\t\tsampledata: [],\n\t\t\t_m: m,\n\t\t\tinfo: {}, // allele info, do not contain locus info\n\t\t}\n\t\tm.alleles.push(a)\n\t\tif (alt[0] == \"<\") {\n\t\t\t/*\n\t\t\tsymbolic allele, show text within <> as name\n\t\t\tFIXME match INFO\n\t\t\t*/\n\t\t\tconst tmp = alt.match(getallelename)\n\t\t\tif (!tmp) {\n\t\t\t\taltinvalid.push(alt)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\ta.type = tmp[1]\n\n\t\t\ta.allele = tmp[1]\n\t\t\ta.issymbolicallele = true\n\t\t} else {\n\t\t\t// normal nucleotide\n\n\t\t\tconst [p, ref, alt] = correctRefAlt(m.pos, m.ref, a.allele)\n\t\t\ta.pos = p\n\t\t\ta.ref = ref\n\t\t\ta.allele = alt\n\t\t}\n\t}\n\n\tif (lst[9 - 1] && lst[10 - 1]) {\n\t\tparse_FORMAT2(lst, m, vcf)\n\t}\n\n\t/*\n\tremove ref allele so it only contain alternative alleles\n\tso that parse_INFO can safely apply Number=A fields to m.alleles\n\t*/\n\tm.alleles.shift()\n\n\t// info\n\tconst tmp = lst[8 - 1] == \".\" ? [] : dissect_INFO(lst[8 - 1])\n\tlet badinfokeys = []\n\n\tif (vcf.info) {\n\t\tbadinfokeys = parse_INFO(tmp, m, vcf)\n\t} else {\n\t\t// vcf meta lines told nothing about INFO, do not parse\n\t\tm.info = tmp\n\t}\n\n\tconst mlst = []\n\tfor (const a of m.alleles) {\n\t\tconst m2 = {}\n\t\tfor (const k in m) {\n\t\t\tif (k != \"alleles\") {\n\t\t\t\tm2[k] = m[k]\n\t\t\t}\n\t\t}\n\t\tfor (const k in a) {\n\t\t\tif (k == \"allele\") {\n\t\t\t\tm2.alt = a[k]\n\t\t\t} else if (k == \"info\") {\n\t\t\t\tm2.altinfo = a[k]\n\t\t\t} else {\n\t\t\t\tm2[k] = a[k]\n\t\t\t}\n\t\t}\n\t\tif (!m2.issymbolicallele && m2.alt != \"NON_REF\") {\n\t\t\tm2.type = getVariantType(m2.ref, m2.alt)\n\t\t\t/*\n\t\t\t// valid alt allele, apply Dr. J's cool method\n\t\t\tconst [p,ref,alt]=correctRefAlt(m2.pos, m2.ref, m2.alt)\n\t\t\tm2.pos=p\n\t\t\tm2.ref=ref\n\t\t\tm2.alt=alt\n\t\t\t*/\n\t\t}\n\t\tmlst.push(m2)\n\t}\n\treturn [\n\t\tbadinfokeys.length ? \"unknown info keys: \" + badinfokeys.join(\",\") : null,\n\t\tmlst,\n\t\taltinvalid.length > 0 ? altinvalid : null,\n\t]\n}\n\nfunction correctRefAlt(p, ref, alt) {\n\t// for oligos, always trim the last identical base\n\twhile (\n\t\tref.length > 1 &&\n\t\talt.length > 1 &&\n\t\tref[ref.length - 1] == alt[alt.length - 1]\n\t) {\n\t\tref = ref.substr(0, ref.length - 1)\n\t\talt = alt.substr(0, alt.length - 1)\n\t}\n\t// move position up as long as first positions are equal\n\twhile (ref.length > 1 && alt.length > 1 && ref[0] == alt[0]) {\n\t\tref = ref.substr(1)\n\t\talt = alt.substr(1)\n\t\tp++\n\t}\n\treturn [p, ref, alt]\n}\n\nfunction parse_FORMAT2(lst, m, vcf) {\n\t/*\n\tm.alleles[0] is ref allele\n\n\teach allele:\n\t\t.ref\n\t\t.allele\n\t\t.allele_original\n\t\t.sampledata[] blank array\n\t*/\n\tconst formatfields = lst[9 - 1].split(\":\")\n\n\tfor (let _sampleidx = 9; _sampleidx < lst.length; _sampleidx++) {\n\t\t// for each sample\n\n\t\tconst valuelst = lst[_sampleidx].split(\":\")\n\t\t{\n\t\t\t// tell if this sample have any data in this line (variant), if .:., then skip\n\t\t\tlet none = true\n\t\t\tfor (const v of valuelst) {\n\t\t\t\tif (v != \".\") {\n\t\t\t\t\tnone = false\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (none) {\n\t\t\t\t// this sample has no format value\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\n\t\t/* should create an object of {format:value} of this sample\n\t\twith this object, for each alt allele this sample has,\n\t\tput a copy in m.allele[x].sampledata[]\n\t\t*/\n\n\t\tconst sampleidx = _sampleidx - 9\n\n\t\t/*\n\t\tfor each alt allele, initialize obj of this sample and store in this allele\n\t\tlater, to iterate over format fields and put in appropriate values\n\t\tnote that this sample may not actually have this allele\n\t\t*/\n\t\tfor (let i = 1; i < m.alleles.length; i++) {\n\t\t\tconst sobj = {}\n\t\t\tif (vcf.samples && vcf.samples[sampleidx]) {\n\t\t\t\tfor (const k in vcf.samples[sampleidx]) {\n\t\t\t\t\tsobj[k] = vcf.samples[sampleidx][k]\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tsobj.name = \"missing_samplename_from_vcf_header\"\n\t\t\t}\n\t\t\tm.alleles[i].sampledata.push({\n\t\t\t\tsampleobj: sobj,\n\t\t\t})\n\t\t}\n\n\t\tfor (let fi = 0; fi < formatfields.length; fi++) {\n\t\t\t// for each field of this sample\n\n\t\t\tconst field = formatfields[fi]\n\t\t\tconst value = valuelst[fi]\n\t\t\tif (value == \".\") {\n\t\t\t\t// no value for this field\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tif (field == \"GT\") {\n\t\t\t\tconst splitter = value.indexOf(\"/\") != -1 ? \"/\" : \"|\"\n\t\t\t\tlet gtsum = 0 // for calculating gtallref=true, old\n\t\t\t\tlet unknowngt = false // if any is '.', then won't calculate gtallref\n\t\t\t\tconst gtalleles = []\n\t\t\t\tfor (const i of value.split(splitter)) {\n\t\t\t\t\tif (i == \".\") {\n\t\t\t\t\t\tunknowngt = true\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\t\t\t\t\tconst j = Number.parseInt(i)\n\t\t\t\t\tif (Number.isNaN(j)) {\n\t\t\t\t\t\tunknowngt = true\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\t\t\t\t\tgtsum += j\n\t\t\t\t\tconst ale = m.alleles[j]\n\t\t\t\t\tif (ale) {\n\t\t\t\t\t\tgtalleles.push(ale.allele)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tlet gtallref = false\n\t\t\t\tif (!unknowngt) {\n\t\t\t\t\tgtallref = gtsum == 0\n\t\t\t\t}\n\n\t\t\t\tconst genotype = gtalleles.join(splitter)\n\t\t\t\tfor (let i = 1; i < m.alleles.length; i++) {\n\t\t\t\t\tconst ms = m.alleles[i].sampledata[m.alleles[i].sampledata.length - 1]\n\t\t\t\t\tms.GT = value\n\t\t\t\t\tms.genotype = genotype\n\t\t\t\t\tif (gtallref) {\n\t\t\t\t\t\tms.gtallref = true\n\t\t\t\t\t}\n\n\t\t\t\t\t// for mds vcf to drop out samples that do not have this alt allele\n\t\t\t\t\tms.__gtalleles = gtalleles\n\t\t\t\t}\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\t// other data fields\n\t\t\tconst formatdesc = vcf.format ? vcf.format[field] : null\n\t\t\tif (!formatdesc) {\n\t\t\t\t// unspecified field, put to all alt alleles\n\t\t\t\tfor (let i = 1; i < m.alleles.length; i++) {\n\t\t\t\t\tm.alleles[i].sampledata[m.alleles[i].sampledata.length - 1][field] =\n\t\t\t\t\t\tvalue\n\t\t\t\t}\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tconst isinteger = formatdesc.Type == \"Integer\"\n\t\t\tconst isfloat = formatdesc.Type == \"Float\"\n\n\t\t\tif ((formatdesc.Number && formatdesc.Number == \"R\") || field == \"AD\") {\n\t\t\t\t/*\n\t\t\t\tper-allele value, including ref\n\t\t\t\tv4.1 has AD not with \"R\", must process as R\n\t\t\t\t*/\n\t\t\t\tconst fvlst = value.split(\",\").map((i) => {\n\t\t\t\t\tif (isinteger) return Number.parseInt(i)\n\t\t\t\t\tif (isfloat) return Number.parseFloat(i)\n\t\t\t\t\treturn i\n\t\t\t\t})\n\t\t\t\tfor (let i = 1; i < m.alleles.length; i++) {\n\t\t\t\t\tif (fvlst[i] != undefined) {\n\t\t\t\t\t\t// this allele has value\n\t\t\t\t\t\tconst m2 = m.alleles[i]\n\t\t\t\t\t\tconst m2s = m2.sampledata[m2.sampledata.length - 1]\n\t\t\t\t\t\t// use this allele's ref/alt (after nt trimming)\n\t\t\t\t\t\tm2s[field] = {}\n\t\t\t\t\t\tm2s[field][m2.ref] = fvlst[0]\n\t\t\t\t\t\tm2s[field][m2.allele] = fvlst[i]\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif (formatdesc.Number && formatdesc.Number == \"A\") {\n\t\t\t\t// per alt-allele value\n\t\t\t\tconst fvlst = value.split(\",\").map((i) => {\n\t\t\t\t\tif (isinteger) return Number.parseInt(i)\n\t\t\t\t\tif (isfloat) return Number.parseFloat(i)\n\t\t\t\t\treturn i\n\t\t\t\t})\n\t\t\t\tfor (let i = 1; i < m.alleles.length; i++) {\n\t\t\t\t\tif (fvlst[i - 1] != undefined) {\n\t\t\t\t\t\t// this allele has value\n\t\t\t\t\t\tconst m2 = m.alleles[i]\n\t\t\t\t\t\tconst m2s = m2.sampledata[m2.sampledata.length - 1]\n\t\t\t\t\t\t// use this allele's ref/alt (after nt trimming)\n\t\t\t\t\t\tm2s[field] = {}\n\t\t\t\t\t\tm2s[field][m2.allele] = fvlst[i - 1]\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\t// otherwise, append this field to all alt\n\t\t\tfor (let i = 1; i < m.alleles.length; i++) {\n\t\t\t\tm.alleles[i].sampledata[m.alleles[i].sampledata.length - 1][field] =\n\t\t\t\t\tvalue\n\t\t\t}\n\t\t}\n\t}\n\n\t// compatible with old ds: make allele2readcount from AD\n\tfor (const a of m.alleles) {\n\t\tfor (const s of a.sampledata) {\n\t\t\tif (s.AD) {\n\t\t\t\ts.allele2readcount = {}\n\t\t\t\tfor (const k in s.AD) {\n\t\t\t\t\ts.allele2readcount[k] = s.AD[k]\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction tohash(s, hash) {\n\t/*\n\tparse INFO\n\t*/\n\tconst h = {},\n\t\terr = []\n\tlet prev = 0,\n\t\tprevdoublequote = false,\n\t\tk = null\n\tfor (let i = 0; i < s.length; i++) {\n\t\tif (s[i] == '\"') {\n\t\t\ti++\n\t\t\tconst thisstart = i\n\t\t\twhile (s[i] != '\"') {\n\t\t\t\ti++\n\t\t\t}\n\t\t\tif (k) {\n\t\t\t\th[k] = s.substring(thisstart, i)\n\t\t\t\tk = null\n\t\t\t} else {\n\t\t\t\terr.push(\"k undefined before double quotes\")\n\t\t\t}\n\t\t\tprevdoublequote = true\n\t\t\tcontinue\n\t\t}\n\t\tif (s[i] == \"=\") {\n\t\t\tk = s.substring(prev, i)\n\t\t\tprev = i + 1\n\t\t\tcontinue\n\t\t}\n\t\tif (s[i] == \",\") {\n\t\t\tif (prevdoublequote) {\n\t\t\t\tprevdoublequote = false\n\t\t\t} else {\n\t\t\t\tif (k) {\n\t\t\t\t\th[k] = s.substring(prev, i)\n\t\t\t\t\tk = null\n\t\t\t\t} else {\n\t\t\t\t\terr.push(\"k undefined\")\n\t\t\t\t}\n\t\t\t}\n\t\t\tprev = i + 1\n\t\t\tcontinue\n\t\t}\n\t}\n\tif (k) {\n\t\th[k] = s.substring(prev, i)\n\t}\n\tif (h.ID) {\n\t\thash[h.ID] = h\n\t} else {\n\t\treturn \"no ID\"\n\t}\n\tif (err.length) return err.join(\"\\n\")\n}\n\nfunction parse_INFO(tmp, m, vcf) {\n\t/*\n\tthis function fills in both m.info{} and m.alleles[].info{}\n\n\tthe m.alleles[] will later be converted to [m], each carrying one alt allele\n\teach m will have .info{} for locus info, and .altinfo{} for alt allele info\n\n\t*/\n\n\tconst badinfokeys = []\n\n\tfor (const key in tmp) {\n\t\tif (vcf.info[key] == undefined) {\n\t\t\tbadinfokeys.push(key)\n\t\t\tcontinue\n\t\t}\n\n\t\tconst value = tmp[key]\n\n\t\t////////////////// hard-coded fields\n\n\t\tif (key == \"CSQ\") {\n\t\t\tconst okay = parse_CSQ(value, vcf.info.CSQ.csqheader, m)\n\t\t\tif (!okay) {\n\t\t\t\tm.info[key] = value\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\t\tif (key == \"ANN\") {\n\t\t\tconst okay = parse_ANN(value, vcf.info.ANN.annheader, m)\n\t\t\tif (!okay) {\n\t\t\t\tm.info[key] = value\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\n\t\t////////////////// end of hardcoded fields\n\n\t\tif (vcf.info[key].Type == \"Flag\") {\n\t\t\t// flag has no value\n\t\t\tm.info[key] = key\n\t\t\tcontinue\n\t\t}\n\n\t\tconst __number = vcf.info[key].Number\n\t\tconst isinteger = vcf.info[key].Type == \"Integer\"\n\t\tconst isfloat = vcf.info[key].Type == \"Float\"\n\n\t\tif (__number == \"0\") {\n\t\t\t/*\n\t\t\tno value, should be a Flag\n\t\t\t*/\n\t\t\tm.info[key] = key\n\t\t\tcontinue\n\t\t}\n\n\t\tif (__number == \"A\") {\n\t\t\t/*\n\t\t\tper alt allele\n\t\t\t*/\n\t\t\tconst tt = value.split(\",\")\n\t\t\tfor (let j = 0; j < tt.length; j++) {\n\t\t\t\tif (m.alleles[j]) {\n\t\t\t\t\tm.alleles[j].info[key] = isinteger\n\t\t\t\t\t\t? Number.parseInt(tt[j])\n\t\t\t\t\t\t: isfloat\n\t\t\t\t\t\t? Number.parseFloat(tt[j])\n\t\t\t\t\t\t: tt[j]\n\t\t\t\t}\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\n\t\tif (__number == \"R\") {\n\t\t\t/*\n\t\t\tFIXME \"R\" is not considered, m.alleles only contain alt, which .info{} for each\n\t\t\tthe current datastructure does not support info for ref allele!\n\t\t\t*/\n\t\t}\n\n\t\tif (__number == \"1\") {\n\t\t\t/*\n\t\t\tsingle value\n\t\t\t*/\n\t\t\tm.info[key] = isinteger\n\t\t\t\t? Number.parseInt(value)\n\t\t\t\t: isfloat\n\t\t\t\t? Number.parseFloat(value)\n\t\t\t\t: value\n\t\t\tcontinue\n\t\t}\n\n\t\tif (!value.split) {\n\t\t\t// unknown error\n\t\t\tcontinue\n\t\t}\n\n\t\t// number of values unknown, \"commas are permitted only as delimiters for lists of values\"\n\n\t\tconst lst = value.split(\",\") // value is always array!!\n\t\tif (isinteger) {\n\t\t\tm.info[key] = lst.map(Number.parseInt)\n\t\t} else if (isfloat) {\n\t\t\tm.info[key] = lst.map(Number.parseFloat)\n\t\t} else {\n\t\t\tm.info[key] = lst\n\t\t}\n\t}\n\treturn badinfokeys\n}\n", "import { select } from 'd3-selection'\n//import { dofetch3 } from './dofetch'\n\nlet jwtByDsRoute\n\nfunction setJwtByDsRoute() {\n\tif (jwtByDsRoute) return\n\tconst jwtByDsRouteStr = localStorage.getItem('jwtByDsRoute') || `{}`\n\tjwtByDsRoute = JSON.parse(jwtByDsRouteStr)\n}\n\n/*\n\tsetTokenByDsRoute() sets this storage item:\n\n\tjwtByDsRoute = {\n\t\t[dslabel]: { // the dataset that is being protected, should match one of the serverconfig.dsCredentials key\n\t\t\t[route]: // the route that is being protected, should match one of the serverconfig.dsCredentials[dslabel] key\n\t\t\t\t\"...jwt...string...\" // ProteinPaint-issued jwt from a `/jwt-status` or `/dslogin` response, \n\t\t\t\t // which also includes dslabel and route to use as nested keys for this jwtByDsRoute\n\t\t}\n\t}\n\t\n\tNote that jwtByDsRoute does not have a nesting level of embedder, unlike serverconfig.dsCredentials, since\n\tthe embedder is detected directly from the winddow.location.hostname.\n\n\tThe stored token will be submitted as part of Vocab.mayGetAuthHeaders() or getSavedToken().\n*/\nexport function setTokenByDsRoute(dslabel, route, jwt) {\n\tsetJwtByDsRoute()\n\tif (!jwtByDsRoute[dslabel]) jwtByDsRoute[dslabel] = {}\n\tif (jwt) jwtByDsRoute[dslabel][route] = jwt\n\telse delete jwtByDsRoute[dslabel][route]\n\tlocalStorage.setItem('jwtByDsRoute', JSON.stringify(jwtByDsRoute))\n}\n\n// get jwt string directly from localStorage/jwtByDsRoute tracking object\nexport function getSavedToken(dslabel, route) {\n\tsetJwtByDsRoute()\n\treturn jwtByDsRoute[dslabel]?.[route] || jwtByDsRoute[dslabel]?.['/**']\n}\n\nexport function mayAddJwtToRequest(init, body, url) {\n\tif (init.headers.authorization) return\n\tlet dslabel = body?.dslabel // || body.mass?.vocab.dslabel || body.tracks?.find(t => t.dslabel)?.dslabel\n\tif (!dslabel) {\n\t\tconst param = url\n\t\t\t.split('?')[1]\n\t\t\t?.split('&')\n\t\t\t.find(kv => kv.includes('dslabel'))\n\t\tif (!param) return\n\t\tlet value = decodeURIComponent(param.split('=')[1])\n\t\tif (value.startsWith('{') && value.endsWith('}')) {\n\t\t\tvalue = JSON.parse(value)\n\t\t\tdslabel = value.dslabel || value.mass?.vocab.dslabel || value.tracks?.find(t => t.dslabel)?.dslabel\n\t\t} else {\n\t\t\tdslabel = value\n\t\t}\n\t}\n\tsetJwtByDsRoute()\n\tif (!dslabel || !jwtByDsRoute[dslabel]) return\n\tconst h = url.split('//')\n\tconst postProtocolStr = h[1] || h[0] // handle a url such as '://something.abc'\n\tconst preQuestionMarkStr = postProtocolStr.split('?')[0]\n\tconst pathSegments = preQuestionMarkStr.split('/')\n\tlet route = pathSegments.find(p => p != '' && !p.includes(':') && !p.includes('.'))\n\t// TODO: should not have to do this hardcoded mapping, ideally routes that are\n\t// protected together will share the same initial path segment\n\n\tconst jwt = jwtByDsRoute[dslabel][route] || jwtByDsRoute[dslabel]['/**']\n\tif (jwt) init.headers.authorization = 'Bearer ' + btoa(jwt)\n}\n\nconst dsAuthOk = new Set()\nlet dsAuth, authUi, authUiHolder\n\nexport let includeEmbedder = false\n\n/*\n\topts{}\n\t.dsAuth: required, array of dataset names that require login\n\t.authUi: optional, a custom login UI function to launch as needed\n\t.holder: optional, a d3-wrapped selection to hold the auth UI\n*/\nexport async function setDsAuthOk(opts) {\n\tdsAuth = opts.dsAuth\n\tauthUi = opts.ui || defaultAuthUi\n\tauthUiHolder = opts.holder || select('body')\n\tfor (const auth of dsAuth) {\n\t\t// fillin all the dslabels that has an active session\n\t\t// so that an unnecessary login form will not be shown\n\t\tif (auth.insession) dsAuthOk.add(auth)\n\t\t// defer the check for saved jwtByDsRoute to isInSession(),\n\t\t// so that there are no confusing multiple /jwt-status requests\n\t\t// in the Network requests tab in simulated demoToken usage\n\t\t// which is only one dslabel at a time\n\t}\n\tincludeEmbedder = opts.dsAuth?.length > 0 || false\n}\n\nexport function getRequiredAuth(dslabel, route) {\n\tif (!dsAuth || !Array.isArray(dsAuth)) return\n\tfor (const a of dsAuth) {\n\t\t// wildcard route '*' is transformed by server auth.js into '/**' to support glob-pattern matching,\n\t\t// since a single character '*' is interpreted by glob as a file, so need to also detect '/**' route\n\t\tif (a.dslabel == dslabel && (a.route == route || a.route == '*' || a.route == '/**')) return a\n\t}\n}\n\n// check if a user is logged in, usually checked together with requiredAuth in termdb/config,\n// so access to unprotected ds/routes should not be affected by this check\nexport async function isInSession(dslabel, route) {\n\tif (!dslabel) return false\n\tif (!Array.isArray(dsAuth)) return false\n\tfor (const a of dsAuth) {\n\t\tif (a.dslabel != dslabel || (a.route != route && a.route != '/**')) continue\n\t\tif (dsAuthOk.has(a)) return true\n\t\t// TODO: for auth.type == 'jwt', consider migrating to always using getDatasetAccessToken()\n\t\t// instead of saving a session jwt in localStorage\n\t\tif (a.checked /*|| a.type == 'jwt'*/) return false\n\t\t// for other auth types like basic (password login), recover related saved jwt that\n\t\t// allows one-time sign-in throughout a user's browser session;\n\t\t// check if there is a PP-server generated session token that has been saved from a previous login\n\t\tconst jwt = getSavedToken(dslabel, a.route)\n\t\tif (!jwt) return false\n\t\tconst { dofetch3 } = await import('./dofetch')\n\t\tconst payload = decodeJwtPayload(jwt)\n\t\tif (payload.exp && Math.ceil(Date.now() / 1000) > payload.exp) return false\n\t\tconst data = await dofetch3('/jwt-status', {\n\t\t\tmethod: 'POST',\n\t\t\theaders: {\n\t\t\t\t//authorization: `Bearer ${btoa(jwt)}`\n\t\t\t\t[a.headerKey]: jwt\n\t\t\t},\n\t\t\tbody: {\n\t\t\t\tdslabel,\n\t\t\t\troute,\n\t\t\t\tembedder: location.hostname\n\t\t\t}\n\t\t})\n\t\ta.checked = true\n\t\tif (data.ok || data.status == 'ok') {\n\t\t\tdsAuthOk.add(a)\n\t\t\ta.insession = true\n\t\t\treturn true\n\t\t}\n\t}\n\t// no matching sessions found for this dslabel and route\n\treturn false\n}\n\n/* \n\tmayShowAuthUi() is the client-side \"gatekeeper\"\n\tmethod to check if a dataset requires credentials\n*/\n\nexport async function mayShowAuthUi(init, path, opts = {}) {\n\tconst ok = { status: 'ok' }\n\tif (!dsAuth || path.endsWith('jwt-status')) return ok\n\n\tconst body = JSON.parse(init.body || `{}`)\n\tconst params = (path.split('?')[1] || '').split('&').reduce((obj, kv) => {\n\t\tconst [key, value] = kv.split('=')\n\t\tobj[key] = value\n\t\treturn obj\n\t}, {})\n\tconst q = Object.assign({}, body, params)\n\tconst route = ((path.split('?')[0] || '').split('//')[1] || '').split('/').slice(1).join('/')\n\n\tfor (const a of dsAuth) {\n\t\tif (q.dslabel == a.dslabel && (a.route == '/**' || route == a.route)) {\n\t\t\tif (dsAuthOk.has(a)) return ok\n\t\t\t// dofetch should show the authUi only when all routes ('/**') are protected\n\t\t\t// otherwise, the authUi should be opened only when requesting data from a protected route,\n\t\t\t// that will be determined within feature code such as for 'termdb', 'burden', etc\n\t\t\telse if (a.route != '/**') return ok\n\t\t\telse if (a.type == 'basic') return await authUi(a.dslabel, a, opts)\n\t\t\telse if (a.type == 'jwt') {\n\t\t\t\t// assume the embedder/portal provides the login UI\n\t\t\t\t// so no need to do anything here\n\t\t\t} else if (a.type == 'forbidden') {\n\t\t\t\talert('Forbidden access')\n\t\t\t\t// don't do anything\n\t\t\t} else throw `unsupported dsAuth type='${a.type}'`\n\t\t}\n\t}\n\treturn ok\n}\n\n/*\n\tthis is the default login UI, may be overriden\n\tby an optional different form, for example if PP \n\tis embedded in another portal\n*/\nasync function defaultAuthUi(dslabel, auth, opts = {}) {\n\tconst mask = authUiHolder\n\t\t.append('div')\n\t\t.style('position', 'fixed')\n\t\t.style('top', 0)\n\t\t.style('left', 0)\n\t\t.style('height', '100%')\n\t\t.style('width', '100%')\n\t\t.style('margin', 0)\n\t\t.style('padding', '20px')\n\t\t.style('background-color', 'rgb(150,150,150)')\n\n\tconst form = mask.append('div').style('opacity', 1)\n\tform.append('div').html(`Restricted dataset '${dslabel}'`)\n\tform.append('span').html('Please enter password ')\n\n\tconst pwd = form.append('input').attr('type', 'password')\n\tpwd.node().focus()\n\n\tconst btn = form.append('button').html('Submit')\n\n\treturn new Promise((resolve, reject) => {\n\t\tfunction login() {\n\t\t\tfetch('/dslogin', {\n\t\t\t\tmethod: 'POST',\n\t\t\t\theaders: {\n\t\t\t\t\tauthorization: `Basic ${btoa(pwd.property('value'))}`\n\t\t\t\t},\n\t\t\t\tbody: JSON.stringify({ dslabel, route: auth.route, embedder: window.location.hostname })\n\t\t\t})\n\t\t\t\t.then(res => res.json())\n\t\t\t\t.then(res => {\n\t\t\t\t\tif (res.error) throw res.error\n\n\t\t\t\t\tmask.remove()\n\t\t\t\t\tdsAuthOk.add(auth)\n\t\t\t\t\tif (res.jwt) {\n\t\t\t\t\t\tsetTokenByDsRoute(dslabel, res.route, res.jwt)\n\t\t\t\t\t}\n\t\t\t\t\tif (!opts.setDomRefs) window.location.reload()\n\t\t\t\t\telse resolve(dslabel)\n\t\t\t\t})\n\t\t\t\t.catch(e => {\n\t\t\t\t\talert('login error: ' + e)\n\t\t\t\t\t// allow to reuse the login UI, do not hide or reject\n\t\t\t\t\t// mask.remove()\n\t\t\t\t\t// reject(e)\n\t\t\t\t})\n\t\t}\n\t\tbtn.on('click', login)\n\t\tpwd.on('change', login)\n\n\t\tif (opts.setDomRefs)\n\t\t\topts.setDomRefs({\n\t\t\t\tpwd,\n\t\t\t\tbtn,\n\t\t\t\tmask,\n\t\t\t\tauthUiHolder\n\t\t\t})\n\t})\n}\n\nfunction decodeJwtPayload(token) {\n\t// 1. Split the token into its 3 parts (header, payload, signature)\n\tconst base64Url = token.split('.')[1]\n\t// 2. Convert Base64Url to standard Base64\n\tconst base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/')\n\tconst paddedBase64 = base64 + '='.repeat((4 - (base64.length % 4)) % 4)\n\t// 3. Decode the Base64 string and parse it as JSON\n\tconst jsonPayload = decodeURIComponent(window.atob(paddedBase64).split('').map(convertAtoBresult).join(''))\n\treturn JSON.parse(jsonPayload)\n}\n\nfunction convertAtoBresult(c) {\n\treturn '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2)\n}\n", "import { deepFreeze, sleep } from '#rx'\nimport { encode, getDataName, processResponse } from '#shared/index.js'\nimport { mayShowAuthUi, mayAddJwtToRequest, includeEmbedder, setDsAuthOk } from './auth.js'\nexport * from './auth.js'\nexport { processFormData } from '#shared/index.js'\n\n/*\n\tpath: URL\n\targ: HTTP request body\n\topts: see dofetch2() opts argument\n*/\nexport function dofetch(path, arg, opts = null) {\n\tif (opts && typeof opts == 'object') {\n\t\tif (opts.serverData && typeof opts.serverData == 'object') {\n\t\t\tif (!dofetch.serverData) {\n\t\t\t\tdofetch.serverData = opts.serverData\n\t\t\t} else if (!opts.serverData) {\n\t\t\t\topts.serverData = dofetch.serverData\n\t\t\t}\n\t\t}\n\t\treturn dofetch2(\n\t\t\tpath,\n\t\t\t{\n\t\t\t\tmethod: 'POST',\n\t\t\t\theaders: {\n\t\t\t\t\t'content-type': 'application/json'\n\t\t\t\t},\n\t\t\t\tbody: JSON.stringify(arg)\n\t\t\t},\n\t\t\topts\n\t\t)\n\t} else {\n\t\t// path should be \"path\" but not \"/path\"\n\t\tif (path[0] == '/') {\n\t\t\tpath = path.slice(1)\n\t\t}\n\n\t\tconst jwt = sessionStorage.getItem('jwt')\n\t\tif (jwt) {\n\t\t\targ.jwt = jwt\n\t\t}\n\n\t\tlet url = path\n\t\tconst host = sessionStorage.getItem('hostURL') || window.testHost || ''\n\t\tif (host) {\n\t\t\t// hostURL can end with / or not, must use 'host/path'\n\t\t\tif (host.endsWith('/')) {\n\t\t\t\turl = host + path\n\t\t\t} else {\n\t\t\t\turl = host + '/' + path\n\t\t\t}\n\t\t}\n\n\t\treturn fetch(\n\t\t\tnew Request(url, {\n\t\t\t\tmethod: 'POST',\n\t\t\t\theaders: {\n\t\t\t\t\t'content-type': 'application/json'\n\t\t\t\t},\n\t\t\t\tbody: JSON.stringify(arg)\n\t\t\t})\n\t\t).then(r => r.json())\n\t}\n}\n\nexport function dofetch2(path, init = {}, opts = {}) {\n\t/*\n\tpath\"\" string URL path\n\n\tinit{}\n\t\twill be supplied as the second argument to\n\t\tthe native fetch api, so the method, headers, body\n\t\tmay be optionally supplied in the \"init\" argument\n\t\tsee https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch\n\n\topts{}: all other optional arguments that are not related to the native fetch init argument\n\t\t.serverData{} an object for caching fetch Promise \n\t*/\n\t// path should be \"path\" but not \"/path\"\n\tif (path[0] == '/') {\n\t\tpath = path.slice(1)\n\t}\n\n\tlet url = path\n\tconst host = sessionStorage.getItem('hostURL') || window.testHost || ''\n\tif (host) {\n\t\t// hostURL can end with / or not, must use 'host/path'\n\t\tif (host.endsWith('/')) {\n\t\t\turl = host + path\n\t\t} else {\n\t\t\turl = host + '/' + path\n\t\t}\n\t}\n\n\t// create a reference to be able to detect body params, easier than\n\t// getting params once converted to a URL\n\tconst body = init.body || {}\n\t// this may convert a GET into a POST method, and\n\t// encode the payload either in the URL or request body\n\turl = mayAdjustRequest(url, init)\n\n\tif (!init.headers) {\n\t\tinit.headers = {}\n\t}\n\n\tif (!init.headers['content-type'] && init.body) {\n\t\tinit.headers['content-type'] = 'application/json'\n\t}\n\n\t// this jwt is site-wide for a particular PP host, not dslabel-specific\n\tconst jwt = sessionStorage.getItem('jwt')\n\tif (jwt) {\n\t\tinit.headers.authorization = 'Bearer ' + jwt\n\t}\n\n\t/*\n\t\tthis is client-side \"gatekeeper\", will not proceed\n\t\tto the usual request handling unless no credentials\n\t\tare required or a valid session has already been established\n\t*/\n\treturn mayShowAuthUi(init, url).then(async () => {\n\t\tif (!jwt) mayAddJwtToRequest(init, body, url)\n\t\tif (opts.serverData) {\n\t\t\treturn namedFetch(url, init, opts)\n\t\t} else {\n\t\t\treturn fetch(url, init).then(processResponse)\n\t\t}\n\t})\n}\n\n// key: opts.serverData object\n// value: array of cached dataNames\nconst optsServerDataNames = new WeakMap() // do not prevent garbage collection of unneeded opts.serverData in consumer code\n/*\n\tnamedFetch()\n\t- opts.serverData is expected to cache response by computed data name\n\t- preserves the caching expectations from \n\t\n\topts{}\n\tserverData: optional plain object to store response by dataName (string) keys\n\t\t- if a computed dataName is found as a key in this object, the cached response will be reused to fulfill the fetch\n\t\t- note that the plain object as storage is to support legacy dofetch code\n*/\nexport async function namedFetch(url, init, opts = {}) {\n\tif (!opts.serverData) throw `use ezFetch() from fetch-helpers if a fetched response is not meant to be cached`\n\tif (typeof opts.serverData != 'object') throw `opts.serverData is not an object`\n\n\tlet result\n\tconst dataName = await getDataName(url, init)\n\tif (opts.serverData[dataName]) {\n\t\tif (init.signal) {\n\t\t\t// should not reuse a response if the abortController.signal option has been aborted,\n\t\t\t// sleep() below allows sufficient time for the abort() to be called in rx AppApi.dispatch() or elsewhere,\n\t\t\t// otherwise the cached response copy will be returned too soon and cause race-condition issues;\n\t\t\t// this fix is tested in hierCluster.integration.spec.js 'avoid race condition - reused fetch response cache'\n\t\t\tawait sleep(0)\n\t\t\tif (init.signal.aborted) throw `stale sequenceId`\n\t\t}\n\t\tresult = structuredClone(opts.serverData[dataName])\n\t}\n\n\tif (!result || (typeof result != 'object' && !(result instanceof Promise))) {\n\t\tdelete opts.serverData[dataName]\n\t\tresult = undefined\n\t}\n\n\tif (!result) {\n\t\ttry {\n\t\t\tconst res = await fetch(url, init)\n\t\t\tresult = await processResponse(res)\n\t\t\t// in case this fetch was cancelled with AbortController.signal,\n\t\t\t// then the result may be another Promise instead of a data object,\n\t\t\t// as observed when rapidly changing the gdc cohort filter\n\t\t\tif (typeof result == 'object' && !(result instanceof Promise)) {\n\t\t\t\t// Ignore opts.cacheAs == 'Response':\n\t\t\t\t// - per https://developer.mozilla.org/en-US/docs/Web/API/Response/clone,\n\t\t\t\t// **should not use (.clone) to read very large bodies in parallel** at different speeds,\n\t\t\t\t// may also mean(?) to not persist/store the Response for a long time as is being done here\n\t\t\t\t//\n\t\t\t\t// - Make decoded caching as default, since storing as a\n\t\t\t\t// fetch Response interface can be problematic when a opts.signal is aborted\n\t\t\t\t// after being reused as an option to different fetch requests. Calling signal.abort()\n\t\t\t\t// will cause res.clone() to fail in all requests that reuse the signal.\n\t\t\t\t//\n\t\t\t\tdeepFreeze(result)\n\t\t\t\topts.serverData[dataName] = result // store as a deeply frozen object\n\t\t\t\t// should prefer to store results as a deeply frozen object instead of a Response interface,\n\t\t\t\t// but must not return the same object to be reused by different requests\n\t\t\t\tresult = structuredClone(result)\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tdelete opts.serverData[dataName]\n\t\t\tthrow e\n\t\t}\n\t}\n\n\t// manage opts.serverData cache size\n\tif (!optsServerDataNames.has(opts.serverData)) optsServerDataNames.set(opts.serverData, [])\n\tconst keys = optsServerDataNames.get(opts.serverData)\n\tconst i = keys.indexOf(dataName)\n\tif (i > 0) {\n\t\t// move this cached response as the most recent entry, by object key\n\t\tkeys.splice(i, 1)\n\t}\n\tkeys.unshift(dataName)\n\tconst maxKeys = 360\n\twhile (keys.length > maxKeys) {\n\t\tconst oldestDataKey = keys.pop() // delete the dataName from the tracking array\n\t\tdelete opts.serverData[oldestDataKey]\n\t}\n\treturn result\n}\n\nconst defaultServerDataCache = {}\n/*\n\tThis is a convenience function that sets a default serverData object\n\tand init.signal (AbortSignal) option to dofetch2(), instead of\n\trequiring consumer code to call dofetch2() directly with those options.\n\n\tpath: request url\n\tinit: native fetch init option\n\topts: dofetch2() 3rd argument, options that are not related to native fetch\t\n*/\nexport function dofetch3(path, init = {}, opts = {}) {\n\t// may set a default init.signal if missing;\n\t// The AbortSignal can cancel any request due to an app state change, such as\n\t// when the GDC cohort changes, thus aborting stale data requests that may\n\t// result in misleading rendered plots. This approach is more reliable than\n\t// requiring consumer code that use vocabApi methods to supply an\n\t// init.signal option, or for a vocabApi method to supply a default\n\t// init.signal.\n\t//\n\t// 'this' is a Vocab or TermdbVocab instance, where the Vocab constructor\n\t// sets a this.dofetch3 method that has access to this.app.getAbortSignal.\n\t// In Javascript, a function that's attached to an object and called as\n\t// object.method() will have its `this` context set to the object that it's\n\t// attached to.\n\tif (!init.signal && typeof this?.app?.getAbortSignal == 'function') init.signal = this.app.getAbortSignal()\n\n\topts.serverData = defaultServerDataCache\n\treturn dofetch2(path, init, opts)\n}\n\nexport function clearServerDataCache(opts = {}) {\n\tconst cache = opts?.serverData || defaultServerDataCache\n\tif (!cache) return\n\tfor (const k of Object.keys(cache)) {\n\t\tdelete cache[k]\n\t}\n}\n\nconst urlMaxLength = 2000 // if a GET url is longer than this, will be converted to POST of the same route\n\n/*\t\n\turl: full request url with host/path\n\n\tinit {}\n\t\tsame as the init argument for dofetch2\n\t\twill be supplied as the second argument to\n\t\tthe native fetch api, so the method, headers, body\n\t\tmay be optionally supplied in the \"init\" argument\n\t\tsee https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch\n*/\nfunction mayAdjustRequest(url, init) {\n\tconst hostname = window.location.hostname\n\tconst method = (init.method && init.method.toUpperCase()) || 'GET'\n\tif (method == 'POST') {\n\t\t// assume a minimal URL path + parameters for a POST request\n\t\t// since the payload will be in the request body\n\t\tif (typeof init.body == 'string') init.body = JSON.parse(init.body)\n\t\tif (!init.body.embedder && includeEmbedder) init.body.embedder = hostname\n\t\tinit.body = JSON.stringify(init.body)\n\t\treturn url\n\t}\n\n\tif (method != 'GET' && method != 'DELETE' && method != 'PUT') {\n\t\tthrow `unsupported init.method='${method}': must be undefined or GET or POST or DELETE or PUT`\n\t}\n\n\tif (init.body) {\n\t\t// init.body should be an object, to be converted to either\n\t\t// (a) GET URL search parameter strings, OR\n\t\t// (b) POST body, JSON-encoded\n\t\tif (!init.body.embedder && includeEmbedder) init.body.embedder = hostname\n\n\t\tconst params = encode(init.body)\n\t\tif (!url.includes('?')) url += '?'\n\t\turl += params\n\t}\n\n\tif (!url.includes('embedder=') && includeEmbedder) {\n\t\tconst sep = url.includes('?') ? '&' : '?'\n\t\turl += `${sep}embedder=${hostname}`\n\t}\n\n\tif (url.length < urlMaxLength) {\n\t\t// the request body has been encoded as URL parameters, so can delete it\n\t\tif (init.body) delete init.body\n\t\treturn url\n\t}\n\n\t// convert to a POST request because the URL is too long\n\t// !!! NOTE: the requested server route must support both GET and POST, for example, app.all('/route', handler)\n\tinit.method = 'POST'\n\tconst [hostpath, query] = url.split('?') // must use url but not path\n\n\tif (init.body) {\n\t\t// assumes that all or most of the url string length were from parameters in the init.body argument to dofetch2\n\t\tinit.body = JSON.stringify(init.body)\n\t} else {\n\t\t// the url parameters were provided directly in the path argument to dofetch2()\n\t\tconst params = {}\n\t\t// decode URL search parameters, if available\n\t\tif (query)\n\t\t\t// TODO: !!! use urljson.decode here !!!\n\t\t\tquery.split('&').forEach(p => {\n\t\t\t\tconst [k, v] = p.split('=')\n\t\t\t\tconst decodedVal = decodeURIComponent(v)\n\t\t\t\ttry {\n\t\t\t\t\tparams[k] = JSON.parse(decodedVal)\n\t\t\t\t} catch {\n\t\t\t\t\tparams[k] = decodedVal\n\t\t\t\t}\n\t\t\t})\n\t\tif (!params.embedder && includeEmbedder) params.embedder = hostname\n\t\tinit.body = JSON.stringify(params)\n\t}\n\n\treturn hostpath\n}\n\n// see opts argument to setDsAuthOk\nexport function setAuth(opts) {\n\tsetDsAuthOk(opts, dofetch3)\n}\n"],
5
- "mappings": "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",
6
- "names": ["mclasslabel2key", "i", "i", "i", "dtsnvindel", "chr", "i", "i", "i", "mclassnonstandard", "tmp", "alt", "i", "hash", "dofetch3", "optsServerDataNames", "i"]
7
- }