Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
remaining_frac_func = lambda: tf.constant(1., dtype=ztypes.float) - tf.add_n(fracs)
remaining_frac = convert_to_parameter(remaining_frac_func,
def poisson(lam: Any, shape: Any, dtype: tf.DType = ztypes.float, seed: Any = None, name: Any = None):
return tf.random.poisson(lam=lam, shape=shape, dtype=dtype, seed=seed, name=name)
def __init__(self, dataset: Union[tf.data.Dataset, "LightDataset"], sample_holder: tf.Variable,
n_holder: tf.Variable, weights=None,
fixed_params: Dict["zfit.Parameter", ztyping.NumericalScalarType] = None,
obs: ztyping.ObsTypeInput = None, name: str = None,
dtype: tf.DType = ztypes.float):
super().__init__(dataset, obs, name=name, weights=weights, iterator_feed_dict=None, dtype=dtype)
if fixed_params is None:
fixed_params = OrderedDict()
if isinstance(fixed_params, (list, tuple)):
fixed_params = OrderedDict((param, self.sess.run(param)) for param in fixed_params)
self._initial_resampled = False
# self.sess.run(sample_holder.initializer)
self.fixed_params = fixed_params
self.sample_holder = sample_holder
self.n = None
self._n_holder = n_holder
weights = ztf.constant(1., shape=(1,))
for (lower, upper), area in zip(limits.iter_limits(as_tuple=True), limits.iter_areas(rel=True)):
n_partial_to_produce = tf.to_int32(
ztf.to_real(n_to_produce) * ztf.to_real(area)) # TODO(Mayou36): split right!
lower = ztf.convert_to_tensor(lower, dtype=dtype)
upper = ztf.convert_to_tensor(upper, dtype=dtype)
if isinstance(limits, EventSpace):
lower = tf.transpose(lower)
upper = tf.transpose(upper)
sample_drawn = tf.random_uniform(shape=(n_partial_to_produce, limits.n_obs + 1),
# + 1 dim for the function value
dtype=ztypes.float)
rnd_sample = sample_drawn[:, :-1] * (upper - lower) + lower # -1: all except func value
thresholds_unscaled = sample_drawn[:, -1]
# if not multiple_limits:
# return rnd_sample, thresholds_unscaled
rnd_samples.append(rnd_sample)
thresholds_unscaled_list.append(thresholds_unscaled)
rnd_sample = tf.concat(rnd_samples, axis=0)
thresholds_unscaled = tf.concat(thresholds_unscaled_list, axis=0)
n_drawn = n_to_produce
return rnd_sample, thresholds_unscaled, weights, weights, n_drawn
def __init__(self, distribution, dist_params, obs, params=None, dist_kwargs=None, dtype=ztypes.float, name=None,
**kwargs):
# Check if subclass of distribution?
if dist_kwargs is None:
dist_kwargs = {}
if dist_params is None:
dist_params = {}
name = name or distribution.name
if params is None:
params = OrderedDict((k, p) for k, p in dist_params.items())
else:
params = OrderedDict((k, convert_to_parameter(p)) for k, p in params.items())
super().__init__(obs=obs, dtype=dtype, name=name, params=params, **kwargs)
self._distribution = distribution
def __init__(self, obs: ztyping.ObsTypeInput, params: Dict[str, ZfitParameter] = None, dtype: Type = ztypes.float,
name: str = "BasePDF",
**kwargs):
super().__init__(obs=obs, dtype=dtype, name=name, params=params, **kwargs)
self._yield = None
self._temp_yield = None
self._norm_range = None
self._normalization_value = None
def __init__(self, mu: ztyping.ParamTypeInput, sigma: ztyping.ParamTypeInput,
alpha: ztyping.ParamTypeInput, n: ztyping.ParamTypeInput,
obs: ztyping.ObsTypeInput, name: str = "CrystalBall", dtype: Type = ztypes.float):
"""`Crystal Ball shaped PDF`__. A combination of a Gaussian with an powerlaw tail.
The function is defined as follows:
.. math::
f(x;\\mu, \\sigma, \\alpha, n) = \\begin{cases} \\exp(- \\frac{(x - \\mu)^2}{2 \\sigma^2}),
& \\mbox{for}\\frac{x - \\mu}{\\sigma} \\geqslant -\\alpha \\newline
A \\cdot (B - \\frac{x - \\mu}{\\sigma})^{-n}, & \\mbox{for }\\frac{x - \\mu}{\\sigma}
< -\\alpha \\end{cases}
with
.. math::
A = \\left(\\frac{n}{\\left| \\alpha \\right|}\\right)^n \\cdot
\\exp\\left(- \\frac {\\left|\\alpha \\right|^2}{2}\\right)
def auto_integrate(func, limits, n_axes, x=None, method="AUTO", dtype=ztypes.float,
mc_sampler=tfp.mcmc.sample_halton_sequence,
mc_options=None):
if method == "AUTO": # TODO unfinished, other methods?
method = "mc"
# TODO method
if method.lower() == "mc":
mc_options = mc_options or {}
draws_per_dim = mc_options['draws_per_dim']
integral = mc_integrate(x=x, func=func, limits=limits, n_axes=n_axes, method=method, dtype=dtype,
mc_sampler=mc_sampler, draws_per_dim=draws_per_dim,
importance_sampling=None)
return integral