react-msaview 5.2.1 → 5.4.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/bundle/index.js +2 -2
- package/bundle/index.js.map +1 -1
- package/dist/components/Loading.js +6 -4
- package/dist/components/Loading.js.map +1 -1
- package/dist/components/MSAViewer.d.ts +3 -1
- package/dist/components/MSAViewer.js +2 -1
- package/dist/components/MSAViewer.js.map +1 -1
- package/dist/components/renderCtx.d.ts +1 -1
- package/dist/components/tree/TreeNodeMenu.js +1 -1
- package/dist/components/tree/TreeNodeMenu.js.map +1 -1
- package/dist/components/tree/renderTreeCanvas.d.ts +10 -0
- package/dist/components/tree/renderTreeCanvas.js +81 -12
- package/dist/components/tree/renderTreeCanvas.js.map +1 -1
- package/dist/fetchUtils.d.ts +19 -0
- package/dist/fetchUtils.js +28 -0
- package/dist/fetchUtils.js.map +1 -1
- package/dist/hierarchy.d.ts +9 -1
- package/dist/hierarchy.js +34 -0
- package/dist/hierarchy.js.map +1 -1
- package/dist/model/msaModel.d.ts +7 -0
- package/dist/model/msaModel.js +14 -0
- package/dist/model/msaModel.js.map +1 -1
- package/dist/model.d.ts +5 -2
- package/dist/model.js +65 -16
- package/dist/model.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +3 -3
- package/src/components/Loading.tsx +15 -5
- package/src/components/MSAViewer.tsx +4 -0
- package/src/components/renderCtx.ts +1 -0
- package/src/components/tree/TreeNodeMenu.tsx +1 -1
- package/src/components/tree/renderTreeCanvas.ts +113 -11
- package/src/fetchUtils.test.ts +66 -0
- package/src/fetchUtils.ts +48 -0
- package/src/hierarchy.test.ts +56 -0
- package/src/hierarchy.ts +41 -1
- package/src/impgRender.test.tsx +125 -0
- package/src/model/msaModel.ts +19 -0
- package/src/model.ts +67 -21
- package/src/version.ts +1 -1
|
@@ -5,7 +5,8 @@ import { Button, Typography } from '@mui/material';
|
|
|
5
5
|
import { observer } from 'mobx-react';
|
|
6
6
|
import MSAView from "./MSAView.js";
|
|
7
7
|
import ImportForm from "./import/ImportForm.js";
|
|
8
|
-
|
|
8
|
+
const LoadingSpinner = observer(function ({ model }) {
|
|
9
|
+
const { status } = model;
|
|
9
10
|
return (React.createElement("div", { style: { display: 'flex', alignItems: 'center', gap: 12, padding: 20 } },
|
|
10
11
|
React.createElement("svg", { width: "24", height: "24", viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg" },
|
|
11
12
|
React.createElement("style", null, `@keyframes spinner { to { transform: rotate(360deg); } }`),
|
|
@@ -14,8 +15,9 @@ function LoadingSpinner() {
|
|
|
14
15
|
animation: 'spinner 1s linear infinite',
|
|
15
16
|
transformOrigin: 'center',
|
|
16
17
|
} })),
|
|
17
|
-
React.createElement(Typography, { variant: "h6" },
|
|
18
|
-
}
|
|
18
|
+
React.createElement(Typography, { variant: "h6" }, status?.msg ?? 'Loading...'),
|
|
19
|
+
status?.onCancel ? (React.createElement(Button, { variant: "outlined", size: "small", onClick: () => status.onCancel?.() }, "Cancel")) : null));
|
|
20
|
+
});
|
|
19
21
|
const Reset = observer(function ({ model, error, }) {
|
|
20
22
|
return (React.createElement("div", null,
|
|
21
23
|
React.createElement(ErrorMessage, { error: error }),
|
|
@@ -27,7 +29,7 @@ const Loading = observer(function ({ model }) {
|
|
|
27
29
|
const { isLoading, dataInitialized, msaFilehandle, treeFilehandle } = model;
|
|
28
30
|
const hasPendingFilehandle = !!(msaFilehandle || treeFilehandle);
|
|
29
31
|
return (React.createElement("div", null,
|
|
30
|
-
React.createElement(ErrorBoundary, { FallbackComponent: e => React.createElement(Reset, { model: model, error: e.error }) }, dataInitialized ? (isLoading ? (React.createElement(LoadingSpinner,
|
|
32
|
+
React.createElement(ErrorBoundary, { FallbackComponent: e => React.createElement(Reset, { model: model, error: e.error }) }, dataInitialized ? (isLoading ? (React.createElement(LoadingSpinner, { model: model })) : (React.createElement(MSAView, { model: model }))) : hasPendingFilehandle || isLoading ? (React.createElement(LoadingSpinner, { model: model })) : (React.createElement(ImportForm, { model: model })))));
|
|
31
33
|
});
|
|
32
34
|
export default Loading;
|
|
33
35
|
//# sourceMappingURL=Loading.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Loading.js","sourceRoot":"","sources":["../../src/components/Loading.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAA;AAC9D,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAErC,OAAO,OAAO,MAAM,cAAe,CAAA;AACnC,OAAO,UAAU,MAAM,wBAAyB,CAAA;AAIhD,
|
|
1
|
+
{"version":3,"file":"Loading.js","sourceRoot":"","sources":["../../src/components/Loading.tsx"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,8 @@ interface MSAViewerProps {
|
|
|
9
9
|
gffFilehandle?: FileLocationType;
|
|
10
10
|
colorScheme?: string;
|
|
11
11
|
height?: number;
|
|
12
|
+
/** row name to diff every other row against (matches render as ".") */
|
|
13
|
+
relativeTo?: string;
|
|
12
14
|
}
|
|
13
|
-
export default function MSAViewer({ msa, tree, gff, msaFilehandle, treeFilehandle, gffFilehandle, colorScheme, height, }: MSAViewerProps): React.JSX.Element;
|
|
15
|
+
export default function MSAViewer({ msa, tree, gff, msaFilehandle, treeFilehandle, gffFilehandle, colorScheme, height, relativeTo, }: MSAViewerProps): React.JSX.Element;
|
|
14
16
|
export {};
|
|
@@ -4,7 +4,7 @@ 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
|
-
export default function MSAViewer({ msa, tree, gff, msaFilehandle, treeFilehandle, gffFilehandle, colorScheme, height, }) {
|
|
7
|
+
export default function MSAViewer({ msa, tree, gff, msaFilehandle, treeFilehandle, gffFilehandle, colorScheme, height, relativeTo, }) {
|
|
8
8
|
const theme = useMemo(() => createJBrowseTheme(), []);
|
|
9
9
|
const model = useMemo(() => MSAModelF().create({
|
|
10
10
|
type: 'MsaView',
|
|
@@ -16,6 +16,7 @@ export default function MSAViewer({ msa, tree, gff, msaFilehandle, treeFilehandl
|
|
|
16
16
|
...(gffFilehandle ? { gffFilehandle } : {}),
|
|
17
17
|
...(colorScheme ? { colorSchemeName: colorScheme } : {}),
|
|
18
18
|
...(height ? { height } : {}),
|
|
19
|
+
...(relativeTo ? { relativeTo } : {}),
|
|
19
20
|
}),
|
|
20
21
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
21
22
|
[]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MSAViewer.js","sourceRoot":"","sources":["../../src/components/MSAViewer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAEjD,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;
|
|
1
|
+
{"version":3,"file":"MSAViewer.js","sourceRoot":"","sources":["../../src/components/MSAViewer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAEjD,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;AAiBnC,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,EAChC,GAAG,EACH,IAAI,EACJ,GAAG,EACH,aAAa,EACb,cAAc,EACd,aAAa,EACb,WAAW,EACX,MAAM,EACN,UAAU,GACK;IACf,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,kBAAkB,EAAE,EAAE,EAAE,CAAC,CAAA;IACrD,MAAM,KAAK,GAAG,OAAO,CACnB,GAAG,EAAE,CACH,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,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACtC,CAAC;IACJ,uDAAuD;IACvD,EAAE,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,qBAAqB,CAAC,GAAG,EAAE;gBACzB,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;YACvB,CAAC,CAAC,CAAA;QACJ,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"}
|
|
@@ -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' | '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' | 'translate'>;
|
|
@@ -27,7 +27,7 @@ const TreeMenu = observer(function ({ node, onClose, model, }) {
|
|
|
27
27
|
React.createElement(MenuItem, { dense: true, onClick: () => {
|
|
28
28
|
model.toggleCollapsed(id);
|
|
29
29
|
onClose();
|
|
30
|
-
} }, isCollapsed ? '
|
|
30
|
+
} }, isCollapsed ? 'Expand subtree' : 'Collapse subtree'),
|
|
31
31
|
React.createElement(MenuItem, { dense: true, onClick: () => {
|
|
32
32
|
model.drawRelativeTo(node.name);
|
|
33
33
|
onClose();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TreeNodeMenu.js","sourceRoot":"","sources":["../../../src/components/tree/TreeNodeMenu.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,OAAO,CAAA;AAEnC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAIrC,SAAS;AACT,MAAM,kBAAkB,GAAG,IAAI,CAC7B,GAAG,EAAE,CAAC,MAAM,CAAC,iCAAkC,CAAC,CACjD,CAAA;AAED,MAAM,QAAQ,GAAG,QAAQ,CAAC,UAAU,EAClC,IAAI,EACJ,OAAO,EACP,KAAK,GAUN;IACC,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK,CAAA;IAC3B,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,IAAI,CAAA;IACzB,MAAM,WAAW,GAAG,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;IAC1C,OAAO,CACL,oBAAC,IAAI,IACH,eAAe,EAAC,gBAAgB,EAChC,cAAc,EAAE;YACd,GAAG,EAAE,IAAI,CAAC,CAAC;YACX,IAAI,EAAE,IAAI,CAAC,CAAC;SACb,EACD,kBAAkB,EAAE,CAAC,EACrB,WAAW,QACX,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,EACnB,OAAO,EAAE,OAAO;QAEhB,oBAAC,QAAQ,IAAC,KAAK,QAAC,QAAQ,UACrB,IAAI,CACI;QAEX,oBAAC,QAAQ,IACP,KAAK,QACL,OAAO,EAAE,GAAG,EAAE;gBACZ,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC3B,kBAAkB;oBAClB;wBACE,IAAI,EAAE,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;wBAC5B,KAAK;wBACL,QAAQ,EAAE,IAAI;wBACd,OAAO;qBACR;iBACF,CAAC,CAAA;gBACF,OAAO,EAAE,CAAA;YACX,CAAC,mBAGQ;QACX,oBAAC,QAAQ,IACP,KAAK,QACL,OAAO,EAAE,GAAG,EAAE;gBACZ,KAAK,CAAC,eAAe,CAAC,EAAE,CAAC,CAAA;gBACzB,OAAO,EAAE,CAAA;YACX,CAAC,IAEA,WAAW,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"TreeNodeMenu.js","sourceRoot":"","sources":["../../../src/components/tree/TreeNodeMenu.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,OAAO,CAAA;AAEnC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAIrC,SAAS;AACT,MAAM,kBAAkB,GAAG,IAAI,CAC7B,GAAG,EAAE,CAAC,MAAM,CAAC,iCAAkC,CAAC,CACjD,CAAA;AAED,MAAM,QAAQ,GAAG,QAAQ,CAAC,UAAU,EAClC,IAAI,EACJ,OAAO,EACP,KAAK,GAUN;IACC,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK,CAAA;IAC3B,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,IAAI,CAAA;IACzB,MAAM,WAAW,GAAG,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;IAC1C,OAAO,CACL,oBAAC,IAAI,IACH,eAAe,EAAC,gBAAgB,EAChC,cAAc,EAAE;YACd,GAAG,EAAE,IAAI,CAAC,CAAC;YACX,IAAI,EAAE,IAAI,CAAC,CAAC;SACb,EACD,kBAAkB,EAAE,CAAC,EACrB,WAAW,QACX,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,EACnB,OAAO,EAAE,OAAO;QAEhB,oBAAC,QAAQ,IAAC,KAAK,QAAC,QAAQ,UACrB,IAAI,CACI;QAEX,oBAAC,QAAQ,IACP,KAAK,QACL,OAAO,EAAE,GAAG,EAAE;gBACZ,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC3B,kBAAkB;oBAClB;wBACE,IAAI,EAAE,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;wBAC5B,KAAK;wBACL,QAAQ,EAAE,IAAI;wBACd,OAAO;qBACR;iBACF,CAAC,CAAA;gBACF,OAAO,EAAE,CAAA;YACX,CAAC,mBAGQ;QACX,oBAAC,QAAQ,IACP,KAAK,QACL,OAAO,EAAE,GAAG,EAAE;gBACZ,KAAK,CAAC,eAAe,CAAC,EAAE,CAAC,CAAA;gBACzB,OAAO,EAAE,CAAA;YACX,CAAC,IAEA,WAAW,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,kBAAkB,CAC3C;QACX,oBAAC,QAAQ,IACP,KAAK,QACL,OAAO,EAAE,GAAG,EAAE;gBACZ,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBAC/B,OAAO,EAAE,CAAA;YACX,CAAC,yCAGQ;QACV,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAClB,oBAAC,QAAQ,IACP,KAAK,QACL,OAAO,EAAE,GAAG,EAAE;gBACZ,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,CAAA;gBAC/B,OAAO,EAAE,CAAA;YACX,CAAC,0BAGQ,CACZ,CAAC,CAAC,CAAC,IAAI,CACH,CACR,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,eAAe,QAAQ,CAAA"}
|
|
@@ -31,6 +31,16 @@ export declare function renderTree({ offsetY, ctx, model, theme, maxBranchLen, m
|
|
|
31
31
|
maxDepthToLeaf: number;
|
|
32
32
|
blockSizeYOverride?: number;
|
|
33
33
|
}): void;
|
|
34
|
+
export declare function renderCollapsedTriangles({ ctx, clickMap, offsetY, model, theme, maxBranchLen, maxDepthToLeaf, blockSizeYOverride, }: {
|
|
35
|
+
ctx: RenderCtx;
|
|
36
|
+
clickMap?: ClickMapIndex;
|
|
37
|
+
offsetY: number;
|
|
38
|
+
model: MsaViewModel;
|
|
39
|
+
theme: Theme;
|
|
40
|
+
maxBranchLen: number;
|
|
41
|
+
maxDepthToLeaf: number;
|
|
42
|
+
blockSizeYOverride?: number;
|
|
43
|
+
}): void;
|
|
34
44
|
export declare function renderNodeBubbles({ ctx, clickMap, offsetY, model, maxBranchLen, maxDepthToLeaf, blockSizeYOverride, }: {
|
|
35
45
|
ctx: RenderCtx;
|
|
36
46
|
clickMap?: ClickMapIndex;
|
|
@@ -41,6 +41,55 @@ export function renderTree({ offsetY, ctx, model, theme, maxBranchLen, maxDepthT
|
|
|
41
41
|
}
|
|
42
42
|
});
|
|
43
43
|
}
|
|
44
|
+
export function renderCollapsedTriangles({ ctx, clickMap, offsetY, model, theme, maxBranchLen, maxDepthToLeaf, blockSizeYOverride, }) {
|
|
45
|
+
const { hierarchy, showBranchLenEffective: showBranchLen, collapsed, blockSize, rowHeight, fontSize, marginLeft: ml, } = model;
|
|
46
|
+
const by = blockSizeYOverride ?? blockSize;
|
|
47
|
+
const halfHeight = Math.max(2, rowHeight * 0.42);
|
|
48
|
+
forEachDescendant(hierarchy, node => {
|
|
49
|
+
const { id, name } = node.data;
|
|
50
|
+
if (collapsed.includes(id)) {
|
|
51
|
+
const apexX = getNodeX(node, showBranchLen, maxBranchLen, maxDepthToLeaf);
|
|
52
|
+
const y = node.x;
|
|
53
|
+
const inBlock = y > offsetY - extendBounds && y < offsetY + by + extendBounds;
|
|
54
|
+
// in cladogram mode the hidden tips align at the right edge, otherwise use
|
|
55
|
+
// the branch-length extent recorded in the model's hierarchy getter
|
|
56
|
+
const baseX = showBranchLen
|
|
57
|
+
? (node.collapsedTipXFar ?? maxBranchLen)
|
|
58
|
+
: maxBranchLen;
|
|
59
|
+
if (apexX !== undefined && inBlock && baseX > apexX) {
|
|
60
|
+
ctx.beginPath();
|
|
61
|
+
ctx.moveTo(apexX, y);
|
|
62
|
+
ctx.lineTo(baseX, y - halfHeight);
|
|
63
|
+
ctx.lineTo(baseX, y + halfHeight);
|
|
64
|
+
ctx.closePath();
|
|
65
|
+
ctx.fillStyle = theme.palette.action.disabled;
|
|
66
|
+
ctx.fill();
|
|
67
|
+
ctx.strokeStyle = theme.palette.text.primary;
|
|
68
|
+
ctx.stroke();
|
|
69
|
+
// node.value carries the leaf count from the pre-collapse sum() pass
|
|
70
|
+
const count = node.value;
|
|
71
|
+
if (count !== undefined && rowHeight >= 8) {
|
|
72
|
+
ctx.fillStyle = theme.palette.text.primary;
|
|
73
|
+
ctx.textAlign = 'left';
|
|
74
|
+
ctx.fillText(`${count}`, baseX + 3, y + fontSize / 4);
|
|
75
|
+
}
|
|
76
|
+
// the whole triangle is a click/hover target that opens the
|
|
77
|
+
// branch menu (Expand this node); the apex bubble's own click entry is
|
|
78
|
+
// skipped for collapsed nodes so this descriptive label wins
|
|
79
|
+
const label = name === id ? 'Collapsed clade' : name;
|
|
80
|
+
clickMap?.insert({
|
|
81
|
+
minX: apexX + ml,
|
|
82
|
+
maxX: baseX + ml,
|
|
83
|
+
minY: y - halfHeight,
|
|
84
|
+
maxY: y + halfHeight,
|
|
85
|
+
branch: true,
|
|
86
|
+
id,
|
|
87
|
+
name: count === undefined ? label : `${label} (${count} tips)`,
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
}
|
|
44
93
|
export function renderNodeBubbles({ ctx, clickMap, offsetY, model, maxBranchLen, maxDepthToLeaf, blockSizeYOverride, }) {
|
|
45
94
|
const { hierarchy, showBranchLenEffective: showBranchLen, collapsed, blockSize, marginLeft: ml, } = model;
|
|
46
95
|
const by = blockSizeYOverride ?? blockSize;
|
|
@@ -55,26 +104,31 @@ export function renderNodeBubbles({ ctx, clickMap, offsetY, model, maxBranchLen,
|
|
|
55
104
|
if (node.height >= 1 &&
|
|
56
105
|
y > offsetY - extendBounds &&
|
|
57
106
|
y < offsetY + by + extendBounds) {
|
|
107
|
+
const isCollapsed = collapsed.includes(id);
|
|
58
108
|
ctx.strokeStyle = 'black';
|
|
59
|
-
ctx.fillStyle =
|
|
109
|
+
ctx.fillStyle = isCollapsed ? 'black' : 'white';
|
|
60
110
|
ctx.beginPath();
|
|
61
111
|
ctx.arc(x, y, radius, 0, 2 * Math.PI);
|
|
62
112
|
ctx.fill();
|
|
63
113
|
ctx.stroke();
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
114
|
+
// collapsed nodes get their click/hover target from the triangle pass,
|
|
115
|
+
// which covers the apex bubble and carries a descriptive label
|
|
116
|
+
if (!isCollapsed) {
|
|
117
|
+
clickMap?.insert({
|
|
118
|
+
minX: x - radius + ml,
|
|
119
|
+
maxX: x - radius + d + ml,
|
|
120
|
+
minY: y - radius,
|
|
121
|
+
maxY: y - radius + d,
|
|
122
|
+
branch: true,
|
|
123
|
+
id,
|
|
124
|
+
name,
|
|
125
|
+
});
|
|
126
|
+
}
|
|
73
127
|
}
|
|
74
128
|
});
|
|
75
129
|
}
|
|
76
130
|
export function renderTreeLabels({ theme, model, offsetY, ctx, clickMap, maxBranchLen, maxDepthToLeaf, blockSizeYOverride, }) {
|
|
77
|
-
const { fontSize, showBranchLenEffective: showBranchLen, treeMetadata, blockSize, labelsAlignRight, drawTree, treeAreaWidth, treeAreaWidthMinusMargin, marginLeft, leaves, noTree, labelWidthMap, } = model;
|
|
131
|
+
const { fontSize, showBranchLenEffective: showBranchLen, treeMetadata, blockSize, labelsAlignRight, drawTree, treeAreaWidth, treeAreaWidthMinusMargin, marginLeft, leaves, noTree, labelWidthMap, collapsed, } = model;
|
|
78
132
|
const by = blockSizeYOverride ?? blockSize;
|
|
79
133
|
const emHeight = ctx.measureText('M').width;
|
|
80
134
|
if (labelsAlignRight) {
|
|
@@ -88,7 +142,12 @@ export function renderTreeLabels({ theme, model, offsetY, ctx, clickMap, maxBran
|
|
|
88
142
|
const { data: { name, id }, } = node;
|
|
89
143
|
const y = node.x;
|
|
90
144
|
const displayName = treeMetadata[name]?.genome || name;
|
|
91
|
-
|
|
145
|
+
// a collapsed clade is drawn as a triangle + tip count; suppress its leaf
|
|
146
|
+
// label when the "name" is just the auto-generated internal-node id
|
|
147
|
+
const isAnonymousCollapsed = collapsed.includes(id) && name === id;
|
|
148
|
+
if (!isAnonymousCollapsed &&
|
|
149
|
+
y > offsetY - extendBounds &&
|
|
150
|
+
y < offsetY + by + extendBounds) {
|
|
92
151
|
// note: +rowHeight/4 matches with -rowHeight/4 in msa
|
|
93
152
|
const yp = y + fontSize / 4;
|
|
94
153
|
let xp = 0;
|
|
@@ -156,6 +215,16 @@ export function renderTreeCanvas({ model, clickMap, ctx, offsetY, theme, highRes
|
|
|
156
215
|
maxDepthToLeaf,
|
|
157
216
|
blockSizeYOverride,
|
|
158
217
|
});
|
|
218
|
+
renderCollapsedTriangles({
|
|
219
|
+
ctx,
|
|
220
|
+
clickMap,
|
|
221
|
+
offsetY,
|
|
222
|
+
model,
|
|
223
|
+
theme,
|
|
224
|
+
maxBranchLen,
|
|
225
|
+
maxDepthToLeaf,
|
|
226
|
+
blockSizeYOverride,
|
|
227
|
+
});
|
|
159
228
|
if (drawNodeBubbles) {
|
|
160
229
|
renderNodeBubbles({
|
|
161
230
|
ctx,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderTreeCanvas.js","sourceRoot":"","sources":["../../../src/components/tree/renderTreeCanvas.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"renderTreeCanvas.js","sourceRoot":"","sources":["../../../src/components/tree/renderTreeCanvas.ts"],"names":[],"mappings":"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"}
|
package/dist/fetchUtils.d.ts
CHANGED
|
@@ -1,5 +1,24 @@
|
|
|
1
|
+
import { fetchAndMaybeUnzipText } from '@jbrowse/core/util';
|
|
2
|
+
export interface FetchStatus {
|
|
3
|
+
msg: string;
|
|
4
|
+
url?: string;
|
|
5
|
+
onCancel?: () => void;
|
|
6
|
+
}
|
|
7
|
+
type Filehandle = Parameters<typeof fetchAndMaybeUnzipText>[0];
|
|
8
|
+
type ProgressFetcher = (loc: Filehandle, opts: {
|
|
9
|
+
signal: AbortSignal;
|
|
10
|
+
statusCallback: (msg: string) => void;
|
|
11
|
+
}) => Promise<string>;
|
|
12
|
+
/**
|
|
13
|
+
* Fetch text from a filehandle while reporting download/unzip progress through
|
|
14
|
+
* setStatus, and wiring a Cancel handler that aborts the underlying request.
|
|
15
|
+
* The status is always cleared once the fetch settles. The fetcher is injectable
|
|
16
|
+
* for testing.
|
|
17
|
+
*/
|
|
18
|
+
export declare function fetchTextWithProgress(loc: Filehandle, setStatus: (status?: FetchStatus) => void, fetcher?: ProgressFetcher): Promise<string>;
|
|
1
19
|
export declare function myfetch(url: string, args?: RequestInit): Promise<Response>;
|
|
2
20
|
export declare function textfetch(url: string, args?: RequestInit): Promise<string>;
|
|
3
21
|
export declare function jsonfetch<T>(url: string, args?: RequestInit): Promise<T>;
|
|
4
22
|
export declare function timeout(time: number, signal?: AbortSignal): Promise<void>;
|
|
5
23
|
export declare function isAbortError(e: unknown): boolean;
|
|
24
|
+
export {};
|
package/dist/fetchUtils.js
CHANGED
|
@@ -1,3 +1,31 @@
|
|
|
1
|
+
import { fetchAndMaybeUnzipText } from '@jbrowse/core/util';
|
|
2
|
+
/**
|
|
3
|
+
* Fetch text from a filehandle while reporting download/unzip progress through
|
|
4
|
+
* setStatus, and wiring a Cancel handler that aborts the underlying request.
|
|
5
|
+
* The status is always cleared once the fetch settles. The fetcher is injectable
|
|
6
|
+
* for testing.
|
|
7
|
+
*/
|
|
8
|
+
export async function fetchTextWithProgress(loc, setStatus, fetcher = fetchAndMaybeUnzipText) {
|
|
9
|
+
const controller = new AbortController();
|
|
10
|
+
try {
|
|
11
|
+
return await fetcher(loc, {
|
|
12
|
+
signal: controller.signal,
|
|
13
|
+
statusCallback: msg => {
|
|
14
|
+
setStatus(msg
|
|
15
|
+
? {
|
|
16
|
+
msg,
|
|
17
|
+
onCancel: () => {
|
|
18
|
+
controller.abort();
|
|
19
|
+
},
|
|
20
|
+
}
|
|
21
|
+
: undefined);
|
|
22
|
+
},
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
finally {
|
|
26
|
+
setStatus(undefined);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
1
29
|
export async function myfetch(url, args) {
|
|
2
30
|
const response = await fetch(url, args);
|
|
3
31
|
if (!response.ok) {
|
package/dist/fetchUtils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetchUtils.js","sourceRoot":"","sources":["../src/fetchUtils.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,GAAW,EAAE,IAAkB;IAC3D,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IAEvC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CACb,QAAQ,QAAQ,CAAC,MAAM,aAAa,GAAG,IAAI,MAAM,QAAQ,CAAC,IAAI,EAAE,EAAE,CACnE,CAAA;IACH,CAAC;IAED,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,GAAW,EAAE,IAAkB;IAC7D,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IACzC,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAA;AACxB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAI,GAAW,EAAE,IAAkB;IAChE,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IACzC,OAAO,QAAQ,CAAC,IAAI,EAAO,CAAA;AAC7B,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,IAAY,EAAE,MAAoB;IACxD,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC3C,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;YACpB,MAAM,CAAC,IAAI,YAAY,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAA;QACnD,CAAC;aAAM,CAAC;YACN,MAAM,EAAE,GAAG,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;YACpC,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;gBACrC,YAAY,CAAC,EAAE,CAAC,CAAA;gBAChB,MAAM,CAAC,IAAI,YAAY,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAA;YACnD,CAAC,CAAC,CAAA;QACJ,CAAC;IACH,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,CAAU;IACrC,OAAO,CAAC,YAAY,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY,CAAA;AAC7D,CAAC"}
|
|
1
|
+
{"version":3,"file":"fetchUtils.js","sourceRoot":"","sources":["../src/fetchUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAA;AAe3D;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,GAAe,EACf,SAAyC,EACzC,UAA2B,sBAAsB;IAEjD,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAA;IACxC,IAAI,CAAC;QACH,OAAO,MAAM,OAAO,CAAC,GAAG,EAAE;YACxB,MAAM,EAAE,UAAU,CAAC,MAAM;YACzB,cAAc,EAAE,GAAG,CAAC,EAAE;gBACpB,SAAS,CACP,GAAG;oBACD,CAAC,CAAC;wBACE,GAAG;wBACH,QAAQ,EAAE,GAAG,EAAE;4BACb,UAAU,CAAC,KAAK,EAAE,CAAA;wBACpB,CAAC;qBACF;oBACH,CAAC,CAAC,SAAS,CACd,CAAA;YACH,CAAC;SACF,CAAC,CAAA;IACJ,CAAC;YAAS,CAAC;QACT,SAAS,CAAC,SAAS,CAAC,CAAA;IACtB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,GAAW,EAAE,IAAkB;IAC3D,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IAEvC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CACb,QAAQ,QAAQ,CAAC,MAAM,aAAa,GAAG,IAAI,MAAM,QAAQ,CAAC,IAAI,EAAE,EAAE,CACnE,CAAA;IACH,CAAC;IAED,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,GAAW,EAAE,IAAkB;IAC7D,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IACzC,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAA;AACxB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAI,GAAW,EAAE,IAAkB;IAChE,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IACzC,OAAO,QAAQ,CAAC,IAAI,EAAO,CAAA;AAC7B,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,IAAY,EAAE,MAAoB;IACxD,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC3C,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;YACpB,MAAM,CAAC,IAAI,YAAY,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAA;QACnD,CAAC;aAAM,CAAC;YACN,MAAM,EAAE,GAAG,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;YACpC,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;gBACrC,YAAY,CAAC,EAAE,CAAC,CAAA;gBAChB,MAAM,CAAC,IAAI,YAAY,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAA;YACnD,CAAC,CAAC,CAAA;QACJ,CAAC;IACH,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,CAAU;IACrC,OAAO,CAAC,YAAY,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY,CAAA;AAC7D,CAAC"}
|
package/dist/hierarchy.d.ts
CHANGED
|
@@ -11,6 +11,8 @@ export interface HierarchyNode<T = NodeWithIds> {
|
|
|
11
11
|
len?: number;
|
|
12
12
|
depthToLeaf?: number;
|
|
13
13
|
_children?: HierarchyNode<T>[] | null;
|
|
14
|
+
collapsedTipXNear?: number;
|
|
15
|
+
collapsedTipXFar?: number;
|
|
14
16
|
}
|
|
15
17
|
export interface HierarchyLink<T = NodeWithIds> {
|
|
16
18
|
source: HierarchyNode<T>;
|
|
@@ -27,7 +29,13 @@ export declare function forEachLink<T>(node: HierarchyNode<T>, cb: (source: Hier
|
|
|
27
29
|
export declare function forEachDescendant<T>(node: HierarchyNode<T>, cb: (n: HierarchyNode<T>) => void): void;
|
|
28
30
|
export declare function clusterLayout<T>(root: HierarchyNode<T>, sizeX: number, sizeY: number): void;
|
|
29
31
|
export declare function collapse<T>(node: HierarchyNode<T>): void;
|
|
30
|
-
export declare function
|
|
32
|
+
export declare function collapsedSubtreeLengthExtent<T extends {
|
|
33
|
+
length?: number;
|
|
34
|
+
}>(node: HierarchyNode<T>): {
|
|
35
|
+
min: number;
|
|
36
|
+
max: number;
|
|
37
|
+
};
|
|
38
|
+
export declare function calcDepthToLeaf<T>(node: HierarchyNode<T>): number;
|
|
31
39
|
export declare function findMaxBranchLen(node: HierarchyNode): number;
|
|
32
40
|
export declare function maxLength(d: HierarchyNode): number;
|
|
33
41
|
export declare function setBrLength(d: HierarchyNode, y0: number, k: number): void;
|
package/dist/hierarchy.js
CHANGED
|
@@ -179,10 +179,44 @@ export function clusterLayout(root, sizeX, sizeY) {
|
|
|
179
179
|
}
|
|
180
180
|
export function collapse(node) {
|
|
181
181
|
if (node.children) {
|
|
182
|
+
// memoize the real subtree depth onto the node before detaching its
|
|
183
|
+
// children, so cladogram positioning keeps the node (now the apex of a
|
|
184
|
+
// collapsed-clade triangle) at its true branch point rather than snapping
|
|
185
|
+
// it to the tip-alignment line. This also keeps the rest of the tree's
|
|
186
|
+
// horizontal layout stable when a clade is collapsed.
|
|
187
|
+
calcDepthToLeaf(node);
|
|
182
188
|
node._children = node.children;
|
|
183
189
|
node.children = null;
|
|
184
190
|
}
|
|
185
191
|
}
|
|
192
|
+
// Min/max cumulative raw branch length from a collapsed node down to the tips of
|
|
193
|
+
// its detached subtree (excludes the node's own branch). Used to size the
|
|
194
|
+
// collapsed-clade triangle in phylogram mode.
|
|
195
|
+
export function collapsedSubtreeLengthExtent(node) {
|
|
196
|
+
const roots = node._children ?? node.children;
|
|
197
|
+
let min = Infinity;
|
|
198
|
+
let max = 0;
|
|
199
|
+
if (roots) {
|
|
200
|
+
const stack = roots.map(child => ({
|
|
201
|
+
node: child,
|
|
202
|
+
acc: Math.max(child.data.length ?? 0, 0),
|
|
203
|
+
}));
|
|
204
|
+
while (stack.length > 0) {
|
|
205
|
+
const { node: n, acc } = stack.pop();
|
|
206
|
+
const kids = n.children ?? n._children;
|
|
207
|
+
if (kids?.length) {
|
|
208
|
+
for (const child of kids) {
|
|
209
|
+
stack.push({ node: child, acc: acc + Math.max(child.data.length ?? 0, 0) });
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
else {
|
|
213
|
+
min = Math.min(min, acc);
|
|
214
|
+
max = Math.max(max, acc);
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
return { min: min === Infinity ? 0 : min, max };
|
|
219
|
+
}
|
|
186
220
|
// Cladogram positioning based on ape's plot.phylo: uses topological depth (max
|
|
187
221
|
// steps to a tip) instead of branch length so all leaves align at the rightmost
|
|
188
222
|
// x. Memoizes onto node.depthToLeaf since the layout walks the tree repeatedly.
|
package/dist/hierarchy.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hierarchy.js","sourceRoot":"","sources":["../src/hierarchy.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"hierarchy.js","sourceRoot":"","sources":["../src/hierarchy.ts"],"names":[],"mappings":"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"}
|
package/dist/model/msaModel.d.ts
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
|
+
import type { MSAFormat } from 'msa-parsers';
|
|
1
2
|
/**
|
|
2
3
|
* #stateModel MSAModel
|
|
3
4
|
*/
|
|
4
5
|
export declare function MSAModelF(): import("@jbrowse/mobx-state-tree").IModelType<{
|
|
5
6
|
bgColor: import("@jbrowse/mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
6
7
|
colorSchemeName: import("@jbrowse/mobx-state-tree").IType<string | undefined, string, string>;
|
|
8
|
+
msaFormat: import("@jbrowse/mobx-state-tree").IMaybe<import("@jbrowse/mobx-state-tree").ISimpleType<MSAFormat>>;
|
|
7
9
|
}, {
|
|
8
10
|
/**
|
|
9
11
|
* #action
|
|
@@ -14,4 +16,9 @@ export declare function MSAModelF(): import("@jbrowse/mobx-state-tree").IModelTy
|
|
|
14
16
|
* #action
|
|
15
17
|
*/
|
|
16
18
|
setBgColor(arg: boolean): void;
|
|
19
|
+
/**
|
|
20
|
+
* #action
|
|
21
|
+
* force a specific MSA parser, or pass undefined to auto-detect
|
|
22
|
+
*/
|
|
23
|
+
setMSAFormat(arg?: MSAFormat): void;
|
|
17
24
|
}, import("@jbrowse/mobx-state-tree")._NotCustomized, import("@jbrowse/mobx-state-tree")._NotCustomized>;
|
package/dist/model/msaModel.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { types } from '@jbrowse/mobx-state-tree';
|
|
2
2
|
import { defaultBgColor, defaultColorSchemeName } from "../constants.js";
|
|
3
|
+
const msaFormats = ['stockholm', 'a3m', 'fasta', 'emf', 'clustal'];
|
|
3
4
|
/**
|
|
4
5
|
* #stateModel MSAModel
|
|
5
6
|
*/
|
|
@@ -16,6 +17,12 @@ export function MSAModelF() {
|
|
|
16
17
|
* default color scheme name
|
|
17
18
|
*/
|
|
18
19
|
colorSchemeName: defaultColorSchemeName,
|
|
20
|
+
/**
|
|
21
|
+
* #property
|
|
22
|
+
* force the MSA data to be parsed as a specific format instead of relying
|
|
23
|
+
* on auto-detection (which is ambiguous between e.g. fasta and a3m)
|
|
24
|
+
*/
|
|
25
|
+
msaFormat: types.maybe(types.enumeration('MSAFormat', msaFormats)),
|
|
19
26
|
})
|
|
20
27
|
.actions(self => ({
|
|
21
28
|
/**
|
|
@@ -31,6 +38,13 @@ export function MSAModelF() {
|
|
|
31
38
|
setBgColor(arg) {
|
|
32
39
|
self.bgColor = arg;
|
|
33
40
|
},
|
|
41
|
+
/**
|
|
42
|
+
* #action
|
|
43
|
+
* force a specific MSA parser, or pass undefined to auto-detect
|
|
44
|
+
*/
|
|
45
|
+
setMSAFormat(arg) {
|
|
46
|
+
self.msaFormat = arg;
|
|
47
|
+
},
|
|
34
48
|
}));
|
|
35
49
|
}
|
|
36
50
|
//# sourceMappingURL=msaModel.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"msaModel.js","sourceRoot":"","sources":["../../src/model/msaModel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAA;AAEhD,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"msaModel.js","sourceRoot":"","sources":["../../src/model/msaModel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAA;AAEhD,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAA;AAIxE,MAAM,UAAU,GAAgB,CAAC,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,CAAC,CAAA;AAE/E;;GAEG;AACH,MAAM,UAAU,SAAS;IACvB,OAAO,KAAK;SACT,KAAK,CAAC;QACL;;;WAGG;QACH,OAAO,EAAE,cAAc;QAEvB;;;WAGG;QACH,eAAe,EAAE,sBAAsB;QAEvC;;;;WAIG;QACH,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAY,WAAW,EAAE,UAAU,CAAC,CAAC;KAC9E,CAAC;SACD,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChB;;;WAGG;QACH,kBAAkB,CAAC,IAAY;YAC7B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAA;QAC7B,CAAC;QAED;;WAEG;QACH,UAAU,CAAC,GAAY;YACrB,IAAI,CAAC,OAAO,GAAG,GAAG,CAAA;QACpB,CAAC;QAED;;;WAGG;QACH,YAAY,CAAC,GAAe;YAC1B,IAAI,CAAC,SAAS,GAAG,GAAG,CAAA;QACtB,CAAC;KACF,CAAC,CAAC,CAAA;AACP,CAAC"}
|
package/dist/model.d.ts
CHANGED
|
@@ -24,9 +24,10 @@ declare function stateModelFactory(): import("@jbrowse/mobx-state-tree").IModelT
|
|
|
24
24
|
showBranchLen: import("@jbrowse/mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
25
25
|
drawTree: import("@jbrowse/mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
26
26
|
drawNodeBubbles: import("@jbrowse/mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
27
|
-
}, "bgColor" | "colorSchemeName"> & {
|
|
27
|
+
}, "bgColor" | "colorSchemeName" | "msaFormat"> & {
|
|
28
28
|
bgColor: import("@jbrowse/mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
29
29
|
colorSchemeName: import("@jbrowse/mobx-state-tree").IType<string | undefined, string, string>;
|
|
30
|
+
msaFormat: import("@jbrowse/mobx-state-tree").IMaybe<import("@jbrowse/mobx-state-tree").ISimpleType<import("msa-parsers").MSAFormat>>;
|
|
30
31
|
}, "type" | "id" | "data" | "showDomains" | "hideGaps" | "allowedGappyness" | "subFeatureRows" | "drawMsaLetters" | "scrollZoom" | "rowHeight" | "scrollY" | "scrollX" | "colWidth" | "currentAlignment" | "height" | "treeFilehandle" | "msaFilehandle" | "treeMetadataFilehandle" | "gffFilehandle" | "collapsed" | "showOnly" | "turnedOffTracks" | "featureFilters" | "relativeTo"> & {
|
|
31
32
|
id: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<string>, [undefined]>;
|
|
32
33
|
showDomains: import("@jbrowse/mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
@@ -162,6 +163,7 @@ declare function stateModelFactory(): import("@jbrowse/mobx-state-tree").IModelT
|
|
|
162
163
|
} & {
|
|
163
164
|
setColorSchemeName(name: string): void;
|
|
164
165
|
setBgColor(arg: boolean): void;
|
|
166
|
+
setMSAFormat(arg?: import("msa-parsers").MSAFormat): void;
|
|
165
167
|
} & {
|
|
166
168
|
/**
|
|
167
169
|
* #volatile
|
|
@@ -949,9 +951,10 @@ declare function stateModelFactory(): import("@jbrowse/mobx-state-tree").IModelT
|
|
|
949
951
|
showBranchLen: import("@jbrowse/mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
950
952
|
drawTree: import("@jbrowse/mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
951
953
|
drawNodeBubbles: import("@jbrowse/mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
952
|
-
}, "bgColor" | "colorSchemeName"> & {
|
|
954
|
+
}, "bgColor" | "colorSchemeName" | "msaFormat"> & {
|
|
953
955
|
bgColor: import("@jbrowse/mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
954
956
|
colorSchemeName: import("@jbrowse/mobx-state-tree").IType<string | undefined, string, string>;
|
|
957
|
+
msaFormat: import("@jbrowse/mobx-state-tree").IMaybe<import("@jbrowse/mobx-state-tree").ISimpleType<import("msa-parsers").MSAFormat>>;
|
|
955
958
|
}, "type" | "id" | "data" | "showDomains" | "hideGaps" | "allowedGappyness" | "subFeatureRows" | "drawMsaLetters" | "scrollZoom" | "rowHeight" | "scrollY" | "scrollX" | "colWidth" | "currentAlignment" | "height" | "treeFilehandle" | "msaFilehandle" | "treeMetadataFilehandle" | "gffFilehandle" | "collapsed" | "showOnly" | "turnedOffTracks" | "featureFilters" | "relativeTo"> & {
|
|
956
959
|
id: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<string>, [undefined]>;
|
|
957
960
|
showDomains: import("@jbrowse/mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|