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 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, but only while
1025
- the panel would not otherwise fit — on a tall screen nothing is ever folded for
1026
- you. Anything that puts something into a folded section opens it, so jumping to
1027
- the search box (⌘F / Ctrl+F), revealing Search B, or a tool reporting its
1028
- result as search hits all unfold Search. A host with little room to give can
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 – M of total" — plus wheel-over-track
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