react-msaview 6.5.0 → 8.0.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 (414) hide show
  1. package/README.md +13 -11
  2. package/bundle/index.js +122 -112
  3. package/bundle/index.js.map +4 -4
  4. package/dist/colorSchemes.js +1 -2
  5. package/dist/colorSchemes.js.map +1 -1
  6. package/dist/columnStats.d.ts +28 -0
  7. package/dist/columnStats.js +34 -0
  8. package/dist/columnStats.js.map +1 -0
  9. package/dist/components/DragHandle.d.ts +3 -2
  10. package/dist/components/DragHandle.js +11 -5
  11. package/dist/components/DragHandle.js.map +1 -1
  12. package/dist/components/Loading.js +2 -2
  13. package/dist/components/Loading.js.map +1 -1
  14. package/dist/components/MSAView.js +17 -6
  15. package/dist/components/MSAView.js.map +1 -1
  16. package/dist/components/MSAViewer.d.ts +69 -4
  17. package/dist/components/MSAViewer.js +201 -8
  18. package/dist/components/MSAViewer.js.map +1 -1
  19. package/dist/components/PortalTooltip.d.ts +11 -0
  20. package/dist/components/PortalTooltip.js +29 -0
  21. package/dist/components/PortalTooltip.js.map +1 -0
  22. package/dist/components/ResizeHandles.d.ts +3 -3
  23. package/dist/components/ResizeHandles.js +13 -24
  24. package/dist/components/ResizeHandles.js.map +1 -1
  25. package/dist/components/SequenceTextArea.js +3 -3
  26. package/dist/components/SequenceTextArea.js.map +1 -1
  27. package/dist/components/Track.js +41 -22
  28. package/dist/components/Track.js.map +1 -1
  29. package/dist/components/dialogs/{InterProScanDialog.d.ts → AnnotationFileDialog.d.ts} +2 -2
  30. package/dist/components/dialogs/AnnotationFileDialog.js +92 -0
  31. package/dist/components/dialogs/AnnotationFileDialog.js.map +1 -0
  32. package/dist/components/dialogs/ExportSVGDialog.js +5 -3
  33. package/dist/components/dialogs/ExportSVGDialog.js.map +1 -1
  34. package/dist/components/dialogs/FeatureDialog.js +13 -9
  35. package/dist/components/dialogs/FeatureDialog.js.map +1 -1
  36. package/dist/components/dialogs/TrackInfoDialog.js +1 -1
  37. package/dist/components/dialogs/TrackInfoDialog.js.map +1 -1
  38. package/dist/components/header/GappynessSlider.js +6 -11
  39. package/dist/components/header/GappynessSlider.js.map +1 -1
  40. package/dist/components/header/Header.js +7 -0
  41. package/dist/components/header/Header.js.map +1 -1
  42. package/dist/components/header/HeaderStatusArea.js +0 -2
  43. package/dist/components/header/HeaderStatusArea.js.map +1 -1
  44. package/dist/components/header/LoadWarnings.d.ts +6 -0
  45. package/dist/components/header/LoadWarnings.js +35 -0
  46. package/dist/components/header/LoadWarnings.js.map +1 -0
  47. package/dist/components/header/MultiAlignmentSelector.js +0 -0
  48. package/dist/components/header/MultiAlignmentSelector.js.map +1 -1
  49. package/dist/components/header/ScrollZoomIcons.d.ts +6 -0
  50. package/dist/components/header/ScrollZoomIcons.js +35 -0
  51. package/dist/components/header/ScrollZoomIcons.js.map +1 -0
  52. package/dist/components/header/TreeSettingsMenu.js +7 -1
  53. package/dist/components/header/TreeSettingsMenu.js.map +1 -1
  54. package/dist/components/header/UnshareableDataWarning.d.ts +6 -0
  55. package/dist/components/header/UnshareableDataWarning.js +40 -0
  56. package/dist/components/header/UnshareableDataWarning.js.map +1 -0
  57. package/dist/components/header/ZoomControls.js +49 -6
  58. package/dist/components/header/ZoomControls.js.map +1 -1
  59. package/dist/components/header/getAnnotationsMenu.js +11 -14
  60. package/dist/components/header/getAnnotationsMenu.js.map +1 -1
  61. package/dist/components/header/settingsMenuItems.js +10 -7
  62. package/dist/components/header/settingsMenuItems.js.map +1 -1
  63. package/dist/components/import/ImportForm.js +1 -1
  64. package/dist/components/import/ImportForm.js.map +1 -1
  65. package/dist/components/import/ImportFormExamples.js +2 -6
  66. package/dist/components/import/ImportFormExamples.js.map +1 -1
  67. package/dist/components/import/util.js +2 -0
  68. package/dist/components/import/util.js.map +1 -1
  69. package/dist/components/minimap/Minimap.js +1 -2
  70. package/dist/components/minimap/Minimap.js.map +1 -1
  71. package/dist/components/msa/AnnotationLegend.js +27 -19
  72. package/dist/components/msa/AnnotationLegend.js.map +1 -1
  73. package/dist/components/msa/MSACanvas.js +1 -1
  74. package/dist/components/msa/MSACanvas.js.map +1 -1
  75. package/dist/components/msa/MSACanvasBlock.js +17 -20
  76. package/dist/components/msa/MSACanvasBlock.js.map +1 -1
  77. package/dist/components/msa/MSAMouseoverCanvas.js +2 -1
  78. package/dist/components/msa/MSAMouseoverCanvas.js.map +1 -1
  79. package/dist/components/msa/domainBandCursor.d.ts +7 -11
  80. package/dist/components/msa/domainBandCursor.js +7 -11
  81. package/dist/components/msa/domainBandCursor.js.map +1 -1
  82. package/dist/components/msa/drawFeatureSpans.d.ts +53 -0
  83. package/dist/components/msa/drawFeatureSpans.js +78 -0
  84. package/dist/components/msa/drawFeatureSpans.js.map +1 -0
  85. package/dist/components/msa/legendRows.d.ts +8 -0
  86. package/dist/components/msa/legendRows.js +16 -0
  87. package/dist/components/msa/legendRows.js.map +1 -0
  88. package/dist/components/msa/msaRaster.d.ts +30 -27
  89. package/dist/components/msa/msaRaster.js +193 -90
  90. package/dist/components/msa/msaRaster.js.map +1 -1
  91. package/dist/components/msa/packDomainLanes.d.ts +20 -0
  92. package/dist/components/msa/packDomainLanes.js +33 -0
  93. package/dist/components/msa/packDomainLanes.js.map +1 -0
  94. package/dist/components/msa/renderBoxFeatureCanvasBlock.d.ts +3 -1
  95. package/dist/components/msa/renderBoxFeatureCanvasBlock.js +51 -87
  96. package/dist/components/msa/renderBoxFeatureCanvasBlock.js.map +1 -1
  97. package/dist/components/msa/renderHighlights.d.ts +44 -4
  98. package/dist/components/msa/renderHighlights.js +99 -11
  99. package/dist/components/msa/renderHighlights.js.map +1 -1
  100. package/dist/components/msa/renderMSABlock.d.ts +1 -2
  101. package/dist/components/msa/renderMSABlock.js +28 -31
  102. package/dist/components/msa/renderMSABlock.js.map +1 -1
  103. package/dist/components/msa/renderMSAMouseover.js +9 -30
  104. package/dist/components/msa/renderMSAMouseover.js.map +1 -1
  105. package/dist/components/msa/tileColor.js +4 -7
  106. package/dist/components/msa/tileColor.js.map +1 -1
  107. package/dist/components/msa/useMsaBlockMouse.d.ts +5 -3
  108. package/dist/components/msa/useMsaBlockMouse.js +6 -6
  109. package/dist/components/msa/useMsaBlockMouse.js.map +1 -1
  110. package/dist/components/renderCtx.d.ts +1 -1
  111. package/dist/components/rowpanels/RowPanelBlock.d.ts +9 -0
  112. package/dist/components/rowpanels/RowPanelBlock.js +86 -0
  113. package/dist/components/rowpanels/RowPanelBlock.js.map +1 -0
  114. package/dist/components/rowpanels/RowPanelHeaders.d.ts +12 -0
  115. package/dist/components/rowpanels/RowPanelHeaders.js +38 -0
  116. package/dist/components/rowpanels/RowPanelHeaders.js.map +1 -0
  117. package/dist/components/{msa/ColumnStats.d.ts → rowpanels/RowPanels.d.ts} +2 -2
  118. package/dist/components/rowpanels/RowPanels.js +32 -0
  119. package/dist/components/rowpanels/RowPanels.js.map +1 -0
  120. package/dist/components/rowpanels/headerLayout.d.ts +1 -0
  121. package/dist/components/rowpanels/headerLayout.js +5 -0
  122. package/dist/components/rowpanels/headerLayout.js.map +1 -0
  123. package/dist/components/rowpanels/renderFeaturePanel.d.ts +21 -0
  124. package/dist/components/rowpanels/renderFeaturePanel.js +37 -0
  125. package/dist/components/rowpanels/renderFeaturePanel.js.map +1 -0
  126. package/dist/components/rowpanels/renderRowPanel.d.ts +23 -0
  127. package/dist/components/rowpanels/renderRowPanel.js +22 -0
  128. package/dist/components/rowpanels/renderRowPanel.js.map +1 -0
  129. package/dist/components/rowpanels/renderStrip.d.ts +20 -0
  130. package/dist/components/rowpanels/renderStrip.js +26 -0
  131. package/dist/components/rowpanels/renderStrip.js.map +1 -0
  132. package/dist/components/tracks/TrackBlocks.js +13 -16
  133. package/dist/components/tracks/TrackBlocks.js.map +1 -1
  134. package/dist/components/tracks/TrackTooltipContent.d.ts +15 -0
  135. package/dist/components/tracks/TrackTooltipContent.js +109 -0
  136. package/dist/components/tracks/TrackTooltipContent.js.map +1 -0
  137. package/dist/components/tracks/drawTracks.d.ts +30 -12
  138. package/dist/components/tracks/drawTracks.js +127 -34
  139. package/dist/components/tracks/drawTracks.js.map +1 -1
  140. package/dist/components/tracks/useTrackHover.d.ts +22 -0
  141. package/dist/components/tracks/useTrackHover.js +30 -0
  142. package/dist/components/tracks/useTrackHover.js.map +1 -0
  143. package/dist/components/tree/CladeLabels.d.ts +12 -0
  144. package/dist/components/tree/CladeLabels.js +48 -0
  145. package/dist/components/tree/CladeLabels.js.map +1 -0
  146. package/dist/components/tree/TreeCanvas.js +6 -4
  147. package/dist/components/tree/TreeCanvas.js.map +1 -1
  148. package/dist/components/tree/TreeCanvasBlock.js +6 -21
  149. package/dist/components/tree/TreeCanvasBlock.js.map +1 -1
  150. package/dist/components/tree/TreeOverview.d.ts +14 -0
  151. package/dist/components/tree/TreeOverview.js +75 -0
  152. package/dist/components/tree/TreeOverview.js.map +1 -0
  153. package/dist/components/tree/TreeRuler.js +11 -5
  154. package/dist/components/tree/TreeRuler.js.map +1 -1
  155. package/dist/components/tree/cladeBrackets.d.ts +25 -0
  156. package/dist/components/tree/cladeBrackets.js +51 -0
  157. package/dist/components/tree/cladeBrackets.js.map +1 -0
  158. package/dist/components/tree/dialogs/TreeNodeInfoDialog.js +2 -2
  159. package/dist/components/tree/dialogs/TreeNodeInfoDialog.js.map +1 -1
  160. package/dist/components/tree/renderTreeCanvas.d.ts +0 -1
  161. package/dist/components/tree/renderTreeCanvas.js +221 -47
  162. package/dist/components/tree/renderTreeCanvas.js.map +1 -1
  163. package/dist/components/tree/renderTreeOverview.d.ts +52 -0
  164. package/dist/components/tree/renderTreeOverview.js +138 -0
  165. package/dist/components/tree/renderTreeOverview.js.map +1 -0
  166. package/dist/components/tree/scaleBar.d.ts +10 -0
  167. package/dist/components/tree/scaleBar.js +24 -0
  168. package/dist/components/tree/scaleBar.js.map +1 -0
  169. package/dist/components/tree/useTreeHover.js +2 -4
  170. package/dist/components/tree/useTreeHover.js.map +1 -1
  171. package/dist/constants.d.ts +18 -1
  172. package/dist/constants.js +51 -8
  173. package/dist/constants.js.map +1 -1
  174. package/dist/createPaletteMap.d.ts +7 -6
  175. package/dist/createPaletteMap.js +10 -9
  176. package/dist/createPaletteMap.js.map +1 -1
  177. package/dist/element.d.ts +13 -0
  178. package/dist/element.js +269 -0
  179. package/dist/element.js.map +1 -0
  180. package/dist/featureFields.d.ts +11 -0
  181. package/dist/featureFields.js +17 -0
  182. package/dist/featureFields.js.map +1 -0
  183. package/dist/fetchUtils.d.ts +7 -7
  184. package/dist/fetchUtils.js +4 -32
  185. package/dist/fetchUtils.js.map +1 -1
  186. package/dist/flatToTree.js +1 -2
  187. package/dist/flatToTree.js.map +1 -1
  188. package/dist/ggplotPalettes.d.ts +10 -0
  189. package/dist/ggplotPalettes.js +58 -0
  190. package/dist/ggplotPalettes.js.map +1 -1
  191. package/dist/hierarchy.d.ts +29 -1
  192. package/dist/hierarchy.js +82 -19
  193. package/dist/hierarchy.js.map +1 -1
  194. package/dist/index.d.ts +10 -1
  195. package/dist/index.js +10 -2
  196. package/dist/index.js.map +1 -1
  197. package/dist/model/DataModel.js +4 -4
  198. package/dist/model/DataModel.js.map +1 -1
  199. package/dist/model/msaModel.d.ts +3 -2
  200. package/dist/model/msaModel.js +3 -2
  201. package/dist/model/msaModel.js.map +1 -1
  202. package/dist/model/treeModel.d.ts +30 -0
  203. package/dist/model/treeModel.js +37 -1
  204. package/dist/model/treeModel.js.map +1 -1
  205. package/dist/model.d.ts +792 -259
  206. package/dist/model.js +2092 -675
  207. package/dist/model.js.map +1 -1
  208. package/dist/mount.d.ts +11 -0
  209. package/dist/mount.js +22 -0
  210. package/dist/mount.js.map +1 -0
  211. package/dist/neighborJoining.js +8 -32
  212. package/dist/neighborJoining.js.map +1 -1
  213. package/dist/renderToStaticMarkup.d.ts +15 -13
  214. package/dist/renderToStaticMarkup.js +37 -25
  215. package/dist/renderToStaticMarkup.js.map +1 -1
  216. package/dist/renderToSvg.js +198 -68
  217. package/dist/renderToSvg.js.map +1 -1
  218. package/dist/rowCoordinateCalculations.d.ts +26 -28
  219. package/dist/rowCoordinateCalculations.js +13 -39
  220. package/dist/rowCoordinateCalculations.js.map +1 -1
  221. package/dist/scales.d.ts +22 -0
  222. package/dist/scales.js +30 -0
  223. package/dist/scales.js.map +1 -0
  224. package/dist/seqPosToGlobalCol.d.ts +2 -3
  225. package/dist/seqPosToGlobalCol.js +5 -4
  226. package/dist/seqPosToGlobalCol.js.map +1 -1
  227. package/dist/sequenceLogo.d.ts +6 -11
  228. package/dist/sequenceLogo.js +6 -11
  229. package/dist/sequenceLogo.js.map +1 -1
  230. package/dist/stripDefault.d.ts +7 -14
  231. package/dist/stripDefault.js +7 -14
  232. package/dist/stripDefault.js.map +1 -1
  233. package/dist/svgTestUtil.d.ts +306 -124
  234. package/dist/types.d.ts +295 -3
  235. package/dist/umd.d.ts +2 -0
  236. package/dist/umd.js +4 -2
  237. package/dist/umd.js.map +1 -1
  238. package/dist/useCanvasAutorun.d.ts +5 -10
  239. package/dist/useCanvasAutorun.js +5 -10
  240. package/dist/useCanvasAutorun.js.map +1 -1
  241. package/dist/useMsaSvgFigure.d.ts +20 -0
  242. package/dist/useMsaSvgFigure.js +46 -0
  243. package/dist/useMsaSvgFigure.js.map +1 -0
  244. package/dist/util.d.ts +10 -4
  245. package/dist/util.js +37 -10
  246. package/dist/util.js.map +1 -1
  247. package/dist/version.d.ts +1 -1
  248. package/dist/version.js +1 -1
  249. package/dist/wuss.d.ts +14 -0
  250. package/dist/wuss.js +55 -0
  251. package/dist/wuss.js.map +1 -0
  252. package/package.json +23 -14
  253. package/src/colorSchemes.ts +1 -2
  254. package/src/columnStats.ts +58 -0
  255. package/src/components/DragHandle.tsx +18 -7
  256. package/src/components/Loading.tsx +14 -8
  257. package/src/components/MSAView.tsx +19 -5
  258. package/src/components/MSAViewer.tsx +326 -10
  259. package/src/components/PortalTooltip.tsx +47 -0
  260. package/src/components/ResizeHandles.tsx +21 -36
  261. package/src/components/SequenceTextArea.tsx +3 -3
  262. package/src/components/Track.tsx +55 -18
  263. package/src/components/dialogs/AnnotationFileDialog.tsx +162 -0
  264. package/src/components/dialogs/ExportSVGDialog.tsx +7 -2
  265. package/src/components/dialogs/FeatureDialog.tsx +13 -9
  266. package/src/components/dialogs/TrackInfoDialog.tsx +1 -1
  267. package/src/components/header/GappynessSlider.tsx +6 -11
  268. package/src/components/header/Header.tsx +10 -0
  269. package/src/components/header/HeaderStatusArea.tsx +0 -5
  270. package/src/components/header/LoadWarnings.tsx +48 -0
  271. package/src/components/header/MultiAlignmentSelector.tsx +0 -0
  272. package/src/components/header/ScrollZoomIcons.tsx +52 -0
  273. package/src/components/header/TreeSettingsMenu.tsx +7 -1
  274. package/src/components/header/UnshareableDataWarning.tsx +56 -0
  275. package/src/components/header/ZoomControls.tsx +74 -14
  276. package/src/components/header/getAnnotationsMenu.ts +13 -17
  277. package/src/components/header/settingsMenuItems.ts +11 -6
  278. package/src/components/import/ImportForm.tsx +2 -2
  279. package/src/components/import/ImportFormExamples.tsx +4 -8
  280. package/src/components/import/util.ts +2 -0
  281. package/src/components/minimap/Minimap.tsx +1 -2
  282. package/src/components/msa/AnnotationLegend.tsx +48 -38
  283. package/src/components/msa/MSACanvas.tsx +3 -5
  284. package/src/components/msa/MSACanvasBlock.tsx +17 -21
  285. package/src/components/msa/MSAMouseoverCanvas.tsx +2 -1
  286. package/src/components/msa/domainBandCursor.ts +7 -11
  287. package/src/components/msa/drawFeatureSpans.ts +150 -0
  288. package/src/components/msa/legendRows.ts +24 -0
  289. package/src/components/msa/msaRaster.ts +236 -88
  290. package/src/components/msa/packDomainLanes.ts +36 -0
  291. package/src/components/msa/renderBoxFeatureCanvasBlock.ts +69 -123
  292. package/src/components/msa/renderHighlights.ts +141 -10
  293. package/src/components/msa/renderMSABlock.ts +29 -38
  294. package/src/components/msa/renderMSAMouseover.ts +9 -39
  295. package/src/components/msa/tileColor.ts +4 -7
  296. package/src/components/msa/useMsaBlockMouse.ts +6 -6
  297. package/src/components/renderCtx.ts +1 -0
  298. package/src/components/rowpanels/RowPanelBlock.tsx +139 -0
  299. package/src/components/rowpanels/RowPanelHeaders.tsx +57 -0
  300. package/src/components/rowpanels/RowPanels.tsx +77 -0
  301. package/src/components/rowpanels/headerLayout.ts +5 -0
  302. package/src/components/rowpanels/renderFeaturePanel.ts +66 -0
  303. package/src/components/rowpanels/renderRowPanel.ts +41 -0
  304. package/src/components/rowpanels/renderStrip.ts +46 -0
  305. package/src/components/tracks/TrackBlocks.tsx +13 -18
  306. package/src/components/tracks/TrackTooltipContent.tsx +156 -0
  307. package/src/components/tracks/drawTracks.ts +169 -38
  308. package/src/components/tracks/useTrackHover.ts +42 -0
  309. package/src/components/tree/CladeLabels.tsx +77 -0
  310. package/src/components/tree/TreeCanvas.tsx +4 -3
  311. package/src/components/tree/TreeCanvasBlock.tsx +10 -32
  312. package/src/components/tree/TreeOverview.tsx +106 -0
  313. package/src/components/tree/TreeRuler.tsx +29 -5
  314. package/src/components/tree/cladeBrackets.ts +73 -0
  315. package/src/components/tree/dialogs/TreeNodeInfoDialog.tsx +2 -2
  316. package/src/components/tree/renderTreeCanvas.ts +312 -48
  317. package/src/components/tree/renderTreeOverview.ts +212 -0
  318. package/src/components/tree/scaleBar.ts +23 -0
  319. package/src/components/tree/useTreeHover.ts +2 -4
  320. package/src/constants.ts +61 -8
  321. package/src/createPaletteMap.ts +10 -9
  322. package/src/element.ts +321 -0
  323. package/src/featureFields.ts +19 -0
  324. package/src/fetchUtils.ts +7 -40
  325. package/src/flatToTree.ts +1 -2
  326. package/src/ggplotPalettes.ts +60 -0
  327. package/src/hierarchy.ts +97 -20
  328. package/src/index.ts +46 -6
  329. package/src/model/DataModel.ts +5 -4
  330. package/src/model/msaModel.ts +3 -2
  331. package/src/model/treeModel.ts +42 -0
  332. package/src/model.ts +2492 -793
  333. package/src/mount.tsx +32 -0
  334. package/src/neighborJoining.ts +8 -32
  335. package/src/rawImports.d.ts +9 -0
  336. package/src/renderToStaticMarkup.ts +41 -25
  337. package/src/renderToSvg.tsx +365 -92
  338. package/src/rowCoordinateCalculations.ts +16 -62
  339. package/src/scales.ts +47 -0
  340. package/src/seqPosToGlobalCol.ts +5 -4
  341. package/src/sequenceLogo.ts +6 -11
  342. package/src/stripDefault.ts +7 -14
  343. package/src/types.ts +352 -12
  344. package/src/umd.ts +4 -2
  345. package/src/useCanvasAutorun.ts +5 -10
  346. package/src/useMsaSvgFigure.ts +72 -0
  347. package/src/util.ts +40 -14
  348. package/src/version.ts +1 -1
  349. package/src/wuss.ts +62 -0
  350. package/dist/components/dialogs/InterProScanDialog.js +0 -137
  351. package/dist/components/dialogs/InterProScanDialog.js.map +0 -1
  352. package/dist/components/dialogs/InterProScanFileDialog.d.ts +0 -7
  353. package/dist/components/dialogs/InterProScanFileDialog.js +0 -64
  354. package/dist/components/dialogs/InterProScanFileDialog.js.map +0 -1
  355. package/dist/components/msa/ColumnStats.js +0 -42
  356. package/dist/components/msa/ColumnStats.js.map +0 -1
  357. package/dist/launchInterProScan.d.ts +0 -13
  358. package/dist/launchInterProScan.js +0 -110
  359. package/dist/launchInterProScan.js.map +0 -1
  360. package/dist/useColorContrast.d.ts +0 -10
  361. package/dist/useColorContrast.js +0 -13
  362. package/dist/useColorContrast.js.map +0 -1
  363. package/src/clustalX.test.ts +0 -74
  364. package/src/colSpace.test.ts +0 -67
  365. package/src/collapseLogic.test.ts +0 -115
  366. package/src/colorSchemes.docs.test.ts +0 -57
  367. package/src/columnCounts.test.ts +0 -73
  368. package/src/columnStats.test.ts +0 -94
  369. package/src/columnTracks.test.ts +0 -97
  370. package/src/components/dialogs/InterProScanDialog.tsx +0 -214
  371. package/src/components/dialogs/InterProScanFileDialog.tsx +0 -138
  372. package/src/components/minimap/minimapLayout.test.ts +0 -71
  373. package/src/components/msa/ColumnStats.tsx +0 -54
  374. package/src/components/msa/msaRaster.test.ts +0 -145
  375. package/src/components/msa/renderBoxFeatureCanvasBlock.test.ts +0 -51
  376. package/src/components/tree/renderTreeCanvas.test.ts +0 -296
  377. package/src/dataInitialized.test.ts +0 -42
  378. package/src/domainBands.test.ts +0 -122
  379. package/src/domainLetterColor.test.ts +0 -80
  380. package/src/exportFileName.test.ts +0 -40
  381. package/src/fetchUtils.test.ts +0 -83
  382. package/src/flatToTree.test.ts +0 -51
  383. package/src/hierarchy.test.ts +0 -228
  384. package/src/highlights.test.ts +0 -70
  385. package/src/impgRender.test.tsx +0 -68
  386. package/src/largeTree.test.ts +0 -67
  387. package/src/launchInterProScan.ts +0 -167
  388. package/src/loadErrorDisplay.test.tsx +0 -102
  389. package/src/modelFilehandleLoaders.test.ts +0 -137
  390. package/src/modelReset.test.ts +0 -120
  391. package/src/neighborJoining.test.ts +0 -164
  392. package/src/parseAsn1.test.ts +0 -36
  393. package/src/propertyConservation.test.ts +0 -36
  394. package/src/renderColumnTracksSvg.test.tsx +0 -108
  395. package/src/renderDomainsSvg.test.tsx +0 -118
  396. package/src/renderHighlightsSvg.test.tsx +0 -85
  397. package/src/renderMinimapSvg.test.tsx +0 -62
  398. package/src/renderRasterSvg.test.tsx +0 -144
  399. package/src/renderSequenceLogoSvg.test.tsx +0 -165
  400. package/src/renderToSvg.test.tsx +0 -65
  401. package/src/reset.test.ts +0 -61
  402. package/src/rowCoordinateCalculations.test.ts +0 -211
  403. package/src/rowSpace.test.ts +0 -46
  404. package/src/segmentOverlay.test.ts +0 -70
  405. package/src/seqPosToGlobalCol.test.ts +0 -59
  406. package/src/sequenceLogo.test.ts +0 -88
  407. package/src/setFontSize.test.ts +0 -33
  408. package/src/stripDefault.test.ts +0 -48
  409. package/src/stripDefaultSnapshot.test.ts +0 -87
  410. package/src/treeMetadata.test.ts +0 -39
  411. package/src/useCanvasAutorun.test.tsx +0 -98
  412. package/src/useColorContrast.ts +0 -18
  413. package/src/viewChrome.test.tsx +0 -134
  414. package/src/wheelZoom.test.ts +0 -46
