Cellula
Description
Cellula aims to be a framework for building, running and studying cellular automata.
My main goal with Cellula is to study cellular automata, not only to run them, so don't expect fancy graphics.
Another goal is to provide a simple DSL, allowing non-programmers to use Cellula. Following is an example of Cellula DSL:
automaton "Test CA" do
dimensions 1
type :elementary
width 20
rule :wolfram_code_110
end
study "Test CA" do
method :random
generations 4
end
Save the previous example in a file named my_automaton.rb
and
launch it with:
cellula path/to/my_automaton.rb
Install
gem install cellula
Usage
This is a work in progress. More documentation is coming…
automaton specifications
- dimensions Number of dimensions of the grid. Currently Cellula supports only 1D grids.
- type Type of the automaton. Currently only :elementary (one-dimensional, 2 possible states per cell, neighbors are the immediate neighbors' cells.
- width Width of the grid.
- rule Currently only Wolfram code.
study specifications
- method The study's method. Could be :random or :single. (View doc/study.rb for more details)
- generations Number of generations to process.
Dependencies
- ruby >= 2.0.0
Contributing
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request
There is many other ways to contibute to Cellula
- Report any bugs
- Give me ideas
- Correct my poor english syntax
- Blog about Cellula
- Tell Cellula to your friends and colleagues
License
Apache v2 License (See LICENSE file).
Questions and/or Comments
Feel free to email Xavier Nayrac with any questions, or contact me on twitter.