Multidimensional cellular automata in Python.
Project description
Awesome cellular automata library created by Borja Esteban.
Install it from PyPI
$ pip install ndautomata
Usage
This package is designed in order to create your own automata definitions based on 2 attributes:
- neighbours: List with relative indexes to cell neighbours.
- states: Number possible cell states.
from ndautomata import BaseAutomaton, neighbours
class Automaton(BaseAutomaton):
neighbours = neighbours.regular(ndim=1, r=1)
states = 2
Note the automata dimensions are defined with
neighbours.ndim
.
After you have defined your automaton, you can instantiate automata passing the initial configuration and the rule to the constructor function. Use the module initializers
, based on numpy to generate the required arrays passing the number of states and size.
from ndautomata import initializers
rule = initializers.random(states=2, size=[2, 2, 2])
ic = initializers.center(states=2, size=[200])
ca = Automaton(ic, rule)
Note the shape of the rule must always be
[states] * neighbours.size
.
Plot the cellular automaton using matplotlib or your favorite tool.
import matplotlib.pyplot as plt
plt.rcParams["image.cmap"] = "binary"
plt.matshow([next(ca) for _ in range(100)])
plt.show()
See examples for more detailed use cases and examples on how to generate some plots.
Development
Fork the repository, pick one of the issues at the issues and create a Pull request.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for ndautomata-1.0.5-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0091222b0608bb693b019f5b5a6d9cd60ef2caf3627c11d9eab241a2737f3b9c |
|
MD5 | 54c5b56f9e9a76df63e24aef50fd4963 |
|
BLAKE2b-256 | 0ee3b2395bdd4f17f6fb65b7c62f42371b5d8fe79c3bac46b8e761b9d362cf09 |