Skip to main content

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/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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

neoralab_openff-0.1.1.tar.gz (8.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

neoralab_openff-0.1.1-py3-none-any.whl (11.1 kB view details)

Uploaded Python 3

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

Hashes for neoralab_openff-0.1.1.tar.gz
Algorithm Hash digest
SHA256 64eb71e63ecfaea3fe2be0c386762690bafae8e4d9a5825bbe37cc141718841e
MD5 e54bc773e0266246ce85159c2bbcccd7
BLAKE2b-256 8a9efd2d8138a6ea58662e69868e8eeff522081e26368bf23c0996498c9dafb0

See more details on using hashes here.

File details

Details for the file neoralab_openff-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for neoralab_openff-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 fd4732e6e3e3c2fd8167aaf9599bad57fadb8be2a33ebcdb23840d1a5da4297a
MD5 6ed3025f38676f6b41d349ba1d287015
BLAKE2b-256 5c7fd8de02ddd1d9d90af28b2353ac28659053497fe57752e6f05b263c76b19d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page