react-msaview 5.7.3 → 5.8.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 +91 -91
- package/bundle/index.js.map +4 -4
- package/dist/components/SequenceTextArea.js +2 -2
- package/dist/components/SequenceTextArea.js.map +1 -1
- package/dist/components/dialogs/UserProvidedDomainsDialog.js +6 -1
- package/dist/components/dialogs/UserProvidedDomainsDialog.js.map +1 -1
- package/dist/components/header/getDomainsMenu.js +1 -1
- package/dist/components/header/getDomainsMenu.js.map +1 -1
- package/dist/components/import/ImportForm.js +7 -11
- package/dist/components/import/ImportForm.js.map +1 -1
- package/dist/components/import/ImportFormExamples.js +7 -11
- package/dist/components/import/ImportFormExamples.js.map +1 -1
- package/dist/components/import/util.d.ts +1 -1
- package/dist/components/import/util.js +1 -1
- package/dist/components/import/util.js.map +1 -1
- package/dist/components/msa/renderBoxFeatureCanvasBlock.js +2 -2
- package/dist/components/msa/renderBoxFeatureCanvasBlock.js.map +1 -1
- package/dist/components/tree/renderTreeCanvas.d.ts +9 -9
- package/dist/components/tree/renderTreeCanvas.js +36 -24
- package/dist/components/tree/renderTreeCanvas.js.map +1 -1
- package/dist/flatToTree.d.ts +3 -1
- package/dist/flatToTree.js +16 -9
- package/dist/flatToTree.js.map +1 -1
- package/dist/hierarchy.d.ts +12 -17
- package/dist/hierarchy.js +12 -145
- package/dist/hierarchy.js.map +1 -1
- package/dist/model.d.ts +1 -0
- package/dist/model.js +17 -3
- package/dist/model.js.map +1 -1
- package/dist/neighborJoining.js +11 -2
- package/dist/neighborJoining.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +4 -3
- package/src/colSpace.test.ts +40 -0
- package/src/components/SequenceTextArea.tsx +2 -2
- package/src/components/dialogs/UserProvidedDomainsDialog.tsx +8 -1
- package/src/components/header/getDomainsMenu.ts +1 -1
- package/src/components/import/ImportForm.tsx +6 -9
- package/src/components/import/ImportFormExamples.tsx +11 -14
- package/src/components/import/util.ts +1 -1
- package/src/components/msa/renderBoxFeatureCanvasBlock.ts +3 -2
- package/src/components/tree/renderTreeCanvas.test.ts +54 -1
- package/src/components/tree/renderTreeCanvas.ts +41 -28
- package/src/flatToTree.test.ts +21 -0
- package/src/flatToTree.ts +21 -10
- package/src/hierarchy.ts +44 -179
- package/src/largeTree.test.ts +32 -0
- package/src/model.ts +17 -3
- package/src/neighborJoining.test.ts +21 -6
- package/src/neighborJoining.ts +12 -2
- package/src/parseAsn1.test.ts +16 -0
- package/src/stripDefaultSnapshot.test.ts +19 -0
- package/src/version.ts +1 -1
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import React, { useState } from 'react';
|
|
2
2
|
import { makeStyles } from '@jbrowse/core/util/tss-react';
|
|
3
3
|
import { Button, TextField } from '@mui/material';
|
|
4
|
+
import { getUngappedSequence } from 'msa-parsers';
|
|
4
5
|
import copy from '../vendor/copyToClipboard.js';
|
|
5
6
|
import Checkbox2 from './Checkbox2.js';
|
|
6
7
|
const useStyles = makeStyles()({
|
|
@@ -19,9 +20,8 @@ export default function SequenceTextArea({ str }) {
|
|
|
19
20
|
const [copied, setCopied] = useState(false);
|
|
20
21
|
const [showGaps, setShowGaps] = useState(false);
|
|
21
22
|
const [showEmpty, setShowEmpty] = useState(false);
|
|
22
|
-
const removeGaps = (s) => s.replaceAll('-', '').replaceAll('.', '');
|
|
23
23
|
const disp = str
|
|
24
|
-
.map(([s1, s2]) => [s1, showGaps ? s2 :
|
|
24
|
+
.map(([s1, s2]) => [s1, showGaps ? s2 : getUngappedSequence(s2)])
|
|
25
25
|
.filter(([, s2]) => showEmpty || !!s2)
|
|
26
26
|
.map(([s1, s2]) => `>${s1}\n${s2}`)
|
|
27
27
|
.join('\n');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SequenceTextArea.js","sourceRoot":"","sources":["../../src/components/SequenceTextArea.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAEvC,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAA;AACzD,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAEjD,OAAO,IAAI,MAAM,8BAA8B,CAAA;AAC/C,OAAO,SAAS,MAAM,gBAAiB,CAAA;AAEvC,MAAM,SAAS,GAAG,UAAU,EAAE,CAAC;IAC7B,YAAY,EAAE;QACZ,UAAU,EAAE,aAAa;QACzB,QAAQ,EAAE,YAAY;KACvB;IACD,aAAa,EAAE;QACb,UAAU,EAAE,WAAW;QACvB,MAAM,EAAE,CAAC;QACT,QAAQ,EAAE,MAAM;KACjB;CACF,CAAC,CAAA;AAEF,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,EAAE,GAAG,EAA+B;IAC3E,MAAM,EAAE,OAAO,EAAE,GAAG,SAAS,EAAE,CAAA;IAC/B,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC3C,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC/C,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAEjD,MAAM,
|
|
1
|
+
{"version":3,"file":"SequenceTextArea.js","sourceRoot":"","sources":["../../src/components/SequenceTextArea.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAEvC,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAA;AACzD,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAEjD,OAAO,IAAI,MAAM,8BAA8B,CAAA;AAC/C,OAAO,SAAS,MAAM,gBAAiB,CAAA;AAEvC,MAAM,SAAS,GAAG,UAAU,EAAE,CAAC;IAC7B,YAAY,EAAE;QACZ,UAAU,EAAE,aAAa;QACzB,QAAQ,EAAE,YAAY;KACvB;IACD,aAAa,EAAE;QACb,UAAU,EAAE,WAAW;QACvB,MAAM,EAAE,CAAC;QACT,QAAQ,EAAE,MAAM;KACjB;CACF,CAAC,CAAA;AAEF,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,EAAE,GAAG,EAA+B;IAC3E,MAAM,EAAE,OAAO,EAAE,GAAG,SAAS,EAAE,CAAA;IAC/B,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC3C,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC/C,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAEjD,MAAM,IAAI,GAAG,GAAG;SACb,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAU,CAAC;SACzE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC;SACrC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;SAClC,IAAI,CAAC,IAAI,CAAC,CAAA;IACb,OAAO,CACL;QACE,oBAAC,MAAM,IACL,KAAK,EAAC,SAAS,EACf,OAAO,EAAC,WAAW,EACnB,OAAO,EAAE,GAAG,EAAE;gBACZ,IAAI,CAAC,IAAI,CAAC,CAAA;gBACV,SAAS,CAAC,IAAI,CAAC,CAAA;gBACf,UAAU,CAAC,GAAG,EAAE;oBACd,SAAS,CAAC,KAAK,CAAC,CAAA;gBAClB,CAAC,EAAE,GAAG,CAAC,CAAA;YACT,CAAC,IAEA,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,mBAAmB,CAClC;QACT,oBAAC,SAAS,IACR,KAAK,EAAC,WAAW,EACjB,OAAO,EAAE,QAAQ,EACjB,QAAQ,EAAE,GAAG,EAAE;gBACb,WAAW,CAAC,CAAC,QAAQ,CAAC,CAAA;YACxB,CAAC,GACD;QACF,oBAAC,SAAS,IACR,KAAK,EAAC,YAAY,EAClB,OAAO,EAAE,SAAS,EAClB,QAAQ,EAAE,GAAG,EAAE;gBACb,YAAY,CAAC,CAAC,SAAS,CAAC,CAAA;YAC1B,CAAC,GACD;QACF,oBAAC,SAAS,IACR,OAAO,EAAC,UAAU,EAClB,SAAS,QACT,SAAS,EAAE,OAAO,CAAC,aAAa,EAChC,OAAO,EAAE,CAAC,EACV,OAAO,EAAE,EAAE,EACX,SAAS,QACT,KAAK,EAAE,IAAI,EACX,SAAS,EAAE;gBACT,KAAK,EAAE;oBACL,QAAQ,EAAE,IAAI;oBACd,SAAS,EAAE,OAAO,CAAC,YAAY;iBAChC;aACF,GACD,CACD,CACJ,CAAA;AACH,CAAC"}
|
|
@@ -45,7 +45,12 @@ const UserProvidedDomainsDialog = observer(function ({ handleClose, model, }) {
|
|
|
45
45
|
const ret = file
|
|
46
46
|
? JSON.parse(await file.text())
|
|
47
47
|
: await jsonfetch(interProURL);
|
|
48
|
-
|
|
48
|
+
// key each result by its xref id; a result without one has no
|
|
49
|
+
// row to attach to, and keying it `undefined` would draw a
|
|
50
|
+
// phantom row's worth of domains
|
|
51
|
+
model.setDomains(Object.fromEntries(ret.results
|
|
52
|
+
.map(r => [r.xref[0]?.id, r])
|
|
53
|
+
.filter(e => e[0] !== undefined)));
|
|
49
54
|
getSession(model).notify('Loaded interproscan results', 'success');
|
|
50
55
|
}
|
|
51
56
|
catch (e) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserProvidedDomainsDialog.js","sourceRoot":"","sources":["../../../src/components/dialogs/UserProvidedDomainsDialog.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"UserProvidedDomainsDialog.js","sourceRoot":"","sources":["../../../src/components/dialogs/UserProvidedDomainsDialog.tsx"],"names":[],"mappings":"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"}
|
|
@@ -40,7 +40,7 @@ export function getDomainMenu({ model }) {
|
|
|
40
40
|
label: `Show domains${noDomains ? ' (no domains loaded)' : ''}`,
|
|
41
41
|
disabled: noDomains,
|
|
42
42
|
icon: Visibility,
|
|
43
|
-
checked: actuallyShowDomains
|
|
43
|
+
checked: actuallyShowDomains,
|
|
44
44
|
type: 'checkbox',
|
|
45
45
|
onClick: () => {
|
|
46
46
|
model.setShowDomains(!showDomains);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getDomainsMenu.js","sourceRoot":"","sources":["../../../src/components/header/getDomainsMenu.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAA;AAE5B,OAAO,SAAS,MAAM,+BAA+B,CAAA;AACrD,OAAO,UAAU,MAAM,gCAAgC,CAAA;AACvD,OAAO,MAAM,MAAM,4BAA4B,CAAA;AAC/C,OAAO,IAAI,MAAM,0BAA0B,CAAA;AAC3C,OAAO,UAAU,MAAM,gCAAgC,CAAA;AAIvD,MAAM,mBAAmB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,6BAA8B,CAAC,CAAC,CAAA;AAC9E,MAAM,yBAAyB,GAAG,IAAI,CACpC,GAAG,EAAE,CAAC,MAAM,CAAC,yCAA0C,CAAC,CACzD,CAAA;AACD,MAAM,kBAAkB,GAAG,IAAI,CAC7B,GAAG,EAAE,CAAC,MAAM,CAAC,kCAAmC,CAAC,CAClD,CAAA;AAED,MAAM,UAAU,aAAa,CAAC,EAAE,KAAK,EAA2B;IAC9D,MAAM,EAAE,WAAW,EAAE,mBAAmB,EAAE,cAAc,EAAE,SAAS,EAAE,GAAG,KAAK,CAAA;IAC7E,OAAO;QACL;YACE,KAAK,EAAE,iBAAiB;YACxB,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE,GAAG,EAAE;gBACZ,KAAK,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC;oBAC/B,yBAAyB;oBACzB;wBACE,WAAW;wBACX,KAAK;qBACN;iBACF,CAAC,CAAA;YACJ,CAAC;SACF;QACD;YACE,KAAK,EAAE,mCAAmC;YAC1C,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,GAAG,EAAE;gBACZ,KAAK,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC;oBAC/B,kBAAkB;oBAClB;wBACE,WAAW;wBACX,KAAK;qBACN;iBACF,CAAC,CAAA;YACJ,CAAC;SACF;QACD;YACE,KAAK,EAAE,eAAe,SAAS,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,EAAE,EAAE;YAC/D,QAAQ,EAAE,SAAS;YACnB,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE,mBAAmB
|
|
1
|
+
{"version":3,"file":"getDomainsMenu.js","sourceRoot":"","sources":["../../../src/components/header/getDomainsMenu.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAA;AAE5B,OAAO,SAAS,MAAM,+BAA+B,CAAA;AACrD,OAAO,UAAU,MAAM,gCAAgC,CAAA;AACvD,OAAO,MAAM,MAAM,4BAA4B,CAAA;AAC/C,OAAO,IAAI,MAAM,0BAA0B,CAAA;AAC3C,OAAO,UAAU,MAAM,gCAAgC,CAAA;AAIvD,MAAM,mBAAmB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,6BAA8B,CAAC,CAAC,CAAA;AAC9E,MAAM,yBAAyB,GAAG,IAAI,CACpC,GAAG,EAAE,CAAC,MAAM,CAAC,yCAA0C,CAAC,CACzD,CAAA;AACD,MAAM,kBAAkB,GAAG,IAAI,CAC7B,GAAG,EAAE,CAAC,MAAM,CAAC,kCAAmC,CAAC,CAClD,CAAA;AAED,MAAM,UAAU,aAAa,CAAC,EAAE,KAAK,EAA2B;IAC9D,MAAM,EAAE,WAAW,EAAE,mBAAmB,EAAE,cAAc,EAAE,SAAS,EAAE,GAAG,KAAK,CAAA;IAC7E,OAAO;QACL;YACE,KAAK,EAAE,iBAAiB;YACxB,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE,GAAG,EAAE;gBACZ,KAAK,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC;oBAC/B,yBAAyB;oBACzB;wBACE,WAAW;wBACX,KAAK;qBACN;iBACF,CAAC,CAAA;YACJ,CAAC;SACF;QACD;YACE,KAAK,EAAE,mCAAmC;YAC1C,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,GAAG,EAAE;gBACZ,KAAK,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC;oBAC/B,kBAAkB;oBAClB;wBACE,WAAW;wBACX,KAAK;qBACN;iBACF,CAAC,CAAA;YACJ,CAAC;SACF;QACD;YACE,KAAK,EAAE,eAAe,SAAS,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,EAAE,EAAE;YAC/D,QAAQ,EAAE,SAAS;YACnB,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE,mBAAmB;YAC5B,IAAI,EAAE,UAAmB;YACzB,OAAO,EAAE,GAAG,EAAE;gBACZ,KAAK,CAAC,cAAc,CAAC,CAAC,WAAW,CAAC,CAAA;YACpC,CAAC;SACF;QACD;YACE,KAAK,EAAE,qBAAqB,SAAS,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,EAAE,EAAE;YACrE,QAAQ,EAAE,SAAS;YACnB,OAAO,EAAE,mBAAmB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK;YACrD,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,UAAmB;YACzB,OAAO,EAAE,GAAG,EAAE;gBACZ,KAAK,CAAC,iBAAiB,CAAC,CAAC,cAAc,CAAC,CAAA;YAC1C,CAAC;SACF;QACD;YACE,KAAK,EAAE,iBAAiB,SAAS,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,EAAE,EAAE;YACjE,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,SAAS;YACnB,OAAO,EAAE,GAAG,EAAE;gBACZ,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC3B,mBAAmB;oBACnB;wBACE,OAAO;wBACP,KAAK;qBACN;iBACF,CAAC,CAAA;YACJ,CAAC;SACF;KACF,CAAA;AACH,CAAC"}
|
|
@@ -32,17 +32,13 @@ const ImportForm = observer(function ({ model }) {
|
|
|
32
32
|
React.createElement(FileSelector, { location: gffFile, setLocation: setGffFile }))),
|
|
33
33
|
React.createElement("div", null,
|
|
34
34
|
React.createElement(Button, { onClick: () => {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
console.error(e);
|
|
43
|
-
model.setError(e);
|
|
44
|
-
}
|
|
45
|
-
})();
|
|
35
|
+
try {
|
|
36
|
+
load(model, msaFile, treeFile, gffFile);
|
|
37
|
+
}
|
|
38
|
+
catch (e) {
|
|
39
|
+
console.error(e);
|
|
40
|
+
model.setError(e);
|
|
41
|
+
}
|
|
46
42
|
}, variant: "contained", color: "primary", disabled: !msaFile && !treeFile }, "Open")),
|
|
47
43
|
React.createElement("div", null,
|
|
48
44
|
React.createElement(Typography, null, "Examples"),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ImportForm.js","sourceRoot":"","sources":["../../../src/components/import/ImportForm.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAEvC,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAC7D,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAErC,OAAO,kBAAkB,MAAM,yBAA0B,CAAA;AACzD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAKhC,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAU,EAAE,KAAK,EAA2B;IACtE,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,EAAgB,CAAA;IACtD,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,EAAgB,CAAA;IACxD,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,EAAgB,CAAA;IACtD,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAA;IAEvB,OAAO,CACL,oBAAC,SAAS;QACR,6BAAK,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE;YACzB,KAAK,CAAC,CAAC,CAAC,oBAAC,YAAY,IAAC,KAAK,EAAE,KAAK,GAAI,CAAC,CAAC,CAAC,IAAI;YAC9C,oBAAC,UAAU,6FAGE;YACb,oBAAC,UAAU,IAAC,KAAK,EAAC,OAAO,mNAKZ,CACT;QAEN,6BACE,KAAK,EAAE;gBACL,OAAO,EAAE,MAAM;gBACf,cAAc,EAAE,QAAQ;gBACxB,UAAU,EAAE,QAAQ;gBACpB,GAAG,EAAE,EAAE;aACR;YAED;gBACE;oBACE,oBAAC,UAAU,0BAA6B;oBACxC,oBAAC,YAAY,IAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,GAAI,CACxD;gBACN;oBACE,oBAAC,UAAU,2BAA8B;oBACzC,oBAAC,YAAY,IAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,GAAI,CAC1D;gBACN;oBACE,oBAAC,UAAU,kDAAqD;oBAChE,oBAAC,YAAY,IAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,GAAI,CACxD,CACF;YACN;gBACE,oBAAC,MAAM,IACL,OAAO,EAAE,GAAG,EAAE;wBACZ,
|
|
1
|
+
{"version":3,"file":"ImportForm.js","sourceRoot":"","sources":["../../../src/components/import/ImportForm.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAEvC,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAC7D,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAErC,OAAO,kBAAkB,MAAM,yBAA0B,CAAA;AACzD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAKhC,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAU,EAAE,KAAK,EAA2B;IACtE,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,EAAgB,CAAA;IACtD,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,EAAgB,CAAA;IACxD,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,EAAgB,CAAA;IACtD,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAA;IAEvB,OAAO,CACL,oBAAC,SAAS;QACR,6BAAK,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE;YACzB,KAAK,CAAC,CAAC,CAAC,oBAAC,YAAY,IAAC,KAAK,EAAE,KAAK,GAAI,CAAC,CAAC,CAAC,IAAI;YAC9C,oBAAC,UAAU,6FAGE;YACb,oBAAC,UAAU,IAAC,KAAK,EAAC,OAAO,mNAKZ,CACT;QAEN,6BACE,KAAK,EAAE;gBACL,OAAO,EAAE,MAAM;gBACf,cAAc,EAAE,QAAQ;gBACxB,UAAU,EAAE,QAAQ;gBACpB,GAAG,EAAE,EAAE;aACR;YAED;gBACE;oBACE,oBAAC,UAAU,0BAA6B;oBACxC,oBAAC,YAAY,IAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,GAAI,CACxD;gBACN;oBACE,oBAAC,UAAU,2BAA8B;oBACzC,oBAAC,YAAY,IAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,GAAI,CAC1D;gBACN;oBACE,oBAAC,UAAU,kDAAqD;oBAChE,oBAAC,YAAY,IAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,GAAI,CACxD,CACF;YACN;gBACE,oBAAC,MAAM,IACL,OAAO,EAAE,GAAG,EAAE;wBACZ,IAAI,CAAC;4BACH,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAA;wBACzC,CAAC;wBAAC,OAAO,CAAC,EAAE,CAAC;4BACX,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;4BAChB,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;wBACnB,CAAC;oBACH,CAAC,EACD,OAAO,EAAC,WAAW,EACnB,KAAK,EAAC,SAAS,EACf,QAAQ,EAAE,CAAC,OAAO,IAAI,CAAC,QAAQ,WAGxB,CACL;YAEN;gBACE,oBAAC,UAAU,mBAAsB;gBACjC,oBAAC,kBAAkB,IAAC,KAAK,EAAE,KAAK,GAAI,CAChC,CACF,CACI,CACb,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,eAAe,UAAU,CAAA"}
|
|
@@ -15,17 +15,13 @@ function ListItem({ onClick, model, children, }) {
|
|
|
15
15
|
const BASE = 'https://jbrowse.org/genomes/multiple_sequence_alignments';
|
|
16
16
|
const ImportFormExamples = observer(function ({ model, }) {
|
|
17
17
|
function loadUris({ msa, tree, gff, }) {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
console.error(e);
|
|
26
|
-
model.setError(e);
|
|
27
|
-
}
|
|
28
|
-
})();
|
|
18
|
+
try {
|
|
19
|
+
load(model, msa ? { uri: msa, locationType: 'UriLocation' } : undefined, tree ? { uri: tree, locationType: 'UriLocation' } : undefined, gff ? { uri: gff, locationType: 'UriLocation' } : undefined);
|
|
20
|
+
}
|
|
21
|
+
catch (e) {
|
|
22
|
+
console.error(e);
|
|
23
|
+
model.setError(e);
|
|
24
|
+
}
|
|
29
25
|
}
|
|
30
26
|
return (React.createElement("ul", null,
|
|
31
27
|
React.createElement(ListItem, { model: model, onClick: () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ImportFormExamples.js","sourceRoot":"","sources":["../../../src/components/import/ImportFormExamples.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAErC,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAClE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAIhC,SAAS,QAAQ,CAAC,EAChB,OAAO,EACP,KAAK,EACL,QAAQ,GAKT;IACC,OAAO,CACL;QACE,oBAAC,IAAI,IACH,OAAO,EAAE,KAAK,CAAC,EAAE;gBACf,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;gBACzB,KAAK,CAAC,cAAc,EAAE,CAAA;gBACtB,OAAO,EAAE,CAAA;YACX,CAAC,EACD,IAAI,EAAC,GAAG;YAER,oBAAC,UAAU,IAAC,SAAS,EAAC,MAAM,IAAE,QAAQ,CAAc,CAC/C,CACJ,CACN,CAAA;AACH,CAAC;AAED,MAAM,IAAI,GAAG,0DAA0D,CAAA;AAEvE,MAAM,kBAAkB,GAAG,QAAQ,CAAC,UAAU,EAC5C,KAAK,GAGN;IACC,SAAS,QAAQ,CAAC,EAChB,GAAG,EACH,IAAI,EACJ,GAAG,GAKJ;QACC,
|
|
1
|
+
{"version":3,"file":"ImportFormExamples.js","sourceRoot":"","sources":["../../../src/components/import/ImportFormExamples.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { MsaViewModel } from '../../model.ts';
|
|
2
2
|
import type { FileLocation } from '@jbrowse/core/util';
|
|
3
|
-
export declare function load(model: MsaViewModel, msaFile?: FileLocation, treeFile?: FileLocation, gffFile?: FileLocation):
|
|
3
|
+
export declare function load(model: MsaViewModel, msaFile?: FileLocation, treeFile?: FileLocation, gffFile?: FileLocation): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../../src/components/import/util.ts"],"names":[],"mappings":"AAGA,MAAM,
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../../src/components/import/util.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,IAAI,CAClB,KAAmB,EACnB,OAAsB,EACtB,QAAuB,EACvB,OAAsB;IAEtB,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;IACzB,IAAI,OAAO,EAAE,CAAC;QACZ,KAAK,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAA;IACjC,CAAC;IACD,IAAI,QAAQ,EAAE,CAAC;QACb,KAAK,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAA;IACnC,CAAC;IACD,IAAI,OAAO,EAAE,CAAC;QACZ,KAAK,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAA;IACjC,CAAC;AACH,CAAC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { subFeatureRowHeight } from '../../constants.js';
|
|
2
2
|
import { getVisibleLeaves } from '../getVisibleLeaves.js';
|
|
3
3
|
export function renderBoxFeatureCanvasBlock({ model, offsetX, offsetY, ctx, highResScaleFactorOverride, blockSizeXOverride, blockSizeYOverride, }) {
|
|
4
|
-
const { blockSize, rowHeight, highResScaleFactor,
|
|
5
|
-
if (
|
|
4
|
+
const { blockSize, rowHeight, highResScaleFactor, actuallyShowDomains } = model;
|
|
5
|
+
if (actuallyShowDomains) {
|
|
6
6
|
const k = highResScaleFactorOverride ?? highResScaleFactor;
|
|
7
7
|
const bx = blockSizeXOverride ?? blockSize;
|
|
8
8
|
const by = blockSizeYOverride ?? blockSize;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderBoxFeatureCanvasBlock.js","sourceRoot":"","sources":["../../../src/components/msa/renderBoxFeatureCanvasBlock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAOzD,MAAM,UAAU,2BAA2B,CAAC,EAC1C,KAAK,EACL,OAAO,EACP,OAAO,EACP,GAAG,EACH,0BAA0B,EAC1B,kBAAkB,EAClB,kBAAkB,GASnB;IACC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,kBAAkB,EAAE,
|
|
1
|
+
{"version":3,"file":"renderBoxFeatureCanvasBlock.js","sourceRoot":"","sources":["../../../src/components/msa/renderBoxFeatureCanvasBlock.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,42 +4,42 @@ import type { RenderCtx } from '../renderCtx.ts';
|
|
|
4
4
|
import type { ClickMapIndex } from './clickMap.ts';
|
|
5
5
|
import type { Theme } from '@mui/material';
|
|
6
6
|
export declare const padding = 600;
|
|
7
|
-
export declare function getNodeX(node: HierarchyNode, showBranchLen: boolean,
|
|
8
|
-
export declare function renderTree({ offsetY, ctx, model, theme,
|
|
7
|
+
export declare function getNodeX(node: HierarchyNode, showBranchLen: boolean, tipX: number, maxDepthToLeaf: number): number | undefined;
|
|
8
|
+
export declare function renderTree({ offsetY, ctx, model, theme, tipX, maxDepthToLeaf, blockSizeYOverride, }: {
|
|
9
9
|
offsetY: number;
|
|
10
10
|
ctx: RenderCtx;
|
|
11
11
|
model: MsaViewModel;
|
|
12
12
|
theme: Theme;
|
|
13
|
-
|
|
13
|
+
tipX: number;
|
|
14
14
|
maxDepthToLeaf: number;
|
|
15
15
|
blockSizeYOverride?: number;
|
|
16
16
|
}): void;
|
|
17
|
-
export declare function renderCollapsedTriangles({ ctx, clickMap, offsetY, model, theme,
|
|
17
|
+
export declare function renderCollapsedTriangles({ ctx, clickMap, offsetY, model, theme, tipX, maxDepthToLeaf, blockSizeYOverride, }: {
|
|
18
18
|
ctx: RenderCtx;
|
|
19
19
|
clickMap?: ClickMapIndex;
|
|
20
20
|
offsetY: number;
|
|
21
21
|
model: MsaViewModel;
|
|
22
22
|
theme: Theme;
|
|
23
|
-
|
|
23
|
+
tipX: number;
|
|
24
24
|
maxDepthToLeaf: number;
|
|
25
25
|
blockSizeYOverride?: number;
|
|
26
26
|
}): void;
|
|
27
|
-
export declare function renderNodeBubbles({ ctx, clickMap, offsetY, model,
|
|
27
|
+
export declare function renderNodeBubbles({ ctx, clickMap, offsetY, model, tipX, maxDepthToLeaf, blockSizeYOverride, }: {
|
|
28
28
|
ctx: RenderCtx;
|
|
29
29
|
clickMap?: ClickMapIndex;
|
|
30
30
|
offsetY: number;
|
|
31
31
|
model: MsaViewModel;
|
|
32
|
-
|
|
32
|
+
tipX: number;
|
|
33
33
|
maxDepthToLeaf: number;
|
|
34
34
|
blockSizeYOverride?: number;
|
|
35
35
|
}): void;
|
|
36
|
-
export declare function renderTreeLabels({ theme, model, offsetY, ctx, clickMap,
|
|
36
|
+
export declare function renderTreeLabels({ theme, model, offsetY, ctx, clickMap, tipX, maxDepthToLeaf, blockSizeYOverride, }: {
|
|
37
37
|
model: MsaViewModel;
|
|
38
38
|
offsetY: number;
|
|
39
39
|
ctx: RenderCtx;
|
|
40
40
|
clickMap?: ClickMapIndex;
|
|
41
41
|
theme: Theme;
|
|
42
|
-
|
|
42
|
+
tipX: number;
|
|
43
43
|
maxDepthToLeaf: number;
|
|
44
44
|
blockSizeYOverride?: number;
|
|
45
45
|
}): void;
|
|
@@ -10,11 +10,12 @@ const d = radius * 2;
|
|
|
10
10
|
function inYBlock(y, offsetY, by) {
|
|
11
11
|
return y > offsetY - extendBounds && y < offsetY + by + extendBounds;
|
|
12
12
|
}
|
|
13
|
-
// Calculate node x-coordinate for both phylogram (with branch lengths) and
|
|
14
|
-
//
|
|
15
|
-
//
|
|
13
|
+
// Calculate node x-coordinate for both phylogram (with branch lengths) and
|
|
14
|
+
// cladogram (topology only) modes. tipX is the pixel x the tips sit at.
|
|
15
|
+
// For cladograms: x = (maxDepthToLeaf - nodeDepthToLeaf) / maxDepthToLeaf * tipX
|
|
16
|
+
// This positions: leaves at tipX (rightmost), root at 0 (leftmost), internal nodes proportionally in between
|
|
16
17
|
// Matches ape's: xx <- max(xx) - xx (where xx is depth from each node to tips)
|
|
17
|
-
export function getNodeX(node, showBranchLen,
|
|
18
|
+
export function getNodeX(node, showBranchLen, tipX, maxDepthToLeaf) {
|
|
18
19
|
if (showBranchLen) {
|
|
19
20
|
return node.len;
|
|
20
21
|
}
|
|
@@ -22,17 +23,17 @@ export function getNodeX(node, showBranchLen, maxBranchLen, maxDepthToLeaf) {
|
|
|
22
23
|
return 0;
|
|
23
24
|
}
|
|
24
25
|
const depthToLeaf = calcDepthToLeaf(node);
|
|
25
|
-
return ((maxDepthToLeaf - depthToLeaf) / maxDepthToLeaf) *
|
|
26
|
+
return ((maxDepthToLeaf - depthToLeaf) / maxDepthToLeaf) * tipX;
|
|
26
27
|
}
|
|
27
|
-
export function renderTree({ offsetY, ctx, model, theme,
|
|
28
|
+
export function renderTree({ offsetY, ctx, model, theme, tipX, maxDepthToLeaf, blockSizeYOverride, }) {
|
|
28
29
|
const { hierarchy, showBranchLenEffective: showBranchLen, blockSize } = model;
|
|
29
30
|
const by = blockSizeYOverride ?? blockSize;
|
|
30
31
|
ctx.strokeStyle = theme.palette.text.primary;
|
|
31
32
|
forEachLink(hierarchy, (source, target) => {
|
|
32
33
|
const sy = source.x;
|
|
33
34
|
const ty = target.x;
|
|
34
|
-
const tx = getNodeX(target, showBranchLen,
|
|
35
|
-
const sx = getNodeX(source, showBranchLen,
|
|
35
|
+
const tx = getNodeX(target, showBranchLen, tipX, maxDepthToLeaf);
|
|
36
|
+
const sx = getNodeX(source, showBranchLen, tipX, maxDepthToLeaf);
|
|
36
37
|
if (tx === undefined || sx === undefined) {
|
|
37
38
|
return;
|
|
38
39
|
}
|
|
@@ -50,21 +51,25 @@ export function renderTree({ offsetY, ctx, model, theme, maxBranchLen, maxDepthT
|
|
|
50
51
|
}
|
|
51
52
|
});
|
|
52
53
|
}
|
|
53
|
-
export function renderCollapsedTriangles({ ctx, clickMap, offsetY, model, theme,
|
|
54
|
+
export function renderCollapsedTriangles({ ctx, clickMap, offsetY, model, theme, tipX, maxDepthToLeaf, blockSizeYOverride, }) {
|
|
54
55
|
const { hierarchy, showBranchLenEffective: showBranchLen, collapsed, blockSize, rowHeight, fontSize, marginLeft: ml, } = model;
|
|
56
|
+
// nothing collapsed is the common case, and the traversal below visits every
|
|
57
|
+
// node in the tree on every block of every redraw
|
|
58
|
+
if (collapsed.length === 0) {
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
const collapsedSet = new Set(collapsed);
|
|
55
62
|
const by = blockSizeYOverride ?? blockSize;
|
|
56
63
|
const halfHeight = Math.max(2, rowHeight * 0.42);
|
|
57
64
|
forEachDescendant(hierarchy, node => {
|
|
58
65
|
const { id, name } = node.data;
|
|
59
|
-
if (
|
|
60
|
-
const apexX = getNodeX(node, showBranchLen,
|
|
66
|
+
if (collapsedSet.has(id)) {
|
|
67
|
+
const apexX = getNodeX(node, showBranchLen, tipX, maxDepthToLeaf);
|
|
61
68
|
const y = node.x;
|
|
62
69
|
const inBlock = inYBlock(y, offsetY, by);
|
|
63
70
|
// in cladogram mode the hidden tips align at the right edge, otherwise use
|
|
64
71
|
// the branch-length extent recorded in the model's hierarchy getter
|
|
65
|
-
const baseX = showBranchLen
|
|
66
|
-
? (node.collapsedTipXFar ?? maxBranchLen)
|
|
67
|
-
: maxBranchLen;
|
|
72
|
+
const baseX = showBranchLen ? (node.collapsedTipXFar ?? tipX) : tipX;
|
|
68
73
|
if (apexX !== undefined && inBlock && baseX > apexX) {
|
|
69
74
|
ctx.beginPath();
|
|
70
75
|
ctx.moveTo(apexX, y);
|
|
@@ -99,11 +104,12 @@ export function renderCollapsedTriangles({ ctx, clickMap, offsetY, model, theme,
|
|
|
99
104
|
}
|
|
100
105
|
});
|
|
101
106
|
}
|
|
102
|
-
export function renderNodeBubbles({ ctx, clickMap, offsetY, model,
|
|
107
|
+
export function renderNodeBubbles({ ctx, clickMap, offsetY, model, tipX, maxDepthToLeaf, blockSizeYOverride, }) {
|
|
103
108
|
const { hierarchy, showBranchLenEffective: showBranchLen, collapsed, blockSize, marginLeft: ml, } = model;
|
|
104
109
|
const by = blockSizeYOverride ?? blockSize;
|
|
110
|
+
const collapsedSet = new Set(collapsed);
|
|
105
111
|
forEachDescendant(hierarchy, node => {
|
|
106
|
-
const x = getNodeX(node, showBranchLen,
|
|
112
|
+
const x = getNodeX(node, showBranchLen, tipX, maxDepthToLeaf);
|
|
107
113
|
if (x === undefined) {
|
|
108
114
|
return;
|
|
109
115
|
}
|
|
@@ -111,7 +117,7 @@ export function renderNodeBubbles({ ctx, clickMap, offsetY, model, maxBranchLen,
|
|
|
111
117
|
const y = node.x;
|
|
112
118
|
const { id, name } = data;
|
|
113
119
|
if (node.height >= 1 && inYBlock(y, offsetY, by)) {
|
|
114
|
-
const isCollapsed =
|
|
120
|
+
const isCollapsed = collapsedSet.has(id);
|
|
115
121
|
ctx.strokeStyle = 'black';
|
|
116
122
|
ctx.fillStyle = isCollapsed ? 'black' : 'white';
|
|
117
123
|
ctx.beginPath();
|
|
@@ -134,7 +140,7 @@ export function renderNodeBubbles({ ctx, clickMap, offsetY, model, maxBranchLen,
|
|
|
134
140
|
}
|
|
135
141
|
});
|
|
136
142
|
}
|
|
137
|
-
export function renderTreeLabels({ theme, model, offsetY, ctx, clickMap,
|
|
143
|
+
export function renderTreeLabels({ theme, model, offsetY, ctx, clickMap, tipX, maxDepthToLeaf, blockSizeYOverride, }) {
|
|
138
144
|
const { fontSize, showBranchLenEffective: showBranchLen, treeMetadata, blockSize, labelsAlignRight, drawTree, treeAreaWidth, treeAreaWidthMinusMargin, marginLeft, noTree, labelWidthMap, collapsed, } = model;
|
|
139
145
|
// labels only exist for leaves, which are laid out top to bottom, so take the
|
|
140
146
|
// same slice the MSA renderer uses instead of walking every tip per block
|
|
@@ -165,7 +171,7 @@ export function renderTreeLabels({ theme, model, offsetY, ctx, clickMap, maxBran
|
|
|
165
171
|
const yp = y + fontSize / 4;
|
|
166
172
|
let xp = 0;
|
|
167
173
|
if (!noTree) {
|
|
168
|
-
xp = getNodeX(node, showBranchLen,
|
|
174
|
+
xp = getNodeX(node, showBranchLen, tipX, maxDepthToLeaf) ?? 0;
|
|
169
175
|
}
|
|
170
176
|
const width = labelWidthMap.get(name) ?? ctx.measureText(displayName).width;
|
|
171
177
|
ctx.fillStyle = theme.palette.text.primary;
|
|
@@ -220,14 +226,20 @@ export function renderTreeCanvas({ model, clickMap, ctx, offsetY, theme, highRes
|
|
|
220
226
|
setFontSize(ctx, fontSize);
|
|
221
227
|
// memoized on the model and shared across the tree/bubble/label passes (and
|
|
222
228
|
// across all tree blocks) rather than re-traversing the hierarchy in each
|
|
223
|
-
const { maxBranchLength
|
|
229
|
+
const { maxBranchLength, maxDepthToLeaf, showBranchLenEffective, treeWidth } = model;
|
|
230
|
+
// pixel x of the tips. A phylogram scales branch lengths so the longest
|
|
231
|
+
// root-to-tip path lands at maxBranchLength; a cladogram ignores lengths and
|
|
232
|
+
// spreads topological depth across the whole tree area instead. Reusing
|
|
233
|
+
// maxBranchLength for the cladogram would pin every node to x=0 for a tree
|
|
234
|
+
// with no branch lengths -- which is exactly what forces cladogram mode.
|
|
235
|
+
const tipX = showBranchLenEffective ? maxBranchLength : treeWidth;
|
|
224
236
|
if (!noTree && drawTree) {
|
|
225
237
|
renderTree({
|
|
226
238
|
ctx,
|
|
227
239
|
offsetY,
|
|
228
240
|
model,
|
|
229
241
|
theme,
|
|
230
|
-
|
|
242
|
+
tipX,
|
|
231
243
|
maxDepthToLeaf,
|
|
232
244
|
blockSizeYOverride,
|
|
233
245
|
});
|
|
@@ -237,7 +249,7 @@ export function renderTreeCanvas({ model, clickMap, ctx, offsetY, theme, highRes
|
|
|
237
249
|
offsetY,
|
|
238
250
|
model,
|
|
239
251
|
theme,
|
|
240
|
-
|
|
252
|
+
tipX,
|
|
241
253
|
maxDepthToLeaf,
|
|
242
254
|
blockSizeYOverride,
|
|
243
255
|
});
|
|
@@ -247,7 +259,7 @@ export function renderTreeCanvas({ model, clickMap, ctx, offsetY, theme, highRes
|
|
|
247
259
|
offsetY,
|
|
248
260
|
clickMap,
|
|
249
261
|
model,
|
|
250
|
-
|
|
262
|
+
tipX,
|
|
251
263
|
maxDepthToLeaf,
|
|
252
264
|
blockSizeYOverride,
|
|
253
265
|
});
|
|
@@ -260,7 +272,7 @@ export function renderTreeCanvas({ model, clickMap, ctx, offsetY, theme, highRes
|
|
|
260
272
|
model,
|
|
261
273
|
clickMap,
|
|
262
274
|
theme,
|
|
263
|
-
|
|
275
|
+
tipX,
|
|
264
276
|
maxDepthToLeaf,
|
|
265
277
|
blockSizeYOverride,
|
|
266
278
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderTreeCanvas.js","sourceRoot":"","sources":["../../../src/components/tree/renderTreeCanvas.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,WAAW,GACZ,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAQzD,MAAM,CAAC,MAAM,OAAO,GAAG,GAAG,CAAA;AAE1B,MAAM,YAAY,GAAG,CAAC,CAAA;AACtB,MAAM,MAAM,GAAG,GAAG,CAAA;AAClB,MAAM,CAAC,GAAG,MAAM,GAAG,CAAC,CAAA;AAEpB,8EAA8E;AAC9E,4EAA4E;AAC5E,SAAS,QAAQ,CAAC,CAAS,EAAE,OAAe,EAAE,EAAU;IACtD,OAAO,CAAC,GAAG,OAAO,GAAG,YAAY,IAAI,CAAC,GAAG,OAAO,GAAG,EAAE,GAAG,YAAY,CAAA;AACtE,CAAC;AAED,
|
|
1
|
+
{"version":3,"file":"renderTreeCanvas.js","sourceRoot":"","sources":["../../../src/components/tree/renderTreeCanvas.ts"],"names":[],"mappings":"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"}
|
package/dist/flatToTree.d.ts
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
interface FlatItem {
|
|
2
2
|
id: number;
|
|
3
3
|
parent?: number;
|
|
4
|
+
label?: string;
|
|
5
|
+
dist?: string;
|
|
4
6
|
}
|
|
5
7
|
interface TreeNode {
|
|
6
8
|
id: string;
|
|
7
9
|
name: string;
|
|
8
|
-
|
|
10
|
+
length?: number;
|
|
9
11
|
children: TreeNode[];
|
|
10
12
|
}
|
|
11
13
|
export declare function flatToTree(items: FlatItem[]): TreeNode;
|
package/dist/flatToTree.js
CHANGED
|
@@ -1,13 +1,20 @@
|
|
|
1
1
|
export function flatToTree(items) {
|
|
2
|
-
const nodeMap = new Map(items.map(item =>
|
|
3
|
-
item.
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
2
|
+
const nodeMap = new Map(items.map(item => {
|
|
3
|
+
const length = item.dist === undefined ? undefined : Number(item.dist);
|
|
4
|
+
return [
|
|
5
|
+
item.id,
|
|
6
|
+
{
|
|
7
|
+
id: `${item.id}`,
|
|
8
|
+
// the label is what NCBI's own tree viewer shows; falling back to the
|
|
9
|
+
// node id would render a tree of bare numbers
|
|
10
|
+
name: item.label || `${item.id}`,
|
|
11
|
+
...(length !== undefined && Number.isFinite(length)
|
|
12
|
+
? { length }
|
|
13
|
+
: {}),
|
|
14
|
+
children: [],
|
|
15
|
+
},
|
|
16
|
+
];
|
|
17
|
+
}));
|
|
11
18
|
let root;
|
|
12
19
|
for (const item of items) {
|
|
13
20
|
const node = nodeMap.get(item.id);
|
package/dist/flatToTree.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flatToTree.js","sourceRoot":"","sources":["../src/flatToTree.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"flatToTree.js","sourceRoot":"","sources":["../src/flatToTree.ts"],"names":[],"mappings":"AAgBA,MAAM,UAAU,UAAU,CAAC,KAAiB;IAC1C,MAAM,OAAO,GAAG,IAAI,GAAG,CACrB,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;QACf,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACtE,OAAO;YACL,IAAI,CAAC,EAAE;YACP;gBACE,EAAE,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE;gBAChB,sEAAsE;gBACtE,8CAA8C;gBAC9C,IAAI,EAAE,IAAI,CAAC,KAAK,IAAI,GAAG,IAAI,CAAC,EAAE,EAAE;gBAChC,GAAG,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;oBACjD,CAAC,CAAC,EAAE,MAAM,EAAE;oBACZ,CAAC,CAAC,EAAE,CAAC;gBACP,QAAQ,EAAE,EAAgB;aAC3B;SACF,CAAA;IACH,CAAC,CAAC,CACH,CAAA;IAED,IAAI,IAA0B,CAAA;IAC9B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAE,CAAA;QAClC,MAAM,MAAM,GACV,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;QAClE,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC5B,CAAC;aAAM,CAAC;YACN,IAAI,KAAK,IAAI,CAAA;QACf,CAAC;IACH,CAAC;IAED,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,2EAA2E;QAC3E,2EAA2E;QAC3E,qEAAqE;QACrE,MAAM,IAAI,KAAK,CACb,sGAAsG,CACvG,CAAA;IACH,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC"}
|
package/dist/hierarchy.d.ts
CHANGED
|
@@ -1,11 +1,16 @@
|
|
|
1
|
+
import { descendants, find, forEachDescendant, forEachLink, leaves, links, sort, sum } from '@gmod/newick';
|
|
1
2
|
import type { NodeWithIds } from './types.ts';
|
|
2
|
-
|
|
3
|
-
|
|
3
|
+
import type { HierarchyNode as CoreHierarchyNode } from '@gmod/newick';
|
|
4
|
+
/**
|
|
5
|
+
* A hierarchy node plus the fields this viewer hangs off it during layout.
|
|
6
|
+
*
|
|
7
|
+
* The traversals in `@gmod/newick` are generic over the node type rather than
|
|
8
|
+
* over its data, so they take and return this extended node rather than the base
|
|
9
|
+
* one, and no call site has to cast.
|
|
10
|
+
*/
|
|
11
|
+
export interface HierarchyNode<T = NodeWithIds> extends CoreHierarchyNode<T> {
|
|
4
12
|
children: HierarchyNode<T>[] | null;
|
|
5
13
|
parent: HierarchyNode<T> | null;
|
|
6
|
-
depth: number;
|
|
7
|
-
height: number;
|
|
8
|
-
value?: number;
|
|
9
14
|
x?: number;
|
|
10
15
|
y?: number;
|
|
11
16
|
len?: number;
|
|
@@ -14,19 +19,9 @@ export interface HierarchyNode<T = NodeWithIds> {
|
|
|
14
19
|
collapsedTipXNear?: number;
|
|
15
20
|
collapsedTipXFar?: number;
|
|
16
21
|
}
|
|
17
|
-
export
|
|
18
|
-
|
|
19
|
-
target: HierarchyNode<T>;
|
|
20
|
-
}
|
|
21
|
-
export declare function descendants<T>(node: HierarchyNode<T>): HierarchyNode<T>[];
|
|
22
|
+
export { descendants, find, forEachDescendant, forEachLink, leaves, links, sort, sum, };
|
|
23
|
+
export type { HierarchyLink } from '@gmod/newick';
|
|
22
24
|
export declare function hierarchy<T>(data: T, childrenAccessor: (d: T) => T[] | undefined): HierarchyNode<T>;
|
|
23
|
-
export declare function sum<T>(node: HierarchyNode<T>, valueFn: (d: T) => number): HierarchyNode<T>;
|
|
24
|
-
export declare function sort<T>(node: HierarchyNode<T>, compareFn: (a: HierarchyNode<T>, b: HierarchyNode<T>) => number): HierarchyNode<T>;
|
|
25
|
-
export declare function find<T>(node: HierarchyNode<T>, predicate: (n: HierarchyNode<T>) => boolean): HierarchyNode<T> | undefined;
|
|
26
|
-
export declare function leaves<T>(node: HierarchyNode<T>): HierarchyNode<T>[];
|
|
27
|
-
export declare function links<T>(node: HierarchyNode<T>): HierarchyLink<T>[];
|
|
28
|
-
export declare function forEachLink<T>(node: HierarchyNode<T>, cb: (source: HierarchyNode<T>, target: HierarchyNode<T>) => void): void;
|
|
29
|
-
export declare function forEachDescendant<T>(node: HierarchyNode<T>, cb: (n: HierarchyNode<T>) => void): void;
|
|
30
25
|
export declare function clusterLayout<T>(root: HierarchyNode<T>, sizeX: number, sizeY: number): void;
|
|
31
26
|
export declare function collapse<T>(node: HierarchyNode<T>): void;
|
|
32
27
|
export declare function collapsedSubtreeLengthExtent<T extends {
|