Thanks for your interest in PocketDock! Bug reports, feature ideas, and pull requests are all welcome.
The fastest way to get a working dev environment is Docker — docker compose up --build brings up the full stack (web, Celery worker, Redis) along with P2Rank and AutoDock Vina.
For a native install (RDKit/OpenMM via conda + external Vina/P2Rank binaries), see the Local development section in Getting Started.
Open a GitHub Issue. For bugs, please include:
- PocketDock version (commit hash or release tag)
- How you're running it (Docker / native)
- The exact input that triggered the problem (PDB + SDF if you can share them)
- The full traceback from the Celery worker logs (
docker compose logs celery)
- Fork the repo and create a feature branch off
main(e.g.fix/box-padding-edge-case,feat/refinement-amber99sb). - Make your change. Keep PRs focused — one logical change per PR is much easier to review than a sweeping refactor.
- Add or update tests in
docking/tests/. The project uses pytest + pytest-django, and there's an existing fixture directory atdocking/tests/fixtures/with small PDB/SDF inputs you can reuse. - Run the test suite locally:
pytest
- Run the linter and formatter:
The CI lint workflow (.github/workflows/lint.yml) enforces these on every PR.
ruff check . ruff format .
- Push and open a PR against
main. In the description, explain why (the problem you're solving), not just what (the diff already shows that). Link related issues withFixes #123.
- Python 3.11+. Type hints are welcome but not required everywhere — focus on public APIs and tricky logic.
- Follow the existing module layout: domain logic in
docking/tasks.py(the docking pipeline), thin views indocking/views.py, models indocking/models.py. ruffhandles formatting and most lint rules — config is inpyproject.toml. Don't fight it.
- Pure-Python / pip-installable: add it to
requirements.txtwith a pinned upper bound. - Needs a system library or wheel from conda-forge (RDKit, OpenMM, Gemmi, PDBFixer): add a
mamba installline to the Dockerfile and the conda install command in docs/getting-started.md. Also updaterequirements.txtif the package is pip-importable so editors don't flag it as missing.
PocketDock is an integration of well-established tools (P2Rank, AutoDock Vina, RDKit, OpenMM). Pull requests that:
- ✅ Fix bugs in the integration layer
- ✅ Improve the UI / results presentation
- ✅ Add new scoring/refinement options that wrap an established method
- ✅ Improve docs, examples, and tests
are all welcome. Contributions that re-implement physics or scoring methods from scratch are out of scope — we prefer to call into well-validated upstream libraries.