Contributing
How to contribute code and workflows to the library.
We welcome contributions from researchers and developers! Whether you are adding a new chaotic system, a new fractional integration scheme, or fixing a bug, your help is appreciated.
Setting Up for Development
- Fork the repository on GitHub.
- Clone your fork locally.
- Install the package in editable mode with the
[dev]extras:
git clone https://github.com/YOUR_USERNAME/Hidden-Attractors-Localization.git
cd Hidden-Attractors-Localization/version_2
pip install -e ".[dev]"
Running Tests
We use pytest for all unit and integration testing.
pytest
If you are modifying the C backends, ensure you run the tests with and without OpenMP to verify thread safety:
ALLOW_NO_OPENMP=1 pytest
pytest
Adding a New System
If you are adding a new chaotic system that is broadly useful (e.g., a well-known benchmark), please add it to hidden_attractors/systems/registry.py.
Ensure you provide:
- The RHS function.
- The exact analytical Jacobian (verified against finite differences).
- The equilibria solver.
- Default parameters that produce chaotic behavior.
- A unit test verifying the equilibria solver against the RHS.
See the Custom Systems tutorial for the expected interface.
Submitting a Pull Request
- Create a feature branch (
git checkout -b feature/new-system). - Ensure all tests pass.
- Ensure your code is formatted correctly (we use
blackandisort). - Submit the PR against the
mainbranch.
Please include a clear description of the changes and link to any relevant research papers if you are adding new mathematical methodologies.