crisprzip.matrix_expon module
Perform fast and parallel matrix exponentiation.
- crisprzip.matrix_expon.exponentiate_fast(matrix: ndarray, time: ndarray) ndarray
Fast method to calculate exp(M * t), via diagonalizing the matrix M. Uses Numba’s just-in-time compilation for performance optimization.
- Parameters:
matrix (numpy.ndarray, (N, N)) – The input matrix to exponentiate.
time (numpy.ndarray, (T,)) – A 1D array of time values at which to calculate the exponentiation.
- Returns:
exp_matrix – The resulting matrix exponentiation at each
time
step. Returns None if: - Matrix is singular - Matrix has complex eigenvalues - Overflow occurs in the exponential function - Resulting matrix contains negative terms.- Return type:
numpy.ndarray, (N, T, N)
- crisprzip.matrix_expon.exponentiate_fast_var_onrate(ref_matrix: ndarray, time: float, on_rates: ndarray) ndarray
Compute exp(M * t) for varying on-rates using diagonalization.
- Parameters:
ref_matrix (numpy.ndarray, (N, N)) – The reference transition rate matrix.
time (float) – The time at which the exponentiation is evaluated.
on_rates (numpy.ndarray, (K,)) – A 1D array of varying on-rates to update the reference matrix.
- Returns:
exp_matrix – The resulting matrix exponentiation for each
on_rates
value. Returns None if diagonalization fails or produces invalid results.- Return type:
numpy.ndarray, (N, K, N)
- crisprzip.matrix_expon.exponentiate_iterative(matrix: ndarray, time: ndarray) ndarray
Iteratively compute exp(M * t) using scipy.linalg.expm.
- Parameters:
matrix (numpy.ndarray, (N, N)) – The input matrix to exponentiate.
time (numpy.ndarray, (T,)) – A 1D array of time values at which to calculate the exponentiation.
- Returns:
exp_matrix – The resulting matrix exponentiation at each
time
step.- Return type:
numpy.ndarray, (N, T, N)
- crisprzip.matrix_expon.exponentiate_iterative_var_onrate(ref_matrix: ndarray, time: float, on_rates: ndarray) ndarray
Iteratively compute exp(M * t) for varying on-rates using scipy.linalg.expm.
- Parameters:
ref_matrix (numpy.ndarray, (N, N)) – The reference transition rate matrix.
time (float) – The time at which the exponentiation is evaluated.
on_rates (numpy.ndarray, (K,)) – A 1D array of varying on-rates to update the reference matrix.
- Returns:
exp_matrix – The resulting matrix exponentiation for each value in
on-rates
.- Return type:
numpy.ndarray, (N, K, N)
- crisprzip.matrix_expon.update_rate_matrix(ref_rate_matrix: ndarray, on_rate: float) ndarray
Update a reference rate matrix with a specific on-rate.
- Parameters:
ref_rate_matrix (numpy.ndarray, (N, N)) – The reference transition rate matrix.
on_rate (float) – The rate of transition to update in the matrix.
- Returns:
rate_matrix – A copy of the reference rate matrix with the
on_rates
value updated.- Return type:
numpy.ndarray, (N, N)