react-msaview 5.4.1 → 5.5.0
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/LICENSE +21 -0
- package/bundle/index.js +465 -138
- package/bundle/index.js.map +7 -1
- package/dist/colorSchemes.js +11 -7
- package/dist/colorSchemes.js.map +1 -1
- package/dist/components/MSAViewer.d.ts +7 -1
- package/dist/components/MSAViewer.js +10 -7
- package/dist/components/MSAViewer.js.map +1 -1
- package/dist/components/Track.js +8 -5
- package/dist/components/Track.js.map +1 -1
- package/dist/components/dialogs/FeatureDialog.js +27 -23
- package/dist/components/dialogs/FeatureDialog.js.map +1 -1
- package/dist/components/header/MultiAlignmentSelector.js +0 -0
- package/dist/components/header/MultiAlignmentSelector.js.map +1 -1
- package/dist/components/msa/DomainLegend.d.ts +6 -0
- package/dist/components/msa/DomainLegend.js +41 -0
- package/dist/components/msa/DomainLegend.js.map +1 -0
- package/dist/components/msa/MSACanvasBlock.js +17 -5
- package/dist/components/msa/MSACanvasBlock.js.map +1 -1
- package/dist/components/msa/MSAPanel.js +3 -1
- package/dist/components/msa/MSAPanel.js.map +1 -1
- package/dist/components/msa/renderBoxFeatureCanvasBlock.js +58 -14
- package/dist/components/msa/renderBoxFeatureCanvasBlock.js.map +1 -1
- package/dist/components/msa/renderMSABlock.js +3 -3
- package/dist/components/msa/renderMSABlock.js.map +1 -1
- package/dist/components/msa/renderMSAMouseover.js +32 -4
- package/dist/components/msa/renderMSAMouseover.js.map +1 -1
- package/dist/components/renderCtx.d.ts +1 -1
- package/dist/components/tracks/renderTracksSvg.js +3 -3
- package/dist/components/tracks/renderTracksSvg.js.map +1 -1
- package/dist/constants.d.ts +3 -0
- package/dist/constants.js +16 -0
- package/dist/constants.js.map +1 -1
- package/dist/createPaletteMap.d.ts +5 -2
- package/dist/createPaletteMap.js +15 -5
- package/dist/createPaletteMap.js.map +1 -1
- package/dist/launchInterProScan.d.ts +2 -0
- package/dist/launchInterProScan.js.map +1 -1
- package/dist/model.d.ts +96 -1
- package/dist/model.js +91 -3
- package/dist/model.js.map +1 -1
- package/dist/renderToSvg.js +104 -74
- package/dist/renderToSvg.js.map +1 -1
- package/dist/{webpack.js → umd.js} +1 -1
- package/dist/umd.js.map +1 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +7 -6
- package/src/colorSchemes.ts +12 -7
- package/src/components/MSAViewer.tsx +30 -18
- package/src/components/Track.tsx +8 -5
- package/src/components/dialogs/FeatureDialog.tsx +62 -48
- package/src/components/header/MultiAlignmentSelector.tsx +0 -0
- package/src/components/msa/DomainLegend.tsx +74 -0
- package/src/components/msa/MSACanvasBlock.tsx +22 -4
- package/src/components/msa/MSAPanel.tsx +2 -0
- package/src/components/msa/renderBoxFeatureCanvasBlock.ts +73 -17
- package/src/components/msa/renderMSABlock.ts +3 -3
- package/src/components/msa/renderMSAMouseover.ts +32 -4
- package/src/components/renderCtx.ts +1 -0
- package/src/components/tracks/renderTracksSvg.ts +3 -3
- package/src/constants.ts +18 -0
- package/src/createPaletteMap.ts +18 -5
- package/src/launchInterProScan.ts +3 -1
- package/src/model.ts +105 -2
- package/src/renderDomainLegendSvg.test.tsx +134 -0
- package/src/renderToSvg.tsx +210 -147
- package/src/segmentOverlay.test.ts +70 -0
- package/src/version.ts +1 -1
- package/bundle/index.js.LICENSE.txt +0 -100
- package/dist/components/util.d.ts +0 -1
- package/dist/components/util.js +0 -7
- package/dist/components/util.js.map +0 -1
- package/dist/webpack.js.map +0 -1
- package/src/components/util.ts +0 -9
- /package/dist/{webpack.d.ts → umd.d.ts} +0 -0
- /package/src/{webpack.ts → umd.ts} +0 -0
package/dist/colorSchemes.js
CHANGED
|
@@ -3,8 +3,18 @@ import { colord, extend } from 'colord';
|
|
|
3
3
|
import namesPlugin from 'colord/plugins/names';
|
|
4
4
|
import { transform } from "./util.js";
|
|
5
5
|
extend([namesPlugin]);
|
|
6
|
+
// standard A/C/G/T(/U) coloring, shared by the `jbrowse_dna` and `nucleotide`
|
|
7
|
+
// scheme names
|
|
8
|
+
const dna = {
|
|
9
|
+
A: green[500],
|
|
10
|
+
C: blue[500],
|
|
11
|
+
G: orange[500],
|
|
12
|
+
T: red[500],
|
|
13
|
+
U: red[500],
|
|
14
|
+
};
|
|
6
15
|
const colorSchemes = {
|
|
7
16
|
none: {},
|
|
17
|
+
nucleotide: dna,
|
|
8
18
|
clustal: {
|
|
9
19
|
G: 'orange',
|
|
10
20
|
P: 'orange',
|
|
@@ -128,13 +138,7 @@ const colorSchemes = {
|
|
|
128
138
|
T: '#19cc19',
|
|
129
139
|
U: '#19cc19',
|
|
130
140
|
},
|
|
131
|
-
jbrowse_dna:
|
|
132
|
-
A: green[500],
|
|
133
|
-
C: blue[500],
|
|
134
|
-
G: orange[500],
|
|
135
|
-
T: red[500],
|
|
136
|
-
U: red[500],
|
|
137
|
-
},
|
|
141
|
+
jbrowse_dna: dna,
|
|
138
142
|
jalview_buried: {
|
|
139
143
|
A: '#00a35c',
|
|
140
144
|
R: '#00fc03',
|
package/dist/colorSchemes.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"colorSchemes.js","sourceRoot":"","sources":["../src/colorSchemes.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"colorSchemes.js","sourceRoot":"","sources":["../src/colorSchemes.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,8 +9,14 @@ interface MSAViewerProps {
|
|
|
9
9
|
gffFilehandle?: FileLocationType;
|
|
10
10
|
colorScheme?: string;
|
|
11
11
|
height?: number;
|
|
12
|
+
/** initial per-column pixel width (zoom level) */
|
|
13
|
+
colWidth?: number;
|
|
14
|
+
/** initial per-row pixel height */
|
|
15
|
+
rowHeight?: number;
|
|
16
|
+
/** alignment columns (0-based) to highlight with a persistent overlay */
|
|
17
|
+
highlightColumns?: number[];
|
|
12
18
|
/** row name to diff every other row against (matches render as ".") */
|
|
13
19
|
relativeTo?: string;
|
|
14
20
|
}
|
|
15
|
-
export default function MSAViewer({ msa, tree, gff, msaFilehandle, treeFilehandle, gffFilehandle, colorScheme, height, relativeTo, }: MSAViewerProps): React.JSX.Element;
|
|
21
|
+
export default function MSAViewer({ msa, tree, gff, msaFilehandle, treeFilehandle, gffFilehandle, colorScheme, height, colWidth, rowHeight, highlightColumns, relativeTo, }: MSAViewerProps): React.JSX.Element;
|
|
16
22
|
export {};
|
|
@@ -1,12 +1,14 @@
|
|
|
1
|
-
import React, { useEffect,
|
|
1
|
+
import React, { useEffect, useState } from 'react';
|
|
2
2
|
import { createJBrowseTheme } from '@jbrowse/core/ui/theme';
|
|
3
3
|
import useMeasure from '@jbrowse/core/util/useMeasure';
|
|
4
4
|
import { ThemeProvider } from '@mui/material/styles';
|
|
5
5
|
import MSAModelF from "../model.js";
|
|
6
6
|
import Loading from "./Loading.js";
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
const theme = createJBrowseTheme();
|
|
8
|
+
export default function MSAViewer({ msa, tree, gff, msaFilehandle, treeFilehandle, gffFilehandle, colorScheme, height, colWidth, rowHeight, highlightColumns, relativeTo, }) {
|
|
9
|
+
// lazy initializer: the model is created exactly once from the initial props
|
|
10
|
+
// (a stable MST instance — not a value safe to recompute, so not useMemo)
|
|
11
|
+
const [model] = useState(() => MSAModelF().create({
|
|
10
12
|
type: 'MsaView',
|
|
11
13
|
...(msa || tree || gff
|
|
12
14
|
? { data: { msa: msa ?? '', tree: tree ?? '', gff } }
|
|
@@ -16,10 +18,11 @@ export default function MSAViewer({ msa, tree, gff, msaFilehandle, treeFilehandl
|
|
|
16
18
|
...(gffFilehandle ? { gffFilehandle } : {}),
|
|
17
19
|
...(colorScheme ? { colorSchemeName: colorScheme } : {}),
|
|
18
20
|
...(height ? { height } : {}),
|
|
21
|
+
...(colWidth ? { colWidth } : {}),
|
|
22
|
+
...(rowHeight ? { rowHeight } : {}),
|
|
23
|
+
...(highlightColumns ? { highlightColumns } : {}),
|
|
19
24
|
...(relativeTo ? { relativeTo } : {}),
|
|
20
|
-
})
|
|
21
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
22
|
-
[]);
|
|
25
|
+
}));
|
|
23
26
|
const [ref, { width }] = useMeasure();
|
|
24
27
|
useEffect(() => {
|
|
25
28
|
if (width) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MSAViewer.js","sourceRoot":"","sources":["../../src/components/MSAViewer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"MSAViewer.js","sourceRoot":"","sources":["../../src/components/MSAViewer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAElD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAC3D,OAAO,UAAU,MAAM,+BAA+B,CAAA;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAEpD,OAAO,SAAS,MAAM,aAAa,CAAA;AACnC,OAAO,OAAO,MAAM,cAAe,CAAA;AAInC,MAAM,KAAK,GAAG,kBAAkB,EAAE,CAAA;AAqBlC,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,EAChC,GAAG,EACH,IAAI,EACJ,GAAG,EACH,aAAa,EACb,cAAc,EACd,aAAa,EACb,WAAW,EACX,MAAM,EACN,QAAQ,EACR,SAAS,EACT,gBAAgB,EAChB,UAAU,GACK;IACf,6EAA6E;IAC7E,0EAA0E;IAC1E,MAAM,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,CAC5B,SAAS,EAAE,CAAC,MAAM,CAAC;QACjB,IAAI,EAAE,SAAS;QACf,GAAG,CAAC,GAAG,IAAI,IAAI,IAAI,GAAG;YACpB,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE;YACrD,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3C,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7C,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3C,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxD,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7B,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACtC,CAAC,CACH,CAAA;IAED,MAAM,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,GAAG,UAAU,EAAE,CAAA;IACrC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,KAAK,EAAE,CAAC;YACV,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;QACvB,CAAC;IACH,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAA;IAElB,OAAO,CACL,oBAAC,aAAa,IAAC,KAAK,EAAE,KAAK;QACzB,6BAAK,GAAG,EAAE,GAAG;YACX,oBAAC,OAAO,IAAC,KAAK,EAAE,KAAK,GAAI,CACrB,CACQ,CACjB,CAAA;AACH,CAAC"}
|
package/dist/components/Track.js
CHANGED
|
@@ -12,10 +12,13 @@ const useStyles = makeStyles()({
|
|
|
12
12
|
});
|
|
13
13
|
const TrackLabel = observer(function TrackLabel({ model, track, }) {
|
|
14
14
|
const [anchorEl, setAnchorEl] = useState();
|
|
15
|
-
const
|
|
15
|
+
const closeMenu = () => {
|
|
16
|
+
setAnchorEl(undefined);
|
|
17
|
+
};
|
|
18
|
+
const { drawLabels, fontSize, treeAreaWidth: width } = model;
|
|
16
19
|
const { model: { name, height }, } = track;
|
|
17
20
|
const { classes } = useStyles();
|
|
18
|
-
const trackLabelHeight = Math.min(height,
|
|
21
|
+
const trackLabelHeight = Math.min(height, fontSize);
|
|
19
22
|
return (React.createElement("div", { style: {
|
|
20
23
|
width,
|
|
21
24
|
height,
|
|
@@ -33,18 +36,18 @@ const TrackLabel = observer(function TrackLabel({ model, track, }) {
|
|
|
33
36
|
} },
|
|
34
37
|
React.createElement(ArrowDropDownIcon, null)),
|
|
35
38
|
anchorEl ? (React.createElement(Menu, { anchorEl: anchorEl, transitionDuration: 0, open: true, onClose: () => {
|
|
36
|
-
|
|
39
|
+
closeMenu();
|
|
37
40
|
} },
|
|
38
41
|
React.createElement(MenuItem, { dense: true, onClick: () => {
|
|
39
42
|
model.toggleTrack(track.model.id);
|
|
40
|
-
|
|
43
|
+
closeMenu();
|
|
41
44
|
} }, "Close"),
|
|
42
45
|
React.createElement(MenuItem, { dense: true, onClick: () => {
|
|
43
46
|
model.queueDialog(onClose => [
|
|
44
47
|
TrackInfoDialog,
|
|
45
48
|
{ onClose, model: track.model },
|
|
46
49
|
]);
|
|
47
|
-
|
|
50
|
+
closeMenu();
|
|
48
51
|
} }, "Get info"))) : null));
|
|
49
52
|
});
|
|
50
53
|
const Track = observer(function ({ model, track, }) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Track.js","sourceRoot":"","sources":["../../src/components/Track.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAElE,OAAO,iBAAiB,MAAM,mCAAmC,CAAA;AACjE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAE1C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAKrD,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,8BAA+B,CAAC,CAAC,CAAA;AAE3E,MAAM,SAAS,GAAG,UAAU,EAAE,CAAC;IAC7B,MAAM,EAAE;QACN,OAAO,EAAE,CAAC;KACX;CACF,CAAC,CAAA;AAEF,MAAM,UAAU,GAAG,QAAQ,CAAC,SAAS,UAAU,CAAC,EAC9C,KAAK,EACL,KAAK,GAIN;IACC,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,EAAqB,CAAA;IAC7D,MAAM,EAAE,UAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"Track.js","sourceRoot":"","sources":["../../src/components/Track.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { Dialog } from '@jbrowse/core/ui';
|
|
3
|
-
import { Button, DialogContent } from '@mui/material';
|
|
3
|
+
import { Button, Checkbox, DialogContent, Table, TableBody, TableCell, TableHead, TableRow, } from '@mui/material';
|
|
4
4
|
import { observer } from 'mobx-react';
|
|
5
|
-
import { getPalette } from "../../ggplotPalettes.js";
|
|
6
5
|
const Toggles = observer(function ({ model }) {
|
|
7
6
|
const { featureFilters } = model;
|
|
8
7
|
return (React.createElement("div", null,
|
|
@@ -17,40 +16,45 @@ const Toggles = observer(function ({ model }) {
|
|
|
17
16
|
}
|
|
18
17
|
} }, "Toggle all off")));
|
|
19
18
|
});
|
|
20
|
-
const
|
|
21
|
-
const { tidyInterProAnnotationTypes,
|
|
22
|
-
const
|
|
23
|
-
const
|
|
19
|
+
const FeatureTable = observer(function ({ model }) {
|
|
20
|
+
const { tidyInterProAnnotationTypes, tidyInterProAnnotations, fillPalette } = model;
|
|
21
|
+
const counts = new Map();
|
|
22
|
+
for (const annot of tidyInterProAnnotations) {
|
|
23
|
+
counts.set(annot.accession, (counts.get(annot.accession) ?? 0) + 1);
|
|
24
|
+
}
|
|
24
25
|
return (React.createElement(React.Fragment, null,
|
|
25
26
|
React.createElement(Toggles, { model: model }),
|
|
26
|
-
React.createElement("
|
|
27
|
-
React.createElement(
|
|
28
|
-
React.createElement(
|
|
29
|
-
React.createElement("
|
|
30
|
-
React.createElement(
|
|
31
|
-
React.createElement(
|
|
32
|
-
React.createElement(
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
27
|
+
React.createElement(Table, { size: "small" },
|
|
28
|
+
React.createElement(TableHead, null,
|
|
29
|
+
React.createElement(TableRow, null,
|
|
30
|
+
React.createElement(TableCell, { padding: "checkbox" }),
|
|
31
|
+
React.createElement(TableCell, null, "color"),
|
|
32
|
+
React.createElement(TableCell, null, "accession"),
|
|
33
|
+
React.createElement(TableCell, null, "name"),
|
|
34
|
+
React.createElement(TableCell, null, "count"),
|
|
35
|
+
React.createElement(TableCell, null, "description"))),
|
|
36
|
+
React.createElement(TableBody, null, [...tidyInterProAnnotationTypes.values()].map(({ accession, name, description }) => (React.createElement(TableRow, { key: accession },
|
|
37
|
+
React.createElement(TableCell, { padding: "checkbox" },
|
|
38
|
+
React.createElement(Checkbox, { checked: model.featureFilters.get(accession) ?? false, onChange: () => {
|
|
36
39
|
model.setFilter(accession, !model.featureFilters.get(accession));
|
|
37
40
|
} })),
|
|
38
|
-
React.createElement(
|
|
39
|
-
React.createElement("td", null, name),
|
|
40
|
-
React.createElement("td", null, description),
|
|
41
|
-
React.createElement("td", null,
|
|
41
|
+
React.createElement(TableCell, null,
|
|
42
42
|
React.createElement("div", { style: {
|
|
43
43
|
width: 20,
|
|
44
44
|
height: 20,
|
|
45
|
-
background:
|
|
46
|
-
} }))
|
|
45
|
+
background: fillPalette[accession],
|
|
46
|
+
} })),
|
|
47
|
+
React.createElement(TableCell, null, accession),
|
|
48
|
+
React.createElement(TableCell, null, name),
|
|
49
|
+
React.createElement(TableCell, null, counts.get(accession)),
|
|
50
|
+
React.createElement(TableCell, null, description))))))));
|
|
47
51
|
});
|
|
48
52
|
const FeatureTypeDialog = observer(function ({ onClose, model, }) {
|
|
49
53
|
return (React.createElement(Dialog, { onClose: () => {
|
|
50
54
|
onClose();
|
|
51
55
|
}, open: true, title: "Feature filters", maxWidth: "xl" },
|
|
52
56
|
React.createElement(DialogContent, null,
|
|
53
|
-
React.createElement(
|
|
57
|
+
React.createElement(FeatureTable, { model: model }))));
|
|
54
58
|
});
|
|
55
59
|
export default FeatureTypeDialog;
|
|
56
60
|
//# sourceMappingURL=FeatureDialog.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FeatureDialog.js","sourceRoot":"","sources":["../../../src/components/dialogs/FeatureDialog.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,
|
|
1
|
+
{"version":3,"file":"FeatureDialog.js","sourceRoot":"","sources":["../../../src/components/dialogs/FeatureDialog.tsx"],"names":[],"mappings":"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"}
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MultiAlignmentSelector.js","sourceRoot":"","sources":["../../../src/components/header/MultiAlignmentSelector.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAIrC,MAAM,sBAAsB,GAAG,QAAQ,CAAC,UAAU,EAChD,KAAK,GAGN;IACC,MAAM,EAAE,gBAAgB,EAAE,cAAc,EAAE,GAAG,KAAK,CAAA;IAClD,OAAO,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CACjC,oBAAC,SAAS,IACR,MAAM,QACN,OAAO,EAAC,UAAU,EAClB,KAAK,EAAE,gBAAgB,EACvB,IAAI,EAAC,OAAO,EACZ,QAAQ,EAAE,KAAK,CAAC,EAAE;YAChB,KAAK,CAAC,mBAAmB,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YAC9C,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;YACnB,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;QACrB,CAAC,IAEA,cAAc,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"MultiAlignmentSelector.js","sourceRoot":"","sources":["../../../src/components/header/MultiAlignmentSelector.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAIrC,MAAM,sBAAsB,GAAG,QAAQ,CAAC,UAAU,EAChD,KAAK,GAGN;IACC,MAAM,EAAE,gBAAgB,EAAE,cAAc,EAAE,GAAG,KAAK,CAAA;IAClD,8EAA8E;IAC9E,6EAA6E;IAC7E,2EAA2E;IAC3E,sEAAsE;IACtE,MAAM,IAAI,GAAG,IAAI,GAAG,EAAkB,CAAA;IACtC,OAAO,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CACjC,oBAAC,SAAS,IACR,MAAM,QACN,OAAO,EAAC,UAAU,EAClB,KAAK,EAAE,gBAAgB,EACvB,IAAI,EAAC,OAAO,EACZ,QAAQ,EAAE,KAAK,CAAC,EAAE;YAChB,KAAK,CAAC,mBAAmB,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YAC9C,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;YACnB,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;QACrB,CAAC,IAEA,cAAc,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;QACpC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QAC/B,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAA;QACvB,OAAO,CACL,oBAAC,QAAQ,IAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,IAC7D,MAAM,CACE,CACZ,CAAA;IACH,CAAC,CAAC,CACQ,CACb,CAAC,CAAC,CAAC,IAAI,CAAA;AACV,CAAC,CAAC,CAAA;AACF,eAAe,sBAAsB,CAAA"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import React, { useState } from 'react';
|
|
2
|
+
import ExpandLess from '@mui/icons-material/ExpandLess';
|
|
3
|
+
import ExpandMore from '@mui/icons-material/ExpandMore';
|
|
4
|
+
import { IconButton, Paper, Typography } from '@mui/material';
|
|
5
|
+
import { observer } from 'mobx-react';
|
|
6
|
+
const DomainLegend = observer(function ({ model }) {
|
|
7
|
+
const [expanded, setExpanded] = useState(true);
|
|
8
|
+
const { actuallyShowDomains, visibleDomainTypes: visible, fillPalette } = model;
|
|
9
|
+
const ExpandIcon = expanded ? ExpandLess : ExpandMore;
|
|
10
|
+
return actuallyShowDomains && visible.length > 0 ? (React.createElement(Paper, { elevation: 3, style: {
|
|
11
|
+
position: 'absolute',
|
|
12
|
+
top: 4,
|
|
13
|
+
right: 4,
|
|
14
|
+
zIndex: 100,
|
|
15
|
+
maxWidth: 260,
|
|
16
|
+
maxHeight: '60%',
|
|
17
|
+
display: 'flex',
|
|
18
|
+
flexDirection: 'column',
|
|
19
|
+
opacity: 0.95,
|
|
20
|
+
} },
|
|
21
|
+
React.createElement("div", { style: {
|
|
22
|
+
display: 'flex',
|
|
23
|
+
alignItems: 'center',
|
|
24
|
+
justifyContent: 'flex-end',
|
|
25
|
+
padding: '2px 4px 2px 8px',
|
|
26
|
+
} },
|
|
27
|
+
React.createElement(IconButton, { size: "small", onClick: () => {
|
|
28
|
+
setExpanded(!expanded);
|
|
29
|
+
} },
|
|
30
|
+
React.createElement(ExpandIcon, { fontSize: "small" }))),
|
|
31
|
+
expanded ? (React.createElement("div", { style: { overflow: 'auto', padding: '0 8px 6px' } }, visible.map(({ accession, name }) => (React.createElement("div", { key: accession, style: { display: 'flex', alignItems: 'center', gap: 6 }, title: accession },
|
|
32
|
+
React.createElement("div", { style: {
|
|
33
|
+
width: 12,
|
|
34
|
+
height: 12,
|
|
35
|
+
flexShrink: 0,
|
|
36
|
+
background: fillPalette[accession],
|
|
37
|
+
} }),
|
|
38
|
+
React.createElement(Typography, { variant: "caption", noWrap: true }, name)))))) : null)) : null;
|
|
39
|
+
});
|
|
40
|
+
export default DomainLegend;
|
|
41
|
+
//# sourceMappingURL=DomainLegend.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DomainLegend.js","sourceRoot":"","sources":["../../../src/components/msa/DomainLegend.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAEvC,OAAO,UAAU,MAAM,gCAAgC,CAAA;AACvD,OAAO,UAAU,MAAM,gCAAgC,CAAA;AACvD,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAIrC,MAAM,YAAY,GAAG,QAAQ,CAAC,UAAU,EAAE,KAAK,EAA2B;IACxE,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAA;IAC9C,MAAM,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,KAAK,CAAA;IAC/E,MAAM,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAA;IAErD,OAAO,mBAAmB,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CACjD,oBAAC,KAAK,IACJ,SAAS,EAAE,CAAC,EACZ,KAAK,EAAE;YACL,QAAQ,EAAE,UAAU;YACpB,GAAG,EAAE,CAAC;YACN,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,GAAG;YACX,QAAQ,EAAE,GAAG;YACb,SAAS,EAAE,KAAK;YAChB,OAAO,EAAE,MAAM;YACf,aAAa,EAAE,QAAQ;YACvB,OAAO,EAAE,IAAI;SACd;QAED,6BACE,KAAK,EAAE;gBACL,OAAO,EAAE,MAAM;gBACf,UAAU,EAAE,QAAQ;gBACpB,cAAc,EAAE,UAAU;gBAC1B,OAAO,EAAE,iBAAiB;aAC3B;YAED,oBAAC,UAAU,IACT,IAAI,EAAC,OAAO,EACZ,OAAO,EAAE,GAAG,EAAE;oBACZ,WAAW,CAAC,CAAC,QAAQ,CAAC,CAAA;gBACxB,CAAC;gBAED,oBAAC,UAAU,IAAC,QAAQ,EAAC,OAAO,GAAG,CACpB,CACT;QACL,QAAQ,CAAC,CAAC,CAAC,CACV,6BAAK,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,IACnD,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CACpC,6BACE,GAAG,EAAE,SAAS,EACd,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,EACxD,KAAK,EAAE,SAAS;YAEhB,6BACE,KAAK,EAAE;oBACL,KAAK,EAAE,EAAE;oBACT,MAAM,EAAE,EAAE;oBACV,UAAU,EAAE,CAAC;oBACb,UAAU,EAAE,WAAW,CAAC,SAAS,CAAC;iBACnC,GACD;YACF,oBAAC,UAAU,IAAC,OAAO,EAAC,SAAS,EAAC,MAAM,UACjC,IAAI,CACM,CACT,CACP,CAAC,CACE,CACP,CAAC,CAAC,CAAC,IAAI,CACF,CACT,CAAC,CAAC,CAAC,IAAI,CAAA;AACV,CAAC,CAAC,CAAA;AAEF,eAAe,YAAY,CAAA"}
|
|
@@ -51,7 +51,7 @@ const MSACanvasBlock = observer(function ({ model, offsetX, offsetY, }) {
|
|
|
51
51
|
contrastScheme,
|
|
52
52
|
]);
|
|
53
53
|
const [mousePosition, setMousePosition] = useState();
|
|
54
|
-
const { hoveredInsertion } = model;
|
|
54
|
+
const { hoveredInsertion, mouseOverDomains } = model;
|
|
55
55
|
return (React.createElement(React.Fragment, null,
|
|
56
56
|
React.createElement("canvas", { ref: ref, onMouseMove: event => {
|
|
57
57
|
if (ref.current) {
|
|
@@ -66,9 +66,10 @@ const MSACanvasBlock = observer(function ({ model, offsetX, offsetY, }) {
|
|
|
66
66
|
else {
|
|
67
67
|
model.setMousePos(undefined, undefined);
|
|
68
68
|
}
|
|
69
|
-
// only track client coords when
|
|
70
|
-
//
|
|
71
|
-
|
|
69
|
+
// only track client coords when there's something to show in the
|
|
70
|
+
// tooltip (insertion or a domain under the cursor); avoids a
|
|
71
|
+
// re-render on every move over plain alignment cells
|
|
72
|
+
setMousePosition(model.hoveredInsertion || model.mouseOverDomains.length > 0
|
|
72
73
|
? { x: event.clientX, y: event.clientY }
|
|
73
74
|
: undefined);
|
|
74
75
|
}
|
|
@@ -100,7 +101,18 @@ const MSACanvasBlock = observer(function ({ model, offsetX, offsetY, }) {
|
|
|
100
101
|
' ',
|
|
101
102
|
hoveredInsertion.letters.length > 20
|
|
102
103
|
? `${hoveredInsertion.letters.slice(0, 20)}...`
|
|
103
|
-
: hoveredInsertion.letters)) : null
|
|
104
|
+
: hoveredInsertion.letters)) : null,
|
|
105
|
+
!hoveredInsertion && mouseOverDomains.length > 0 && mousePosition ? (React.createElement(BaseTooltip, { clientPoint: { x: mousePosition.x, y: mousePosition.y + 15 } }, mouseOverDomains.map(d => (React.createElement("div", { key: `${d.accession}-${d.start}-${d.end}` },
|
|
106
|
+
React.createElement("b", null, d.name),
|
|
107
|
+
" (",
|
|
108
|
+
d.accession,
|
|
109
|
+
") ",
|
|
110
|
+
d.start,
|
|
111
|
+
"-",
|
|
112
|
+
d.end,
|
|
113
|
+
d.description ? (React.createElement(React.Fragment, null,
|
|
114
|
+
React.createElement("br", null),
|
|
115
|
+
d.description)) : null))))) : null));
|
|
104
116
|
});
|
|
105
117
|
export default MSACanvasBlock;
|
|
106
118
|
//# sourceMappingURL=MSACanvasBlock.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MSACanvasBlock.js","sourceRoot":"","sources":["../../../src/components/msa/MSACanvasBlock.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAE1D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAC9B,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAErC,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAA;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAI5D,SAAS,aAAa,CACpB,KAAuB,EACvB,EAAqB,EACrB,OAAe,EACf,OAAe,EACf,QAAgB,EAChB,SAAiB;IAEjB,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,qBAAqB,EAAE,CAAA;IAChD,OAAO;QACL,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,GAAG,OAAO,CAAC,GAAG,QAAQ,CAAC;QAC5D,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,GAAG,OAAO,CAAC,GAAG,SAAS,CAAC;KAC7D,CAAA;AACH,CAAC;AAED,MAAM,cAAc,GAAG,QAAQ,CAAC,UAAU,EACxC,KAAK,EACL,OAAO,EACP,OAAO,GAKR;IACC,MAAM,EACJ,QAAQ,EACR,SAAS,EACT,OAAO,EACP,OAAO,EACP,WAAW,EACX,SAAS,EACT,aAAa,EACb,aAAa,EACb,kBAAkB,GACnB,GAAG,KAAK,CAAA;IACT,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAA;IAE/D,MAAM,GAAG,GAAG,MAAM,CAAoB,IAAI,CAAC,CAAA;IAC3C,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC,CAAA;QACzC,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAM;QACR,CAAC;QACD,OAAO,OAAO,CAAC,GAAG,EAAE;YAClB,GAAG,CAAC,cAAc,EAAE,CAAA;YACpB,GAAG,CAAC,SAAS,CACX,CAAC,EACD,CAAC,EACD,SAAS,GAAG,kBAAkB,EAC9B,SAAS,GAAG,kBAAkB,CAC/B,CAAA;YACD,IAAI,KAAK,CAAC,mBAAmB,EAAE,CAAC;gBAC9B,2BAA2B,CAAC;oBAC1B,GAAG;oBACH,OAAO;oBACP,OAAO;oBACP,KAAK;iBACN,CAAC,CAAA;YACJ,CAAC;YACD,cAAc,CAAC;gBACb,GAAG;gBACH,KAAK;gBACL,OAAO;gBACP,OAAO;gBACP,cAAc;gBACd,KAAK;aACN,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC,EAAE;QACD,KAAK;QACL,OAAO;QACP,OAAO;QACP,KAAK;QACL,SAAS;QACT,kBAAkB;QAClB,cAAc;KACf,CAAC,CAAA;IAEF,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,EAA4B,CAAA;IAC9E,MAAM,EAAE,gBAAgB,EAAE,GAAG,KAAK,CAAA;
|
|
1
|
+
{"version":3,"file":"MSACanvasBlock.js","sourceRoot":"","sources":["../../../src/components/msa/MSACanvasBlock.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { observer } from 'mobx-react';
|
|
3
|
+
import DomainLegend from "./DomainLegend.js";
|
|
3
4
|
import MSACanvas from "./MSACanvas.js";
|
|
4
5
|
import MSAMouseoverCanvas from "./MSAMouseoverCanvas.js";
|
|
5
6
|
const MSAPanel = observer(function ({ model }) {
|
|
6
7
|
return (React.createElement("div", { style: { position: 'relative' } },
|
|
7
8
|
React.createElement(MSACanvas, { model: model }),
|
|
8
|
-
React.createElement(MSAMouseoverCanvas, { model: model })
|
|
9
|
+
React.createElement(MSAMouseoverCanvas, { model: model }),
|
|
10
|
+
React.createElement(DomainLegend, { model: model })));
|
|
9
11
|
});
|
|
10
12
|
export default MSAPanel;
|
|
11
13
|
//# sourceMappingURL=MSAPanel.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MSAPanel.js","sourceRoot":"","sources":["../../../src/components/msa/MSAPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAErC,OAAO,SAAS,MAAM,gBAAiB,CAAA;AACvC,OAAO,kBAAkB,MAAM,yBAA0B,CAAA;AAKzD,MAAM,QAAQ,GAAG,QAAQ,CAAC,UAAU,EAAE,KAAK,EAA2B;IACpE,OAAO,CACL,6BAAK,KAAK,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE;QAClC,oBAAC,SAAS,IAAC,KAAK,EAAE,KAAK,GAAI;QAC3B,oBAAC,kBAAkB,IAAC,KAAK,EAAE,KAAK,GAAI,
|
|
1
|
+
{"version":3,"file":"MSAPanel.js","sourceRoot":"","sources":["../../../src/components/msa/MSAPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAErC,OAAO,YAAY,MAAM,mBAAoB,CAAA;AAC7C,OAAO,SAAS,MAAM,gBAAiB,CAAA;AACvC,OAAO,kBAAkB,MAAM,yBAA0B,CAAA;AAKzD,MAAM,QAAQ,GAAG,QAAQ,CAAC,UAAU,EAAE,KAAK,EAA2B;IACpE,OAAO,CACL,6BAAK,KAAK,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE;QAClC,oBAAC,SAAS,IAAC,KAAK,EAAE,KAAK,GAAI;QAC3B,oBAAC,kBAAkB,IAAC,KAAK,EAAE,KAAK,GAAI;QACpC,oBAAC,YAAY,IAAC,KAAK,EAAE,KAAK,GAAI,CAC1B,CACP,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,eAAe,QAAQ,CAAA"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { getVisibleLeaves } from "./getVisibleLeaves.js";
|
|
2
|
+
import { subFeatureRowHeight } from "../../constants.js";
|
|
2
3
|
export function renderBoxFeatureCanvasBlock({ model, offsetX, offsetY, ctx, highResScaleFactorOverride, blockSizeYOverride, }) {
|
|
3
4
|
const { blockSize, rowHeight, highResScaleFactor, showDomains } = model;
|
|
4
5
|
if (showDomains) {
|
|
@@ -16,32 +17,75 @@ export function renderBoxFeatureCanvasBlock({ model, offsetX, offsetY, ctx, high
|
|
|
16
17
|
}
|
|
17
18
|
}
|
|
18
19
|
function drawTiles({ model, ctx, visibleLeaves, }) {
|
|
19
|
-
const { subFeatureRows, colWidth, rowHeight, fillPalette, strokePalette, tidyFilteredGatheredInterProAnnotations, } = model;
|
|
20
|
+
const { subFeatureRows, colWidth, rowHeight, fillPalette, strokePalette, segmentLabels, showMsaLetters, tidyFilteredGatheredInterProAnnotations, } = model;
|
|
21
|
+
const h = subFeatureRows ? subFeatureRowHeight : rowHeight;
|
|
22
|
+
// exon numbers label the bands only when residue letters aren't drawn (zoomed
|
|
23
|
+
// out); when letters show, the alternating shades alone mark the boundaries
|
|
24
|
+
// and a number would collide with the sequence
|
|
25
|
+
const drawSegmentLabels = !showMsaLetters && !subFeatureRows && h >= 9;
|
|
20
26
|
for (let i = 0, l1 = visibleLeaves.length; i < l1; i++) {
|
|
21
27
|
const node = visibleLeaves[i];
|
|
22
|
-
const {
|
|
23
|
-
const y = x;
|
|
28
|
+
const { name } = node.data;
|
|
29
|
+
const y = node.x;
|
|
24
30
|
const entry = tidyFilteredGatheredInterProAnnotations[name];
|
|
25
31
|
if (entry) {
|
|
26
32
|
for (let j = 0, l2 = entry.length; j < l2; j++) {
|
|
27
|
-
const { start, end, accession } = entry[j];
|
|
33
|
+
const { start, end, accession, strand } = entry[j];
|
|
28
34
|
// Convert sequence positions to visible column positions
|
|
29
35
|
// seqPos is 1-based from InterPro, so subtract 1 for 0-based
|
|
30
36
|
const m1 = model.seqPosToVisibleCol(name, start - 1);
|
|
31
37
|
const m2 = model.seqPosToVisibleCol(name, end);
|
|
32
|
-
if (m1
|
|
33
|
-
|
|
38
|
+
if (m1 !== undefined && m2 !== undefined) {
|
|
39
|
+
const x = m1 * colWidth;
|
|
40
|
+
const t = y - rowHeight + (subFeatureRows ? j * h : 0);
|
|
41
|
+
const lw = colWidth * (m2 - m1);
|
|
42
|
+
ctx.fillStyle = fillPalette[accession];
|
|
43
|
+
ctx.strokeStyle = strokePalette[accession];
|
|
44
|
+
if (strand === undefined) {
|
|
45
|
+
ctx.fillRect(x, t, lw, h);
|
|
46
|
+
ctx.strokeRect(x, t, lw, h);
|
|
47
|
+
// segment (exon) number drawn once per band, on the top visible row,
|
|
48
|
+
// so it reads as a column header for the whole band
|
|
49
|
+
const label = drawSegmentLabels ? segmentLabels.get(accession) : undefined;
|
|
50
|
+
if (label !== undefined && i === 0) {
|
|
51
|
+
const fontSize = Math.min(h - 2, 11);
|
|
52
|
+
ctx.font = `${fontSize}px sans-serif`;
|
|
53
|
+
if (ctx.measureText(label).width + 2 <= lw) {
|
|
54
|
+
ctx.fillStyle = '#222';
|
|
55
|
+
ctx.textAlign = 'center';
|
|
56
|
+
ctx.textBaseline = 'middle';
|
|
57
|
+
ctx.fillText(label, x + lw / 2, t + h / 2);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
drawGeneArrow({ ctx, x, t, w: lw, h, strand });
|
|
63
|
+
}
|
|
34
64
|
}
|
|
35
|
-
const x = m1 * colWidth;
|
|
36
|
-
ctx.fillStyle = fillPalette[accession];
|
|
37
|
-
ctx.strokeStyle = strokePalette[accession];
|
|
38
|
-
const h = subFeatureRows ? 4 : rowHeight;
|
|
39
|
-
const t = y - rowHeight + (subFeatureRows ? j * h : 0);
|
|
40
|
-
const lw = colWidth * (m2 - m1);
|
|
41
|
-
ctx.fillRect(x, t, lw, h);
|
|
42
|
-
ctx.strokeRect(x, t, lw, h);
|
|
43
65
|
}
|
|
44
66
|
}
|
|
45
67
|
}
|
|
46
68
|
}
|
|
69
|
+
// A gene arrow: a full-width rectangular body spanning the feature's
|
|
70
|
+
// start..end columns, plus a triangular head that points *beyond* that end in
|
|
71
|
+
// the strand direction (right for +, left for -). Keeping the body aligned to
|
|
72
|
+
// the exact start/end columns means + and - strand features read as having the
|
|
73
|
+
// same boundaries; the arrow lives outside them purely to show transcription
|
|
74
|
+
// direction, preserving the column-by-column homology down the rows.
|
|
75
|
+
function drawGeneArrow({ ctx, x, t, w, h, strand, }) {
|
|
76
|
+
// body spans bodyStart..bodyEnd (the exact columns); the head extends one
|
|
77
|
+
// row-height past bodyEnd in the strand direction
|
|
78
|
+
const dir = strand > 0 ? 1 : -1;
|
|
79
|
+
const bodyStart = strand > 0 ? x : x + w;
|
|
80
|
+
const bodyEnd = strand > 0 ? x + w : x;
|
|
81
|
+
ctx.beginPath();
|
|
82
|
+
ctx.moveTo(bodyStart, t);
|
|
83
|
+
ctx.lineTo(bodyEnd, t);
|
|
84
|
+
ctx.lineTo(bodyEnd + dir * h, t + h / 2);
|
|
85
|
+
ctx.lineTo(bodyEnd, t + h);
|
|
86
|
+
ctx.lineTo(bodyStart, t + h);
|
|
87
|
+
ctx.closePath();
|
|
88
|
+
ctx.fill();
|
|
89
|
+
ctx.stroke();
|
|
90
|
+
}
|
|
47
91
|
//# sourceMappingURL=renderBoxFeatureCanvasBlock.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderBoxFeatureCanvasBlock.js","sourceRoot":"","sources":["../../../src/components/msa/renderBoxFeatureCanvasBlock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAOxD,MAAM,UAAU,2BAA2B,CAAC,EAC1C,KAAK,EACL,OAAO,EACP,OAAO,EACP,GAAG,EACH,0BAA0B,EAC1B,kBAAkB,GAQnB;IACC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,kBAAkB,EAAE,WAAW,EAAE,GAAG,KAAK,CAAA;IACvE,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,CAAC,GAAG,0BAA0B,IAAI,kBAAkB,CAAA;QAC1D,MAAM,EAAE,GAAG,kBAAkB,IAAI,SAAS,CAAA;QAC1C,GAAG,CAAC,cAAc,EAAE,CAAA;QACpB,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QACf,GAAG,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,SAAS,GAAG,CAAC,GAAG,OAAO,CAAC,CAAA;QAEhD,MAAM,aAAa,GAAG,gBAAgB,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAA;QAE1E,SAAS,CAAC;YACR,KAAK;YACL,GAAG;YACH,aAAa;SACd,CAAC,CAAA;IACJ,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,EACjB,KAAK,EACL,GAAG,EACH,aAAa,GAKd;IACC,MAAM,EACJ,cAAc,EACd,QAAQ,EACR,SAAS,EACT,WAAW,EACX,aAAa,EACb,uCAAuC,GACxC,GAAG,KAAK,CAAA;
|
|
1
|
+
{"version":3,"file":"renderBoxFeatureCanvasBlock.js","sourceRoot":"","sources":["../../../src/components/msa/renderBoxFeatureCanvasBlock.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,6 +11,7 @@ export function renderMSABlock({ model, offsetX, offsetY, contrastScheme, ctx, t
|
|
|
11
11
|
ctx.scale(k, k);
|
|
12
12
|
ctx.translate(-offsetX, rowHeight / 2 - offsetY);
|
|
13
13
|
ctx.textAlign = 'center';
|
|
14
|
+
ctx.textBaseline = 'alphabetic';
|
|
14
15
|
setFontSize(ctx, fontSize, !bgColor);
|
|
15
16
|
const { xStart, xEnd } = visibleColRange({
|
|
16
17
|
offsetX,
|
|
@@ -57,8 +58,7 @@ function drawTilesAndText({ model, ctx, theme, contrastScheme, visibleLeaves, xS
|
|
|
57
58
|
const { bgColor, colorSchemeName, colorScheme, columns, colWidth, rowHeight, relativeTo, showMsaLetters, colClustalX, colConsensus, } = model;
|
|
58
59
|
const isClustalX = colorSchemeName === 'clustalx_protein_dynamic';
|
|
59
60
|
const isPercentIdentity = colorSchemeName === 'percent_identity_dynamic';
|
|
60
|
-
|
|
61
|
-
if (!drawBgTiles && !showMsaLetters) {
|
|
61
|
+
if (!bgColor && !showMsaLetters) {
|
|
62
62
|
return;
|
|
63
63
|
}
|
|
64
64
|
const offsetXAligned = xStart * colWidth;
|
|
@@ -89,7 +89,7 @@ function drawTilesAndText({ model, ctx, theme, contrastScheme, visibleLeaves, xS
|
|
|
89
89
|
else {
|
|
90
90
|
color = colorScheme[letter];
|
|
91
91
|
}
|
|
92
|
-
if (
|
|
92
|
+
if (bgColor) {
|
|
93
93
|
ctx.fillStyle = isMatchingReference
|
|
94
94
|
? theme.palette.action.hover
|
|
95
95
|
: color || theme.palette.background.default;
|