Skip to main content

pypolymix logo

Docs Code style Coverage
Docs Code style: black Coverage Status

Pypolymix

pypolymix is a light-weight PyTorch companion for building stochastic surrogate models.

Documentation

Project documentation lives at https://sandialabs.github.io/pypolymix.

Installation

From PyPI:

python -m pip install pypolymix

Optional extras:

python -m pip install "pypolymix[examples]"
python -m pip install "pypolymix[docs]"
python -m pip install "pypolymix[dev]"

For local development:

python -m pip install -e ".[dev,docs,examples]"

Quickstart

Fit a 1D polynomial chaos model with a mix of stochastic and deterministic coefficients:

import torch

from pypolymix.parameter_groups import DeterministicGroup, IIDGaussianGroup
from pypolymix.surrogate_models import PolynomialChaosExpansion
from pypolymix import StochasticModel

torch.manual_seed(0)
x = torch.linspace(-1, 1, 200).unsqueeze(-1)
y = torch.sin(3 * x) + 0.1 * torch.randn_like(x)

surrogate_model = PolynomialChaosExpansion(num_inputs=1, num_outputs=1, degree=5)
num_params = surrogate_model.num_params()

parameter_groups = [
    IIDGaussianGroup("stochastic", 2),
    DeterministicGroup("deterministic", num_params - 2),
]

model = StochasticModel(surrogate_model=surrogate_model, parameter_groups=parameter_groups)

optimizer = torch.optim.Adam(model.parameters(), lr=5e-3)
for _ in range(500):
    optimizer.zero_grad()
    preds = model(x, num_samples=16).mean(dim=0)
    data_loss = torch.mean((preds - y) ** 2)
    loss = data_loss + 1e-3 * model.distribution_loss()
    loss.backward()
    optimizer.step()

with torch.no_grad():
    samples = model(x, num_samples=100)
    mean = samples.mean(dim=0)
    std = samples.std(dim=0)

Polynomial chaos example

Development

If you use Poetry:

poetry install --with dev,docs,examples

Install the pre-commit hook:

pre-commit install

Examples

Notebooks live in docs/examples/ and are rendered on the documentation site.

For a full end-to-end workflow rather than a single notebook, see docs/examples/constitutive_model/: a runnable mixture-of-experts surrogate for a constitutive model, covering the data contract, transforms, training with checkpointing, and evaluation by integrating the learned right-hand side forward in time.

Download files

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

Source Distribution

pypolymix-0.1.9.tar.gz (16.2 kB view details)

Uploaded Source

Built Distribution

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

pypolymix-0.1.9-py3-none-any.whl (21.7 kB view details)

Uploaded Python 3

File details

Details for the file pypolymix-0.1.9.tar.gz.

File metadata

  • Download URL: pypolymix-0.1.9.tar.gz
  • Upload date:
  • Size: 16.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for pypolymix-0.1.9.tar.gz
Algorithm Hash digest
SHA256 3522543f671c88d9c73c0804d5baaf990a53f484656fc2bb063c41a31ce4629c
MD5 dd724b5fcc7e51149a8e400d6937b64e
BLAKE2b-256 8fd68902140ed6ddf802c16f8a3f4c70983f21d0964816fe989876961cae743c

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypolymix-0.1.9.tar.gz:

Publisher: publish-on-tag.yml on sandialabs/pypolymix

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

File details

Details for the file pypolymix-0.1.9-py3-none-any.whl.

File metadata

  • Download URL: pypolymix-0.1.9-py3-none-any.whl
  • Upload date:
  • Size: 21.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for pypolymix-0.1.9-py3-none-any.whl
Algorithm Hash digest
SHA256 6144189a1efac0f972756a24c5840d29fbeb52865eedeb5f396075f505a3321d
MD5 966405feb1c64d91eecc6643b4b1be50
BLAKE2b-256 25dcd5be1cc2db3ccdc45613968414429fabd2ec7a4d428a569077ea9d6de9c9

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypolymix-0.1.9-py3-none-any.whl:

Publisher: publish-on-tag.yml on sandialabs/pypolymix

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

Release history Release notifications | RSS feed

This release

0.1.9 This release

2 files

0.1.8

2 files

0.1.7

2 files

0.1.6

2 files

0.1.5

2 files

0.1.4

2 files

0.1.3

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 files

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