Metadata-Version: 2.1
Name: tmol
Version: 0.1.63
Summary: GPU-accelerated PyTorch reimplementation of the Rosetta energy function
Author-Email: Institute for Protein Design <contact@ipd.uw.edu>
License: Apache-2.0
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: Natural Language :: English
Classifier: Operating System :: POSIX :: Linux
Classifier: Operating System :: MacOS
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Topic :: Scientific/Engineering :: Bio-Informatics
Project-URL: Documentation, https://uw-ipd.github.io/tmol/
Project-URL: Issues, https://github.com/uw-ipd/tmol/issues
Project-URL: Repository, https://github.com/uw-ipd/tmol
Project-URL: Releases, https://github.com/uw-ipd/tmol/releases
Requires-Python: >=3.11
Requires-Dist: torch==2.14.*
Requires-Dist: numpy>=1.25
Requires-Dist: scipy>=1.13.1
Requires-Dist: attrs>=21.0
Requires-Dist: attrs_strict<2,>=1.0
Requires-Dist: cattrs>=22.0
Requires-Dist: frozendict>=2.4
Requires-Dist: pandas<4,>=2.2
Requires-Dist: pyarrow>=23.0.1
Requires-Dist: pyyaml>=6.0
Requires-Dist: networkx>=3.0
Requires-Dist: toolz<2,>=0.12.0
Requires-Dist: decorator>=4.0
Requires-Dist: typing_extensions<5,>=4.0
Requires-Dist: typing_inspect>=0.9
Requires-Dist: pint<1,>=0.23
Requires-Dist: requests<3,>=2.33
Requires-Dist: sparse>=0.13
Requires-Dist: numba>=0.56
Requires-Dist: llvmlite>=0.39
Requires-Dist: astor>=0.8
Requires-Dist: biotite==1.6.0
Requires-Dist: atomworks<4,>=3.0.0
Requires-Dist: rdkit>=2024.3.5
Requires-Dist: openbabel-wheel<4,>=3.1.1.23
Provides-Extra: dev
Requires-Dist: black==26.10.0; extra == "dev"
Requires-Dist: flake8==7.4.1; extra == "dev"
Requires-Dist: pre-commit>=4.0; extra == "dev"
Requires-Dist: clang-format==23.1.2; extra == "dev"
Requires-Dist: hypothesis>=5.35; extra == "dev"
Requires-Dist: psutil>=5.9; extra == "dev"
Requires-Dist: build>=1.2; extra == "dev"
Requires-Dist: pytest>=8.0; extra == "dev"
Requires-Dist: pytest-cov>=4.1; extra == "dev"
Requires-Dist: pytest-benchmark>=5.1; extra == "dev"
Requires-Dist: pytest-forked>=1.6; extra == "dev"
Requires-Dist: pytest-instafail>=0.5; extra == "dev"
Requires-Dist: pytest-repeat>=0.9; extra == "dev"
Requires-Dist: pytest-watch>=4.2; extra == "dev"
Requires-Dist: pytest-xdist>=3.6; extra == "dev"
Requires-Dist: ipython>=8.0; extra == "dev"
Requires-Dist: seaborn>=0.13; extra == "dev"
Provides-Extra: cuda
Requires-Dist: nvidia-cuda-nvcc>=13; extra == "cuda"
Requires-Dist: nvidia-cuda-cccl>=13; extra == "cuda"
Provides-Extra: docs
Requires-Dist: sphinx<10,>=8.0; extra == "docs"
Requires-Dist: pydata-sphinx-theme<1,>=0.16; extra == "docs"
Requires-Dist: myst-parser<6,>=4.0; extra == "docs"
Requires-Dist: nbsphinx<1,>=0.9; extra == "docs"
Requires-Dist: sphinx-togglebutton<1,>=0.3; extra == "docs"
Requires-Dist: matplotlib<4,>=3.8; extra == "docs"
Requires-Dist: pypandoc-binary<2,>=1.15; extra == "docs"
Requires-Dist: linkify-it-py<3,>=2.0; extra == "docs"
Requires-Dist: ipython>=8.0; extra == "docs"
Requires-Dist: py3Dmol<3,>=2.4; extra == "docs"
Requires-Dist: itables>=2.0; extra == "docs"
Requires-Dist: nbclient<1,>=0.10; extra == "docs"
Requires-Dist: nbformat<6,>=5.10; extra == "docs"
Requires-Dist: ipykernel<8,>=6.29; extra == "docs"
Description-Content-Type: text/markdown

<p align="center">
  <picture>
    <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/uw-ipd/tmol/master/docs/_static/brand/tmol-logo-dark.svg">
    <img src="https://raw.githubusercontent.com/uw-ipd/tmol/master/docs/_static/brand/tmol-logo-light.svg" alt="TMol" width="440">
  </picture>
