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.2.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.2.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.2.0a0
File Size Uploaded
torch_openreml-0.2.0a0.tar.gz 63.4 kB Details

Built distribution (wheel)

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

Total release size: 151.7 kB

Release files / torch_openreml-0.2.0a0.tar.gz

Download URL torch_openreml-0.2.0a0.tar.gz
Size 63.4 kB
Tags Source
SHA-256 checksum
How to use checksums
26b76a22e221671aab7413149e065210902d4ec1251f00f4a9f37d117d6accde
BLAKE2b-256 checksum
How to use checksums
0d19a15938d0963cef3f826fddb836e45543ad66196da4fd08b5822ec7da1c87
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.2.0a0-py3-none-any.whl

Download URL torch_openreml-0.2.0a0-py3-none-any.whl
Size 88.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
012f1bd8407d28d5fb1eaa980708e5b671edc46b6ab4f1f1be208b77d7871a58
BLAKE2b-256 checksum
How to use checksums
3870ceb959154e1d87d96e6a0d02c866ffa43d3201567e52780e533f93a4a815
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