Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 27 additions & 12 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -352,7 +352,24 @@ credentials.

## Development

We use [Pixi](https://pixi.sh/) to manage development environments and dependencies. Each model has its own environment, e.g. `boltz-dev`, `protenix-dev`, `rf3-dev`. To install dev dependencies and run tests:
For lightweight source-checkout development, use [uv](https://docs.astral.sh/uv/):

```bash
uv sync --group dev
uv run sampleworks-guidance --help
uv run pytest tests -m 'not slow'
```

Additional uv dependency groups are available for development and analysis:

```bash
uv sync --group dev
uv sync --group analysis
uv sync --group test
```

The existing GPU model environments are split by model, e.g. `boltz-dev`,
`protenix-dev`, `rf3-dev`. To install dev dependencies and run tests there:

```bash
pixi install -e [model]-dev # add pytest, ruff, ty
Expand All @@ -373,19 +390,17 @@ See [`tests/README.md`](tests/README.md) for full testing instructions.

## macOS (experimental)

To develop on OS X, ensure you have [homebrew](https://brew.sh/) installed and run the following commands to install dependencies:
On macOS, use uv for source-checkout development and avoid Linux/CUDA-only model
extras unless you know they are supported on your machine:

1. Install hatch and uv
```bash
brew install hatch uv
```
2. Move/copy `pyproject-hatch.toml` to `pyproject.toml`
3. Use `uvx hatch run <command>` to run commands. Note the use of `uvx` instead of `uv`
4. Use `uvx hatch run <env>:<command>` to run commands in a specific environment `<env>`.
```bash
brew install uv
uv sync --group dev
uv run pytest tests -m 'not slow'
```

There are different (and as yet untested) environments for `boltz`. `protenix` won't currently work on a Mac due to
the strict requirement of `triton` which requires an NVIDIA GPU. You may find similar issues with other environments.
Debug as needed.
`protenix` currently requires `triton`/NVIDIA GPU support and is not expected to
work on macOS. Some RF3/Boltz workflows may also require Linux/CUDA packages.


## Commit Messages
Expand Down
137 changes: 0 additions & 137 deletions pyproject-hatch.toml

This file was deleted.

49 changes: 45 additions & 4 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[build-system]
build-backend = "hatchling.build"
requires = ["hatchling"]
requires = ["hatchling>=1.27"]

[dependency-groups]
analysis = [
Expand All @@ -17,6 +17,7 @@ analysis = [
"seaborn"
]
dev = ["pytest", "pytest-cov", "mypy", "prek", "ty", "ruff", "pytest-loguru", "python-semantic-release"]
test = ["pytest", "pytest-cov", "pytest-loguru"]

[tool.pixi.feature.boltz]
pypi-dependencies = {"boltz" = "*", "cuequivariance-torch" = "*", "cuequivariance-ops-torch-cu12" = "*", "rdkit" = ">=2025.3.6"}
Expand All @@ -33,26 +34,66 @@ platforms = ["linux-64"]

[project]
authors = [{email = "karson.chrispens@ucsf.edu", name = "Karson Chrispens"}]
classifiers = [
"Development Status :: 3 - Alpha",
"Intended Audience :: Science/Research",
"License :: OSI Approved :: MIT License",
"Natural Language :: English",
"Operating System :: MacOS :: MacOS X",
"Operating System :: POSIX :: Linux",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Topic :: Scientific/Engineering :: Artificial Intelligence",
"Topic :: Scientific/Engineering :: Bio-Informatics",
"Topic :: Scientific/Engineering :: Chemistry"
Comment on lines +44 to +50
]
dependencies = [
"atomworks[ml]==2.1.1",
"python-dotenv",
"jaxtyping",
"jax",
"einx<0.4",
"hydra-core",
"jax",
"jaxtyping",
"loguru",
"omegaconf",
"python-dotenv",
"sfcalculator-torch>=0.3.2"
]
description = "Experimentally guided biomolecular ensemble generation."
keywords = ["biomolecular-structure", "crystallography", "diffusion", "ensemble-generation", "protein-structure"]
license = {file = "LICENSE"}
name = "sampleworks"
readme = "README.md"
requires-python = ">= 3.11, <3.14"
version = "0.10.0"

[project.urls]
Changelog = "https://github.com/diff-use/sampleworks/blob/main/CHANGELOG.md"
Homepage = "https://diffuse.science/posts/sampleworks/"
Issues = "https://github.com/diff-use/sampleworks/issues"
Repository = "https://github.com/diff-use/sampleworks"

[project.scripts]
sampleworks-analysis = "sampleworks.runs.analysis_cli:main"
sampleworks-guidance = "sampleworks.cli.guidance:main"
sampleworks-runs = "sampleworks.runs.cli:main"

[tool.hatch.build.targets.sdist]
include = [
"/analyses",
"/CHANGELOG.md",
"/experiments",
"/LICENSE",
"/pyproject.toml",
"/README.md",
"/src",
"/tests"
]

[tool.hatch.build.targets.wheel]
packages = ["src/sampleworks"]

[tool.hatch.build.targets.wheel.force-include]
"analyses" = "analyses"
"experiments" = "experiments"
Expand Down
Loading