Skip to main content

TorchRef

A PyTorch-based crystallographic refinement library

Tests Python 3.10+ PyTorch License: MIT Documentation CUDA Apple Silicon MPS

TorchRef is a crystallographic refinement package built entirely on PyTorch. By leveraging PyTorch's automatic differentiation and GPU acceleration, TorchRef enables seamless integration with machine learning workflows and provides a flexible, extensible framework for crystallographic structure refinement.

**Scope TorchRef is a mainly a library/framework to build and experiment with. It is not intended to replace mainline refinement programs for standard problems.

Benchmark

TorchRef AlphaFold-start refinement benchmark

Refinement of Phaser-placed AlphaFold models against experimental data, benchmarked on a conserved set of ~720 PDB structures (1.4–3.0 Å) with all engines starting from the same placed models and scored by a single common validator.

  • (A) R-factors (PHENIX-validated). Starting from the AlphaFold prediction (green), TorchRef (red) drives R-work/R-free down to essentially the same cluster as REFMAC (purple) and PHENIX (blue). Median R-free is 0.3167 (TorchRef) vs 0.3166 (PHENIX) and 0.3161 (REFMAC5)
  • (B) Geometry (RMSZ vs REFMAC restraints). Bond, angle, chiral and main-chain B-factor RMS Z-scores. TorchRef produces valid, physically reasonable geometry; its restraints run slightly looser than PHENIX/REFMAC (bond RMSZ ≈ 1.3)
  • (C) Wall-clock runtime. Median runtime per structure (4 CPU cores). TorchRef (1.65 min) sits between REFMAC (0.53 min) and PHENIX (4.63 min) — ~2.8× faster than PHENIX, ~3× slower than REFMAC.
  • (D) Convergence speed (normalized). Fraction of the total R-free improvement achieved per macrocycle. The different programs show differing convergence behavior.

Key Features

  • Native PyTorch Integration: Built on PyTorch's nn.Module architecture, TorchRef integrates naturally with the PyTorch ecosystem, including machine learning models, optimizers, and GPU acceleration.

  • Automatic Differentiation: Dynamic computational graphs eliminate the need for manually implemented gradient calculations. Define new refinement targets directly—PyTorch handles the derivatives automatically.

  • Modular Architecture: Following PyTorch's module pattern, components are easily composable and extensible. Add custom targets, restraints, or optimizers without modifying core code.

  • GPU Acceleration: Leverage CUDA for structure factor calculations, scaling, and optimization—achieving significant speedups for large structures. Apple Silicon GPUs are also supported through PyTorch's MPS backend (unsupported ops fall back to CPU automatically via PYTORCH_ENABLE_MPS_FALLBACK=1, which TorchRef sets on import).

  • FFT-based Structure Factors: Efficient structure factor calculation using Fast Fourier Transform (FFT) methods, enabling rapid F_calc computation even for large unit cells.

Getting Started

Notebook Description
Open In Colab Quickstart — MTZ + PDB to refined structure, refined MTZ and CCP4 map; selection- and parameter-type-based refinement
Open In Colab Structure factors — one-liner, FFT class, and manual voxel pipeline; standalone scaling; autograd
Open In Colab Targets and weighting — standard targets, target-offset weighting, X-ray mode comparison, custom targets, driving an optimizer from a LossState

Installation

pip install torchref

Local installation for development

clone the repository

git clone https://github.com/HatPdotS/TorchRef.git cd torchref

Install with pip

pip install -e .

Or install with development dependencies

pip install -e ".[dev]"

Dependencies

  • Python ≥ 3.10
  • PyTorch ≥ 2.4
  • NumPy ≥ 2.0
  • Gemmi ≥ 0.5
  • reciprocalspaceship ≥ 0.9.18
  • SciPy ≥ 1.10

Testing

# Run all tests
pytest tests/

# Run with coverage
pytest tests/ --cov=torchref

# Run specific test categories
pytest tests/unit/           # Fast unit tests
pytest tests/integration/    # Integration tests
pytest tests/functional/     # Full workflow tests

Contributing

Contributions are welcome! Please follow these guidelines:

  1. Follow the NumPy docstring style
  2. Add tests for new functionality
  3. Ensure all tests pass before submitting

License

This project is licensed under the MIT License - see the LICENSE file for details.

Download files

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

Source Distribution

torchref-0.6.1.tar.gz (3.0 MB view details)

Uploaded Source

Built Distribution

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

torchref-0.6.1-py3-none-any.whl (3.2 MB view details)

Uploaded Python 3

File details

Details for the file torchref-0.6.1.tar.gz.

File metadata

  • Download URL: torchref-0.6.1.tar.gz
  • Upload date:
  • Size: 3.0 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for torchref-0.6.1.tar.gz
Algorithm Hash digest
SHA256 e256fe1403c1c044c1a6ee505dd0b75ba982cd6f4669bffa3a4770f8c7a7169e
MD5 2acafae446bdec291393c5fd01f7d35d
BLAKE2b-256 cb9479f393d19965ac9a5df9f98403293fbdedac5e4d39253d8c0d9d43790129

See more details on using hashes here.

Provenance

The following attestation bundles were made for torchref-0.6.1.tar.gz:

Publisher: publish.yml on HatPdotS/TorchRef

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file torchref-0.6.1-py3-none-any.whl.

File metadata

  • Download URL: torchref-0.6.1-py3-none-any.whl
  • Upload date:
  • Size: 3.2 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for torchref-0.6.1-py3-none-any.whl
Algorithm Hash digest
SHA256 5b6ee909fa7093c51299822ae576de84bef3f25044ed555a3009ba634cdacf37
MD5 9ccf7235763d8f3c25462a74ee8e754a
BLAKE2b-256 4fcfed0d4929120104ac0ec61e1be00b0b5d8d9b3b33a02a8c28fab0cfbdf7c0

See more details on using hashes here.

Provenance

The following attestation bundles were made for torchref-0.6.1-py3-none-any.whl:

Publisher: publish.yml on HatPdotS/TorchRef

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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