尖峰计划。ft光谱处理程序的协同开发

spike-p的Python项目详细描述


斯派克是什么?

SpikeFT光谱学处理程序的协作开发。

这是0.99.10版-2019年7月

spike是一个程序,允许处理、显示和分析从各种傅里叶变换光谱获得的数据集。该名称表示处理innovativekernel。

它允许处理1d2dft光谱,实现真实、复杂和超复杂的n维傅里叶变换,以及许多其他功能。

它是用python编写的(在python 2.7和3.6中进行了测试),可以用作一组工具,例如使用jupyter笔记本作为交互式前端。

据我们所知,这是第一个免费提供的程序,允许处理、显示和分析二维傅立叶变换离子回旋共振(fourier transform ion cyclotron resonance,简称ft-icr)以及轨道时域数据。正在处理。

它仍在非常积极的发展中。 许多功能缺失,而许多其他功能在出现时并没有完全修复。 但是,考虑到此代码中已经存在的工作量,我们决定提供它。 我们相信,即使在这个部分开发阶段,这个程序也可能被证明对某些用途有用。

引用峰值

如果您碰巧成功使用spike,请引用它,并参考本网站,以及以下可能的参考资料:

  • 程序本身的第一次发布-被anal拒绝。化学。评审员1说"核磁共振太多",评审员2说"质谱太多"!!< /EM >
    1. Chiron L.,Coutouly M-A.,Starck J-P.,Rolando C.,Delsuc M-A.Spike A处理软件专用于Fourier光谱仪https://arxiv.org/abs/1608.06777(2016)
  • 当前峰值部分基于的python设置的第一个版本 2。Tramesel,D.,Catherinot,V.和Delsuc,M.-A.。核磁共振处理建模,朝着核磁共振实验的高效无人值守处理方向发展。《磁共振杂志》188,56-67(2007年)。
  • 二维FT-ICR-MS处理的第一个版本 三。Van Agthoven,M.A.,Chiron,L.,Coutouly,M.-A.,Delsuc,M.-A.&Rolando,C.肽和糖肽的二维ECD FT-ICR质谱。分析化学84,5589-95(2012年)。
  • 核磁共振自动化的可能性 4。Margueritte,L.,Markov,P.,Chiron,L.,Starck,J.-P.,Vonthron Sénécheau,C.,Bourjot,M.,和Delsuc,M.-A.(2018年)。复杂样品核磁共振实验的自动微分分析。Magn。Reon。化学,80(5),1387.http://doi.org/10.1002/mrc.4683

参考文献1)是通用参考文献,其他参考文献更具体。

峰值功能

  • 一维数据集的ft分析
    • apodisation,phasing,module,…
  • 二维数据集分析
    • 相位或幅度调制
    • 复代数或超复代数
  • 稳健处理
    • 数据集大小没有限制
    • 最重处理的并行处理
      • 在使用标准python资源的多核桌面上
      • 在大型集群上,使用mpi
  • 高级功能
    • 降噪(滤波、线性预测、cadzow、urqrd、sane等)
    • 自动或手动基线校正
    • nus数据处理
    • 1d和2d峰值选择器
  • 插件架构
    • 允许轻松扩展核心程序
    • 减少交叉依赖性
  • 使用matplotlib或bokeh透明的完整光谱显示利
    • 变焦,有多种单位可供选择(取决于光谱:秒、赫兹、ppm、m/z等)
    • 存储为PNG或PDF格式
  • 与Jupyter笔记本电脑环境的交互

处理以下光谱图

  • 核磁共振
    • 完全支持1d和2d
    • 还没有nd
  • FT-ICR
    • 完全支持1d和2d
  • 轨道捕获
    • 仅1D(!)
  • 其他光谱图正在考虑中

文件可以从

    NMR:
    • 布鲁克上旋
    • 手册
    • NPK-GIFA
    • 旋转
    FT-ICR:
    • 布鲁克顶点
    • 布鲁克索拉丽克斯
  • 轨道飞行器:
    • Thermofisher原始数据
  • <其他>
    • csv和txt文件
    • 内存中numpy缓冲区中的任何数据。

用法

作为处理库

spike主要用作库,代码可以简单到:

