Documentation Index
Fetch the complete documentation index at: https://demo.agenticlabs.com/llms.txt
Use this file to discover all available pages before exploring further.
High-level description
This code implements a numerical solver for the generating function of a branching process, assuming diffusive changes in fitness over time. It provides solutions for the lineage propagator, considering the non-sampling constraint.
Code Structure
The code defines a class survival_gen_func that encapsulates the logic for solving the generating function and lineage propagator. It uses numerical integration methods like integrate_rk4 (a 4th order Runge-Kutta implementation) and scipy.integrate.odeint. The class stores precomputed solutions in the phi_solutions dictionary for efficiency.
Symbols
survival_gen_func
Description
This class provides methods to solve for the generating function of a branching process and the lineage propagator, considering non-branching.
| Name | Type | Description |
|---|
| fitness_grid | numpy.ndarray, optional | Discretization grid for fitness values. If None, a default grid is used. |
Outputs
The class itself does not return any output. Its methods return the computed solutions.
Internal Logic
The class initializes with a fitness grid and precomputes values for numerical efficiency. It stores solutions in the phi_solutions dictionary. The main methods are:
integrate_phi: Solves the generating function equation for given parameters.
dphi: Computes the time derivative of the generating function.
integrate_prop_odeint: Integrates the lineage propagator using scipy.integrate.odeint.
integrate_prop: Integrates the lineage propagator using the custom integrate_rk4 method.
dprop_backward: Computes the time derivative of the propagator.
integrate_rk4
Description
This function implements a 4th order Runge-Kutta integration scheme with a fixed time step.
| Name | Type | Description |
|---|
| df | function | Function that returns the derivative of the system. |
| f0 | numpy.ndarray | Initial conditions for the integration. |
| T | numpy.ndarray | Time points at which to evaluate the solution. |
| dt | float | Time step for the integration. |
| args | tuple | Additional arguments to pass to the derivative function df. |
Outputs
| Name | Type | Description |
|---|
| sol | numpy.ndarray | Solution of the integration at the specified time points. |
non_negativity_cutoff
Description
A global variable defining the minimum allowed value for the solutions, used to avoid numerical issues with very small or negative values.
Error Handling
The code uses np.maximum to ensure non-negativity of the solutions, replacing values below non_negativity_cutoff with the cutoff value. It also includes checks for valid time ranges within the dprop_backward method and prints warning messages if necessary.
The code uses a custom integrate_rk4 implementation instead of scipy.integrate.odeint for the lineage propagator integration, claiming better performance for systems with different convergence criteria. The phi_solutions dictionary stores precomputed generating function solutions to avoid redundant computations.