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

  1. Fork the repository on GitHub.
  2. Clone your fork locally.
  3. 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:

  1. The RHS function.
  2. The exact analytical Jacobian (verified against finite differences).
  3. The equilibria solver.
  4. Default parameters that produce chaotic behavior.
  5. A unit test verifying the equilibria solver against the RHS.

See the Custom Systems tutorial for the expected interface.

Submitting a Pull Request

  1. Create a feature branch (git checkout -b feature/new-system).
  2. Ensure all tests pass.
  3. Ensure your code is formatted correctly (we use black and isort).
  4. Submit the PR against the main branch.

Please include a clear description of the changes and link to any relevant research papers if you are adding new mathematical methodologies.