jbrowse-plugin-msaview 1.0.18 → 2.0.1

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 (147) hide show
  1. package/CHANGELOG.md +6 -4
  2. package/README.md +6 -4
  3. package/dist/AddHighlightModel/GenomeMouseoverHighlight.d.ts +6 -0
  4. package/dist/AddHighlightModel/GenomeMouseoverHighlight.js +30 -0
  5. package/dist/AddHighlightModel/GenomeMouseoverHighlight.js.map +1 -0
  6. package/dist/AddHighlightModel/HighlightComponents.d.ts +7 -0
  7. package/dist/AddHighlightModel/HighlightComponents.js +12 -0
  8. package/dist/AddHighlightModel/HighlightComponents.js.map +1 -0
  9. package/dist/AddHighlightModel/MsaToGenomeHighlight.d.ts +7 -0
  10. package/dist/AddHighlightModel/MsaToGenomeHighlight.js +26 -0
  11. package/dist/AddHighlightModel/MsaToGenomeHighlight.js.map +1 -0
  12. package/dist/AddHighlightModel/index.d.ts +2 -0
  13. package/dist/AddHighlightModel/index.js +14 -0
  14. package/dist/AddHighlightModel/index.js.map +1 -0
  15. package/dist/AddHighlightModel/util.d.ts +9 -0
  16. package/dist/AddHighlightModel/util.js +14 -0
  17. package/dist/AddHighlightModel/util.js.map +1 -0
  18. package/dist/LaunchMsaView/components/LaunchMsaViewDialog.d.ts +7 -0
  19. package/dist/LaunchMsaView/components/LaunchMsaViewDialog.js +20 -0
  20. package/dist/LaunchMsaView/components/LaunchMsaViewDialog.js.map +1 -0
  21. package/dist/LaunchMsaView/components/NewNCBIBlastQuery/NcbiBlastPanel.d.ts +8 -0
  22. package/dist/LaunchMsaView/components/NewNCBIBlastQuery/NcbiBlastPanel.js +76 -0
  23. package/dist/LaunchMsaView/components/NewNCBIBlastQuery/NcbiBlastPanel.js.map +1 -0
  24. package/dist/LaunchMsaView/components/NewNCBIBlastQuery/calculateProteinSequence.d.ts +26 -0
  25. package/dist/LaunchMsaView/components/NewNCBIBlastQuery/calculateProteinSequence.js +48 -0
  26. package/dist/LaunchMsaView/components/NewNCBIBlastQuery/calculateProteinSequence.js.map +1 -0
  27. package/dist/LaunchMsaView/components/NewNCBIBlastQuery/index.d.ts +2 -0
  28. package/dist/LaunchMsaView/components/NewNCBIBlastQuery/index.js +3 -0
  29. package/dist/LaunchMsaView/components/NewNCBIBlastQuery/index.js.map +1 -0
  30. package/dist/LaunchMsaView/components/NewNCBIBlastQuery/ncbiBlastLaunchView.d.ts +8 -0
  31. package/dist/LaunchMsaView/components/NewNCBIBlastQuery/ncbiBlastLaunchView.js +17 -0
  32. package/dist/LaunchMsaView/components/NewNCBIBlastQuery/ncbiBlastLaunchView.js.map +1 -0
  33. package/dist/LaunchMsaView/components/NewNCBIBlastQuery/useFeatureSequence.d.ts +20 -0
  34. package/dist/LaunchMsaView/components/NewNCBIBlastQuery/useFeatureSequence.js +64 -0
  35. package/dist/LaunchMsaView/components/NewNCBIBlastQuery/useFeatureSequence.js.map +1 -0
  36. package/dist/LaunchMsaView/components/NewNCBIBlastQuery/util.d.ts +5 -0
  37. package/dist/LaunchMsaView/components/NewNCBIBlastQuery/util.js +7 -0
  38. package/dist/LaunchMsaView/components/NewNCBIBlastQuery/util.js.map +1 -0
  39. package/dist/LaunchMsaView/components/PreLoadedMSA/PreLoadedMSADataPanel.d.ts +8 -0
  40. package/dist/LaunchMsaView/components/PreLoadedMSA/PreLoadedMSADataPanel.js +90 -0
  41. package/dist/LaunchMsaView/components/PreLoadedMSA/PreLoadedMSADataPanel.js.map +1 -0
  42. package/dist/LaunchMsaView/components/PreLoadedMSA/fetchGeneList.d.ts +1 -0
  43. package/dist/LaunchMsaView/components/PreLoadedMSA/fetchGeneList.js +12 -0
  44. package/dist/LaunchMsaView/components/PreLoadedMSA/fetchGeneList.js.map +1 -0
  45. package/dist/LaunchMsaView/components/PreLoadedMSA/preCalculatedLaunchView.d.ts +9 -0
  46. package/dist/LaunchMsaView/components/PreLoadedMSA/preCalculatedLaunchView.js +36 -0
  47. package/dist/LaunchMsaView/components/PreLoadedMSA/preCalculatedLaunchView.js.map +1 -0
  48. package/dist/LaunchMsaView/components/TabUtils.d.ts +12 -0
  49. package/dist/LaunchMsaView/components/TabUtils.js +13 -0
  50. package/dist/LaunchMsaView/components/TabUtils.js.map +1 -0
  51. package/dist/LaunchMsaView/index.d.ts +2 -0
  52. package/dist/LaunchMsaView/index.js +50 -0
  53. package/dist/LaunchMsaView/index.js.map +1 -0
  54. package/dist/LaunchMsaView/util.d.ts +5 -0
  55. package/dist/LaunchMsaView/util.js +25 -0
  56. package/dist/LaunchMsaView/util.js.map +1 -0
  57. package/dist/MsaViewPanel/components/LoadingBLAST.d.ts +6 -0
  58. package/dist/MsaViewPanel/components/LoadingBLAST.js +36 -0
  59. package/dist/MsaViewPanel/components/LoadingBLAST.js.map +1 -0
  60. package/dist/MsaViewPanel/components/MsaViewPanel.d.ts +6 -0
  61. package/dist/MsaViewPanel/components/MsaViewPanel.js +10 -0
  62. package/dist/MsaViewPanel/components/MsaViewPanel.js.map +1 -0
  63. package/dist/MsaViewPanel/components/RIDLink.d.ts +5 -0
  64. package/dist/MsaViewPanel/components/RIDLink.js +17 -0
  65. package/dist/MsaViewPanel/components/RIDLink.js.map +1 -0
  66. package/dist/MsaViewPanel/doLaunchBlast.d.ts +7 -0
  67. package/dist/MsaViewPanel/doLaunchBlast.js +27 -0
  68. package/dist/MsaViewPanel/doLaunchBlast.js.map +1 -0
  69. package/dist/MsaViewPanel/genomeToMSA.d.ts +4 -0
  70. package/dist/MsaViewPanel/genomeToMSA.js +18 -0
  71. package/dist/MsaViewPanel/genomeToMSA.js.map +1 -0
  72. package/dist/MsaViewPanel/index.d.ts +2 -0
  73. package/dist/MsaViewPanel/index.js +16 -0
  74. package/dist/MsaViewPanel/index.js.map +1 -0
  75. package/dist/MsaViewPanel/model.d.ts +600 -0
  76. package/dist/MsaViewPanel/model.js +235 -0
  77. package/dist/MsaViewPanel/model.js.map +1 -0
  78. package/dist/MsaViewPanel/msaCoordToGenomeCoord.d.ts +9 -0
  79. package/dist/MsaViewPanel/msaCoordToGenomeCoord.js +20 -0
  80. package/dist/MsaViewPanel/msaCoordToGenomeCoord.js.map +1 -0
  81. package/dist/MsaViewPanel/util.d.ts +8 -0
  82. package/dist/MsaViewPanel/util.js +7 -0
  83. package/dist/MsaViewPanel/util.js.map +1 -0
  84. package/dist/OpenInNewIcon.d.ts +3 -0
  85. package/dist/OpenInNewIcon.js +8 -0
  86. package/dist/OpenInNewIcon.js.map +1 -0
  87. package/dist/TextField2.d.ts +4 -0
  88. package/dist/TextField2.js +8 -0
  89. package/dist/TextField2.js.map +1 -0
  90. package/dist/index.d.ts +8 -8
  91. package/dist/index.js +32 -7
  92. package/dist/index.js.map +1 -0
  93. package/dist/jbrowse-plugin-msaview.umd.production.min.js +93 -1
  94. package/dist/jbrowse-plugin-msaview.umd.production.min.js.map +7 -1
  95. package/dist/utils/fetch.d.ts +4 -0
  96. package/dist/utils/fetch.js +19 -0
  97. package/dist/utils/fetch.js.map +1 -0
  98. package/dist/utils/msa.d.ts +8 -0
  99. package/dist/utils/msa.js +75 -0
  100. package/dist/utils/msa.js.map +1 -0
  101. package/dist/utils/ncbiBlast.d.ts +20 -0
  102. package/dist/utils/ncbiBlast.js +66 -0
  103. package/dist/utils/ncbiBlast.js.map +1 -0
  104. package/package.json +51 -40
  105. package/src/AddHighlightModel/GenomeMouseoverHighlight.tsx +44 -0
  106. package/src/AddHighlightModel/HighlightComponents.tsx +24 -0
  107. package/src/AddHighlightModel/MsaToGenomeHighlight.tsx +50 -0
  108. package/src/AddHighlightModel/index.tsx +27 -0
  109. package/src/AddHighlightModel/util.ts +14 -0
  110. package/src/LaunchMsaView/components/LaunchMsaViewDialog.tsx +52 -0
  111. package/src/LaunchMsaView/components/NewNCBIBlastQuery/NcbiBlastPanel.tsx +160 -0
  112. package/src/LaunchMsaView/components/NewNCBIBlastQuery/calculateProteinSequence.ts +92 -0
  113. package/src/LaunchMsaView/components/NewNCBIBlastQuery/index.tsx +2 -0
  114. package/src/LaunchMsaView/components/NewNCBIBlastQuery/ncbiBlastLaunchView.ts +28 -0
  115. package/src/LaunchMsaView/components/NewNCBIBlastQuery/useFeatureSequence.ts +85 -0
  116. package/src/LaunchMsaView/components/NewNCBIBlastQuery/util.ts +7 -0
  117. package/src/LaunchMsaView/components/PreLoadedMSA/PreLoadedMSADataPanel.tsx +149 -0
  118. package/src/LaunchMsaView/components/PreLoadedMSA/fetchGeneList.ts +13 -0
  119. package/src/LaunchMsaView/components/PreLoadedMSA/preCalculatedLaunchView.ts +54 -0
  120. package/src/LaunchMsaView/components/TabUtils.tsx +30 -0
  121. package/src/LaunchMsaView/index.ts +61 -0
  122. package/src/LaunchMsaView/util.ts +30 -0
  123. package/src/MsaViewPanel/components/LoadingBLAST.tsx +59 -0
  124. package/src/MsaViewPanel/components/MsaViewPanel.tsx +22 -0
  125. package/src/MsaViewPanel/components/RIDLink.tsx +18 -0
  126. package/src/MsaViewPanel/doLaunchBlast.ts +38 -0
  127. package/src/MsaViewPanel/genomeToMSA.ts +21 -0
  128. package/src/MsaViewPanel/index.ts +19 -0
  129. package/src/MsaViewPanel/model.ts +290 -0
  130. package/src/MsaViewPanel/msaCoordToGenomeCoord.ts +29 -0
  131. package/src/MsaViewPanel/util.ts +13 -0
  132. package/src/OpenInNewIcon.tsx +11 -0
  133. package/src/TextField2.tsx +12 -0
  134. package/src/index.ts +12 -14
  135. package/src/utils/fetch.ts +25 -0
  136. package/src/utils/msa.ts +111 -0
  137. package/src/utils/ncbiBlast.ts +105 -0
  138. package/dist/config.json +0 -8
  139. package/dist/jbrowse-plugin-msaview.cjs.development.js +0 -168
  140. package/dist/jbrowse-plugin-msaview.cjs.development.js.map +0 -1
  141. package/dist/jbrowse-plugin-msaview.cjs.production.min.js +0 -2
  142. package/dist/jbrowse-plugin-msaview.cjs.production.min.js.map +0 -1
  143. package/dist/jbrowse-plugin-msaview.esm.js +0 -163
  144. package/dist/jbrowse-plugin-msaview.esm.js.map +0 -1
  145. package/dist/jbrowse-plugin-msaview.umd.development.js +0 -8659
  146. package/dist/jbrowse-plugin-msaview.umd.development.js.map +0 -1
  147. package/src/index.test.ts +0 -3
