⬆️ version bump to v4.5

- Update obioptions.Version from "Release 4.4.29" to "/v/ Release v5"
- Update version.txt from 4.29 → .30
(automated by Makefile)
This commit is contained in:
Eric Coissac
2026-04-07 08:36:50 +02:00
parent 670edc1958
commit 8c7017a99d
392 changed files with 18875 additions and 141 deletions
+27
View File
@@ -0,0 +1,27 @@
# Semantic Description of `obiseq` Package
The `obiseq` package provides utilities for handling **IUPAC nucleotide ambiguity codes** in biological sequences.
## Core Components
- `_iupac`: A lookup table mapping lowercase ASCII letters (`a``z`) to numeric IUPAC nucleotide codes:
- `A=1`, `C=2`, `G=4`, `T/U=8` (standard bases)
- Ambiguous codes are bitwise OR combinations:
e.g., `R = A|G = 1+4=5`, `Y = C|T = 2+8=10`, etc.
- Invalid or non-nucleotide characters map to `0`.
## Key Functionality
### `SameIUPACNuc(a, b byte) bool`
Performs **case-insensitive comparison** of two nucleotide symbols using IUPAC ambiguity rules.
- Converts uppercase letters to lowercase via bitwise OR (`|= 32`).
- For valid nucleotides, checks if their IUPAC codes have **non-zero bitwise AND**:
- Returns `true` only if the symbols share at least one possible base.
*Example*: `'R' & 'A' → (5 & 1) = 1 > 0 ⇒ true`
`'Y' & 'G' → (10 & 4) = 0 ⇒ false`
- For non-IUPAC or invalid characters, falls back to exact equality (`a == b`).
## Use Case
Enables robust comparison of DNA/RNA sequences where ambiguity codes (e.g., `N`, `R`, `W`) are used—critical for alignment, variant calling, or primer design tools.