</p>

<p align="center">
  <a href="https://pypi.org/project/tmol/"><img src="https://img.shields.io/pypi/v/tmol.svg" alt="PyPI version"></a>
  <a href="https://pypi.org/project/tmol/"><img src="https://img.shields.io/pypi/pyversions/tmol.svg" alt="Python versions"></a>
  <a href="https://pypi.org/project/tmol/"><img src="https://img.shields.io/pypi/dm/tmol.svg" alt="PyPI downloads"></a>
  <a href="https://github.com/uw-ipd/tmol/actions/workflows/ci.yml"><img src="https://github.com/uw-ipd/tmol/actions/workflows/ci.yml/badge.svg" alt="CI status"></a>
  <a href="https://uw-ipd.github.io/tmol/"><img src="https://github.com/uw-ipd/tmol/actions/workflows/docs.yml/badge.svg" alt="Documentation"></a>
  <a href="https://codecov.io/gh/uw-ipd/tmol"><img src="https://codecov.io/gh/uw-ipd/tmol/graph/badge.svg" alt="Code coverage"></a>
  <a href="https://github.com/uw-ipd/tmol/blob/master/LICENSE"><img src="https://img.shields.io/github/license/uw-ipd/tmol.svg" alt="License"></a>
</p>

TMol provides all-atom scoring, packing, minimization, and
FastRelax in PyTorch. It batches proteins, nucleic acids, ligands, and complexes
on CPU or CUDA, with gradients through coordinate scoring.

[Documentation](https://uw-ipd.github.io/tmol/) ·
[Tutorials](https://uw-ipd.github.io/tmol/latest/examples_index.html) ·
[API reference](https://uw-ipd.github.io/tmol/latest/api_reference.html)

## Install

For GPU scoring on Linux with PyTorch 2.14 and CUDA 13.2:

```bash
python -m pip install "torch==2.14.*" --only-binary=:all: --index-url https://download.pytorch.org/whl/cu132
python -m pip install "tmol==0.1.63+cu132torch2.14" --only-binary=:all: \
  --find-links https://uw-ipd.github.io/tmol/wheels/v0.1.63/cu132torch2.14/
```

For CPU scoring:

```bash
python -m pip install "tmol==0.1.63" --only-binary=:all:
```

PyPI provides CPU wheels; GitHub hosts CUDA variants. Both include AtomWorks 3
and ligand preparation with RDKit and OpenBabel. See the
[installation guide](https://uw-ipd.github.io/tmol/latest/installation.html)
for other CUDA/PyTorch combinations, platform support, and source builds.

Verify the installation:

```bash
python -c "import tmol; print(tmol.__version__)"
```

## Quick start

Score a structure on CPU. With a CUDA TMol wheel, use `torch.device("cuda")`:

```python
import torch
import tmol

device = torch.device("cpu")
pose = tmol.pose_stack_from_pdb("input.pdb", device)

score_function = tmol.beta2016_score_function(device)
score = score_function.render_whole_pose_scoring_module(pose)
print(score(pose.coords))
```

See the [quickstart](https://uw-ipd.github.io/tmol/latest/quickstart.html) for
scoring, minimization, repacking, FastRelax, batching, and ligand preparation.
The [visual glossary](https://uw-ipd.github.io/tmol/latest/terminology.html) explains
the concepts, and the [score playground](https://uw-ipd.github.io/tmol/latest/playground.html)
lets you rotate a side chain and inspect TMol scores in the browser. The
[task index](https://uw-ipd.github.io/tmol/latest/tutorial/recipe_index.html)
links individual operations to examples and APIs.

## Development

```bash
git clone https://github.com/uw-ipd/tmol.git
cd tmol
python -m pip install "scikit-build-core>=0.10" "cmake>=3.24,<4" "pybind11>=2.12" ninja packaging
python -m pip install --no-build-isolation -e ".[dev]"
```

The [development guide](https://uw-ipd.github.io/tmol/latest/user_guide/development.html)
covers builds, tests, benchmarks, and releases. See the
[contributor guide](https://uw-ipd.github.io/tmol/latest/contributor_guide.html)
for code and documentation conventions, or [agent skills](https://github.com/uw-ipd/tmol/blob/master/skills/README.md)
for reusable coding-agent instructions.

## Citation

If you use TMol in your work, please cite:

> Andrew Leaver-Fay, Jeff Flatten, Alex Ford, Joseph Kleinhenz, Henry Solberg,
> David Baker, Andrew M. Watkins, Brian Kuhlman, Frank DiMaio, *tmol: a
> GPU-accelerated, PyTorch implementation of Rosetta's relax protocol*
> (manuscript in preparation).

TMol is available under the terms in [LICENSE](https://github.com/uw-ipd/tmol/blob/master/LICENSE).