fromspike.FileimportSolarixdd=Solarix.Import_1D('FTICR-Files/ESI_pos_Ubiquitin_000006.d')# Import create a basic SPIKE objectdd.hamming().zf(2).rfft().modulus()# we have a simple piped processing scheme# here doing apodisation - zerofilling (doubling the size) - FT and modulus.# calibration is imported from Bruker - advanced calibration is availabledd.unit="m/z"dd.display(zoom=(500,2000))# display the spectrum for m/z ranging from 500 to 2000dd.pp(threshold=1E7)# peak-pick the spectrum in this rangedd.centroid()# compute centroidsdd.display(zoom=(856.5,858.5))# and zoom on the isotopic peakdd.display_peaks(zoom=(856.5,858.5),peak_label=True)

交互模式

spike允许从jupyter(ipython)提示符交互地处理数据集,并且在jupyter笔记本中工作得非常好甚至在jupyter lab中工作得非常好

  • 请查看示例文件(eg_*.py*.ipynb)以获取示例和一些文档。 (*不完全符合数据*)
  • 使用matplotlib库执行显示。
  • 使用processing.py批处理程序批量处理大型2d-ft-icr,由名为*.mscf
  • 的参数文件控制。
  • 批处理模式支持多处理,包括MPI和多核机器上的本机处理(仍在进行中)
  • 大型2D-FT-ICR以分层格式存储,可通过交互式程序轻松显示。
  • 数据集以HDF5标准文件格式处理,它允许几乎无限的文件大小(测试高达500 GB)。

运行独立程序

processing.py和visu2d.py是两个独立的程序,写在spike的顶部。

  • 允许高效处理的processing.py FT-ICR二维数据集,不限制最终文件的大小 生成多分辨率文件
  • visu2d.py版本 是一个交互式工具,用于可视化二维FT-ICR多分辨率文件

语法:

python -m spike.processing param_file.mscf

python -m spike.visu2D param_file.mscf

我怎么得到斯派克?

spike是用纯python编写的,它依赖于几个外部库。 它与Python2.7和Python3.6兼容并经过了全面测试

但是,它依赖于应该独立安装的数学库。

  • matplotlib
  • 努比
  • scipy
  • 表格
  • 熊猫

一些插件或扩展需要额外的库(mpibokehmayavi,…)

要获得它,您只需

  • 依靠科学的分布,如水蟒或水母
  • 自己安装上面的python发行版(很棘手)

然后您可以使用pip安装它:

pip install spike_py

或者,如果您想播放代码,

python setup.py install

或者,如果您不想永久安装它

python setup.py develop

使用pip

pip install spike_py

依赖关系

它需要以下非标准的python库:

可选

  • mpi/mpi4py用于并行处理大型fticr 2d文件
  • cupy用于在GPU中使用CUDA进行计算,这允许大大加快某些处理步骤。

它已经在enthoughanaconda发行版中成功测试。

历史记录

spike源于gifa程序,由m-a delsuc和其他人在fortran 77中自80年代后期开发。 gifa已经知道了几个突变,最后以一个称为npk的部分重写结束。 程序是基于一些原始代码< FORTRAN < /代码>代码,封装在Java和Python中,允许从Python级别控制所有程序的可能性。 npk纯粹是一个计算内核,没有图形化的可能性,已经被用作嵌入到商业程序nmrnotebook中的内核,由nmrtec商业化。

然而,npk显示出许多弱点,主要是由于32位的组织结构和糟糕的文件格式。因此,当一个强大的科学环境在python中可用时,纯python中的重写就开始了。在这个名为npk-v2的初始项目中,添加了许多新功能,并且主要是在nmr之外的其他光谱领域工作的能力。

在2014年的某个时候,我们选择将NPK-V2分叉到Spike,并将其公之于众。

为Spike开发

spike是一个开源程序,这意味着欢迎外部贡献。 如果您认为您的改进对其他人有用,请提交一个拉取请求。 注意拉取请求应该与devel分支相关联。 这一分支致力于尚未经过充分测试的新特性,并且仍然容易受到变化的影响, 而默认值分支用于稳定代码。

插件

如果您考虑添加一些新特性,那么最好将其作为插件实现。 代码中已经包含了相当多的插件,有些插件相当复杂-请参见peaks.py例如,它实现了1d和2d峰值选择器,以及质心求值和完整的列表功能。

您还可以检查一个非常简单的插件的fastclean.py,或者检查依赖于必须安装的外部库的插件的wavelet.py

一些良好实践

  • spike包含许多工具,大多数用于数据交互的基本功能都可以在npkdata.py主文件中找到;实用程序也分散在util模块中。 使用后,用户的生活会更轻松。
  • 请写测试,即使是为插件!我们使用标准的pythonunittest,所以没有什么特别之处。所有测试每天晚上都会自动运行(代码是tests.py),因此它会快速检测所有潜在的问题。
  • 将pull请求推到develbranch-default用于稳定版本。

