Skip to content

feat(conformers): isolated nvMolKit worker backend#40

Open
SergeiNikolenko wants to merge 5 commits intomainfrom
feat/nvmolkit-worker-backend
Open

feat(conformers): isolated nvMolKit worker backend#40
SergeiNikolenko wants to merge 5 commits intomainfrom
feat/nvmolkit-worker-backend

Conversation

@SergeiNikolenko
Copy link
Copy Markdown
Member

Supersedes #23.

What

  • add isolated nvMolKit worker backend for conformer generation
  • auto-bootstrap .venv-nvmolkit-worker in auto mode when worker is missing
  • keep CPU/RDKit fallback when worker setup or execution is unavailable

Main changes

  • matcha/utils/preprocessing.py
    • add worker-backed conformer generation path
    • add one-time auto-setup for worker env in auto backend mode
    • preserve fallback to RDKit when worker is unavailable or returns invalid output
  • scripts/setup_nvmolkit_worker.py
    • create .venv-nvmolkit-worker
    • install worker package and nvMolKit prerequisites
  • packages/matcha_nvmolkit_worker/...
    • isolated worker package and CLI entrypoint
  • tests
    • worker contract test coverage
    • batch/in-memory conformer generation tests

Why

This PR keeps the nvMolKit integration isolated from the main inference/scoring logic. Matcha can use a prepared GPU conformer worker when available, but still degrades safely to RDKit.

Validation

uv run pytest -n0 tests/test_conformer_generation_batch.py tests/test_conformer_generation_in_memory.py tests/test_conformer_worker_contract.py

Optional worker setup check:

uv run python scripts/setup_nvmolkit_worker.py --skip-smoke

@SergeiNikolenko
Copy link
Copy Markdown
Member Author

Moved to fork and merged into SergeiNikolenko/matcha main: https://github.com/SergeiNikolenko/matcha/tree/main

- Extract _rdkit_generate_chunk() to eliminate 3x duplicated blocks
- Consolidate max_failures/max_iterations into single max_attempts
- Extract _conf_has_finite_coords predicate in worker CLI
- Compact setup script: str.removeprefix(), f-strings, shorter docstrings
- Remove 8 obvious/redundant comments
@SergeiNikolenko SergeiNikolenko force-pushed the feat/nvmolkit-worker-backend branch from b02f32a to aa46ff9 Compare March 30, 2026 09:43
Base automatically changed from fix/scoring-followups to main April 1, 2026 11:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant