mirror of
https://github.com/metabarcoding/obitools4.git
synced 2026-04-30 12:00:39 +00:00
8c7017a99d
- Update obioptions.Version from "Release 4.4.29" to "/v/ Release v5" - Update version.txt from 4.29 → .30 (automated by Makefile)
1.5 KiB
1.5 KiB
obiphylo Package: Semantic Description
The obiphylo package provides a minimal yet expressive data structure and utilities for representing phylogenetic trees in Go.
Core Type: PhyloNode
- Represents a node (taxon or internal branch point) in a phylogeny.
- Fields:
Name: Optional label (e.g., species name, OTU ID).Children: A map of child nodes to branch lengths (evolutionary distances).Attributes: A flexible key-value store for metadata (e.g., bootstrap support, posterior probability).
Key Functionalities
- Tree Construction:
NewPhyloNode(): Instantiates an empty node.AddChild(child, distance): Appends a child with associated branch length (supports NaN for unlabeled branches).
- Metadata Access:
SetAttribute(key, value)/GetAttribute(key): Enables extensible node annotation.- Supports arbitrary types (via
any), ideal for dynamic metadata.
Output: Newick Format
- Recursive method
Newick(level int)generates a human-readable, standard phylogenetic tree string:- Properly indented for readability.
- Supports branch lengths (
:distance) on edges (skips ifNaN). - Terminates with semicolon (
;) at root level.
- Designed for interoperability (e.g., export to tools like RAxML, FigTree).
Design Notes
- Lightweight and dependency-free.
- Uses Go’s idiomatic maps for efficient child lookup (O(1) average).
- Recursive Newick generation ensures correct nesting and formatting.