13 个不稳定版本 (4 个破坏性版本)
0.6.1 | 2022 年 4 月 21 日 |
---|---|
0.6.0 | 2022 年 1 月 7 日 |
0.5.1 | 2021 年 12 月 13 日 |
0.5.0 | 2021 年 10 月 27 日 |
0.1.0 | 2019 年 11 月 25 日 |
#320 in 图像
每月 61 次下载
用于 bubbles
105KB
2.5K SLoC
integrustio
此 crate 提供了用于通过 2D 探测器获取的衍射数据的方位积分器和畸变校正器。这是在 Rust 编程语言中对伟大的 Python 库 pyFAI 的重做。
此库主要打算在 SNBL 集成服务器 Bubble 中使用。Integrustio 并不试图重做 pyFAI 中实现的全部可能的集成算法,其目标是选择一个足够鲁棒的算法,可用于 SNBL 测量的数据。
目前选择的是带像素分割的 BoundingBox。
使用示例
- Poni 解析器
use integrustio::poni::Poni;
use std::path::Path;
use std::fmt;
fn read_poni<P: AsRef<Path> + fmt::Debug>(path: P) {
let test = path;
let poni2 = match Poni::read_file(&test) {
Ok(poni) => poni,
Err(e) => panic!("Could not read file {:?}: {}", test, e),
};
}
- 与 Spine 文件一起进行畸变校正
use std::io;
use integrustio::spline::Spline;
use integrustio::distortion::Distortion;
use std::io::BufReader;
use std::fs::File;
use cryiorust::frame::{Array, Frame};
use cryiorust::cbf::Cbf;
use std::path::Path;
fn correct_file<P: AsRef<Path>>(frame: P, spline: P) -> io::Result<Array> {
let frame = Cbf::read_file(frame)?;
let spline = Spline::init(BufReader::new(File::open(spline)?), frame.array())?;
let mut d = Distortion::new();
d.init(frame.array(), &spline);
let corrected_array: Array = d.correct(frame.array())?;
Ok(corrected_array)
}
- 集成
use integrustio::integrator::{Integrable, IntegrationType, Integrator, Diffractogram};
use integrustio::poni::Poni;
use cryiorust::cbf::Cbf;
use cryiorust::frame::{Frame, FrameResult};
use std::path::Path;
fn integrate<P: AsRef<Path>>(frame: P, poni: P) -> FrameResult<Diffractogram> {
let frame = Cbf::read_file(frame)?;
let ranges = [0., 0.];
let data = Integrable {
array: frame.array(),
radial_range: &ranges,
azimuthal_range: &ranges,
integration_type: IntegrationType::Radial,
};
let mut i = Integrator::new();
i.set_poni(Poni::read_file(poni)?);
i.set_radial_bins(3500);
i.set_polarization(0.99);
i.init(frame.array());
Ok(i.integrate(&data).unwrap())
}
许可证:GPL-3.0+
依赖项
~29MB
~444K SLoC