jbrowse-plugin-msaview 2.2.3 → 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 +717 -226
  70. package/dist/MsaViewPanel/model.js +467 -39
  71. package/dist/MsaViewPanel/model.js.map +1 -1
  72. package/dist/MsaViewPanel/msaCoordToGenomeCoord.d.ts +7 -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 +590 -43
  144. package/src/MsaViewPanel/msaCoordToGenomeCoord.test.ts +256 -0
  145. package/src/MsaViewPanel/msaCoordToGenomeCoord.ts +43 -29
  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 -55381
  162. package/src/LaunchMsaView/components/PreLoadedMSA/findValidTranscriptId.ts +0 -25
@@ -1,12 +1,56 @@
1
+ import { lazy } from 'react';
1
2
  import { BaseViewModel } from '@jbrowse/core/pluggableElementTypes';
2
3
  import { getSession } from '@jbrowse/core/util';
4
+ import { addDisposer, cast, types } from '@jbrowse/mobx-state-tree';
3
5
  import { genomeToTranscriptSeqMapping } from 'g2p_mapper';
4
6
  import { autorun } from 'mobx';
5
- import { addDisposer, cast, types } from 'mobx-state-tree';
6
7
  import { MSAModelF } from 'react-msaview';
7
8
  import { doLaunchBlast } from './doLaunchBlast';
8
9
  import { genomeToMSA } from './genomeToMSA';
9
10
  import { msaCoordToGenomeCoord } from './msaCoordToGenomeCoord';
11
+ import { cleanupOldData, generateDataStoreId, retrieveMsaData, storeMsaData, } from './msaDataStore';
12
+ import { buildAlignmentMaps, runPairwiseAlignment } from './pairwiseAlignment';
13
+ import { gappedToUngappedPosition, mapToRecord, ungappedToGappedPosition, } from './structureConnection';
14
+ import { getUniprotIdFromAlphaFoldUrl } from './util';
15
+ const ConnectStructureDialog = lazy(() => import('./components/ConnectStructureDialog'));
16
+ /**
17
+ * Highlights residues in connected protein structures based on current MSA hover position
18
+ */
19
+ function highlightConnectedStructures(self) {
20
+ const { mouseCol, connectedProteinViews } = self;
21
+ if (connectedProteinViews.length === 0) {
22
+ return;
23
+ }
24
+ for (const conn of connectedProteinViews) {
25
+ const structure = conn.proteinView?.structures?.[conn.structureIdx];
26
+ if (!structure) {
27
+ continue;
28
+ }
29
+ // Clear highlight if mouse left MSA
30
+ if (mouseCol === undefined) {
31
+ structure.clearHighlightFromExternal?.();
32
+ continue;
33
+ }
34
+ const seq = self.getSequenceByRowName(conn.msaRowName);
35
+ if (!seq) {
36
+ continue;
37
+ }
38
+ // Convert gapped MSA column to ungapped position
39
+ const msaUngapped = gappedToUngappedPosition(seq, mouseCol);
40
+ if (msaUngapped === undefined) {
41
+ structure.clearHighlightFromExternal?.();
42
+ continue;
43
+ }
44
+ // Map to structure position and highlight
45
+ const structurePos = conn.msaToStructure[msaUngapped];
46
+ if (structurePos === undefined) {
47
+ structure.clearHighlightFromExternal?.();
48
+ }
49
+ else {
50
+ structure.highlightFromExternal?.(structurePos);
51
+ }
52
+ }
53
+ }
10
54
  /**
11
55
  * #stateModel MsaViewPlugin
12
56
  * extends
@@ -39,10 +83,43 @@ export default function stateModelFactory() {
39
83
  * #property
40
84
  */
41
85
  querySeqName: 'QUERY',
86
+ /**
87
+ * #property
88
+ * UniProt ID extracted from AlphaFold MSA URL
89
+ */
90
+ uniprotId: types.maybe(types.string),
42
91
  /**
43
92
  * #property
44
93
  */
45
94
  zoomToBaseLevel: false,
