Name | pyscail JSON |
Version |
0.1.0
JSON |
| download |
home_page | None |
Summary | A package that helps build cellular automata |
upload_time | 2024-05-06 06:15:19 |
maintainer | None |
docs_url | None |
author | None |
requires_python | >=3.11 |
license | None |
keywords |
cellular automata
game of life
|
VCS |
|
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
# pyscail
**pyscail** is a package for creating cellular automata. It allows you to specify the
allowed states, and the transitions between them, and does everything else for you
![rock-paper-scissors gif](media/rps-gif.gif)
## Installation
You need to have python (>= 3.11) installed on your system. Once you have that,
you can:
```bash
pip install pyscail
```
(or `pip3`, depending on your system)
The project's link on PyPI: https://pypi.org/project/pyscail/
## Usage
See this video for a demonstration of how to use the library:
https://youtu.be/BjPNs30i2TQ
A brief summary - provide a class with a `next` method and a
`display` method. Provide a initialization function that returns
an instance of your class given some coordinates. Provide a settings
object that you can make using method provided by the library.
Optionally, provide a function that will be called once each generation.
Then, simply call `scail.run` to run the ruleset.
![Belusov-Zhabotinsky gif](media/bz-gif.gif)
## Demos
See the following video for a demonstration on how to write code using this
library.
See the demos folder for a lot more (and more varied) examples on how to use the
library. Written demo automata include:
- Conway's game of life
- The modified game of life with extinction
- Langton's ant
![Langton gif](media/langton-gif.gif)
- Wireworld
- Rock-Paper-Scissors automata
- Belusov-Zhabotinsky reaction (https://www.hermetic.ch/pca/bz.htm)
- the Mandelbrot and Julia sets
- A simulation of grain growth in metals (https://www.sciencedirect.com/science/article/pii/1359646296000553)
- And lastly, this demo of many of the above rulesets combined into one
ruleset and run all together, then displayed as a weighted average
![everything gif](media/everything-gif.gif)
## Other
### Kernel Caching
Kernel caching is an option you can enable through `kernels.initialize_kernel_caching`
If this is set, then instead of being calculated every frame, the neighborhoods
of a given point will be calculated once then cached. This will probably
not cause any issues unless you change your neighborhood strategy mid-simulation.
Still, I didn't notice a significant speedup upon implementing caching, so for now
it is just an option that is turned off by default.
Raw data
{
"_id": null,
"home_page": null,
"name": "pyscail",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.11",
"maintainer_email": null,
"keywords": "cellular automata, game of life",
"author": null,
"author_email": "Ribhu Hooja <ribhu.hooja.27@dartmouth.edu>",
"download_url": "https://files.pythonhosted.org/packages/f8/10/b068ececb1475b1ce1c3525b1d4aa47051b9b5ae3fb26402fbdacd4b60b2/pyscail-0.1.0.tar.gz",
"platform": null,
"description": "# pyscail\n\n**pyscail** is a package for creating cellular automata. It allows you to specify the\nallowed states, and the transitions between them, and does everything else for you\n\n![rock-paper-scissors gif](media/rps-gif.gif)\n\n## Installation\n\nYou need to have python (>= 3.11) installed on your system. Once you have that,\nyou can:\n\n```bash\npip install pyscail\n```\n\n(or `pip3`, depending on your system)\n\nThe project's link on PyPI: https://pypi.org/project/pyscail/\n\n## Usage\nSee this video for a demonstration of how to use the library: \nhttps://youtu.be/BjPNs30i2TQ\n\nA brief summary - provide a class with a `next` method and a \n`display` method. Provide a initialization function that returns\nan instance of your class given some coordinates. Provide a settings\nobject that you can make using method provided by the library.\nOptionally, provide a function that will be called once each generation.\n\nThen, simply call `scail.run` to run the ruleset.\n\n\n![Belusov-Zhabotinsky gif](media/bz-gif.gif)\n\n## Demos\nSee the following video for a demonstration on how to write code using this\nlibrary.\n\nSee the demos folder for a lot more (and more varied) examples on how to use the \nlibrary. Written demo automata include:\n\n- Conway's game of life\n- The modified game of life with extinction\n- Langton's ant \n\n![Langton gif](media/langton-gif.gif)\n- Wireworld\n- Rock-Paper-Scissors automata \n- Belusov-Zhabotinsky reaction (https://www.hermetic.ch/pca/bz.htm)\n- the Mandelbrot and Julia sets\n- A simulation of grain growth in metals (https://www.sciencedirect.com/science/article/pii/1359646296000553)\n- And lastly, this demo of many of the above rulesets combined into one \nruleset and run all together, then displayed as a weighted average\n\n![everything gif](media/everything-gif.gif)\n\n## Other\n\n### Kernel Caching\nKernel caching is an option you can enable through `kernels.initialize_kernel_caching`\nIf this is set, then instead of being calculated every frame, the neighborhoods\nof a given point will be calculated once then cached. This will probably\nnot cause any issues unless you change your neighborhood strategy mid-simulation.\n\nStill, I didn't notice a significant speedup upon implementing caching, so for now\nit is just an option that is turned off by default.\n",
"bugtrack_url": null,
"license": null,
"summary": "A package that helps build cellular automata",
"version": "0.1.0",
"project_urls": {
"Homepage": "https://github.com/ribhuhooja/pyscail",
"Issues": "https://github.com/ribhuhooja/pyscail/issues"
},
"split_keywords": [
"cellular automata",
" game of life"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "a17c4c08aeee478afb1d7f4f2e0cf3b2e5b9c78b3316bea1230baddd7e95ad73",
"md5": "24750778a7bfa7712c5fd3cc958c6a74",
"sha256": "3011e70ea79d83af63ef932f7d0ab344736e8e7bed0161b9762f565be0ec8452"
},
"downloads": -1,
"filename": "pyscail-0.1.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "24750778a7bfa7712c5fd3cc958c6a74",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.11",
"size": 6885,
"upload_time": "2024-05-06T06:15:12",
"upload_time_iso_8601": "2024-05-06T06:15:12.914947Z",
"url": "https://files.pythonhosted.org/packages/a1/7c/4c08aeee478afb1d7f4f2e0cf3b2e5b9c78b3316bea1230baddd7e95ad73/pyscail-0.1.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "f810b068ececb1475b1ce1c3525b1d4aa47051b9b5ae3fb26402fbdacd4b60b2",
"md5": "c572fda11e253ddd0a3dd80c550a5511",
"sha256": "16e97e032f9fdacfb95b19ee430355338a35e56dab7d9bea18af3893c99ee4ed"
},
"downloads": -1,
"filename": "pyscail-0.1.0.tar.gz",
"has_sig": false,
"md5_digest": "c572fda11e253ddd0a3dd80c550a5511",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.11",
"size": 96190761,
"upload_time": "2024-05-06T06:15:19",
"upload_time_iso_8601": "2024-05-06T06:15:19.065479Z",
"url": "https://files.pythonhosted.org/packages/f8/10/b068ececb1475b1ce1c3525b1d4aa47051b9b5ae3fb26402fbdacd4b60b2/pyscail-0.1.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-05-06 06:15:19",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "ribhuhooja",
"github_project": "pyscail",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "pyscail"
}