{ "info": { "author": "Lester James V. Miranda", "author_email": "ljvmiranda@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "Intended Audience :: Education", "Intended Audience :: Science/Research", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Topic :: Scientific/Engineering", "Topic :: Scientific/Engineering :: Artificial Intelligence", "Topic :: Scientific/Engineering :: Artificial Life", "Topic :: Scientific/Engineering :: Mathematics", "Topic :: Software Development :: Libraries :: Python Modules", "Typing :: Typed" ], "description": "

\n \n

\n\n

\n \n \n \n \n \n

\n\n\n\nA Python library for Conway's Game of Life\n\nThis framework allows you to create and simulate various artificial lifeforms\nand cellular automata easily: simply define your board, add your lifeforms,\nand execute the `run` command! It also provides a myriad of pre-made\nlifeforms while allowing you to create your own.\n\n**Why name it Seagull?** Conway's Game of Life is quite a mouthful, so I just refer to\nits acronym, CGoL. The word \"seagull\" is just a pun of that.\n\nSimulate your first lifeforms in few lines of code:\n\n```python\nimport seagull as sg\nfrom seagull.lifeforms import Pulsar\n\n# Initialize board\nboard = sg.Board(size=(19,60)) \n\n# Add three Pulsar lifeforms in various locations\nboard.add(Pulsar(), loc=(1,1))\nboard.add(Pulsar(), loc=(1,22))\nboard.add(Pulsar(), loc=(1,42))\n\n# Simulate board\nsim = sg.Simulator(board) \nsim.run(sg.rules.conway_classic, iters=1000)\n```\n\nOptionally, you can animate the simulation by running `sim.animate()`:\n\n

\n \n

\n\nAside from `Pulsar`, we have a [nice collection of\nlifeforms](https://pyseagull.readthedocs.io/en/latest/api/seagull.lifeforms.html)\nfor you to choose from!\n\n## Installation\n\nTo install Seagull, run this command in your terminal:\n\n```shell\npip install pyseagull\n```\n\nThis is the preferred method to install Seagull, as it will always install\nthe most recent stable release.\n\nIn case you want to install the bleeding-edge version, clone this repo:\n\n```shell\ngit clone https://github.com/ljvmiranda921/seagull.git\n```\n\nand then run\n\n```shell\ncd seagull\npython setup.py install\n```\n\n## Usage\n\nThere are three main components for an artificial life simulation:\n\n* The `Board` or the environment in which the lifeforms will move around\n* The `Lifeform` that will interact with the environment, and \n* The `rules` that dictate if a particular cell will survive or not\n\nIn Seagull, you simply define your `Board`, add your `Lifeform`/s, and run the\n`Simulator` given a `rule`. You can add multiple lifeforms as you want:\n\n```python\nimport seagull as sg\nfrom seagull import lifeforms as lf\n\nboard = sg.Board(size=(30,30))\nboard.add(lf.Blinker(length=3), loc=(4,4))\nboard.add(lf.Glider(), loc=(10,4))\nboard.add(lf.Glider(), loc=(15,4))\nboard.add(lf.Pulsar(), loc=(5,12))\nboard.view() # View the current state of the board\n```\n\nThen you can simply run the simulation, and animate it when needed:\n\n```python\nsim = sg.Simulator(board)\nhist = sim.run(sg.rules.conway_classic, iters=1000) # Save simulation history\nsim.animate()\n```\n\n### Adding custom lifeforms\n\nYou can manually create your lifeforms by using the `Custom` class:\n\n```python\nimport seagull as sg\nfrom seagull.lifeforms import Custom\n\nboard = sg.Board(size=(30,30))\nboard.add(Custom([[0,1,1,0], [0,0,1,1]]), loc=(0,0))\n```\n\n### Obtaining simulation statistics and history \n\nBy default, the simulation statistics will always be returned after calling the\n`run()` method. In addition, you can also obtain the history by calling the\n`get_history()` method.\n\n```python\n# The run() command returns the run statistics\nstats = sim.run(sg.rules.conway_classic, iters=1000)\n# You can also get it using get_history()\nhist = sim.get_history()\n```\n\n## Examples\n\nYou can find more examples in the\n[documentation](https://pyseagull.readthedocs.io/en/latest/examples.html)\n\n## Contributing\n\nThis project is open for contributors! Contibutions can come in the form of\nfeature requests, bug fixes, documentation, tutorials and the like! We highly\nrecommend to file an Issue first before submitting a [Pull\nRequest](https://help.github.com/en/articles/creating-a-pull-request).\n\nSimply fork this repository and make a Pull Request! We'd definitely\nappreciate:\n\n* Implementation of new features\n* Bug Reports\n* Documentation\n* Testing\n\n\n## License\n\nMIT License (c) 2019, Lester James V. Miranda\n\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/ljvmiranda921/seagull", "keywords": "conway game of lifemathematics,cellular automata", "license": "MIT license", "maintainer": "", "maintainer_email": "", "name": "pyseagull", "package_url": "https://pypi.org/project/pyseagull/", "platform": "", "project_url": "https://pypi.org/project/pyseagull/", "project_urls": { "Homepage": "https://github.com/ljvmiranda921/seagull" }, "release_url": "https://pypi.org/project/pyseagull/1.0.0b1/", "requires_dist": [ "scipy", "numpy", "matplotlib", "loguru" ], "requires_python": "", "summary": "Python library for simulating Conway's Game of Life", "version": "1.0.0b1" }, "last_serial": 5261639, "releases": { "1.0.0a1": [ { "comment_text": "", "digests": { "md5": "a537efec7476ca244a90dd8d86e57787", "sha256": "1a53db19a9558f73bec03b4658ecc75c0590d595882dc0482d2ab6d35be4b794" }, "downloads": -1, "filename": "pyseagull-1.0.0a1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "a537efec7476ca244a90dd8d86e57787", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 3444, "upload_time": "2019-05-03T00:11:48", "url": "https://files.pythonhosted.org/packages/bd/0a/27b2b6b81e411ffcaf92ea4dda8e264ed520715c76b7760979ab6707fdbc/pyseagull-1.0.0a1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c4140c0b1f6cf696d46305559daf647c", "sha256": "cdb098f83a72c6b7e3335f45ae7a79dda952cced8c76ada89f88cc455f8ccd3a" }, "downloads": -1, "filename": "pyseagull-1.0.0a1.tar.gz", "has_sig": false, "md5_digest": "c4140c0b1f6cf696d46305559daf647c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3609, "upload_time": "2019-05-03T00:11:50", "url": "https://files.pythonhosted.org/packages/3f/45/0658acea2a6ffcf8ae0736ed19001283594bf4757e5dc2a2a5fcb070efef/pyseagull-1.0.0a1.tar.gz" } ], "1.0.0b0": [ { "comment_text": "", "digests": { "md5": "b45ee9b1344cd8a0b7ea3fd4b0784cd4", "sha256": "3e2fc178a034cfe0c28f4ebb90c70a422aab50f3258e3913068135e99f5bbc49" }, "downloads": -1, "filename": "pyseagull-1.0.0b0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b45ee9b1344cd8a0b7ea3fd4b0784cd4", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 15148, "upload_time": "2019-05-11T10:44:54", "url": "https://files.pythonhosted.org/packages/bb/32/ff164243276c377d6f55064a8cb074b4f3ca1d58c1837e9cdbd98e4b6c70/pyseagull-1.0.0b0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "68f978623bbd6fa36bda47a1e07dbeff", "sha256": "208baf624dd153977f3f28f1b0328e186ba6ac7b42f05d7934ef90143292a028" }, "downloads": -1, "filename": "pyseagull-1.0.0b0.tar.gz", "has_sig": false, "md5_digest": "68f978623bbd6fa36bda47a1e07dbeff", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 98793, "upload_time": "2019-05-11T10:44:57", "url": "https://files.pythonhosted.org/packages/05/f9/4864bffaae4c66a9a36c4141213baafd9790ba8bb364151e4d2e2b3dc4bd/pyseagull-1.0.0b0.tar.gz" } ], "1.0.0b1": [ { "comment_text": "", "digests": { "md5": "f6ed94ea2fd22a539adad191664933dd", "sha256": "237d1dc81efab5d1fdca78f8b7a97c0d27a264acec967f7e68effbecdaff2bba" }, "downloads": -1, "filename": "pyseagull-1.0.0b1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "f6ed94ea2fd22a539adad191664933dd", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 15504, "upload_time": "2019-05-13T10:48:57", "url": "https://files.pythonhosted.org/packages/2b/f3/10bbf9e8e444f5163db37439a1373044c8795afd61afc9c9a488bfead736/pyseagull-1.0.0b1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b939b8c95856eefe57af836bc60cadd3", "sha256": "3ca0de7203ba47d4f303b5a24711ddd76686898ff9bdef2f8d23e35bd74d47a1" }, "downloads": -1, "filename": "pyseagull-1.0.0b1.tar.gz", "has_sig": false, "md5_digest": "b939b8c95856eefe57af836bc60cadd3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 101618, "upload_time": "2019-05-13T10:48:59", "url": "https://files.pythonhosted.org/packages/46/0c/2142741c4381db51035700bd2e58b538d30f77e04cf30b334310a0b9d73d/pyseagull-1.0.0b1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "f6ed94ea2fd22a539adad191664933dd", "sha256": "237d1dc81efab5d1fdca78f8b7a97c0d27a264acec967f7e68effbecdaff2bba" }, "downloads": -1, "filename": "pyseagull-1.0.0b1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "f6ed94ea2fd22a539adad191664933dd", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 15504, "upload_time": "2019-05-13T10:48:57", "url": "https://files.pythonhosted.org/packages/2b/f3/10bbf9e8e444f5163db37439a1373044c8795afd61afc9c9a488bfead736/pyseagull-1.0.0b1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b939b8c95856eefe57af836bc60cadd3", "sha256": "3ca0de7203ba47d4f303b5a24711ddd76686898ff9bdef2f8d23e35bd74d47a1" }, "downloads": -1, "filename": "pyseagull-1.0.0b1.tar.gz", "has_sig": false, "md5_digest": "b939b8c95856eefe57af836bc60cadd3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 101618, "upload_time": "2019-05-13T10:48:59", "url": "https://files.pythonhosted.org/packages/46/0c/2142741c4381db51035700bd2e58b538d30f77e04cf30b334310a0b9d73d/pyseagull-1.0.0b1.tar.gz" } ] }