Python 如何检测光谱中的发射线?

Python 如何检测光谱中的发射线?,python,numpy,scipy,Python,Numpy,Scipy,有没有像我们从SDS中得到的那样方便的模块来检测光谱中的发射线 你可以看到,在下面的光谱中有很多发射线,比如Ha,OI。事实上,光谱是一个两列数据集,波长和通量。它是许多分散点的组合。附近两点之间的典型间隔为1.5埃。我需要找到所有的高斯凹凸和它们的线中心 所以,首先我需要找到凸起,然后我需要调整它们以获得它们的中心 多谢各位 我的答案来得有点晚,但现在我发现自己也处于同样的情况 我认为最符合我们需要的工具是Specutils,一个Astropy光谱学软件包。具体而言,您可能需要使用该软件包中的

有没有像我们从SDS中得到的那样方便的模块来检测光谱中的发射线

你可以看到,在下面的光谱中有很多发射线,比如Ha,OI。事实上,光谱是一个两列数据集,波长和通量。它是许多分散点的组合。附近两点之间的典型间隔为1.5埃。我需要找到所有的高斯凹凸和它们的线中心

所以,首先我需要找到凸起,然后我需要调整它们以获得它们的中心

多谢各位


我的答案来得有点晚,但现在我发现自己也处于同样的情况

我认为最符合我们需要的工具是
Specutils
,一个
Astropy
光谱学软件包。具体而言,您可能需要使用该软件包中的
find_lines_threshold
find_lines_derivative
方法:

根据文件,提供1D光谱和阈值(从噪声中过滤实际线),该方法将返回发射线和吸收线表,确定每一条线的中心波长


我希望有帮助

看起来是同一个问题。我已经做了相当多的此类工作,最好的方法通常取决于您的数据。通常,答案将涉及平滑、查找局部最大值和曲线拟合(如果需要宽度)的一些组合。您查看了python图像库吗?我不知道检测发射线需要什么。如果你概述了这些步骤,可以给出更具体的建议,但是numpy/scipy应该会让你朝着正确的方向前进。我已经更新了我的帖子。首先找到一个局部最大值,然后用高斯分布拟合它。这种方法太容易相信了。还有什么我错过的吗?谢谢。你用过Specutils吗?似乎我们需要指定一个噪声区域(SpectralRegion),但不同的线可能有不同的背景。据我所知,噪声被估计为一个区域的标准偏差。如果计算包含实际强发射/吸收线的区域的噪声,则会高估背景噪声。因此,对于定义代表整个频谱的噪声阈值,我的建议是计算尽可能多的无强线区域的标准偏差。例如,对于星系,4个合理平坦的范围是:4200-4300、4600-4800、5400-5500和5600-5800 A。@JTM除了天文观测,你还有其他建议吗?我研究矿物光谱,astropy确定了发射区,但没有确定吸收区。我一直试图从开发者那里得到帮助,但没有运气…@AngelaR。我不知道任何专门用于处理矿物光谱的软件。实际上,
specutils
中的相同函数也应该检测吸收线。实际上,与星系光谱不同,恒星光谱充满了吸收线。你可以找到一个光谱显示吸收线的例子。