{"id":13688783,"url":"https://github.com/GazzolaLab/PyElastica","last_synced_at":"2025-05-01T20:30:47.030Z","repository":{"id":37086189,"uuid":"254172891","full_name":"GazzolaLab/PyElastica","owner":"GazzolaLab","description":"Python implementation of Elastica, an open-source software for the simulation of assemblies of slender, one-dimensional structures using Cosserat Rod theory.","archived":false,"fork":false,"pushed_at":"2025-02-28T16:03:43.000Z","size":635281,"stargazers_count":250,"open_issues_count":20,"forks_count":115,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-03-01T09:28:39.171Z","etag":null,"topics":["cosserat-rod-theory","cosserat-rods","elastica","mechanics","python","simulation"],"latest_commit_sha":null,"homepage":"https://www.cosseratrods.org","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/GazzolaLab.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":"docs/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-04-08T18:47:47.000Z","updated_at":"2025-02-27T00:48:57.000Z","dependencies_parsed_at":"2023-10-14T14:02:21.698Z","dependency_job_id":"775c967c-89b7-4b9b-85c3-fdf412d97045","html_url":"https://github.com/GazzolaLab/PyElastica","commit_stats":{"total_commits":1624,"total_committers":27,"mean_commits":"60.148148148148145","dds":0.6434729064039408,"last_synced_commit":"dc4807bd0d76a343f77ef76b05aee6d2604e07b3"},"previous_names":[],"tags_count":22,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GazzolaLab%2FPyElastica","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GazzolaLab%2FPyElastica/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GazzolaLab%2FPyElastica/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GazzolaLab%2FPyElastica/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/GazzolaLab","download_url":"https://codeload.github.com/GazzolaLab/PyElastica/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251940481,"owners_count":21668543,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cosserat-rod-theory","cosserat-rods","elastica","mechanics","python","simulation"],"created_at":"2024-08-02T15:01:22.620Z","updated_at":"2025-05-01T20:30:47.024Z","avatar_url":"https://github.com/GazzolaLab.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"\u003cdiv align='center'\u003e\n\u003ch1\u003e PyElastica \u003c/h1\u003e\n\n[![Build_status][badge-travis]][link-travis] [![CI][badge-CI]][link-CI] [![Documentation Status][badge-docs-status]][link-docs-status] [![codecov][badge-codecov]][link-codecov] [![Downloads][badge-pepy-download-count]][link-pepy-download-count] [![DOI][badge-doi]][link-doi] [![Binder][badge-binder]][link-binder] [![Gitter][badge-gitter]][link-gitter]\n \u003c/div\u003e\n\nPyElastica is the python implementation of **Elastica**: an *open-source* project for simulating assemblies of slender, one-dimensional structures using Cosserat Rod theory.\n\n[![gallery][link-readme-gallary]][link-project-website]\n\nVisit [www.cosseratrods.org][link-project-website] for more information and learn about Elastica and Cosserat rod theory.\n\n## How to Start\n[![PyPI version][badge-pypi]][link-pypi] [![Documentation Status][badge-docs-status]][link-docs-status]\n\nPyElastica is compatible with Python 3.10 - 3.11.\n\n~~~bash\n$ pip install pyelastica\n~~~\n\nWith this you get a minimal version with very little dependencies.\n\nAll options:\n- `examples`: installs dependencies to run example cases,\nfound under the folder [`examples`](https://github.com/GazzolaLab/PyElastica/tree/master/examples).\n- `docs`: packages to build documentation\n\nOptions can be combined e.g.\n```bash\n$ pip install \"pyelastica[examples,docs]\"\n```\n\nFor plotting videos, ffmpeg has to be installed:\n```bash\n$ conda install -c conda-forge ffmpeg\n```\n\nDocumentation of PyElastica is available [here][link-docs-website].\n\nIf you want to simulate magnetic Cosserat rods interacting with external magnetic environments you can install the derived package using\n\n```bash\n$ pip install magneto_pyelastica\n```\n\nDetails can be found [here](https://github.com/armantekinalp/MagnetoPyElastica).\n\n## Citation\n\nWe ask that any publications which use Elastica cite as following:\n\n```\n@software{arman_tekinalp_2024_10883271,\n  author       = {Arman Tekinalp and\n                  Seung Hyun Kim and\n                  Yashraj Bhosale and\n                  Tejaswin Parthasarathy and\n                  Noel Naughton and\n                  Ali Albazroun and\n                  Rahul Joon and\n                  Songyuan Cui and\n                  Ilia Nasiriziba and\n                  Maximilian Stölzle and\n                  Chia-Hsien (Cathy) Shih and\n                  Mattia Gazzola},\n  title        = {GazzolaLab/PyElastica: v0.3.2},\n  month        = mar,\n  year         = 2024,\n  publisher    = {Zenodo},\n  version      = {v0.3.2},\n  doi          = {10.5281/zenodo.10883271},\n  url          = {https://doi.org/10.5281/zenodo.10883271}\n}\n```\n\n\u003cdetails\u003e\n  \u003csummary\u003e\u003ch4\u003eReferences\u003c/h4\u003e\u003c/summary\u003e\n\n- Gazzola, Dudte, McCormick, Mahadevan, \u003cstrong\u003eForward and inverse problems in the mechanics of soft filaments\u003c/strong\u003e, Royal Society Open Science, 2018. doi: [10.1098/rsos.171628](https://doi.org/10.1098/rsos.171628)\n- Zhang, Chan, Parthasarathy, Gazzola, \u003cstrong\u003eModeling and simulation of complex dynamic musculoskeletal architectures\u003c/strong\u003e, Nature Communications, 2019. doi: [10.1038/s41467-019-12759-5](https://doi.org/10.1038/s41467-019-12759-5)\n\n\u003c/details\u003e\n\n## List of publications and submissions\n- [Soft, slender and active structures in fluids: embedding Cosserat rods in vortex methods](https://doi.org/10.48550/arXiv.2401.09506) (UIUC 2024)\n- [Neural models and algorithms for sensorimotor control of an octopus arm](https://doi.org/10.48550/arXiv.2402.01074)(UIUC 2024)\n- [On the mechanical origins of waving, coiling and skewing in Arabidopsis thaliana roots](https://www.pnas.org/doi/10.1073/pnas.2312761121) (Tel Aviv University, UIUC 2024) (PNAS)\n- [Topology, dynamics, and control of an octopus-analog muscular hydrostat](https://arxiv.org/abs/2304.08413) (UIUC, 2023)\n- [Hierarchical control and learning of a foraging CyberOctopus](https://onlinelibrary.wiley.com/doi/full/10.1002/aisy.202300088) (UIUC, 2023) (Advanced Intelligent Systems)\n- [Energy-shaping control of a muscular octopus arm moving in three dimensions](https://royalsocietypublishing.org/doi/full/10.1098/rspa.2022.0593) (UIUC, 2023) (Proceedings of the Royal Society A 2023)\n- [A sensory feedback control law for octopus arm movements](https://ieeexplore.ieee.org/abstract/document/9993021/) (UIUC, 2022) (IEEE CDC 2022)\n- [Control-oriented modeling of bend propagation in an octopus arm](https://ieeexplore.ieee.org/abstract/document/9867689/) (UIUC, 2021) (IEEE ACC 2022)\n- [A physics-informed, vision-based method to reconstruct all deformation modes in slender bodies](https://arxiv.org/abs/2109.08372) (UIUC, 2021) (IEEE ICRA 2022) [code](https://github.com/GazzolaLab/BR2-vision-based-smoothing)\n- [Optimal control of a soft CyberOctopus arm](https://ieeexplore.ieee.org/document/9483284) (UIUC, 2021) (IEEE ACC 2021)\n- [Elastica: A compliant mechanics environment for soft robotic control](https://ieeexplore.ieee.org/document/9369003) (UIUC, 2021) (IEEE RA-L 2021)\n- [Controlling a CyberOctopus soft arm with muscle-like actuation](https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=9683318) (UIUC, 2020) (IEEE CDC 2021)\n- [Energy shaping control of a CyberOctopus soft arm](https://ieeexplore.ieee.org/document/9304408) (UIUC, 2020) (IEEE CDC 2020)\n\n## Tutorials\n[![Binder][badge-binder-tutorial]][link-binder]\n\nWe have created several Jupyter notebooks and Python scripts to help users get started with PyElastica. The Jupyter notebooks are available on Binder, allowing you to try out some of the tutorials without having to install PyElastica.\n\nWe have also included an example script for visualizing PyElastica simulations using POVray. This script is located in the examples folder ([`examples/Visualization`](examples/Visualization)).\n\n## Contribution\n\nIf you would like to participate, please read our [contribution guideline](CONTRIBUTING.md)\n\nPyElastica is developed by the [Gazzola Lab][link-lab-website] at the University of Illinois Urbana-Champaign.\n\n## Senior Developers ✨\n_Names arranged alphabetically_\n- Ali Albazroun\n- Arman Tekinalp\n- Chia-Hsien Shih (Cathy)\n- Fan Kiat Chan\n- Ilia Nasiriziba\n- Noel Naughton\n- [Seung Hyun Kim](https://github.com/skim0119)\n- Songyuan Cui\n- Tejaswin Parthasarathy (Teja)\n- Xiaotian Zhang\n- [Yashraj Bhosale](https://github.com/bhosale2)\n\n[//]: # (Collection of URLs.)\n\n[link-readme-gallary]: https://github.com/skim0119/PyElastica/blob/assets_logo/assets/alpha_gallery.gif\n\n[link-project-website]: https://cosseratrods.org\n[link-lab-website]: http://mattia-lab.com/\n[link-docs-website]: https://docs.cosseratrods.org/\n\n[badge-pypi]: https://badge.fury.io/py/pyelastica.svg\n[badge-travis]: https://travis-ci.com/GazzolaLab/PyElastica.svg?branch=master\n[badge-CI]: https://github.com/GazzolaLab/PyElastica/workflows/CI/badge.svg\n[badge-docs-status]: https://readthedocs.org/projects/pyelastica/badge/?version=latest\n[badge-binder]: https://mybinder.org/badge_logo.svg\n[badge-pepy-download-count]: https://pepy.tech/badge/pyelastica\n[badge-codecov]: https://codecov.io/gh/GazzolaLab/PyElastica/branch/master/graph/badge.svg\n[badge-gitter]: https://badges.gitter.im/PyElastica/community.svg\n[badge-doi]: https://zenodo.org/badge/254172891.svg\n[link-pypi]: https://badge.fury.io/py/pyelastica\n[link-travis]: https://travis-ci.com/github/GazzolaLab/PyElastica\n[link-CI]: https://github.com/GazzolaLab/PyElastica/actions\n[link-docs-status]: https://docs.cosseratrods.org/en/latest/?badge=latest\n[link-pepy-download-count]: https://pepy.tech/project/pyelastica\n[link-codecov]: https://codecov.io/gh/GazzolaLab/PyElastica\n\n[badge-binder-tutorial]: https://img.shields.io/badge/Launch-PyElastica%20Tutorials-579ACA.svg?logo=data:image/png;base64,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\n[link-binder]: https://mybinder.org/v2/gh/GazzolaLab/PyElastica/master?filepath=examples%2FBinder%2F0_PyElastica_Tutorials_Overview.ipynb\n[link-gitter]: https://gitter.im/PyElastica/community?utm_source=badge\u0026utm_medium=badge\u0026utm_campaign=pr-badge\u0026utm_content=badge\n[link-doi]: https://zenodo.org/badge/latestdoi/254172891\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FGazzolaLab%2FPyElastica","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FGazzolaLab%2FPyElastica","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FGazzolaLab%2FPyElastica/lists"}