FFTConvPDFV1#
- class zfit.pdf.FFTConvPDFV1(func, kernel, n=None, limits_func=None, limits_kernel=None, interpolation=None, obs=None, *, extended=None, norm=None, name='FFTConvV1', label=None)[source]#
Bases:
BaseFunctor
,SerializableMixin
EXPERIMENTAL Numerical Convolution pdf of
func
convoluted withkernel
using FFT.CURRENTLY ONLY 1 DIMENSIONAL!
EXPERIMENTAL: Feedback is very welcome! Performance, which parameters to tune, which fail etc.
TL;DR technical details:
FFT-like technique: discretization of function. Number of bins splits the kernel into
n
bins and uses the same binwidth for the func while extending it by the kernel space. Internally,tf.nn.convolution
is used.Then interpolation by either linear or spline function
The kernel is assumed to be “small enough” outside of it’s
space
and points there won’t be evaluated.
The convolution of two (normalized) functions is defined as
\[(f * g)(t) \triangleq\ \int_{-\infty}^\infty f(\tau) g(t - \tau) \, d\tau\]It defines the “smearing” of
func
by akernel
. This is when an element infunc
is randomly added to an element ofkernel
. While the sampling (the addition of elements) is rather simple to do computationally, the calculation of the convolutional PDF (if there is no analytic solution available) is not, as it requires:an integral from -inf to inf
an integral for every point of x that is requested
This can be solved with a few tricks. Instead of integrating to infinity, it is usually sufficient to integrate from a point where the function is “small enough”.
If the functions are arbitrary and with conditional dependencies, there is no way around an integral and another PDF has to be used. If the two functions are uncorrelated, a simplified version can be done by a discretization of the space (followed by a Fast Fourier Transfrom, after which the convolution becomes a simple multiplication) and a discrete convolution can be performed.
An interpolation of the discrete convolution for the requested points
x
is performed afterwards.- Parameters:
func (
ZfitPDF
) – PDF withpdf
method that takes x and returns the function value. Here x is aData
with the obs and limits of limits.kernel (
ZfitPDF
) – PDF withpdf
method that takes x acting as the kernel. Here x is aData
with the obs and limits of limits.n (
int
|None
) – Number of points per dimension to evaluate the kernel and pdf at. The higher the number of points, the more accurate the convolution at the cost of computing time. IfNone
, a heuristic is used (default to 100 in 1 dimension).limits_func (
Union
[Tuple
[Tuple
[float
,...
]],Tuple
[float
,...
],bool
,Space
,float
,None
]) –Specify in which limits the
func
should be evaluated for the convolution:If
None
, the limits from thefunc
are used and extended by a
default value (relative 0.2).
If float: the fraction of the limit do be extended. 0 means no extension, 1 would extend the limits to each side by the same size resulting in a tripled size (for 1 dimension). As an example, the limits (1, 5) with a
limits_func
of 0.5 would result in effective limits of (-1, 7), as 0.5 * (5 - 1) = 2 has been added to each side.If a space with limits is used, this is taken as the range.
limits_kernel (
Union
[Tuple
[Tuple
[float
,...
]],Tuple
[float
,...
],bool
,Space
,None
]) – the limits of the kernel. Usually not needed to change and automatically taken from the kernel.Specify the method that is used for interpolation. Available methods are:
’linear’: this is the default for any convolution > 1 dimensional. It is a fast, linear interpolation between the evaluated points and approximates the function reasonably well in case of high number of points and a smooth response.
’spline’ or
f'spline:{order}'
: a spline interpolation with polynomials. If the order is not specified, a default is used. To specify the order, ‘spline’ should be followed an integer, separated by a colon as e.g. in ‘spline:3’ to use a spline of order three. This method is considerably more computationally expensive as it requires to solve a system of equations. When using 1000+ points this can affect the runtime critical. However, it provides better solution, a curve that is smooth even with less points than for a linear interpolation.
obs (
Union
[str
,Iterable
[str
],Space
,None
]) –Observables of the model. This will be used as the default space of the PDF and, if not given explicitly, as the normalization range.
The default space is used for example in the sample method: if no sampling limits are given, the default space is used.
If the observables are binned and the model is unbinned, the model will be a binned model, by wrapping the model in a
BinnedFromUnbinnedPDF
, equivalent to callingto_binned()
.The observables are not equal to the domain as it does not restrict or truncate the model outside this range.If not specified, automatically taken from
func
extended (
Union
[bool
,TypeVar
(ParamTypeInput
, zfit.core.interfaces.ZfitParameter,Union
[int
,float
,complex
,Tensor
, zfit.core.interfaces.ZfitParameter]),None
]) – The overall yield of the PDF. If this is parameter-like, it will be used as the yield, the expected number of events, and the PDF will be extended. An extended PDF has additional functionality, such as theext_*
methods and thecounts
(for binned PDFs).norm (
Optional
[Space
]) – Normalization of the PDF. By default, this is the same as the default space of the PDF.name (
str
) – Name of the PDF. Maybe has implications on the serialization and deserialization of the PDF. For a human-readable name, use the label.label (
str
|None
) – Human-readable name or label of the PDF for a better description, to be used with plots etc. Has no programmatical functional purpose as identification.
- add_cache_deps(cache_deps, allow_non_cachable=True)#
Add dependencies that render the cache invalid if they change.
- analytic_integrate(limits, norm=None, *, params=None)#
Analytical integration over function and raise Error if not possible.
- Parameters:
limits (
Union
[Tuple
[Tuple
[float
,...
]],Tuple
[float
,...
],bool
,Space
]) – Limits of the integration.norm (
Union
[Tuple
[Tuple
[float
,...
]],Tuple
[float
,...
],bool
,Space
]) – Normalization of the integration. By default, this is the same as the default space of the PDF.False
means no normalization and returns the unnormed integral.params (
TypeVar
(ParamTypeInput
, zfit.core.interfaces.ZfitParameter,Union
[int
,float
,complex
,Tensor
, zfit.core.interfaces.ZfitParameter])) – Mapping of the parameter names to the actual values. The parameter names refer to the names of the parameters, typicallyParameter
, that the model was _initialized_ with, not the name of the models parametrization.
- Return type:
- Returns:
The integral value
- Raises:
AnalyticIntegralNotImplementedError – If no analytical integral is available (for this limits).
NormRangeNotImplementedError – if the norm argument is not supported. This means that no analytical normalization is available, explicitly: the analytical integral over the limits = norm is not available.
- as_func(norm=False)#
Return a
Function
with the functionmodel(x, norm=norm)
.
- copy(**override_parameters)#
Creates a copy of the model.
Note: the copy model may continue to depend on the original initialization arguments.
- Parameters:
**override_parameters – String/value dictionary of initialization arguments to override with new value.
- Return type:
- Returns:
- A new instance of
type(self)
initialized from the union of self.parameters and override_parameters, i.e.,
dict(self.parameters, **override_parameters)
.
- A new instance of
- create_extended(yield_, name=None, *, name_addition=None)#
Return an extended version of this pdf with yield
yield_
. The parameters are shared.- Parameters:
yield – Yield (expected number of events) of the PDF. This is the expected number of events. If this is parameter-like, it will be used as the yield, the expected number of events, and the PDF will be extended. An extended PDF has additional functionality, such as the
ext_*
methods and thecounts
(for binned PDFs).name (
str
|None
) – New name of the PDF. IfNone
, the name of the PDF with a trailing “_ext” is used.
- Returns:
a new PDF that is extended
- Return type:
ZfitPDF
- create_projection_pdf(*, limits=None, obs=None, options=None, name=None, label=None, extended=None, norm=None)#
Create a PDF projection by integrating out some dimensions.
The new projection pdf is still fully dependent on the pdf it was created with.
- Parameters:
limits (
Union
[ZfitLimit
,Tensor
,ndarray
,Iterable
[float
],float
,Tuple
[float
],List
[float
],bool
,None
]) – Limits of the integration to project out. If not given, all observables that are not inobs
are projected on using the default limits of the observables.obs (
Union
[ZfitLimit
,Tensor
,ndarray
,Iterable
[float
],float
,Tuple
[float
],List
[float
],bool
,None
]) – Observables to project on. If not given, all observables that are not inlimits
are projected on.options –
Options for the integration. Additional options for the integration. Currently supported options are: - type: one of (
bins
)This hints that bins are integrated. A method that is vectorizable, non-dynamic and therefore less suitable for complicated functions is chosen.
- Return type:
ZfitPDF
- Returns:
A pdf without the dimensions from
limits
.
- create_sampler(n=None, limits=None, *, fixed_params=None, params=None)#
Create a
SamplerData
that acts asData
but can be resampled, also with changed parameters and (deprecated arguments)Deprecated: SOME ARGUMENTS ARE DEPRECATED:
(fixed_params)
. They will be removed in a future version. Instructions for updating: Useparams
instead.If
limits
is not specified,space
is used (if the space contains limits). Ifn
is None and the model is an extended pdf, ‘extended’ is used by default.
- Parameters:
The number of samples to be generated. Can be a Tensor that will be or a valid string. Currently implemented:
’extended’: samples
poisson(yield)
from each pdf that is extended.
limits (
Union
[Tuple
[Tuple
[float
,...
]],Tuple
[float
,...
],bool
,Space
]) – From which space to sample.fixed_params (
Union
[bool
,list
[ZfitParameter
],tuple
[ZfitParameter
],None
]) – A list ofParameters
that will be fixed during severalresample
calls. If True, all are fixed, if False, all are floating. If aParameter
is not fixed and its value gets updated (e.g. by aParameter.set_value()
call), this will be reflected inresample
. If fixed, the Parameter will still have the same value as theSamplerData
has been created with when it resamples.params (
TypeVar
(ParamTypeInput
, zfit.core.interfaces.ZfitParameter,Union
[int
,float
,complex
,Tensor
, zfit.core.interfaces.ZfitParameter])) – Mapping of the parameter names to the actual values. The parameter names refer to the names of the parameters, typicallyParameter
, that the model was _initialized_ with, not the name of the models parametrization.
- Return type:
- Returns:
- Raises:
NotExtendedPDFError – if ‘extended’ is chosen (implicitly by default or explicitly) as an option for
n
but the pdf itself is not extended.ValueError – if n is an invalid string option.
InvalidArgumentError – if n is not specified and pdf is not extended.
- property dtype: DType#
The dtype of the object.
- property extended: Parameter | None#
Return the yield (only for extended models).
- Returns:
The yield of the current model or None
- classmethod from_asdf(asdf_obj, *, reuse_params=None)#
Load an object from an asdf file.
Args#
asdf_obj: Object reuse_params:If parameters, the parameters
will be reused if they are given. If a parameter is given, it will be used as the parameter with the same name. If a parameter is not given, a new parameter will be created.
- classmethod from_dict(dict_, *, reuse_params=None)#
Creates an object from a dictionary structure as generated by
to_dict
.- Parameters:
dict – Dictionary structure.
reuse_params – If parameters, the parameters will be reused if they are given. If a parameter is given, it will be used as the parameter with the same name. If a parameter is not given, a new parameter will be created.
- Returns:
The deserialized object.
- classmethod from_json(cls, json, *, reuse_params=None)#
Load an object from a json string.
- Parameters:
json (
str
) – Serialized object in a JSON string.reuse_params – If parameters, the parameters will be reused if they are given. If a parameter is given, it will be used as the parameter with the same name. If a parameter is not given, a new parameter will be created.
- Return type:
- Returns:
The deserialized object.
- get_cache_deps(only_floating=True)#
Return a set of all independent
Parameter
that this object depends on.- Parameters:
only_floating (
bool
) – IfTrue
, only return floatingParameter
- Return type:
OrderedSet
- get_dependencies(only_floating: bool = True) ztyping.DependentsType #
DEPRECATED FUNCTION
Deprecated: THIS FUNCTION IS DEPRECATED. It will be removed in a future version. Instructions for updating: Use
get_params
instead if you want to retrieve the independent parameters orget_cache_deps
in case you need the numerical cache dependents (advanced).- Return type:
OrderedSet
- get_params(floating=True, is_yield=None, extract_independent=True, only_floating=<class 'zfit.util.checks.NotSpecified'>)#
Recursively collect parameters that this object depends on according to the filter criteria.
- Which parameters should be included can be steered using the arguments as a filter.
- None: do not filter on this. E.g.
floating=None
will return parameters that are floating as well as parameters that are fixed.
- None: do not filter on this. E.g.
True: only return parameters that fulfil this criterion
- False: only return parameters that do not fulfil this criterion. E.g.
floating=False
will return only parameters that are not floating.
- False: only return parameters that do not fulfil this criterion. E.g.
- Parameters:
floating (
bool
|None
) – if a parameter is floating, e.g. iffloating()
returnsTrue
is_yield (
bool
|None
) – if a parameter is a yield of the _current_ model. This won’t be applied recursively, but may include yields if they do also represent a parameter parametrizing the shape. So if the yield of the current model depends on other yields (or also non-yields), this will be included. If, however, just submodels depend on a yield (as their yield) and it is not correlated to the output of our model, they won’t be included.extract_independent (
bool
|None
) – If the parameter is an independent parameter, i.e. if it is aZfitIndependentParameter
.
- Return type:
set
[ZfitParameter
]
- classmethod get_repr()#
Abstract representation of the object for serialization.
This objects knows how to serialize and deserialize the object and is used by the
to_json
,from_json
,to_dict
andfrom_dict
methods.- Returns:
The representation of the object.
- Return type:
pydantic.BaseModel
- get_yield()#
Return the yield (only for extended models).
- log_normalization(norm, *, options=None, params=None)#
Return the normalization of the function (usually the integral over
norm
).- Parameters:
norm (
Union
[Tuple
[Tuple
[float
,...
]],Tuple
[float
,...
],bool
,Space
]) – Normalization of the function. By default, this is thenorm
of the PDF (which by default is the same as the space of the PDF). Should beZfitSpace
to define the space to normalize over.options – |@doc:pdf.param.options||@docend:pdf.param.options|
params (
Optional
[Iterable
[ZfitParameter
]]) – Mapping of the parameter names to the actual values. The parameter names refer to the names of the parameters, typicallyParameter
, that the model was _initialized_ with, not the name of the models parametrization.
- Return type:
- Returns:
The normalization value
- log_pdf(x, norm=None, *, params=None)#
Log probability density function normalized over
norm_range
.- Parameters:
x (
Union
[float
,Tensor
]) – Data to evaluate the method on. Should beZfitData
or a mapping of obs to numpy-like arrays. If an array is given, the first dimension is interpreted as the events while the second is meant to be the dimensionality of a single event.norm (
Union
[Tuple
[Tuple
[float
,...
]],Tuple
[float
,...
],bool
,Space
]) – Normalization of the function. By default, this is thenorm
of the PDF (which by default is the same as the space of the PDF). Should beZfitSpace
to define the space to normalize over.params (
Optional
[Iterable
[ZfitParameter
]]) – Mapping of the parameter names to the actual values. The parameter names refer to the names of the parameters, typicallyParameter
, that the model was _initialized_ with, not the name of the models parametrization.
- Return type:
- Returns:
A
Tensor
of typeself.dtype
.
- property norm: Space | None | bool#
Return the current normalization range. If None and the
obs
have limits, they are returned.- Returns:
The current normalization range.
- property norm_range: Space | None | bool#
Return the current normalization range. If None and the
obs
have limits, they are returned. (deprecated)Deprecated: THIS FUNCTION IS DEPRECATED. It will be removed in a future version. Instructions for updating: Use the
norm
attribute instead.- Returns:
The current normalization range.
- normalization(norm=None, *, options=None, limits=None, params=None)#
Return the normalization of the function (usually the integral over
norm
). (deprecated arguments)Deprecated: SOME ARGUMENTS ARE DEPRECATED:
(limits)
. They will be removed in a future version. Instructions for updating: Usenorm
instead.- Parameters:
norm (
Union
[Tuple
[Tuple
[float
,...
]],Tuple
[float
,...
],bool
,Space
]) – Normalization of the function. By default, this is thenorm
of the PDF (which by default is the same as the space of the PDF). Should beZfitSpace
to define the space to normalize over.options – |@doc:pdf.param.options||@docend:pdf.param.options|
params (
Optional
[Iterable
[ZfitParameter
]]) – Mapping of the parameter names to the actual values. The parameter names refer to the names of the parameters, typicallyParameter
, that the model was _initialized_ with, not the name of the models parametrization.
- Return type:
- Returns:
The normalization value
- numeric_integrate(limits, norm=None, *, options=None, params=None)#
Numerical integration over the model.
- Parameters:
limits (
Union
[Tuple
[Tuple
[float
,...
]],Tuple
[float
,...
],bool
,Space
]) – Limits of the integration.norm (
Union
[Tuple
[Tuple
[float
,...
]],Tuple
[float
,...
],bool
,Space
]) – Normalization of the integration. By default, this is the same as the default space of the PDF.False
means no normalization and returns the unnormed integral.options –
Options for the integration. Additional options for the integration. Currently supported options are: - type: one of (
bins
)This hints that bins are integrated. A method that is vectorizable, non-dynamic and therefore less suitable for complicated functions is chosen.
params (
TypeVar
(ParamTypeInput
, zfit.core.interfaces.ZfitParameter,Union
[int
,float
,complex
,Tensor
, zfit.core.interfaces.ZfitParameter])) – Mapping of the parameter names to the actual values. The parameter names refer to the names of the parameters, typicallyParameter
, that the model was _initialized_ with, not the name of the models parametrization.
- Return type:
- Returns:
The integral value
- classmethod register_additional_repr(**kwargs)#
Register an additional attribute to add to the repr.
- Parameters:
an (any keyword argument. The value has to be gettable from the instance (has to be)
self. (attribute or callable method of)
- classmethod register_analytic_integral(cls, func, limits=None, priority=50, *, supports_norm=None, supports_norm_range=None, supports_multiple_limits=None)#
Register an analytic integral with the class. (deprecated arguments)
Deprecated: SOME ARGUMENTS ARE DEPRECATED:
(supports_norm_range)
. They will be removed in a future version. Instructions for updating: Usesupports_norm
instead.- Parameters:
func (
Callable
) –A function that calculates the (partial) integral over the axes
limits
. The signature has to be the following:- x (
ZfitData
, None): the data for the remaining axes in a partial integral. If it is not a partial integral, this will be None.
- x (
limits (
ZfitSpace
): the limits to integrate over.- norm_range (
ZfitSpace
, None): Normalization range of the integral. If not
supports_supports_norm_range
, this will be None.
- norm_range (
params (Dict[param_name,
zfit.Parameters
]): The parameters of the model.model (
ZfitModel
):The model that is being integrated.
limits (
Union
[Tuple
[Tuple
[float
,...
]],Tuple
[float
,...
],bool
,Space
]) – If aSpace
is given, it is used as limits. Otherwise arguments to instantiate a Range class can be given as follows.|limits_init|priority (
int
|float
) – Priority of the function. If multiple functions cover the same space, the one with the highest priority will be used.supports_multiple_limits (
bool
|None
) – IfTrue
, the ``limits` given to the integration function can have multiple limits. IfFalse
, only simple limits will pass through and multiple limits will be auto-handled.supports_norm (
bool
|None
) – IfTrue
,norm
argument to the function may not beNone
. IfFalse
,norm
will always beNone
and care is taken of the normalization automatically.
- Return type:
- register_cacher(cacher)#
Register a
cacher
that caches values produces by this instance; a dependent.- Parameters:
cacher (ztyping.CacherOrCachersType)
- classmethod register_inverse_analytic_integral(func)#
Register an inverse analytical integral, the inverse (unnormalized) cdf.
- reset_cache_self()#
Clear the cache of self and all dependent cachers.
- sample(n=None, limits=None, *, x=None, params=None)#
Sample
n
points withinlimits
from the model.If
limits
is not specified,space
is used (if the space contains limits). Ifn
is None and the model is an extended pdf, ‘extended’ is used by default.- Parameters:
The number of samples to be generated. Can be a Tensor that will be or a valid string. Currently implemented:
’extended’: samples
poisson(yield)
from each pdf that is extended.
limits (
Union
[Tuple
[Tuple
[float
,...
]],Tuple
[float
,...
],bool
,Space
]) – In which region to sample inparams (
TypeVar
(ParamTypeInput
, zfit.core.interfaces.ZfitParameter,Union
[int
,float
,complex
,Tensor
, zfit.core.interfaces.ZfitParameter])) – Mapping of the parameter names to the actual values. The parameter names refer to the names of the parameters, typicallyParameter
, that the model was _initialized_ with, not the name of the models parametrization.
- Returns:
The observables are the
limits
- Return type:
Data(n_obs, n_samples)
- Raises:
NotExtendedPDFError – if ‘extended’ is (implicitly by default or explicitly) chosen as an option for
n
but the pdf itself is not extended.ValueError – if n is an invalid string option.
InvalidArgumentError – if n is not specified and pdf is not extended.
- set_norm_range(norm: ztyping.LimitsTypeInput)#
Set the normalization range (temporarily if used with contextmanager). (deprecated)
Deprecated: THIS FUNCTION IS DEPRECATED. It will be removed in a future version. Instructions for updating: Prefer to create a new PDF with
norm
set or wrap the existing in aTruncatedPDF
.
- set_yield(value)#
Make the model extended inplace by setting a yield. If possible, prefer to use
create_extended
.This does not alter the general behavior of the PDF. The
pdf
andintegrate
and similar methods will continue to return the same - normalized to 1 - values. However, not only can this parameter be accessed viaget_yield
, the methodsext_pdf
andext_integral
provide a version ofpdf
andintegrate
respecetively that is multiplied by the yield.These can be useful for plotting and for binned likelihoods.
- Parameters:
value – Yield (expected number of events) of the PDF. This is the expected number of events. If this is parameter-like, it will be used as the yield, the expected number of events, and the PDF will be extended. An extended PDF has additional functionality, such as the
ext_*
methods and thecounts
(for binned PDFs).
- to_asdf()#
Convert the object to an asdf file.
- to_binned(space, extended=None, norm=None, name=None, label=None)#
Convert to binned pdf, returns self if already binned.
- to_dict()#
Convert the object to a nested dictionary structure.
- Returns:
The dictionary structure.
- Return type:
- to_truncated(limits=None, *, obs=None, extended=None, norm=None, name=None, label=None)#
Convert the PDF to a truncated version with possibly different and multiple limits.
The arguments are the same as for
TruncatedPDF
, the only difference being that if no limits are given, the limit of the PDF is used, thereby truncating the PDF to its original limits.- Parameters:
pdf – The PDF to be truncated.
limits (
Union
[ZfitSpace
,Iterable
[ZfitSpace
],None
]) – The limits to truncate the PDF. Can be a single limit or multiple limits.obs –
Observables of the model. This will be used as the default space of the PDF and, if not given explicitly, as the normalization range.
The default space is used for example in the sample method: if no sampling limits are given, the default space is used.
If the observables are binned and the model is unbinned, the model will be a binned model, by wrapping the model in a
BinnedFromUnbinnedPDF
, equivalent to callingto_binned()
.The observables are not equal to the domain as it does not restrict or truncate the model outside this range.
extended – The overall yield of the PDF. If this is parameter-like, it will be used as the yield, the expected number of events, and the PDF will be extended. An extended PDF has additional functionality, such as the
ext_*
methods and thecounts
(for binned PDFs).If None, the PDF will be extended if the original PDF is extended. IfTrue
and the original PDF is extended, the yield will be scaled to the fraction of the total integral that is within the limits. Therefore, the overall yield is comparable, i.e. the pdfs can be plotted “on top of each other”.norm – Normalization of the PDF. By default, this is the same as the default space of the PDF.
name (
str
|None
) – Name of the PDF. Maybe has implications on the serialization and deserialization of the PDF. For a human-readable name, use the label.label (
str
|None
) – Human-readable name or label of the PDF for a better description, to be used with plots etc. Has no programmatical functional purpose as identification.
- to_unbinned()#
Convert to unbinned pdf, returns self if already unbinned.
- unnormalized_pdf(x: ztyping.XType) ztyping.XType #
PDF “unnormalized”. Use
functions
for unnormalized pdfs. this is only for performance in special cases. (deprecated)Deprecated: THIS FUNCTION IS DEPRECATED. It will be removed in a future version. Instructions for updating: Use
pdf(norm=False)
instead- Parameters:
x (
Union
[float
,Tensor
]) – Data to evaluate the method on. Should beZfitData
or a mapping of obs to numpy-like arrays. If an array is given, the first dimension is interpreted as the events while the second is meant to be the dimensionality of a single event.- Return type:
- Returns:
1-dimensional
tf.Tensor
containing the unnormalized pdf.
- update_integration_options(draws_per_dim=None, mc_sampler=None, tol=None, max_draws=None, draws_simpson=None)#
Set the integration options.
- Parameters:
max_draws (default ~1'000'000) – Maximum number of draws when integrating . Typically 500’000 - 5’000’000.
tol – Tolerance on the error of the integral. typically 1e-4 to 1e-8
draws_per_dim – The draws for MC integration to do per iteration. Can be set to
'auto
’.draws_simpson – Number of points in one dimensional Simpson integration. Can be set to
'auto'
.