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.4-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 99a5d02e962815ba020573fc1c1b3a0319ad0a37625d08dec70d76c75c0e72b0 |
|
MD5 | 555bed754b6c4ca132aceeb5a40d6b1d |
|
BLAKE2b-256 | 4525bc90f79c1405cff8fe7d192b0d627c0af161146f4f1a829c27b57e08858d |