jbrowse-plugin-msaview 2.2.2 → 2.2.4

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 (162) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/README.md +229 -0
  3. package/dist/AddHighlightModel/GenomeMouseoverHighlight.js +23 -18
  4. package/dist/AddHighlightModel/GenomeMouseoverHighlight.js.map +1 -1
  5. package/dist/AddHighlightModel/MsaToGenomeHighlight.js +23 -13
  6. package/dist/AddHighlightModel/MsaToGenomeHighlight.js.map +1 -1
  7. package/dist/AddHighlightModel/index.js +8 -1
  8. package/dist/AddHighlightModel/index.js.map +1 -1
  9. package/dist/AddHighlightModel/util.d.ts +2 -2
  10. package/dist/BgzipFastaMsaAdapter/configSchema.d.ts +2 -2
  11. package/dist/LaunchMsaView/components/EnsemblGeneTree/EnsemblGeneTree.js +5 -11
  12. package/dist/LaunchMsaView/components/EnsemblGeneTree/EnsemblGeneTree.js.map +1 -1
  13. package/dist/LaunchMsaView/components/EnsemblGeneTree/useGeneTree.js +5 -1
  14. package/dist/LaunchMsaView/components/EnsemblGeneTree/useGeneTree.js.map +1 -1
  15. package/dist/LaunchMsaView/components/LaunchMsaViewDialog.js +16 -16
  16. package/dist/LaunchMsaView/components/LaunchMsaViewDialog.js.map +1 -1
  17. package/dist/LaunchMsaView/components/ManualMSALoader/ManualMSALoader.js +38 -46
  18. package/dist/LaunchMsaView/components/ManualMSALoader/ManualMSALoader.js.map +1 -1
  19. package/dist/LaunchMsaView/components/ManualMSALoader/launchView.d.ts +4 -3
  20. package/dist/LaunchMsaView/components/ManualMSALoader/launchView.js +4 -3
  21. package/dist/LaunchMsaView/components/ManualMSALoader/launchView.js.map +1 -1
  22. package/dist/LaunchMsaView/components/NCBIBlastQuery/CachedBlastResults.d.ts +9 -0
  23. package/dist/LaunchMsaView/components/NCBIBlastQuery/CachedBlastResults.js +76 -0
  24. package/dist/LaunchMsaView/components/NCBIBlastQuery/CachedBlastResults.js.map +1 -0
  25. package/dist/LaunchMsaView/components/NCBIBlastQuery/NCBIBlastAutomaticPanel.js +35 -13
  26. package/dist/LaunchMsaView/components/NCBIBlastQuery/NCBIBlastAutomaticPanel.js.map +1 -1
  27. package/dist/LaunchMsaView/components/NCBIBlastQuery/NCBIBlastManualPanel.js +6 -12
  28. package/dist/LaunchMsaView/components/NCBIBlastQuery/NCBIBlastManualPanel.js.map +1 -1
  29. package/dist/LaunchMsaView/components/NCBIBlastQuery/blastLaunchView.d.ts +6 -0
  30. package/dist/LaunchMsaView/components/NCBIBlastQuery/blastLaunchView.js +15 -0
  31. package/dist/LaunchMsaView/components/NCBIBlastQuery/blastLaunchView.js.map +1 -1
  32. package/dist/LaunchMsaView/components/PreLoadedMSA/PreLoadedMSADataPanel.js +12 -34
  33. package/dist/LaunchMsaView/components/PreLoadedMSA/PreLoadedMSADataPanel.js.map +1 -1
  34. package/dist/LaunchMsaView/components/PreLoadedMSA/consts.d.ts +1 -0
  35. package/dist/LaunchMsaView/components/PreLoadedMSA/consts.js +1 -0
  36. package/dist/LaunchMsaView/components/PreLoadedMSA/consts.js.map +1 -1
  37. package/dist/LaunchMsaView/components/TabPanel.d.ts +2 -2
  38. package/dist/LaunchMsaView/components/TranscriptSelector.d.ts +2 -2
  39. package/dist/LaunchMsaView/components/TranscriptSelector.js +3 -6
  40. package/dist/LaunchMsaView/components/TranscriptSelector.js.map +1 -1
  41. package/dist/LaunchMsaView/components/useSWRFeatureSequence.js +6 -4
  42. package/dist/LaunchMsaView/components/useSWRFeatureSequence.js.map +1 -1
  43. package/dist/LaunchMsaView/components/useTranscriptSelection.d.ts +16 -0
  44. package/dist/LaunchMsaView/components/useTranscriptSelection.js +31 -0
  45. package/dist/LaunchMsaView/components/useTranscriptSelection.js.map +1 -0
  46. package/dist/LaunchMsaView/components/util.d.ts +3 -1
  47. package/dist/LaunchMsaView/components/util.js +12 -2
  48. package/dist/LaunchMsaView/components/util.js.map +1 -1
  49. package/dist/LaunchMsaView/util.d.ts +2 -0
  50. package/dist/LaunchMsaView/util.js +16 -4
  51. package/dist/LaunchMsaView/util.js.map +1 -1
  52. package/dist/LaunchMsaViewExtensionPoint/index.d.ts +2 -0
  53. package/dist/LaunchMsaViewExtensionPoint/index.js +31 -0
  54. package/dist/LaunchMsaViewExtensionPoint/index.js.map +1 -0
  55. package/dist/MsaViewPanel/components/ConnectStructureDialog.d.ts +7 -0
  56. package/dist/MsaViewPanel/components/ConnectStructureDialog.js +56 -0
  57. package/dist/MsaViewPanel/components/ConnectStructureDialog.js.map +1 -0
  58. package/dist/MsaViewPanel/components/MsaViewPanel.js +4 -2
  59. package/dist/MsaViewPanel/components/MsaViewPanel.js.map +1 -1
  60. package/dist/MsaViewPanel/doLaunchBlast.d.ts +1 -0
  61. package/dist/MsaViewPanel/doLaunchBlast.js +65 -19
  62. package/dist/MsaViewPanel/doLaunchBlast.js.map +1 -1
  63. package/dist/MsaViewPanel/genomeToMSA.d.ts +6 -0
  64. package/dist/MsaViewPanel/genomeToMSA.js +38 -8
  65. package/dist/MsaViewPanel/genomeToMSA.js.map +1 -1
  66. package/dist/MsaViewPanel/genomeToMSA.test.d.ts +1 -0
  67. package/dist/MsaViewPanel/genomeToMSA.test.js +244 -0
  68. package/dist/MsaViewPanel/genomeToMSA.test.js.map +1 -0
  69. package/dist/MsaViewPanel/model.d.ts +727 -226
  70. package/dist/MsaViewPanel/model.js +496 -52
  71. package/dist/MsaViewPanel/model.js.map +1 -1
  72. package/dist/MsaViewPanel/msaCoordToGenomeCoord.d.ts +10 -2
  73. package/dist/MsaViewPanel/msaCoordToGenomeCoord.js +26 -27
  74. package/dist/MsaViewPanel/msaCoordToGenomeCoord.js.map +1 -1
  75. package/dist/MsaViewPanel/msaCoordToGenomeCoord.test.d.ts +1 -0
  76. package/dist/MsaViewPanel/msaCoordToGenomeCoord.test.js +240 -0
  77. package/dist/MsaViewPanel/msaCoordToGenomeCoord.test.js.map +1 -0
  78. package/dist/MsaViewPanel/msaDataStore.d.ts +14 -0
  79. package/dist/MsaViewPanel/msaDataStore.js +197 -0
  80. package/dist/MsaViewPanel/msaDataStore.js.map +1 -0
  81. package/dist/MsaViewPanel/pairwiseAlignment.d.ts +27 -0
  82. package/dist/MsaViewPanel/pairwiseAlignment.js +776 -0
  83. package/dist/MsaViewPanel/pairwiseAlignment.js.map +1 -0
  84. package/dist/MsaViewPanel/pairwiseAlignment.test.d.ts +1 -0
  85. package/dist/MsaViewPanel/pairwiseAlignment.test.js +112 -0
  86. package/dist/MsaViewPanel/pairwiseAlignment.test.js.map +1 -0
  87. package/dist/MsaViewPanel/structureConnection.d.ts +27 -0
  88. package/dist/MsaViewPanel/structureConnection.js +46 -0
  89. package/dist/MsaViewPanel/structureConnection.js.map +1 -0
  90. package/dist/MsaViewPanel/structureConnection.test.d.ts +1 -0
  91. package/dist/MsaViewPanel/structureConnection.test.js +122 -0
  92. package/dist/MsaViewPanel/structureConnection.test.js.map +1 -0
  93. package/dist/MsaViewPanel/types.d.ts +13 -0
  94. package/dist/MsaViewPanel/types.js +2 -0
  95. package/dist/MsaViewPanel/types.js.map +1 -0
  96. package/dist/MsaViewPanel/util.d.ts +7 -0
  97. package/dist/MsaViewPanel/util.js +10 -0
  98. package/dist/MsaViewPanel/util.js.map +1 -1
  99. package/dist/index.d.ts +5 -5
  100. package/dist/index.js +3 -1
  101. package/dist/index.js.map +1 -1
  102. package/dist/jbrowse-plugin-msaview.umd.production.min.js +39 -90
  103. package/dist/jbrowse-plugin-msaview.umd.production.min.js.map +4 -4
  104. package/dist/utils/blastCache.d.ts +34 -0
  105. package/dist/utils/blastCache.js +58 -0
  106. package/dist/utils/blastCache.js.map +1 -0
  107. package/dist/utils/fetch.d.ts +1 -1
  108. package/dist/utils/fetch.js +1 -1
  109. package/dist/utils/fetch.js.map +1 -1
  110. package/dist/utils/ncbiBlast.d.ts +1 -5
  111. package/dist/utils/taxonomyNames.d.ts +5 -0
  112. package/dist/utils/taxonomyNames.js +79 -0
  113. package/dist/utils/taxonomyNames.js.map +1 -0
  114. package/dist/utils/types.d.ts +8 -5
  115. package/package.json +50 -54
  116. package/src/AddHighlightModel/GenomeMouseoverHighlight.tsx +37 -21
  117. package/src/AddHighlightModel/MsaToGenomeHighlight.tsx +38 -17
  118. package/src/AddHighlightModel/index.tsx +9 -4
  119. package/src/LaunchMsaView/components/EnsemblGeneTree/EnsemblGeneTree.tsx +13 -13
  120. package/src/LaunchMsaView/components/EnsemblGeneTree/useGeneTree.ts +6 -0
  121. package/src/LaunchMsaView/components/LaunchMsaViewDialog.tsx +30 -23
  122. package/src/LaunchMsaView/components/ManualMSALoader/ManualMSALoader.tsx +64 -51
  123. package/src/LaunchMsaView/components/ManualMSALoader/launchView.ts +9 -6
  124. package/src/LaunchMsaView/components/NCBIBlastQuery/CachedBlastResults.tsx +146 -0
  125. package/src/LaunchMsaView/components/NCBIBlastQuery/NCBIBlastAutomaticPanel.tsx +53 -22
  126. package/src/LaunchMsaView/components/NCBIBlastQuery/NCBIBlastManualPanel.tsx +8 -13
  127. package/src/LaunchMsaView/components/NCBIBlastQuery/blastLaunchView.ts +25 -0
  128. package/src/LaunchMsaView/components/PreLoadedMSA/PreLoadedMSADataPanel.tsx +27 -47
  129. package/src/LaunchMsaView/components/PreLoadedMSA/consts.ts +1 -0
  130. package/src/LaunchMsaView/components/TabPanel.tsx +2 -2
  131. package/src/LaunchMsaView/components/TranscriptSelector.tsx +13 -20
  132. package/src/LaunchMsaView/components/useSWRFeatureSequence.ts +5 -5
  133. package/src/LaunchMsaView/components/useTranscriptSelection.ts +48 -0
  134. package/src/LaunchMsaView/components/util.ts +17 -2
  135. package/src/LaunchMsaView/index.ts +1 -1
  136. package/src/LaunchMsaView/util.ts +25 -6
  137. package/src/LaunchMsaViewExtensionPoint/index.ts +74 -0
  138. package/src/MsaViewPanel/components/ConnectStructureDialog.tsx +156 -0
  139. package/src/MsaViewPanel/components/MsaViewPanel.tsx +6 -1
  140. package/src/MsaViewPanel/doLaunchBlast.ts +83 -23
  141. package/src/MsaViewPanel/genomeToMSA.test.ts +281 -0
  142. package/src/MsaViewPanel/genomeToMSA.ts +43 -10
  143. package/src/MsaViewPanel/model.ts +617 -58
  144. package/src/MsaViewPanel/msaCoordToGenomeCoord.test.ts +256 -0
  145. package/src/MsaViewPanel/msaCoordToGenomeCoord.ts +42 -30
  146. package/src/MsaViewPanel/msaDataStore.ts +236 -0
  147. package/src/MsaViewPanel/pairwiseAlignment.test.ts +140 -0
  148. package/src/MsaViewPanel/pairwiseAlignment.ts +818 -0
  149. package/src/MsaViewPanel/structureConnection.test.ts +143 -0
  150. package/src/MsaViewPanel/structureConnection.ts +72 -0
  151. package/src/MsaViewPanel/types.ts +14 -0
  152. package/src/MsaViewPanel/util.ts +11 -0
  153. package/src/index.ts +3 -1
  154. package/src/utils/blastCache.ts +114 -0
  155. package/src/utils/fetch.ts +1 -1
  156. package/src/utils/taxonomyNames.ts +111 -0
  157. package/src/utils/types.ts +9 -1
  158. package/dist/LaunchMsaView/components/PreLoadedMSA/findValidTranscriptId.d.ts +0 -5
  159. package/dist/LaunchMsaView/components/PreLoadedMSA/findValidTranscriptId.js +0 -16
  160. package/dist/LaunchMsaView/components/PreLoadedMSA/findValidTranscriptId.js.map +0 -1
  161. package/dist/out.js +0 -55367
  162. package/src/LaunchMsaView/components/PreLoadedMSA/findValidTranscriptId.ts +0 -25
