A collection of my Automata / art coding hobbies. I have set it up such that relevant parameters are read from a parameters.py file.
I appreciate any constructive feedback or future ideas!
Uses the 'canvas' and 'walker' parameters to simulate restricted walkers on a canvas.
> python Automata walker
Uses the 'sierpinski' parameters to simulate a Sierpinski triangle.
> python Automata sierpinski
Uses the 'sandpile' parameters to simulate an Abelian sandpile.
> python Automata sandpile
raise NotImplementedError("These docs are still to be fleshed out!")
Uses the 'autocell' parameters to simulate cell based automata. Implemented for:
- 1D (x) evolution into 2nd (spatial) dimension (y), or
- 2D (x-y) evolution into 3rd (temporal) dimension (t).
python Automata autocell
- Preview in VSCode: Ctrl + K then V
- Markdown cheat sheet
- matplotlib color maps
- Online cosine gradient generator
- Used as
palette(x) = a + b * cos(2π(c * t + d))
- Used as
- Documentation: scipy.ndimage.gaussian_filter
from scipy.ndimage import gaussian_filter as gauss_smooth
DEPRECATED from Canvas for folding from 3x3 to 1x1 canvas (Canvas.foldCanvas()), more efficient at cost of 9x larger canvas
- Wikipedia: Abelian sandpile model
- Lang, M., & Shkolnikov, M. (2019). Harmonic dynamics of the abelian sandpile. Proceedings of the National Academy of Sciences, 116(8), 2821-2830.
- Creutz, M. (1991). Abelian sandpiles. Computers in physics, 5(2), 198-203.
- Make TODO list
- Automata
- define
python Automata help|-help|-h
to return help docs in the command line
- define
- Canvas
- Gaussian filtering for smoothing
- multiprocessing should be possible as walkers independent of one another
- I.E. N canvases parsing total_walkers / N walkers each
- Walker
- Find out if choice has more efficient function
- Add Walker vision implementation to allow directional preference
- I.E. Fix Walker.look() method, especially handling and 'type' of vis / self.vis
- I.E. vision: [int, int] | np.array([int, int]).astype(int)
- Sandpile
- Find out how large history should be (t-axis)
- I.E. dynamically calculate t if possible
- Sandpile.animate() save with PIL for proper .gif format
- Test Sandpile.show3D() for better plots
- Find out how large history should be (t-axis)
- Bezier
- Add Bezier.py to folder structure
- Implement Bezier() in the __main__.py file
- Add docs to README above
- AutoCell
- Add original Autocell.py to folder structure
- Implement AutoCell() in the __main__.py file
- Finish correcting typing in AutoCell.py
- I.E. Includes parsing parameters from dictionary
- Add docs to README above
- Add AutoCell References
- Cell1D show revamp
- Checkbox for black/white in show 2D
- Cell2D.animate() not called properly when run in Terminal
- Cell2D resize not working
- Have way to show age
- I.E. Pixel gets darker the older it is