archaeopteryx 3.12.0 → 3.14.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/README.md +72 -7
- package/archaeopteryx.js +343 -54
- package/forester.js +593 -82
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -316,6 +316,25 @@ describe the MAD rooting only. A shared view remembers a MAD root. A phyloXML
|
|
|
316
316
|
download keeps them as `<confidence type="MAD">`, as the desktop writes them;
|
|
317
317
|
a Newick or Nexus download never puts one where a support value goes.
|
|
318
318
|
|
|
319
|
+
A tip is written under its **name**; where it has none, under its taxonomy
|
|
320
|
+
(code, then scientific, then common name), then its sequence's name, symbol or
|
|
321
|
+
gene name, then its sequence **accession**, and only if it has none of those
|
|
322
|
+
under a `node<N>` placeholder numbering it by position among the tips. Each
|
|
323
|
+
step is tried in turn, so a taxonomy element that is present but empty does
|
|
324
|
+
not stop the search. An unlabeled *internal* node stays unlabeled — a
|
|
325
|
+
placeholder there would invent a name for an ancestor. Newick and Nexus use
|
|
326
|
+
the one chain, so a tree saved in both formats names its tips identically, and
|
|
327
|
+
it is the desktop Archaeopteryx's chain, compared byte for byte.
|
|
328
|
+
|
|
329
|
+
Newick and Nexus have **one** support slot per branch and no place to name
|
|
330
|
+
what kind of support it is, so a branch carrying several confidences is
|
|
331
|
+
written with the first that is not a MAD value, exactly as the desktop writes
|
|
332
|
+
it, and a `bootstrap` read back from such a file is typed `unknown`. phyloXML
|
|
333
|
+
keeps every one of them, typed. Everything else survives a trip through
|
|
334
|
+
either format unchanged — names, branch lengths (including zero-length and
|
|
335
|
+
negative branches) and aligned sequences — in both directions, which the test
|
|
336
|
+
suite pins as two standing round trips.
|
|
337
|
+
|
|
319
338
|
1. Tria, F.D.K., Landan, G., Dagan, T. (2017). Phylogenetic rooting using
|
|
320
339
|
minimal ancestor deviation. *Nature Ecology & Evolution*, 1, 0193.
|
|
321
340
|
<https://www.nature.com/articles/s41559-017-0193>
|
|
@@ -555,7 +574,19 @@ column blank. Read `n` and judge.
|
|
|
555
574
|
Alignments arrive with the tree: as phyloXML `<mol_seq is_aligned="true">`
|
|
556
575
|
elements, or in a **Nexus** file whose characters matrix accompanies its tree.
|
|
557
576
|
The **Nexus** entry in the Download menu writes the current tree *and* its
|
|
558
|
-
alignment back into one Nexus file (Taxa, Characters and Trees blocks)
|
|
577
|
+
alignment back into one Nexus file (Taxa, Characters and Trees blocks), in the
|
|
578
|
+
same bytes the desktop Archaeopteryx writes: a row per taxon rather than per
|
|
579
|
+
sequence, so a tip carrying no sequence gets a row of the missing symbol `?`
|
|
580
|
+
and the matrix still covers every taxon the file declares. Reading it back,
|
|
581
|
+
such a row is absence of data and not a sequence of question marks. Residues
|
|
582
|
+
from a Nexus matrix are normalised as the desktop normalises them — raised to
|
|
583
|
+
upper case, `.` read as a gap, and anything outside the declared alphabet read
|
|
584
|
+
as the unspecified residue, `X` for protein and `N` for nucleotides, so the
|
|
585
|
+
missing symbol `?` arrives as `X` or `N`. A phyloXML `<mol_seq>` is kept
|
|
586
|
+
exactly as written, by both programs. Sequences
|
|
587
|
+
of *unequal* length are not an alignment and cannot form a character matrix,
|
|
588
|
+
so they are not written at all — the file says so in a bracketed comment
|
|
589
|
+
rather than padding them into an alignment that does not exist.
|
|
559
590
|
|
|
560
591
|
## Heat maps
|
|
561
592
|
|
|
@@ -1021,11 +1052,45 @@ plus Search, and folds the ones that are adjustments to make later: Zoom,
|
|
|
1021
1052
|
Sizes and the domain controls. Whatever you open or close is then remembered, for the
|
|
1022
1053
|
page and across reloads, so a panel you have arranged stays arranged, even
|
|
1023
1054
|
when you switch to another tree. In a short window it also keeps itself to one
|
|
1024
|
-
screen: opening a section folds the one you opened longest ago,
|
|
1025
|
-
the
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
|
-
|
|
1055
|
+
screen: opening a section folds the one you opened longest ago, and dragging
|
|
1056
|
+
the window (or the element it sits in) shorter does the same — but only while
|
|
1057
|
+
the panel would not otherwise fit, never past the last section left open, and
|
|
1058
|
+
never at all on a tall screen. Growing the window back leaves the folds where
|
|
1059
|
+
they are: what is open is your choice, and only running out of room overrules
|
|
1060
|
+
it. Anything that puts something into a folded section opens it, so jumping to
|
|
1061
|
+
the search box (⌘F / Ctrl+F) or a tool reporting its result as search hits
|
|
1062
|
+
unfolds Search. The **ⓘ** button in the panel header (or ⌘I / Ctrl+I) opens **Tree
|
|
1063
|
+
properties**, modelled on the desktop Archaeopteryx's *View › Tree
|
|
1064
|
+
Properties* and read-only:
|
|
1065
|
+
|
|
1066
|
+
* **Tree** — name, description, identifier, type, branch-length unit,
|
|
1067
|
+
rootedness and rerootability (each shown only where the file actually says
|
|
1068
|
+
so), and "tree 2 of 3" when the file held several.
|
|
1069
|
+
* **Structure** — tips, internal nodes, total nodes, branches, whether the
|
|
1070
|
+
tree is fully binary or how many polytomies it has and the widest of them,
|
|
1071
|
+
depth from root to deepest tip, the longest tip label, and how many internal
|
|
1072
|
+
nodes are named.
|
|
1073
|
+
* **Branch lengths** — how many branches carry one, then **minimum, median,
|
|
1074
|
+
maximum and mean**, the sum as total tree length, the height from root to
|
|
1075
|
+
farthest tip, any zero-length or negative branches, and whether the tree is
|
|
1076
|
+
ultrametric.
|
|
1077
|
+
* **Support** — the same n / minimum / median / maximum / mean, **one section
|
|
1078
|
+
per kind**. A bootstrap and a posterior on the same branch are not on one
|
|
1079
|
+
scale, so they are never pooled; MAD values are not support and are counted
|
|
1080
|
+
with the annotations instead.
|
|
1081
|
+
* **The tree carries** — taxonomies (and how many are distinct), taxonomy
|
|
1082
|
+
identifiers, sequences, molecular sequences with the alignment width, domain
|
|
1083
|
+
architectures, dates, distributions, events, branch colours, and **every
|
|
1084
|
+
phyloXML property `ref` with the number of nodes carrying it** — each as
|
|
1085
|
+
"n of m tips" or "n of m nodes".
|
|
1086
|
+
* **Time** — geologic ages or calendar years, dated nodes, the oldest node or
|
|
1087
|
+
most recent tip, and whether there are confidence intervals.
|
|
1088
|
+
|
|
1089
|
+
It describes what is on screen, so inside a subtree it describes the subtree
|
|
1090
|
+
and says so, and it is recomputed each time it opens rather than cached (24 ms
|
|
1091
|
+
on the 13,246-tip demo). There is no histogram.
|
|
1092
|
+
|
|
1093
|
+
A host with little room to give can
|
|
1029
1094
|
also start the whole panel tighter and narrower with
|
|
1030
1095
|
[`panelDensity: 'compact'`](#configuration), or collapsed to its header bar
|
|
1031
1096
|
with `collapseControlPanel`.
|
|
@@ -1733,7 +1798,7 @@ readout (`forester.msaResidueInfo`, `msaUngappedPosition`) names the residue
|
|
|
1733
1798
|
|
|
1734
1799
|
Navigation: a lazily-created bar fixed at the viewport bottom — first / page
|
|
1735
1800
|
back / slider / page forward / last, a jump-to-column box (1-based, matching
|
|
1736
|
-
the hover readout) and a live "column N
|
|
1801
|
+
the hover readout) and a live "column N M of total" — plus wheel-over-track
|
|
1737
1802
|
at a tenth of a screen per notch. Every route lands in one `msaScrollTo()`,
|
|
1738
1803
|
which clamps and redraws; the tree never moves. A faint dashed guide runs
|
|
1739
1804
|
from each tip's label (or its node, when labels are hidden) across to that
|