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
obidist Package: Efficient Symmetric Distance/Similarity Matrix Management
The *DistMatrix type provides a memory-efficient, symmetric matrix implementation for distance or similarity data.
- Storage Strategy: Only the upper triangle (i < j) is stored, reducing memory usage from O(n²) to n(n−1)/2.
- Diagonal Handling: Diagonal entries are fixed (0.0 for distances, 1.0 for similarities); assignments to diagonal indices are silently ignored.
- Symmetry Guarantee:
Get(i, j)andSet(i, j, v)automatically handle both (i,j) and (j,i), ensuring consistency.
Constructors
| Function | Description |
|---|---|
NewDistMatrix(n) / WithLabels(labels) |
Creates n×n distance matrix (diag = 0). |
NewSimilarityMatrix(n) / WithLabels(labels) |
Creates n×n similarity matrix (diag = 1). |
Core Operations
Get(i, j)/Set(i, j, v): Access/update symmetric entries.Size() int,GetLabel(i)/SetLabel(i, label): Query/mutate element labels.Labels() []string,GetRow(i)/GetColumn(j): Retrieve full rows/columns (as copies).
Analysis Helpers
MinDistance(),MaxDistance()→(value, i, j)of the extremal off-diagonal entry.Copy() *DistMatrix: Deep copy for immutability-safe operations.ToFullMatrix()→[][]float64: Converts to dense representation (use sparingly).
Designed for clustering, phylogenetics, or any domain requiring fast symmetric matrix access with minimal footprint.