Elementary Cellular Automata
cax.cs.elementary.cs.Elementary
Bases: ComplexSystem
Elementary Cellular Automata class.
A one-dimensional cellular automaton where each cell evolves based on its current state and the states of its two immediate neighbors according to a Wolfram rule. The system supports all 256 possible rules and can simulate classic patterns such as Rule 30, Rule 110, and Rule 184.
Source code in src/cax/cs/elementary/cs.py
20 21 22 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 | |
__init__(*, wolfram_code, rngs)
Initialize Elementary Cellular Automaton.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
wolfram_code
|
Array
|
Array of 8 binary values defining the Wolfram rule. Each element corresponds to the output for one of the 8 possible three-cell neighborhood configurations (111, 110, 101, 100, 011, 010, 001, 000). |
required |
rngs
|
Rngs
|
rng key. |
required |
Source code in src/cax/cs/elementary/cs.py
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | |
wolfram_code_from_rule_number(rule_number)
classmethod
Create Wolfram code array from a rule number.
Converts a Wolfram rule number (0-255) to its binary representation as an array of 8 floats. For example, rule 30 becomes [0, 0, 0, 1, 1, 1, 1, 0].
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
rule_number
|
int
|
Integer between 0 and 255 representing the Wolfram rule. |
required |
Returns:
| Type | Description |
|---|---|
Array
|
Array of shape (8,) containing binary values (0.0 or 1.0) representing the rule's lookup table. |
Source code in src/cax/cs/elementary/cs.py
55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | |
render(state)
Render state to RGB image.
Converts the one-dimensional cellular automaton state to an RGB visualization by replicating the single-channel state values across all three color channels, resulting in a grayscale image.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
state
|
State
|
Array with shape (num_steps, width, 1) representing the cellular automaton state, where each cell contains a value in [0, 1]. |
required |
Returns:
| Type | Description |
|---|---|
Array
|
RGB image with dtype uint8 and shape (num_steps, width, 3), where cell values are mapped to grayscale colors in the range [0, 255]. |
Source code in src/cax/cs/elementary/cs.py
73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 | |
__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 | |