Lenia
cax.cs.lenia.cs.Lenia
Bases: ComplexSystem
Lenia class.
Source code in src/cax/cs/lenia/cs.py
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 | |
__init__(spatial_dims, channel_size, *, R, T, state_scale=1.0, kernel_fn=gaussian_kernel_fn, growth_fn=exponential_growth_fn, rule_params)
Initialize Lenia.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
spatial_dims
|
tuple[int, ...]
|
Spatial dimensions (e.g., (64, 64) for 2D or (32, 32, 32) for 3D). |
required |
channel_size
|
int
|
Number of channels. |
required |
R
|
int
|
Space resolution defining the kernel radius. Larger values create wider neighborhoods and smoother patterns. |
required |
T
|
int
|
Time resolution controlling the temporal discretization. Higher values produce smoother temporal dynamics with smaller update steps. |
required |
state_scale
|
float
|
Scaling factor applied to state values. |
1.0
|
kernel_fn
|
Callable
|
Callable that generates convolution kernels. Takes rule parameters and returns kernel weights. |
gaussian_kernel_fn
|
growth_fn
|
Callable
|
Callable that maps neighborhood potential to growth values. Defines how cells respond to their local environment. |
exponential_growth_fn
|
rule_params
|
LeniaRuleParams
|
Instance of LeniaRuleParams containing kernel and growth parameters for each channel. |
required |
Source code in src/cax/cs/lenia/cs.py
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | |
render(state)
Render state to RGB image.
Converts the multi-channel Lenia state to an RGB visualization. Channels are mapped to color channels (Red, Green, Blue) for visualization. If there are more than 3 channels, only the first 3 are displayed. If there are fewer than 3 channels, the missing channels are filled with zeros.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
state
|
State
|
Array with shape (*spatial_dims, channel_size) representing the Lenia state, where each cell contains continuous values typically in [0, 1]. |
required |
Returns:
| Type | Description |
|---|---|
Array
|
RGB image with dtype uint8 and shape (*spatial_dims, 3), where state values are mapped to colors in the range [0, 255]. |
Source code in src/cax/cs/lenia/cs.py
82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 | |
__call__(state, input=None, *, num_steps=1, input_in_axis=None, sow=False)
Step the system for multiple time steps.
This method wraps _step inside a JAX scan for efficiency and JIT-compiles the loop.
If input is time-varying, set input_in_axis to the axis containing the time
dimension so that each step receives the corresponding slice of input.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
state
|
State
|
Current state. |
required |
input
|
Input | None
|
Optional input. |
None
|
num_steps
|
int
|
Number of steps. |
1
|
input_in_axis
|
int | None
|
Axis for input if provided for each step. |
None
|
sow
|
bool
|
Whether to sow intermediate values. |
False
|
Returns:
| Type | Description |
|---|---|
State
|
Final state after |
Source code in src/cax/core/cs.py
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 | |