一种简单的谱线探测器

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系统。出来打印导致延迟?   java如何使用dasein API连接Azure云(blob存储)   java如何将Jframe cardlayout中的“card”从属于card的Jpanel更改为另一个类?   java如何在单个消息框中显示循环的所有迭代?   java如何设置netbeans保存项目的操作?   java网站的某些选项在web视图中不起作用   java如何在安卓中打开从右到左的菜单滑动条   java更容易反转由静态方法(函数接口)内联创建的比较器?   映射Java HashMap。获取(键)和树形图。获取equals和compareTo方法的(键)用法   java Health endpoints只显示“status:up”,不显示敏感信息   java当我一直按back按钮登录时,字段显示以前插入的用户数据   JTable单元中的java图像显示   go Java vs.Golang for HOTP(rfc4226)   java使用函数链减少分支和清理代码,这有意义吗   java我应该为每个查询创建一个新的DB连接吗?   java推荐的函数调用方法(是否使用CompiledScript?)   java截断分区和地板分区有什么区别?   没有spring引导的java Profile特定属性文件?   异常如何在java中从控制台读取密码?