Skip to main content

projplot: Utilities for Creating Projection Plots

projplot provides a set of tools to assess whether or not an optimization algorithm has converged to a local optimum. Its main function does this by visualizing the "projection plots" of the objective function f(x) -- that is, by plotting f against each coordinate of x with the other coordinates fixed at the corresponding elements of the candidate optimal solution x_opt.

This package has a similar goal to the R package optimCheck.

Installation

This package is available on PyPi and can be installed as follows:

pip install projplot

Documentation

Available on Read the Docs.

Example

An overview of the package functionality is illustrated with the following example. Let f(x) = x^TAx - 2b^Tx denote a quadratic objective function in x, which is in the d-dimensional real space. If A is a positive-definite d x d matrix, then the unique minimum of f(x) is x_opt =A^{-1}b.

For example, suppose we have

import numpy as np

A = np.array([[3., 2.],
              [2., 7.]])
b = np.array([1., 10.])

Then we have that the optimal solution is x_opt = (-0.765, 1.647). Now, projplot allows us to complete a visual check. The following information will need to be provided:

  • The objective function (obj_fun): This can be either a vectorized or non-vectorized function.
  • Optimal values (x_opt): This will be the optimal solution for your function.
  • Upper and lower bounds for each parameter (x_lims): This will provide an initial range of values to observe.
  • Parameter names (x_names): These are the names of your parameters, i.e. theta, mu, sigma
  • The number of points to plot for each parameter (n_pts): This is the number of points that each parameter will be evaluated at for their respective plot.
# Optimal values
x_opt = np.array([-0.765,  1.647])

# Upper and lower bounds for each component of x
x_lims = np.array([[-3., 1], [0, 4]])

# Parameter names
x_names = ["x1", "x2"]

# Number of evaluation points per coordinate
n_pts = 10

import projplot as pjp

def obj_fun(x):
    '''Compute x'Ax - 2b'x.'''
    y = np.dot(np.dot(x.T, A), x) - 2 * np.dot(b, x)
    return y

# Obtain plots with vertical x lines
pjp.proj_plot(obj_fun, x_opt=x_opt, x_lims=x_lims,
              x_names=x_names, n_pts=n_pts,
              opt_vlines=True)

alt

Further Reading

See documentation for advanced use cases and an FAQ.

Metadata

Release files for projplot 1.0

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

Built distribution (wheel)

Table of built distributions (wheels) for projplot 1.0
File Interpreter ABI Platform
projplot-1.0-py3-none-any.whl Python 3 none any Details

Release files / projplot-1.0-py3-none-any.whl

Download URL projplot-1.0-py3-none-any.whl
Size 5.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
323bc79c88803c6d75da4948bd1590a18739bcfc1bdbb4d8e01e5414fc5f6fb9
BLAKE2b-256 checksum
How to use checksums
1e1f79610239b679b496853d050ebf52f42a935376a740cef23d75acace55f17
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.8.13

Security for projplot 1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Release history Release notifications | RSS feed

This release

1.0 This release

1 release file No provenance

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