26 个版本 (破坏性)
0.20.0 | 2024 年 8 月 9 日 |
---|---|
0.18.0 | 2024 年 7 月 17 日 |
0.12.0 | 2024 年 2 月 23 日 |
0.7.0 | 2023 年 12 月 25 日 |
0.2.3 | 2021 年 8 月 7 日 |
#64 in 科学
303 次每月下载
用于 5 个 Crates (2 直接)
10MB
5K SLoC
mzsignal - 质谱的低级信号处理
mzsignal
是一个库,用于在将连续的轮廓模式谱转换为峰值列表的过程中执行质谱的低级信号处理。
峰值拾取功能可以直接与 PeakPicker
一起使用,该功能实现了一个简单的高斯峰值形状拟合器。有一些阈值标准可以调整,以控制哪些拟合被报告,请参阅其文档以获取更多详细信息。
当一个光谱不足以时,将多个光谱的信号平均在一起会更好。 average
子模块包括合并多个轮廓光谱的组件。
用法
use std::fs;
use std::io;
use std::io::prelude::*;
use mzsignal;
// Read in signal arrays from a text file
let mut mz_array: Vec<f64> = Vec::new();
let mut intensity_array: Vec<f32> = Vec::new();
let reader = io::BufReader::new(fs::File::open("./test/data/test.txt").unwrap());
for line in reader.lines() {
let line = line.unwrap();
let pref = line.trim();
let chunks: Vec<&str> = pref.split("\t").collect();
mz_array.push(chunks[0].parse::<f64>().expect("Expected number for m/z"));
intensity_array.push(chunks[1].parse::<f32>().expect("Expected number for intensity"));
}
// Create a peak picker
let picker = mzsignal::PeakPicker::default();
// Create an accumulator
let mut acc = Vec::new();
// Pick peaks
let peak_count = picker.discover_peaks(&mz_array, &intensity_array, &mut acc).unwrap();
assert_eq!(peak_count , 4);
for peak in acc.iter() {
println!("{}", peak);
}
构建
此库需要少量线性代数,因此它依赖于 nalgebra
或 ndarray
+ndarray-linalg
。
如果您想使用 ndarray-linalg
,则需要 LAPACK 实现,由以下特性控制
intel-mkl
openblas
netlib
否则,将默认使用 nalgebra
后端。
依赖项
~3–15MB
~219K SLoC