Source code for sequince.exceptions

"""Public exceptions raised by Sequince."""


[docs] class DegenerateWeightsError(RuntimeError): """Raised when particle log weights have no finite normalizer.""" def __init__(self, log_normalizer: float) -> None: self.log_normalizer = log_normalizer if log_normalizer == float("-inf"): reason = "all particles have zero weight" elif log_normalizer == float("inf"): reason = "one or more particle weights are positive infinity" else: reason = "the particle weights contain NaN or are undefined" super().__init__( "Particle log weights cannot be normalized because " f"{reason} (log normalizer={log_normalizer!r})." )