首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从astropy.modeling Gaussian2D提取参数

从astropy.modeling Gaussian2D提取参数
EN

Stack Overflow用户
提问于 2016-07-28 11:15:52
回答 2查看 885关注 0票数 1

我已经成功地使用astropy.modeling在我的图像上建立了二维高斯模型,它产生的参数对图像的拟合似乎是合理的。然而,我需要在数千幅图像上运行2D高斯,因为我们对模型的平均x和y以及对图像的x和y标准差感兴趣。模型输出如下所示:

代码语言:javascript
运行
复制
m2
<Gaussian2D(amplitude=0.0009846091239480168, x_mean=30.826676737477573, y_mean=31.004045976953222, x_stddev=2.5046722491074536, y_stddev=3.163048479350727, theta=-0.0070295894129793896)>

我也可以告诉你:

代码语言:javascript
运行
复制
type(m2)
<class 'astropy.modeling.functional_models.Gaussian2D'>
Name: Gaussian2D
Inputs: (u'x', u'y')
Outputs: (u'z',)
Fittable parameters: ('amplitude', 'x_mean', 'y_mean', 'x_stddev', 'y_stddev', 'theta')

我需要的是一种提取模型参数的方法,即:

代码语言:javascript
运行
复制
x_mean
y_mean
x_stddev
y_stddev

我对这个表单输出不太熟悉,所以我真的很纠结于如何提取参数。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-07-28 11:33:08

模型具有您可以访问的属性:

代码语言:javascript
运行
复制
from astropy.modeling import models
g2d = models.Gaussian2D(1,2,3,4,5)
g2d.amplitude.value  # 1.0
g2d.x_mean.value     # 2.0
g2d.y_mean.value     # 3.0
g2d.x_stddev.value   # 4.0
g2d.y_stddev.value   # 5.0

您需要在安装模型之后提取这些值,但是您可以以相同的方式访问它们:.<name>.value

您也可以一次提取它们,但是需要跟踪哪个参数处于哪个位置:

代码语言:javascript
运行
复制
g2d.parameters    # array([ 1.,  2.,  3.,  4.,  5.,  0.])
# Amplitude
g2d.parameters[0] # 1.0
# x-mean
g2d.parameters[1] # 2.0
# ...
票数 1
EN

Stack Overflow用户

发布于 2020-06-02 14:57:41

另一种方法是使用estimate_line_parameters。这方面的文档不太清楚(我认为是这样)。如果问题是得到高斯线的起始参数,那是一个很好的起点。

要以这种方式处理它:

代码语言:javascript
运行
复制
from specutils.spectra import Spectrum2D
from specutils.fitting import estimate_line_parameters

..。

代码语言:javascript
运行
复制
e1 = estimate_line_parameters(spectrum, models.Gaussian2D())
a = e1.amplitude.value
b = e1.x_mean.value
c = e1.y_mean.value
d = x_stddev.value
e = y_stddev.value

estimate_line_parameters给出了小数位的结果,因此,如果您试图估计起始值,您可能希望使用圆形(value_name,n),其中n是您认为合适的dec位置数。

注意到,a,b,c等作为值返回,不保留单元。所以你也需要:

代码语言:javascript
运行
复制
from astropy import units as u

然后(例如)A= e1.amplitude.value*u.( flux_units )其中flux_units是Jy或类似和/或缩放的版本。

当然,所有这些都假设你的背景已经被很好的减去……

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

https://stackoverflow.com/questions/38634782

复制
相关文章

相似问题

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