首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有方法在zfit中扩展预先定义的多项式pdf?

是否有方法在zfit中扩展预先定义的多项式pdf?
EN

Stack Overflow用户
提问于 2019-11-04 20:41:48
回答 1查看 99关注 0票数 2

​我试着用扩展的Chebyshev来做一个契合。为此,我使用预定义的zfit.pdf.Chebyshev()。我在这里错过了什么?

代码语言:javascript
复制
import tensorflow as tf
import zfit
from zfit import ztf

obs = zfit.Space('mass', limits=(-1000., 1000.)) 
slope = zfit.Parameter("slope", -0.1, -1., 1., floating = True)
Nbkg = zfit.Parameter("Nbkg", 10, 0., 1000)
bkg_pdf =  Nbkg*zfit.pdf.Chebyshev(obs =obs, coeffs = [slope])

对于所有预定义的多项式(Chebyshev/Legendre/Hermite),我得到以下错误:

代码语言:javascript
复制
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-3-a86d6be1cc9d> in <module>
      2 slope = zfit.Parameter("slope", -0.1, -1., 1., floating = True)
      3 Nbkg = zfit.Parameter("Nbkg", 10, 0., 1000)
----> 4 bkg_pdf =  Nbkg*zfit.pdf.Chebyshev(obs =obs, coeffs = [slope])
      5 
      6 

~/soft/minconda3/envs/my-analysis-env/lib/python3.7/site-packages/zfit/core/parameter.py in __mul__(self, other)
    289             from . import operations
    290             with suppress(NotImplementedError):
--> 291                 return operations.multiply(self, other)
    292         return super().__mul__(other)
    293 

~/soft/minconda3/envs/my-analysis-env/lib/python3.7/site-packages/zfit/core/operations.py in multiply(object1, object2)
     34             new_object = multiply_param_func(param=object1, func=object2)
     35         elif isinstance(object2, ZfitPDF):
---> 36             new_object = multiply_param_pdf(param=object1, pdf=object2)
     37         else:
     38             assert False, "This code should never be reached due to logical reasons. Mistakes happen..."

~/soft/minconda3/envs/my-analysis-env/lib/python3.7/site-packages/zfit/core/operations.py in multiply_param_pdf(param, pdf)
     86     if pdf.is_extended:
     87         raise AlreadyExtendedPDFError()
---> 88     new_pdf = pdf.create_extended(param, name_addition="_autoextended")
     89     return new_pdf
     90 

~/soft/minconda3/envs/my-analysis-env/lib/python3.7/site-packages/zfit/core/basepdf.py in create_extended(self, yield_, name_addition)
    462         if self.is_extended:
    463             raise AlreadyExtendedPDFError("This PDF is already extended, cannot create an extended one.")
--> 464         new_pdf = self.copy(name=self.name + str(name_addition))
    465         new_pdf._set_yield_inplace(value=yield_)
    466         return new_pdf

~/soft/minconda3/envs/my-analysis-env/lib/python3.7/site-packages/zfit/core/basepdf.py in copy(self, **override_parameters)
    579         #     parameters.update(distribution=self.distribution)
    580         yield_ = parameters.pop('yield', None)
--> 581         new_instance = type(self)(**parameters)
    582         if yield_ is not None:
    583             new_instance._set_yield_inplace(yield_)

TypeError: __init__() got an unexpected keyword argument 'c_0'

我也尝试过zfit.pdf.Chebyshev().create_extended(Nbkg),为pdf设置了规范化和coeff0参数。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-04 23:31:57

实际上,这是一个在版本> 0.3.6 (当前开发分支)中修复的bug。

您可以通过修复来安装开发分支。

pip install git+https://github.com/zfit/zfit

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58700754

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档