Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

torch-openreml

torch-openreml

Development version 0.3.0-alpha PyPI version GPL-3.0 Python >=3.10 PyTorch >=2.0 Experimental

torch-openreml is a PyTorch-based library for AI-REML estimation of linear mixed models.

Author & Maintainer: Weihao (Patrick) Li — patrick.li@anu.edu.au

Overview

torch-openreml fits linear mixed-effects models using the Average Information REML (AI-REML) algorithm on a PyTorch backend. Covariance structures are specified through a modular system of matrices and operators, with automatic or manually specified gradients and optional parameter transformations for constrained estimation.

Unlike traditional mixed-model software, it does not provide a formula interface. Fixed- and random-effects design matrices and covariance structures are defined directly in code, so the library stays focused on the computational and optimisation backend rather than model specification syntax.

Features

  • Torch-based backend — runs on CPU, GPU, and other available accelerators.
  • AI-REML estimation engine — variance components by quasi-Newton optimisation on the Average Information matrix.
  • Extensible covariance structure — composable matrices and operators, built-in or user-defined.
  • Hybrid differentiation — automatic differentiation or manually specified gradients.
  • Composable parameter transformations — chainable pipelines for flexible parameterisation.

Installation

Install the latest development version directly from GitHub:

pip install git+https://github.com/anu-aagi/torch-openreml.git

Dependencies: torch>=2.0, pandas, tqdm — Python 3.10 or later.

Model

The library assumes the standard linear mixed-effects model

$$y = X\beta + Zb + \varepsilon$$

with

$$b \sim \mathcal{N}(0, G(\theta)), \qquad \varepsilon \sim \mathcal{N}(0, R(\theta)),$$

so that the marginal covariance of $y$ is

$$V = Z G(\theta) Z^\top + R(\theta).$$

Quick start

The example below fits yield from the bundled john_alpha dataset — a resolvable alpha lattice trial — with a fixed effect for rep, a random intercept for gen, and a random rep:block interaction.

import torch
from torch_openreml import MarginalREML
from torch_openreml.utils import augment, n_distinct
from torch_openreml.covariance import (
    DummyMatrix, IdentityMatrix, ScalarMatrix, Sum,
    CovariancePropagation, KroneckerProduct,
)
from torch_openreml.example_data import john_alpha

y = torch.tensor(john_alpha["yield"].values)
X = augment(torch.ones(len(john_alpha), 1),
            DummyMatrix(john_alpha["rep"], drop_first=True)())

Z_gen = DummyMatrix(john_alpha["gen"])
Z_rep_block = DummyMatrix(john_alpha["rep"], john_alpha["block"])

G_gen = ScalarMatrix(n_distinct(john_alpha["gen"]))
G_rep = IdentityMatrix(n_distinct(john_alpha["rep"]))
G_block = ScalarMatrix(n_distinct(john_alpha["block"]))
R = ScalarMatrix(len(john_alpha))

V = Sum(
    CovariancePropagation(Z_gen, G_gen),
    CovariancePropagation(Z_rep_block, KroneckerProduct(G_rep, G_block)),
    R,
)

reml = MarginalREML(V)
theta_hat, beta_hat, n_iter = reml.optimize(y, X, torch.zeros(3), verbose=2)
print(V.build_params(theta_hat), beta_hat)

Fitting happens on the transformed parameter scale; V.build_params maps the estimates back to variance components, named by V.free_param_names.

Documentation

Full documentation: https://torch-openreml.patrickli.org

Citing

@software{torch_openreml,
  author = {Weihao Li},
  title  = {torch-openreml},
  year   = {2026},
  url    = {https://github.com/anu-aagi/torch-openreml/}
}

Status

⚠️ Experimental. The library is under active development. Interfaces and implementations may change without backward-compatibility guarantees, and it may be slightly inefficient.

Metadata

Release files for torch-openreml 0.3.0a0

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

Source distribution (sdist)

Source distribution for torch-openreml 0.3.0a0
File Size Uploaded
torch_openreml-0.3.0a0.tar.gz 66.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for torch-openreml 0.3.0a0
File Interpreter ABI Platform
torch_openreml-0.3.0a0-py3-none-any.whl Python 3 none any Details

Total release size: 158.3 kB

Release files / torch_openreml-0.3.0a0.tar.gz

Download URL torch_openreml-0.3.0a0.tar.gz
Size 66.3 kB
Tags Source
SHA-256 checksum
How to use checksums
e27dccef0dea7598066a21553e58d532e7324ee0db375e8c051d94e949f06c76
BLAKE2b-256 checksum
How to use checksums
00a570f2760e0bfdcf54e44f6fa1212e843c3a7b8695e0201df84deff0be3a17
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.12

Release files / torch_openreml-0.3.0a0-py3-none-any.whl

Download URL torch_openreml-0.3.0a0-py3-none-any.whl
Size 92.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a326e057e7de2d5f7ec659ee6c15467e616ec8a29ad0c222c4e10568704fa29f
BLAKE2b-256 checksum
How to use checksums
215cf91a67f7be51d6a4bd7f54147e41c662f6219aa41fd902ec84bda1a4dd80
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.12
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