fasta_lake.blosum#
fasta_lake.blosum
#
BLOSUM-guided amino acid substitution scoring.
BLOSUM95 is optimized for closely related sequences (>95% identity), appropriate for single amino acid variant (SAV) discovery within a species.
For de novo error correction, we also support: - BLOSUM62: general-purpose, good for cross-species comparisons - De novo error matrix: empirical substitution rates from de novo prediction errors (mass-equivalent substitutions, terminal errors, I/L confusion)
The de novo error matrix captures what de novo sequencing engines actually get wrong — which is different from evolutionary substitution patterns. Common de novo errors: - I/L confusion (isobaric, 100% confusion rate) - N/D confusion (deamidation, +0.98 Da) - Q/E confusion (deamidation, +0.98 Da) - K/Q confusion (near-isobaric, 0.036 Da difference) - Adjacent AA swaps (mass-preserving) - F/oxidized-M (near-isobaric)
Reference: - Henikoff & Henikoff (1992) BLOSUM matrices - Miura et al. (2025) ICS-guided refinement - Lebedev, Treit, Mann (2026) de novo error taxonomy
score
#
Substitution score for aa1 -> aa2.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
matrix
|
str
|
|
'blosum95'
|
Source code in fasta_lake/blosum.py
substitutions
#
Possible substitutions for an amino acid, sorted by score descending.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
aa
|
str
|
Source amino acid. |
required |
min_score
|
int
|
Minimum score to include. |
0
|
matrix
|
str
|
|
'blosum95'
|
Returns:
| Type | Description |
|---|---|
list of (target_aa, score)
|
|
Source code in fasta_lake/blosum.py
generate_variants
#
generate_variants(sequence: str, position: int, min_score: int = -1, matrix: str = 'blosum95', max_per_position: int = 3) -> List[Tuple[str, str, int]]
Generate single-AA variants at a position.
Returns:
| Type | Description |
|---|---|
list of (variant_sequence, mutation_notation, score)
|
|
Source code in fasta_lake/blosum.py
generate_all_variants
#
generate_all_variants(sequence: str, min_score: int = -1, matrix: str = 'blosum95', max_per_position: int = 3) -> List[Tuple[str, str, int]]
Generate all single-substitution variants for a sequence.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
matrix
|
str
|
|
'blosum95'
|