Skip to main content

Parameter Space Dimension Reduction Toolbox

Project description

PSDR: Parameter Space Dimension Reduction Toolbox

PyPI version Documentation Status Build Status Coverage Status

Author: Jeffrey M. Hokanson, Postdoctoral Fellow at the University of Colorado Boulder (jeffrey@hokanson.us)

Introduction

Given a function mapping some subset of an m-dimensional space to a scalar value

f: D subset R^m to R

parameter space dimension reduction seeks to identify a low-dimensional manifold of the input along which this function varies the most. Frequently we will choose to use a linear manifold and consequently identify linear combinations of input variables along which the function varies the most; we call this subspace-based dimension reduction. There also techniques that identify a set of active variables (coordinate-based dimension reduction) and methods that identity low-dimensional nonlinear manifolds of the input (nonlinear dimension reduction).

We emphasize that this library is for parameter space dimension reduction as the term 'dimension reduction' often appears in other contexts. For example, model reduction is often referred to as dimension reduction because it reduces the state-space dimension of a set of differential equations, yielding a smaller set of differential equations.

Simple example

One basic use of the library is to identify an active subspace using the outer product of gradients:

import psdr, psdr.demos
fun = psdr.demos.Borehole()    # load a test problem
X = fun.domain.sample(1000)    # sample points from the domain with uniform probabilty
grads = fun.grad(X)            # evaluate the gradient at the points in X
act = psdr.ActiveSubspace()    # initialize a class to find the Active Subspace
act.fit(grads)                 # estimate the active subspace using these Monte-Carlo samples
print(act.U[:,0])              # print the most important linear combination of variables

>>> array([ 9.19118904e-01, -2.26566967e-03,  2.90116247e-06,  2.17665629e-01,
        2.78485430e-03, -2.17665629e-01, -2.21695479e-01,  1.06310937e-01])

We can then create a shadow plot showing the projection of the input to this function onto a one-dimensional subspace spanned by the important linear combination identified above

import matplotlib.pyplot as plt
fX = fun(X)                    # evaluate the function at the points X
act.shadow_plot(X, fX)         # generate the shadow plot
plt.show()                     # draw the results

A shadow plot for the borehole function

We say this function is has low-dimensional structure since the output of the function is well described by the value of this one linear combination of its input parameters.

Documentation

For further documentation, please see our page on Read the Docs.

Similar Software

Contributing

I welcome contributions to this library, particularly of test functions similar to those in psdr.demos. Please submit a pull request along with unit tests for the proposed code. If you are submitting a complex test function that requires calling code outside of Python, please submit a Docker image along with a docker file generating that image (see the OpenAeroStruct demo function for an example of how to do this).

Contributors

  • Zach Grey
  • Lakshya Sharma

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

psdr-0.3.8.tar.gz (124.6 kB view details)

Uploaded Source

File details

Details for the file psdr-0.3.8.tar.gz.

File metadata

  • Download URL: psdr-0.3.8.tar.gz
  • Upload date:
  • Size: 124.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.49.0 CPython/3.7.6

File hashes

Hashes for psdr-0.3.8.tar.gz
Algorithm Hash digest
SHA256 5c281874f3212de7ad400b7c7c28e44451d7d5ee37f1113ad295ee21a65882de
MD5 f8ad3857bec4240c92b16e2668362b53
BLAKE2b-256 d13b91f4cb0da20a851a691bda7f6a27eb01a58be1dbe3da792fc79484709927

See more details on using hashes here.

Supported by

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