Skip to main content

A light-weight PyTorch companion for building stochastic surrogate models

Project description

pypolymix logo

Docs Code style
Docs Code style: black

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.

Project details


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.8.tar.gz (15.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.8-py3-none-any.whl (21.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: pypolymix-0.1.8.tar.gz
  • Upload date:
  • Size: 15.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pypolymix-0.1.8.tar.gz
Algorithm Hash digest
SHA256 8ba802a6cbbd8179c0f3783f37798b002ff1d23595548f1ccf0573569125c097
MD5 a43ec5b9776ba15cb9bb181aeb9e0773
BLAKE2b-256 da017a266b4c4eb96098dc255ab70665d8aae1126206411b3590d970d071bd88

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypolymix-0.1.8.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.8-py3-none-any.whl.

File metadata

  • Download URL: pypolymix-0.1.8-py3-none-any.whl
  • Upload date:
  • Size: 21.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pypolymix-0.1.8-py3-none-any.whl
Algorithm Hash digest
SHA256 30e5c842f1fd00c9a0c177bf691c2b018e234b319a7e6e69e963665457ae83d8
MD5 afa8c6ee14e010b8f212eb154509c9e0
BLAKE2b-256 0cfb33d71da2e6002d3e41c826feab5b02f333be85c1ed038aea803092fc50d5

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypolymix-0.1.8-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.

Supported by

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