Skip to main content

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/units
  • packages/utilities
  • packages/toolkit
  • packages/interchange
  • packages/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_steps to 50_000+
  • prod_steps to 2_500_000+ for about 10 ns at a 4 fs timestep
  • progress_chunk_steps if 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.0 or 0.1.0

The workflow builds the root sdist and wheel from pyproject.toml, runs twine check, and uploads with the PyPI token.

Using pixi

  1. Install pixi.

  2. From the repository root, create the environment and install the local packages:

    pixi run postinstall
    
  3. Verify that the editable installs and force-field discovery work:

    pixi run smoke_imports
    
  4. 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.

Metadata

Release files for neoralab-openff 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for neoralab-openff 0.1.1
File Size Uploaded
neoralab_openff-0.1.1.tar.gz 8.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for neoralab-openff 0.1.1
File Interpreter ABI Platform
neoralab_openff-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 19.6 kB

Release files / neoralab_openff-0.1.1.tar.gz

Download URL neoralab_openff-0.1.1.tar.gz
Size 8.5 kB
Tags Source
SHA-256 checksum
How to use checksums
64eb71e63ecfaea3fe2be0c386762690bafae8e4d9a5825bbe37cc141718841e
BLAKE2b-256 checksum
How to use checksums
8a9efd2d8138a6ea58662e69868e8eeff522081e26368bf23c0996498c9dafb0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / neoralab_openff-0.1.1-py3-none-any.whl

Download URL neoralab_openff-0.1.1-py3-none-any.whl
Size 11.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
fd4732e6e3e3c2fd8167aaf9599bad57fadb8be2a33ebcdb23840d1a5da4297a
BLAKE2b-256 checksum
How to use checksums
5c7fd8de02ddd1d9d90af28b2353ac28659053497fe57752e6f05b263c76b19d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page