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
@@ -1,15 +1,14 @@
1
1
  import React, { useState } from 'react';
2
2
  import { ErrorMessage, FileSelector } from '@jbrowse/core/ui';
3
3
  import { getContainingView, getSession, } from '@jbrowse/core/util';
4
- import { openLocation } from '@jbrowse/core/util/io';
5
- import { Button, DialogActions, DialogContent, FormControl, FormControlLabel, Radio, RadioGroup, } from '@mui/material';
4
+ import { Alert, Button, DialogActions, DialogContent, FormControl, FormControlLabel, Radio, RadioGroup, } from '@mui/material';
6
5
  import { observer } from 'mobx-react';
7
6
  import { makeStyles } from 'tss-react/mui';
8
7
  import { launchView } from './launchView';
9
8
  import TextField2 from '../../../components/TextField2';
10
- import { getGeneDisplayName, getId, getTranscriptFeatures } from '../../util';
9
+ import { getGeneDisplayName } from '../../util';
11
10
  import TranscriptSelector from '../TranscriptSelector';
12
- import { useFeatureSequence } from '../useFeatureSequence';
11
+ import { useTranscriptSelection } from '../useTranscriptSelection';
13
12
  const useStyles = makeStyles()({
14
13
  dialogContent: {
15
14
  width: '80em',
@@ -28,14 +27,8 @@ const ManualMSALoader = observer(function PreLoadedMSA2({ model, feature, handle
28
27
  const [treeText, setTreeText] = useState('');
29
28
  const [msaFileLocation, setMsaFileLocation] = useState();
30
29
  const [treeFileLocation, setTreeFileLocation] = useState();
31
- const options = getTranscriptFeatures(feature);
32
- const [userSelection, setUserSelection] = useState(getId(options[0]));
33
- const ret = options.find(val => userSelection === getId(val));
34
- const selectedTranscript = options.find(val => getId(val) === userSelection);
35
- const { proteinSequence, error: error2 } = useFeatureSequence({
36
- view,
37
- feature: selectedTranscript,
38
- });
30
+ const [querySeqName, setQuerySeqName] = useState('');
31
+ const { options, setSelectedId, selectedTranscript, proteinSequence, error: error2, } = useTranscriptSelection({ feature, view });
39
32
  const e = launchViewError ?? error2;
40
33
  return (React.createElement(React.Fragment, null,
41
34
  React.createElement(DialogContent, { className: classes.dialogContent },
@@ -55,45 +48,44 @@ const ManualMSALoader = observer(function PreLoadedMSA2({ model, feature, handle
55
48
  React.createElement(TextField2, { variant: "outlined", name: "Tree", multiline: true, minRows: 5, maxRows: 10, fullWidth: true, placeholder: "Paste newick tree (optional)", value: treeText, onChange: event => {
56
49
  setTreeText(event.target.value);
57
50
  } })))),
58
- React.createElement(TranscriptSelector, { feature: feature, options: options, selectedTranscriptId: userSelection, onTranscriptChange: setUserSelection, proteinSequence: proteinSequence })),
51
+ React.createElement(TranscriptSelector, { feature: feature, options: options, selectedTranscript: selectedTranscript, onTranscriptChange: setSelectedId, proteinSequence: proteinSequence }),
52
+ React.createElement(TextField2, { variant: "outlined", name: "MSA row name", fullWidth: true, required: true, style: { marginTop: 20 }, placeholder: "Row name in MSA that corresponds to the selected transcript", helperText: "Required: Specify the name of the row in your MSA that should be aligned with the selected transcript", value: querySeqName, onChange: event => {
53
+ setQuerySeqName(event.target.value);
54
+ } }),
55
+ !querySeqName.trim() && (React.createElement(Alert, { severity: "warning", style: { marginTop: 10 } }, "Without specifying the MSA row name, clicking on the MSA will not navigate to the corresponding genome position, and hovering highlights will not work."))),
59
56
  React.createElement(DialogActions, null,
60
- React.createElement(Button, { color: "primary", variant: "contained", disabled: !ret ||
57
+ React.createElement(Button, { color: "primary", variant: "contained", disabled: !selectedTranscript ||
61
58
  (inputMethod === 'file' && !msaFileLocation) ||
62
59
  (inputMethod === 'text' && !msaText.trim()), onClick: () => {
63
- // eslint-disable-next-line @typescript-eslint/no-floating-promises
64
- ;
65
- (async () => {
66
- try {
67
- if (!ret) {
68
- return;
69
- }
70
- setLaunchViewError(undefined);
71
- launchView({
72
- session,
73
- newViewTitle: getGeneDisplayName(ret),
74
- view,
75
- feature: ret,
76
- data: inputMethod === 'file'
77
- ? {
78
- msa: msaFileLocation
79
- ? await openLocation(msaFileLocation).readFile('utf8')
80
- : '',
81
- tree: treeFileLocation
82
- ? await openLocation(treeFileLocation).readFile('utf8')
83
- : undefined,
84
- }
85
- : {
60
+ try {
61
+ if (!selectedTranscript) {
62
+ return;
63
+ }
64
+ setLaunchViewError(undefined);
65
+ launchView({
66
+ session,
67
+ newViewTitle: getGeneDisplayName(selectedTranscript),
68
+ view,
69
+ feature: selectedTranscript,
70
+ querySeqName: querySeqName.trim() || undefined,
71
+ ...(inputMethod === 'file'
72
+ ? {
73
+ msaFilehandle: msaFileLocation,
74
+ treeFilehandle: treeFileLocation,
75
+ }
76
+ : {
77
+ data: {
86
78
  msa: msaText,
87
- tree: treeText,
79
+ tree: treeText || undefined,
88
80
  },
89
- });
90
- handleClose();
91
- }
92
- catch (e) {
93
- console.error(e);
94
- setLaunchViewError(e);
95
- }
96
- })();
81
+ }),
82
+ });
83
+ handleClose();
84
+ }
85
+ catch (e) {
86
+ console.error(e);
87
+ setLaunchViewError(e);
88
+ }
97
89
  } }, "Submit"),
98
90
  React.createElement(Button, { color: "secondary", variant: "contained", onClick: () => {
99
91
  handleClose();
@@ -1 +1 @@
1
- {"version":3,"file":"ManualMSALoader.js","sourceRoot":"","sources":["../../../../src/LaunchMsaView/components/ManualMSALoader/ManualMSALoader.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ManualMSALoader.js","sourceRoot":"","sources":["../../../../src/LaunchMsaView/components/ManualMSALoader/ManualMSALoader.tsx"],"names":[],"mappings":"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"}
@@ -1,12 +1,13 @@
1
1
  import { AbstractSessionModel, Feature, FileLocation } from '@jbrowse/core/util';
2
2
  import type { LinearGenomeViewModel } from '@jbrowse/plugin-linear-genome-view';
3
- export declare function launchView({ session, newViewTitle, view, feature, msaFileLocation, treeFileLocation, data, }: {
3
+ export declare function launchView({ session, newViewTitle, view, feature, msaFilehandle, treeFilehandle, querySeqName, data, }: {
4
4
  session: AbstractSessionModel;
5
5
  newViewTitle: string;
6
6
  view: LinearGenomeViewModel;
7
7
  feature: Feature;
8
- msaFileLocation?: FileLocation;
9
- treeFileLocation?: FileLocation;
8
+ msaFilehandle?: FileLocation;
9
+ treeFilehandle?: FileLocation;
10
+ querySeqName?: string;
10
11
  data?: {
11
12
  msa: string;
12
13
  tree?: string;
@@ -1,11 +1,12 @@
1
- export function launchView({ session, newViewTitle, view, feature, msaFileLocation, treeFileLocation, data, }) {
1
+ export function launchView({ session, newViewTitle, view, feature, msaFilehandle, treeFilehandle, querySeqName, data, }) {
2
2
  session.addView('MsaView', {
3
3
  type: 'MsaView',
4
4
  displayName: newViewTitle,
5
5
  connectedViewId: view.id,
6
6
  connectedFeature: feature.toJSON(),
7
- msaFileLocation,
8
- treeFileLocation,
7
+ msaFilehandle,
8
+ treeFilehandle,
9
+ querySeqName,
9
10
  data,
10
11
  });
11
12
  }
@@ -1 +1 @@
1
- {"version":3,"file":"launchView.js","sourceRoot":"","sources":["../../../../src/LaunchMsaView/components/ManualMSALoader/launchView.ts"],"names":[],"mappings":"AAIA,MAAM,UAAU,UAAU,CAAC,EACzB,OAAO,EACP,YAAY,EACZ,IAAI,EACJ,OAAO,EACP,eAAe,EACf,gBAAgB,EAChB,IAAI,GAYL;IACC,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE;QACzB,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,YAAY;QACzB,eAAe,EAAE,IAAI,CAAC,EAAE;QACxB,gBAAgB,EAAE,OAAO,CAAC,MAAM,EAAE;QAClC,eAAe;QACf,gBAAgB;QAChB,IAAI;KACL,CAAC,CAAA;AACJ,CAAC"}
1
+ {"version":3,"file":"launchView.js","sourceRoot":"","sources":["../../../../src/LaunchMsaView/components/ManualMSALoader/launchView.ts"],"names":[],"mappings":"AAIA,MAAM,UAAU,UAAU,CAAC,EACzB,OAAO,EACP,YAAY,EACZ,IAAI,EACJ,OAAO,EACP,aAAa,EACb,cAAc,EACd,YAAY,EACZ,IAAI,GAaL;IACC,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE;QACzB,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,YAAY;QACzB,eAAe,EAAE,IAAI,CAAC,EAAE;QACxB,gBAAgB,EAAE,OAAO,CAAC,MAAM,EAAE;QAClC,aAAa;QACb,cAAc;QACd,YAAY;QACZ,IAAI;KACL,CAAC,CAAA;AACJ,CAAC"}
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ import { Feature } from '@jbrowse/core/util';
3
+ import type { AbstractTrackModel } from '@jbrowse/core/util';
4
+ declare const CachedBlastResults: ({ model, handleClose, feature, }: {
5
+ model: AbstractTrackModel;
6
+ handleClose: () => void;
7
+ feature: Feature;
8
+ }) => React.JSX.Element;
9
+ export default CachedBlastResults;
@@ -0,0 +1,76 @@
1
+ import React, { useEffect, useState } from 'react';
2
+ import { getContainingView } from '@jbrowse/core/util';
3
+ import DeleteIcon from '@mui/icons-material/Delete';
4
+ import { Button, IconButton, List, ListItem, ListItemButton, ListItemText, Typography, } from '@mui/material';
5
+ import { observer } from 'mobx-react';
6
+ import { blastLaunchViewFromCache } from './blastLaunchView';
7
+ import { clearAllCachedResults, deleteCachedResult, getAllCachedResults, } from '../../../utils/blastCache';
8
+ const CachedBlastResults = observer(function ({ model, handleClose, feature, }) {
9
+ const [results, setResults] = useState([]);
10
+ const [loading, setLoading] = useState(true);
11
+ const view = getContainingView(model);
12
+ const geneId = feature.get('id');
13
+ useEffect(() => {
14
+ // eslint-disable-next-line @typescript-eslint/no-floating-promises
15
+ ;
16
+ (async () => {
17
+ try {
18
+ const cached = await getAllCachedResults();
19
+ setResults(cached.filter(r => r.geneId === geneId));
20
+ setLoading(false);
21
+ }
22
+ catch (e) {
23
+ console.error(e);
24
+ }
25
+ })();
26
+ }, [geneId]);
27
+ const handleDelete = async (id) => {
28
+ await deleteCachedResult(id);
29
+ setResults(r => r.filter(result => result.id !== id));
30
+ };
31
+ const handleClearAll = async () => {
32
+ await clearAllCachedResults();
33
+ setResults([]);
34
+ };
35
+ const handleUseCached = (cached) => {
36
+ blastLaunchViewFromCache({
37
+ view,
38
+ cached,
39
+ newViewTitle: `BLAST - ${cached.geneId ?? cached.transcriptId ?? 'Unknown gene'}`,
40
+ });
41
+ handleClose();
42
+ };
43
+ if (loading) {
44
+ return React.createElement(Typography, null, "Loading cached results...");
45
+ }
46
+ if (results.length === 0) {
47
+ return (React.createElement(Typography, { color: "textSecondary" }, "No cached BLAST results found for this gene. Run a BLAST query to cache results."));
48
+ }
49
+ return (React.createElement("div", null,
50
+ React.createElement("div", { style: {
51
+ display: 'flex',
52
+ justifyContent: 'space-between',
53
+ alignItems: 'center',
54
+ marginBottom: 8,
55
+ } },
56
+ React.createElement(Typography, { variant: "subtitle1" },
57
+ "Cached BLAST Results (",
58
+ results.length,
59
+ ")"),
60
+ React.createElement(Button, { size: "small", color: "error", onClick: () => {
61
+ // eslint-disable-next-line @typescript-eslint/no-floating-promises
62
+ handleClearAll();
63
+ } }, "Clear All")),
64
+ React.createElement(List, { dense: true, style: { maxHeight: 300, overflow: 'auto' } }, results.map(result => (React.createElement(ListItem, { key: result.id, disablePadding: true, secondaryAction: React.createElement(IconButton, { edge: "end", size: "small", onClick: e => {
65
+ e.stopPropagation();
66
+ // eslint-disable-next-line @typescript-eslint/no-floating-promises
67
+ handleDelete(result.id);
68
+ } },
69
+ React.createElement(DeleteIcon, { fontSize: "small" })) },
70
+ React.createElement(ListItemButton, { onClick: () => {
71
+ handleUseCached(result);
72
+ } },
73
+ React.createElement(ListItemText, { primary: `${result.geneId ?? result.transcriptId ?? 'Unknown'} - ${result.blastDatabase}/${result.blastProgram} (${result.msaAlgorithm})`, secondary: `${new Date(result.timestamp).toLocaleString()} - Seq: ${result.proteinSequence.slice(0, 30)}...` }))))))));
74
+ });
75
+ export default CachedBlastResults;
76
+ //# sourceMappingURL=CachedBlastResults.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CachedBlastResults.js","sourceRoot":"","sources":["../../../../src/LaunchMsaView/components/NCBIBlastQuery/CachedBlastResults.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAElD,OAAO,EAAW,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAC/D,OAAO,UAAU,MAAM,4BAA4B,CAAA;AACnD,OAAO,EACL,MAAM,EACN,UAAU,EACV,IAAI,EACJ,QAAQ,EACR,cAAc,EACd,YAAY,EACZ,UAAU,GACX,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAErC,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAA;AAC5D,OAAO,EACL,qBAAqB,EACrB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,2BAA2B,CAAA;AAMlC,MAAM,kBAAkB,GAAG,QAAQ,CAAC,UAAU,EAC5C,KAAK,EACL,WAAW,EACX,OAAO,GAKR;IACC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAsB,EAAE,CAAC,CAAA;IAC/D,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAA;IAC5C,MAAM,IAAI,GAAG,iBAAiB,CAAC,KAAK,CAA0B,CAAA;IAE9D,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IAChC,SAAS,CAAC,GAAG,EAAE;QACb,mEAAmE;QACnE,CAAC;QAAA,CAAC,KAAK,IAAI,EAAE;YACX,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,mBAAmB,EAAE,CAAA;gBAC1C,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAA;gBACnD,UAAU,CAAC,KAAK,CAAC,CAAA;YACnB,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;YAClB,CAAC;QACH,CAAC,CAAC,EAAE,CAAA;IACN,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAA;IAEZ,MAAM,YAAY,GAAG,KAAK,EAAE,EAAU,EAAE,EAAE;QACxC,MAAM,kBAAkB,CAAC,EAAE,CAAC,CAAA;QAC5B,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAA;IACvD,CAAC,CAAA;IAED,MAAM,cAAc,GAAG,KAAK,IAAI,EAAE;QAChC,MAAM,qBAAqB,EAAE,CAAA;QAC7B,UAAU,CAAC,EAAE,CAAC,CAAA;IAChB,CAAC,CAAA;IAED,MAAM,eAAe,GAAG,CAAC,MAAyB,EAAE,EAAE;QACpD,wBAAwB,CAAC;YACvB,IAAI;YACJ,MAAM;YACN,YAAY,EAAE,WAAW,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,YAAY,IAAI,cAAc,EAAE;SAClF,CAAC,CAAA;QACF,WAAW,EAAE,CAAA;IACf,CAAC,CAAA;IAED,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,oBAAC,UAAU,oCAAuC,CAAA;IAC3D,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,CACL,oBAAC,UAAU,IAAC,KAAK,EAAC,eAAe,uFAGpB,CACd,CAAA;IACH,CAAC;IAED,OAAO,CACL;QACE,6BACE,KAAK,EAAE;gBACL,OAAO,EAAE,MAAM;gBACf,cAAc,EAAE,eAAe;gBAC/B,UAAU,EAAE,QAAQ;gBACpB,YAAY,EAAE,CAAC;aAChB;YAED,oBAAC,UAAU,IAAC,OAAO,EAAC,WAAW;;gBACN,OAAO,CAAC,MAAM;oBAC1B;YACb,oBAAC,MAAM,IACL,IAAI,EAAC,OAAO,EACZ,KAAK,EAAC,OAAO,EACb,OAAO,EAAE,GAAG,EAAE;oBACZ,mEAAmE;oBACnE,cAAc,EAAE,CAAA;gBAClB,CAAC,gBAGM,CACL;QACN,oBAAC,IAAI,IAAC,KAAK,QAAC,KAAK,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,IACpD,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CACrB,oBAAC,QAAQ,IACP,GAAG,EAAE,MAAM,CAAC,EAAE,EACd,cAAc,QACd,eAAe,EACb,oBAAC,UAAU,IACT,IAAI,EAAC,KAAK,EACV,IAAI,EAAC,OAAO,EACZ,OAAO,EAAE,CAAC,CAAC,EAAE;oBACX,CAAC,CAAC,eAAe,EAAE,CAAA;oBACnB,mEAAmE;oBACnE,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;gBACzB,CAAC;gBAED,oBAAC,UAAU,IAAC,QAAQ,EAAC,OAAO,GAAG,CACpB;YAGf,oBAAC,cAAc,IACb,OAAO,EAAE,GAAG,EAAE;oBACZ,eAAe,CAAC,MAAM,CAAC,CAAA;gBACzB,CAAC;gBAED,oBAAC,YAAY,IACX,OAAO,EAAE,GAAG,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,YAAY,IAAI,SAAS,MAAM,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,YAAY,KAAK,MAAM,CAAC,YAAY,GAAG,EACzI,SAAS,EAAE,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,cAAc,EAAE,WAAW,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,GAC5G,CACa,CACR,CACZ,CAAC,CACG,CACH,CACP,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,eAAe,kBAAkB,CAAA"}
@@ -1,14 +1,17 @@
1
1
  import React, { useEffect, useState } from 'react';
2
2
  import { ErrorMessage } from '@jbrowse/core/ui';
3
3
  import { getContainingView, } from '@jbrowse/core/util';
4
- import { Button, DialogActions, DialogContent, MenuItem, Typography, } from '@mui/material';
4
+ import ExpandMoreIcon from '@mui/icons-material/ExpandMore';
5
+ import { Accordion, AccordionDetails, AccordionSummary, Button, DialogActions, DialogContent, MenuItem, Typography, } from '@mui/material';
5
6
  import { observer } from 'mobx-react';
6
7
  import { makeStyles } from 'tss-react/mui';
8
+ import CachedBlastResults from './CachedBlastResults';
7
9
  import { blastLaunchView } from './blastLaunchView';
8
10
  import TextField2 from '../../../components/TextField2';
9
- import { getGeneDisplayName, getId, getTranscriptDisplayName, getTranscriptFeatures, } from '../../util';
11
+ import { getAllCachedResults } from '../../../utils/blastCache';
12
+ import { getGeneDisplayName, getTranscriptDisplayName } from '../../util';
10
13
  import TranscriptSelector from '../TranscriptSelector';
11
- import { useFeatureSequence } from '../useFeatureSequence';
14
+ import { useTranscriptSelection } from '../useTranscriptSelection';
12
15
  const useStyles = makeStyles()({
13
16
  dialogContent: {
14
17
  width: '80em',
@@ -26,20 +29,31 @@ const NCBIBlastAutomaticPanel = observer(function ({ handleClose, feature, model
26
29
  const [launchViewError, setLaunchViewError] = useState();
27
30
  const [selectedBlastDatabase, setSelectedBlastDatabase] = useState('nr');
28
31
  const [selectedMsaAlgorithm, setSelectedMsaAlgorithm] = useState('clustalo');
29
- const options = getTranscriptFeatures(feature);
30
- const [selectedTranscriptId, setSelectedTranscriptId] = useState(getId(options[0]));
31
32
  const [selectedBlastProgram, setSelectedBlastProgram] = useState('quick-blastp');
32
- const selectedTranscript = options.find(val => getId(val) === selectedTranscriptId);
33
- const { error: proteinSequenceError, proteinSequence } = useFeatureSequence({
34
- view,
35
- feature: selectedTranscript,
36
- });
33
+ const [hasCachedResults, setHasCachedResults] = useState(false);
34
+ const [error, setError] = useState();
35
+ const geneId = feature.get('id');
36
+ useEffect(() => {
37
+ // eslint-disable-next-line @typescript-eslint/no-floating-promises
38
+ ;
39
+ (async () => {
40
+ try {
41
+ const results = await getAllCachedResults();
42
+ setHasCachedResults(results.some(r => r.geneId === geneId));
43
+ }
44
+ catch (e) {
45
+ console.error(e);
46
+ setError(e);
47
+ }
48
+ })();
49
+ }, [geneId]);
50
+ const { options, setSelectedId, selectedTranscript, proteinSequence, error: proteinSequenceError, } = useTranscriptSelection({ feature, view });
37
51
  useEffect(() => {
38
52
  if (selectedBlastDatabase === 'nr_cluster_seq') {
39
53
  setSelectedBlastProgram('blastp');
40
54
  }
41
55
  }, [selectedBlastDatabase]);
42
- const e = proteinSequenceError ?? launchViewError;
56
+ const e = proteinSequenceError ?? launchViewError ?? error;
43
57
  const style = { width: 150 };
44
58
  return (React.createElement(React.Fragment, null,
45
59
  React.createElement(DialogContent, { className: classes.dialogContent },
@@ -59,11 +73,19 @@ const NCBIBlastAutomaticPanel = observer(function ({ handleClose, feature, model
59
73
  marginLeft: 4,
60
74
  alignContent: 'center',
61
75
  } }, "Can only use blastp on nr_cluster_seq")) : null),
62
- React.createElement(TranscriptSelector, { feature: feature, options: options, selectedTranscriptId: selectedTranscriptId, onTranscriptChange: setSelectedTranscriptId, proteinSequence: proteinSequence }),
63
- React.createElement(Typography, { style: { marginTop: 20 } }, "This panel will automatically submit a query to NCBI. Using blastp can take 10+ minutes to run, quick-blastp is generally a lot faster but is not available for the clustered database. After completion, all the hits will be run through a multiple sequence alignment. Note: we are not able to currently run NCBI COBALT automatically on the BLAST results, even though that is the method NCBI uses on their website. If you need a COBALT alignment, please use the manual approach of submitting BLAST yourself and downloading the resulting files")),
76
+ React.createElement(TranscriptSelector, { feature: feature, options: options, selectedTranscript: selectedTranscript, onTranscriptChange: setSelectedId, proteinSequence: proteinSequence }),
77
+ React.createElement(Typography, { style: { marginTop: 20 } }, "This panel will automatically submit a query to NCBI. Using blastp can take 10+ minutes to run, quick-blastp is generally a lot faster but is not available for the clustered database. After completion, all the hits will be run through a multiple sequence alignment. Note: we are not able to currently run NCBI COBALT automatically on the BLAST results, even though that is the method NCBI uses on their website. If you need a COBALT alignment, please use the manual approach of submitting BLAST yourself and downloading the resulting files"),
78
+ hasCachedResults ? (React.createElement(Accordion, { style: { marginTop: 20 } },
79
+ React.createElement(AccordionSummary, { expandIcon: React.createElement(ExpandMoreIcon, null) },
80
+ React.createElement(Typography, null, "Previous BLAST Results")),
81
+ React.createElement(AccordionDetails, null,
82
+ React.createElement(CachedBlastResults, { model: model, handleClose: handleClose, feature: feature })))) : null),
64
83
  React.createElement(DialogActions, null,
65
84
  React.createElement(Button, { color: "primary", variant: "contained", onClick: () => {
66
85
  try {
86
+ if (!selectedTranscript) {
87
+ return;
88
+ }
67
89
  setLaunchViewError(undefined);
68
90
  blastLaunchView({
69
91
  feature: selectedTranscript,
@@ -1 +1 @@
1
- {"version":3,"file":"NCBIBlastAutomaticPanel.js","sourceRoot":"","sources":["../../../../src/LaunchMsaView/components/NCBIBlastQuery/NCBIBlastAutomaticPanel.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"NCBIBlastAutomaticPanel.js","sourceRoot":"","sources":["../../../../src/LaunchMsaView/components/NCBIBlastQuery/NCBIBlastAutomaticPanel.tsx"],"names":[],"mappings":"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"}
@@ -1,13 +1,13 @@
1
- import React, { useState } from 'react';
1
+ import React from 'react';
2
2
  import { ErrorMessage } from '@jbrowse/core/ui';
3
3
  import { getContainingView, shorten2 } from '@jbrowse/core/util';
4
4
  import { Button, DialogActions, DialogContent, Typography } from '@mui/material';
5
5
  import { observer } from 'mobx-react';
6
6
  import { makeStyles } from 'tss-react/mui';
7
7
  import ExternalLink from '../../../components/ExternalLink';
8
- import { getId, getTranscriptFeatures } from '../../util';
8
+ import { cleanProteinSequence } from '../../util';
9
9
  import TranscriptSelector from '../TranscriptSelector';
10
- import { useFeatureSequence } from '../useFeatureSequence';
10
+ import { useTranscriptSelection } from '../useTranscriptSelection';
11
11
  const useStyles = makeStyles()({
12
12
  dialogContent: {
13
13
  width: '80em',
@@ -24,21 +24,15 @@ const useStyles = makeStyles()({
24
24
  const NCBIBlastManualPanel = observer(function ({ handleClose, feature, model, children, baseUrl, }) {
25
25
  const { classes } = useStyles();
26
26
  const view = getContainingView(model);
27
- const options = getTranscriptFeatures(feature);
28
- const [userSelection, setUserSelection] = useState(getId(options[0]));
29
- const selectedTranscript = options.find(val => getId(val) === userSelection);
30
- const { proteinSequence, error } = useFeatureSequence({
31
- view,
32
- feature: selectedTranscript,
33
- });
34
- const s2 = proteinSequence.replaceAll('*', '').replaceAll('&', '');
27
+ const { options, setSelectedId, selectedTranscript, proteinSequence, error } = useTranscriptSelection({ feature, view });
28
+ const s2 = cleanProteinSequence(proteinSequence);
35
29
  const link = `${baseUrl}?PAGE_TYPE=BlastSearch&PAGE=Proteins&PROGRAM=blastp&QUERY=${s2}`;
36
30
  const link2 = `${baseUrl}?PAGE_TYPE=BlastSearch&PAGE=Proteins&PROGRAM=blastp&QUERY=${shorten2(s2, 10)}`;
37
31
  return (React.createElement(React.Fragment, null,
38
32
  React.createElement(DialogContent, { className: classes.dialogContent },
39
33
  children,
40
34
  error ? React.createElement(ErrorMessage, { error: error }) : null,
41
- React.createElement(TranscriptSelector, { feature: feature, options: options, selectedTranscriptId: userSelection, onTranscriptChange: setUserSelection, proteinSequence: proteinSequence }),
35
+ React.createElement(TranscriptSelector, { feature: feature, options: options, selectedTranscript: selectedTranscript, onTranscriptChange: setSelectedId, proteinSequence: proteinSequence }),
42
36
  proteinSequence ? (React.createElement("div", { className: classes.ncbiLink },
43
37
  "Link to NCBI BLAST: ",
44
38
  React.createElement(ExternalLink, { href: link }, link2))) : null,
@@ -1 +1 @@
1
- {"version":3,"file":"NCBIBlastManualPanel.js","sourceRoot":"","sources":["../../../../src/LaunchMsaView/components/NCBIBlastQuery/NCBIBlastManualPanel.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"NCBIBlastManualPanel.js","sourceRoot":"","sources":["../../../../src/LaunchMsaView/components/NCBIBlastQuery/NCBIBlastManualPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAC/C,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAChE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAChF,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAE1C,OAAO,YAAY,MAAM,kCAAkC,CAAA;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AACjD,OAAO,kBAAkB,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAA;AAKlE,MAAM,SAAS,GAAG,UAAU,EAAE,CAAC;IAC7B,aAAa,EAAE;QACb,KAAK,EAAE,MAAM;KACd;IACD,YAAY,EAAE;QACZ,UAAU,EAAE,aAAa;KAC1B;IACD,QAAQ,EAAE;QACR,SAAS,EAAE,WAAW;QACtB,MAAM,EAAE,EAAE;QACV,QAAQ,EAAE,GAAG;KACd;CACF,CAAC,CAAA;AAEF,MAAM,oBAAoB,GAAG,QAAQ,CAAC,UAAU,EAC9C,WAAW,EACX,OAAO,EACP,KAAK,EACL,QAAQ,EACR,OAAO,GAOR;IACC,MAAM,EAAE,OAAO,EAAE,GAAG,SAAS,EAAE,CAAA;IAC/B,MAAM,IAAI,GAAG,iBAAiB,CAAC,KAAK,CAA0B,CAAA;IAC9D,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,eAAe,EAAE,KAAK,EAAE,GAC1E,sBAAsB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;IAE3C,MAAM,EAAE,GAAG,oBAAoB,CAAC,eAAe,CAAC,CAAA;IAChD,MAAM,IAAI,GAAG,GAAG,OAAO,6DAA6D,EAAE,EAAE,CAAA;IACxF,MAAM,KAAK,GAAG,GAAG,OAAO,6DAA6D,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAA;IAEvG,OAAO,CACL;QACE,oBAAC,aAAa,IAAC,SAAS,EAAE,OAAO,CAAC,aAAa;YAC5C,QAAQ;YACR,KAAK,CAAC,CAAC,CAAC,oBAAC,YAAY,IAAC,KAAK,EAAE,KAAK,GAAI,CAAC,CAAC,CAAC,IAAI;YAE9C,oBAAC,kBAAkB,IACjB,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,EAChB,kBAAkB,EAAE,kBAAkB,EACtC,kBAAkB,EAAE,aAAa,EACjC,eAAe,EAAE,eAAe,GAChC;YAED,eAAe,CAAC,CAAC,CAAC,CACjB,6BAAK,SAAS,EAAE,OAAO,CAAC,QAAQ;;gBACV,oBAAC,YAAY,IAAC,IAAI,EAAE,IAAI,IAAG,KAAK,CAAgB,CAChE,CACP,CAAC,CAAC,CAAC,IAAI;YAER,oBAAC,UAAU,IAAC,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,2UAMvB,CACC;QAEhB,oBAAC,aAAa;YACZ,oBAAC,MAAM,IACL,KAAK,EAAC,SAAS,EACf,OAAO,EAAC,WAAW,EACnB,OAAO,EAAE,GAAG,EAAE;oBACZ,WAAW,EAAE,CAAA;gBACf,CAAC,aAGM;YACT,oBAAC,MAAM,IACL,KAAK,EAAC,WAAW,EACjB,OAAO,EAAC,WAAW,EACnB,OAAO,EAAE,GAAG,EAAE;oBACZ,WAAW,EAAE,CAAA;gBACf,CAAC,YAGM,CACK,CACf,CACJ,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,eAAe,oBAAoB,CAAA"}
@@ -1,5 +1,6 @@
1
1
  import { Feature } from '@jbrowse/core/util';
2
2
  import type { JBrowsePluginMsaViewModel } from '../../../MsaViewPanel/model';
3
+ import type { CachedBlastResult } from '../../../utils/blastCache';
3
4
  import type { LinearGenomeViewModel } from '@jbrowse/plugin-linear-genome-view';
4
5
  export declare function blastLaunchView({ newViewTitle, view, feature, blastParams, }: {
5
6
  newViewTitle: string;
@@ -7,3 +8,8 @@ export declare function blastLaunchView({ newViewTitle, view, feature, blastPara
7
8
  feature: Feature;
8
9
  blastParams: Record<string, unknown>;
9
10
  }): JBrowsePluginMsaViewModel;
11
+ export declare function blastLaunchViewFromCache({ newViewTitle, view, cached, }: {
12
+ newViewTitle: string;
13
+ view: LinearGenomeViewModel;
14
+ cached: CachedBlastResult;
15
+ }): JBrowsePluginMsaViewModel;
@@ -11,4 +11,19 @@ export function blastLaunchView({ newViewTitle, view, feature, blastParams, }) {
11
11
  blastParams,
12
12
  });
13
13
  }
14
+ export function blastLaunchViewFromCache({ newViewTitle, view, cached, }) {
15
+ return getSession(view).addView('MsaView', {
16
+ type: 'MsaView',
17
+ displayName: newViewTitle,
18
+ connectedViewId: view.id,
19
+ drawNodeBubbles: true,
20
+ colWidth: 10,
21
+ rowHeight: 12,
22
+ data: {
23
+ msa: cached.msa,
24
+ tree: cached.tree,
25
+ treeMetadata: cached.treeMetadata,
26
+ },
27
+ });
28
+ }
14
29
  //# sourceMappingURL=blastLaunchView.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"blastLaunchView.js","sourceRoot":"","sources":["../../../../src/LaunchMsaView/components/NCBIBlastQuery/blastLaunchView.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAKxD,MAAM,UAAU,eAAe,CAAC,EAC9B,YAAY,EACZ,IAAI,EACJ,OAAO,EACP,WAAW,GAMZ;IACC,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE;QACzC,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,YAAY;QACzB,eAAe,EAAE,IAAI,CAAC,EAAE;QACxB,gBAAgB,EAAE,OAAO,CAAC,MAAM,EAAE;QAClC,eAAe,EAAE,IAAI;QACrB,QAAQ,EAAE,EAAE;QACZ,SAAS,EAAE,EAAE;QACb,WAAW;KACZ,CAA8B,CAAA;AACjC,CAAC"}
1
+ {"version":3,"file":"blastLaunchView.js","sourceRoot":"","sources":["../../../../src/LaunchMsaView/components/NCBIBlastQuery/blastLaunchView.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAMxD,MAAM,UAAU,eAAe,CAAC,EAC9B,YAAY,EACZ,IAAI,EACJ,OAAO,EACP,WAAW,GAMZ;IACC,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE;QACzC,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,YAAY;QACzB,eAAe,EAAE,IAAI,CAAC,EAAE;QACxB,gBAAgB,EAAE,OAAO,CAAC,MAAM,EAAE;QAClC,eAAe,EAAE,IAAI;QACrB,QAAQ,EAAE,EAAE;QACZ,SAAS,EAAE,EAAE;QACb,WAAW;KACZ,CAA8B,CAAA;AACjC,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,EACvC,YAAY,EACZ,IAAI,EACJ,MAAM,GAKP;IACC,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE;QACzC,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,YAAY;QACzB,eAAe,EAAE,IAAI,CAAC,EAAE;QACxB,eAAe,EAAE,IAAI;QACrB,QAAQ,EAAE,EAAE;QACZ,SAAS,EAAE,EAAE;QACb,IAAI,EAAE;YACJ,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,YAAY,EAAE,MAAM,CAAC,YAAY;SAClC;KACF,CAA8B,CAAA;AACjC,CAAC"}
@@ -1,4 +1,4 @@
1
- import React, { useEffect, useMemo, useState } from 'react';
1
+ import React, { useState } from 'react';
2
2
  import { readConfObject } from '@jbrowse/core/configuration';
3
3
  import { ErrorMessage, LoadingEllipses, SanitizedHTML } from '@jbrowse/core/ui';
4
4
  import { getContainingView, getEnv, getSession, } from '@jbrowse/core/util';
@@ -7,12 +7,11 @@ import { observer } from 'mobx-react';
7
7
  import useSWR from 'swr';
8
8
  import { makeStyles } from 'tss-react/mui';
9
9
  import TextField2 from '../../../components/TextField2';
10
- import { getGeneDisplayName, getId, getTranscriptFeatures } from '../../util';
10
+ import { getGeneDisplayName } from '../../util';
11
11
  import TranscriptSelector from '../TranscriptSelector';
12
- import { useFeatureSequence } from '../useFeatureSequence';
12
+ import { useTranscriptSelection } from '../useTranscriptSelection';
13
13
  import { swrFlags } from './consts';
14
14
  import { fetchMSA, fetchMSAList } from './fetchMSAData';
15
- import { findValidTranscriptId } from './findValidTranscriptId';
16
15
  import { preCalculatedLaunchView } from './preCalculatedLaunchView';
17
16
  const useStyles = makeStyles()({
18
17
  dialogContent: {
@@ -25,16 +24,7 @@ const PreLoadedMSA = observer(function PreLoadedMSA2({ model, feature, handleClo
25
24
  const { classes } = useStyles();
26
25
  const { pluginManager } = getEnv(model);
27
26
  const { assemblyNames } = view;
28
- const transcripts = getTranscriptFeatures(feature);
29
- const [selectedTranscriptId, setSelectedTranscriptId] = useState(getId(transcripts[0]));
30
27
  const [viewError, setViewError] = useState();
31
- const selectedTranscript = selectedTranscriptId
32
- ? transcripts.find(val => getId(val) === selectedTranscriptId)
33
- : undefined;
34
- const { proteinSequence, error: proteinSequenceError } = useFeatureSequence({
35
- view,
36
- feature: selectedTranscript,
37
- });
38
28
  const { jbrowse } = session;
39
29
  const datasets = readConfObject(jbrowse, ['msa', 'datasets']);
40
30
  const [selectedDatasetId, setSelectedDatasetId] = useState(datasets?.[0]?.datasetId);
@@ -45,28 +35,16 @@ const PreLoadedMSA = observer(function PreLoadedMSA2({ model, feature, handleClo
45
35
  pluginManager,
46
36
  })
47
37
  : undefined, swrFlags);
48
- const { data: msaData, isLoading: msaDataLoading, error: msaDataFetchError, } = useSWR(selectedTranscriptId && selectedDatasetId
49
- ? `${selectedTranscriptId}-${selectedTranscriptId}-${msaList?.length}-msa`
50
- : 'none-msa', () => selectedTranscriptId && selectedDataset && msaList
38
+ const { options: transcripts, selectedId, setSelectedId, selectedTranscript, proteinSequence, error: proteinSequenceError, validSet, } = useTranscriptSelection({ feature, view, validIds: msaList });
39
+ const { data: msaData, isLoading: msaDataLoading, error: msaDataFetchError, } = useSWR(selectedId && selectedDatasetId
40
+ ? `${selectedId}-${selectedId}-${msaList?.length}-msa`
41
+ : 'none-msa', () => selectedId && selectedDataset && msaList
51
42
  ? fetchMSA({
52
- msaId: selectedTranscriptId,
43
+ msaId: selectedId,
53
44
  config: selectedDataset.adapter,
54
45
  pluginManager,
55
46
  })
56
47
  : undefined, swrFlags);
57
- const validSet = useMemo(() => new Set(msaList), [msaList]);
58
- // Update selectedTranscriptId when msaList changes
59
- useEffect(() => {
60
- if (msaList && msaList.length > 0) {
61
- const validId = findValidTranscriptId({
62
- transcriptsList: transcripts,
63
- validMsaList: msaList,
64
- });
65
- if (validId && validId !== selectedTranscriptId) {
66
- setSelectedTranscriptId(validId);
67
- }
68
- }
69
- }, [msaList, transcripts, selectedTranscriptId]);
70
48
  const e = msaListFetchError ?? msaDataFetchError ?? proteinSequenceError ?? viewError;
71
49
  if (e) {
72
50
  console.error(e);
@@ -76,20 +54,20 @@ const PreLoadedMSA = observer(function PreLoadedMSA2({ model, feature, handleClo
76
54
  e ? React.createElement(ErrorMessage, { error: e }) : null,
77
55
  React.createElement(TextField2, { select: true, label: "Select MSA dataset", value: selectedDatasetId, onChange: event => {
78
56
  setSelectedDatasetId(event.target.value);
79
- } }, datasets && datasets.length > 0 ? (datasets.map(d => (React.createElement(MenuItem, { key: d.datasetId, value: d.datasetId }, d.name)))) : (React.createElement(MenuItem, null, "No MSA datasets found"))),
57
+ } }, datasets?.map(d => (React.createElement(MenuItem, { key: d.datasetId, value: d.datasetId }, d.name)))),
80
58
  selectedDataset ? (React.createElement("div", { style: { marginTop: 50 } },
81
- !msaListLoading && msaDataLoading ? (React.createElement(LoadingEllipses, { variant: "h6", message: `Loading MSA for (${selectedTranscriptId})` })) : null,
59
+ !msaListLoading && msaDataLoading ? (React.createElement(LoadingEllipses, { variant: "h6", message: `Loading MSA for (${selectedId})` })) : null,
82
60
  msaListLoading ? (React.createElement(LoadingEllipses, { variant: "h6", message: `Loading available MSAs for (${selectedDataset.name})` })) : null,
83
61
  msaList ? (React.createElement("div", null,
84
62
  React.createElement(SanitizedHTML, { html: selectedDataset.description }),
85
- React.createElement(TranscriptSelector, { feature: feature, options: transcripts, selectedTranscriptId: selectedTranscriptId, onTranscriptChange: setSelectedTranscriptId, proteinSequence: proteinSequence, validSet: validSet }))) : null)) : null),
63
+ React.createElement(TranscriptSelector, { feature: feature, options: transcripts, selectedTranscript: selectedTranscript, onTranscriptChange: setSelectedId, proteinSequence: proteinSequence, validSet: validSet }))) : null)) : null),
86
64
  React.createElement(DialogActions, null,
87
65
  React.createElement(Button, { color: "primary", variant: "contained", disabled: !selectedTranscript || !msaData?.length, onClick: () => {
88
66
  try {
89
67
  if (!selectedTranscript || !msaData) {
90
68
  return;
91
69
  }
92
- const querySeqName = `${selectedTranscriptId}_${assemblyNames[0]}`;
70
+ const querySeqName = `${selectedId}_${assemblyNames[0]}`;
93
71
  preCalculatedLaunchView({
94
72
  session,
95
73
  newViewTitle: getGeneDisplayName(selectedTranscript),