Skip to content

Commit

Permalink
Merge branch 'update-0.3.3' into master
Browse files Browse the repository at this point in the history
  • Loading branch information
skim0119 authored Jan 31, 2025
2 parents f6a761b + 2ce3bde commit 4c01adf
Show file tree
Hide file tree
Showing 187 changed files with 15,242 additions and 6,903 deletions.
26 changes: 0 additions & 26 deletions .coveragerc

This file was deleted.

2 changes: 1 addition & 1 deletion .flake8
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[flake8]
ignore = E203, E266, E501, W503, F403, F401, W191
ignore = E203, E266, E501, W503, F403, F401, W191, E704
max-line-length = 88
max-complexity = 18
select = B,C,E,F,W,T4,B9
Expand Down
2 changes: 1 addition & 1 deletion .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,5 +10,5 @@ updates:
schedule:
interval: "daily"
open-pull-requests-limit: 99
target-branch: "update-0.3.1"
target-branch: "update-0.3.3"
versioning-strategy: lockfile-only
10 changes: 7 additions & 3 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ jobs:
runs-on: ${{ matrix.os }}
strategy:
matrix:
python-version: ["3.8", "3.9", "3.10"]
python-version: ["3.10", "3.11", "3.12"]
os: [ubuntu-latest, macos-latest] #, windows-latest] # Run macos tests if really required, since they charge 10 times more for macos
include:
- os: ubuntu-latest
Expand Down Expand Up @@ -66,11 +66,15 @@ jobs:
- name: Run tests
run: |
make test
report-coverage: # Report coverage from python 3.8 and mac-os. May change later
- name: Typechecking
if: ${{ startsWith(runner.os, 'macOS') }}
run: |
make mypy
report-coverage: # Report coverage from python 3.10 and mac-os. May change later
runs-on: ${{ matrix.os }}
strategy:
matrix:
python-version: ["3.8"]
python-version: ["3.10"]
os: [macos-latest]
include:
- os: macos-latest
Expand Down
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ __pycache__/
# C extensions
*.so

*.swp

# Distribution / packaging
.Python
build/
Expand Down
2 changes: 1 addition & 1 deletion .readthedocs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ build:
- pip install poetry
- poetry config virtualenvs.create false
post_install:
- poetry install --all-extras
- VIRTUAL_ENV=$READTHEDOCS_VIRTUALENV_PATH poetry install --all-extras

# Build documentation in the docs/ directory with Sphinx
sphinx:
Expand Down
43 changes: 0 additions & 43 deletions .travis.yml

This file was deleted.

6 changes: 3 additions & 3 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,12 +44,12 @@ First **create the fork repository and clone** to your local machine.

2. Virtual python workspace: `conda`, `pyenv`, or `venv`.

We recommend using python version above 3.8.0.
We recommend using python version above 3.10.0.

```bash
conda create --name pyelastica-dev
conda activate pyelastica-dev
conda install python==3.8
conda install python==3.10
```