95
+ /**
96
+ * #property
97
+ * used for loading the MSA view via session snapshots, e.g.
98
+ * {
99
+ * "type": "MsaView",
100
+ * "init": {
101
+ * "msaUrl": "https://example.com/alignment.fa",
102
+ * "treeUrl": "https://example.com/tree.nh",
103
+ * "querySeqName": "ENST00000123_hg38"
104
+ * }
105
+ * }
106
+ */
107
+ init: types.frozen(),
108
+ /**
109
+ * #property
110
+ * connections to protein 3D structure views for synchronized highlighting
111
+ */
112
+ connectedStructures: types.array(types.frozen()),
113
+ /**
114
+ * #property
115
+ * Reference ID for MSA data stored in IndexedDB (for large datasets)
116
+ */
117
+ dataStoreId: types.maybe(types.string),
118
+ /**
119
+ * #property
120
+ * MAF region for coordinate mapping (used when launched from MAF viewer)
121
+ */
122
+ mafRegion: types.frozen(),
46
123
  }))
47
124
  .volatile(() => ({
48
125
  /**
@@ -57,25 +134,26 @@ export default function stateModelFactory() {
57
134
  * #volatile
58
135
  */
59
136
  error: undefined,
137
+ /**
138
+ * #volatile
139
+ * True when loading MSA data from IndexedDB
140
+ */
141
+ loadingStoredData: false,
60
142
  }))
