Umbrella monorepo for the Neoralab OpenFF stack
Project description
neoralab-openff
This repository is the monorepo entry point for the Neoralab OpenFF stack.
The repository now has a root pyproject.toml so it can be installed directly with uv, and the root package version is resolved dynamically from git metadata with versioningit.
The root distribution neoralab-openff is an umbrella package. It does not install its own importable Python module; instead, it depends on the package distributions published from the subprojects under packages/.
The OpenFF packages now live under packages/:
packages/unitspackages/utilitiespackages/toolkitpackages/interchangepackages/forcefields
The first implementation target is a working local development setup that can run examples/molecular_dynamics/molecular_dynamics_ligand_receptor.py from a single repository checkout.
Development setup
This monorepo currently standardizes on Python 3.12 because units, utilities, and forcefields require it.
The ligand-receptor example is now runnable from the root with uv and writes its outputs into examples/molecular_dynamics/output/.
Using uv
From the repository root, create the uv environment and install the workspace members:
uv sync
Then run the smoke import check or the example with uv:
uv run python devtools/scripts/smoke_imports.py
uv run python examples/molecular_dynamics/molecular_dynamics_ligand_receptor.py
The example now shows tqdm progress bars for equilibration and production, including elapsed wall time.
If AmberTools is not available, ligand charge assignment falls back from am1bcc to RDKit charge methods so the local smoke run can still complete.
The script defaults are intentionally small for a CPU-friendly smoke test. For more realistic runs, edit the MDSettings block in examples/molecular_dynamics/molecular_dynamics_ligand_receptor.py and increase:
equil_stepsto50_000+prod_stepsto2_500_000+for about 10 ns at a 4 fs timestepprogress_chunk_stepsif you want coarser or finer progress bar updates
The root pyproject.toml defines a uv workspace over the package subprojects, so uv sync installs the umbrella package together with the local monorepo packages from packages/.
Installing from PyPI
Once the root package and its dependencies are published, the umbrella distribution can be installed with:
pip install neoralab-openff
This works because the root package is a meta-package that pulls in the member distributions. It is only sufficient on its own if those dependencies are also available from the configured package index.
Release publishing
The repository includes a root GitHub Actions workflow that builds and publishes neoralab-openff to PyPI when a version tag is pushed.
Expected setup:
- add a repository secret named
PYPI_TOKEN - push a version tag such as
v0.1.0or0.1.0
The workflow builds the root sdist and wheel from pyproject.toml, runs twine check, and uploads with the PyPI token.
Using pixi
-
Install
pixi. -
From the repository root, create the environment and install the local packages:
pixi run postinstall
-
Verify that the editable installs and force-field discovery work:
pixi run smoke_imports
-
Run the ligand-receptor example:
pixi run run_example
The example writes generated files into examples/molecular_dynamics/output/.
Current scope
This first monorepo pass focuses on:
- consolidating the package source trees under one repository;
- providing a single root environment and install workflow;
- making the ligand-receptor example runnable from the repository root.
Root-level release automation is now in place for the umbrella package. Subproject release automation is still separate work.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file neoralab_openff-0.1.1.tar.gz.
File metadata
- Download URL: neoralab_openff-0.1.1.tar.gz
- Upload date:
- Size: 8.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
64eb71e63ecfaea3fe2be0c386762690bafae8e4d9a5825bbe37cc141718841e
|
|
| MD5 |
e54bc773e0266246ce85159c2bbcccd7
|
|
| BLAKE2b-256 |
8a9efd2d8138a6ea58662e69868e8eeff522081e26368bf23c0996498c9dafb0
|
File details
Details for the file neoralab_openff-0.1.1-py3-none-any.whl.
File metadata
- Download URL: neoralab_openff-0.1.1-py3-none-any.whl
- Upload date:
- Size: 11.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fd4732e6e3e3c2fd8167aaf9599bad57fadb8be2a33ebcdb23840d1a5da4297a
|
|
| MD5 |
6ed3025f38676f6b41d349ba1d287015
|
|
| BLAKE2b-256 |
5c7fd8de02ddd1d9d90af28b2353ac28659053497fe57752e6f05b263c76b19d
|