代码的组织

主程序是npkdata.py,它定义了npkdata对象,所有东西都是在这个对象上构建的。

光谱图在fticr.pyorbitrap.py代码中定义,这两个子类是npkdata。 它被原型化为核磁共振数据集。此设置是临时的。

许多程序包含例程测试(在对象unittest中),这些例程测试也用作示例。 代码每天都要经过大量的测试,使用unittestpython图书馆。但是,许多测试依赖于一组大于1 g的测试数据集,而不是在这里分发。

主要节目:

文件的小描述:

  • npkdata.py公司 主库,允许核磁共振实验的所有处理(1d、2d和3d) 用作库、独立程序或iPython交互会话中的库

  • 用于处理FT-ICR数据集(1D和2D)的NPKData的扩展

  • 轨道飞行器.py npkdata的扩展,用于处理orbitrap数据集(1d)

  • 处理.py 一个独立的程序,写在fticr.py的顶部,允许高效的处理 FT-ICR二维数据集,不限制最终文件的大小 生成多分辨率文件 语法:

    python -m spike.processing param_file.mscf
    
  • Visual2D.Py 用于可视化二维FT-ICR多分辨率文件的交互式工具

    python -m spike.visu2D param_file.mscf
    

目录

  • 算法 包含处理数据集的算法 (马克森特、拉普拉斯等)不是所有的东西都是活动的!

  • 显示 一个小实用程序,用于选择"模拟无效果显示"(用于测试)的常规matplotlib显示。

  • 文件
    用于光谱分析的各种文件格式以及HDF5峰值本机格式的导入程序。

  • 插件 自动插入npk内核的工具:显示实用程序、urqrd算法和各种其他工具。

  • 其他
    "en vrac"

  • 实用程序 代码中到处使用的一组低级工具

  • v1
    实现与npkv_v1程序部分兼容的库

  • 峰值使用率 使用各种可用库的python程序示例

  • 配置文件示例

    • 处理如mscf
    • 测试.mscf
  • 以及各种实用程序

    • npkconfigparser.py
      读取.mscf文件
    • npkerror.py
      生成错误消息
    • qc.py
      质量检查
    • 测试.py
      运行所有测试
    • dev_setup.py
      推出新版本
    • 版本.py
      定义版本号
    • 初始化.py
      定义库
    • rcpylint
    • 待办事项列表.txt
    • qc.txt
    • release.txt

作者和许可证

Spike当前的活跃作者是:

  • marc andrédelsucmadelsuc-at-unistra.fr
  • 劳拉·杜西尔

以前的作者:

  • christian rolandochristian.rolando-at-univ-lille1.fr
  • lionel chironlionel.chiron-at-casc4de.eu
  • petar markovpetar.markov-at-igbmc.fr
  • 玛丽·奥德·库图利。marie-aude.coutouly-at-datastorm.fr

本许可证项下的受保护代码是在"原样"的基础上提供的,无任何明示或暗示的保证,包括但不限于保证受保护代码无缺陷。有关所涵盖代码的质量和性能的全部风险由您承担。如果任何覆盖的代码在任何方面被证明有缺陷,您(不是最初的开发人员或任何其他贡献者)将承担任何必要的维护、修理或更正的费用。

从本页下载代码和数据集表示接受本许可协议。此处分发的代码包含在cecill许可证中:http://www.cecill.info/index.en.html" rel="nofollow">http://www.cecill.info/index.en.html

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

推荐PyPI第三方库


热门话题
java动态地将圆添加到Arraylist   什么是好的“错误检查”模式(Java)?   java是我们可以在应用程序中使用的云服务,它需要存储最大大小为5MB的小文件   JavaGooglePhotosAPI是静态内容上传项目的永久url   java AES密钥存储   java文件正在下载,但没有任何内容   每次循环迭代和threadsleep的java日志记录都是不好的做法?   java不会切换到另一个。单击submit时使用jsp。春季mvc   java我很难从我的maclaurin系列中获得sin x的准确输出   java使用类似的<Object>?   需要java Hibernate映射吗?   java如何在https和客户端证书请求后面生成web服务代理   java如何通过注释有条件地使用自定义JsonSerializer   java如何在html页面和Restful WebResource方法之间实现JaxB?   读取文件Libgdx Android时发生java错误   java如何在处理主活动之前从另一个方法中获取值?   java在一个SQLquery中使用多个语句,还是使用批处理?