use thiserror::Error;
#[derive(Error, Debug)]
pub enum NewickError {
#[error("invalid character at {idx}")]
InvalidCharacter {
idx: usize,
},
}
#[derive(Error, Debug)]
pub enum NexusError {
#[error("expected \"#NEXUS\" at the start of the input")]
InvalidHeader,
}
#[derive(Error, Debug)]
pub enum AsrError {
#[error("missing or non-positive branch length")]
MissingBranchLength,
#[error("alphabet mismatch: {0}")]
AlphabetMismatch(String),
#[error("invalid alignment: {0}")]
InvalidAlignment(String),
#[error("eigendecomposition failed to converge")]
EigendecompFailure,
#[error("numerical instability encountered during ASR scaling")]
NumericalInstability,
}