polynomials

Recurrent polynomials.

class zfit.models.polynomials.Chebyshev(obs, coeffs: list, apply_scaling: bool = True, coeff0: Union[zfit.core.interfaces.ZfitParameter, int, float, complex, tensorflow.python.framework.ops.Tensor, None] = None, name: str = 'Chebyshev')[source]

Bases: zfit.models.polynomials.RecursivePolynomial

Linear combination of Chebyshev (first kind) polynomials of order len(coeffs), coeffs are scaling factors.

The 0th coefficient is set to 1 by default but can be explicitly set with coeff0. Since the PDF normalization removes a degree of freedom, the 0th coefficient is redundant and leads to an arbitrary overall scaling of all parameters.

Notice that this is already a sum of polynomials and the coeffs are simply scaling the individual orders of the polynomials.

The recursive definition of _a single order_ of the polynomial is

\[ \begin{align}\begin{aligned}T_{n+1}(x) = 2 x T_{n}(x) - T_{n-1}(x)\\with T_{0} = 1 T_{1} = x\end{aligned}\end{align} \]

Notice that \(T_1\) is x as opposed to 2x in Chebyshev polynomials of the second kind.

Parameters
  • obs – The default space the PDF is defined in.

  • coeffs (list[params]) – A list of the coefficients for the polynomials of order 1+ in the sum.

  • apply_scaling (bool) – Rescale the data so that the actual limits represent (-1, 1).

  • coeff0 (param) – The scaling factor of the 0th order polynomial. If not given, it is set to 1.

  • name (str) – Name of the polynomial

add_cache_dependents(cache_dependents: Union[zfit.core.interfaces.ZfitCachable, Iterable[zfit.core.interfaces.ZfitCachable]], allow_non_cachable: bool = True)

Add dependents that render the cache invalid if they change.

Parameters
  • cache_dependents (ZfitCachable) –

  • allow_non_cachable (bool) – If True, allow cache_dependents to be non-cachables. If False, any cache_dependents that is not a ZfitCachable will raise an error.

Raises

TypeError – if one of the cache_dependents is not a ZfitCachable _and_ allow_non_cachable if False.

analytic_integrate(limits: Union[Tuple[Tuple[float, ...]], Tuple[float, ...], bool], norm_range: Union[Tuple[Tuple[float, ...]], Tuple[float, ...], bool] = None) → Union[float, tensorflow.python.framework.ops.Tensor]

Analytical integration over function and raise Error if not possible.

Parameters
  • limits (tuple, ZfitSpace) – the limits to integrate over

  • norm_range (tuple, ZfitSpace, False) – the limits to normalize over

Returns

the integral value

Return type

Tensor

Raises
  • AnalyticIntegralNotImplementedError – If no analytical integral is available (for this limits).

  • NormRangeNotImplementedError – if the norm_range argument is not supported. This means that no analytical normalization is available, explicitly: the analytical integral over the limits = norm_range is not available.

apply_yield(value: Union[float, tensorflow.python.framework.ops.Tensor], norm_range: Union[zfit.core.interfaces.ZfitLimit, tensorflow.python.framework.ops.Tensor, numpy.ndarray, Iterable[float], float, Tuple[float], List[float], bool, None] = False, log: bool = False) → Union[float, tensorflow.python.framework.ops.Tensor]

If a norm_range is given, the value will be multiplied by the yield.

Parameters
  • value (numerical) –

  • () (norm_range) –

  • log (bool) –

Returns

numerical

as_func(norm_range: Union[Tuple[Tuple[float, ...]], Tuple[float, ...], bool] = False)

Return a Function with the function model(x, norm_range=norm_range).

Parameters

() (norm_range) –

property axes

Return the axes, integer based identifier(indices) for the coordinate system.

convert_sort_space(obs: Union[str, Iterable[str], zfit.Space, zfit.core.interfaces.ZfitLimit, tensorflow.python.framework.ops.Tensor, numpy.ndarray, Iterable[float], float, Tuple[float], List[float], bool, None] = None, axes: Union[int, Iterable[int]] = None, limits: Union[zfit.core.interfaces.ZfitLimit, tensorflow.python.framework.ops.Tensor, numpy.ndarray, Iterable[float], float, Tuple[float], List[float], bool, None] = None) → Optional[zfit.core.interfaces.ZfitSpace]

Convert the inputs (using eventually obs, axes) to ZfitSpace and sort them according to own obs.

Parameters
  • () (limits) –

  • ()

  • ()

Returns:

copy(**override_parameters) → zfit.core.basepdf.BasePDF

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.

Returns

A new instance of type(self) initialized from the union

of self.parameters and override_parameters, i.e., dict(self.parameters, **override_parameters).

Return type

model

create_extended(yield_: Union[zfit.core.interfaces.ZfitParameter, int, float, complex, tensorflow.python.framework.ops.Tensor], name_addition='_extended') → zfit.core.interfaces.ZfitPDF

Return an extended version of this pdf with yield yield_. The parameters are shared.

Parameters
Returns

ZfitPDF

create_projection_pdf(limits_to_integrate: Union[zfit.core.interfaces.ZfitLimit, tensorflow.python.framework.ops.Tensor, numpy.ndarray, Iterable[float], float, Tuple[float], List[float], bool, None]) → zfit.core.interfaces.ZfitPDF

Create a PDF projection by integrating out some of the dimensions.

The new projection pdf is still fully dependent on the pdf it was created with.

Parameters

limits_to_integrate (Space) –

Returns

a pdf without the dimensions from limits_to_integrate.

Return type

ZfitPDF

create_sampler(n: Union[int, tensorflow.python.framework.ops.Tensor, str] = None, limits: Union[Tuple[Tuple[float, ...]], Tuple[float, ...], bool] = None, fixed_params: Union[bool, List[zfit.core.interfaces.ZfitParameter], Tuple[zfit.core.interfaces.ZfitParameter]] = True) → zfit.core.data.Sampler

Create a Sampler that acts as Data but can be resampled, also with changed parameters and n.

If limits is not specified, space is used (if the space contains limits). If n is None and the model is an extended pdf, ‘extended’ is used by default.

Parameters
  • n (int, tf.Tensor, str) –

    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.

  • () (fixed_params) – From which space to sample.

  • () – A list of Parameters that will be fixed during several resample calls. If True, all are fixed, if False, all are floating. If a Parameter is not fixed and its value gets updated (e.g. by a Parameter.set_value() call), this will be reflected in resample. If fixed, the Parameter will still have the same value as the Sampler has been created with when it resamples.

Returns

py:class:~`zfit.core.data.Sampler`

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 degree

degree of the polynomial, starting from 0.

Type

int

property dtype

The dtype of the object

get_dependents(only_floating: bool = True) -> OrderedSet(['z', 'f', 'i', 't', '.', 'P', 'a', 'r', 'm', 'e'])

Return a set of all independent Parameter that this object depends on.

Parameters

only_floating (bool) – If True, only return floating Parameter

get_params(only_floating: bool = False, names: Union[str, List[str], None] = None) → List[zfit.core.interfaces.ZfitParameter]

Return the parameters. If it is empty, automatically return all floating variables.

Parameters
  • () (names) – If True, return only the floating parameters.

  • () – The names of the parameters to return.

Returns

Return type

list(ZfitParameters)

get_yield() → Optional[zfit.core.parameter.Parameter]

Return the yield (only for extended models).

Returns

the yield of the current model or None

Return type

Parameter

gradients(x: Union[float, tensorflow.python.framework.ops.Tensor], norm_range: Union[Tuple[Tuple[float, ...]], Tuple[float, ...], bool], params: Optional[Iterable[zfit.core.interfaces.ZfitParameter]] = None)
graph_caching_methods = [<function FunctionWrapperRegistry.__call__.<locals>.concrete_func>, <function FunctionWrapperRegistry.__call__.<locals>.concrete_func>, <function FunctionWrapperRegistry.__call__.<locals>.concrete_func>, <function FunctionWrapperRegistry.__call__.<locals>.concrete_func>, <function FunctionWrapperRegistry.__call__.<locals>.concrete_func>, <function FunctionWrapperRegistry.__call__.<locals>.concrete_func>, <function FunctionWrapperRegistry.__call__.<locals>.concrete_func>]
instances = <_weakrefset.WeakSet object>
integrate(**kwargs)
property is_extended

Flag to tell whether the model is extended or not.

Returns

Return type

bool

log_pdf(x: Union[float, tensorflow.python.framework.ops.Tensor], norm_range: Union[Tuple[Tuple[float, ...]], Tuple[float, ...], bool] = None) → Union[float, tensorflow.python.framework.ops.Tensor]

Log probability density function normalized over norm_range.

Parameters
  • x (numerical) – float or double Tensor.

  • norm_range (tuple, Space) – Space to normalize over

Returns

a Tensor of type self.dtype.

Return type

log_pdf

property n_obs

Return the number of observables, the dimensionality. Corresponds to the last dimension.

property name

The name of the object.

property norm_range

Return the current normalization range. If None and the `obs`have limits, they are returned.

Returns

The current normalization range

Return type

Space or None

normalization(limits: Union[Tuple[Tuple[float, ...]], Tuple[float, ...], bool]) → Union[float, tensorflow.python.framework.ops.Tensor]

Return the normalization of the function (usually the integral over limits).

Parameters

limits (tuple, Space) – The limits on where to normalize over

Returns

the normalization value

Return type

Tensor

numeric_integrate(limits: Union[Tuple[Tuple[float, ...]], Tuple[float, ...], bool], norm_range: Union[Tuple[Tuple[float, ...]], Tuple[float, ...], bool] = None) → Union[float, tensorflow.python.framework.ops.Tensor]

Numerical integration over the model.

Parameters
  • limits (tuple, ZfitSpace) – the limits to integrate over

  • norm_range (tuple, ZfitSpace, False) – the limits to normalize over

Returns

the integral value

Return type

Tensor

property obs

Return the observables, string identifier for the coordinate system.

property params
partial_analytic_integrate(**kwargs)
partial_integrate(**kwargs)
partial_numeric_integrate(**kwargs)
pdf(**kwargs)
classmethod register_additional_repr(**kwargs)

Register an additional attribute to add to the repr.