61
143
  .views(self => ({
62
144
  /**
63
145
  * #method
146
+ * Get a row by name, returns [name, sequence] or undefined
64
147
  */
65
- ungappedCoordMap(rowName, position) {
66
- const row = self.rows.find(f => f[0] === rowName);
67
- const seq = row?.[1];
68
- if (seq && position < seq.length) {
69
- let i = 0;
70
- let j = 0;
71
- for (; j < position; j++, i++) {
72
- while (seq[i] === '-') {
73
- i++;
74
- }
75
- }
76
- return i;
77
- }
78
- return undefined;
148
+ getRowByName(rowName) {
149
+ return self.rows.find(r => r[0] === rowName);
150
+ },
151
+ /**
152
+ * #method
153
+ * Get the sequence for a row by name
154
+ */
155
+ getSequenceByRowName(rowName) {
156
+ return self.rows.find(r => r[0] === rowName)?.[1];
79
157
  },
80
158
  }))
81
159
  .views(self => ({
@@ -87,34 +165,81 @@ export default function stateModelFactory() {
87
165
  ? genomeToTranscriptSeqMapping(self.connectedFeature)
88
166
  : undefined;
89
167
  },
90
- }))
91
- .views(self => ({
92
168
  /**
93
169
  * #getter
94
170
  */
95
- get mouseCol2() {
96
- return genomeToMSA({ model: self });
171
+ get processing() {
172
+ return !!self.progress;
97
173
  },
98
174
  /**
99
175
  * #getter
100
176
  */
101
- get clickCol2() {
177
+ get connectedView() {
178
+ const { views } = getSession(self);
179
+ return views.find(f => f.id === self.connectedViewId);
180
+ },
181
+ /**
182
+ * #getter
183
+ * Get connected protein views with their full model references
184
+ */
185
+ get connectedProteinViews() {
186
+ const { views } = getSession(self);
187
+ return self.connectedStructures
188
+ .map(conn => {
189
+ const proteinView = views.find((v) => v.id === conn.proteinViewId);
190
+ return proteinView ? { ...conn, proteinView } : undefined;
191
+ })
192
+ .filter((c) => !!c);
193
+ },
194
+ }))
195
+ .views(self => ({
196
+ /**
197
+ * #getter
198
+ * Get the MSA column that corresponds to the currently hovered structure position
199
+ * Returns the first match from any connected structure
200
+ */
201
+ get structureHoverCol() {
202
+ for (const conn of self.connectedProteinViews) {
203
+ const structure = conn.proteinView?.structures?.[conn.structureIdx];
204
+ const structurePos = structure?.hoverPosition?.structureSeqPos;
205
+ if (structurePos !== undefined) {
206
+ const msaUngapped = conn.structureToMsa[structurePos];
207
+ if (msaUngapped !== undefined) {
208
+ const seq = self.getSequenceByRowName(conn.msaRowName);
209
+ if (seq) {
210
+ // Convert ungapped position to global column, then to visible column
211
+ const globalCol = ungappedToGappedPosition(seq, msaUngapped);
212
+ if (globalCol !== undefined) {
213
+ return self.globalColToVisibleCol(globalCol);
214
+ }
215
+ }
216
+ }
217
+ }
218
+ }
102
219
  return undefined;
103
220
  },
104
221
  }))
105
222
  .views(self => ({
106
223
  /**
107
224
  * #getter
225
+ * Returns a secondary highlight column from either:
226
+ * 1. Structure hover (from connected protein 3D view)
227
+ * 2. Genome hover (from connected linear genome view)
108
228
  */
109
- get processing() {
110
- return !!self.progress;
229
+ get mouseCol2() {
230
+ // Check structure hover first
231
+ const structureCol = self.structureHoverCol;
232
+ if (structureCol !== undefined) {
233
+ return structureCol;
234
+ }
235
+ // Fall back to genome hover
236
+ return genomeToMSA({ model: self });
111
237
  },
112
238
  /**
113
239
  * #getter
114
240
  */
115
- get connectedView() {
116
- const { views } = getSession(self);
117
- return views.find(f => f.id === self.connectedViewId);
241
+ get clickCol2() {
242
+ return undefined;
118
243
  },
119
244
  }))
120
245
  .actions(self => ({
@@ -166,6 +291,42 @@ export default function stateModelFactory() {
166
291
  setBlastParams(args) {
167
292
  self.blastParams = args;
168
293
  },
294
+ /**
295
+ * #action
296
+ */
297
+ setInit(arg) {
298
+ self.init = arg;
299
+ },
300
+ /**
301
+ * #action
302
+ */
303
+ setQuerySeqName(arg) {
304
+ self.querySeqName = arg;
305
+ },
306
+ /**
307
+ * #action
308
+ */
309
+ setUniprotId(arg) {
310
+ self.uniprotId = arg;
311
+ },
312
+ /**
313
+ * #action
314
+ */
315
+ setDataStoreId(arg) {
316
+ self.dataStoreId = arg;
317
+ },
318
+ /**
319
+ * #action
320
+ */
321
+ setMafRegion(arg) {
322
+ self.mafRegion = arg;
323
+ },
324
+ /**
325
+ * #action
326
+ */
327
+ setLoadingStoredData(arg) {
328
+ self.loadingStoredData = arg;
329
+ },
169
330
  /**
170
331
  * #action
171
332
  */
@@ -186,10 +347,63 @@ export default function stateModelFactory() {
186
347
  connectedView.centerAt(r2.start, r);
187
348
  }
188
349
  },
350
+ /**
351
+ * #action
352
+ * Connect to a protein structure for synchronized highlighting
353
+ */
354
+ connectToStructure(proteinViewId, structureIdx, msaRowName) {
355
+ const rowName = msaRowName ?? self.querySeqName;
356
+ const msaSequence = self.getSequenceByRowName(rowName);
357
+ if (!msaSequence) {
358
+ throw new Error(`MSA row "${rowName}" not found`);
359
+ }
360
+ const ungappedMsaSequence = msaSequence.replaceAll('-', '');
361
+ const { views } = getSession(self);
362
+ const proteinView = views.find((v) => v.id === proteinViewId);
363
+ if (!proteinView) {
364
+ throw new Error(`ProteinView "${proteinViewId}" not found`);
365
+ }
366
+ const structure = proteinView.structures?.[structureIdx];
367
+ if (!structure) {
368
+ throw new Error(`Structure at index ${structureIdx} not found`);
369
+ }
370
+ const structureSequence = structure.structureSequences?.[0];
371
+ if (!structureSequence) {
372
+ throw new Error('Structure sequence not available');
373
+ }
374
+ const alignment = runPairwiseAlignment(ungappedMsaSequence, structureSequence);
375
+ const { seq1ToSeq2, seq2ToSeq1 } = buildAlignmentMaps(alignment);
376
+ const connection = {
377
+ proteinViewId,
378
+ structureIdx,
379
+ msaRowName: rowName,
380
+ msaToStructure: mapToRecord(seq1ToSeq2),
381
+ structureToMsa: mapToRecord(seq2ToSeq1),
382
+ };
383
+ self.connectedStructures.push(connection);
384
+ },
385
+ /**
386
+ * #action
387
+ * Disconnect from a protein structure
388
+ */
389
+ disconnectFromStructure(proteinViewId, structureIdx) {
390
+ const idx = self.connectedStructures.findIndex(c => c.proteinViewId === proteinViewId &&
391
+ c.structureIdx === structureIdx);
392
+ if (idx !== -1) {
393
+ self.connectedStructures.splice(idx, 1);
394
+ }
395
+ },
396
+ /**
397
+ * #action
398
+ * Disconnect from all protein structures
399
+ */
400
+ disconnectAllStructures() {
401
+ self.connectedStructures.clear();
402
+ },
189
403
  }))
190
404
  .actions(self => {
191
405
  // store reference to the original action from react-msaview
192
- const superSetMouseClickPos = self.setMouseClickPos;
406
+ const superSetMouseClickPos = self.setMouseClickPos.bind(self);
193
407
  return {
194
408
  /**
195
409
  * #action
@@ -218,24 +432,95 @@ export default function stateModelFactory() {
218
432
  self.setZoomToBaseLevel(!self.zoomToBaseLevel);
219
433
  },
220
434
  },
435
+ {
436
+ label: 'Connect to protein structure...',
437
+ onClick: () => {
438
+ getSession(self).queueDialog(handleClose => [
439
+ ConnectStructureDialog,
440
+ {
441
+ model: self,
442
+ handleClose,
443
+ },
444
+ ]);
445
+ },
446
+ },
447
+ ...(self.connectedStructures.length > 0
448
+ ? [
449
+ {
450
+ label: 'Disconnect from protein structures',
451
+ onClick: () => {
452
+ self.disconnectAllStructures();
453
+ },
454
+ },
455
+ ]
456
+ : []),
221
457
  ];
222
458
  },
223
- /**
224
- * #getter
225
- */
226
- get processing() {
227
- return !!self.progress;
228
- },
229
- /**
230
- * #getter
231
- */
232
- get connectedView() {
233
- const { views } = getSession(self);
234
- return views.find(f => f.id === self.connectedViewId);
235
- },
236
459
  }))
237
460
  .actions(self => ({
238
461
  afterCreate() {
462
+ // Clean up old IndexedDB entries on startup
463
+ cleanupOldData().catch((e) => {
464
+ console.error('Failed to cleanup old MSA data:', e);
465
+ });
466
+ // Load MSA data from IndexedDB if dataStoreId exists and no data loaded
467
+ addDisposer(self, autorun(async () => {
468
+ const { dataStoreId, rows } = self;
469
+ if (dataStoreId && rows.length === 0) {
470
+ try {
471
+ self.setLoadingStoredData(true);
472
+ const storedData = await retrieveMsaData(dataStoreId);
473
+ if (storedData) {
474
+ if (storedData.msa) {
475
+ self.setMSA(storedData.msa);
476
+ }
477
+ if (storedData.tree) {
478
+ self.setTree(storedData.tree);
479
+ }
480
+ }
481
+ }
482
+ catch (e) {
483
+ console.error('Failed to load MSA data from IndexedDB:', e);
484
+ }
485
+ finally {
486
+ self.setLoadingStoredData(false);
487
+ }
488
+ }
489
+ }));
490
+ // Store MSA data to IndexedDB when loaded from inline data (no filehandle)
491
+ // This ensures data persists across page refreshes even when
492
+ // react-msaview's postProcessSnapshot would strip it
493
+ addDisposer(self, autorun(async () => {
494
+ const { rows, dataStoreId } = self;
495
+ // Only store if we have data and don't already have a dataStoreId
496
+ if (rows.length > 0 && !dataStoreId) {
497
+ // Only store if there's no filehandle (filehandles can reload from source)
498
+ const hasFilehandle = !!(self.msaFilehandle ?? self.treeFilehandle);
499
+ if (hasFilehandle) {
500
+ return;
501
+ }
502
+ const msaData = self.data.msa;
503
+ const treeData = self.data.tree;
504
+ // Only store if we have actual data
505
+ if (msaData || treeData) {
506
+ try {
507
+ const newId = generateDataStoreId();
508
+ const success = await storeMsaData(newId, {
509
+ msa: msaData,
510
+ tree: treeData,
511
+ treeMetadata: self.data.treeMetadata,
512
+ });
513
+ // Only set dataStoreId if storage was successful
514
+ if (success) {
515
+ self.setDataStoreId(newId);
516
+ }
517
+ }
518
+ catch (e) {
519
+ console.error('Failed to store MSA data to IndexedDB:', e);
520
+ }
521
+ }
522
+ }
523
+ }));
239
524
  addDisposer(self, autorun(async () => {
240
525
  if (self.blastParams) {
241
526
  try {
@@ -256,6 +541,56 @@ export default function stateModelFactory() {
256
541
  }
257
542
  }
258
543
  }));
544
+ // process init parameter for loading MSA from session snapshots
545
+ addDisposer(self, autorun(async () => {
546
+ const { init } = self;
547
+ if (init) {
548
+ try {
549
+ self.setError(undefined);
550
+ const { msaData, msaUrl, treeData, treeUrl, querySeqName } = init;
551
+ // Extract uniprotId from AlphaFold MSA URL and set querySeqName
552
+ if (msaUrl) {
553
+ const id = getUniprotIdFromAlphaFoldUrl(msaUrl);
554
+ if (id) {
555
+ self.setUniprotId(id);
556
+ // AlphaFold MSA files use 'query' as the row name
557
+ self.setQuerySeqName('query');
558
+ }
559
+ }
560
+ // User-provided querySeqName takes precedence
561
+ if (querySeqName) {
562
+ self.setQuerySeqName(querySeqName);
563
+ }
564
+ if (msaData) {
565
+ self.setMSA(msaData);
566
+ }
567
+ else if (msaUrl) {
568
+ const response = await fetch(msaUrl);
569
+ if (!response.ok) {
570
+ throw new Error(`Failed to fetch MSA: ${response.status}`);
571
+ }
572
+ const data = await response.text();
573
+ self.setMSA(data);
574
+ }
575
+ if (treeData) {
576
+ self.setTree(treeData);
577
+ }
578
+ else if (treeUrl) {
579
+ const response = await fetch(treeUrl);
580
+ if (!response.ok) {
581
+ throw new Error(`Failed to fetch tree: ${response.status}`);
582
+ }
583
+ const data = await response.text();
584
+ self.setTree(data);
585
+ }
586
+ self.setInit(undefined);
587
+ }
588
+ catch (e) {
589
+ self.setError(e);
590
+ console.error(e);
591
+ }
592
+ }
593
+ }));
259
594
  // this adds highlights to the genome view when mouse-ing over the MSA
260
595
  addDisposer(self, autorun(() => {
261
596
  const { mouseCol, mouseClickCol } = self;
@@ -267,6 +602,99 @@ export default function stateModelFactory() {
267
602
  : msaCoordToGenomeCoord({ model: self, coord: mouseClickCol });
268
603
  self.setConnectedHighlights([r1, r2].filter(f => !!f));
269
604
  }));
605
+ // this highlights residues in connected protein structures when mousing over the MSA
606
+ addDisposer(self, autorun(() => {
607
+ highlightConnectedStructures(self);
608
+ }));
609
+ // auto-connect to compatible ProteinViews
610
+ addDisposer(self, autorun(() => {
611
+ const { views } = getSession(self);
612
+ const { connectedViewId, uniprotId, rows, connectedStructures } = self;
613
+ // Need MSA loaded and a uniprotId to auto-connect
614
+ if (!uniprotId || rows.length === 0) {
615
+ return;
616
+ }
617
+ // Find ProteinViews that share the same connectedViewId
618
+ for (const view of views) {
619
+ const v = view;
620
+ if (v.type !== 'ProteinView' || !v.structures) {
621
+ continue;
622
+ }
623
+ for (let structureIdx = 0; structureIdx < v.structures.length; structureIdx++) {
624
+ const structure = v.structures[structureIdx];
625
+ // Check if structure shares the same genome view connection
626
+ if (structure.connectedViewId !== connectedViewId) {
627
+ continue;
628
+ }
629
+ // Check if structure has matching uniprotId
630
+ if (structure.uniprotId !== uniprotId) {
631
+ continue;
632
+ }
633
+ // Check if already connected
634
+ const alreadyConnected = connectedStructures.some(c => c.proteinViewId === v.id && c.structureIdx === structureIdx);
635
+ if (alreadyConnected) {
636
+ continue;
637
+ }
638
+ // Check if structure sequence is available
639
+ if (!structure.structureSequences?.[0]) {
640
+ continue;
641
+ }
642
+ // Auto-connect
643
+ try {
644
+ self.connectToStructure(v.id, structureIdx);
645
+ }
646
+ catch (e) {
647
+ console.error('Failed to auto-connect to ProteinView:', e);
648
+ }
649
+ }
650
+ }
651
+ }));
652
+ // Observe protein3d genome highlights and update MSA highlighted columns
653
+ // This enables communication via the linear genome view coordinates
654
+ addDisposer(self, autorun(() => {
655
+ const { views } = getSession(self);
656
+ const { connectedViewId, transcriptToMsaMap, querySeqName } = self;
657
+ if (!connectedViewId || !transcriptToMsaMap) {
658
+ return;
659
+ }
660
+ const columns = [];
661
+ // Find ProteinViews that share the same connected genome view
662
+ for (const view of views) {
663
+ const v = view;
664
+ if (v.type !== 'ProteinView' || !v.structures) {
665
+ continue;
666
+ }
667
+ for (const structure of v.structures) {
668
+ // Check if structure is connected to same genome view
669
+ if (structure.connectedViewId !== connectedViewId) {
670
+ continue;
671
+ }
672
+ // Check if structure has hover genome highlights
673
+ const highlights = structure.hoverGenomeHighlights;
674
+ if (!highlights || highlights.length === 0) {
675
+ continue;
676
+ }
677
+ // Map genome coordinates to MSA columns
678
+ const { g2p } = transcriptToMsaMap;
679
+ for (const highlight of highlights) {
680
+ for (let coord = highlight.start; coord < highlight.end; coord++) {
681
+ const proteinPos = g2p[coord];
682
+ if (proteinPos !== undefined) {
683
+ const col = self.seqPosToGlobalCol(querySeqName, proteinPos);
684
+ if (!columns.includes(col)) {
685
+ columns.push(col);
686
+ }
687
+ }
688
+ }
689
+ }
690
+ }
691
+ }
692
+ // Convert global column indices to visible column indices
693
+ const visibleColumns = columns
694
+ .map(col => self.globalColToVisibleCol(col))
695
+ .filter((col) => col !== undefined);
696
+ self.setHighlightedColumns(visibleColumns.length > 0 ? visibleColumns : undefined);
697
+ }));
270
698
  },
271
699
  }));
272
700
  }
@@ -1 +1 @@
1
- {"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/MsaViewPanel/model.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/MsaViewPanel/model.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,17 @@
1
+ import type { MafRegion } from './types';
1
2
  export declare function msaCoordToGenomeCoord({ model, coord: mouseCol, }: {
2
3
  model: {
3
4
  querySeqName: string;
4
- transcriptToMsaMap: any;
5
+ transcriptToMsaMap: {
6
+ refName: string;
7
+ p2g: Record<number, number>;
8
+ } | undefined;
9
+ mafRegion?: MafRegion;
5
10
  rows: string[][];
6
11
  };
7
12
  coord: number;
8
13
  }): {
9
- refName: any;
14
+ refName: string;
10
15
  start: number;
11
16
  end: number;
12
17
  } | undefined;