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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderMSABlock.js","sourceRoot":"","sources":["../../../src/components/msa/renderMSABlock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAClD,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAA;AAQtD,MAAM,UAAU,cAAc,CAAC,EAC7B,KAAK,EACL,OAAO,EACP,OAAO,EACP,cAAc,EACd,GAAG,EACH,KAAK,EACL,0BAA0B,EAC1B,kBAAkB,EAClB,kBAAkB,GAWnB;IACC,MAAM,EACJ,QAAQ,EACR,SAAS,EACT,SAAS,EACT,QAAQ,EACR,kBAAkB,EAClB,mBAAmB,EACnB,OAAO,GACR,GAAG,KAAK,CAAA;IACT,MAAM,CAAC,GAAG,0BAA0B,IAAI,kBAAkB,CAAA;IAC1D,MAAM,EAAE,GAAG,kBAAkB,IAAI,SAAS,CAAA;IAC1C,MAAM,EAAE,GAAG,kBAAkB,IAAI,SAAS,CAAA;IAC1C,GAAG,CAAC,cAAc,EAAE,CAAA;IACpB,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACf,GAAG,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,SAAS,GAAG,CAAC,GAAG,OAAO,CAAC,CAAA;IAChD,GAAG,CAAC,SAAS,GAAG,QAAQ,CAAA;IACxB,WAAW,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAA;IAEpC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,eAAe,CAAC;QACvC,OAAO;QACP,UAAU,EAAE,EAAE;QACd,QAAQ;KACT,CAAC,CAAA;IACF,MAAM,aAAa,GAAG,gBAAgB,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAA;IAC1E,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,KAAK,CAAA;IACrC,MAAM,YAAY,GAAG,UAAU;QAC7B,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC;QAC9C,CAAC,CAAC,IAAI,CAAA;IAER,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACzB,gBAAgB,CAAC;YACf,KAAK;YACL,GAAG;YACH,KAAK;YACL,cAAc;YACd,MAAM;YACN,IAAI;YACJ,aAAa;YACb,YAAY;SACb,CAAC,CAAA;IACJ,CAAC;SAAM,CAAC;QACN,QAAQ,CAAC;YACP,KAAK;YACL,GAAG;YACH,MAAM;YACN,IAAI;YACJ,aAAa;YACb,YAAY;SACb,CAAC,CAAA;IACJ,CAAC;IACD,uBAAuB,CAAC;QACtB,KAAK;QACL,GAAG;QACH,MAAM;QACN,IAAI;QACJ,aAAa;KACd,CAAC,CAAA;IACF,GAAG,CAAC,cAAc,EAAE,CAAA;AACtB,CAAC;AAED,SAAS,gBAAgB,CAAC,EACxB,KAAK,EACL,GAAG,EACH,KAAK,EACL,cAAc,EACd,aAAa,EACb,MAAM,EACN,IAAI,EACJ,YAAY,GAUb;IACC,MAAM,EACJ,OAAO,EACP,eAAe,EACf,WAAW,EACX,OAAO,EACP,QAAQ,EACR,SAAS,EACT,UAAU,EACV,cAAc,EACd,WAAW,EACX,YAAY,GACb,GAAG,KAAK,CAAA;IAET,MAAM,UAAU,GAAG,eAAe,KAAK,0BAA0B,CAAA;IACjE,MAAM,iBAAiB,GAAG,eAAe,KAAK,0BAA0B,CAAA;IACxE,
|
|
1
|
+
{"version":3,"file":"renderMSABlock.js","sourceRoot":"","sources":["../../../src/components/msa/renderMSABlock.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,29 @@
|
|
|
1
1
|
const hoverColor = 'rgba(0,0,0,0.15)';
|
|
2
2
|
const highlightColor = 'rgba(128,128,0,0.2)';
|
|
3
|
+
// the persistent highlightColumns overlay: a stronger fill plus a solid border
|
|
4
|
+
// so a domain/motif band reads clearly over the colored alignment cells (the
|
|
5
|
+
// faint hover-style wash alone is invisible against clustalx coloring)
|
|
6
|
+
const highlightColumnsFill = 'rgba(255,140,0,0.28)';
|
|
7
|
+
const highlightColumnsBorder = 'rgba(210,90,0,0.95)';
|
|
3
8
|
const referenceColor = 'rgba(0,128,255,0.3)'; // Blue highlight for reference row
|
|
4
9
|
const multiRowHoverColor = 'rgba(255,165,0,0.15)'; // Orange highlight for multi-row tree hover
|
|
10
|
+
// Collapse sorted column indices into contiguous [start,end] runs so a run of
|
|
11
|
+
// highlighted columns draws as one bordered band rather than per-column slices
|
|
12
|
+
// (which would draw internal borders).
|
|
13
|
+
function contiguousRuns(columns) {
|
|
14
|
+
const sorted = [...columns].sort((a, b) => a - b);
|
|
15
|
+
const runs = [];
|
|
16
|
+
for (const col of sorted) {
|
|
17
|
+
const last = runs.at(-1);
|
|
18
|
+
if (last && col === last.end + 1) {
|
|
19
|
+
last.end = col;
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
runs.push({ start: col, end: col });
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return runs;
|
|
26
|
+
}
|
|
5
27
|
export function renderMouseover({ ctx, model, }) {
|
|
6
28
|
const { mouseCol, colWidth, msaAreaWidth, verticalScrollbarWidth, height, rowHeight, scrollX, scrollY, mouseRow, mouseClickRow, mouseClickCol, relativeTo, hoveredTreeNode, highlightedColumns, highResScaleFactor, } = model;
|
|
7
29
|
const width = msaAreaWidth - verticalScrollbarWidth;
|
|
@@ -26,11 +48,17 @@ export function renderMouseover({ ctx, model, }) {
|
|
|
26
48
|
}
|
|
27
49
|
}
|
|
28
50
|
}
|
|
29
|
-
// Highlight multiple columns
|
|
51
|
+
// Highlight multiple columns — draw each contiguous run as a filled, bordered
|
|
52
|
+
// band so a domain/motif highlight is clearly visible over the alignment
|
|
30
53
|
if (highlightedColumns?.length) {
|
|
31
|
-
ctx.
|
|
32
|
-
for (const
|
|
33
|
-
|
|
54
|
+
ctx.lineWidth = 2;
|
|
55
|
+
for (const { start, end } of contiguousRuns(highlightedColumns)) {
|
|
56
|
+
const x = start * colWidth + scrollX;
|
|
57
|
+
const w = (end - start + 1) * colWidth;
|
|
58
|
+
ctx.fillStyle = highlightColumnsFill;
|
|
59
|
+
ctx.fillRect(x, 0, w, height);
|
|
60
|
+
ctx.strokeStyle = highlightColumnsBorder;
|
|
61
|
+
ctx.strokeRect(x, 0, w, height);
|
|
34
62
|
}
|
|
35
63
|
}
|
|
36
64
|
if (mouseCol !== undefined) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderMSAMouseover.js","sourceRoot":"","sources":["../../../src/components/msa/renderMSAMouseover.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,GAAG,kBAAkB,CAAA;AACrC,MAAM,cAAc,GAAG,qBAAqB,CAAA;AAC5C,MAAM,cAAc,GAAG,qBAAqB,CAAA,CAAC,mCAAmC;AAChF,MAAM,kBAAkB,GAAG,sBAAsB,CAAA,CAAC,4CAA4C;AAE9F,MAAM,UAAU,eAAe,CAAC,EAC9B,GAAG,EACH,KAAK,GAIN;IACC,MAAM,EACJ,QAAQ,EACR,QAAQ,EACR,YAAY,EACZ,sBAAsB,EACtB,MAAM,EACN,SAAS,EACT,OAAO,EACP,OAAO,EACP,QAAQ,EACR,aAAa,EACb,aAAa,EACb,UAAU,EACV,eAAe,EACf,kBAAkB,EAClB,kBAAkB,GACnB,GAAG,KAAK,CAAA;IACT,MAAM,KAAK,GAAG,YAAY,GAAG,sBAAsB,CAAA;IACnD,GAAG,CAAC,cAAc,EAAE,CAAA;IACpB,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,GAAG,kBAAkB,EAAE,MAAM,GAAG,kBAAkB,CAAC,CAAA;IAC5E,GAAG,CAAC,KAAK,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAA;IAEjD,oDAAoD;IACpD,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,iBAAiB,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;QAC3D,IAAI,iBAAiB,KAAK,SAAS,EAAE,CAAC;YACpC,GAAG,CAAC,SAAS,GAAG,cAAc,CAAA;YAC9B,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,iBAAiB,GAAG,SAAS,GAAG,OAAO,EAAE,KAAK,EAAE,SAAS,CAAC,CAAA;QAC5E,CAAC;IACH,CAAC;IAED,sEAAsE;IACtE,IAAI,eAAe,EAAE,CAAC;QACpB,GAAG,CAAC,SAAS,GAAG,kBAAkB,CAAA;QAClC,KAAK,MAAM,cAAc,IAAI,eAAe,CAAC,eAAe,EAAE,CAAC;YAC7D,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;YACtD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC3B,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,OAAO,EAAE,KAAK,EAAE,SAAS,CAAC,CAAA;YACnE,CAAC;QACH,CAAC;IACH,CAAC;IAED,
|
|
1
|
+
{"version":3,"file":"renderMSAMouseover.js","sourceRoot":"","sources":["../../../src/components/msa/renderMSAMouseover.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,4 +4,4 @@
|
|
|
4
4
|
* SVG export) satisfy this, so renderers can be typed against it without an
|
|
5
5
|
* `as any` cast at the SVG-export boundary.
|
|
6
6
|
*/
|
|
7
|
-
export type RenderCtx = Pick<CanvasRenderingContext2D, 'arc' | 'beginPath' | 'clearRect' | 'closePath' | 'fill' | 'fillRect' | 'fillStyle' | 'fillText' | 'font' | 'lineTo' | 'lineWidth' | 'measureText' | 'moveTo' | 'resetTransform' | 'scale' | 'setLineDash' | 'stroke' | 'strokeRect' | 'strokeStyle' | 'textAlign' | 'translate'>;
|
|
7
|
+
export type RenderCtx = Pick<CanvasRenderingContext2D, 'arc' | 'beginPath' | 'clearRect' | 'closePath' | 'fill' | 'fillRect' | 'fillStyle' | 'fillText' | 'font' | 'lineTo' | 'lineWidth' | 'measureText' | 'moveTo' | 'resetTransform' | 'scale' | 'setLineDash' | 'stroke' | 'strokeRect' | 'strokeStyle' | 'textAlign' | 'textBaseline' | 'translate'>;
|
|
@@ -23,13 +23,13 @@ export function drawTextTrackContent({ ctx, data, colorScheme, contrastScheme, b
|
|
|
23
23
|
const str = data?.slice(xStart, xEnd);
|
|
24
24
|
for (let i = 0; str && i < str.length; i++) {
|
|
25
25
|
const letter = str[i];
|
|
26
|
-
const
|
|
26
|
+
const upper = letter.toUpperCase();
|
|
27
27
|
if (bgColor) {
|
|
28
28
|
const x = (xStart + i) * colWidth;
|
|
29
|
-
ctx.fillStyle =
|
|
29
|
+
ctx.fillStyle = colorScheme[upper] || 'white';
|
|
30
30
|
ctx.fillRect(x, 0, colWidth, rowHeight);
|
|
31
31
|
if (rowHeight >= 10 && colWidth >= rowHeight / 2) {
|
|
32
|
-
ctx.fillStyle = contrastScheme[
|
|
32
|
+
ctx.fillStyle = contrastScheme[upper] || 'black';
|
|
33
33
|
ctx.fillText(letter, x + colWidth / 2, rowHeight / 2 + 1);
|
|
34
34
|
}
|
|
35
35
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderTracksSvg.js","sourceRoot":"","sources":["../../../src/components/tracks/renderTracksSvg.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAM3D,MAAM,UAAU,oBAAoB,CAAC,EACnC,GAAG,EACH,YAAY,EACZ,QAAQ,EACR,WAAW,EACX,OAAO,EACP,SAAS,GAQV;IACC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,eAAe,CAAC;QACvC,OAAO;QACP,UAAU,EAAE,SAAS;QACrB,QAAQ;KACT,CAAC,CAAA;IAEF,GAAG,CAAC,SAAS,GAAG,MAAM,CAAA;IACtB,KAAK,IAAI,CAAC,GAAG,MAAM,EAAE,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9D,MAAM,KAAK,GAAG,YAAY,CAAC,CAAC,CAAE,CAAA;QAC9B,MAAM,SAAS,GAAG,KAAK,GAAG,WAAW,CAAA;QACrC,MAAM,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAA;QACtB,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,WAAW,GAAG,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAA;IAC/D,CAAC;AACH,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,EACnC,GAAG,EACH,IAAI,EACJ,WAAW,EACX,cAAc,EACd,OAAO,EACP,QAAQ,EACR,SAAS,EACT,OAAO,EACP,SAAS,GAWV;IACC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,eAAe,CAAC;QACvC,OAAO;QACP,UAAU,EAAE,SAAS;QACrB,QAAQ;KACT,CAAC,CAAA;IACF,MAAM,GAAG,GAAG,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAErC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3C,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC,CAAE,CAAA;QACtB,MAAM,KAAK,GAAG,
|
|
1
|
+
{"version":3,"file":"renderTracksSvg.js","sourceRoot":"","sources":["../../../src/components/tracks/renderTracksSvg.ts"],"names":[],"mappings":"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"}
|
package/dist/constants.d.ts
CHANGED
|
@@ -8,6 +8,9 @@ export declare const defaultShowDomains = false;
|
|
|
8
8
|
export declare const defaultHideGaps = true;
|
|
9
9
|
export declare const defaultAllowedGappyness = 100;
|
|
10
10
|
export declare const defaultSubFeatureRows = false;
|
|
11
|
+
export declare const subFeatureRowHeight = 4;
|
|
12
|
+
export declare const segmentFeatureTypes: Set<string>;
|
|
13
|
+
export declare const segmentShades: string[];
|
|
11
14
|
export declare const defaultDrawMsaLetters = true;
|
|
12
15
|
export declare const defaultScrollZoom = false;
|
|
13
16
|
export declare const minColWidth = 0.2;
|
package/dist/constants.js
CHANGED
|
@@ -9,6 +9,22 @@ export const defaultShowDomains = false;
|
|
|
9
9
|
export const defaultHideGaps = true;
|
|
10
10
|
export const defaultAllowedGappyness = 100;
|
|
11
11
|
export const defaultSubFeatureRows = false;
|
|
12
|
+
// row height for each stacked feature when subFeatureRows is on
|
|
13
|
+
export const subFeatureRowHeight = 4;
|
|
14
|
+
// Feature types that are ordinal *segments* of a single transcript (exons and
|
|
15
|
+
// the like) rather than categorical domains. Their identity is their position,
|
|
16
|
+
// so the overlay alternates two shades to mark boundaries and labels them by
|
|
17
|
+
// number, instead of assigning every one a distinct hue + legend row.
|
|
18
|
+
export const segmentFeatureTypes = new Set([
|
|
19
|
+
'exon',
|
|
20
|
+
'CDS',
|
|
21
|
+
'five_prime_UTR',
|
|
22
|
+
'three_prime_UTR',
|
|
23
|
+
'UTR',
|
|
24
|
+
'intron',
|
|
25
|
+
]);
|
|
26
|
+
// the two shades alternated across adjacent segments (exons)
|
|
27
|
+
export const segmentShades = ['#9fb6d4', '#d4dcea'];
|
|
12
28
|
export const defaultDrawMsaLetters = true;
|
|
13
29
|
export const defaultScrollZoom = false;
|
|
14
30
|
// Zoom limits, px per cell. maxCellSize caps both smooth zoom and the stepwise
|
package/dist/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,sBAAsB;AACtB,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,CAAA;AAClC,MAAM,CAAC,MAAM,eAAe,GAAG,EAAE,CAAA;AACjC,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,CAAA;AAChC,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAA;AAC/B,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAA;AAC/B,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAA;AACxC,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,CAAA;AACvC,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAA;AACnC,MAAM,CAAC,MAAM,uBAAuB,GAAG,GAAG,CAAA;AAC1C,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,CAAA;AAC1C,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,CAAA;AACzC,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,CAAA;AAEtC,+EAA+E;AAC/E,iFAAiF;AACjF,0BAA0B;AAC1B,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,CAAA;AAC9B,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAA;AAC7B,MAAM,CAAC,MAAM,WAAW,GAAG,EAAE,CAAA;AAE7B,qBAAqB;AACrB,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAA;AAClC,MAAM,CAAC,MAAM,sBAAsB,GAAG,UAAU,CAAA;AAEhD,sBAAsB;AACtB,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAA;AACrC,MAAM,CAAC,MAAM,uBAAuB,GAAG,KAAK,CAAA;AAC5C,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,CAAA;AACvC,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,CAAA;AACnC,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,CAAA;AACxC,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAA;AACnC,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,CAAA"}
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,sBAAsB;AACtB,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,CAAA;AAClC,MAAM,CAAC,MAAM,eAAe,GAAG,EAAE,CAAA;AACjC,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,CAAA;AAChC,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAA;AAC/B,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAA;AAC/B,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAA;AACxC,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,CAAA;AACvC,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAA;AACnC,MAAM,CAAC,MAAM,uBAAuB,GAAG,GAAG,CAAA;AAC1C,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,CAAA;AAC1C,gEAAgE;AAChE,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAA;AAEpC,8EAA8E;AAC9E,+EAA+E;AAC/E,6EAA6E;AAC7E,sEAAsE;AACtE,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC;IACzC,MAAM;IACN,KAAK;IACL,gBAAgB;IAChB,iBAAiB;IACjB,KAAK;IACL,QAAQ;CACT,CAAC,CAAA;AAEF,6DAA6D;AAC7D,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;AACnD,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,CAAA;AACzC,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,CAAA;AAEtC,+EAA+E;AAC/E,iFAAiF;AACjF,0BAA0B;AAC1B,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,CAAA;AAC9B,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAA;AAC7B,MAAM,CAAC,MAAM,WAAW,GAAG,EAAE,CAAA;AAE7B,qBAAqB;AACrB,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAA;AAClC,MAAM,CAAC,MAAM,sBAAsB,GAAG,UAAU,CAAA;AAEhD,sBAAsB;AACtB,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAA;AACrC,MAAM,CAAC,MAAM,uBAAuB,GAAG,KAAK,CAAA;AAC5C,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,CAAA;AACvC,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,CAAA;AACnC,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,CAAA;AACxC,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAA;AACnC,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,CAAA"}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Creates a map from keys to colors
|
|
3
|
-
*
|
|
2
|
+
* Creates a map from keys to colors. Up to the largest ggplot palette (8 keys)
|
|
3
|
+
* we use the hand-picked ggplot colors; beyond that — e.g. a gene-structure
|
|
4
|
+
* overlay with one feature per exon — we generate evenly spaced HSL hues so
|
|
5
|
+
* every key still gets a distinct, stable color instead of running off the end
|
|
6
|
+
* of the palette.
|
|
4
7
|
*/
|
|
5
8
|
export declare function createPaletteMap(keys: string[]): {
|
|
6
9
|
[k: string]: string;
|
package/dist/createPaletteMap.js
CHANGED
|
@@ -1,11 +1,21 @@
|
|
|
1
|
+
import { colord } from 'colord';
|
|
1
2
|
import palettes from "./ggplotPalettes.js";
|
|
2
3
|
/**
|
|
3
|
-
* Creates a map from keys to colors
|
|
4
|
-
*
|
|
4
|
+
* Creates a map from keys to colors. Up to the largest ggplot palette (8 keys)
|
|
5
|
+
* we use the hand-picked ggplot colors; beyond that — e.g. a gene-structure
|
|
6
|
+
* overlay with one feature per exon — we generate evenly spaced HSL hues so
|
|
7
|
+
* every key still gets a distinct, stable color instead of running off the end
|
|
8
|
+
* of the palette.
|
|
5
9
|
*/
|
|
6
10
|
export function createPaletteMap(keys) {
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
|
|
11
|
+
const n = keys.length;
|
|
12
|
+
if (n <= palettes.length) {
|
|
13
|
+
const palette = palettes[n - 1];
|
|
14
|
+
return Object.fromEntries(keys.map((key, i) => [key, palette[i]]));
|
|
15
|
+
}
|
|
16
|
+
return Object.fromEntries(keys.map((key, i) => [
|
|
17
|
+
key,
|
|
18
|
+
colord({ h: (i * 360) / n, s: 60, l: 60 }).toHex(),
|
|
19
|
+
]));
|
|
10
20
|
}
|
|
11
21
|
//# sourceMappingURL=createPaletteMap.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createPaletteMap.js","sourceRoot":"","sources":["../src/createPaletteMap.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,qBAAqB,CAAA;AAE1C
|
|
1
|
+
{"version":3,"file":"createPaletteMap.js","sourceRoot":"","sources":["../src/createPaletteMap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE/B,OAAO,QAAQ,MAAM,qBAAqB,CAAA;AAE1C;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAc;IAC7C,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAA;IACrB,IAAI,CAAC,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAE,CAAA;QAChC,OAAO,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CAAA;IACrE,CAAC;IACD,OAAO,MAAM,CAAC,WAAW,CACvB,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QACnB,GAAG;QACH,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE;KACnD,CAAC,CACH,CAAA;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"launchInterProScan.js","sourceRoot":"","sources":["../src/launchInterProScan.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAE/C,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAI7E,MAAM,IAAI,GAAG,2CAA2C,CAAA;
|
|
1
|
+
{"version":3,"file":"launchInterProScan.js","sourceRoot":"","sources":["../src/launchInterProScan.ts"],"names":[],"mappings":"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"}
|
package/dist/model.d.ts
CHANGED
|
@@ -6,6 +6,14 @@ import type { Instance } from '@jbrowse/mobx-state-tree';
|
|
|
6
6
|
import type { Theme } from '@mui/material';
|
|
7
7
|
/**
|
|
8
8
|
* #stateModel MsaView
|
|
9
|
+
*
|
|
10
|
+
* The main MSAView state model. Holds the loaded alignment, tree, and optional
|
|
11
|
+
* InterProScan domain annotations, plus all display state (color scheme, zoom,
|
|
12
|
+
* scroll, collapsed clades). It composes in members from `DialogQueueSessionMixin`,
|
|
13
|
+
* `Tree`, and `MSAModel` (see Inherited members below). Data is loaded reactively
|
|
14
|
+
* from the `msaFilehandle` / `treeFilehandle` / `gffFilehandle` properties, or set
|
|
15
|
+
* directly with `setData`. Most state is persisted into the shareable URL.
|
|
16
|
+
*
|
|
9
17
|
* #example
|
|
10
18
|
* ```js
|
|
11
19
|
* import { MSAModelF } from 'react-msaview'
|
|
@@ -263,10 +271,13 @@ declare function stateModelFactory(): import("@jbrowse/mobx-state-tree").IModelT
|
|
|
263
271
|
} & {
|
|
264
272
|
/**
|
|
265
273
|
* #action
|
|
274
|
+
* draw the alignment with positions numbered relative to the given row's
|
|
275
|
+
* sequence (its node id), instead of in raw MSA-column coordinates
|
|
266
276
|
*/
|
|
267
277
|
drawRelativeTo(id: string | undefined): void;
|
|
268
278
|
/**
|
|
269
279
|
* #action
|
|
280
|
+
* hide columns that are entirely (or mostly, see allowedGappyness) gaps
|
|
270
281
|
*/
|
|
271
282
|
setHideGaps(arg: boolean): void;
|
|
272
283
|
/**
|
|
@@ -321,6 +332,7 @@ declare function stateModelFactory(): import("@jbrowse/mobx-state-tree").IModelT
|
|
|
321
332
|
setHighlightedColumns(columns?: number[]): void;
|
|
322
333
|
/**
|
|
323
334
|
* #action
|
|
335
|
+
* toggle the InterProScan protein-domain overlay on the alignment
|
|
324
336
|
*/
|
|
325
337
|
setShowDomains(arg: boolean): void;
|
|
326
338
|
/**
|
|
@@ -354,14 +366,19 @@ declare function stateModelFactory(): import("@jbrowse/mobx-state-tree").IModelT
|
|
|
354
366
|
setCurrentAlignment(n: number): void;
|
|
355
367
|
/**
|
|
356
368
|
* #action
|
|
369
|
+
* collapse or un-collapse the subtree rooted at the given tree node id
|
|
357
370
|
*/
|
|
358
371
|
toggleCollapsed(node: string): void;
|
|
359
372
|
/**
|
|
360
373
|
* #action
|
|
374
|
+
* show only the subtree rooted at the given node id (pass undefined to
|
|
375
|
+
* show the whole tree again)
|
|
361
376
|
*/
|
|
362
377
|
setShowOnly(node?: string): void;
|
|
363
378
|
/**
|
|
364
379
|
* #action
|
|
380
|
+
* set the alignment/tree/metadata/domain data directly from strings,
|
|
381
|
+
* bypassing the filehandle loaders
|
|
365
382
|
*/
|
|
366
383
|
setData(data: {
|
|
367
384
|
msa?: string;
|
|
@@ -675,6 +692,7 @@ declare function stateModelFactory(): import("@jbrowse/mobx-state-tree").IModelT
|
|
|
675
692
|
calculateNeighborJoiningTreeFromMSA(): void;
|
|
676
693
|
/**
|
|
677
694
|
* #action
|
|
695
|
+
* restore the default column width and row height
|
|
678
696
|
*/
|
|
679
697
|
resetZoom(): void;
|
|
680
698
|
/**
|
|
@@ -853,32 +871,40 @@ declare function stateModelFactory(): import("@jbrowse/mobx-state-tree").IModelT
|
|
|
853
871
|
name: string;
|
|
854
872
|
accession: string;
|
|
855
873
|
description: string;
|
|
874
|
+
featureType: string | undefined;
|
|
856
875
|
start: number;
|
|
857
876
|
end: number;
|
|
877
|
+
strand: number | undefined;
|
|
858
878
|
}>;
|
|
859
879
|
readonly tidyInterProAnnotations: {
|
|
860
880
|
id: string;
|
|
861
881
|
name: string;
|
|
862
882
|
accession: string;
|
|
863
883
|
description: string;
|
|
884
|
+
featureType: string | undefined;
|
|
864
885
|
start: number;
|
|
865
886
|
end: number;
|
|
887
|
+
strand: number | undefined;
|
|
866
888
|
}[];
|
|
867
889
|
readonly tidyFilteredInterProAnnotations: {
|
|
868
890
|
id: string;
|
|
869
891
|
name: string;
|
|
870
892
|
accession: string;
|
|
871
893
|
description: string;
|
|
894
|
+
featureType: string | undefined;
|
|
872
895
|
start: number;
|
|
873
896
|
end: number;
|
|
897
|
+
strand: number | undefined;
|
|
874
898
|
}[];
|
|
875
899
|
readonly tidyFilteredGatheredInterProAnnotations: Record<string, {
|
|
876
900
|
id: string;
|
|
877
901
|
name: string;
|
|
878
902
|
accession: string;
|
|
879
903
|
description: string;
|
|
904
|
+
featureType: string | undefined;
|
|
880
905
|
start: number;
|
|
881
906
|
end: number;
|
|
907
|
+
strand: number | undefined;
|
|
882
908
|
}[]>;
|
|
883
909
|
} & {
|
|
884
910
|
/**
|
|
@@ -890,12 +916,81 @@ declare function stateModelFactory(): import("@jbrowse/mobx-state-tree").IModelT
|
|
|
890
916
|
* #getter
|
|
891
917
|
*/
|
|
892
918
|
readonly verticalScrollbarWidth: 0 | 20;
|
|
919
|
+
/**
|
|
920
|
+
* #getter
|
|
921
|
+
* ordinal segment types (exons etc.), ordered by sequence position so
|
|
922
|
+
* exon-1..exon-14 read left-to-right; colored by alternating shade and
|
|
923
|
+
* labeled by number rather than each getting a distinct hue + legend row
|
|
924
|
+
*/
|
|
925
|
+
readonly segmentDomainTypes: {
|
|
926
|
+
id: string;
|
|
927
|
+
name: string;
|
|
928
|
+
accession: string;
|
|
929
|
+
description: string;
|
|
930
|
+
featureType: string | undefined;
|
|
931
|
+
start: number;
|
|
932
|
+
end: number;
|
|
933
|
+
strand: number | undefined;
|
|
934
|
+
}[];
|
|
935
|
+
/**
|
|
936
|
+
* #getter
|
|
937
|
+
* categorical feature types (InterPro domains and the like) that each get
|
|
938
|
+
* their own color and a legend entry
|
|
939
|
+
*/
|
|
940
|
+
readonly categoricalDomainTypes: {
|
|
941
|
+
id: string;
|
|
942
|
+
name: string;
|
|
943
|
+
accession: string;
|
|
944
|
+
description: string;
|
|
945
|
+
featureType: string | undefined;
|
|
946
|
+
start: number;
|
|
947
|
+
end: number;
|
|
948
|
+
strand: number | undefined;
|
|
949
|
+
}[];
|
|
893
950
|
readonly fillPalette: {
|
|
894
|
-
[
|
|
951
|
+
[x: string]: string;
|
|
895
952
|
};
|
|
896
953
|
readonly strokePalette: {
|
|
897
954
|
[k: string]: string;
|
|
898
955
|
};
|
|
956
|
+
/**
|
|
957
|
+
* #getter
|
|
958
|
+
* accession -> number drawn on each segment band: the trailing number of
|
|
959
|
+
* the feature name ("exon-3" -> "3"), else its 1-based position
|
|
960
|
+
*/
|
|
961
|
+
readonly segmentLabels: Map<string, string>;
|
|
962
|
+
/**
|
|
963
|
+
* #getter
|
|
964
|
+
* the domain types currently drawn on the alignment (filtered-on), shared
|
|
965
|
+
* by the on-screen legend and the SVG export legend. Ordinal segments
|
|
966
|
+
* (exons) are excluded — they read as a numbered gene model, not a color
|
|
967
|
+
* key — so this is the categorical types ordered by sequence position
|
|
968
|
+
*/
|
|
969
|
+
readonly visibleDomainTypes: {
|
|
970
|
+
id: string;
|
|
971
|
+
name: string;
|
|
972
|
+
accession: string;
|
|
973
|
+
description: string;
|
|
974
|
+
featureType: string | undefined;
|
|
975
|
+
start: number;
|
|
976
|
+
end: number;
|
|
977
|
+
strand: number | undefined;
|
|
978
|
+
}[];
|
|
979
|
+
/**
|
|
980
|
+
* #getter
|
|
981
|
+
* domain annotations under the mouse, hit-tested against the exact visible
|
|
982
|
+
* column span each box is drawn at (so it matches the overlay across gaps)
|
|
983
|
+
*/
|
|
984
|
+
readonly mouseOverDomains: {
|
|
985
|
+
id: string;
|
|
986
|
+
name: string;
|
|
987
|
+
accession: string;
|
|
988
|
+
description: string;
|
|
989
|
+
featureType: string | undefined;
|
|
990
|
+
start: number;
|
|
991
|
+
end: number;
|
|
992
|
+
strand: number | undefined;
|
|
993
|
+
}[];
|
|
899
994
|
/**
|
|
900
995
|
* #method
|
|
901
996
|
*/
|
package/dist/model.js
CHANGED
|
@@ -10,7 +10,7 @@ import { clustalXColumnColors } from "./clustalX.js";
|
|
|
10
10
|
import colorSchemes from "./colorSchemes.js";
|
|
11
11
|
import ConservationTrack from "./components/ConservationTrack.js";
|
|
12
12
|
import TextTrack from "./components/TextTrack.js";
|
|
13
|
-
import { defaultAllowedGappyness, defaultBgColor, defaultColWidth, defaultColorSchemeName, defaultCurrentAlignment, defaultDrawLabels, defaultDrawMsaLetters, defaultDrawNodeBubbles, defaultDrawTree, defaultHeight, defaultHideGaps, defaultLabelsAlignRight, defaultRowHeight, defaultScrollX, defaultScrollY, defaultScrollZoom, defaultShowBranchLen, defaultShowDomains, defaultSubFeatureRows, defaultTreeAreaWidth, defaultTreeWidth, maxCellSize, minColWidth, minRowHeight, } from "./constants.js";
|
|
13
|
+
import { defaultAllowedGappyness, defaultBgColor, defaultColWidth, defaultColorSchemeName, defaultCurrentAlignment, defaultDrawLabels, defaultDrawMsaLetters, defaultDrawNodeBubbles, defaultDrawTree, defaultHeight, defaultHideGaps, defaultLabelsAlignRight, defaultRowHeight, defaultScrollX, defaultScrollY, defaultScrollZoom, defaultShowBranchLen, defaultShowDomains, defaultSubFeatureRows, defaultTreeAreaWidth, defaultTreeWidth, maxCellSize, minColWidth, minRowHeight, segmentFeatureTypes, segmentShades, } from "./constants.js";
|
|
14
14
|
import { createPaletteMap } from "./createPaletteMap.js";
|
|
15
15
|
import { fetchTextWithProgress, isAbortError } from "./fetchUtils.js";
|
|
16
16
|
import { flatToTree } from "./flatToTree.js";
|
|
@@ -34,6 +34,14 @@ function parseTreeText(text) {
|
|
|
34
34
|
}
|
|
35
35
|
/**
|
|
36
36
|
* #stateModel MsaView
|
|
37
|
+
*
|
|
38
|
+
* The main MSAView state model. Holds the loaded alignment, tree, and optional
|
|
39
|
+
* InterProScan domain annotations, plus all display state (color scheme, zoom,
|
|
40
|
+
* scroll, collapsed clades). It composes in members from `DialogQueueSessionMixin`,
|
|
41
|
+
* `Tree`, and `MSAModel` (see Inherited members below). Data is loaded reactively
|
|
42
|
+
* from the `msaFilehandle` / `treeFilehandle` / `gffFilehandle` properties, or set
|
|
43
|
+
* directly with `setData`. Most state is persisted into the shareable URL.
|
|
44
|
+
*
|
|
37
45
|
* #example
|
|
38
46
|
* ```js
|
|
39
47
|
* import { MSAModelF } from 'react-msaview'
|
|
@@ -269,12 +277,15 @@ function stateModelFactory() {
|
|
|
269
277
|
.actions(self => ({
|
|
270
278
|
/**
|
|
271
279
|
* #action
|
|
280
|
+
* draw the alignment with positions numbered relative to the given row's
|
|
281
|
+
* sequence (its node id), instead of in raw MSA-column coordinates
|
|
272
282
|
*/
|
|
273
283
|
drawRelativeTo(id) {
|
|
274
284
|
self.relativeTo = id;
|
|
275
285
|
},
|
|
276
286
|
/**
|
|
277
287
|
* #action
|
|
288
|
+
* hide columns that are entirely (or mostly, see allowedGappyness) gaps
|
|
278
289
|
*/
|
|
279
290
|
setHideGaps(arg) {
|
|
280
291
|
self.hideGaps = arg;
|
|
@@ -350,6 +361,7 @@ function stateModelFactory() {
|
|
|
350
361
|
},
|
|
351
362
|
/**
|
|
352
363
|
* #action
|
|
364
|
+
* toggle the InterProScan protein-domain overlay on the alignment
|
|
353
365
|
*/
|
|
354
366
|
setShowDomains(arg) {
|
|
355
367
|
self.showDomains = arg;
|
|
@@ -398,6 +410,7 @@ function stateModelFactory() {
|
|
|
398
410
|
},
|
|
399
411
|
/**
|
|
400
412
|
* #action
|
|
413
|
+
* collapse or un-collapse the subtree rooted at the given tree node id
|
|
401
414
|
*/
|
|
402
415
|
toggleCollapsed(node) {
|
|
403
416
|
if (self.collapsed.includes(node)) {
|
|
@@ -409,12 +422,16 @@ function stateModelFactory() {
|
|
|
409
422
|
},
|
|
410
423
|
/**
|
|
411
424
|
* #action
|
|
425
|
+
* show only the subtree rooted at the given node id (pass undefined to
|
|
426
|
+
* show the whole tree again)
|
|
412
427
|
*/
|
|
413
428
|
setShowOnly(node) {
|
|
414
429
|
self.showOnly = node;
|
|
415
430
|
},
|
|
416
431
|
/**
|
|
417
432
|
* #action
|
|
433
|
+
* set the alignment/tree/metadata/domain data directly from strings,
|
|
434
|
+
* bypassing the filehandle loaders
|
|
418
435
|
*/
|
|
419
436
|
setData(data) {
|
|
420
437
|
self.data = cast(data);
|
|
@@ -1056,6 +1073,7 @@ function stateModelFactory() {
|
|
|
1056
1073
|
},
|
|
1057
1074
|
/**
|
|
1058
1075
|
* #action
|
|
1076
|
+
* restore the default column width and row height
|
|
1059
1077
|
*/
|
|
1060
1078
|
resetZoom() {
|
|
1061
1079
|
self.setColWidth(defaultColWidth);
|
|
@@ -1370,13 +1388,15 @@ function stateModelFactory() {
|
|
|
1370
1388
|
.flatMap(([id, val]) => val.matches.flatMap(({ signature, locations }) => {
|
|
1371
1389
|
const { entry } = signature;
|
|
1372
1390
|
return entry
|
|
1373
|
-
? locations.map(({ start, end }) => ({
|
|
1391
|
+
? locations.map(({ start, end, strand }) => ({
|
|
1374
1392
|
id,
|
|
1375
1393
|
name: entry.name,
|
|
1376
1394
|
accession: entry.accession,
|
|
1377
1395
|
description: entry.description,
|
|
1396
|
+
featureType: entry.featureType,
|
|
1378
1397
|
start,
|
|
1379
1398
|
end,
|
|
1399
|
+
strand,
|
|
1380
1400
|
}))
|
|
1381
1401
|
: [];
|
|
1382
1402
|
}))
|
|
@@ -1405,8 +1425,32 @@ function stateModelFactory() {
|
|
|
1405
1425
|
get verticalScrollbarWidth() {
|
|
1406
1426
|
return self.showVerticalScrollbar ? 20 : 0;
|
|
1407
1427
|
},
|
|
1428
|
+
/**
|
|
1429
|
+
* #getter
|
|
1430
|
+
* ordinal segment types (exons etc.), ordered by sequence position so
|
|
1431
|
+
* exon-1..exon-14 read left-to-right; colored by alternating shade and
|
|
1432
|
+
* labeled by number rather than each getting a distinct hue + legend row
|
|
1433
|
+
*/
|
|
1434
|
+
get segmentDomainTypes() {
|
|
1435
|
+
return [...self.tidyInterProAnnotationTypes.values()]
|
|
1436
|
+
.filter(d => segmentFeatureTypes.has(d.featureType ?? ''))
|
|
1437
|
+
.toSorted((a, b) => a.start - b.start);
|
|
1438
|
+
},
|
|
1439
|
+
/**
|
|
1440
|
+
* #getter
|
|
1441
|
+
* categorical feature types (InterPro domains and the like) that each get
|
|
1442
|
+
* their own color and a legend entry
|
|
1443
|
+
*/
|
|
1444
|
+
get categoricalDomainTypes() {
|
|
1445
|
+
return [...self.tidyInterProAnnotationTypes.values()].filter(d => !segmentFeatureTypes.has(d.featureType ?? ''));
|
|
1446
|
+
},
|
|
1408
1447
|
get fillPalette() {
|
|
1409
|
-
|
|
1448
|
+
const segments = Object.fromEntries(this.segmentDomainTypes.map((d, i) => [
|
|
1449
|
+
d.accession,
|
|
1450
|
+
segmentShades[i % segmentShades.length],
|
|
1451
|
+
]));
|
|
1452
|
+
const categorical = createPaletteMap(this.categoricalDomainTypes.map(d => d.accession));
|
|
1453
|
+
return { ...segments, ...categorical };
|
|
1410
1454
|
},
|
|
1411
1455
|
get strokePalette() {
|
|
1412
1456
|
return transform(this.fillPalette, ([key, val]) => [
|
|
@@ -1414,6 +1458,50 @@ function stateModelFactory() {
|
|
|
1414
1458
|
colord(val).darken(0.1).toHex(),
|
|
1415
1459
|
]);
|
|
1416
1460
|
},
|
|
1461
|
+
/**
|
|
1462
|
+
* #getter
|
|
1463
|
+
* accession -> number drawn on each segment band: the trailing number of
|
|
1464
|
+
* the feature name ("exon-3" -> "3"), else its 1-based position
|
|
1465
|
+
*/
|
|
1466
|
+
get segmentLabels() {
|
|
1467
|
+
return new Map(this.segmentDomainTypes.map((d, i) => {
|
|
1468
|
+
const m = /(\d+)\s*$/.exec(d.name);
|
|
1469
|
+
return [d.accession, m ? m[1] : `${i + 1}`];
|
|
1470
|
+
}));
|
|
1471
|
+
},
|
|
1472
|
+
/**
|
|
1473
|
+
* #getter
|
|
1474
|
+
* the domain types currently drawn on the alignment (filtered-on), shared
|
|
1475
|
+
* by the on-screen legend and the SVG export legend. Ordinal segments
|
|
1476
|
+
* (exons) are excluded — they read as a numbered gene model, not a color
|
|
1477
|
+
* key — so this is the categorical types ordered by sequence position
|
|
1478
|
+
*/
|
|
1479
|
+
get visibleDomainTypes() {
|
|
1480
|
+
return this.categoricalDomainTypes
|
|
1481
|
+
.filter(d => self.featureFilters.get(d.accession))
|
|
1482
|
+
.toSorted((a, b) => a.start - b.start);
|
|
1483
|
+
},
|
|
1484
|
+
/**
|
|
1485
|
+
* #getter
|
|
1486
|
+
* domain annotations under the mouse, hit-tested against the exact visible
|
|
1487
|
+
* column span each box is drawn at (so it matches the overlay across gaps)
|
|
1488
|
+
*/
|
|
1489
|
+
get mouseOverDomains() {
|
|
1490
|
+
const { mouseCol } = self;
|
|
1491
|
+
const name = self.mouseOverRowName;
|
|
1492
|
+
if (name !== undefined && mouseCol !== undefined) {
|
|
1493
|
+
const entry = self.tidyFilteredGatheredInterProAnnotations[name] ?? [];
|
|
1494
|
+
return entry.filter(d => {
|
|
1495
|
+
const m1 = self.seqPosToVisibleCol(name, d.start - 1);
|
|
1496
|
+
const m2 = self.seqPosToVisibleCol(name, d.end);
|
|
1497
|
+
return (m1 !== undefined &&
|
|
1498
|
+
m2 !== undefined &&
|
|
1499
|
+
mouseCol >= m1 &&
|
|
1500
|
+
mouseCol < m2);
|
|
1501
|
+
});
|
|
1502
|
+
}
|
|
1503
|
+
return [];
|
|
1504
|
+
},
|
|
1417
1505
|
/**
|
|
1418
1506
|
* #method
|
|
1419
1507
|
*/
|