package/CHANGELOG.md CHANGED
@@ -46,7 +46,7 @@
46
46
 
47
47
  # v1.0.7
48
48
 
49
- - Move npm run build script to prepare script in package.jsom
49
+ - Move yarn build script to prepare script in package.jsom
50
50
 
51
51
  # v1.0.6
52
52
 
package/README.md CHANGED
@@ -38,3 +38,232 @@ https://jbrowse.org/code/jb2/main/index.html?config=https://unpkg.com/jbrowse-pl
38
38
  alignments embedded in a single file)
39
39
  - Clustal files (e.g. .aln file, uses clustal-js parser)
40
40
  - Newick (tree can be loaded separately as a .nh file)
41
+
42
+ ## Data persistence
43
+
44
+ MSA datasets loaded from inline data (pasted text, local file uploads) are
45
+ automatically stored in the browser's IndexedDB to enable persistence across
46
+ page refreshes. This works around a limitation in react-msaview that strips
47
+ large data from session snapshots.
48
+
49
+ ### How it works
50
+
51
+ 1. When MSA data is loaded from inline sources (not URL-based files), it is
52
+ automatically stored in IndexedDB
53
+ 2. A reference ID (`dataStoreId`) is saved in the session snapshot instead of
54
+ the raw data
55
+ 3. On page reload, the plugin detects the `dataStoreId` and retrieves the data
56
+ from IndexedDB
57
+ 4. Old IndexedDB entries are automatically cleaned up after 7 days
58
+
59
+ Note: URL-based files (loaded via file selector with a URL) don't need IndexedDB
60
+ storage as they can be reloaded directly from the URL.
61
+
62
+ ### Storage details
63
+
64
+ - Database name: `jbrowse-msaview-data`
65
+ - Stored data includes: MSA alignment, tree, and tree metadata
66
+ - Each entry is timestamped for cleanup purposes
67
+
68
+ This mechanism is transparent to users and requires no configuration.
69
+
70
+ ## LaunchView-MsaView extension point
71
+
72
+ This plugin registers a `LaunchView-MsaView` extension point that allows
73
+ programmatic launching of an MsaView. This can be used via the JBrowse 2 session
74
+ spec URL parameters (see https://jbrowse.org/jb2/docs/urlparams/#session-spec).
75
+
76
+ ### Parameters
77
+
78
+ | Parameter | Required | Description |
79
+ | ------------------ | --------------------------- | ----------------------------------------------- |
80
+ | `data` | One of data/msaFileLocation | `{ msa: string, tree?: string }` |
81
+ | `msaFileLocation` | One of data/msaFileLocation | `{ uri: string }` for MSA file |
82
+ | `treeFileLocation` | No | `{ uri: string }` for tree file |
83
+ | `connectedViewId` | No | ID of connected LinearGenomeView |
84
+ | `connectedFeature` | No | Feature for cross-linking |
85
+ | `displayName` | No | Custom view display name |
86
+ | `colorSchemeName` | No | Color scheme (e.g., 'percent_identity_dynamic') |
87
+ | `colWidth` | No | Column width in pixels |
88
+ | `rowHeight` | No | Row height in pixels |
89
+ | `treeAreaWidth` | No | Tree area width |
90
+ | `treeWidth` | No | Tree width |
91
+ | `drawNodeBubbles` | No | Show node bubbles on tree |
92
+ | `labelsAlignRight` | No | Align labels to the right |
93
+ | `showBranchLen` | No | Show branch lengths |
94
+ | `querySeqName` | No | Name for query sequence |
95
+
96
+ ### URL example
97
+
98
+ ```
99
+ https://jbrowse.org/code/jb2/main/?config=config.json&session=spec-{"views":[{"type":"MsaView","msaFileLocation":{"uri":"https://example.com/alignment.fa"}}]}
100
+ ```
101
+
102
+ ### Programmatic usage
103
+
104
+ ```typescript
105
+ pluginManager.evaluateExtensionPoint('LaunchView-MsaView', {
106
+ session,
107
+ data: { msa: clustalOutput, tree: newickTree },
108
+ displayName: 'My MSA',
109
+ colorSchemeName: 'percent_identity_dynamic',
110
+ })
111
+ ```
112
+
113
+ ## Inter-plugin communication
114
+
115
+ This plugin supports bidirectional communication with both the Linear Genome
116
+ View and jbrowse-plugin-protein3d for synchronized highlighting and navigation.
117
+
118
+ ### Communication with Linear Genome View
119
+
120
+ The MSA view can be connected to a Linear Genome View to enable cross-linking
121
+ between MSA columns and genome coordinates.
122
+
123
+ #### Connection mechanism
124
+
125
+ When launching an MSA view from a gene feature (via right-click context menu),
126
+ the plugin stores:
127
+
128
+ - `connectedViewId`: The ID of the Linear Genome View
129
+ - `connectedFeature`: The gene/transcript feature for coordinate mapping
130
+
131
+ #### Coordinate mapping
132
+
133
+ The plugin uses the `transcriptToMsaMap` (generated by g2p_mapper) to convert
134
+ between MSA positions and genome coordinates:
135
+
136
+ 1. MSA column (gapped) → ungapped position
137
+ 2. Ungapped position → protein position
138
+ 3. Protein position → genome coordinate (via p2g mapping)
139
+
140
+ Key files:
141
+
142
+ - `src/MsaViewPanel/msaCoordToGenomeCoord.ts` - MSA to genome conversion
143
+ - `src/MsaViewPanel/genomeToMSA.ts` - Genome to MSA conversion
144
+
145
+ #### Click navigation
146
+
147
+ Clicking on an MSA column navigates the connected Linear Genome View to the
148
+ corresponding genome position. The `handleMsaClick()` action in
149
+ `src/MsaViewPanel/model.ts:364-382` handles this.
150
+
151
+ #### Bidirectional highlighting
152
+
153
+ - **MSA → Genome**: When hovering over MSA columns, the corresponding genome
154
+ region is highlighted in the Linear Genome View via the
155
+ `LinearGenomeView-TracksContainerComponent` extension point
156
+ (`src/AddHighlightModel/MsaToGenomeHighlight.tsx`)
157
+
158
+ - **Genome → MSA**: When hovering over the genome view, the corresponding MSA
159
+ column is highlighted (`src/AddHighlightModel/GenomeMouseoverHighlight.tsx`)
160
+
161
+ ### Communication with jbrowse-plugin-protein3d
162
+
163
+ The MSA view can connect to protein structures displayed in
164
+ jbrowse-plugin-protein3d for synchronized highlighting between sequence
165
+ alignment and 3D structure.
166
+
167
+ #### Auto-connection
168
+
169
+ The plugin automatically discovers and connects to compatible ProteinViews based
170
+ on:
171
+
172
+ 1. Matching `connectedViewId` (both views connected to the same genome view)
173
+ 2. Matching `uniprotId` between MSA row and protein structure
174
+
175
+ This logic is in `src/MsaViewPanel/model.ts:625-685`.
176
+
177
+ #### Manual connection
178
+
179
+ Users can manually connect to protein structures via the menu: **Menu → "Connect
180
+ to protein structure..."**
181
+
182
+ The `ConnectStructureDialog`
183
+ (`src/MsaViewPanel/components/ConnectStructureDialog.tsx`) allows selecting:
184
+
185
+ - Which ProteinView to connect to
186
+ - Which structure (if multiple)
187
+ - Which MSA row to align with the structure sequence
188
+
189
+ #### Pairwise alignment
190
+
191
+ When connecting to a structure, the plugin performs a Needleman-Wunsch pairwise
192
+ alignment between the MSA row sequence and the structure's sequence to create
193
+ coordinate mappings. This handles cases where sequences may differ slightly.
194
+
195
+ Key file: `src/MsaViewPanel/pairwiseAlignment.ts`
196
+
197
+ #### Connection data structure
198
+
199
+ Each structure connection stores:
200
+
201
+ ```typescript
202
+ interface StructureConnection {
203
+ proteinViewId: string
204
+ structureIdx: number
205
+ msaRowName: string
206
+ msaToStructure: Record<number, number> // MSA ungapped → structure position
207
+ structureToMsa: Record<number, number> // structure position → MSA ungapped
208
+ }
209
+ ```
210
+
211
+ #### Bidirectional highlighting
212
+
213
+ - **MSA → Structure**: When hovering over MSA columns, the corresponding residue
214
+ is highlighted in the 3D structure via `structure.highlightFromExternal()`
215
+
216
+ - **Structure → MSA**: When hovering over residues in the 3D structure, the
217
+ corresponding MSA column is highlighted. This works via two mechanisms:
218
+ 1. Direct mapping via `structureHoverCol` getter (requires explicit
219
+ connection)
220
+ 2. Indirect via genome coordinates: the MSA view observes protein3d's
221
+ `hoverGenomeHighlights` and maps back to MSA columns using `g2p` mapping.
222
+ This works automatically when both views share the same `connectedViewId`.
223
+
224
+ ### Three-way synchronization
225
+
226
+ When all three views are connected (Linear Genome View, MSA View, and Protein
227
+ View), hovering over any one view will highlight the corresponding positions in
228
+ the other two views, creating a fully synchronized visualization experience.
229
+
230
+ ```
231
+ ┌─────────────────────┐
232
+ │ Linear Genome View │◄────────────────────────────┐
233
+ │ (genome coords) │ │
234
+ └─────────┬───────────┘ │
235
+ │ │
236
+ │ connectedViewId + connectedFeature │ hoverGenomeHighlights
237
+ │ (uses p2g/g2p mapping) │ (genome coords)
238
+ ▼ │
239
+ ┌─────────────────────┐ ┌─────────┴───────────┐
240
+ │ MSA View │◄──────────────────│ Protein View │
241
+ │ (aligned seqs) │ observes genome │ (3D structure) │
242
+ └─────────┬───────────┘ highlights └───────────────────────┘
243
+ │ ▲
244
+ │ pairwise alignment mapping │
245
+ │ (msaToStructure/structureToMsa) │
246
+ └─────────────────────────────────────────┘
247
+ ```
248
+
249
+ The MSA view can receive highlights from protein3d via two paths:
250
+
251
+ 1. **Direct**: MSA observes `structure.hoverPosition` (requires explicit
252
+ connection with matching `uniprotId`)
253
+ 2. **Indirect**: MSA observes `structure.hoverGenomeHighlights` and maps genome
254
+ coords back to MSA columns (works when both share `connectedViewId`)
255
+
256
+ ### Launch mechanisms
257
+
258
+ The MSA view can be launched from the Linear Genome View via right-click context
259
+ menu on gene/mRNA/transcript features. This provides several data source
260
+ options:
261
+
262
+ 1. **NCBI BLAST Query**: Submit protein sequence to NCBI BLAST and display
263
+ results
264
+ 2. **Pre-loaded MSA Datasets**: Use pre-calculated alignments from configuration
265
+ 3. **Ensembl Gene Tree**: Fetch orthologous sequences from Ensembl
266
+ 4. **Manual MSA Loader**: Load MSA/tree files directly
267
+
268
+ Each launch method automatically sets up the genome view connection for
269
+ coordinate mapping and highlighting.
@@ -3,26 +3,31 @@ import { getSession } from '@jbrowse/core/util';
3
3
  import { observer } from 'mobx-react';
4
4
  import { useStyles } from './util';
5
5
  const GenomeMouseoverHighlight = observer(function ({ model, }) {
6
- const { hovered } = getSession(model);
7
- return hovered &&
8
- typeof hovered === 'object' &&
9
- 'hoverPosition' in hovered ? (React.createElement(GenomeMouseoverHighlightPostNullCheck, { model: model })) : null;
6
+ const session = getSession(model);
7
+ const { hovered, views } = session;
8
+ // Early return if no MSA view exists
9
+ const hasMsaView = views.some(s => s.type === 'MsaView');
10
+ if (!hasMsaView) {
11
+ return null;
12
+ }
13
+ // Early return if no hover position
14
+ if (!hovered ||
15
+ typeof hovered !== 'object' ||
16
+ !('hoverPosition' in hovered)) {
17
+ return null;
18
+ }
19
+ return React.createElement(GenomeMouseoverHighlightRenderer, { model: model, hovered: hovered });
10
20
  });
11
- const GenomeMouseoverHighlightPostNullCheck = observer(function ({ model, }) {
21
+ const GenomeMouseoverHighlightRenderer = observer(function ({ model, hovered, }) {
12
22
  const { classes } = useStyles();
13
- const session = getSession(model);
14
- if (session.views.some(s => s.type === 'MsaView')) {
15
- const { hovered } = session;
16
- const { offsetPx } = model;
17
- // @ts-expect-error
18
- const { coord, refName } = hovered.hoverPosition;
19
- const s = model.bpToPx({ refName, coord: coord - 1 });
20
- const e = model.bpToPx({ refName, coord: coord });
21
- if (s && e) {
22
- const width = Math.max(Math.abs(e.offsetPx - s.offsetPx), 4);
23
- const left = Math.min(s.offsetPx, e.offsetPx) - offsetPx;
24
- return React.createElement("div", { className: classes.highlight, style: { left, width } });
25
- }
23
+ const { offsetPx } = model;
24
+ const { coord, refName } = hovered.hoverPosition;
25
+ const s = model.bpToPx({ refName, coord: coord - 1 });
26
+ const e = model.bpToPx({ refName, coord: coord });
27
+ if (s && e) {
28
+ const width = Math.max(Math.abs(e.offsetPx - s.offsetPx), 4);
29
+ const left = Math.min(s.offsetPx, e.offsetPx) - offsetPx;
30
+ return React.createElement("div", { className: classes.highlight, style: { left, width } });
26
31
  }
27
32
  return null;
28
33
  });
@@ -1 +1 @@
1
- {"version":3,"file":"GenomeMouseoverHighlight.js","sourceRoot":"","sources":["../../src/AddHighlightModel/GenomeMouseoverHighlight.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAErC,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAIlC,MAAM,wBAAwB,GAAG,QAAQ,CAAC,UAAU,EAClD,KAAK,GAGN;IACC,MAAM,EAAE,OAAO,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC,CAAA;IACrC,OAAO,OAAO;QACZ,OAAO,OAAO,KAAK,QAAQ;QAC3B,eAAe,IAAI,OAAO,CAAC,CAAC,CAAC,CAC7B,oBAAC,qCAAqC,IAAC,KAAK,EAAE,KAAK,GAAI,CACxD,CAAC,CAAC,CAAC,IAAI,CAAA;AACV,CAAC,CAAC,CAAA;AAEF,MAAM,qCAAqC,GAAG,QAAQ,CAAC,UAAU,EAC/D,KAAK,GAGN;IACC,MAAM,EAAE,OAAO,EAAE,GAAG,SAAS,EAAE,CAAA;IAC/B,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,CAAA;IACjC,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,EAAE,CAAC;QAClD,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAA;QAC3B,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAA;QAC1B,mBAAmB;QACnB,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,aAAa,CAAA;QAEhD,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,CAAA;QACrD,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;QACjD,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACX,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAA;YAC5D,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAA;YACxD,OAAO,6BAAK,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAAI,CAAA;QACtE,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC,CAAC,CAAA;AAEF,eAAe,wBAAwB,CAAA"}
1
+ {"version":3,"file":"GenomeMouseoverHighlight.js","sourceRoot":"","sources":["../../src/AddHighlightModel/GenomeMouseoverHighlight.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAErC,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAIlC,MAAM,wBAAwB,GAAG,QAAQ,CAAC,UAAU,EAClD,KAAK,GAGN;IACC,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,CAAA;IACjC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,OAAO,CAAA;IAElC,qCAAqC;IACrC,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAA;IACxD,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,oCAAoC;IACpC,IACE,CAAC,OAAO;QACR,OAAO,OAAO,KAAK,QAAQ;QAC3B,CAAC,CAAC,eAAe,IAAI,OAAO,CAAC,EAC7B,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,OAAO,oBAAC,gCAAgC,IAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,GAAI,CAAA;AAC7E,CAAC,CAAC,CAAA;AAEF,MAAM,gCAAgC,GAAG,QAAQ,CAAC,UAAU,EAC1D,KAAK,EACL,OAAO,GAKR;IACC,MAAM,EAAE,OAAO,EAAE,GAAG,SAAS,EAAE,CAAA;IAC/B,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAA;IAC1B,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,aAGlC,CAAA;IAED,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,CAAA;IACrD,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;IAEjD,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACX,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAA;QAC5D,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAA;QACxD,OAAO,6BAAK,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAAI,CAAA;IACtE,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC,CAAC,CAAA;AAEF,eAAe,wBAAwB,CAAA"}
@@ -2,27 +2,37 @@ import React from 'react';
2
2
  import { getSession } from '@jbrowse/core/util';
3
3
  import { observer } from 'mobx-react';
4
4
  import { useStyles } from './util';
5
- function getCanonicalName(assembly, s) {
6
- return assembly.getCanonicalRefName(s) ?? s;
7
- }
5
+ // Outer component: only re-renders when MSA view or highlights change
8
6
  const MsaToGenomeHighlight = observer(function MsaToGenomeHighlight2({ model, }) {
7
+ const { views } = getSession(model);
8
+ const msaView = views.find(f => f.type === 'MsaView');
9
+ const highlights = msaView?.connectedHighlights;
10
+ // Early return if no highlights - avoid all other work
11
+ if (!highlights || highlights.length === 0) {
12
+ return null;
13
+ }
14
+ return React.createElement(MsaToGenomeHighlightRenderer, { model: model, highlights: highlights });
15
+ });
16
+ // Inner component: handles the scroll-dependent rendering
17
+ const MsaToGenomeHighlightRenderer = observer(function ({ model, highlights, }) {
9
18
  const { classes } = useStyles();
10
- const { assemblyManager, views } = getSession(model);
11
- const p = views.find(f => f.type === 'MsaView');
19
+ const { assemblyManager } = getSession(model);
12
20
  const assembly = assemblyManager.get(model.assemblyNames[0]);
13
- return assembly ? (React.createElement(React.Fragment, null, p?.connectedHighlights.map((r, idx) => {
14
- const refName = getCanonicalName(assembly, r.refName);
21
+ const { offsetPx } = model;
22
+ if (!assembly) {
23
+ return null;
24
+ }
25
+ return (React.createElement(React.Fragment, null, highlights.map((r, idx) => {
26
+ const refName = assembly.getCanonicalRefName(r.refName) ?? r.refName;
15
27
  const s = model.bpToPx({ refName, coord: r.start });
16
28
  const e = model.bpToPx({ refName, coord: r.end });
17
29
  if (s && e) {
18
30
  const width = Math.max(Math.abs(e.offsetPx - s.offsetPx), 4);
19
- const left = Math.min(s.offsetPx, e.offsetPx) - model.offsetPx;
20
- return (React.createElement("div", { key: `${JSON.stringify(r)}-${idx}`, className: classes.highlight, style: { left, width } }));
21
- }
22
- else {
23
- return null;
31
+ const left = Math.min(s.offsetPx, e.offsetPx) - offsetPx;
32
+ return (React.createElement("div", { key: `${r.refName}-${r.start}-${r.end}-${idx}`, className: classes.highlight, style: { left, width } }));
24
33
  }
25
- }))) : null;
34
+ return null;
35
+ })));
26
36
  });
27
37
  export default MsaToGenomeHighlight;
28
38
  //# sourceMappingURL=MsaToGenomeHighlight.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MsaToGenomeHighlight.js","sourceRoot":"","sources":["../../src/AddHighlightModel/MsaToGenomeHighlight.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAErC,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAOlC,SAAS,gBAAgB,CAAC,QAAkB,EAAE,CAAS;IACrD,OAAO,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;AAC7C,CAAC;AAED,MAAM,oBAAoB,GAAG,QAAQ,CAAC,SAAS,qBAAqB,CAAC,EACnE,KAAK,GAGN;IACC,MAAM,EAAE,OAAO,EAAE,GAAG,SAAS,EAAE,CAAA;IAC/B,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC,CAAA;IACpD,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAEjC,CAAA;IACb,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAE,CAAC,CAAA;IAC7D,OAAO,QAAQ,CAAC,CAAC,CAAC,CAChB,0CACG,CAAC,EAAE,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE;QACrC,MAAM,OAAO,GAAG,gBAAgB,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,CAAA;QACrD,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAA;QACnD,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAA;QACjD,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACX,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAA;YAC5D,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAA;YAC9D,OAAO,CACL,6BACE,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,EAClC,SAAS,EAAE,OAAO,CAAC,SAAS,EAC5B,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GACtB,CACH,CAAA;QACH,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,CAAA;QACb,CAAC;IACH,CAAC,CAAC,CACD,CACJ,CAAC,CAAC,CAAC,IAAI,CAAA;AACV,CAAC,CAAC,CAAA;AAEF,eAAe,oBAAoB,CAAA"}
1
+ {"version":3,"file":"MsaToGenomeHighlight.js","sourceRoot":"","sources":["../../src/AddHighlightModel/MsaToGenomeHighlight.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAErC,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAOlC,sEAAsE;AACtE,MAAM,oBAAoB,GAAG,QAAQ,CAAC,SAAS,qBAAqB,CAAC,EACnE,KAAK,GAGN;IACC,MAAM,EAAE,KAAK,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC,CAAA;IACnC,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAEvC,CAAA;IAEb,MAAM,UAAU,GAAG,OAAO,EAAE,mBAAmB,CAAA;IAE/C,uDAAuD;IACvD,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3C,OAAO,IAAI,CAAA;IACb,CAAC;IAED,OAAO,oBAAC,4BAA4B,IAAC,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,GAAI,CAAA;AAC/E,CAAC,CAAC,CAAA;AAEF,0DAA0D;AAC1D,MAAM,4BAA4B,GAAG,QAAQ,CAAC,UAAU,EACtD,KAAK,EACL,UAAU,GAIX;IACC,MAAM,EAAE,OAAO,EAAE,GAAG,SAAS,EAAE,CAAA;IAC/B,MAAM,EAAE,eAAe,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC,CAAA;IAC7C,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAE,CAAC,CAAA;IAC7D,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAA;IAE1B,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,IAAI,CAAA;IACb,CAAC;IAED,OAAO,CACL,0CACG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE;QACzB,MAAM,OAAO,GAAG,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAA;QACpE,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAA;QACnD,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAA;QACjD,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACX,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAA;YAC5D,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAA;YACxD,OAAO,CACL,6BACE,GAAG,EAAE,GAAG,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,EAC9C,SAAS,EAAE,OAAO,CAAC,SAAS,EAC5B,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GACtB,CACH,CAAA;QACH,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC,CAAC,CACD,CACJ,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,eAAe,oBAAoB,CAAA"}
@@ -1,9 +1,16 @@
1
1
  import React from 'react';
2
+ import { getSession } from '@jbrowse/core/util';
2
3
  import HighlightComponents from './HighlightComponents';
3
4
  export default function AddHighlightComponentsModelF(pluginManager) {
4
5
  pluginManager.addToExtensionPoint('LinearGenomeView-TracksContainerComponent',
5
6
  // @ts-expect-error
6
- (rest = [], { model }) => {
7
+ (rest, { model }) => {
8
+ // Quick check: don't add any components if no MSA view exists
9
+ const { views } = getSession(model);
10
+ const hasMsaView = views.some(v => v.type === 'MsaView');
11
+ if (!hasMsaView) {
12
+ return rest;
13
+ }
7
14
  return [
8
15
  ...rest,
9
16
  React.createElement(HighlightComponents, { key: "highlight_protein_viewer_msaview", model: model }),
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/AddHighlightModel/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,OAAO,mBAAmB,MAAM,uBAAuB,CAAA;AAIvD,MAAM,CAAC,OAAO,UAAU,4BAA4B,CAClD,aAA4B;IAE5B,aAAa,CAAC,mBAAmB,CAC/B,2CAA2C;IAC3C,mBAAmB;IACnB,CACE,OAA0B,EAAE,EAC5B,EAAE,KAAK,EAAoC,EAC3C,EAAE;QACF,OAAO;YACL,GAAG,IAAI;YACP,oBAAC,mBAAmB,IAClB,GAAG,EAAC,kCAAkC,EACtC,KAAK,EAAE,KAAK,GACZ;SACH,CAAA;IACH,CAAC,CACF,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/AddHighlightModel/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAE/C,OAAO,mBAAmB,MAAM,uBAAuB,CAAA;AAIvD,MAAM,CAAC,OAAO,UAAU,4BAA4B,CAClD,aAA4B;IAE5B,aAAa,CAAC,mBAAmB,CAC/B,2CAA2C;IAC3C,mBAAmB;IACnB,CAAC,IAAuB,EAAE,EAAE,KAAK,EAAoC,EAAE,EAAE;QACvE,8DAA8D;QAC9D,MAAM,EAAE,KAAK,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC,CAAA;QACnC,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAA;QACxD,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,IAAI,CAAA;QACb,CAAC;QAED,OAAO;YACL,GAAG,IAAI;YACP,oBAAC,mBAAmB,IAClB,GAAG,EAAC,kCAAkC,EACtC,KAAK,EAAE,KAAK,GACZ;SACH,CAAA;IACH,CAAC,CACF,CAAA;AACH,CAAC"}
@@ -4,6 +4,6 @@ export declare const useStyles: (params: void, muiStyleOverridesParams?: {
4
4
  } | undefined) => {
5
5
  classes: Record<"highlight", string>;
6
6
  theme: import("@mui/material").Theme;
7
- css: import("tss-react/types").Css;
8
- cx: import("tss-react/types").Cx;
7
+ css: import("tss-react").Css;
8
+ cx: import("tss-react").Cx;
9
9
  };
@@ -1,7 +1,7 @@
1
1
  import PluginManager from '@jbrowse/core/PluginManager';
2
- export default function configSchemaF(pluginManager: PluginManager): import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaType<{
2
+ export default function configSchemaF(pluginManager: PluginManager): import("@jbrowse/core/esm/configuration/configurationSchema").ConfigurationSchemaType<{
3
3
  msaRegex: {
4
4
  type: string;
5
5
  defaultValue: string;
6
6
  };
7
- }, import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaOptions<import("@jbrowse/core/configuration").AnyConfigurationSchemaType, undefined>>;
7
+ }, import("@jbrowse/core/esm/configuration/configurationSchema").ConfigurationSchemaOptions<import("@jbrowse/core/configuration").AnyConfigurationSchemaType, undefined>>;
@@ -6,9 +6,9 @@ import { observer } from 'mobx-react';
6
6
  import { makeStyles } from 'tss-react/mui';
7
7
  import { ensemblGeneTreeLaunchView } from './ensemblGeneTreeLaunchView';
8
8
  import { useGeneTree } from './useGeneTree';
9
- import { getGeneDisplayName, getId, getTranscriptFeatures } from '../../util';
9
+ import { getGeneDisplayName } from '../../util';
10
10
  import TranscriptSelector from '../TranscriptSelector';
11
- import { useFeatureSequence } from '../useFeatureSequence';
11
+ import { useTranscriptSelection } from '../useTranscriptSelection';
12
12
  const useStyles = makeStyles()({
13
13
  dialogContent: {
14
14
  width: '80em',
@@ -22,14 +22,8 @@ const EnsemblGeneTree = observer(function ({ model, feature, handleClose, }) {
22
22
  const view = getContainingView(model);
23
23
  const { classes } = useStyles();
24
24
  const [launchViewError, setLaunchViewError] = useState();
25
- const options = getTranscriptFeatures(feature);
26
- const [userSelection, setUserSelection] = useState(getId(options[0]));
27
- const { treeData, isTreeLoading, treeError } = useGeneTree(userSelection);
28
- const selectedTranscript = options.find(val => getId(val) === userSelection);
29
- const { proteinSequence, error: featureSequenceError } = useFeatureSequence({
30
- view,
31
- feature: selectedTranscript,
32
- });
25
+ const { options, selectedId, setSelectedId, selectedTranscript, proteinSequence, error: featureSequenceError, } = useTranscriptSelection({ feature, view });
26
+ const { treeData, isTreeLoading, treeError } = useGeneTree(selectedId);
33
27
  const loadingMessage = isTreeLoading
34
28
  ? 'Loading tree data from Ensembl GeneTree'
35
29
  : undefined;
@@ -46,7 +40,7 @@ const EnsemblGeneTree = observer(function ({ model, feature, handleClose, }) {
46
40
  "See ",
47
41
  treeData.geneTreeId,
48
42
  " at Ensembl"))) : null,
49
- React.createElement(TranscriptSelector, { feature: feature, options: options, selectedTranscriptId: userSelection, onTranscriptChange: setUserSelection, proteinSequence: proteinSequence })),
43
+ React.createElement(TranscriptSelector, { feature: feature, options: options, selectedTranscript: selectedTranscript, onTranscriptChange: setSelectedId, proteinSequence: proteinSequence })),
50
44
  React.createElement(DialogActions, null,
51
45
  React.createElement(Button, { color: "primary", variant: "contained", onClick: () => {
52
46
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"EnsemblGeneTree.js","sourceRoot":"","sources":["../../../../src/LaunchMsaView/components/EnsemblGeneTree/EnsemblGeneTree.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"EnsemblGeneTree.js","sourceRoot":"","sources":["../../../../src/LaunchMsaView/components/EnsemblGeneTree/EnsemblGeneTree.tsx"],"names":[],"mappings":"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"}
@@ -1,7 +1,11 @@
1
1
  import useSWR from 'swr';
2
2
  import { geneTreeFetcher } from './ensemblGeneTreeUtils';
3
3
  export function useGeneTree(geneId) {
4
- const { data, error, isLoading } = useSWR(() => (geneId ? ['geneTree', geneId] : null), ([, geneId]) => geneTreeFetcher(geneId));
4
+ const { data, error, isLoading } = useSWR(() => (geneId ? ['geneTree', geneId] : null), ([, geneId]) => geneTreeFetcher(geneId), {
5
+ revalidateOnFocus: false,
6
+ revalidateOnReconnect: false,
7
+ revalidateIfStale: false,
8
+ });
5
9
  return { treeData: data, isTreeLoading: isLoading, treeError: error };
6
10
  }
7
11
  //# sourceMappingURL=useGeneTree.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useGeneTree.js","sourceRoot":"","sources":["../../../../src/LaunchMsaView/components/EnsemblGeneTree/useGeneTree.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,KAAK,CAAA;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAExD,MAAM,UAAU,WAAW,CAAC,MAAc;IACxC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,MAAM,CACvC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAC5C,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,CACxC,CAAA;IAED,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,CAAA;AACvE,CAAC"}
1
+ {"version":3,"file":"useGeneTree.js","sourceRoot":"","sources":["../../../../src/LaunchMsaView/components/EnsemblGeneTree/useGeneTree.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,KAAK,CAAA;AAExB,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAExD,MAAM,UAAU,WAAW,CAAC,MAAc;IACxC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,MAAM,CACvC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAC5C,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,EACvC;QACE,iBAAiB,EAAE,KAAK;QACxB,qBAAqB,EAAE,KAAK;QAC5B,iBAAiB,EAAE,KAAK;KACzB,CACF,CAAA;IAED,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,CAAA;AACvE,CAAC"}
@@ -1,35 +1,35 @@
1
1
  import React, { useState } from 'react';
2
+ import { readConfObject } from '@jbrowse/core/configuration';
2
3
  import { Dialog } from '@jbrowse/core/ui';
4
+ import { getSession } from '@jbrowse/core/util';
3
5
  import { Tab, Tabs } from '@mui/material';
4
6
  import EnsemblGeneTree from './EnsemblGeneTree/EnsemblGeneTree';
5
7
  import ManualMSALoader from './ManualMSALoader/ManualMSALoader';
6
8
  import NCBIBlastPanel from './NCBIBlastQuery/NCBIBlastPanel';
7
9
  import PreLoadedMSA from './PreLoadedMSA/PreLoadedMSADataPanel';
8
10
  import TabPanel from './TabPanel';
9
- const TABS = {
10
- NCBI_BLAST: 0,
11
- PRELOADED_MSA: 1,
12
- ENSEMBL_GENETREE: 2,
13
- MANUAL_MSA: 3,
14
- };
15
11
  export default function LaunchMsaViewDialog({ handleClose, feature, model, }) {
16
- const [value, setValue] = useState(TABS.NCBI_BLAST);
12
+ const session = getSession(model);
13
+ const { jbrowse } = session;
14
+ const datasets = readConfObject(jbrowse, ['msa', 'datasets']);
15
+ const hasPreloadedDatasets = datasets && datasets.length > 0;
16
+ const [value, setValue] = useState('ncbi_blast');
17
17
  const handleChange = (_event, newValue) => {
18
18
  setValue(newValue);
19
19
  };
20
20
  return (React.createElement(Dialog, { maxWidth: "xl", title: "Launch MSA view", open: true, onClose: handleClose },
21
21
  React.createElement(Tabs, { value: value, onChange: handleChange },
22
- React.createElement(Tab, { label: "NCBI BLAST query", value: TABS.NCBI_BLAST }),
23
- React.createElement(Tab, { label: "Pre-loaded MSA datasets", value: TABS.PRELOADED_MSA }),
24
- React.createElement(Tab, { label: "Ensembl GeneTree", value: TABS.ENSEMBL_GENETREE }),
25
- React.createElement(Tab, { label: "Manually open MSA dataset", value: TABS.MANUAL_MSA })),
26
- React.createElement(TabPanel, { value: value, index: TABS.NCBI_BLAST },
22
+ React.createElement(Tab, { label: "NCBI BLAST query", value: "ncbi_blast" }),
23
+ hasPreloadedDatasets ? (React.createElement(Tab, { label: "Pre-loaded MSA datasets", value: "preloaded_msa" })) : null,
24
+ React.createElement(Tab, { label: "Ensembl GeneTree", value: "ensembl_genetree" }),
25
+ React.createElement(Tab, { label: "Manual upload", value: "manual_msa" })),
26
+ React.createElement(TabPanel, { value: value, index: "ncbi_blast" },
27
27
  React.createElement(NCBIBlastPanel, { handleClose: handleClose, feature: feature, model: model })),
28
- React.createElement(TabPanel, { value: value, index: TABS.PRELOADED_MSA },
29
- React.createElement(PreLoadedMSA, { model: model, feature: feature, handleClose: handleClose })),
30
- React.createElement(TabPanel, { value: value, index: TABS.ENSEMBL_GENETREE },
28
+ hasPreloadedDatasets ? (React.createElement(TabPanel, { value: value, index: "preloaded_msa" },
29
+ React.createElement(PreLoadedMSA, { model: model, feature: feature, handleClose: handleClose }))) : null,
30
+ React.createElement(TabPanel, { value: value, index: "ensembl_genetree" },
31
31
  React.createElement(EnsemblGeneTree, { model: model, feature: feature, handleClose: handleClose })),
32
- React.createElement(TabPanel, { value: value, index: TABS.MANUAL_MSA },
32
+ React.createElement(TabPanel, { value: value, index: "manual_msa" },
33
33
  React.createElement(ManualMSALoader, { model: model, feature: feature, handleClose: handleClose }))));
34
34
  }
35
35
  //# sourceMappingURL=LaunchMsaViewDialog.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LaunchMsaViewDialog.js","sourceRoot":"","sources":["../../../src/LaunchMsaView/components/LaunchMsaViewDialog.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAEvC,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAEzC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AAEzC,OAAO,eAAe,MAAM,mCAAmC,CAAA;AAC/D,OAAO,eAAe,MAAM,mCAAmC,CAAA;AAC/D,OAAO,cAAc,MAAM,iCAAiC,CAAA;AAC5D,OAAO,YAAY,MAAM,sCAAsC,CAAA;AAC/D,OAAO,QAAQ,MAAM,YAAY,CAAA;AAEjC,MAAM,IAAI,GAAG;IACX,UAAU,EAAE,CAAC;IACb,aAAa,EAAE,CAAC;IAChB,gBAAgB,EAAE,CAAC;IACnB,UAAU,EAAE,CAAC;CACd,CAAA;AAED,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,EAC1C,WAAW,EACX,OAAO,EACP,KAAK,GAKN;IACC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IAEnD,MAAM,YAAY,GAAG,CAAC,MAA4B,EAAE,QAAgB,EAAE,EAAE;QACtE,QAAQ,CAAC,QAAQ,CAAC,CAAA;IACpB,CAAC,CAAA;IAED,OAAO,CACL,oBAAC,MAAM,IAAC,QAAQ,EAAC,IAAI,EAAC,KAAK,EAAC,iBAAiB,EAAC,IAAI,QAAC,OAAO,EAAE,WAAW;QACrE,oBAAC,IAAI,IAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY;YACxC,oBAAC,GAAG,IAAC,KAAK,EAAC,kBAAkB,EAAC,KAAK,EAAE,IAAI,CAAC,UAAU,GAAI;YACxD,oBAAC,GAAG,IAAC,KAAK,EAAC,yBAAyB,EAAC,KAAK,EAAE,IAAI,CAAC,aAAa,GAAI;YAClE,oBAAC,GAAG,IAAC,KAAK,EAAC,kBAAkB,EAAC,KAAK,EAAE,IAAI,CAAC,gBAAgB,GAAI;YAC9D,oBAAC,GAAG,IAAC,KAAK,EAAC,2BAA2B,EAAC,KAAK,EAAE,IAAI,CAAC,UAAU,GAAI,CAC5D;QACP,oBAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU;YAC5C,oBAAC,cAAc,IACb,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,KAAK,GACZ,CACO;QACX,oBAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,aAAa;YAC/C,oBAAC,YAAY,IACX,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,WAAW,GACxB,CACO;QACX,oBAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,gBAAgB;YAClD,oBAAC,eAAe,IACd,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,WAAW,GACxB,CACO;QACX,oBAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU;YAC5C,oBAAC,eAAe,IACd,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,WAAW,GACxB,CACO,CACJ,CACV,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"LaunchMsaViewDialog.js","sourceRoot":"","sources":["../../../src/LaunchMsaView/components/LaunchMsaViewDialog.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAEvC,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAA+B,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAC5E,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AAEzC,OAAO,eAAe,MAAM,mCAAmC,CAAA;AAC/D,OAAO,eAAe,MAAM,mCAAmC,CAAA;AAC/D,OAAO,cAAc,MAAM,iCAAiC,CAAA;AAC5D,OAAO,YAAY,MAAM,sCAAsC,CAAA;AAC/D,OAAO,QAAQ,MAAM,YAAY,CAAA;AAIjC,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,EAC1C,WAAW,EACX,OAAO,EACP,KAAK,GAKN;IACC,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,CAAA;IACjC,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAA;IAC3B,MAAM,QAAQ,GAAG,cAAc,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,CAE/C,CAAA;IACb,MAAM,oBAAoB,GAAG,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAA;IAE5D,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAA;IAEhD,MAAM,YAAY,GAAG,CAAC,MAA4B,EAAE,QAAgB,EAAE,EAAE;QACtE,QAAQ,CAAC,QAAQ,CAAC,CAAA;IACpB,CAAC,CAAA;IAED,OAAO,CACL,oBAAC,MAAM,IAAC,QAAQ,EAAC,IAAI,EAAC,KAAK,EAAC,iBAAiB,EAAC,IAAI,QAAC,OAAO,EAAE,WAAW;QACrE,oBAAC,IAAI,IAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY;YACxC,oBAAC,GAAG,IAAC,KAAK,EAAC,kBAAkB,EAAC,KAAK,EAAC,YAAY,GAAG;YAClD,oBAAoB,CAAC,CAAC,CAAC,CACtB,oBAAC,GAAG,IAAC,KAAK,EAAC,yBAAyB,EAAC,KAAK,EAAC,eAAe,GAAG,CAC9D,CAAC,CAAC,CAAC,IAAI;YACR,oBAAC,GAAG,IAAC,KAAK,EAAC,kBAAkB,EAAC,KAAK,EAAC,kBAAkB,GAAG;YACzD,oBAAC,GAAG,IAAC,KAAK,EAAC,eAAe,EAAC,KAAK,EAAC,YAAY,GAAG,CAC3C;QACP,oBAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAC,YAAY;YACxC,oBAAC,cAAc,IACb,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,KAAK,GACZ,CACO;QACV,oBAAoB,CAAC,CAAC,CAAC,CACtB,oBAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAC,eAAe;YAC3C,oBAAC,YAAY,IACX,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,WAAW,GACxB,CACO,CACZ,CAAC,CAAC,CAAC,IAAI;QACR,oBAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAC,kBAAkB;YAC9C,oBAAC,eAAe,IACd,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,WAAW,GACxB,CACO;QACX,oBAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAC,YAAY;YACxC,oBAAC,eAAe,IACd,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,WAAW,GACxB,CACO,CACJ,CACV,CAAA;AACH,CAAC"}