@@ -6,17 +6,12 @@ import type React from 'react'
6
6
 
7
7
  /**
8
8
  * Wires a canvas ref to a mobx autorun: grabs the 2d context once the canvas
9
- * mounts and re-runs `draw` whenever any observable it reads changes. Collapses
10
- * the getContext/null-guard/autorun-dispose boilerplate repeated by every canvas
11
- * block host.
9
+ * mounts and re-runs `draw` whenever any observable it reads changes.
12
10
  *
13
- * `width`/`height` are the canvas *backing store* size the caller renders onto
14
- * the element (logical size times the high-res scale factor), and they are load
15
- * bearing rather than informational. Assigning either resets the canvas bitmap,
16
- * and React assigns them on every commit where they changed -- which lands
17
- * *after* the mobx reaction that already redrew at the old size. Without a redraw
18
- * on the far side of that commit the canvas is left blank: it is what blanked the
19
- * tree on a tree-area resize and the consensus tracks on a vertical zoom.
11
+ * `width`/`height` are the canvas backing store size (logical size times the
12
+ * high-res scale factor). Assigning either clears the bitmap, and React assigns
13
+ * them after the mobx reaction has drawn at the old size, so the effect redraws
14
+ * when they change.
20
15
  *
21
16
  * `deps` covers everything else the effect should re-subscribe on, matching a
22
17
  * normal useEffect dep array.
@@ -0,0 +1,72 @@
1
+ import { useEffect, useState } from 'react'
2
+
3
+ import { createJBrowseTheme } from '@jbrowse/core/ui/theme'
4
+ import { getSnapshot } from '@jbrowse/mobx-state-tree'
5
+ import { compareStructural, reaction } from 'mobx'
6
+
7
+ import { renderToSvg } from './renderToSvg.tsx'
8
+
9
+ import type { MsaViewModel } from './model.ts'
10
+ import type { Theme } from '@mui/material'
11
+
12
+ export interface MsaSvgFigure {
13
+ /** the SVG document for what is on screen, once the first draw finishes */
14
+ svg?: string
15
+ error?: unknown
16
+ }
17
+
18
+ /**
19
+ * The viewer's SVG export of its viewport, as markup for the page to insert.
20
+ * It redraws after the view settles: `delay` ms after the last scroll, zoom,
21
+ * resize or change to the snapshot. A draw a later one overtakes is dropped.
22
+ *
23
+ * The figure's row names and letters are SVG text, so the browser's find
24
+ * locates them, a reader can select them, and print stylesheets apply.
25
+ */
26
+ export function useMsaSvgFigure(
27
+ model: MsaViewModel,
28
+ {
29
+ theme,
30
+ includeTracks = false,
31
+ delay = 300,
32
+ }: { theme?: Theme; includeTracks?: boolean; delay?: number } = {},
33
+ ) {
34
+ const [figure, setFigure] = useState<MsaSvgFigure>({})
35
+ useEffect(() => {
36
+ let latest = 0
37
+ const dispose = reaction(
38
+ () =>
39
+ model.viewInitialized && model.dataInitialized
40
+ ? [getSnapshot(model), model.width, model.height]
41
+ : undefined,
42
+ key => {
43
+ if (!key) {
44
+ return
45
+ }
46
+ const draw = ++latest
47
+ renderToSvg(model, {
48
+ theme: theme ?? createJBrowseTheme(),
49
+ exportType: 'viewport',
50
+ includeTracks,
51
+ }).then(
52
+ svg => {
53
+ if (draw === latest) {
54
+ setFigure({ svg })
55
+ }
56
+ },
57
+ (error: unknown) => {
58
+ if (draw === latest) {
59
+ setFigure({ error })
60
+ }
61
+ },
62
+ )
63
+ },
64
+ { delay, fireImmediately: true, equals: compareStructural },
65
+ )
66
+ return () => {
67
+ latest = -1
68
+ dispose()
69
+ }
70
+ }, [model, theme, includeTracks, delay])
71
+ return figure
72
+ }
package/src/util.ts CHANGED
@@ -29,6 +29,18 @@ export function adjustColorForContrast(color: string, bg: string): string {
29
29
  return result
30
30
  }
