diff --git a/CHANGELOG.md b/CHANGELOG.md index c21c94d0a..213910c86 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,16 @@ +## Nextclade 3.9.1 + +### Fix: clade mismatch between placed node and parent node + +This version addresses an issue when sometimes clade (or clade-like attribute, such as lineage) of the placed query node might not always match the clade of its parent. + +The query node placement is adjusted during the [greedy tree building](https://docs.nextstrain.org/projects/nextclade/en/stable/user/algorithm/03-phylogenetic-placement.html#tree-building), and sometimes the branch needs to be split and a new auxiliary internal node to be inserted to accommodate the new node. Previously, Nextclade would copy the clade of this internal node from the attachment target node. However, this is not always correct and can lead to mismatch between clade of the query node and of the new internal node. + +In this version we added a voting mechanism, which calculates a [mode](https://en.wikipedia.org/wiki/Mode_(statistics)) of the clades involved: of the parent, target and query nodes. The same procedure is repeated for each clade-like attribute. After that, in some cases, branch labels also need to adjust their positions. + +This should not change the clade assignment for query samples, but only the clades of the inserted auxiliary internal nodes, to make sure that the tree is consistent. + + ## Nextclade 3.9.0 ### Nextclade CLI: Obtain CA certificates from platform trust store; add `NEXTCLADE_EXTRA_CA_CERTS` / `--extra-ca-certs` diff --git a/Cargo.lock b/Cargo.lock index 5492d2326..d8dcdbc8a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1721,7 +1721,7 @@ dependencies = [ [[package]] name = "nextclade" -version = "3.9.0" +version = "3.9.1" dependencies = [ "assert2", "atty", @@ -1784,7 +1784,7 @@ dependencies = [ [[package]] name = "nextclade-cli" -version = "3.9.0" +version = "3.9.1" dependencies = [ "assert2", "clap", @@ -1826,7 +1826,7 @@ dependencies = [ [[package]] name = "nextclade-web" -version = "3.9.0" +version = "3.9.1" dependencies = [ "assert2", "chrono", diff --git a/Cargo.toml b/Cargo.toml index 9100637f0..da87a98b7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -12,7 +12,7 @@ exclude = [ [workspace.package] name = "nextclade" -version = "3.9.0" +version = "3.9.1" description = "Alignment, mutation calling, phylogenetic placement, clade assignment and quality control checks for viral genetic sequences. Library module." repository = "https://github.com/nextstrain/nextclade" documentation = "https://docs.nextstrain.org/projects/nextclade/en/stable/" diff --git a/packages/nextclade-web/package.json b/packages/nextclade-web/package.json index 1840ef828..f62e0979d 100644 --- a/packages/nextclade-web/package.json +++ b/packages/nextclade-web/package.json @@ -1,6 +1,6 @@ { "name": "@nextstrain/nextclade-web", - "version": "3.9.0", + "version": "3.9.1", "description": "Clade assignment, mutation calling, and sequence quality checks", "homepage": "https://clades.nextstrain.org", "repository": {