3. Setup [`poetry`](https://python-poetry.org) and `dependencies`!
Expand All @@ -61,7 +61,7 @@ make pre-commit-install
```

If you are planning to contribute to the examples,
extra dependencies can be installed using `poetry install -E examples`.
extra dependencies can be installed using `make install_examples_dependencies`.

If you are planning to contribute on documentation, extra dependencies can be installed
using `poetry install -E docs`.
Expand Down
2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
MIT License

Copyright (c) 2019-2023 GazzolaLab
Copyright (c) 2019-2024 GazzolaLab

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand Down
37 changes: 22 additions & 15 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#* Variables
PYTHON := python3
PYTHONPATH := `pwd`
AUTOFLAKE8_ARGS := -r --exclude '__init__.py' --keep-pass-after-docstring
AUTOFLAKE_ARGS := -r
#* Poetry
.PHONY: poetry-download
poetry-download:
Expand Down Expand Up @@ -35,7 +35,7 @@ pre-commit-install:
.PHONY: black
black:
poetry run black --version
poetry run black --config pyproject.toml --required-version 21.12b0 elastica tests examples
poetry run black --config pyproject.toml --required-version 24.3.0 elastica tests examples

.PHONY: black-check
black-check:
Expand All @@ -47,19 +47,22 @@ flake8:
poetry run flake8 --version
poetry run flake8 elastica tests

.PHONY: autoflake8-check
autoflake8-check:
poetry run autoflake8 --version
poetry run autoflake8 $(AUTOFLAKE8_ARGS) elastica tests examples
poetry run autoflake8 --check $(AUTOFLAKE8_ARGS) elastica tests examples
.PHONY: autoflake-check
autoflake-check:
poetry run autoflake --version
poetry run autoflake --check $(AUTOFLAKE_ARGS) elastica tests examples

.PHONY: autoflake8-format
autoflake8-format:
poetry run autoflake8 --version
poetry run autoflake8 --in-place $(AUTOFLAKE8_ARGS) elastica tests examples
.PHONY: autoflake-format
autoflake-format:
poetry run autoflake --version
poetry run autoflake --in-place $(AUTOFLAKE_ARGS) elastica tests examples

.PHONY: format-codestyle
format-codestyle: black flake8
format-codestyle: black autoflake-format

.PHONY: mypy
mypy:
poetry run mypy --config-file pyproject.toml elastica

.PHONY: test
test:
Expand All @@ -74,14 +77,14 @@ test_coverage_xml:
NUMBA_DISABLE_JIT=1 poetry run pytest --cov=elastica --cov-report=xml

.PHONY: check-codestyle
check-codestyle: black-check flake8 autoflake8-check
check-codestyle: black-check flake8 autoflake-check

.PHONY: formatting
formatting: format-codestyle

.PHONY: update-dev-deps
update-dev-deps:
poetry add -D pytest@latest coverage@latest pytest-html@latest pytest-cov@latest black@latest
poetry add -D mypy@latest pytest@latest coverage@latest pytest-html@latest pytest-cov@latest black@latest

#* Cleaning
.PHONY: pycache-remove
Expand All @@ -92,6 +95,10 @@ pycache-remove:
dsstore-remove:
find . | grep -E ".DS_Store" | xargs rm -rf

.PHONY: mypycache-remove
mypycache-remove:
find . | grep -E ".mypy_cache" | xargs rm -rf

.PHONY: ipynbcheckpoints-remove
ipynbcheckpoints-remove:
find . | grep -E ".ipynb_checkpoints" | xargs rm -rf
Expand All @@ -105,7 +112,7 @@ build-remove:
rm -rf build/

.PHONY: cleanup
cleanup: pycache-remove dsstore-remove ipynbcheckpoints-remove pytestcache-remove
cleanup: pycache-remove dsstore-remove ipynbcheckpoints-remove pytestcache-remove mypycache-remove

all: format-codestyle cleanup test

Expand Down
41 changes: 26 additions & 15 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,12 @@ PyElastica is the python implementation of **Elastica**: an *open-source* projec

[![gallery][link-readme-gallary]][link-project-website]

Visit [cosseratrods.org][link-project-website] for more information and learn about Elastica and Cosserat rod theory.
Visit [www.cosseratrods.org][link-project-website] for more information and learn about Elastica and Cosserat rod theory.

## How to Start
[![PyPI version][badge-pypi]][link-pypi] [![Documentation Status][badge-docs-status]][link-docs-status]

PyElastica is compatible with Python 3.8 - 3.10.
PyElastica is compatible with Python 3.10 - 3.11.

~~~bash
$ pip install pyelastica
Expand All @@ -31,6 +31,11 @@ Options can be combined e.g.
$ pip install "pyelastica[examples,docs]"
```

For plotting videos, ffmpeg has to be installed:
```bash
$ conda install -c conda-forge ffmpeg
```

Documentation of PyElastica is available [here][link-docs-website].

If you want to simulate magnetic Cosserat rods interacting with external magnetic environments you can install the derived package using
Expand All @@ -46,25 +51,26 @@ Details can be found [here](https://github.com/armantekinalp/MagnetoPyElastica).
We ask that any publications which use Elastica cite as following:

```
@software{arman_tekinalp_2023_7931429,
@software{arman_tekinalp_2024_10883271,
author = {Arman Tekinalp and
Seung Hyun Kim and
Yashraj Bhosale and
Tejaswin Parthasarathy and
Noel Naughton and
Ilia Nasiriziba and
Ali Albazroun and
Rahul Joon and
Songyuan Cui and
Ilia Nasiriziba and
Maximilian Stölzle and
Chia-Hsien (Cathy) Shih and
Mattia Gazzola
},
title = {GazzolaLab/PyElastica: v0.3.1},
month = may,
year = 2023,
Mattia Gazzola},
title = {GazzolaLab/PyElastica: v0.3.2},
month = mar,
year = 2024,
publisher = {Zenodo},
version = {v0.3.1},
doi = {10.5281/zenodo.7931429},
url = {https://doi.org/10.5281/zenodo.7931429}
version = {v0.3.2},
doi = {10.5281/zenodo.10883271},
url = {https://doi.org/10.5281/zenodo.10883271}
}
```

Expand All @@ -77,8 +83,11 @@ We ask that any publications which use Elastica cite as following:
</details>

## List of publications and submissions
- [Soft, slender and active structures in fluids: embedding Cosserat rods in vortex methods](https://doi.org/10.48550/arXiv.2401.09506) (UIUC 2024)
- [Neural models and algorithms for sensorimotor control of an octopus arm](https://doi.org/10.48550/arXiv.2402.01074)(UIUC 2024)
- [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)
- [Topology, dynamics, and control of an octopus-analog muscular hydrostat](https://arxiv.org/abs/2304.08413) (UIUC, 2023)
- [Hierarchical control and learning of a foraging CyberOctopus](https://arxiv.org/abs/2302.05811) (UIUC, 2023)
- [Hierarchical control and learning of a foraging CyberOctopus](https://onlinelibrary.wiley.com/doi/full/10.1002/aisy.202300088) (UIUC, 2023) (Advanced Intelligent Systems)
- [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)
- [A sensory feedback control law for octopus arm movements](https://ieeexplore.ieee.org/abstract/document/9993021/) (UIUC, 2022) (IEEE CDC 2022)
- [Control-oriented modeling of bend propagation in an octopus arm](https://ieeexplore.ieee.org/abstract/document/9867689/) (UIUC, 2021) (IEEE ACC 2022)
Expand All @@ -93,16 +102,17 @@ We ask that any publications which use Elastica cite as following:

We 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.

We have also included an example script for visualizing PyElastica simulations using POVray. This script is located in the examples folder ([`examples/visualization`](examples/visualization)).
We have also included an example script for visualizing PyElastica simulations using POVray. This script is located in the examples folder ([`examples/Visualization`](examples/Visualization)).

## Contribution

If you would like to participate, please read our [contribution guideline](CONTRIBUTING.md)

PyElastica is developed by the [Gazzola Lab][link-lab-website] at the University of Illinois at Urbana-Champaign.
PyElastica is developed by the [Gazzola Lab][link-lab-website] at the University of Illinois Urbana-Champaign.

## Senior Developers ✨
_Names arranged alphabetically_
- Ali Albazroun
- Arman Tekinalp
- Chia-Hsien Shih (Cathy)
- Fan Kiat Chan
Expand All @@ -111,6 +121,7 @@ _Names arranged alphabetically_
- [Seung Hyun Kim](https://github.com/skim0119)
- Songyuan Cui
- Tejaswin Parthasarathy (Teja)
- Xiaotian Zhang
- [Yashraj Bhosale](https://github.com/bhosale2)

[//]: # (Collection of URLs.)
Expand Down
35 changes: 35 additions & 0 deletions RELEASE.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,38 @@
# Release 0.3.2

## New Features

* Rod sphere contact by @Rahul-JOON in https://github.com/GazzolaLab/PyElastica/pull/298 and @Ali-7800 in https://github.com/GazzolaLab/PyElastica/pull/301
* Importing mesh capability is implemented @Rahul-JOON in https://github.com/GazzolaLab/PyElastica/pull/275, https://github.com/GazzolaLab/PyElastica/pull/277, https://github.com/GazzolaLab/PyElastica/pull/283

## What's Changed

* Contact unit tests were implemented @Rahul-JOON in https://github.com/GazzolaLab/PyElastica/pull/257, https://github.com/GazzolaLab/PyElastica/pull/258, https://github.com/GazzolaLab/PyElastica/pull/260, https://github.com/GazzolaLab/PyElastica/pull/261, https://github.com/GazzolaLab/PyElastica/pull/262, https://github.com/GazzolaLab/PyElastica/pull/267, https://github.com/GazzolaLab/PyElastica/pull/269, https://github.com/GazzolaLab/PyElastica/pull/274
* Contact functions refactored and moved to a standalone contact module @Ali-7800 in https://github.com/GazzolaLab/PyElastica/pull/281, https://github.com/GazzolaLab/PyElastica/pull/291, https://github.com/GazzolaLab/PyElastica/pull/293, https://github.com/GazzolaLab/PyElastica/pull/314, https://github.com/GazzolaLab/PyElastica/pull/316, https://github.com/GazzolaLab/PyElastica/pull/317, https://github.com/GazzolaLab/PyElastica/pull/328
* Memory block refactor by @sy-cui in https://github.com/GazzolaLab/PyElastica/pull/296
* New example Continuum Snake With Lifting Wave added by @Ali-7800 in https://github.com/GazzolaLab/PyElastica/pull/317
* Catenary curve validation by @Ali-7800 in https://github.com/GazzolaLab/PyElastica/pull/335

## Minor Fixes

* Fix links in README.md by @tokoro10g in https://github.com/GazzolaLab/PyElastica/pull/256
* Fix knot theory functionalities import by @Ali-7800 in https://github.com/GazzolaLab/PyElastica/pull/268
* Binder snake example bug fix by @Ali-7800 in https://github.com/GazzolaLab/PyElastica/pull/330
* Binder environment setup fix by @Ali-7800 in https://github.com/GazzolaLab/PyElastica/pull/340

## Repository Update

* Python 3.11 support by @bhosale2 in https://github.com/GazzolaLab/PyElastica/pull/307


## New Contributors

* @tokoro10g made their first contribution in https://github.com/GazzolaLab/PyElastica/pull/256
* @Ali-7800 made their first contribution in https://github.com/GazzolaLab/PyElastica/pull/268

**Full Changelog**: https://github.com/GazzolaLab/PyElastica/compare/v0.3.1...v0.3.2


# Release 0.3.1

## New Features
Expand Down
Loading

0 comments on commit 4c01adf

Please sign in to comment.