31
31
 
32
+ // a wash over the alignment or the tree: a color carrying its own alpha draws
33
+ // at that alpha, and one with none takes `alpha` so the marks under it stay
34
+ // readable
35
+ export function withAlpha(color: string, alpha: number) {
36
+ const parsed = colord(color)
37
+ return parsed.alpha() === 1 ? parsed.alpha(alpha).toRgbString() : color
38
+ }
39
+
40
+ export function outlineColor(fill: string) {
41
+ return colord(fill).darken(0.1).toHex()
42
+ }
43
+
32
44
  export function transform<T>(
33
45
  obj: Record<string, T>,
34
46
  cb: (arg0: [string, T]) => [string, T],
@@ -36,14 +48,34 @@ export function transform<T>(
36
48
  return Object.fromEntries(Object.entries(obj).map(cb))
37
49
  }
38
50
 
39
- export function colorContrast(
40
- colorScheme: Record<string, string>,
41
- theme: Theme,
42
- ) {
43
- return transform(colorScheme, ([letter, color]) => [
44
- letter,
45
- theme.palette.getContrastText(colord(color).toHex()),
46
- ])
51
+ const contrastTextCaches = new WeakMap<Theme, Map<string, string>>()
52
+
53
+ /**
54
+ * Readable letter color over a given cell color, memoized per theme.
55
+ *
56
+ * Keyed by cell color, since a dynamic scheme has no letter->color table; this
57
+ * covers static schemes and a track's own `colors` too. An uncolored cell gets
58
+ * the theme's text color, which stays readable in the dark theme.
59
+ */
60
+ export function contrastTextFn(theme: Theme) {
61
+ let cache = contrastTextCaches.get(theme)
62
+ if (!cache) {
63
+ cache = new Map()
64
+ contrastTextCaches.set(theme, cache)
65
+ }
66
+ const fallback = theme.palette.text.primary
67
+ return (color: string | undefined) => {
68
+ if (!color) {
69
+ return fallback
70
+ }
71
+ const hit = cache.get(color)
72
+ if (hit !== undefined) {
73
+ return hit
74
+ }
75
+ const out = theme.palette.getContrastText(colord(color).toHex())
76
+ cache.set(color, out)
77
+ return out
78
+ }
47
79
  }
48
80
 
49
81
  export function dropBlanks<T>(blanks: number[], arr: T[]) {
@@ -110,9 +142,3 @@ export function computeRowInsertions(blanks: number[], seq: string) {
110
142
  export function len(a: { end: number; start: number }) {
111
143
  return a.end - a.start
112
144
  }
113
-
114
- // https://sonnhammer.sbc.su.se/Stockholm.html
115
- // gaps can be a . or - in stockholm
116
- export function isBlank(s?: string) {
117
- return s === '-' || s === '.'
118
- }
package/src/version.ts CHANGED
@@ -1 +1 @@
1
- export const version = '6.5.0'
1
+ export const version = '8.0.0'
package/src/wuss.ts ADDED
@@ -0,0 +1,62 @@
1
+ // WUSS notation (Rfam's `#=GC SS_cons`) names a consensus secondary structure
2
+ // by pairing columns. Nested helices use bracket pairs -- <>, (), [], {} --
3
+ // each type kept on its own stack, and a pseudoknot, which by definition
4
+ // crosses a helix it cannot nest inside, uses a letter pair instead: `A` opens
5
+ // and `a` closes, `B`/`b` for a second one. Everything else (. , _ - : ~) is
6
+ // unpaired.
7
+
8
+ const closeToOpen: Record<string, string> = {
9
+ '>': '<',
10
+ ')': '(',
11
+ ']': '[',
12
+ '}': '{',
13
+ }
14
+ const opens = new Set(Object.values(closeToOpen))
15
+
16
+ export interface BasePair {
17
+ /** 0-based column */
18
+ start: number
19
+ /** 0-based column */
20
+ end: number
21
+ /** the pair crosses a helix rather than nesting inside one */
22
+ pseudoknot: boolean
23
+ }
24
+
25
+ /**
26
+ * The base pairs a WUSS string encodes, as 0-based column indexes. Unmatched
27
+ * brackets are dropped rather than throwing: a hand-edited or truncated
28
+ * alignment should still draw the helices it does close.
29
+ */
30
+ export function parseWuss(ss: string): BasePair[] {
31
+ const stacks = new Map<string, number[]>()
32
+ const pairs: BasePair[] = []
33
+ const push = (key: string, col: number) => {
34
+ const stack = stacks.get(key)
35
+ if (stack) {
36
+ stack.push(col)
37
+ } else {
38
+ stacks.set(key, [col])
39
+ }
40
+ }
41
+ const pop = (key: string, col: number, pseudoknot: boolean) => {
42
+ const start = stacks.get(key)?.pop()
43
+ if (start !== undefined) {
44
+ pairs.push({ start, end: col, pseudoknot })
45
+ }
46
+ }
47
+
48
+ for (let col = 0; col < ss.length; col++) {
49
+ const ch = ss[col]!
50
+ const opener = closeToOpen[ch]
51
+ if (opens.has(ch)) {
52
+ push(ch, col)
53
+ } else if (opener) {
54
+ pop(opener, col, false)
55
+ } else if (ch >= 'A' && ch <= 'Z') {
56
+ push(ch, col)
57
+ } else if (ch >= 'a' && ch <= 'z') {
58
+ pop(ch.toUpperCase(), col, true)
59
+ }
60
+ }
61
+ return pairs.sort((a, b) => a.start - b.start)
62
+ }
@@ -1,137 +0,0 @@
1
- import React, { useState } from 'react';
2
- import { Dialog } from '@jbrowse/core/ui';
3
- import { getSession } from '@jbrowse/core/util';
4
- import { Button, DialogActions, DialogContent, Typography } from '@mui/material';
5
- import { observer } from 'mobx-react';
6
- import { getUngappedSequence } from 'msa-parsers';
7
- import { launchInterProScan } from '../../launchInterProScan.js';
8
- const FAMILIES = 'Families, domains, sites & repeats';
9
- const FEATURES = 'Other sequence features';
10
- const STRUCTURAL = 'Structural domains';
11
- const OTHER = 'Other category';
12
- // The analyses the EBI iprscan5 endpoint accepts, all on by default. Static, so
13
- // it lives out here rather than being rebuilt on every render of the dialog.
14
- const interProScanPrograms = [
15
- {
16
- name: 'NCBIfam',
17
- category: FAMILIES,
18
- description: 'NCBI RefSeq FAMs including TIGRFAMs',
19
- },
20
- {
21
- name: 'SFLD',
22
- category: FAMILIES,
23
- description: 'Structure function linkage database',
24
- },
25
- {
26
- name: 'Phobius',
27
- category: FEATURES,
28
- description: 'A combined transmembrane topology and signal peptide predictor',
29
- },
30
- { name: 'SignalP', category: FEATURES },
31
- { name: 'SignalP_EUK', category: OTHER },
32
- { name: 'SignalP_GRAM_POSITIVE', category: OTHER },
33
- { name: 'SignalP_GRAM_NEGATIVE', category: OTHER },
34
- { name: 'SuperFamily', category: STRUCTURAL },
35
- { name: 'Panther', category: FAMILIES },
36
- { name: 'Gene3d', category: STRUCTURAL },
37
- { name: 'HAMAP', category: FAMILIES },
38
- { name: 'PrositeProfiles', category: FAMILIES },
39
- { name: 'PrositePatterns', category: FAMILIES },
40
- { name: 'Coils', category: FEATURES },
41
- { name: 'SMART', category: FAMILIES },
42
- {
43
- name: 'CDD',
44
- category: FAMILIES,
45
- description: 'Conserved Domains Database',
46
- },
47
- { name: 'PRINTS', category: FAMILIES },
48
- { name: 'PfamA', category: FAMILIES },
49
- { name: 'MobiDBLite', category: FEATURES },
50
- { name: 'PIRSF', category: OTHER },
51
- { name: 'TMHMM', category: FEATURES },
52
- { name: 'AntiFam', category: OTHER },
53
- { name: 'FunFam', category: OTHER },
54
- { name: 'PIRSR', category: FAMILIES },
55
- ].map(program => ({ ...program, checked: true }));
56
- const InterProScanDialog = observer(function ({ handleClose, model, }) {
57
- const [vals, setVals] = useState(interProScanPrograms);
58
- const programs = vals.filter(e => e.checked).map(e => e.name);
59
- const [show, setShow] = useState(false);
60
- return (React.createElement(Dialog, { maxWidth: "xl", title: "Query InterProScan API for domains", onClose: () => {
61
- handleClose();
62
- }, open: true },
63
- React.createElement(DialogContent, null,
64
- React.createElement(Typography, null, "This will run InterProScan via the InterProScan API on all rows of the current MSA"),
65
- React.createElement(Button, { onClick: () => {
66
- setShow(!show);
67
- } },
68
- show ? 'Hide' : 'Show',
69
- " advanced options"),
70
- show ? (React.createElement("div", null,
71
- React.createElement(Typography, null, "Select algorithms for InterProScan to run"),
72
- React.createElement("div", null,
73
- React.createElement(Button, { variant: "contained", color: "secondary", onClick: () => {
74
- setVals(vals.map(v => ({ ...v, checked: false })));
75
- } }, "Select none"),
76
- React.createElement(Button, { variant: "contained", color: "primary", onClick: () => {
77
- setVals(vals.map(v => ({ ...v, checked: true })));
78
- } }, "Select all")),
79
- React.createElement("table", null,
80
- React.createElement("tbody", null, vals
81
- .toSorted((a, b) => a.category.localeCompare(b.category))
82
- .map(({ name, checked, category, description }) => (React.createElement("tr", { key: name },
83
- React.createElement("td", null,
84
- React.createElement("input", { type: "checkbox", checked: checked, onChange: () => {
85
- setVals(vals.map(e => e.name === name
86
- ? { ...e, checked: !e.checked }
87
- : e));
88
- } })),
89
- React.createElement("td", { title: description }, name),
90
- React.createElement("td", null, category)))))))) : null),
91
- React.createElement(DialogActions, null,
92
- React.createElement(Button, { variant: "contained", color: "secondary", onClick: () => {
93
- handleClose();
94
- } }, "Cancel"),
95
- React.createElement(Button, { variant: "contained", color: "primary", onClick: () => {
96
- const controller = new AbortController();
97
- (async () => {
98
- try {
99
- const { rows } = model;
100
- if (rows.length > 140) {
101
- throw new Error('Too many sequences, please run InterProScan offline');
102
- }
103
- await launchInterProScan({
104
- algorithm: 'interproscan',
105
- programs: programs,
106
- seq: rows
107
- .map(row => [row[0], getUngappedSequence(row[1])])
108
- .filter(f => !!f[1])
109
- .map(row => `>${row[0]}\n${row[1]}`)
110
- .join('\n'),
111
- onProgress: arg => {
112
- model.setStatus(arg
113
- ? {
114
- ...arg,
115
- onCancel: () => {
116
- controller.abort();
117
- },
118
- }
119
- : undefined);
120
- },
121
- model,
122
- signal: controller.signal,
123
- });
124
- }
125
- catch (e) {
126
- console.error(e);
127
- getSession(model).notifyError(`${e}`, e);
128
- }
129
- finally {
130
- model.setStatus();
131
- }
132
- })();
133
- handleClose();
134
- } }, "Send sequences to InterProScan"))));
135
- });
136
- export default InterProScanDialog;
137
- //# sourceMappingURL=InterProScanDialog.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"InterProScanDialog.js","sourceRoot":"","sources":["../../../src/components/dialogs/InterProScanDialog.tsx"],"names":[],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- import React from 'react';
2
- import type { MsaViewModel } from '../../model.ts';
3
- declare const InterProScanFileDialog: ({ handleClose, model, }: {
4
- handleClose: () => void;
5
- model: MsaViewModel;
6
- }) => React.JSX.Element;
7
- export default InterProScanFileDialog;
@@ -1,64 +0,0 @@
1
- import React, { useState } from 'react';
2
- import { Dialog } from '@jbrowse/core/ui';
3
- import { getSession } from '@jbrowse/core/util';
4
- import { Button, DialogActions, DialogContent, FormControl, FormControlLabel, Radio, RadioGroup, TextField, Typography, } from '@mui/material';
5
- import { observer } from 'mobx-react';
6
- import { interProScanResponseToAnnotations } from 'msa-parsers';
7
- import { jsonfetch } from '../../fetchUtils.js';
8
- const InterProScanFileDialog = observer(function ({ handleClose, model, }) {
9
- const [file, setFile] = useState();
10
- const [choice, setChoice] = useState('file');
11
- const [interProURL, setInterProURL] = useState('');
12
- return (React.createElement(Dialog, { maxWidth: "xl", title: "Open InterProScan results", onClose: () => {
13
- handleClose();
14
- }, open: true },
15
- React.createElement(DialogContent, null,
16
- React.createElement("div", null,
17
- React.createElement(Typography, null, "Open a JSON file of InterProScan results that you run remotely on EBI servers or locally"),
18
- React.createElement("div", { style: { display: 'flex', margin: 30 } },
19
- React.createElement(FormControl, { component: "fieldset" },
20
- React.createElement(RadioGroup, { value: choice, onChange: event => {
21
- setChoice(event.target.value);
22
- } },
23
- React.createElement(FormControlLabel, { value: "url", control: React.createElement(Radio, null), label: "URL" }),
24
- React.createElement(FormControlLabel, { value: "file", control: React.createElement(Radio, null), label: "File" }))),
25
- choice === 'url' ? (React.createElement("div", null,
26
- React.createElement(Typography, null, "Open a InterProScan JSON file remote URL"),
27
- React.createElement(TextField, { label: "URL", value: interProURL, onChange: event => {
28
- setInterProURL(event.target.value);
29
- } }))) : null,
30
- choice === 'file' ? (React.createElement("div", { style: { paddingTop: 20 } },
31
- React.createElement(Typography, null, "Open a InterProScan JSON file file from your local drive"),
32
- React.createElement(Button, { variant: "outlined", component: "label" },
33
- "Choose File",
34
- React.createElement("input", { type: "file", hidden: true, onChange: ({ target }) => {
35
- const file = target.files?.[0];
36
- if (file) {
37
- setFile(file);
38
- }
39
- } })))) : null))),
40
- React.createElement(DialogActions, null,
41
- React.createElement(Button, { variant: "contained", color: "primary", onClick: () => {
42
- // eslint-disable-next-line @typescript-eslint/no-floating-promises
43
- ;
44
- (async () => {
45
- try {
46
- const ret = file
47
- ? JSON.parse(await file.text())
48
- : await jsonfetch(interProURL);
49
- model.setAnnotations(interProScanResponseToAnnotations(ret));
50
- getSession(model).notify('Loaded interproscan results', 'success');
51
- }
52
- catch (e) {
53
- console.error(e);
54
- getSession(model).notifyError(`${e}`, e);
55
- }
56
- finally {
57
- model.setStatus();
58
- }
59
- })();
60
- handleClose();
61
- } }, "Open results"))));
62
- });
63
- export default InterProScanFileDialog;
64
- //# sourceMappingURL=InterProScanFileDialog.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"InterProScanFileDialog.js","sourceRoot":"","sources":["../../../src/components/dialogs/InterProScanFileDialog.tsx"],"names":[],"mappings":"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"}
@@ -1,42 +0,0 @@
1
- import React from 'react';
2
- import { observer } from 'mobx-react';
3
- const pct = (n) => `${Math.round(n * 100)}%`;
4
- const ColumnStats = observer(function ({ model }) {
5
- const stats = model.mouseOverColumnStats;
6
- if (!stats) {
7
- return null;
8
- }
9
- const { col, total, conservation, propertyConservation, consensusLetter, consensusFraction, gapFraction, distribution, } = stats;
10
- const top = distribution.slice(0, 6);
11
- return (React.createElement("div", null,
12
- React.createElement("b", null,
13
- "Column ",
14
- col + 1),
15
- " (",
16
- total,
17
- " seqs)",
18
- React.createElement("br", null),
19
- "Consensus: ",
20
- consensusLetter || '-',
21
- " (",
22
- pct(consensusFraction),
23
- ")",
24
- React.createElement("br", null),
25
- "Conservation: ",
26
- conservation.toFixed(2),
27
- propertyConservation === undefined ? null : (React.createElement(React.Fragment, null,
28
- React.createElement("br", null),
29
- "Property conservation: ",
30
- propertyConservation.toFixed(2))),
31
- React.createElement("br", null),
32
- "Gaps: ",
33
- pct(gapFraction),
34
- top.length > 0 ? (React.createElement(React.Fragment, null,
35
- React.createElement("br", null),
36
- top.map(([letter, count]) => (React.createElement("span", { key: letter, style: { marginRight: 8 } },
37
- letter,
38
- " ",
39
- pct(count / total)))))) : null));
40
- });
41
- export default ColumnStats;
42
- //# sourceMappingURL=ColumnStats.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ColumnStats.js","sourceRoot":"","sources":["../../../src/components/msa/ColumnStats.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAIrC,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAA;AAEpD,MAAM,WAAW,GAAG,QAAQ,CAAC,UAAU,EAAE,KAAK,EAA2B;IACvE,MAAM,KAAK,GAAG,KAAK,CAAC,oBAAoB,CAAA;IACxC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,IAAI,CAAA;IACb,CAAC;IACD,MAAM,EACJ,GAAG,EACH,KAAK,EACL,YAAY,EACZ,oBAAoB,EACpB,eAAe,EACf,iBAAiB,EACjB,WAAW,EACX,YAAY,GACb,GAAG,KAAK,CAAA;IACT,MAAM,GAAG,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACpC,OAAO,CACL;QACE;;YAAW,GAAG,GAAG,CAAC,CAAK;;QAAG,KAAK;;QAC/B,+BAAM;;QACM,eAAe,IAAI,GAAG;;QAAI,GAAG,CAAC,iBAAiB,CAAC;;QAC5D,+BAAM;;QACS,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;QACrC,oBAAoB,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAC3C;YACE,+BAAM;;YACkB,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC,CACtD,CACJ;QACD,+BAAM;;QACC,GAAG,CAAC,WAAW,CAAC;QACtB,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAChB;YACE,+BAAM;YACL,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAC5B,8BAAM,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE;gBACzC,MAAM;;gBAAG,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC,CACvB,CACR,CAAC,CACD,CACJ,CAAC,CAAC,CAAC,IAAI,CACJ,CACP,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,eAAe,WAAW,CAAA"}
@@ -1,13 +0,0 @@
1
- import type { MsaViewModel } from './model.ts';
2
- export declare function launchInterProScan({ algorithm, seq, programs, onJobId, onProgress, model, signal, }: {
3
- algorithm: string;
4
- seq: string;
5
- programs: string[];
6
- onProgress: (arg?: {
7
- msg: string;
8
- url?: string;
9
- }) => void;
10
- onJobId?: (arg: string) => void;
11
- model: MsaViewModel;
12
- signal?: AbortSignal;
13
- }): Promise<void>;
@@ -1,110 +0,0 @@
1
- import { getSession } from '@jbrowse/core/util';
2
- import { interProScanResponseToAnnotations } from 'msa-parsers';
3
- import { isAbortError, jsonfetch, textfetch, timeout } from './fetchUtils.js';
4
- const base = 'https://www.ebi.ac.uk/Tools/services/rest';
5
- async function runInterProScan({ seq, onProgress, onJobId, programs, model, signal, }) {
6
- const jobId = await textfetch(`${base}/iprscan5/run`, {
7
- method: 'POST',
8
- body: new URLSearchParams({
9
- email: 'colin.diesh@gmail.com',
10
- sequence: seq,
11
- programs: programs.join(','),
12
- }),
13
- signal,
14
- });
15
- onJobId?.(jobId);
16
- await wait({
17
- jobId,
18
- onProgress,
19
- signal,
20
- });
21
- await loadInterProScanResultsWithStatus({ jobId, model, onProgress, signal });
22
- }
23
- function loadInterProScanResults(jobId, signal) {
24
- return jsonfetch(`${base}/iprscan5/result/${jobId}/json`, { signal });
25
- }
26
- async function wait({ onProgress, jobId, signal, }) {
27
- const url = `${base}/iprscan5/status/${jobId}`;
28
- // EBI jobs run for minutes; cap polling so an unexpected/stuck status can't
29
- // spin forever (the abort signal is the normal early exit). ~10s per check.
30
- const maxChecks = 360;
31
- try {
32
- let finished = false;
33
- for (let check = 0; check < maxChecks && !finished; check++) {
34
- for (let i = 0; i < 10; i++) {
35
- await timeout(1000, signal);
36
- onProgress({ msg: `Checking status ${10 - i}`, url });
37
- }
38
- // status endpoint returns a bare status token; match exactly rather than
39
- // substring so an error page mentioning "FINISHED" can't be a false hit
40
- const status = (await textfetch(url, { signal })).trim();
41
- if (status === 'FINISHED') {
42
- finished = true;
43
- }
44
- else if (status === 'FAILURE' ||
45
- status === 'ERROR' ||
46
- status === 'NOT_FOUND') {
47
- throw new Error(`InterProScan job ${jobId} ended with status: ${status}`);
48
- }
49
- }
50
- if (!finished) {
51
- throw new Error(`InterProScan job ${jobId} did not finish after ${maxChecks} status checks`);
52
- }
53
- }
54
- finally {
55
- onProgress();
56
- }
57
- }
58
- export async function launchInterProScan({ algorithm, seq, programs, onJobId, onProgress, model, signal, }) {
59
- try {
60
- onProgress({ msg: `Launching ${algorithm} MSA` });
61
- if (algorithm === 'interproscan') {
62
- await runInterProScan({
63
- seq,
64
- onJobId,
65
- onProgress,
66
- programs,
67
- model,
68
- signal,
69
- });
70
- }
71
- else {
72
- throw new Error('unknown algorithm');
73
- }
74
- }
75
- catch (e) {
76
- if (isAbortError(e)) {
77
- getSession(model).notify('Cancelled InterProScan query', 'info');
78
- }
79
- else {
80
- throw e;
81
- }
82
- }
83
- finally {
84
- onProgress();
85
- }
86
- }
87
- async function loadInterProScanResultsWithStatus({ jobId, model, onProgress, signal, }) {
88
- try {
89
- onProgress({
90
- msg: `Downloading results of ${jobId} (for larger sequences this can be slow, click status to download and upload in the manual tab)`,
91
- url: `https://www.ebi.ac.uk/Tools/services/rest/iprscan5/result/${jobId}/json`,
92
- });
93
- const ret = await loadInterProScanResults(jobId, signal);
94
- model.setAnnotations(interProScanResponseToAnnotations(ret));
95
- getSession(model).notify(`Loaded interproscan ${jobId} results`, 'success');
96
- }
97
- catch (e) {
98
- if (isAbortError(e)) {
99
- getSession(model).notify('Cancelled InterProScan query', 'info');
100
- }
101
- else {
102
- console.error(e);
103
- getSession(model).notifyError(`${e}`, e);
104
- }
105
- }
106
- finally {
107
- onProgress();
108
- }
109
- }
110
- //# sourceMappingURL=launchInterProScan.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"launchInterProScan.js","sourceRoot":"","sources":["../src/launchInterProScan.ts"],"names":[],"mappings":"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"}
@@ -1,10 +0,0 @@
1
- /**
2
- * Resolves the current theme and a memoized contrast-color scheme for a given
3
- * color scheme. Shared by the MSA and text-track canvas blocks.
4
- */
5
- export declare function useColorContrast(colorScheme: Record<string, string>): {
6
- theme: import("@mui/material").Theme;
7
- contrastScheme: {
8
- [k: string]: string;
9
- };
10
- };