问题标签 [iminuit]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 使用多处理将特殊对象附加到来自不同进程的相同列表
我正在尝试使用 python 多处理并行化任务,但结果是当我需要将对象附加到列表时(具体来说是来自 iminuit 库的一个 minuit 对象),它会给出错误“......无法转换为 Python酸洗对象”。我在这里展示了一个通常可以工作但不适用于这些对象的代码。
阅读多处理的文档我没有找到正确的方法。提前致谢。
pd:在非并行的情况下,很容易制作一个列表并附加这些对象,所以我不明白为什么通常你可以附加它但它在这里不起作用。
memory-leaks - 调查使用 TMinuit ROOT 和 valgrind 时的内存泄漏
我在循环中使用 TMinuit 来扫描一些上限图,但我遇到了内存问题。唯一在循环中创建的是使用“TMinuit * minuit = new TMinuit(n_params);”的 TMinuit 对象。在循环结束时使用“delete minuit”将其删除。我使用了 valgrind,它说了一些关于 Minuit 的内容(这里只是一个片段),但老实说,我不明白那个输出。我的猜测是,“删除minuit”可以释放内存。显然,这还不是全部.. 一些建议?:-)
Valgrind 输出在这里:
minimization - 限制负对数似然最小化的参数
我正在尝试拟合一个 5 参数(a、b、c、d、e)模型,其中一个参数受另一个参数的约束,比方说,
0< d < 1
e < |d|
我只创建zfit.Parameters
并设置了限制,以便它们可以访问的范围是有效的,再一次,让我们说:
d = zfit.Parameter('d', value=0.5, lower_limit=0.3, upper_limit=1.0, step_size=0.01)
e = zfit.Parameter('e', value=0.1, lower_limit=0.0, upper_limit=0.3, step_size=0.01)
到目前为止它一直运作良好,但我认为这不是正确的方法。
所以我的问题是,处理这种约束的正确方法是什么?
干杯
python - 使用 iminuit 时,python 程序具有相同输入的不同输出:未定义的行为?
我遇到了 iminuit 无法收敛于简单线性模型的这种奇怪的错误。然而,真正的问题是,如果我取消注释“#bins = np.linspace(0,4,25)”这行,程序的结果是不同的,它可以收敛。
如果“相同的输入”不产生“相同的输出”,则意味着存在未定义的行为或分段错误。有任何想法吗?
输出: 输出
测试输入
python - 用 iminuit 指定(多)参数限制
我尝试使用带有示例代码的iminuit设置参数限制:
我得到的是错误信息
这很奇怪,因为文档显示以这种方式包含限制。
我对具有 6 个或更多参数的更复杂函数的最小化特别感兴趣,指定其中 2 个参数的空间很重要。
python - 可能性适合使用 scipy.stats 和 iminuit
我需要用似然法拟合一些实验数据,并生成一些随机数据来检查该技术。我对(v 2.7.0)有一些经验,iminuit
看起来scipy.stats
有许多应该有用的现有发行版,提供 pdf/cds 和随机变量(我使用 scipy 1.5.2)。通常,我需要现有分布的组合,例如平坦分布、指数分布和三个高斯分布,全部截断。到目前为止,我正在做的是:
创建
truncFEGGG_gen
,一个子类scipy.stats.rv_continuous
(有 13 个参数,包括边缘,因为我觉得loc
很scale
混乱),覆盖_argcheck
,_get_support
,_pdf
,_cdf
和_rvs
, 和truncFEGGG = truncFEGGG_gen
然后我定义我的开始参数:数据
pars = {'nu': 6758, 'a': 0.1, 'b': 3.6, 'c': -87.5, ...}
中的总计数在哪里nu
,其他参数是 cdf 的那些我定义了
iminuit
扩展分箱似然拟合的实例,并将分布的累积计数传递给它:
这最后一步是目前给我带来麻烦的一步;因为我需要使用几种不同的模型,所以我lambda
每次都需要编写一个不同的函数(一个容易出错的过程),如果我可以scipy.stats
一劳永逸地将累积计数添加到所有分布中,那就容易多了通过该功能:truncFEGGG.cntsCumul(x, nu, a, b, c, d...)
. 这似乎不可行(向 scipy.stats.rv_continuous 添加方法,rv_frozen 存在问题),所以我想知道其他人将如何解决这个问题。有什么建议么?
- 之后,我运行最小化器,使用开始参数,迭代直到事情收敛
python - 使用 iminuit 从直方图 PDF 中最小化
我正在尝试使用由直方图制作的 PDF 将 iminuit 用于 UnbinnedNLL(对于说 ROOT 的人,我正在尝试做与 RooHistPDF 等效的事情)。到目前为止,我想出了这个:
但是,我得到了糟糕的结果。根据我得到的起始值INVALID Minimum
和ABOVE EDM threshold (goal x 10)
/或非常接近起始数字的值。然而,收敛并不难,我的愚蠢循环检查最小化 NLL 的数字,我很快就得到了正确的值(4.458,离 4.3 不远)。
我不明白我做错了什么,理论上migrad
应该给我与我的愚蠢循环相同的结果......我是否以错误的方式使用它?我也尝试了UnbinnedNLL
和LeastSquares
成本函数(使用 PDF 而不是 CDF),但同样的问题。
谢谢!
python - Python:在 iminuit 中初始化参数的方法
在 iminuit 中设置初始参数、错误和步长的正确方法是什么?在 PyRoot 中编写时,我使用来自 ROOT 框架的 mnparm 设置了限制,它是这样的:
以及我不在这里写的其他命令。我想在没有 ROOT 命令的情况下编写程序,但是在 iminuit 的引用中我找不到像 mnparm 这样的类似命令。我应该以字典形式编写初始参数吗?我想知道 minuit 如何获取参数和步长以便我正确编写它们。