@@ -0,0 +1,90 @@
1
+ import React, { useEffect, useState } from 'react';
2
+ import { observer } from 'mobx-react';
3
+ import { ErrorMessage } from '@jbrowse/core/ui';
4
+ import { Button, DialogActions, DialogContent, MenuItem, TextField, Typography, } from '@mui/material';
5
+ import { getContainingView, getSession, } from '@jbrowse/core/util';
6
+ import { makeStyles } from 'tss-react/mui';
7
+ // locals
8
+ import { getTranscriptDisplayName, getId, getTranscriptFeatures, } from '../../util';
9
+ import { fetchGeneList } from './fetchGeneList';
10
+ import { preCalculatedLaunchView } from './preCalculatedLaunchView';
11
+ const useStyles = makeStyles()({
12
+ dialogContent: {
13
+ width: '80em',
14
+ },
15
+ });
16
+ const PreLoadedMSA = observer(function PreLoadedMSA2({ model, feature, handleClose, }) {
17
+ const session = getSession(model);
18
+ const view = getContainingView(model);
19
+ const { classes } = useStyles();
20
+ const [error, setError] = useState();
21
+ const [geneNameList, setGeneNameList] = useState();
22
+ useEffect(() => {
23
+ // eslint-disable-next-line @typescript-eslint/no-floating-promises
24
+ ;
25
+ (async () => {
26
+ try {
27
+ const data = await fetchGeneList();
28
+ setGeneNameList(data);
29
+ const set = new Set(data);
30
+ const options = getTranscriptFeatures(feature);
31
+ const ret = options.find(val => set.has(getId(val)));
32
+ if (ret) {
33
+ setUserSelection(getId(ret));
34
+ }
35
+ }
36
+ catch (e) {
37
+ console.error(e);
38
+ setError(e);
39
+ }
40
+ })();
41
+ }, [feature]);
42
+ const set = new Set(geneNameList);
43
+ const options = getTranscriptFeatures(feature);
44
+ const ret = options.find(val => set.has(getId(val)));
45
+ const [userSelection, setUserSelection] = useState(getId(options[0]));
46
+ return (React.createElement(React.Fragment, null,
47
+ React.createElement(DialogContent, { className: classes.dialogContent },
48
+ React.createElement(Typography, null,
49
+ "The source data for these multiple sequence alignments is from",
50
+ ' ',
51
+ React.createElement("a", { href: "https://hgdownload.soe.ucsc.edu/goldenPath/hg38/multiz100way/alignments/" }, "knownCanonical.multiz100way.protAA.fa.gz")),
52
+ error ? React.createElement(ErrorMessage, { error: error }) : null,
53
+ geneNameList && !ret ? (React.createElement("div", { style: { color: 'red' } }, "No MSA data for this gene found")) : null,
54
+ React.createElement(TextField, { value: userSelection, onChange: event => setUserSelection(event.target.value), label: "Choose isoform to view MSA for", select: true },
55
+ options
56
+ .filter(val => set.has(getId(val)))
57
+ .map(val => (React.createElement(MenuItem, { value: getId(val), key: val.id() },
58
+ getTranscriptDisplayName(val),
59
+ " (has data)"))),
60
+ options
61
+ .filter(val => !set.has(getId(val)))
62
+ .map(val => (React.createElement(MenuItem, { value: getId(val), key: val.id(), disabled: true }, getTranscriptDisplayName(val)))))),
63
+ React.createElement(DialogActions, null,
64
+ React.createElement(Button, { color: "primary", variant: "contained", onClick: () => {
65
+ // eslint-disable-next-line @typescript-eslint/no-floating-promises
66
+ ;
67
+ (async () => {
68
+ try {
69
+ if (!ret) {
70
+ return;
71
+ }
72
+ await preCalculatedLaunchView({
73
+ userSelection,
74
+ session,
75
+ newViewTitle: '',
76
+ view,
77
+ feature: ret,
78
+ });
79
+ handleClose();
80
+ }
81
+ catch (e) {
82
+ console.error(e);
83
+ setError(e);
84
+ }
85
+ })();
86
+ } }, "Submit"),
87
+ React.createElement(Button, { color: "secondary", variant: "contained", onClick: () => handleClose() }, "Cancel"))));
88
+ });
89
+ export default PreLoadedMSA;
90
+ //# sourceMappingURL=PreLoadedMSADataPanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PreLoadedMSADataPanel.js","sourceRoot":"","sources":["../../../../src/LaunchMsaView/components/PreLoadedMSA/PreLoadedMSADataPanel.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare function fetchGeneList(): Promise<string[]>;
@@ -0,0 +1,12 @@
1
+ export async function fetchGeneList() {
2
+ const res = await fetch('https://jbrowse.org/demos/msaview/knownCanonical/list.txt');
3
+ if (!res.ok) {
4
+ throw new Error(`HTTP ${res.status} fetching list ${await res.text()}`);
5
+ }
6
+ const result = await res.text();
7
+ return result
8
+ .split('\n')
9
+ .map(f => f.trim())
10
+ .filter(f => !!f);
11
+ }
12
+ //# sourceMappingURL=fetchGeneList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetchGeneList.js","sourceRoot":"","sources":["../../../../src/LaunchMsaView/components/PreLoadedMSA/fetchGeneList.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,MAAM,GAAG,GAAG,MAAM,KAAK,CACrB,2DAA2D,CAC5D,CAAA;IACD,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,QAAQ,GAAG,CAAC,MAAM,kBAAkB,MAAM,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;IACzE,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAA;IAC/B,OAAO,MAAM;SACV,KAAK,CAAC,IAAI,CAAC;SACX,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SAClB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AACrB,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { AbstractSessionModel, Feature } from '@jbrowse/core/util';
2
+ import { LinearGenomeViewModel } from '@jbrowse/plugin-linear-genome-view';
3
+ export declare function preCalculatedLaunchView({ userSelection, session, newViewTitle, view, feature, }: {
4
+ session: AbstractSessionModel;
5
+ userSelection: string;
6
+ newViewTitle: string;
7
+ view: LinearGenomeViewModel;
8
+ feature: Feature;
9
+ }): Promise<void>;
@@ -0,0 +1,36 @@
1
+ import { ungzip } from 'pako';
2
+ async function myfetch(url) {
3
+ const res = await fetch(url);
4
+ if (!res.ok) {
5
+ throw new Error(`HTTP ${res.status} fetching ${await res.text()}`);
6
+ }
7
+ const data = await res.arrayBuffer();
8
+ return new TextDecoder().decode(ungzip(data));
9
+ }
10
+ export async function preCalculatedLaunchView({ userSelection, session, newViewTitle, view, feature, }) {
11
+ const d = await myfetch(`https://jbrowse.org/demos/msaview/knownCanonical/${userSelection}.mfa.gz`);
12
+ session.addView('MsaView', {
13
+ type: 'MsaView',
14
+ displayName: newViewTitle,
15
+ treeAreaWidth: 200,
16
+ treeWidth: 100,
17
+ drawNodeBubbles: false,
18
+ labelsAlignRight: true,
19
+ showBranchLen: false,
20
+ colWidth: 10,
21
+ rowHeight: 12,
22
+ colorSchemeName: 'percent_identity_dynamic',
23
+ treeFilehandle: {
24
+ uri: 'https://hgdownload.soe.ucsc.edu/goldenPath/hg38/multiz100way/hg38.100way.nh',
25
+ },
26
+ treeMetadataFilehandle: {
27
+ uri: 'https://s3.amazonaws.com/jbrowse.org/demos/app/species.json',
28
+ },
29
+ data: {
30
+ msa: d,
31
+ },
32
+ connectedViewId: view.id,
33
+ connectedFeature: feature.toJSON(),
34
+ });
35
+ }
36
+ //# sourceMappingURL=preCalculatedLaunchView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preCalculatedLaunchView.js","sourceRoot":"","sources":["../../../../src/LaunchMsaView/components/PreLoadedMSA/preCalculatedLaunchView.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAE7B,KAAK,UAAU,OAAO,CAAC,GAAW;IAChC,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAA;IAC5B,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,QAAQ,GAAG,CAAC,MAAM,aAAa,MAAM,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;IACpE,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,WAAW,EAAE,CAAA;IACpC,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;AAC/C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,EAC5C,aAAa,EACb,OAAO,EACP,YAAY,EACZ,IAAI,EACJ,OAAO,GAOR;IACC,MAAM,CAAC,GAAG,MAAM,OAAO,CACrB,oDAAoD,aAAa,SAAS,CAC3E,CAAA;IAED,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE;QACzB,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,YAAY;QACzB,aAAa,EAAE,GAAG;QAClB,SAAS,EAAE,GAAG;QACd,eAAe,EAAE,KAAK;QACtB,gBAAgB,EAAE,IAAI;QACtB,aAAa,EAAE,KAAK;QACpB,QAAQ,EAAE,EAAE;QACZ,SAAS,EAAE,EAAE;QACb,eAAe,EAAE,0BAA0B;QAC3C,cAAc,EAAE;YACd,GAAG,EAAE,6EAA6E;SACnF;QACD,sBAAsB,EAAE;YACtB,GAAG,EAAE,6DAA6D;SACnE;QACD,IAAI,EAAE;YACJ,GAAG,EAAE,CAAC;SACP;QACD,eAAe,EAAE,IAAI,CAAC,EAAE;QACxB,gBAAgB,EAAE,OAAO,CAAC,MAAM,EAAE;KACnC,CAAC,CAAA;AACJ,CAAC"}
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ interface TabPanelProps {
3
+ children?: React.ReactNode;
4
+ index: number;
5
+ value: number;
6
+ }
7
+ export declare function CustomTabPanel(props: TabPanelProps): React.JSX.Element;
8
+ export declare function a11yProps(index: number): {
9
+ id: string;
10
+ 'aria-controls': string;
11
+ };
12
+ export {};
@@ -0,0 +1,13 @@
1
+ import React from 'react';
2
+ import { Box } from '@mui/material';
3
+ export function CustomTabPanel(props) {
4
+ const { children, value, index, ...other } = props;
5
+ return (React.createElement("div", { role: "tabpanel", hidden: value !== index, id: `gtabpanel-${index}`, "aria-labelledby": `gtab-${index}`, ...other }, value === index && React.createElement(Box, { sx: { p: 3 } }, children)));
6
+ }
7
+ export function a11yProps(index) {
8
+ return {
9
+ id: `gtab-${index}`,
10
+ 'aria-controls': `gtabpanel-${index}`,
11
+ };
12
+ }
13
+ //# sourceMappingURL=TabUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TabUtils.js","sourceRoot":"","sources":["../../../src/LaunchMsaView/components/TabUtils.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAA;AAQnC,MAAM,UAAU,cAAc,CAAC,KAAoB;IACjD,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,GAAG,KAAK,CAAA;IAElD,OAAO,CACL,6BACE,IAAI,EAAC,UAAU,EACf,MAAM,EAAE,KAAK,KAAK,KAAK,EACvB,EAAE,EAAE,aAAa,KAAK,EAAE,qBACP,QAAQ,KAAK,EAAE,KAC5B,KAAK,IAER,KAAK,KAAK,KAAK,IAAI,oBAAC,GAAG,IAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,IAAG,QAAQ,CAAO,CACnD,CACP,CAAA;AACH,CAAC;AACD,MAAM,UAAU,SAAS,CAAC,KAAa;IACrC,OAAO;QACL,EAAE,EAAE,QAAQ,KAAK,EAAE;QACnB,eAAe,EAAE,aAAa,KAAK,EAAE;KACtC,CAAA;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ import PluginManager from '@jbrowse/core/PluginManager';
2
+ export default function LaunchMsaViewF(pluginManager: PluginManager): void;
@@ -0,0 +1,50 @@
1
+ import { getSession, getContainingTrack } from '@jbrowse/core/util';
2
+ // icons
3
+ import AddIcon from '@mui/icons-material/Add';
4
+ // locals
5
+ import LaunchMsaViewDialog from './components/LaunchMsaViewDialog';
6
+ function isDisplay(elt) {
7
+ return elt.name === 'LinearBasicDisplay';
8
+ }
9
+ function extendStateModel(stateModel) {
10
+ return stateModel.views(self => {
11
+ const superContextMenuItems = self.contextMenuItems;
12
+ return {
13
+ contextMenuItems() {
14
+ const feature = self.contextMenuFeature;
15
+ const track = getContainingTrack(self);
16
+ return [
17
+ ...superContextMenuItems(),
18
+ ...(feature
19
+ ? [
20
+ {
21
+ label: 'Launch MSA view',
22
+ icon: AddIcon,
23
+ onClick: () => {
24
+ const session = getSession(track);
25
+ session.queueDialog(handleClose => [
26
+ LaunchMsaViewDialog,
27
+ {
28
+ model: track,
29
+ handleClose,
30
+ feature,
31
+ },
32
+ ]);
33
+ },
34
+ },
35
+ ]
36
+ : []),
37
+ ];
38
+ },
39
+ };
40
+ });
41
+ }
42
+ export default function LaunchMsaViewF(pluginManager) {
43
+ pluginManager.addToExtensionPoint('Core-extendPluggableElement', (elt) => {
44
+ if (isDisplay(elt)) {
45
+ elt.stateModel = extendStateModel(elt.stateModel);
46
+ }
47
+ return elt;
48
+ });
49
+ }
50
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/LaunchMsaView/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAEnE,QAAQ;AACR,OAAO,OAAO,MAAM,yBAAyB,CAAA;AAE7C,SAAS;AACT,OAAO,mBAAmB,MAAM,kCAAkC,CAAA;AAElE,SAAS,SAAS,CAAC,GAAqB;IACtC,OAAO,GAAG,CAAC,IAAI,KAAK,oBAAoB,CAAA;AAC1C,CAAC;AAED,SAAS,gBAAgB,CAAC,UAAyB;IACjD,OAAO,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;QAC7B,MAAM,qBAAqB,GAAG,IAAI,CAAC,gBAAgB,CAAA;QACnD,OAAO;YACL,gBAAgB;gBACd,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAA;gBACvC,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAA;gBACtC,OAAO;oBACL,GAAG,qBAAqB,EAAE;oBAC1B,GAAG,CAAC,OAAO;wBACT,CAAC,CAAC;4BACE;gCACE,KAAK,EAAE,iBAAiB;gCACxB,IAAI,EAAE,OAAO;gCACb,OAAO,EAAE,GAAG,EAAE;oCACZ,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,CAAA;oCACjC,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC;wCACjC,mBAAmB;wCACnB;4CACE,KAAK,EAAE,KAAK;4CACZ,WAAW;4CACX,OAAO;yCACR;qCACF,CAAC,CAAA;gCACJ,CAAC;6BACF;yBACF;wBACH,CAAC,CAAC,EAAE,CAAC;iBACR,CAAA;YACH,CAAC;SACF,CAAA;IACH,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,aAA4B;IACjE,aAAa,CAAC,mBAAmB,CAC/B,6BAA6B,EAC7B,CAAC,GAAyB,EAAE,EAAE;QAC5B,IAAI,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;YACnB,GAAG,CAAC,UAAU,GAAG,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;QACnD,CAAC;QACD,OAAO,GAAG,CAAA;IACZ,CAAC,CACF,CAAA;AACH,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { Feature } from '@jbrowse/core/util';
2
+ export declare function getTranscriptFeatures(feature: Feature): Feature[];
3
+ export declare function getId(val?: Feature): any;
4
+ export declare function getTranscriptDisplayName(val?: Feature): string;
5
+ export declare function getGeneDisplayName(val?: Feature): string;
@@ -0,0 +1,25 @@
1
+ export function getTranscriptFeatures(feature) {
2
+ // check if we are looking at a 'two-level' or 'three-level' feature by
3
+ // finding exon/CDS subfeatures. we want to select from transcript names
4
+ const subfeatures = feature.get('subfeatures') ?? [];
5
+ return subfeatures.some(f => f.get('type') === 'CDS')
6
+ ? [feature]
7
+ : // filter out non-coding by finding subfeatures with CDS subfeatures
8
+ subfeatures.filter(f => f.get('subfeatures')?.some(f => f.get('type') === 'CDS'));
9
+ }
10
+ export function getId(val) {
11
+ return val === undefined ? '' : val.get('name') || val.get('id');
12
+ }
13
+ export function getTranscriptDisplayName(val) {
14
+ return val === undefined
15
+ ? ''
16
+ : [val.get('name'), val.get('id')].filter(f => !!f).join(' ');
17
+ }
18
+ export function getGeneDisplayName(val) {
19
+ return val === undefined
20
+ ? ''
21
+ : [val.get('gene_name') || val.get('name'), val.get('id')]
22
+ .filter(f => !!f)
23
+ .join(' ');
24
+ }
25
+ //# sourceMappingURL=util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/LaunchMsaView/util.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,qBAAqB,CAAC,OAAgB;IACpD,uEAAuE;IACvE,wEAAwE;IACxE,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,CAAA;IACpD,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,KAAK,CAAC;QACnD,CAAC,CAAC,CAAC,OAAO,CAAC;QACX,CAAC,CAAC,oEAAoE;YACpE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CACrB,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,KAAK,CAAC,CACzD,CAAA;AACP,CAAC;AACD,MAAM,UAAU,KAAK,CAAC,GAAa;IACjC,OAAO,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;AAClE,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,GAAa;IACpD,OAAO,GAAG,KAAK,SAAS;QACtB,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACjE,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,GAAa;IAC9C,OAAO,GAAG,KAAK,SAAS;QACtB,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;aACrD,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;aAChB,IAAI,CAAC,GAAG,CAAC,CAAA;AAClB,CAAC"}
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ import { JBrowsePluginMsaViewModel } from '../model';
3
+ declare const LoadingBLAST: ({ model, }: {
4
+ model: JBrowsePluginMsaViewModel;
5
+ }) => React.JSX.Element;
6
+ export default LoadingBLAST;
@@ -0,0 +1,36 @@
1
+ import React from 'react';
2
+ import { Typography } from '@mui/material';
3
+ import { observer } from 'mobx-react';
4
+ import { makeStyles } from 'tss-react/mui';
5
+ import { ErrorMessage, LoadingEllipses } from '@jbrowse/core/ui';
6
+ // locals
7
+ import RIDLink from './RIDLink';
8
+ const useStyles = makeStyles()(theme => ({
9
+ margin: {
10
+ padding: 20,
11
+ },
12
+ loading: {
13
+ background: theme.palette.background.paper,
14
+ },
15
+ }));
16
+ function RIDError({ rid, error }) {
17
+ return (React.createElement("div", null,
18
+ rid ? React.createElement(RIDLink, { rid: rid }) : null,
19
+ React.createElement(ErrorMessage, { error: error })));
20
+ }
21
+ function RIDProgress({ rid, progress }) {
22
+ const { classes } = useStyles();
23
+ return (React.createElement("div", { className: classes.loading },
24
+ rid ? React.createElement(RIDLink, { rid: rid }) : null,
25
+ React.createElement(Typography, null, progress)));
26
+ }
27
+ const LoadingBLAST = observer(function LoadingBLAST2({ model, }) {
28
+ const { progress, rid, error, processing } = model;
29
+ const { classes } = useStyles();
30
+ return (React.createElement("div", { className: classes.margin },
31
+ React.createElement(LoadingEllipses, { message: "Running NCBI BLAST", variant: "h5" }),
32
+ error ? (React.createElement(RIDError, { rid: rid, error: error })) : rid ? (React.createElement(RIDProgress, { rid: rid, progress: progress })) : null,
33
+ React.createElement(Typography, null, processing || 'Initializing BLAST query')));
34
+ });
35
+ export default LoadingBLAST;
36
+ //# sourceMappingURL=LoadingBLAST.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LoadingBLAST.js","sourceRoot":"","sources":["../../../src/MsaViewPanel/components/LoadingBLAST.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAEhE,SAAS;AACT,OAAO,OAAO,MAAM,WAAW,CAAA;AAE/B,MAAM,SAAS,GAAG,UAAU,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACvC,MAAM,EAAE;QACN,OAAO,EAAE,EAAE;KACZ;IACD,OAAO,EAAE;QACP,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK;KAC3C;CACF,CAAC,CAAC,CAAA;AAEH,SAAS,QAAQ,CAAC,EAAE,GAAG,EAAE,KAAK,EAAoC;IAChE,OAAO,CACL;QACG,GAAG,CAAC,CAAC,CAAC,oBAAC,OAAO,IAAC,GAAG,EAAE,GAAG,GAAI,CAAC,CAAC,CAAC,IAAI;QACnC,oBAAC,YAAY,IAAC,KAAK,EAAE,KAAK,GAAI,CAC1B,CACP,CAAA;AACH,CAAC;AAED,SAAS,WAAW,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAqC;IACvE,MAAM,EAAE,OAAO,EAAE,GAAG,SAAS,EAAE,CAAA;IAC/B,OAAO,CACL,6BAAK,SAAS,EAAE,OAAO,CAAC,OAAO;QAC5B,GAAG,CAAC,CAAC,CAAC,oBAAC,OAAO,IAAC,GAAG,EAAE,GAAG,GAAI,CAAC,CAAC,CAAC,IAAI;QACnC,oBAAC,UAAU,QAAE,QAAQ,CAAc,CAC/B,CACP,CAAA;AACH,CAAC;AAED,MAAM,YAAY,GAAG,QAAQ,CAAC,SAAS,aAAa,CAAC,EACnD,KAAK,GAGN;IACC,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,KAAK,CAAA;IAClD,MAAM,EAAE,OAAO,EAAE,GAAG,SAAS,EAAE,CAAA;IAC/B,OAAO,CACL,6BAAK,SAAS,EAAE,OAAO,CAAC,MAAM;QAC5B,oBAAC,eAAe,IAAC,OAAO,EAAC,oBAAoB,EAAC,OAAO,EAAC,IAAI,GAAG;QAC5D,KAAK,CAAC,CAAC,CAAC,CACP,oBAAC,QAAQ,IAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,GAAI,CACrC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CACR,oBAAC,WAAW,IAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,GAAI,CAC9C,CAAC,CAAC,CAAC,IAAI;QACR,oBAAC,UAAU,QAAE,UAAU,IAAI,0BAA0B,CAAc,CAC/D,CACP,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,eAAe,YAAY,CAAA"}
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ import { JBrowsePluginMsaViewModel } from '../model';
3
+ declare const MsaViewPanel: ({ model, }: {
4
+ model: JBrowsePluginMsaViewModel;
5
+ }) => React.JSX.Element;
6
+ export default MsaViewPanel;
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ import { observer } from 'mobx-react';
3
+ import { MSAView } from 'react-msaview';
4
+ import LoadingBLAST from './LoadingBLAST';
5
+ const MsaViewPanel = observer(function MsaViewPanel2({ model, }) {
6
+ const { blastParams } = model;
7
+ return (React.createElement("div", null, blastParams ? React.createElement(LoadingBLAST, { model: model }) : React.createElement(MSAView, { model: model })));
8
+ });
9
+ export default MsaViewPanel;
10
+ //# sourceMappingURL=MsaViewPanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MsaViewPanel.js","sourceRoot":"","sources":["../../../src/MsaViewPanel/components/MsaViewPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAIvC,OAAO,YAAY,MAAM,gBAAgB,CAAA;AAEzC,MAAM,YAAY,GAAG,QAAQ,CAAC,SAAS,aAAa,CAAC,EACnD,KAAK,GAGN;IACC,MAAM,EAAE,WAAW,EAAE,GAAG,KAAK,CAAA;IAC7B,OAAO,CACL,iCACG,WAAW,CAAC,CAAC,CAAC,oBAAC,YAAY,IAAC,KAAK,EAAE,KAAK,GAAI,CAAC,CAAC,CAAC,oBAAC,OAAO,IAAC,KAAK,EAAE,KAAK,GAAI,CACrE,CACP,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,eAAe,YAAY,CAAA"}
@@ -0,0 +1,5 @@
1
+ import React from 'react';
2
+ declare function RIDLink({ rid }: {
3
+ rid: string;
4
+ }): React.JSX.Element;
5
+ export default RIDLink;
@@ -0,0 +1,17 @@
1
+ import React from 'react';
2
+ import { Link, Typography } from '@mui/material';
3
+ // locals
4
+ import OpenInNewIcon from '../../OpenInNewIcon';
5
+ import { BLAST_URL } from '../../utils/ncbiBlast';
6
+ function RIDLink({ rid }) {
7
+ return (React.createElement(Typography, null,
8
+ "RID ",
9
+ rid,
10
+ ' ',
11
+ React.createElement(Link, { target: "_black", href: `${BLAST_URL}?CMD=Get&RID=${rid}` },
12
+ "(see status at NCBI ",
13
+ React.createElement(OpenInNewIcon, null),
14
+ ")")));
15
+ }
16
+ export default RIDLink;
17
+ //# sourceMappingURL=RIDLink.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RIDLink.js","sourceRoot":"","sources":["../../../src/MsaViewPanel/components/RIDLink.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAChD,SAAS;AACT,OAAO,aAAa,MAAM,qBAAqB,CAAA;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AAEjD,SAAS,OAAO,CAAC,EAAE,GAAG,EAAmB;IACvC,OAAO,CACL,oBAAC,UAAU;;QACJ,GAAG;QAAE,GAAG;QACb,oBAAC,IAAI,IAAC,MAAM,EAAC,QAAQ,EAAC,IAAI,EAAE,GAAG,SAAS,gBAAgB,GAAG,EAAE;;YACvC,oBAAC,aAAa,OAAG;gBAChC,CACI,CACd,CAAA;AACH,CAAC;AAED,eAAe,OAAO,CAAA"}
@@ -0,0 +1,7 @@
1
+ import { JBrowsePluginMsaViewModel } from './model';
2
+ export declare function doLaunchBlast({ self, }: {
3
+ self: JBrowsePluginMsaViewModel;
4
+ }): Promise<{
5
+ msa: string;
6
+ tree: string;
7
+ }>;
@@ -0,0 +1,27 @@
1
+ import { launchMSA } from '../utils/msa';
2
+ import { queryBlast } from '../utils/ncbiBlast';
3
+ import { makeId, strip, } from '../LaunchMsaView/components/NewNCBIBlastQuery/util';
4
+ export async function doLaunchBlast({ self, }) {
5
+ const { blastDatabase, blastProgram, msaAlgorithm, proteinSequence } = self.blastParams;
6
+ const query = proteinSequence.replaceAll('*', '').replaceAll('&', '');
7
+ const { hits } = await queryBlast({
8
+ query,
9
+ blastDatabase,
10
+ blastProgram,
11
+ onProgress: arg => self.setProgress(arg),
12
+ onRid: rid => self.setRid(rid),
13
+ });
14
+ const sequence = [
15
+ `>QUERY\n${query}`,
16
+ ...hits
17
+ .map(h => [makeId(h.description[0]), strip(h.hsps[0].hseq)])
18
+ .map(([id, seq]) => `>${id}\n${seq}`),
19
+ ].join('\n');
20
+ const data = await launchMSA({
21
+ algorithm: msaAlgorithm,
22
+ sequence,
23
+ onProgress: arg => self.setProgress(arg),
24
+ });
25
+ return data;
26
+ }
27
+ //# sourceMappingURL=doLaunchBlast.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doLaunchBlast.js","sourceRoot":"","sources":["../../src/MsaViewPanel/doLaunchBlast.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAC/C,OAAO,EACL,MAAM,EACN,KAAK,GACN,MAAM,oDAAoD,CAAA;AAG3D,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,EAClC,IAAI,GAGL;IACC,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,GAClE,IAAI,CAAC,WAAY,CAAA;IACnB,MAAM,KAAK,GAAG,eAAe,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;IACrE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,UAAU,CAAC;QAChC,KAAK;QACL,aAAa;QACb,YAAY;QACZ,UAAU,EAAE,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;QACxC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;KAC/B,CAAC,CAAA;IAEF,MAAM,QAAQ,GAAG;QACf,WAAW,KAAK,EAAE;QAClB,GAAG,IAAI;aACJ,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAU,CAAC;aACpE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;KACxC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAEZ,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC;QAC3B,SAAS,EAAE,YAAY;QACvB,QAAQ;QACR,UAAU,EAAE,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;KACzC,CAAC,CAAA;IACF,OAAO,IAAI,CAAA;AACb,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { JBrowsePluginMsaViewModel } from './model';
2
+ export declare function genomeToMSA({ model }: {
3
+ model: JBrowsePluginMsaViewModel;
4
+ }): number | undefined;
@@ -0,0 +1,18 @@
1
+ import { getSession } from '@jbrowse/core/util';
2
+ import { checkHovered } from './util';
3
+ export function genomeToMSA({ model }) {
4
+ const { hovered } = getSession(model);
5
+ const { transcriptToMsaMap, connectedView } = model;
6
+ if (connectedView?.initialized &&
7
+ transcriptToMsaMap &&
8
+ checkHovered(hovered)) {
9
+ const { coord: hoverCoord } = hovered.hoverPosition;
10
+ const { g2p } = transcriptToMsaMap;
11
+ const ret = g2p[hoverCoord];
12
+ if (ret !== undefined) {
13
+ return model.seqCoordToRowSpecificGlobalCoord('QUERY', ret + 1);
14
+ }
15
+ }
16
+ return undefined;
17
+ }
18
+ //# sourceMappingURL=genomeToMSA.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"genomeToMSA.js","sourceRoot":"","sources":["../../src/MsaViewPanel/genomeToMSA.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AAGrC,MAAM,UAAU,WAAW,CAAC,EAAE,KAAK,EAAwC;IACzE,MAAM,EAAE,OAAO,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC,CAAA;IACrC,MAAM,EAAE,kBAAkB,EAAE,aAAa,EAAE,GAAG,KAAK,CAAA;IACnD,IACE,aAAa,EAAE,WAAW;QAC1B,kBAAkB;QAClB,YAAY,CAAC,OAAO,CAAC,EACrB,CAAC;QACD,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,aAAa,CAAA;QACnD,MAAM,EAAE,GAAG,EAAE,GAAG,kBAAkB,CAAA;QAClC,MAAM,GAAG,GAAG,GAAG,CAAC,UAAU,CAAC,CAAA;QAC3B,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,OAAO,KAAK,CAAC,gCAAgC,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,CAAC,CAAA;QACjE,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC"}
@@ -0,0 +1,2 @@
1
+ import PluginManager from '@jbrowse/core/PluginManager';
2
+ export default function MsaViewF(pluginManager: PluginManager): void;
@@ -0,0 +1,16 @@
1
+ import { lazy } from 'react';
2
+ import ViewType from '@jbrowse/core/pluggableElementTypes/ViewType';
3
+ // locals
4
+ import stateModelFactory from './model';
5
+ // lazies
6
+ const MsaViewPanel = lazy(() => import('./components/MsaViewPanel'));
7
+ export default function MsaViewF(pluginManager) {
8
+ pluginManager.addViewType(() => {
9
+ return new ViewType({
10
+ name: 'MsaView',
11
+ stateModel: stateModelFactory(),
12
+ ReactComponent: MsaViewPanel,
13
+ });
14
+ });
15
+ }
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/MsaViewPanel/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAA;AAE5B,OAAO,QAAQ,MAAM,8CAA8C,CAAA;AAEnE,SAAS;AACT,OAAO,iBAAiB,MAAM,SAAS,CAAA;AAEvC,SAAS;AACT,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,2BAA2B,CAAC,CAAC,CAAA;AAEpE,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,aAA4B;IAC3D,aAAa,CAAC,WAAW,CAAC,GAAG,EAAE;QAC7B,OAAO,IAAI,QAAQ,CAAC;YAClB,IAAI,EAAE,SAAS;YACf,UAAU,EAAE,iBAAiB,EAAE;YAC/B,cAAc,EAAE,YAAY;SAC7B,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC"}