Gvar extensions¶
Index¶
gvar_gufunc
, switchgvar
, jacobian
, from_jacobian
, gvar_format
, uformat
, fmtspec_kwargs
- 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
- 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
.
See also
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
- 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
- lsqfitgp.gvar_format(spec=None, *, lsqfitgp_format=True)[source]¶
Context manager to set the default format specification of gvars.
- Parameters:
See also
Notes
See
fmtspec_kwargs
for the format specification, anduformat
for all details.
- lsqfitgp.uformat(mu, s, errdig=2, sep=None, *, shareexp=True, outersign=False, uniexp=False, minnegexp=6, minposexp=4, padzero=None, possign=False)[source]¶
Format a number with uncertainty.
- Parameters:
- munumber
The central value.
- snumber
The error.
- errdignumber
The number of digits of the error to be shown. Must be >= 1. It can be a noninteger, in which case the number of digits switches between the lower nearest integer to the upper nearest integer as the first decimal digit (after rounding) crosses 10 raised to the fractional part of
errdig
. Default 1.5.- sepNone or str
The separator put between the central value and the error. Eventual spaces must be included. If None, put the error between parentheses, sharing decimal places/exponential notation with the central value. Default None.
- shareexpbool, default True
Applies if
sep
is notNone
. When using exponential notation, whether to share the exponent between central value and error with outer parentheses.- outersignbool
Applied when sep is not None and shareexp is True. Whether to put the sign outside or within the parentheses. Default False
- uniexpbool
When using exponential notation, whether to use unicode characters instead of the standard ASCII notation. Default False.
- minnegexpint
The number of places after the comma at which the notation switches to exponential notation. Default 4. The number of places from the greater between central value and error is considered.
- minposexpint
The power of ten of the least significant digit at which exponential notation is used. Default 0. Setting higher values may force padding the error with zeros, depending on
errdig
.- padzerostr, optional
If provided, a character representing 0 to pad with when not using exponential notation due to
minposexp
even if the least significant digit is not on the units, instead of showing more actual digits than those specified.- possignbool, default False
Whether to put a
+
before the central value when it is positive.
- Returns:
- rstr
The quantity (mu +/- s) nicely formatted.
- lsqfitgp.fmtspec_kwargs(spec)[source]¶
Parse a string formatting pattern to be used with
uformat
.- Parameters:
- specstr
The format specification. It must follow the format
[options](error digits)[:minimum exponent](mode)
where brackets indicate optional parts.
- Returns:
- kwargsdict
The keyword arguments to be passed to
uformat
.
Notes
Full format:
Options: any combination these characters:
- ‘+’ :
Put a ‘+’ before positive central values.
- ‘-’ :
Put the sign outside the parentheses used to group the central value and error mantissas in exponential notation.
- ‘#’ :
Do not show non-significative digits at all costs, replacing them with lowercase ‘o’, representing a rounding 0 rather than a significative 0.
- ‘$’ :
In exponential notation, repeat the exponent for the central value and error.
Error digits: a decimal number expressing the number of leading error digits to show. Non-integer values indicate that the number of digits switches from the floor to the ceil at some value of the mantissa.
Minimum exponent: a decimal number expressing the minimum exponent at which exponential notation is used.
Mode: one of these characters:
- ‘p’ :
Put the error between parentheses.
- ‘s’ :
Separate the central value from the error with ‘+/-‘.
- ‘u’ :
Separate the central value from the error with ‘±’.
- ‘U’ :
Separate the central value from the error with ‘±’, and use unicode superscript characters for exponential notation.