Parameters
  • keyword argument. The value has to be gettable from the instance (has to be an (any) –

  • or callable method of self. (attribute) –

classmethod register_analytic_integral(func: Callable, limits: Union[Tuple[Tuple[float, ...]], Tuple[float, ...], bool] = None, priority: Union[int, float] = 50, *, supports_norm_range: bool = False, supports_multiple_limits: bool = False) → None

Register an analytic integral with the class.

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.

    • 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.

    • params (Dict[param_name, zfit.Parameters]): The parameters of the model.

    • model (ZfitModel):The model that is being integrated.

  • () (limits) – |limits_arg_descr|

  • priority (int) – Priority of the function. If multiple functions cover the same space, the one with the highest priority will be used.

  • supports_multiple_limits (bool) – If True, the limits given to the integration function can have multiple limits. If False, only simple limits will pass through and multiple limits will be auto-handled.

  • supports_norm_range (bool) – If True, norm_range argument to the function may not be None. If False, norm_range will always be None and care is taken of the normalization automatically.

register_cacher(cacher: Union[zfit.core.interfaces.ZfitCachable, Iterable[zfit.core.interfaces.ZfitCachable]])

Register a cacher that caches values produces by this instance; a dependent.

Parameters

() (cacher) –

classmethod register_inverse_analytic_integral(func: Callable) → None

Register an inverse analytical integral, the inverse (unnormalized) cdf.

Parameters

() (func) –

reset_cache(reseter: zfit.util.cache.ZfitCachable)
reset_cache_self()

Clear the cache of self and all dependent cachers.

sample(n: Union[int, tensorflow.python.framework.ops.Tensor, str] = None, limits: Union[Tuple[Tuple[float, ...]], Tuple[float, ...], bool] = None) → zfit.core.data.SampleData

Sample n points within limits from the model.

If limits is not specified, space is used (if the space contains limits). If n is None and the model is an extended pdf, ‘extended’ is used by default.

Parameters
  • n (int, tf.Tensor, str) –

    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 (tuple, ZfitSpace) – In which region to sample in

Returns

SampleData(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_range: Union[zfit.core.interfaces.ZfitLimit, tensorflow.python.framework.ops.Tensor, numpy.ndarray, Iterable[float], float, Tuple[float], List[float], bool, None])

Set the normalization range (temporarily if used with contextmanager).

Parameters

norm_range (tuple, Space) –

property space
unnormalized_pdf(x: Union[float, tensorflow.python.framework.ops.Tensor], component_norm_range: Union[zfit.core.interfaces.ZfitLimit, tensorflow.python.framework.ops.Tensor, numpy.ndarray, Iterable[float], float, Tuple[float], List[float], bool, None] = None) → Union[float, tensorflow.python.framework.ops.Tensor]

PDF “unnormalized”. Use functions for unnormalized pdfs. this is only for performance in special cases.

Parameters
  • x (numerical) – The value, have to be convertible to a Tensor

  • component_norm_range (Space) – The normalization range for the components. Needed for

  • composition (certain) – pdfs.

Returns

1-dimensional tf.Tensor containing the unnormalized pdf.

Return type

tf.Tensor

update_integration_options(draws_per_dim=None, mc_sampler=None)

Set the integration options.

Parameters
  • draws_per_dim (int) – The draws for MC integration to do

  • () (mc_sampler) –

class zfit.models.polynomials.Chebyshev2(obs, coeffs: list, apply_scaling: bool = True, coeff0: Union[zfit.core.interfaces.ZfitParameter, int, float, complex, tensorflow.python.framework.ops.Tensor, None] = None, name: str = 'Chebyshev2')[source]

Bases: zfit.models.polynomials.RecursivePolynomial

Linear combination of Chebyshev (second kind) polynomials of order len(coeffs), coeffs are scaling factors.

The 0th coefficient is set to 1 by default but can be explicitly set with coeff0. Since the PDF normalization removes a degree of freedom, the 0th coefficient is redundant and leads to an arbitrary overall scaling of all parameters.

Notice that this is already a sum of polynomials and the coeffs are simply scaling the individual orders of the polynomials.

The recursive definition of _a single order_ of the polynomial is

\[ \begin{align}\begin{aligned}T_{n+1}(x) = 2 x T_{n}(x) - T_{n-1}(x)\\with T_{0} = 1 T_{1} = 2x\end{aligned}\end{align} \]

Notice that \(T_1\) is 2x as opposed to x in Chebyshev polynomials of the first kind.

Parameters
  • obs – The default space the PDF is defined in.

  • coeffs (list[params]) – A list of the coefficients for the polynomials of order 1+ in the sum.

  • apply_scaling (bool) – Rescale the data so that the actual limits represent (-1, 1).

  • coeff0 (param) – The scaling factor of the 0th order polynomial. If not given, it is set to 1.

  • name (str) – Name of the polynomial

add_cache_dependents(cache_dependents: Union[zfit.core.interfaces.ZfitCachable, Iterable[zfit.core.interfaces.ZfitCachable]], allow_non_cachable: bool = True)

Add dependents that render the cache invalid if they change.

Parameters
  • cache_dependents (ZfitCachable) –

  • allow_non_cachable (bool) – If True, allow cache_dependents to be non-cachables. If False, any cache_dependents that is not a ZfitCachable will raise an error.

Raises

TypeError – if one of the cache_dependents is not a ZfitCachable _and_ allow_non_cachable if False.

analytic_integrate(limits: Union[Tuple[Tuple[float, ...]], Tuple[float, ...], bool], norm_range: Union[Tuple[Tuple[float, ...]], Tuple[float, ...], bool] = None) → Union[float, tensorflow.python.framework.ops.Tensor]

Analytical integration over function and raise Error if not possible.

Parameters
  • limits (tuple, ZfitSpace) – the limits to integrate over

  • norm_range (tuple, ZfitSpace, False) – the limits to normalize over

Returns

the integral value

Return type

Tensor

Raises
  • AnalyticIntegralNotImplementedError – If no analytical integral is available (for this limits).

  • NormRangeNotImplementedError – if the norm_range argument is not supported. This means that no analytical normalization is available, explicitly: the analytical integral over the limits = norm_range is not available.

apply_yield(value: Union[float, tensorflow.python.framework.ops.Tensor], norm_range: Union[zfit.core.interfaces.ZfitLimit, tensorflow.python.framework.ops.Tensor, numpy.ndarray, Iterable[float], float, Tuple[float], List[float], bool, None] = False, log: bool = False) → Union[float, tensorflow.python.framework.ops.Tensor]

If a norm_range is given, the value will be multiplied by the yield.

Parameters
  • value (numerical) –

  • () (norm_range) –

  • log (bool) –

Returns

numerical

as_func(norm_range: Union[Tuple[Tuple[float, ...]], Tuple[float, ...], bool] = False)

Return a Function with the function model(x, norm_range=norm_range).

Parameters

() (norm_range) –

property axes

Return the axes, integer based identifier(indices) for the coordinate system.

convert_sort_space(obs: Union[str, Iterable[str], zfit.Space, zfit.core.interfaces.ZfitLimit, tensorflow.python.framework.ops.Tensor, numpy.ndarray, Iterable[float], float, Tuple[float], List[float], bool, None] = None, axes: Union[int, Iterable[int]] = None, limits: Union[zfit.core.interfaces.ZfitLimit, tensorflow.python.framework.ops.Tensor, numpy.ndarray, Iterable[float], float, Tuple[float], List[float], bool, None] = None) → Optional[zfit.core.interfaces.ZfitSpace]

Convert the inputs (using eventually obs, axes) to ZfitSpace and sort them according to own obs.

Parameters
  • () (limits) –

  • ()

  • ()

Returns:

copy(**override_parameters) → zfit.core.basepdf.BasePDF

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.

Returns

A new instance of type(self) initialized from the union

of self.parameters and override_parameters, i.e., dict(self.parameters, **override_parameters).

Return type

model

create_extended(yield_: Union[zfit.core.interfaces.ZfitParameter, int, float, complex, tensorflow.python.framework.ops.Tensor], name_addition='_extended') → zfit.core.interfaces.ZfitPDF

Return an extended version of this pdf with yield yield_. The parameters are shared.

Parameters
Returns

ZfitPDF

create_projection_pdf(limits_to_integrate: Union[zfit.core.interfaces.ZfitLimit, tensorflow.python.framework.ops.Tensor, numpy.ndarray, Iterable[float], float, Tuple[float], List[float], bool, None]) → zfit.core.interfaces.ZfitPDF

Create a PDF projection by integrating out some of the dimensions.

The new projection pdf is still fully dependent on the pdf it was created with.

Parameters

limits_to_integrate (Space) –

Returns

a pdf without the dimensions from limits_to_integrate.

Return type

ZfitPDF

create_sampler(n: Union[int, tensorflow.python.framework.ops.Tensor, str] = None, limits: Union[Tuple[Tuple[float, ...]], Tuple[float, ...], bool] = None, fixed_params: Union[bool, List[zfit.core.interfaces.ZfitParameter], Tuple[zfit.core.interfaces.ZfitParameter]] = True) → zfit.core.data.Sampler

Create a Sampler that acts as Data but can be resampled, also with changed parameters and n.

If limits is not specified, space is used (if the space contains limits). If n is None and the model is an extended pdf, ‘extended’ is used by default.

Parameters
  • n (int, tf.Tensor, str) –

    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.

  • () (fixed_params) – From which space to sample.

  • () – A list of Parameters that will be fixed during several resample calls. If True, all are fixed, if False, all are floating. If a Parameter is not fixed and its value gets updated (e.g. by a Parameter.set_value() call), this will be reflected in resample. If fixed, the Parameter will still have the same value as the Sampler has been created with when it resamples.

Returns

py:class:~`zfit.core.data.Sampler`

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 degree

degree of the polynomial, starting from 0.

Type

int

property dtype

The dtype of the object

get_dependents(only_floating: bool = True) -> OrderedSet(['z', 'f', 'i', 't', '.', 'P', 'a', 'r', 'm', 'e'])

Return a set of all independent Parameter that this object depends on.

Parameters

only_floating (bool) – If True, only return floating Parameter

get_params(only_floating: bool = False, names: Union[str, List[str], None] = None) → List[zfit.core.interfaces.ZfitParameter]

Return the parameters. If it is empty, automatically return all floating variables.

Parameters
  • () (names) – If True, return only the floating parameters.

  • () – The names of the parameters to return.

Returns

Return type

list(ZfitParameters)

get_yield() → Optional[zfit.core.parameter.Parameter]

Return the yield (only for extended models).

Returns

the yield of the current model or None

Return type

Parameter

gradients(x: Union[float, tensorflow.python.framework.ops.Tensor], norm_range: Union[Tuple[Tuple[float, ...]], Tuple[float, ...], bool], params: Optional[Iterable[zfit.core.interfaces.ZfitParameter]] = None)
graph_caching_methods = [<function FunctionWrapperRegistry.__call__.<locals>.concrete_func>, <function FunctionWrapperRegistry.__call__.<locals>.concrete_func>, <function FunctionWrapperRegistry.__call__.<locals>.concrete_func>, <function FunctionWrapperRegistry.__call__.<locals>.concrete_func>, <function FunctionWrapperRegistry.__call__.<locals>.concrete_func>, <function FunctionWrapperRegistry.__call__.<locals>.concrete_func>, <function FunctionWrapperRegistry.__call__.<locals>.concrete_func>]
instances = <_weakrefset.WeakSet object>
integrate(**kwargs)
property is_extended

Flag to tell whether the model is extended or not.

Returns

Return type

bool

log_pdf(x: Union[float, tensorflow.python.framework.ops.Tensor], norm_range: Union[Tuple[Tuple[float, ...]], Tuple[float, ...], bool] = None) → Union[float, tensorflow.python.framework.ops.Tensor]

Log probability density function normalized over norm_range.

Parameters
  • x (numerical) – float or double Tensor.

  • norm_range (tuple, Space) – Space to normalize over

Returns

a Tensor of type self.dtype.

Return type

log_pdf

property n_obs

Return the number of observables, the dimensionality. Corresponds to the last dimension.

property name

The name of the object.

property norm_range

Return the current normalization range. If None and the `obs`have limits, they are returned.

Returns

The current normalization range

Return type

Space or None

normalization(limits: Union[Tuple[Tuple[float, ...]], Tuple[float, ...], bool]) → Union[float, tensorflow.python.framework.ops.Tensor]

Return the normalization of the function (usually the integral over limits).

Parameters

limits (tuple, Space) – The limits on where to normalize over

Returns

the normalization value

Return type

Tensor

numeric_integrate(limits: Union[Tuple[Tuple[float, ...]], Tuple[float, ...], bool], norm_range: Union[Tuple[Tuple[float, ...]], Tuple[float, ...], bool] = None) → Union[float, tensorflow.python.framework.ops.Tensor]

Numerical integration over the model.

Parameters
  • limits (tuple, ZfitSpace) – the limits to integrate over

  • norm_range (tuple, ZfitSpace, False) – the limits to normalize over

Returns

the integral value

Return type

Tensor

property obs

Return the observables, string identifier for the coordinate system.

property params
partial_analytic_integrate(**kwargs)
partial_integrate(**kwargs)
partial_numeric_integrate(**kwargs)
pdf(**kwargs)
classmethod register_additional_repr(**kwargs)

Register an additional attribute to add to the repr.

Parameters
  • keyword argument. The value has to be gettable from the instance (has to be an (any) –

  • or callable method of self. (attribute) –

classmethod register_analytic_integral(func: Callable, limits: Union[Tuple[Tuple[float, ...]], Tuple[float, ...], bool] = None, priority: Union[int, float] = 50, *, supports_norm_range: bool = False, supports_multiple_limits: bool = False) → None

Register an analytic integral with the class.

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.

    • 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.

    • params (Dict[param_name, zfit.Parameters]): The parameters of the model.

    • model (ZfitModel):The model that is being integrated.

  • () (limits) – |limits_arg_descr|

  • priority (int) – Priority of the function. If multiple functions cover the same space, the one with the highest priority will be used.

  • supports_multiple_limits (bool) – If True, the limits given to the integration function can have multiple limits. If False, only simple limits will pass through and multiple limits will be auto-handled.

  • supports_norm_range (bool) – If True, norm_range argument to the function may not be None. If False, norm_range will always be None and care is taken of the normalization automatically.

register_cacher(cacher: Union[zfit.core.interfaces.ZfitCachable, Iterable[zfit.core.interfaces.ZfitCachable]])

Register a cacher that caches values produces by this instance; a dependent.

Parameters

() (cacher) –

classmethod register_inverse_analytic_integral(func: Callable) → None

Register an inverse analytical integral, the inverse (unnormalized) cdf.

Parameters

() (func) –

reset_cache(reseter: zfit.util.cache.ZfitCachable)
reset_cache_self()

Clear the cache of self and all dependent cachers.

sample(n: Union[int, tensorflow.python.framework.ops.Tensor, str] = None, limits: Union[Tuple[Tuple[float, ...]], Tuple[float, ...], bool] = None) → zfit.core.data.SampleData

Sample n points within limits from the model.

If limits is not specified, space is used (if the space contains limits). If n is None and the model is an extended pdf, ‘extended’ is used by default.

Parameters
  • n (int, tf.Tensor, str) –

    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 (tuple, ZfitSpace) – In which region to sample in

Returns

SampleData(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_range: Union[zfit.core.interfaces.ZfitLimit, tensorflow.python.framework.ops.Tensor, numpy.ndarray, Iterable[float], float, Tuple[float], List[float], bool, None])

Set the normalization range (temporarily if used with contextmanager).

Parameters

norm_range (tuple, Space) –

property space
unnormalized_pdf(x: Union[float, tensorflow.python.framework.ops.Tensor], component_norm_range: Union[zfit.core.interfaces.ZfitLimit, tensorflow.python.framework.ops.Tensor, numpy.ndarray, Iterable[float], float, Tuple[float], List[float], bool, None] = None) → Union[float, tensorflow.python.framework.ops.Tensor]

PDF “unnormalized”. Use functions for unnormalized pdfs. this is only for performance in special cases.

Parameters
  • x (numerical) – The value, have to be convertible to a Tensor

  • component_norm_range (Space) – The normalization range for the components. Needed for

  • composition (certain) – pdfs.

Returns

1-dimensional tf.Tensor containing the unnormalized pdf.

Return type

tf.Tensor

update_integration_options(draws_per_dim=None, mc_sampler=None)

Set the integration options.

Parameters
  • draws_per_dim (int) – The draws for MC integration to do

  • () (mc_sampler) –

class zfit.models.polynomials.Hermite(obs, coeffs: list, apply_scaling: bool = True, coeff0: Union[zfit.core.interfaces.ZfitParameter, int, float, complex, tensorflow.python.framework.ops.Tensor, None] = None, name: str = 'Hermite')[source]

Bases: zfit.models.polynomials.RecursivePolynomial

Linear combination of Hermite polynomials (for physics) of order len(coeffs), with coeffs as scaling factors.

The 0th coefficient is set to 1 by default but can be explicitly set with coeff0. Since the PDF normalization removes a degree of freedom, the 0th coefficient is redundant and leads to an arbitrary overall scaling of all parameters.

Notice that this is already a sum of polynomials and the coeffs are simply scaling the individual orders of the polynomials.

The recursive definition of _a single order_ of the polynomial is

\[H_{n+1}(x) = 2x H_{n}(x) - 2n H_{n-1}(x)\]

with P_0 = 1 P_1 = 2x

Parameters
  • obs – The default space the PDF is defined in.

  • coeffs (list[params]) – A list of the coefficients for the polynomials of order 1+ in the sum.

  • apply_scaling (bool) – Rescale the data so that the actual limits represent (-1, 1).

  • coeff0 (param) – The scaling factor of the 0th order polynomial. If not given, it is set to 1.

  • name (str) – Name of the polynomial

add_cache_dependents(cache_dependents: Union[zfit.core.interfaces.ZfitCachable, Iterable[zfit.core.interfaces.ZfitCachable]], allow_non_cachable: bool = True)

Add dependents that render the cache invalid if they change.

Parameters
  • cache_dependents (ZfitCachable) –

  • allow_non_cachable (bool) – If True, allow cache_dependents to be non-cachables. If False, any cache_dependents that is not a ZfitCachable will raise an error.

Raises

TypeError – if one of the cache_dependents is not a ZfitCachable _and_ allow_non_cachable if False.

analytic_integrate(limits: Union[Tuple[Tuple[float, ...]], Tuple[float, ...], bool], norm_range: Union[Tuple[Tuple[float, ...]], Tuple[float, ...], bool] = None) → Union[float, tensorflow.python.framework.ops.Tensor]

Analytical integration over function and raise Error if not possible.

Parameters
  • limits (tuple, ZfitSpace) – the limits to integrate over

  • norm_range (tuple, ZfitSpace, False) – the limits to normalize over

Returns

the integral value

Return type

Tensor

Raises
  • AnalyticIntegralNotImplementedError – If no analytical integral is available (for this limits).

  • NormRangeNotImplementedError – if the norm_range argument is not supported. This means that no analytical normalization is available, explicitly: the analytical integral over the limits = norm_range is not available.

apply_yield(value: Union[float, tensorflow.python.framework.ops.Tensor], norm_range: Union[zfit.core.interfaces.ZfitLimit, tensorflow.python.framework.ops.Tensor, numpy.ndarray, Iterable[float], float, Tuple[float], List[float], bool, None] = False, log: bool = False) → Union[float, tensorflow.python.framework.ops.Tensor]

If a norm_range is given, the value will be multiplied by the yield.

Parameters
  • value (numerical) –

  • () (norm_range) –

  • log (bool) –

Returns

numerical

as_func(norm_range: Union[Tuple[Tuple[float, ...]], Tuple[float, ...], bool] = False)

Return a Function with the function model(x, norm_range=norm_range).

Parameters

() (norm_range) –

property axes

Return the axes, integer based identifier(indices) for the coordinate system.

convert_sort_space(obs: Union[str, Iterable[str], zfit.Space, zfit.core.interfaces.ZfitLimit, tensorflow.python.framework.ops.Tensor, numpy.ndarray, Iterable[float], float, Tuple[float], List[float], bool, None] = None, axes: Union[int, Iterable[int]] = None, limits: Union[zfit.core.interfaces.ZfitLimit, tensorflow.python.framework.ops.Tensor, numpy.ndarray, Iterable[float], float, Tuple[float], List[float], bool, None] = None) → Optional[zfit.core.interfaces.ZfitSpace]

Convert the inputs (using eventually obs, axes) to ZfitSpace and sort them according to own obs.

Parameters
  • () (limits) –

  • ()

  • ()

Returns:

copy(**override_parameters) → zfit.core.basepdf.BasePDF

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.

Returns

A new instance of type(self) initialized from the union

of self.parameters and override_parameters, i.e., dict(self.parameters, **override_parameters).

Return type

model

create_extended(yield_: Union[zfit.core.interfaces.ZfitParameter, int, float, complex, tensorflow.python.framework.ops.Tensor], name_addition='_extended') → zfit.core.interfaces.ZfitPDF

Return an extended version of this pdf with yield yield_. The parameters are shared.

Parameters
Returns

ZfitPDF

create_projection_pdf(limits_to_integrate: Union[zfit.core.interfaces.ZfitLimit, tensorflow.python.framework.ops.Tensor, numpy.ndarray, Iterable[float], float, Tuple[float], List[float], bool, None]) → zfit.core.interfaces.ZfitPDF

Create a PDF projection by integrating out some of the dimensions.

The new projection pdf is still fully dependent on the pdf it was created with.

Parameters

limits_to_integrate (Space) –

Returns

a pdf without the dimensions from limits_to_integrate.

Return type

ZfitPDF

create_sampler(n: Union[int, tensorflow.python.framework.ops.Tensor, str] = None, limits: Union[Tuple[Tuple[float, ...]], Tuple[float, ...], bool] = None, fixed_params: Union[bool, List[zfit.core.interfaces.ZfitParameter], Tuple[zfit.core.interfaces.ZfitParameter]] = True) → zfit.core.data.Sampler

Create a Sampler that acts as Data but can be resampled, also with changed parameters and n.

If limits is not specified, space is used (if the space contains limits). If n is None and the model is an extended pdf, ‘extended’ is used by default.

Parameters
  • n (int, tf.Tensor, str) –

    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.

  • () (fixed_params) – From which space to sample.

  • () – A list of Parameters that will be fixed during several resample calls. If True, all are fixed, if False, all are floating. If a Parameter is not fixed and its value gets updated (e.g. by a Parameter.set_value() call), this will be reflected in resample. If fixed, the Parameter will still have the same value as the Sampler has been created with when it resamples.

Returns

py:class:~`zfit.core.data.Sampler`

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 degree

degree of the polynomial, starting from 0.

Type

int

property dtype

The dtype of the object

get_dependents(only_floating: bool = True) -> OrderedSet(['z', 'f', 'i', 't', '.', 'P', 'a', 'r', 'm', 'e'])

Return a set of all independent Parameter that this object depends on.

Parameters

only_floating (bool) – If True, only return floating Parameter

get_params(only_floating: bool = False, names: Union[str, List[str], None] = None) → List[zfit.core.interfaces.ZfitParameter]

Return the parameters. If it is empty, automatically return all floating variables.

Parameters
  • () (names) – If True, return only the floating parameters.

  • () – The names of the parameters to return.

Returns

Return type

list(ZfitParameters)

get_yield() → Optional[zfit.core.parameter.Parameter]

Return the yield (only for extended models).

Returns

the yield of the current model or None

Return type

Parameter

gradients(x: Union[float, tensorflow.python.framework.ops.Tensor], norm_range: Union[Tuple[Tuple[float, ...]], Tuple[float, ...], bool], params: Optional[Iterable[zfit.core.interfaces.ZfitParameter]] = None)
graph_caching_methods = [<function FunctionWrapperRegistry.__call__.<locals>.concrete_func>, <function FunctionWrapperRegistry.__call__.<locals>.concrete_func>, <function FunctionWrapperRegistry.__call__.<locals>.concrete_func>, <function FunctionWrapperRegistry.__call__.<locals>.concrete_func>, <function FunctionWrapperRegistry.__call__.<locals>.concrete_func>, <function FunctionWrapperRegistry.__call__.<locals>.concrete_func>, <function FunctionWrapperRegistry.__call__.<locals>.concrete_func>]
instances = <_weakrefset.WeakSet object>
integrate(**kwargs)
property is_extended

Flag to tell whether the model is extended or not.

Returns

Return type

bool

log_pdf(x: Union[float, tensorflow.python.framework.ops.Tensor], norm_range: Union[Tuple[Tuple[float, ...]], Tuple[float, ...], bool] = None) → Union[float, tensorflow.python.framework.ops.Tensor]

Log probability density function normalized over norm_range.

Parameters
  • x (numerical) – float or double Tensor.

  • norm_range (tuple, Space) – Space to normalize over

Returns

a Tensor of type self.dtype.

Return type

log_pdf

property n_obs

Return the number of observables, the dimensionality. Corresponds to the last dimension.

property name

The name of the object.

property norm_range

Return the current normalization range. If None and the `obs`have limits, they are returned.

Returns

The current normalization range

Return type

Space or None

normalization(limits: Union[Tuple[Tuple[float, ...]], Tuple[float, ...], bool]) → Union[float, tensorflow.python.framework.ops.Tensor]

Return the normalization of the function (usually the integral over limits).

Parameters

limits (tuple, Space) – The limits on where to normalize over

Returns

the normalization value

Return type

Tensor

numeric_integrate(limits: Union[Tuple[Tuple[float, ...]], Tuple[float, ...], bool], norm_range: Union[Tuple[Tuple[float, ...]], Tuple[float, ...], bool] = None) → Union[float, tensorflow.python.framework.ops.Tensor]

Numerical integration over the model.

Parameters
  • limits (tuple, ZfitSpace) – the limits to integrate over

  • norm_range (tuple, ZfitSpace, False) – the limits to normalize over

Returns

the integral value

Return type

Tensor

property obs

Return the observables, string identifier for the coordinate system.

property params
partial_analytic_integrate(**kwargs)
partial_integrate(**kwargs)
partial_numeric_integrate(**kwargs)
pdf(**kwargs)
classmethod register_additional_repr(**kwargs)

Register an additional attribute to add to the repr.

Parameters
  • keyword argument. The value has to be gettable from the instance (has to be an (any) –

  • or callable method of self. (attribute) –

classmethod register_analytic_integral(func: Callable, limits: Union[Tuple[Tuple[float, ...]], Tuple[float, ...], bool] = None, priority: Union[int, float] = 50, *, supports_norm_range: bool = False, supports_multiple_limits: bool = False) → None

Register an analytic integral with the class.

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.

    • 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.

    • params (Dict[param_name, zfit.Parameters]): The parameters of the model.

    • model (ZfitModel):The model that is being integrated.

  • () (limits) – |limits_arg_descr|

  • priority (int) – Priority of the function. If multiple functions cover the same space, the one with the highest priority will be used.

  • supports_multiple_limits (bool) – If True, the limits given to the integration function can have multiple limits. If False, only simple limits will pass through and multiple limits will be auto-handled.

  • supports_norm_range (bool) – If True, norm_range argument to the function may not be None. If False, norm_range will always be None and care is taken of the normalization automatically.

register_cacher(cacher: Union[zfit.core.interfaces.ZfitCachable, Iterable[zfit.core.interfaces.ZfitCachable]])

Register a cacher that caches values produces by this instance; a dependent.

Parameters

() (cacher) –

classmethod register_inverse_analytic_integral(func: Callable) → None

Register an inverse analytical integral, the inverse (unnormalized) cdf.

Parameters

() (func) –

reset_cache(reseter: zfit.util.cache.ZfitCachable)
reset_cache_self()

Clear the cache of self and all dependent cachers.

sample(n: Union[int, tensorflow.python.framework.ops.Tensor, str] = None, limits: Union[Tuple[Tuple[float, ...]], Tuple[float, ...], bool] = None) → zfit.core.data.SampleData

Sample n points within limits from the model.

If limits is not specified, space is used (if the space contains limits). If n is None and the model is an extended pdf, ‘extended’ is used by default.

Parameters
  • n (int, tf.Tensor, str) –

    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 (tuple, ZfitSpace) – In which region to sample in

Returns

SampleData(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_range: Union[zfit.core.interfaces.ZfitLimit, tensorflow.python.framework.ops.Tensor, numpy.ndarray, Iterable[float], float, Tuple[float], List[float], bool, None])

Set the normalization range (temporarily if used with contextmanager).

Parameters

norm_range (tuple, Space) –

property space
unnormalized_pdf(x: Union[float, tensorflow.python.framework.ops.Tensor], component_norm_range: Union[zfit.core.interfaces.ZfitLimit, tensorflow.python.framework.ops.Tensor, numpy.ndarray, Iterable[float], float, Tuple[float], List[float], bool, None] = None) → Union[float, tensorflow.python.framework.ops.Tensor]

PDF “unnormalized”. Use functions for unnormalized pdfs. this is only for performance in special cases.

Parameters
  • x (numerical) – The value, have to be convertible to a Tensor

  • component_norm_range (Space) – The normalization range for the components. Needed for

  • composition (certain) – pdfs.

Returns

1-dimensional tf.Tensor containing the unnormalized pdf.

Return type

tf.Tensor

update_integration_options(draws_per_dim=None, mc_sampler=None)

Set the integration options.

Parameters
  • draws_per_dim (int) – The draws for MC integration to do

  • () (mc_sampler) –

class zfit.models.polynomials.Laguerre(obs, coeffs: list, apply_scaling: bool = True, coeff0: Union[zfit.core.interfaces.ZfitParameter, int, float, complex, tensorflow.python.framework.ops.Tensor, None] = None, name: str = 'Laguerre')[source]

Bases: zfit.models.polynomials.RecursivePolynomial

Linear combination of Laguerre polynomials of order len(coeffs), the coeffs are overall scaling factors.

The 0th coefficient is set to 1 by default but can be explicitly set with coeff0. Since the PDF normalization removes a degree of freedom, the 0th coefficient is redundant and leads to an arbitrary overall scaling of all parameters.

Notice that this is already a sum of polynomials and the coeffs are simply scaling the individual orders of the polynomials.

The recursive definition of _a single order_ of the polynomial is

\[(n+1) L_{n+1}(x) = (2n + 1 + lpha - x) L_{n}(x) - (n + lpha) L_{n-1}(x)\]

with P_0 = 1 P_1 = 1 - x

Parameters
  • obs – The default space the PDF is defined in.

  • coeffs (list[params]) – A list of the coefficients for the polynomials of order 1+ in the sum.

  • apply_scaling (bool) – Rescale the data so that the actual limits represent (-1, 1).

  • coeff0 (param) – The scaling factor of the 0th order polynomial. If not given, it is set to 1.

  • name (str) – Name of the polynomial

add_cache_dependents(cache_dependents: Union[zfit.core.interfaces.ZfitCachable, Iterable[zfit.core.interfaces.ZfitCachable]], allow_non_cachable: bool = True)

Add dependents that render the cache invalid if they change.

Parameters
  • cache_dependents (ZfitCachable) –

  • allow_non_cachable (bool) – If True, allow cache_dependents to be non-cachables. If False, any cache_dependents that is not a ZfitCachable will raise an error.

Raises

TypeError – if one of the cache_dependents is not a ZfitCachable _and_ allow_non_cachable if False.

analytic_integrate(limits: Union[Tuple[Tuple[float, ...]], Tuple[float, ...], bool], norm_range: Union[Tuple[Tuple[float, ...]], Tuple[float, ...], bool] = None) → Union[float, tensorflow.python.framework.ops.Tensor]

Analytical integration over function and raise Error if not possible.

Parameters
  • limits (tuple, ZfitSpace) – the limits to integrate over

  • norm_range (tuple, ZfitSpace, False) – the limits to normalize over

Returns

the integral value

Return type

Tensor

Raises
  • AnalyticIntegralNotImplementedError – If no analytical integral is available (for this limits).

  • NormRangeNotImplementedError – if the norm_range argument is not supported. This means that no analytical normalization is available, explicitly: the analytical integral over the limits = norm_range is not available.

apply_yield(value: Union[float, tensorflow.python.framework.ops.Tensor], norm_range: Union[zfit.core.interfaces.ZfitLimit, tensorflow.python.framework.ops.Tensor, numpy.ndarray, Iterable[float], float, Tuple[float], List[float], bool, None] = False, log: bool = False) → Union[float, tensorflow.python.framework.ops.Tensor]

If a norm_range is given, the value will be multiplied by the yield.

Parameters
  • value (numerical) –

  • () (norm_range) –

  • log (bool) –

Returns

numerical

as_func(norm_range: Union[Tuple[Tuple[float, ...]], Tuple[float, ...], bool] = False)

Return a Function with the function model(x, norm_range=norm_range).

Parameters

() (norm_range) –

property axes

Return the axes, integer based identifier(indices) for the coordinate system.

convert_sort_space(obs: Union[str, Iterable[str], zfit.Space, zfit.core.interfaces.ZfitLimit, tensorflow.python.framework.ops.Tensor, numpy.ndarray, Iterable[float], float, Tuple[float], List[float], bool, None] = None, axes: Union[int, Iterable[int]] = None, limits: Union[zfit.core.interfaces.ZfitLimit, tensorflow.python.framework.ops.Tensor, numpy.ndarray, Iterable[float], float, Tuple[float], List[float], bool, None] = None) → Optional[zfit.core.interfaces.ZfitSpace]

Convert the inputs (using eventually obs, axes) to ZfitSpace and sort them according to own obs.

Parameters
  • () (limits) –

  • ()

  • ()

Returns:

copy(**override_parameters) → zfit.core.basepdf.BasePDF

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.

Returns

A new instance of type(self) initialized from the union

of self.parameters and override_parameters, i.e., dict(self.parameters, **override_parameters).

Return type

model

create_extended(yield_: Union[zfit.core.interfaces.ZfitParameter, int, float, complex, tensorflow.python.framework.ops.Tensor], name_addition='_extended') → zfit.core.interfaces.ZfitPDF

Return an extended version of this pdf with yield yield_. The parameters are shared.

Parameters
Returns

ZfitPDF

create_projection_pdf(limits_to_integrate: Union[zfit.core.interfaces.ZfitLimit, tensorflow.python.framework.ops.Tensor, numpy.ndarray, Iterable[float], float, Tuple[float], List[float], bool, None]) → zfit.core.interfaces.ZfitPDF

Create a PDF projection by integrating out some of the dimensions.

The new projection pdf is still fully dependent on the pdf it was created with.

Parameters

limits_to_integrate (Space) –

Returns

a pdf without the dimensions from limits_to_integrate.

Return type

ZfitPDF

create_sampler(n: Union[int, tensorflow.python.framework.ops.Tensor, str] = None, limits: Union[Tuple[Tuple[float, ...]], Tuple[float, ...], bool] = None, fixed_params: Union[bool, List[zfit.core.interfaces.ZfitParameter], Tuple[zfit.core.interfaces.ZfitParameter]] = True) → zfit.core.data.Sampler

Create a Sampler that acts as Data but can be resampled, also with changed parameters and n.

If limits is not specified, space is used (if the space contains limits). If n is None and the model is an extended pdf, ‘extended’ is used by default.

Parameters
  • n (int, tf.Tensor, str) –

    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.

  • () (fixed_params) – From which space to sample.

  • () – A list of Parameters that will be fixed during several resample calls. If True, all are fixed, if False, all are floating. If a Parameter is not fixed and its value gets updated (e.g. by a Parameter.set_value() call), this will be reflected in resample. If fixed, the Parameter will still have the same value as the Sampler has been created with when it resamples.

Returns

py:class:~`zfit.core.data.Sampler`

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 degree

degree of the polynomial, starting from 0.

Type

int

property dtype

The dtype of the object

get_dependents(only_floating: bool = True) -> OrderedSet(['z', 'f', 'i', 't', '.', 'P', 'a', 'r', 'm', 'e'])

Return a set of all independent Parameter that this object depends on.

Parameters

only_floating (bool) – If True, only return floating Parameter

get_params(only_floating: bool = False, names: Union[str, List[str], None] = None) → List[zfit.core.interfaces.ZfitParameter]

Return the parameters. If it is empty, automatically return all floating variables.

Parameters
  • () (names) – If True, return only the floating parameters.

  • () – The names of the parameters to return.

Returns

Return type

list(ZfitParameters)

get_yield() → Optional[zfit.core.parameter.Parameter]

Return the yield (only for extended models).

Returns

the yield of the current model or None

Return type

Parameter

gradients(x: Union[float, tensorflow.python.framework.ops.Tensor], norm_range: Union[Tuple[Tuple[float, ...]], Tuple[float, ...], bool], params: Optional[Iterable[zfit.core.interfaces.ZfitParameter]] = None)
graph_caching_methods = [<function FunctionWrapperRegistry.__call__.<locals>.concrete_func>, <function FunctionWrapperRegistry.__call__.<locals>.concrete_func>, <function FunctionWrapperRegistry.__call__.<locals>.concrete_func>, <function FunctionWrapperRegistry.__call__.<locals>.concrete_func>, <function FunctionWrapperRegistry.__call__.<locals>.concrete_func>, <function FunctionWrapperRegistry.__call__.<locals>.concrete_func>, <function FunctionWrapperRegistry.__call__.<locals>.concrete_func>]
instances = <_weakrefset.WeakSet object>
integrate(**kwargs)
property is_extended

Flag to tell whether the model is extended or not.

Returns

Return type

bool

log_pdf(x: Union[float, tensorflow.python.framework.ops.Tensor], norm_range: Union[Tuple[Tuple[float, ...]], Tuple[float, ...], bool] = None) → Union[float, tensorflow.python.framework.ops.Tensor]

Log probability density function normalized over norm_range.

Parameters
  • x (numerical) – float or double Tensor.

  • norm_range (tuple, Space) – Space to normalize over

Returns

a Tensor of type self.dtype.

Return type

log_pdf

property n_obs

Return the number of observables, the dimensionality. Corresponds to the last dimension.

property name

The name of the object.

property norm_range

Return the current normalization range. If None and the `obs`have limits, they are returned.

Returns

The current normalization range

Return type

Space or None

normalization(limits: Union[Tuple[Tuple[float, ...]], Tuple[float, ...], bool]) → Union[float, tensorflow.python.framework.ops.Tensor]

Return the normalization of the function (usually the integral over limits).

Parameters

limits (tuple, Space) – The limits on where to normalize over

Returns

the normalization value

Return type

Tensor

numeric_integrate(limits: Union[Tuple[Tuple[float, ...]], Tuple[float, ...], bool], norm_range: Union[Tuple[Tuple[float, ...]], Tuple[float, ...], bool] = None) → Union[float, tensorflow.python.framework.ops.Tensor]

Numerical integration over the model.

Parameters
  • limits (tuple, ZfitSpace) – the limits to integrate over

  • norm_range (tuple, ZfitSpace, False) – the limits to normalize over

Returns

the integral value

Return type

Tensor

property obs

Return the observables, string identifier for the coordinate system.

property params
partial_analytic_integrate(**kwargs)
partial_integrate(**kwargs)
partial_numeric_integrate(**kwargs)
pdf(**kwargs)
classmethod register_additional_repr(**kwargs)

Register an additional attribute to add to the repr.

Parameters
  • keyword argument. The value has to be gettable from the instance (has to be an (any) –

  • or callable method of self. (attribute) –

classmethod register_analytic_integral(func: Callable, limits: Union[Tuple[Tuple[float, ...]], Tuple[float, ...], bool] = None, priority: Union[int, float] = 50, *, supports_norm_range: bool = False, supports_multiple_limits: bool = False) → None

Register an analytic integral with the class.

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.

    • 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.

    • params (Dict[param_name, zfit.Parameters]): The parameters of the model.

    • model (ZfitModel):The model that is being integrated.

  • () (limits) – |limits_arg_descr|

  • priority (int) – Priority of the function. If multiple functions cover the same space, the one with the highest priority will be used.

  • supports_multiple_limits (bool) – If True, the limits given to the integration function can have multiple limits. If False, only simple limits will pass through and multiple limits will be auto-handled.

  • supports_norm_range (bool) – If True, norm_range argument to the function may not be None. If False, norm_range will always be None and care is taken of the normalization automatically.

register_cacher(cacher: Union[zfit.core.interfaces.ZfitCachable, Iterable[zfit.core.interfaces.ZfitCachable]])

Register a cacher that caches values produces by this instance; a dependent.

Parameters

() (cacher) –

classmethod register_inverse_analytic_integral(func: Callable) → None

Register an inverse analytical integral, the inverse (unnormalized) cdf.

Parameters

() (func) –

reset_cache(reseter: zfit.util.cache.ZfitCachable)
reset_cache_self()

Clear the cache of self and all dependent cachers.

sample(n: Union[int, tensorflow.python.framework.ops.Tensor, str] = None, limits: Union[Tuple[Tuple[float, ...]], Tuple[float, ...], bool] = None) → zfit.core.data.SampleData

Sample n points within limits from the model.

If limits is not specified, space is used (if the space contains limits). If n is None and the model is an extended pdf, ‘extended’ is used by default.

Parameters
  • n (int, tf.Tensor, str) –

    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 (tuple, ZfitSpace) – In which region to sample in

Returns

SampleData(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_range: Union[zfit.core.interfaces.ZfitLimit, tensorflow.python.framework.ops.Tensor, numpy.ndarray, Iterable[float], float, Tuple[float], List[float], bool, None])

Set the normalization range (temporarily if used with contextmanager).

Parameters

norm_range (tuple, Space) –

property space
unnormalized_pdf(x: Union[float, tensorflow.python.framework.ops.Tensor], component_norm_range: Union[zfit.core.interfaces.ZfitLimit, tensorflow.python.framework.ops.Tensor, numpy.ndarray, Iterable[float], float, Tuple[float], List[float], bool, None] = None) → Union[float, tensorflow.python.framework.ops.Tensor]

PDF “unnormalized”. Use functions for unnormalized pdfs. this is only for performance in special cases.

Parameters
  • x (numerical) – The value, have to be convertible to a Tensor

  • component_norm_range (Space) – The normalization range for the components. Needed for

  • composition (certain) – pdfs.

Returns

1-dimensional tf.Tensor containing the unnormalized pdf.

Return type

tf.Tensor

update_integration_options(draws_per_dim=None, mc_sampler=None)

Set the integration options.

Parameters
  • draws_per_dim (int) – The draws for MC integration to do

  • () (mc_sampler) –

class zfit.models.polynomials.Legendre(obs: Union[str, Iterable[str], zfit.Space], coeffs: List[Union[zfit.core.interfaces.ZfitParameter, int, float, complex, tensorflow.python.framework.ops.Tensor]], apply_scaling: bool = True, coeff0: Union[zfit.core.interfaces.ZfitParameter, int, float, complex, tensorflow.python.framework.ops.Tensor, None] = None, name: str = 'Legendre')[source]

Bases: zfit.models.polynomials.RecursivePolynomial

Linear combination of Legendre polynomials of order len(coeffs), the coeffs are overall scaling factors.

The 0th coefficient is set to 1 by default but can be explicitly set with coeff0. Since the PDF normalization removes a degree of freedom, the 0th coefficient is redundant and leads to an arbitrary overall scaling of all parameters.

Notice that this is already a sum of polynomials and the coeffs are simply scaling the individual orders of the polynomials.

The recursive definition of _a single order_ of the polynomial is

\[ \begin{align}\begin{aligned}(n+1) P_{n+1}(x) = (2n + 1) x P_{n}(x) - n P_{n-1}(x)\\with P_0 = 1 P_1 = x\end{aligned}\end{align} \]
Parameters
  • obs – The default space the PDF is defined in.

  • coeffs (list[params]) – A list of the coefficients for the polynomials of order 1+ in the sum.

  • apply_scaling (bool) – Rescale the data so that the actual limits represent (-1, 1).

  • coeff0 (param) – The scaling factor of the 0th order polynomial. If not given, it is set to 1.

  • name (str) – Name of the polynomial

add_cache_dependents(cache_dependents: Union[zfit.core.interfaces.ZfitCachable, Iterable[zfit.core.interfaces.ZfitCachable]], allow_non_cachable: bool = True)

Add dependents that render the cache invalid if they change.

Parameters
  • cache_dependents (ZfitCachable) –

  • allow_non_cachable (bool) – If True, allow cache_dependents to be non-cachables. If False, any cache_dependents that is not a ZfitCachable will raise an error.

Raises

TypeError – if one of the cache_dependents is not a ZfitCachable _and_ allow_non_cachable if False.

analytic_integrate(limits: Union[Tuple[Tuple[float, ...]], Tuple[float, ...], bool], norm_range: Union[Tuple[Tuple[float, ...]], Tuple[float, ...], bool] = None) → Union[float, tensorflow.python.framework.ops.Tensor]

Analytical integration over function and raise Error if not possible.

Parameters
  • limits (tuple, ZfitSpace) – the limits to integrate over

  • norm_range (tuple, ZfitSpace, False) – the limits to normalize over

Returns

the integral value

Return type

Tensor

Raises
  • AnalyticIntegralNotImplementedError – If no analytical integral is available (for this limits).

  • NormRangeNotImplementedError – if the norm_range argument is not supported. This means that no analytical normalization is available, explicitly: the analytical integral over the limits = norm_range is not available.

apply_yield(value: Union[float, tensorflow.python.framework.ops.Tensor], norm_range: Union[zfit.core.interfaces.ZfitLimit, tensorflow.python.framework.ops.Tensor, numpy.ndarray, Iterable[float], float, Tuple[float], List[float], bool, None] = False, log: bool = False) → Union[float, tensorflow.python.framework.ops.Tensor]

If a norm_range is given, the value will be multiplied by the yield.

Parameters
  • value (numerical) –

  • () (norm_range) –

  • log (bool) –

Returns

numerical

as_func(norm_range: Union[Tuple[Tuple[float, ...]], Tuple[float, ...], bool] = False)

Return a Function with the function model(x, norm_range=norm_range).

Parameters

() (norm_range) –

property axes

Return the axes, integer based identifier(indices) for the coordinate system.

convert_sort_space(obs: Union[str, Iterable[str], zfit.Space, zfit.core.interfaces.ZfitLimit, tensorflow.python.framework.ops.Tensor, numpy.ndarray, Iterable[float], float, Tuple[float], List[float], bool, None] = None, axes: Union[int, Iterable[int]] = None, limits: Union[zfit.core.interfaces.ZfitLimit, tensorflow.python.framework.ops.Tensor, numpy.ndarray, Iterable[float], float, Tuple[float], List[float], bool, None] = None) → Optional[zfit.core.interfaces.ZfitSpace]

Convert the inputs (using eventually obs, axes) to ZfitSpace and sort them according to own obs.

Parameters
  • () (limits) –

  • ()

  • ()

Returns:

copy(**override_parameters) → zfit.core.basepdf.BasePDF

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.

Returns

A new instance of type(self) initialized from the union

of self.parameters and override_parameters, i.e., dict(self.parameters, **override_parameters).

Return type

model

create_extended(yield_: Union[zfit.core.interfaces.ZfitParameter, int, float, complex, tensorflow.python.framework.ops.Tensor], name_addition='_extended') → zfit.core.interfaces.ZfitPDF

Return an extended version of this pdf with yield yield_. The parameters are shared.

Parameters
Returns

ZfitPDF

create_projection_pdf(limits_to_integrate: Union[zfit.core.interfaces.ZfitLimit, tensorflow.python.framework.ops.Tensor, numpy.ndarray, Iterable[float], float, Tuple[float], List[float], bool, None]) → zfit.core.interfaces.ZfitPDF

Create a PDF projection by integrating out some of the dimensions.

The new projection pdf is still fully dependent on the pdf it was created with.

Parameters

limits_to_integrate (Space) –

Returns

a pdf without the dimensions from limits_to_integrate.

Return type

ZfitPDF

create_sampler(n: Union[int, tensorflow.python.framework.ops.Tensor, str] = None, limits: Union[Tuple[Tuple[float, ...]], Tuple[float, ...], bool] = None, fixed_params: Union[bool, List[zfit.core.interfaces.ZfitParameter], Tuple[zfit.core.interfaces.ZfitParameter]] = True) → zfit.core.data.Sampler

Create a Sampler that acts as Data but can be resampled, also with changed parameters and n.

If limits is not specified, space is used (if the space contains limits). If n is None and the model is an extended pdf, ‘extended’ is used by default.

Parameters
  • n (int, tf.Tensor, str) –

    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.

  • () (fixed_params) – From which space to sample.

  • () – A list of Parameters that will be fixed during several resample calls. If True, all are fixed, if False, all are floating. If a Parameter is not fixed and its value gets updated (e.g. by a Parameter.set_value() call), this will be reflected in resample. If fixed, the Parameter will still have the same value as the Sampler has been created with when it resamples.

Returns

py:class:~`zfit.core.data.Sampler`

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 degree

degree of the polynomial, starting from 0.

Type

int

property dtype

The dtype of the object

get_dependents(only_floating: bool = True) -> OrderedSet(['z', 'f', 'i', 't', '.', 'P', 'a', 'r', 'm', 'e'])

Return a set of all independent Parameter that this object depends on.

Parameters

only_floating (bool) – If True, only return floating Parameter

get_params(only_floating: bool = False, names: Union[str, List[str], None] = None) → List[zfit.core.interfaces.ZfitParameter]

Return the parameters. If it is empty, automatically return all floating variables.

Parameters
  • () (names) – If True, return only the floating parameters.

  • () – The names of the parameters to return.

Returns

Return type

list(ZfitParameters)

get_yield() → Optional[zfit.core.parameter.Parameter]

Return the yield (only for extended models).

Returns

the yield of the current model or None

Return type

Parameter

gradients(x: Union[float, tensorflow.python.framework.ops.Tensor], norm_range: Union[Tuple[Tuple[float, ...]], Tuple[float, ...], bool], params: Optional[Iterable[zfit.core.interfaces.ZfitParameter]] = None)
graph_caching_methods = [<function FunctionWrapperRegistry.__call__.<locals>.concrete_func>, <function FunctionWrapperRegistry.__call__.<locals>.concrete_func>, <function FunctionWrapperRegistry.__call__.<locals>.concrete_func>, <function FunctionWrapperRegistry.__call__.<locals>.concrete_func>, <function FunctionWrapperRegistry.__call__.<locals>.concrete_func>, <function FunctionWrapperRegistry.__call__.<locals>.concrete_func>, <function FunctionWrapperRegistry.__call__.<locals>.concrete_func>]
instances = <_weakrefset.WeakSet object>
integrate(**kwargs)
property is_extended

Flag to tell whether the model is extended or not.

Returns

Return type

bool

log_pdf(x: Union[float, tensorflow.python.framework.ops.Tensor], norm_range: Union[Tuple[Tuple[float, ...]], Tuple[float, ...], bool] = None) → Union[float, tensorflow.python.framework.ops.Tensor]

Log probability density function normalized over norm_range.

Parameters
  • x (numerical) – float or double Tensor.

  • norm_range (tuple, Space) – Space to normalize over

Returns

a Tensor of type self.dtype.

Return type

log_pdf

property n_obs

Return the number of observables, the dimensionality. Corresponds to the last dimension.

property name

The name of the object.

property norm_range

Return the current normalization range. If None and the `obs`have limits, they are returned.

Returns

The current normalization range

Return type

Space or None

normalization(limits: Union[Tuple[Tuple[float, ...]], Tuple[float, ...], bool]) → Union[float, tensorflow.python.framework.ops.Tensor]

Return the normalization of the function (usually the integral over limits).

Parameters

limits (tuple, Space) – The limits on where to normalize over

Returns

the normalization value

Return type

Tensor

numeric_integrate(limits: Union[Tuple[Tuple[float, ...]], Tuple[float, ...], bool], norm_range: Union[Tuple[Tuple[float, ...]], Tuple[float, ...], bool] = None) → Union[float, tensorflow.python.framework.ops.Tensor]

Numerical integration over the model.

Parameters
  • limits (tuple, ZfitSpace) – the limits to integrate over

  • norm_range (tuple, ZfitSpace, False) – the limits to normalize over

Returns

the integral value

Return type

Tensor

property obs

Return the observables, string identifier for the coordinate system.

property params
partial_analytic_integrate(**kwargs)
partial_integrate(**kwargs)
partial_numeric_integrate(**kwargs)
pdf(**kwargs)
classmethod register_additional_repr(**kwargs)

Register an additional attribute to add to the repr.

Parameters
  • keyword argument. The value has to be gettable from the instance (has to be an (any) –

  • or callable method of self. (attribute) –

classmethod register_analytic_integral(func: Callable, limits: Union[Tuple[Tuple[float, ...]], Tuple[float, ...], bool] = None, priority: Union[int, float] = 50, *, supports_norm_range: bool = False, supports_multiple_limits: bool = False) → None

Register an analytic integral with the class.

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.

    • 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.

    • params (Dict[param_name, zfit.Parameters]): The parameters of the model.

    • model (ZfitModel):The model that is being integrated.

  • () (limits) – |limits_arg_descr|

  • priority (int) – Priority of the function. If multiple functions cover the same space, the one with the highest priority will be used.

  • supports_multiple_limits (bool) – If True, the limits given to the integration function can have multiple limits. If False, only simple limits will pass through and multiple limits will be auto-handled.

  • supports_norm_range (bool) – If True, norm_range argument to the function may not be None. If False, norm_range will always be None and care is taken of the normalization automatically.

register_cacher(cacher: Union[zfit.core.interfaces.ZfitCachable, Iterable[zfit.core.interfaces.ZfitCachable]])

Register a cacher that caches values produces by this instance; a dependent.

Parameters

() (cacher) –

classmethod register_inverse_analytic_integral(func: Callable) → None

Register an inverse analytical integral, the inverse (unnormalized) cdf.

Parameters

() (func) –

reset_cache(reseter: zfit.util.cache.ZfitCachable)
reset_cache_self()

Clear the cache of self and all dependent cachers.

sample(n: Union[int, tensorflow.python.framework.ops.Tensor, str] = None, limits: Union[Tuple[Tuple[float, ...]], Tuple[float, ...], bool] = None) → zfit.core.data.SampleData

Sample n points within limits from the model.

If limits is not specified, space is used (if the space contains limits). If n is None and the model is an extended pdf, ‘extended’ is used by default.

Parameters
  • n (int, tf.Tensor, str) –

    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 (tuple, ZfitSpace) – In which region to sample in

Returns

SampleData(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_range: Union[zfit.core.interfaces.ZfitLimit, tensorflow.python.framework.ops.Tensor, numpy.ndarray, Iterable[float], float, Tuple[float], List[float], bool, None])

Set the normalization range (temporarily if used with contextmanager).

Parameters

norm_range (tuple, Space) –

property space
unnormalized_pdf(x: Union[float, tensorflow.python.framework.ops.Tensor], component_norm_range: Union[zfit.core.interfaces.ZfitLimit, tensorflow.python.framework.ops.Tensor, numpy.ndarray, Iterable[float], float, Tuple[float], List[float], bool, None] = None) → Union[float, tensorflow.python.framework.ops.Tensor]

PDF “unnormalized”. Use functions for unnormalized pdfs. this is only for performance in special cases.

Parameters
  • x (numerical) – The value, have to be convertible to a Tensor

  • component_norm_range (Space) – The normalization range for the components. Needed for

  • composition (certain) – pdfs.

Returns

1-dimensional tf.Tensor containing the unnormalized pdf.

Return type

tf.Tensor

update_integration_options(draws_per_dim=None, mc_sampler=None)

Set the integration options.

Parameters
  • draws_per_dim (int) – The draws for MC integration to do

  • () (mc_sampler) –

class zfit.models.polynomials.RecursivePolynomial(obs, coeffs: list, apply_scaling: bool = True, coeff0: Optional[tensorflow.python.framework.ops.Tensor] = None, name: str = 'Polynomial')[source]

Bases: zfit.core.basepdf.BasePDF

1D polynomial generated via three-term recurrence.

Base class to create 1 dimensional recursive polynomials that can be rescaled. Overwrite _poly_func.

Parameters
  • coeffs (list) – Coefficients for each polynomial. Used to calculate the degree.

  • apply_scaling (bool) –

    Rescale the data so that the actual limits represent (-1, 1).

    \[x_{n+1} = recurrence(x_{n}, x_{n-1}, n)\]

add_cache_dependents(cache_dependents: Union[zfit.core.interfaces.ZfitCachable, Iterable[zfit.core.interfaces.ZfitCachable]], allow_non_cachable: bool = True)

Add dependents that render the cache invalid if they change.

Parameters
  • cache_dependents (ZfitCachable) –

  • allow_non_cachable (bool) – If True, allow cache_dependents to be non-cachables. If False, any cache_dependents that is not a ZfitCachable will raise an error.

Raises

TypeError – if one of the cache_dependents is not a ZfitCachable _and_ allow_non_cachable if False.

analytic_integrate(limits: Union[Tuple[Tuple[float, ...]], Tuple[float, ...], bool], norm_range: Union[Tuple[Tuple[float, ...]], Tuple[float, ...], bool] = None) → Union[float, tensorflow.python.framework.ops.Tensor]

Analytical integration over function and raise Error if not possible.

Parameters
  • limits (tuple, ZfitSpace) – the limits to integrate over

  • norm_range (tuple, ZfitSpace, False) – the limits to normalize over

Returns

the integral value

Return type

Tensor

Raises
  • AnalyticIntegralNotImplementedError – If no analytical integral is available (for this limits).

  • NormRangeNotImplementedError – if the norm_range argument is not supported. This means that no analytical normalization is available, explicitly: the analytical integral over the limits = norm_range is not available.

apply_yield(value: Union[float, tensorflow.python.framework.ops.Tensor], norm_range: Union[zfit.core.interfaces.ZfitLimit, tensorflow.python.framework.ops.Tensor, numpy.ndarray, Iterable[float], float, Tuple[float], List[float], bool, None] = False, log: bool = False) → Union[float, tensorflow.python.framework.ops.Tensor]

If a norm_range is given, the value will be multiplied by the yield.

Parameters
  • value (numerical) –

  • () (norm_range) –

  • log (bool) –

Returns

numerical

as_func(norm_range: Union[Tuple[Tuple[float, ...]], Tuple[float, ...], bool] = False)

Return a Function with the function model(x, norm_range=norm_range).

Parameters

() (norm_range) –

property axes

Return the axes, integer based identifier(indices) for the coordinate system.

convert_sort_space(obs: Union[str, Iterable[str], zfit.Space, zfit.core.interfaces.ZfitLimit, tensorflow.python.framework.ops.Tensor, numpy.ndarray, Iterable[float], float, Tuple[float], List[float], bool, None] = None, axes: Union[int, Iterable[int]] = None, limits: Union[zfit.core.interfaces.ZfitLimit, tensorflow.python.framework.ops.Tensor, numpy.ndarray, Iterable[float], float, Tuple[float], List[float], bool, None] = None) → Optional[zfit.core.interfaces.ZfitSpace]

Convert the inputs (using eventually obs, axes) to ZfitSpace and sort them according to own obs.

Parameters
  • () (limits) –

  • ()

  • ()

Returns:

copy(**override_parameters) → zfit.core.basepdf.BasePDF

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.

Returns

A new instance of type(self) initialized from the union

of self.parameters and override_parameters, i.e., dict(self.parameters, **override_parameters).

Return type

model

create_extended(yield_: Union[zfit.core.interfaces.ZfitParameter, int, float, complex, tensorflow.python.framework.ops.Tensor], name_addition='_extended') → zfit.core.interfaces.ZfitPDF

Return an extended version of this pdf with yield yield_. The parameters are shared.

Parameters
Returns

ZfitPDF

create_projection_pdf(limits_to_integrate: Union[zfit.core.interfaces.ZfitLimit, tensorflow.python.framework.ops.Tensor, numpy.ndarray, Iterable[float], float, Tuple[float], List[float], bool, None]) → zfit.core.interfaces.ZfitPDF

Create a PDF projection by integrating out some of the dimensions.

The new projection pdf is still fully dependent on the pdf it was created with.

Parameters

limits_to_integrate (Space) –

Returns

a pdf without the dimensions from limits_to_integrate.

Return type

ZfitPDF

create_sampler(n: Union[int, tensorflow.python.framework.ops.Tensor, str] = None, limits: Union[Tuple[Tuple[float, ...]], Tuple[float, ...], bool] = None, fixed_params: Union[bool, List[zfit.core.interfaces.ZfitParameter], Tuple[zfit.core.interfaces.ZfitParameter]] = True) → zfit.core.data.Sampler

Create a Sampler that acts as Data but can be resampled, also with changed parameters and n.

If limits is not specified, space is used (if the space contains limits). If n is None and the model is an extended pdf, ‘extended’ is used by default.

Parameters
  • n (int, tf.Tensor, str) –

    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.

  • () (fixed_params) – From which space to sample.

  • () – A list of Parameters that will be fixed during several resample calls. If True, all are fixed, if False, all are floating. If a Parameter is not fixed and its value gets updated (e.g. by a Parameter.set_value() call), this will be reflected in resample. If fixed, the Parameter will still have the same value as the Sampler has been created with when it resamples.

Returns

py:class:~`zfit.core.data.Sampler`

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 degree

degree of the polynomial, starting from 0.

Type

int

property dtype

The dtype of the object

get_dependents(only_floating: bool = True) -> OrderedSet(['z', 'f', 'i', 't', '.', 'P', 'a', 'r', 'm', 'e'])

Return a set of all independent Parameter that this object depends on.

Parameters

only_floating (bool) – If True, only return floating Parameter

get_params(only_floating: bool = False, names: Union[str, List[str], None] = None) → List[zfit.core.interfaces.ZfitParameter]

Return the parameters. If it is empty, automatically return all floating variables.

Parameters
  • () (names) – If True, return only the floating parameters.

  • () – The names of the parameters to return.

Returns

Return type

list(ZfitParameters)

get_yield() → Optional[zfit.core.parameter.Parameter]

Return the yield (only for extended models).

Returns

the yield of the current model or None

Return type

Parameter

gradients(x: Union[float, tensorflow.python.framework.ops.Tensor], norm_range: Union[Tuple[Tuple[float, ...]], Tuple[float, ...], bool], params: Optional[Iterable[zfit.core.interfaces.ZfitParameter]] = None)
graph_caching_methods = [<function FunctionWrapperRegistry.__call__.<locals>.concrete_func>, <function FunctionWrapperRegistry.__call__.<locals>.concrete_func>, <function FunctionWrapperRegistry.__call__.<locals>.concrete_func>, <function FunctionWrapperRegistry.__call__.<locals>.concrete_func>, <function FunctionWrapperRegistry.__call__.<locals>.concrete_func>, <function FunctionWrapperRegistry.__call__.<locals>.concrete_func>, <function FunctionWrapperRegistry.__call__.<locals>.concrete_func>]
instances = <_weakrefset.WeakSet object>
integrate(**kwargs)
property is_extended

Flag to tell whether the model is extended or not.

Returns

Return type

bool

log_pdf(x: Union[float, tensorflow.python.framework.ops.Tensor], norm_range: Union[Tuple[Tuple[float, ...]], Tuple[float, ...], bool] = None) → Union[float, tensorflow.python.framework.ops.Tensor]

Log probability density function normalized over norm_range.

Parameters
  • x (numerical) – float or double Tensor.

  • norm_range (tuple, Space) – Space to normalize over

Returns

a Tensor of type self.dtype.

Return type

log_pdf

property n_obs

Return the number of observables, the dimensionality. Corresponds to the last dimension.

property name

The name of the object.

property norm_range

Return the current normalization range. If None and the `obs`have limits, they are returned.

Returns

The current normalization range

Return type

Space or None

normalization(limits: Union[Tuple[Tuple[float, ...]], Tuple[float, ...], bool]) → Union[float, tensorflow.python.framework.ops.Tensor]

Return the normalization of the function (usually the integral over limits).

Parameters

limits (tuple, Space) – The limits on where to normalize over

Returns

the normalization value

Return type

Tensor

numeric_integrate(limits: Union[Tuple[Tuple[float, ...]], Tuple[float, ...], bool], norm_range: Union[Tuple[Tuple[float, ...]], Tuple[float, ...], bool] = None) → Union[float, tensorflow.python.framework.ops.Tensor]

Numerical integration over the model.

Parameters
  • limits (tuple, ZfitSpace) – the limits to integrate over

  • norm_range (tuple, ZfitSpace, False) – the limits to normalize over

Returns

the integral value

Return type

Tensor

property obs

Return the observables, string identifier for the coordinate system.

property params
partial_analytic_integrate(**kwargs)
partial_integrate(**kwargs)
partial_numeric_integrate(**kwargs)
pdf(**kwargs)
classmethod register_additional_repr(**kwargs)

Register an additional attribute to add to the repr.

Parameters
  • keyword argument. The value has to be gettable from the instance (has to be an (any) –

  • or callable method of self. (attribute) –

classmethod register_analytic_integral(func: Callable, limits: Union[Tuple[Tuple[float, ...]], Tuple[float, ...], bool] = None, priority: Union[int, float] = 50, *, supports_norm_range: bool = False, supports_multiple_limits: bool = False) → None

Register an analytic integral with the class.

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.

    • 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.

    • params (Dict[param_name, zfit.Parameters]): The parameters of the model.

    • model (ZfitModel):The model that is being integrated.

  • () (limits) – |limits_arg_descr|

  • priority (int) – Priority of the function. If multiple functions cover the same space, the one with the highest priority will be used.

  • supports_multiple_limits (bool) – If True, the limits given to the integration function can have multiple limits. If False, only simple limits will pass through and multiple limits will be auto-handled.

  • supports_norm_range (bool) – If True, norm_range argument to the function may not be None. If False, norm_range will always be None and care is taken of the normalization automatically.

register_cacher(cacher: Union[zfit.core.interfaces.ZfitCachable, Iterable[zfit.core.interfaces.ZfitCachable]])

Register a cacher that caches values produces by this instance; a dependent.

Parameters

() (cacher) –

classmethod register_inverse_analytic_integral(func: Callable) → None

Register an inverse analytical integral, the inverse (unnormalized) cdf.

Parameters

() (func) –

reset_cache(reseter: zfit.util.cache.ZfitCachable)
reset_cache_self()

Clear the cache of self and all dependent cachers.

sample(n: Union[int, tensorflow.python.framework.ops.Tensor, str] = None, limits: Union[Tuple[Tuple[float, ...]], Tuple[float, ...], bool] = None) → zfit.core.data.SampleData

Sample n points within limits from the model.

If limits is not specified, space is used (if the space contains limits). If n is None and the model is an extended pdf, ‘extended’ is used by default.

Parameters
  • n (int, tf.Tensor, str) –

    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 (tuple, ZfitSpace) – In which region to sample in

Returns

SampleData(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_range: Union[zfit.core.interfaces.ZfitLimit, tensorflow.python.framework.ops.Tensor, numpy.ndarray, Iterable[float], float, Tuple[float], List[float], bool, None])

Set the normalization range (temporarily if used with contextmanager).

Parameters

norm_range (tuple, Space) –

property space
unnormalized_pdf(x: Union[float, tensorflow.python.framework.ops.Tensor], component_norm_range: Union[zfit.core.interfaces.ZfitLimit, tensorflow.python.framework.ops.Tensor, numpy.ndarray, Iterable[float], float, Tuple[float], List[float], bool, None] = None) → Union[float, tensorflow.python.framework.ops.Tensor]

PDF “unnormalized”. Use functions for unnormalized pdfs. this is only for performance in special cases.

Parameters
  • x (numerical) – The value, have to be convertible to a Tensor

  • component_norm_range (Space) – The normalization range for the components. Needed for

  • composition (certain) – pdfs.

Returns

1-dimensional tf.Tensor containing the unnormalized pdf.

Return type

tf.Tensor

update_integration_options(draws_per_dim=None, mc_sampler=None)

Set the integration options.

Parameters
  • draws_per_dim (int) – The draws for MC integration to do

  • () (mc_sampler) –

zfit.models.polynomials.chebyshev2_shape(x, coeffs)[source]
zfit.models.polynomials.chebyshev_shape(x, coeffs)[source]
zfit.models.polynomials.convert_coeffs_dict_to_list(coeffs: Mapping) → List[source]
zfit.models.polynomials.create_poly(x, polys, coeffs, recurrence)[source]
zfit.models.polynomials.do_recurrence(x, polys, degree, recurrence)[source]
zfit.models.polynomials.func_integral_chebyshev1(limits, norm_range, params, model)[source]
zfit.models.polynomials.func_integral_chebyshev2(limits, norm_range, params, model)[source]
zfit.models.polynomials.func_integral_hermite(limits, norm_range, params, model)[source]
zfit.models.polynomials.func_integral_laguerre(limits, norm_range, params: Dict, model)[source]

The integral of the simple laguerre polynomials.

Defined as \(\int L_{n} = (-1) L_{n+1}^{(-1)}\) with \(L^{(lpha)}\) the generalized Laguerre polynom.

Parameters
  • limits

  • norm_range

  • params

  • model

Returns:

zfit.models.polynomials.generalized_laguerre_polys_factory(alpha=0.0)[source]
zfit.models.polynomials.generalized_laguerre_recurrence_factory(alpha=0.0)[source]
zfit.models.polynomials.generalized_laguerre_shape_factory(alpha=0.0)[source]
zfit.models.polynomials.hermite_shape(x, coeffs)[source]
zfit.models.polynomials.laguerre_shape(x, coeffs)
zfit.models.polynomials.laguerre_shape_alpha_minusone(x, coeffs)
zfit.models.polynomials.legendre_integral(limits: zfit.Space, norm_range: zfit.Space, params: List[zfit.Parameter], model: zfit.models.polynomials.RecursivePolynomial)[source]

Recursive integral of Legendre polynomials

zfit.models.polynomials.legendre_shape(x, coeffs)[source]
zfit.models.polynomials.rescale_minus_plus_one(x: tensorflow.python.framework.ops.Tensor, limits: zfit.Space) → tensorflow.python.framework.ops.Tensor[source]

Rescale and shift x as limits were rescaled and shifted to be in (-1, 1). Useful for orthogonal polynomials.

Parameters
  • x – Array like data

  • limits – 1-D limits

Returns

the rescaled tensor.

Return type

tf.Tensor