Gvar extensions

lsqfitgp.gvar_gufunc(func, *, signature=None)[source]

Wraps a jax-traceable generalized ufunc with one argument to support gvars.

Parameters:
funccallable

A function from one array to one array. It must be a generalized ufunc, and differentiable one time with jax.

signaturestr, optional

The signature of the generalized ufunc. If not specified, it is assumed to be scalar to scalar (normal ufunc).

Returns:
decorated_funccallable

A function that, in addition to numerical arrays, accepts gvars and returns gvars.

See also

numpy.vectorize
lsqfitgp.switchgvar()[source]

Context manager to keep new gvars in a separate pool.

Creating new primary gvars fills up memory permanently. This context manager keeps the gvars created within its context in a separate pool that is freed when all such gvars are deleted. They can not be mixed in operations with other gvars created outside of the context.

Returns:
gvargvar.GVarFactory

The new gvar-creating function that uses a new pool. The change is also reflected in the global gvar.gvar.

Examples

>>> x = gvar.gvar(0, 1)
>>> with lgp.switchgvar():
>>>     y = gvar.gvar(0, 1)
>>>     z = gvar.gvar(0, 1)
>>> w = gvar.gvar(0, 1)
>>> q = y + z  # allowed, y and z created in the same pool
>>> p = x + w  # allowed, x and w created in the same pool
>>> h = x + y  # x and y created in different pools: this will silently
...            # fail and possibly crash python immediately or later on
lsqfitgp.jacobian(g)[source]

Extract the jacobian of gvars w.r.t. primary gvars.

Parameters:
garray_like

An array of numbers or gvars.

Returns:
jacarray

The shape is g.shape + (m,), where m is the total number of primary gvars that g depends on.

indices(m,) int array

The indices that map the last axis of jac to primary gvars in the global covariance matrix.

See also

from_jacobian
lsqfitgp.from_jacobian(mean, jac, indices)[source]

Create new gvars from a jacobian w.r.t. primary gvars.

Parameters:
meanarray_like

An array of numbers with the means of the new gvars.

jacmean.shape + (m,) array

The derivatives of each new gvar w.r.t. m primary gvars.

indices(m,) int array

The indices of the primary gvars.

Returns:
gmean.shape array

The new gvars.

See also

jacobian