一种简单的谱线探测器

sslf的Python项目详细描述


sslf被设计成一个非常简单、有效和有用的一维数据谱线探测器。它利用了scipy的连续小波变换,这是一种找到甚至是弱谱线的有效方法。

因为谱线有很多定义,所以这个包不可能在所有情况下都能工作。在这里,我为高斯剖面谱线设计了sslf我的工作很大一部分集中在恢复噪声中的微弱信号上,所以sslf的目标是识别线、标记它们,并减去它们周围的非零带通

用法

对于一维谱(spectral_data)和一系列要测试的标度(例如1到20),可以在以下条件下找到具有统计意义的谱峰:

import numpy as np
from sslf.sslf import Spectrum

s = Spectrum(spectral_data)
s.find_cwt_peaks(scales=np.arange(1, 20), snr=6.5)
s.subtract_bandpass()

平坦谱包含在s.modified中,峰值位于s.channel_peaks。与峰值相关的其他参数是s.peak_snrss.vel_peakss.channel_edges

请注意,指定给find_cwt_peakssnr参数实际上指的是小波域中的信噪比,而不是输入信号域;因此,如果您希望所有信号都高于5西格玛,则需要做更多的工作来确定频谱的噪声rms是什么以及它如何映射到小波rms。

还要注意channel_edges可能非常不准确;默认情况下,此变量由找到谱线的小波尺度填充。小波不需要很好的匹配;它只需要有足够的意义,就可以被sslf提取。Spectrum对象有一个可选的refine_line_widths方法,该方法(希望)可以更好地查找所有检测到的谱线的通道范围。有关详细信息,请阅读sslf函数的文档。

find_cwt_peaks可以选择将小波用于小波变换(默认为ricker小波)。subtract_bandpass有点难以解释;更复杂的用法示例可以在notebooks目录中找到。sslf用法的一个相当复杂的例子是here

贡献和建议

我创建这个软件是因为我在社区里找不到任何功能类似的东西。因此,我欢迎贡献,使这个软件更一般灵活,适合于广大观众。很简单,看看代码就知道了

问题漏洞?前后矛盾?

当然!请提出一个GitLab问题,如果你发现一些奇怪的东西,你的输入和预期的输出,我会尝试尽快解决它

安装

pip install sslf

  • 克隆此回购(git clone https://gitlab.com/cjordan/sslf.git
  • 在目录中,运行:python setup.py install --optimize=1

依赖关系

  • python 2.7.x或3.x
  • 纽比1.8+
  • scipy
  • 未来

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
如何在java swing表单配置文件中显示动态布局   swing Java使用GridLayout和鼠标交互式JPanel创建JFrame   java使用jsp dao和servlet从数据库中的4行中只插入几行   java SqlLite:我们可以选择行作为列吗?   启动glassfish服务器时java获取错误   PersistenceUnit的java部署[…]失败。关闭此PersistenceUnit的所有工厂   java将具有多个关系的实体与集合中的任何元素进行匹配   java对命名模式的建议,该模式在op失败时尝试强制转换返回null   使用jtwitter的java安卓抛出错误   使用Java方法查找数组中最小int的位置   SwingJava。网络气球提示没有出现   java无法使用JavaMail api发送邮件   java HashSet contains()为自定义对象返回false。hashCode()和equals()似乎实现正确   Java:在运行时和编译时向类中添加字段?   java正在服务类中导入jersey和JAXR,这被认为是错误的做法