jbrowse-plugin-msaview 2.4.2 → 2.4.3
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.
- package/dist/LaunchMsaView/components/LaunchMsaViewDialog.js +3 -4
- package/dist/LaunchMsaView/components/LaunchMsaViewDialog.js.map +1 -1
- package/dist/LaunchMsaView/components/LaunchPanelContent.d.ts +5 -0
- package/dist/LaunchMsaView/components/LaunchPanelContent.js +16 -0
- package/dist/LaunchMsaView/components/LaunchPanelContent.js.map +1 -0
- package/dist/LaunchMsaView/components/ManualMSALoader/ManualMSALoader.js +22 -25
- package/dist/LaunchMsaView/components/ManualMSALoader/ManualMSALoader.js.map +1 -1
- package/dist/LaunchMsaView/components/NCBIBlastQuery/CachedBlastResults.js +12 -24
- package/dist/LaunchMsaView/components/NCBIBlastQuery/CachedBlastResults.js.map +1 -1
- package/dist/LaunchMsaView/components/NCBIBlastQuery/MsaAlgorithmSelect.d.ts +7 -0
- package/dist/LaunchMsaView/components/NCBIBlastQuery/MsaAlgorithmSelect.js +10 -0
- package/dist/LaunchMsaView/components/NCBIBlastQuery/MsaAlgorithmSelect.js.map +1 -0
- package/dist/LaunchMsaView/components/NCBIBlastQuery/NCBIBlastAutomaticPanel.js +23 -32
- package/dist/LaunchMsaView/components/NCBIBlastQuery/NCBIBlastAutomaticPanel.js.map +1 -1
- package/dist/LaunchMsaView/components/NCBIBlastQuery/NCBIBlastManualPanel.js +9 -15
- package/dist/LaunchMsaView/components/NCBIBlastQuery/NCBIBlastManualPanel.js.map +1 -1
- package/dist/LaunchMsaView/components/NCBIBlastQuery/NCBIBlastMethodSelector.d.ts +3 -2
- package/dist/LaunchMsaView/components/NCBIBlastQuery/NCBIBlastMethodSelector.js.map +1 -1
- package/dist/LaunchMsaView/components/NCBIBlastQuery/NCBIBlastPanel.d.ts +25 -0
- package/dist/LaunchMsaView/components/NCBIBlastQuery/NCBIBlastPanel.js.map +1 -1
- package/dist/LaunchMsaView/components/NCBIBlastQuery/NCBIBlastRIDPanel.js +22 -32
- package/dist/LaunchMsaView/components/NCBIBlastQuery/NCBIBlastRIDPanel.js.map +1 -1
- package/dist/LaunchMsaView/components/NCBIBlastQuery/useCachedBlastResults.js +2 -9
- package/dist/LaunchMsaView/components/NCBIBlastQuery/useCachedBlastResults.js.map +1 -1
- package/dist/LaunchMsaView/components/PreLoadedMSA/PreLoadedMSADataPanel.js +30 -29
- package/dist/LaunchMsaView/components/PreLoadedMSA/PreLoadedMSADataPanel.js.map +1 -1
- package/dist/LaunchMsaView/components/PreLoadedMSA/fetchMSAData.js +8 -6
- package/dist/LaunchMsaView/components/PreLoadedMSA/fetchMSAData.js.map +1 -1
- package/dist/LaunchMsaView/components/SubmitCancelActions.d.ts +8 -0
- package/dist/LaunchMsaView/components/SubmitCancelActions.js +12 -0
- package/dist/LaunchMsaView/components/SubmitCancelActions.js.map +1 -0
- package/dist/LaunchMsaView/components/TranscriptSelector.d.ts +2 -2
- package/dist/LaunchMsaView/components/TranscriptSelector.js +2 -2
- package/dist/LaunchMsaView/components/TranscriptSelector.js.map +1 -1
- package/dist/LaunchMsaView/components/useSWRFeatureSequence.js +3 -13
- package/dist/LaunchMsaView/components/useSWRFeatureSequence.js.map +1 -1
- package/dist/LaunchMsaView/components/useTranscriptSelection.js +10 -12
- package/dist/LaunchMsaView/components/useTranscriptSelection.js.map +1 -1
- package/dist/LaunchMsaView/util.d.ts +4 -1
- package/dist/LaunchMsaView/util.js +29 -24
- package/dist/LaunchMsaView/util.js.map +1 -1
- package/dist/jbrowse-plugin-msaview.umd.production.min.js +24 -24
- package/dist/jbrowse-plugin-msaview.umd.production.min.js.map +4 -4
- package/dist/{LaunchMsaView/components/PreLoadedMSA/consts.d.ts → utils/swrConfig.d.ts} +1 -1
- package/dist/{LaunchMsaView/components/PreLoadedMSA/consts.js → utils/swrConfig.js} +2 -2
- package/dist/utils/swrConfig.js.map +1 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
- package/src/LaunchMsaView/components/LaunchMsaViewDialog.tsx +9 -6
- package/src/LaunchMsaView/components/LaunchPanelContent.tsx +27 -0
- package/src/LaunchMsaView/components/ManualMSALoader/ManualMSALoader.tsx +28 -60
- package/src/LaunchMsaView/components/NCBIBlastQuery/CachedBlastResults.tsx +21 -33
- package/src/LaunchMsaView/components/NCBIBlastQuery/MsaAlgorithmSelect.tsx +37 -0
- package/src/LaunchMsaView/components/NCBIBlastQuery/NCBIBlastAutomaticPanel.tsx +29 -75
- package/src/LaunchMsaView/components/NCBIBlastQuery/NCBIBlastManualPanel.tsx +10 -31
- package/src/LaunchMsaView/components/NCBIBlastQuery/NCBIBlastMethodSelector.tsx +5 -3
- package/src/LaunchMsaView/components/NCBIBlastQuery/NCBIBlastPanel.tsx +5 -2
- package/src/LaunchMsaView/components/NCBIBlastQuery/NCBIBlastRIDPanel.tsx +28 -78
- package/src/LaunchMsaView/components/NCBIBlastQuery/useCachedBlastResults.ts +2 -10
- package/src/LaunchMsaView/components/PreLoadedMSA/PreLoadedMSADataPanel.tsx +34 -57
- package/src/LaunchMsaView/components/PreLoadedMSA/fetchMSAData.ts +17 -8
- package/src/LaunchMsaView/components/SubmitCancelActions.tsx +41 -0
- package/src/LaunchMsaView/components/TranscriptSelector.tsx +3 -3
- package/src/LaunchMsaView/components/useSWRFeatureSequence.ts +6 -15
- package/src/LaunchMsaView/components/useTranscriptSelection.ts +13 -15
- package/src/LaunchMsaView/util.ts +35 -25
- package/src/MsaViewPanel/util.ts +3 -3
- package/src/{LaunchMsaView/components/PreLoadedMSA/consts.ts → utils/swrConfig.ts} +1 -1
- package/src/version.ts +1 -1
- package/dist/LaunchMsaView/components/PreLoadedMSA/consts.js.map +0 -1
|
@@ -1,20 +1,17 @@
|
|
|
1
1
|
import React, { useState } from 'react';
|
|
2
|
-
import {
|
|
3
|
-
import { getContainingView } from '@jbrowse/core/util';
|
|
4
|
-
import { Button, DialogActions, DialogContent, MenuItem, Typography, } from '@mui/material';
|
|
2
|
+
import { Typography } from '@mui/material';
|
|
5
3
|
import { observer } from 'mobx-react';
|
|
6
4
|
import { makeStyles } from 'tss-react/mui';
|
|
5
|
+
import MsaAlgorithmSelect from './MsaAlgorithmSelect';
|
|
7
6
|
import { blastLaunchView } from './blastLaunchView';
|
|
8
|
-
import { msaAlgorithms } from './consts';
|
|
9
7
|
import ExternalLink from '../../../components/ExternalLink';
|
|
10
8
|
import TextField2 from '../../../components/TextField2';
|
|
11
|
-
import {
|
|
9
|
+
import { getBlastViewTitle, getLinearGenomeView } from '../../util';
|
|
10
|
+
import LaunchPanelContent from '../LaunchPanelContent';
|
|
11
|
+
import SubmitCancelActions from '../SubmitCancelActions';
|
|
12
12
|
import TranscriptSelector from '../TranscriptSelector';
|
|
13
13
|
import { useTranscriptSelection } from '../useTranscriptSelection';
|
|
14
14
|
const useStyles = makeStyles()({
|
|
15
|
-
dialogContent: {
|
|
16
|
-
width: '80em',
|
|
17
|
-
},
|
|
18
15
|
marginBottom: {
|
|
19
16
|
marginBottom: 16,
|
|
20
17
|
},
|
|
@@ -27,39 +24,34 @@ const useStyles = makeStyles()({
|
|
|
27
24
|
});
|
|
28
25
|
const NCBIBlastRIDPanel = observer(function ({ handleClose, feature, model, children, baseUrl, }) {
|
|
29
26
|
const { classes } = useStyles();
|
|
30
|
-
const view =
|
|
27
|
+
const view = getLinearGenomeView(model);
|
|
31
28
|
const [launchViewError, setLaunchViewError] = useState();
|
|
32
29
|
const [rid, setRid] = useState('');
|
|
33
30
|
const [selectedMsaAlgorithm, setSelectedMsaAlgorithm] = useState('clustalo');
|
|
34
|
-
const
|
|
35
|
-
const
|
|
31
|
+
const transcriptSelection = useTranscriptSelection({ feature, view });
|
|
32
|
+
const { selectedTranscript, proteinSequence } = transcriptSelection;
|
|
33
|
+
const e = transcriptSelection.error ?? launchViewError;
|
|
36
34
|
const trimmedRid = rid.trim();
|
|
37
35
|
return (React.createElement(React.Fragment, null,
|
|
38
|
-
React.createElement(
|
|
36
|
+
React.createElement(LaunchPanelContent, { error: e },
|
|
39
37
|
children,
|
|
40
|
-
e ? React.createElement(ErrorMessage, { error: e }) : null,
|
|
41
38
|
React.createElement(Typography, { variant: "body2", className: classes.marginBottom }, "Enter the RID (Request ID) from a previously submitted NCBI BLAST query. You can find the RID in the BLAST results page URL or at the top of the results page. RIDs are typically valid for 24-36 hours after submission."),
|
|
42
39
|
React.createElement(TextField2, { variant: "outlined", label: "BLAST RID", placeholder: "e.g., ABC12345", fullWidth: true, className: classes.marginBottom, value: rid, onChange: event => {
|
|
43
40
|
setRid(event.target.value);
|
|
44
41
|
} }),
|
|
45
42
|
trimmedRid ? (React.createElement(Typography, { variant: "body2", className: classes.marginBottom },
|
|
46
43
|
React.createElement(ExternalLink, { href: `${baseUrl}?CMD=Get&RID=${trimmedRid}` }, "View BLAST results on NCBI"))) : null,
|
|
47
|
-
React.createElement(
|
|
48
|
-
|
|
49
|
-
} }, msaAlgorithms.map(val => (React.createElement(MenuItem, { value: val, key: val }, val)))),
|
|
50
|
-
React.createElement(TranscriptSelector, { feature: feature, options: options, selectedId: selectedId, selectedTranscript: selectedTranscript, onTranscriptChange: setSelectedId, proteinSequence: proteinSequence }),
|
|
44
|
+
React.createElement(MsaAlgorithmSelect, { className: classes.ridField, value: selectedMsaAlgorithm, onChange: setSelectedMsaAlgorithm }),
|
|
45
|
+
React.createElement(TranscriptSelector, { feature: feature, ...transcriptSelection }),
|
|
51
46
|
React.createElement(Typography, { className: classes.infoText }, "This will fetch the BLAST results for the provided RID and run them through a multiple sequence alignment. The protein sequence from the selected transcript will be added as the query sequence in the MSA.")),
|
|
52
|
-
React.createElement(
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
if (!selectedTranscript || !trimmedRid) {
|
|
56
|
-
return;
|
|
57
|
-
}
|
|
47
|
+
React.createElement(SubmitCancelActions, { submitDisabled: !proteinSequence || !trimmedRid, onSubmit: () => {
|
|
48
|
+
try {
|
|
49
|
+
if (selectedTranscript && trimmedRid) {
|
|
58
50
|
setLaunchViewError(undefined);
|
|
59
51
|
blastLaunchView({
|
|
60
52
|
feature: selectedTranscript,
|
|
61
53
|
view,
|
|
62
|
-
newViewTitle:
|
|
54
|
+
newViewTitle: getBlastViewTitle(feature, selectedTranscript),
|
|
63
55
|
blastParams: {
|
|
64
56
|
baseUrl,
|
|
65
57
|
blastProgram: 'blastp',
|
|
@@ -72,14 +64,12 @@ const NCBIBlastRIDPanel = observer(function ({ handleClose, feature, model, chil
|
|
|
72
64
|
});
|
|
73
65
|
handleClose();
|
|
74
66
|
}
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
handleClose();
|
|
82
|
-
} }, "Cancel"))));
|
|
67
|
+
}
|
|
68
|
+
catch (e) {
|
|
69
|
+
console.error(e);
|
|
70
|
+
setLaunchViewError(e);
|
|
71
|
+
}
|
|
72
|
+
}, onCancel: handleClose })));
|
|
83
73
|
});
|
|
84
74
|
export default NCBIBlastRIDPanel;
|
|
85
75
|
//# sourceMappingURL=NCBIBlastRIDPanel.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NCBIBlastRIDPanel.js","sourceRoot":"","sources":["../../../../src/LaunchMsaView/components/NCBIBlastQuery/NCBIBlastRIDPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAEvC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"NCBIBlastRIDPanel.js","sourceRoot":"","sources":["../../../../src/LaunchMsaView/components/NCBIBlastQuery/NCBIBlastRIDPanel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,18 +1,11 @@
|
|
|
1
1
|
import useSWR from 'swr';
|
|
2
2
|
import { clearAllCachedResults, deleteCachedResult, getAllCachedResults, } from '../../../utils/blastCache';
|
|
3
|
-
|
|
4
|
-
revalidateOnFocus: false,
|
|
5
|
-
revalidateOnReconnect: false,
|
|
6
|
-
revalidateIfStale: false,
|
|
7
|
-
refreshWhenHidden: false,
|
|
8
|
-
refreshWhenOffline: false,
|
|
9
|
-
shouldRetryOnError: false,
|
|
10
|
-
};
|
|
3
|
+
import { staticSwrConfig } from '../../../utils/swrConfig';
|
|
11
4
|
export function useCachedBlastResults(geneIds) {
|
|
12
5
|
const { data: results, error, mutate, } = useSWR(`cached-blast-${geneIds.join(',')}`, async () => {
|
|
13
6
|
const cached = await getAllCachedResults();
|
|
14
7
|
return cached.filter(r => r.geneId && geneIds.includes(r.geneId));
|
|
15
|
-
},
|
|
8
|
+
}, staticSwrConfig);
|
|
16
9
|
const handleDelete = async (id) => {
|
|
17
10
|
await deleteCachedResult(id);
|
|
18
11
|
await mutate(results => results?.filter(result => result.id !== id) ?? [], false);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useCachedBlastResults.js","sourceRoot":"","sources":["../../../../src/LaunchMsaView/components/NCBIBlastQuery/useCachedBlastResults.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,KAAK,CAAA;AAExB,OAAO,EACL,qBAAqB,EACrB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,2BAA2B,CAAA;
|
|
1
|
+
{"version":3,"file":"useCachedBlastResults.js","sourceRoot":"","sources":["../../../../src/LaunchMsaView/components/NCBIBlastQuery/useCachedBlastResults.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,KAAK,CAAA;AAExB,OAAO,EACL,qBAAqB,EACrB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAE1D,MAAM,UAAU,qBAAqB,CAAC,OAAiB;IACrD,MAAM,EACJ,IAAI,EAAE,OAAO,EACb,KAAK,EACL,MAAM,GACP,GAAG,MAAM,CACR,gBAAgB,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EACnC,KAAK,IAAI,EAAE;QACT,MAAM,MAAM,GAAG,MAAM,mBAAmB,EAAE,CAAA;QAC1C,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAA;IACnE,CAAC,EACD,eAAe,CAChB,CAAA;IAED,MAAM,YAAY,GAAG,KAAK,EAAE,EAAU,EAAE,EAAE;QACxC,MAAM,kBAAkB,CAAC,EAAE,CAAC,CAAA;QAC5B,MAAM,MAAM,CACV,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,EAC5D,KAAK,CACN,CAAA;IACH,CAAC,CAAA;IAED,MAAM,cAAc,GAAG,KAAK,IAAI,EAAE;QAChC,MAAM,qBAAqB,EAAE,CAAA;QAC7B,MAAM,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,CAAA;IACzB,CAAC,CAAA;IAED,OAAO;QACL,OAAO,EAAE,OAAO,IAAI,EAAE;QACtB,KAAK;QACL,SAAS,EAAE,CAAC,OAAO,IAAI,CAAC,KAAK;QAC7B,YAAY;QACZ,cAAc;KACf,CAAA;AACH,CAAC"}
|
|
@@ -1,29 +1,28 @@
|
|
|
1
1
|
import React, { useState } from 'react';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
2
|
+
import { LoadingEllipses, SanitizedHTML } from '@jbrowse/core/ui';
|
|
3
|
+
import { getEnv, getSession } from '@jbrowse/core/util';
|
|
4
|
+
import { MenuItem } from '@mui/material';
|
|
5
5
|
import { observer } from 'mobx-react';
|
|
6
6
|
import useSWR from 'swr';
|
|
7
7
|
import { makeStyles } from 'tss-react/mui';
|
|
8
8
|
import TextField2 from '../../../components/TextField2';
|
|
9
|
-
import {
|
|
9
|
+
import { staticSwrConfig } from '../../../utils/swrConfig';
|
|
10
|
+
import { getGeneDisplayName, getLinearGenomeView } from '../../util';
|
|
11
|
+
import LaunchPanelContent from '../LaunchPanelContent';
|
|
12
|
+
import SubmitCancelActions from '../SubmitCancelActions';
|
|
10
13
|
import TranscriptSelector from '../TranscriptSelector';
|
|
11
14
|
import { useTranscriptSelection } from '../useTranscriptSelection';
|
|
12
|
-
import { swrFlags } from './consts';
|
|
13
15
|
import { fetchMSA, fetchMSAList } from './fetchMSAData';
|
|
14
16
|
import { preCalculatedLaunchView } from './preCalculatedLaunchView';
|
|
15
17
|
import { readMsaDatasets } from './types';
|
|
16
18
|
const useStyles = makeStyles()({
|
|
17
|
-
dialogContent: {
|
|
18
|
-
width: '80em',
|
|
19
|
-
},
|
|
20
19
|
selectedContainer: {
|
|
21
20
|
marginTop: 50,
|
|
22
21
|
},
|
|
23
22
|
});
|
|
24
23
|
const PreLoadedMSA = observer(function ({ model, feature, handleClose, }) {
|
|
25
24
|
const session = getSession(model);
|
|
26
|
-
const view =
|
|
25
|
+
const view = getLinearGenomeView(model);
|
|
27
26
|
const { classes } = useStyles();
|
|
28
27
|
const { pluginManager } = getEnv(model);
|
|
29
28
|
const { assemblyNames } = view;
|
|
@@ -31,19 +30,26 @@ const PreLoadedMSA = observer(function ({ model, feature, handleClose, }) {
|
|
|
31
30
|
const datasets = readMsaDatasets(session.jbrowse);
|
|
32
31
|
const [selectedDatasetId, setSelectedDatasetId] = useState(datasets?.[0]?.datasetId);
|
|
33
32
|
const selectedDataset = datasets?.find(d => d.datasetId === selectedDatasetId);
|
|
34
|
-
const { data: msaList, isLoading: msaListLoading, error: msaListFetchError, } = useSWR(selectedDataset ? `${selectedDataset.datasetId}-msa-list` : null, () => fetchMSAList({ config: selectedDataset.adapter, pluginManager }),
|
|
35
|
-
const
|
|
33
|
+
const { data: msaList, isLoading: msaListLoading, error: msaListFetchError, } = useSWR(selectedDataset ? `${selectedDataset.datasetId}-msa-list` : null, () => fetchMSAList({ config: selectedDataset.adapter, pluginManager }), staticSwrConfig);
|
|
34
|
+
const transcriptSelection = useTranscriptSelection({
|
|
35
|
+
feature,
|
|
36
|
+
view,
|
|
37
|
+
validIds: msaList,
|
|
38
|
+
});
|
|
39
|
+
const { selectedId, selectedTranscript } = transcriptSelection;
|
|
36
40
|
const { data: msaData, isLoading: msaDataLoading, error: msaDataFetchError, } = useSWR(selectedId && selectedDataset && msaList
|
|
37
41
|
? `${selectedDataset.datasetId}-${selectedId}-${msaList.length}-msa`
|
|
38
42
|
: null, () => fetchMSA({
|
|
39
43
|
msaId: selectedId,
|
|
40
44
|
config: selectedDataset.adapter,
|
|
41
45
|
pluginManager,
|
|
42
|
-
}),
|
|
43
|
-
const e = msaListFetchError ??
|
|
46
|
+
}), staticSwrConfig);
|
|
47
|
+
const e = msaListFetchError ??
|
|
48
|
+
msaDataFetchError ??
|
|
49
|
+
transcriptSelection.error ??
|
|
50
|
+
viewError;
|
|
44
51
|
return (React.createElement(React.Fragment, null,
|
|
45
|
-
React.createElement(
|
|
46
|
-
e ? React.createElement(ErrorMessage, { error: e }) : null,
|
|
52
|
+
React.createElement(LaunchPanelContent, { error: e },
|
|
47
53
|
React.createElement(TextField2, { select: true, label: "Select MSA dataset", value: selectedDatasetId, onChange: event => {
|
|
48
54
|
setSelectedDatasetId(event.target.value);
|
|
49
55
|
} }, datasets?.map(d => (React.createElement(MenuItem, { key: d.datasetId, value: d.datasetId }, d.name)))),
|
|
@@ -52,13 +58,10 @@ const PreLoadedMSA = observer(function ({ model, feature, handleClose, }) {
|
|
|
52
58
|
msaListLoading ? (React.createElement(LoadingEllipses, { variant: "h6", message: `Loading available MSAs for (${selectedDataset.name})` })) : null,
|
|
53
59
|
msaList ? (React.createElement("div", null,
|
|
54
60
|
React.createElement(SanitizedHTML, { html: selectedDataset.description }),
|
|
55
|
-
React.createElement(TranscriptSelector, { feature: feature,
|
|
56
|
-
React.createElement(
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
if (!selectedTranscript || !msaData) {
|
|
60
|
-
return;
|
|
61
|
-
}
|
|
61
|
+
React.createElement(TranscriptSelector, { feature: feature, ...transcriptSelection }))) : null)) : null),
|
|
62
|
+
React.createElement(SubmitCancelActions, { submitDisabled: !selectedTranscript || !msaData?.length, onSubmit: () => {
|
|
63
|
+
try {
|
|
64
|
+
if (selectedTranscript && msaData) {
|
|
62
65
|
const querySeqName = `${selectedId}_${assemblyNames[0]}`;
|
|
63
66
|
preCalculatedLaunchView({
|
|
64
67
|
session,
|
|
@@ -74,13 +77,11 @@ const PreLoadedMSA = observer(function ({ model, feature, handleClose, }) {
|
|
|
74
77
|
});
|
|
75
78
|
handleClose();
|
|
76
79
|
}
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
handleClose();
|
|
83
|
-
} }, "Cancel"))));
|
|
80
|
+
}
|
|
81
|
+
catch (e) {
|
|
82
|
+
setViewError(e);
|
|
83
|
+
}
|
|
84
|
+
}, onCancel: handleClose })));
|
|
84
85
|
});
|
|
85
86
|
export default PreLoadedMSA;
|
|
86
87
|
//# sourceMappingURL=PreLoadedMSADataPanel.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PreLoadedMSADataPanel.js","sourceRoot":"","sources":["../../../../src/LaunchMsaView/components/PreLoadedMSA/PreLoadedMSADataPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAEvC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"PreLoadedMSADataPanel.js","sourceRoot":"","sources":["../../../../src/LaunchMsaView/components/PreLoadedMSA/PreLoadedMSADataPanel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import { getAdapter } from '@jbrowse/core/data_adapters/dataAdapterCache';
|
|
2
|
-
|
|
2
|
+
async function getMsaAdapter(pluginManager, config) {
|
|
3
3
|
const result = await getAdapter(pluginManager, 'msa', config);
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
return result.dataAdapter;
|
|
5
|
+
}
|
|
6
|
+
export async function fetchMSAList({ config, pluginManager, }) {
|
|
7
|
+
const adapter = await getMsaAdapter(pluginManager, config);
|
|
8
|
+
return adapter.getMSAList();
|
|
6
9
|
}
|
|
7
10
|
export async function fetchMSA({ config, pluginManager, msaId, }) {
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
-
return result.dataAdapter.getMSA(msaId);
|
|
11
|
+
const adapter = await getMsaAdapter(pluginManager, config);
|
|
12
|
+
return adapter.getMSA(msaId);
|
|
11
13
|
}
|
|
12
14
|
//# sourceMappingURL=fetchMSAData.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetchMSAData.js","sourceRoot":"","sources":["../../../../src/LaunchMsaView/components/PreLoadedMSA/fetchMSAData.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,8CAA8C,CAAA;
|
|
1
|
+
{"version":3,"file":"fetchMSAData.js","sourceRoot":"","sources":["../../../../src/LaunchMsaView/components/PreLoadedMSA/fetchMSAData.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,8CAA8C,CAAA;AAWzE,KAAK,UAAU,aAAa,CAC1B,aAA4B,EAC5B,MAA6B;IAE7B,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,aAAa,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;IAC7D,OAAO,MAAM,CAAC,WAAwC,CAAA;AACxD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,EACjC,MAAM,EACN,aAAa,GAId;IACC,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,aAAa,EAAE,MAAM,CAAC,CAAA;IAC1D,OAAO,OAAO,CAAC,UAAU,EAAE,CAAA;AAC7B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,EAC7B,MAAM,EACN,aAAa,EACb,KAAK,GAKN;IACC,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,aAAa,EAAE,MAAM,CAAC,CAAA;IAC1D,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AAC9B,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export default function SubmitCancelActions({ onSubmit, onCancel, submitDisabled, submitLabel, cancelLabel, }: {
|
|
3
|
+
onSubmit: () => void;
|
|
4
|
+
onCancel: () => void;
|
|
5
|
+
submitDisabled?: boolean;
|
|
6
|
+
submitLabel?: string;
|
|
7
|
+
cancelLabel?: string;
|
|
8
|
+
}): React.JSX.Element;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Button, DialogActions } from '@mui/material';
|
|
3
|
+
export default function SubmitCancelActions({ onSubmit, onCancel, submitDisabled, submitLabel = 'Submit', cancelLabel = 'Cancel', }) {
|
|
4
|
+
return (React.createElement(DialogActions, null,
|
|
5
|
+
React.createElement(Button, { color: "primary", variant: "contained", disabled: submitDisabled, onClick: () => {
|
|
6
|
+
onSubmit();
|
|
7
|
+
} }, submitLabel),
|
|
8
|
+
React.createElement(Button, { color: "secondary", variant: "contained", onClick: () => {
|
|
9
|
+
onCancel();
|
|
10
|
+
} }, cancelLabel)));
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=SubmitCancelActions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SubmitCancelActions.js","sourceRoot":"","sources":["../../../src/LaunchMsaView/components/SubmitCancelActions.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAErD,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,EAC1C,QAAQ,EACR,QAAQ,EACR,cAAc,EACd,WAAW,GAAG,QAAQ,EACtB,WAAW,GAAG,QAAQ,GAOvB;IACC,OAAO,CACL,oBAAC,aAAa;QACZ,oBAAC,MAAM,IACL,KAAK,EAAC,SAAS,EACf,OAAO,EAAC,WAAW,EACnB,QAAQ,EAAE,cAAc,EACxB,OAAO,EAAE,GAAG,EAAE;gBACZ,QAAQ,EAAE,CAAA;YACZ,CAAC,IAEA,WAAW,CACL;QACT,oBAAC,MAAM,IACL,KAAK,EAAC,WAAW,EACjB,OAAO,EAAC,WAAW,EACnB,OAAO,EAAE,GAAG,EAAE;gBACZ,QAAQ,EAAE,CAAA;YACZ,CAAC,IAEA,WAAW,CACL,CACK,CACjB,CAAA;AACH,CAAC"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import type { Feature } from '@jbrowse/core/util';
|
|
3
|
-
export default function TranscriptSelector({ feature, options, selectedId, selectedTranscript,
|
|
3
|
+
export default function TranscriptSelector({ feature, options, selectedId, selectedTranscript, setSelectedId, proteinSequence, validIds, }: {
|
|
4
4
|
feature: Feature;
|
|
5
5
|
options: Feature[];
|
|
6
6
|
selectedId: string;
|
|
7
7
|
selectedTranscript: Feature | undefined;
|
|
8
|
-
|
|
8
|
+
setSelectedId: (transcriptId: string) => void;
|
|
9
9
|
proteinSequence: string | undefined;
|
|
10
10
|
validIds?: string[];
|
|
11
11
|
}): React.JSX.Element;
|
|
@@ -15,13 +15,13 @@ const useStyles = makeStyles()({
|
|
|
15
15
|
marginLeft: 20,
|
|
16
16
|
},
|
|
17
17
|
});
|
|
18
|
-
export default function TranscriptSelector({ feature, options, selectedId, selectedTranscript,
|
|
18
|
+
export default function TranscriptSelector({ feature, options, selectedId, selectedTranscript, setSelectedId, proteinSequence, validIds, }) {
|
|
19
19
|
const { classes } = useStyles();
|
|
20
20
|
const [showSequence, setShowSequence] = useState(false);
|
|
21
21
|
return (React.createElement(React.Fragment, null,
|
|
22
22
|
React.createElement("div", { className: classes.flex },
|
|
23
23
|
React.createElement(TextField, { variant: "outlined", label: `Choose isoform of ${getGeneDisplayName(feature)}`, select: true, className: classes.minWidth, value: selectedId, onChange: event => {
|
|
24
|
-
|
|
24
|
+
setSelectedId(event.target.value);
|
|
25
25
|
} }, options.map(val => {
|
|
26
26
|
const inSet = validIds
|
|
27
27
|
? validIds.some(id => featureMatchesId(val, id))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TranscriptSelector.js","sourceRoot":"","sources":["../../../src/LaunchMsaView/components/TranscriptSelector.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAEvC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAE1C,OAAO,kBAAkB,MAAM,qCAAqC,CAAA;AACpE,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,KAAK,EACL,wBAAwB,EACxB,mBAAmB,GACpB,MAAM,SAAS,CAAA;AAIhB,MAAM,SAAS,GAAG,UAAU,EAAE,CAAC;IAC7B,IAAI,EAAE;QACJ,OAAO,EAAE,MAAM;KAChB;IACD,QAAQ,EAAE;QACR,QAAQ,EAAE,GAAG;KACd;IACD,QAAQ,EAAE;QACR,YAAY,EAAE,QAAQ;QACtB,UAAU,EAAE,EAAE;KACf;CACF,CAAC,CAAA;AAEF,MAAM,CAAC,OAAO,UAAU,kBAAkB,CAAC,EACzC,OAAO,EACP,OAAO,EACP,UAAU,EACV,kBAAkB,EAClB,
|
|
1
|
+
{"version":3,"file":"TranscriptSelector.js","sourceRoot":"","sources":["../../../src/LaunchMsaView/components/TranscriptSelector.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { getSession } from '@jbrowse/core/util';
|
|
2
2
|
import useSWR from 'swr';
|
|
3
3
|
import { fetchSeq } from './fetchSeq';
|
|
4
|
+
import { staticSwrConfig } from '../../utils/swrConfig';
|
|
4
5
|
async function featureSequenceFetcher({ feature, assemblyName, view, }) {
|
|
5
6
|
const session = getSession(view);
|
|
6
7
|
const { start, end, refName } = feature.toJSON();
|
|
@@ -15,19 +16,8 @@ async function featureSequenceFetcher({ feature, assemblyName, view, }) {
|
|
|
15
16
|
}
|
|
16
17
|
export function useSWRFeatureSequence({ view, feature, }) {
|
|
17
18
|
const assemblyName = view?.assemblyNames?.[0];
|
|
18
|
-
const {
|
|
19
|
-
|
|
20
|
-
feature && assemblyName && view
|
|
21
|
-
? [feature.id(), assemblyName, 'feature-sequence']
|
|
22
|
-
: null, () => featureSequenceFetcher({
|
|
23
|
-
feature: feature,
|
|
24
|
-
assemblyName: assemblyName,
|
|
25
|
-
view: view,
|
|
26
|
-
}), {
|
|
27
|
-
revalidateOnFocus: false,
|
|
28
|
-
revalidateOnReconnect: false,
|
|
29
|
-
revalidateIfStale: false,
|
|
30
|
-
});
|
|
19
|
+
const args = feature && assemblyName ? { feature, assemblyName, view } : undefined;
|
|
20
|
+
const { data, error } = useSWR(args ? [args.feature.id(), args.assemblyName, 'feature-sequence'] : null, () => featureSequenceFetcher(args), staticSwrConfig);
|
|
31
21
|
return {
|
|
32
22
|
sequence: data,
|
|
33
23
|
error,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSWRFeatureSequence.js","sourceRoot":"","sources":["../../../src/LaunchMsaView/components/useSWRFeatureSequence.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAC/C,OAAO,MAAM,MAAM,KAAK,CAAA;AAExB,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"useSWRFeatureSequence.js","sourceRoot":"","sources":["../../../src/LaunchMsaView/components/useSWRFeatureSequence.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAC/C,OAAO,MAAM,MAAM,KAAK,CAAA;AAExB,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAIvD,KAAK,UAAU,sBAAsB,CAAC,EACpC,OAAO,EACP,YAAY,EACZ,IAAI,GAKL;IACC,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA;IAChC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,MAAM,EAI7C,CAAA;IACD,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC;QACzB,KAAK;QACL,GAAG;QACH,OAAO;QACP,YAAY;QACZ,OAAO;KACR,CAAC,CAAA;IACF,OAAO,EAAE,GAAG,EAAE,CAAA;AAChB,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,EACpC,IAAI,EACJ,OAAO,GAIR;IACC,MAAM,YAAY,GAAG,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,CAAA;IAC7C,MAAM,IAAI,GACR,OAAO,IAAI,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;IACvE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,CAC5B,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,YAAY,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC,IAAI,EACxE,GAAG,EAAE,CAAC,sBAAsB,CAAC,IAAK,CAAC,EACnC,eAAe,CAChB,CAAA;IAED,OAAO;QACL,QAAQ,EAAE,IAAI;QACd,KAAK;KACN,CAAA;AACH,CAAC"}
|
|
@@ -1,24 +1,22 @@
|
|
|
1
1
|
import { useMemo, useState } from 'react';
|
|
2
2
|
import { featureMatchesId, getId, getSortedTranscriptFeatures } from '../util';
|
|
3
3
|
import { useFeatureSequence } from './useFeatureSequence';
|
|
4
|
-
function featureInValidIds(feature, validIds) {
|
|
5
|
-
return validIds.some(id => featureMatchesId(feature, id));
|
|
6
|
-
}
|
|
7
4
|
function findValidSelection(currentId, options, validIds) {
|
|
8
|
-
if (
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
5
|
+
if (validIds && validIds.length > 0) {
|
|
6
|
+
const currentFeature = options.find(opt => getId(opt) === currentId);
|
|
7
|
+
const currentIsValid = currentFeature &&
|
|
8
|
+
validIds.some(id => featureMatchesId(currentFeature, id));
|
|
9
|
+
if (currentFeature && !currentIsValid) {
|
|
10
|
+
const validOption = options.find(opt => validIds.some(id => featureMatchesId(opt, id)));
|
|
11
|
+
return validOption ? getId(validOption) : undefined;
|
|
12
|
+
}
|
|
14
13
|
}
|
|
15
|
-
|
|
16
|
-
return validOption ? getId(validOption) : undefined;
|
|
14
|
+
return undefined;
|
|
17
15
|
}
|
|
18
16
|
export function useTranscriptSelection({ feature, view, validIds, }) {
|
|
19
17
|
const options = useMemo(() => getSortedTranscriptFeatures(feature), [feature]);
|
|
20
18
|
const [selectedId, setSelectedId] = useState(() => getId(options[0]));
|
|
21
|
-
const validatedSelectedId = findValidSelection(selectedId, options, validIds)
|
|
19
|
+
const validatedSelectedId = findValidSelection(selectedId, options, validIds) ?? selectedId;
|
|
22
20
|
const selectedTranscript = options.find(val => getId(val) === validatedSelectedId);
|
|
23
21
|
const { proteinSequence, error } = useFeatureSequence({
|
|
24
22
|
view,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTranscriptSelection.js","sourceRoot":"","sources":["../../../src/LaunchMsaView/components/useTranscriptSelection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAEzC,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,2BAA2B,EAAE,MAAM,SAAS,CAAA;AAC9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAIzD,SAAS,
|
|
1
|
+
{"version":3,"file":"useTranscriptSelection.js","sourceRoot":"","sources":["../../../src/LaunchMsaView/components/useTranscriptSelection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAEzC,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,2BAA2B,EAAE,MAAM,SAAS,CAAA;AAC9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAIzD,SAAS,kBAAkB,CACzB,SAAiB,EACjB,OAAkB,EAClB,QAA8B;IAE9B,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpC,MAAM,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,CAAA;QACpE,MAAM,cAAc,GAClB,cAAc;YACd,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,CAAA;QAC3D,IAAI,cAAc,IAAI,CAAC,cAAc,EAAE,CAAC;YACtC,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CACrC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAC/C,CAAA;YACD,OAAO,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;QACrD,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,EACrC,OAAO,EACP,IAAI,EACJ,QAAQ,GAKT;IACC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,2BAA2B,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAA;IAC9E,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACrE,MAAM,mBAAmB,GACvB,kBAAkB,CAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,CAAC,IAAI,UAAU,CAAA;IACjE,MAAM,kBAAkB,GAAG,OAAO,CAAC,IAAI,CACrC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,mBAAmB,CAC1C,CAAA;IACD,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,GAAG,kBAAkB,CAAC;QACpD,IAAI;QACJ,OAAO,EAAE,kBAAkB;KAC5B,CAAC,CAAA;IAEF,OAAO;QACL,OAAO;QACP,UAAU,EAAE,mBAAmB;QAC/B,aAAa;QACb,kBAAkB;QAClB,eAAe;QACf,KAAK;QACL,QAAQ;KACT,CAAA;AACH,CAAC"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import type { Feature } from '@jbrowse/core/util';
|
|
1
|
+
import type { AbstractTrackModel, Feature } from '@jbrowse/core/util';
|
|
2
|
+
import type { LinearGenomeViewModel } from '@jbrowse/plugin-linear-genome-view';
|
|
3
|
+
export declare function getLinearGenomeView(model: AbstractTrackModel): LinearGenomeViewModel;
|
|
2
4
|
export declare function getTranscriptFeatures(feature: Feature): Feature[];
|
|
3
5
|
export declare function getTranscriptLength(feature: Feature): {
|
|
4
6
|
len: number;
|
|
@@ -9,6 +11,7 @@ export declare function getMatchableIds(val?: Feature): string[];
|
|
|
9
11
|
export declare function featureMatchesId(feature: Feature, id: string): boolean;
|
|
10
12
|
export declare function getTranscriptDisplayName(val?: Feature): string;
|
|
11
13
|
export declare function getGeneDisplayName(val?: Feature): string;
|
|
14
|
+
export declare function getBlastViewTitle(feature: Feature, transcript: Feature): string;
|
|
12
15
|
export declare function getSortedTranscriptFeatures(feature: Feature): Feature[];
|
|
13
16
|
export declare function cleanProteinSequence(seq: string): string;
|
|
14
17
|
export declare function getGeneIdentifiers(feature: Feature): string[];
|
|
@@ -1,4 +1,13 @@
|
|
|
1
|
-
import { sum } from '@jbrowse/core/util';
|
|
1
|
+
import { getContainingView, sum } from '@jbrowse/core/util';
|
|
2
|
+
export function getLinearGenomeView(model) {
|
|
3
|
+
return getContainingView(model);
|
|
4
|
+
}
|
|
5
|
+
function uniqueDefined(vals) {
|
|
6
|
+
return [...new Set(vals.filter((v) => !!v))];
|
|
7
|
+
}
|
|
8
|
+
function joinDefined(sep, parts) {
|
|
9
|
+
return parts.filter((p) => !!p).join(sep);
|
|
10
|
+
}
|
|
2
11
|
export function getTranscriptFeatures(feature) {
|
|
3
12
|
// check if we are looking at a 'two-level' or 'three-level' feature by
|
|
4
13
|
// finding exon/CDS subfeatures. we want to select from transcript names
|
|
@@ -28,34 +37,31 @@ export function getId(val) {
|
|
|
28
37
|
return val?.id() ?? '';
|
|
29
38
|
}
|
|
30
39
|
export function getMatchableIds(val) {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
].filter((id) => !!id);
|
|
40
|
-
return [...new Set(ids)];
|
|
40
|
+
return val
|
|
41
|
+
? uniqueDefined([
|
|
42
|
+
val.id(),
|
|
43
|
+
val.get('name'),
|
|
44
|
+
val.get('id'),
|
|
45
|
+
val.get('transcript_id'),
|
|
46
|
+
])
|
|
47
|
+
: [];
|
|
41
48
|
}
|
|
42
49
|
export function featureMatchesId(feature, id) {
|
|
43
50
|
return getMatchableIds(feature).includes(id);
|
|
44
51
|
}
|
|
45
52
|
export function getTranscriptDisplayName(val) {
|
|
46
|
-
return val
|
|
47
|
-
? ''
|
|
48
|
-
: [val.get('name'), val.get('id')].filter(f => !!f).join(' ');
|
|
53
|
+
return val ? joinDefined(' ', [val.get('name'), val.get('id')]) : '';
|
|
49
54
|
}
|
|
50
55
|
export function getGeneDisplayName(val) {
|
|
51
|
-
return val
|
|
52
|
-
? ''
|
|
53
|
-
: [
|
|
56
|
+
return val
|
|
57
|
+
? joinDefined(' ', [
|
|
54
58
|
val.get('gene_name') ?? val.get('name'),
|
|
55
|
-
val.get('id') ? `(${val.get('id')})` :
|
|
56
|
-
]
|
|
57
|
-
|
|
58
|
-
|
|
59
|
+
val.get('id') ? `(${val.get('id')})` : undefined,
|
|
60
|
+
])
|
|
61
|
+
: '';
|
|
62
|
+
}
|
|
63
|
+
export function getBlastViewTitle(feature, transcript) {
|
|
64
|
+
return `BLAST - ${getGeneDisplayName(feature)} - ${getTranscriptDisplayName(transcript)}`;
|
|
59
65
|
}
|
|
60
66
|
export function getSortedTranscriptFeatures(feature) {
|
|
61
67
|
const transcripts = getTranscriptFeatures(feature);
|
|
@@ -65,13 +71,12 @@ export function cleanProteinSequence(seq) {
|
|
|
65
71
|
return seq.replaceAll('*', '').replaceAll('&', '');
|
|
66
72
|
}
|
|
67
73
|
export function getGeneIdentifiers(feature) {
|
|
68
|
-
|
|
74
|
+
return uniqueDefined([
|
|
69
75
|
feature.id(),
|
|
70
76
|
feature.get('id'),
|
|
71
77
|
feature.get('name'),
|
|
72
78
|
feature.get('gene_id'),
|
|
73
79
|
feature.get('gene_name'),
|
|
74
|
-
]
|
|
75
|
-
return [...new Set(ids)];
|
|
80
|
+
]);
|
|
76
81
|
}
|
|
77
82
|
//# sourceMappingURL=util.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/LaunchMsaView/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/LaunchMsaView/util.ts"],"names":[],"mappings":"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"}
|