Thanks for your interest. EROTICA is a research package for Gaia open-cluster analysis, so contributions are judged on scientific correctness as much as on code quality.
Open a GitHub issue with:
- what you ran (the call, the columns you clustered on, the data source),
- what you expected and what happened,
- the traceback if there is one, and your Python + EROTICA versions
(
python -c "import erotica; print(erotica.__version__)").
For a scientific discrepancy (membership, ages, radii), say which numbers you expected and why — a literature value, another tool, a previous run.
Use GitHub Discussions for usage questions and methodology questions ("should I cluster in 5D for my cluster?"). The membership guide covers the main trade-offs.
git clone https://github.com/notluquis/erotica.git
cd erotica
pip install -e ".[dev]"
pytest -q-
Branch off
dev(git checkout -b fix/short-description). -
Make the change and add a test that fails without it. For anything touching the science — membership, isochrones, structure, dynamics — the test should assert on behaviour, not just that the code runs.
-
Keep the style consistent with
ruff, which replacedblack+isort+flake8and is what.pre-commit-config.yamlactually runs (line length 100, configured inpyproject.toml):ruff check --fix erotica/ tests/ ruff format erotica/ tests/
blackandisortare not installed by thedevextra. This step named them until 2026-08-04, so following it produced "command not found". -
Run the suite:
pytest -q. -
Open a pull request against
devdescribing what changed and, for science changes, what you validated it against.
These are house rules; a PR that breaks them will be asked to change:
- Don't silently change a published default. The NGC 6383 results in
data/test/are a reproducibility artifact; if a change moves those numbers, say so in the PR. - Options with disclosure. When adding a method that can fail on some cluster morphology, add it as an option and document the failure mode — do not make it the default. See the membership guide for the pattern.
- State what is estimated vs assumed. Priors, fixed parameters, and the model grid an age is conditioned on belong in the docstring.
- Uncertainties are not decoration. Prefer returning a distribution or an interval over a bare point estimate where the method supports it.
Be respectful and constructive. Harassment or personal attacks are not tolerated; report concerns to lescobar2019@udec.cl.