PyFAI 2025.01版本发布:聚焦纤维衍射与集成重构的重大升级
pyFAI Fast Azimuthal Integration in Python 项目地址: https://gitcode.com/gh_mirrors/py/pyFAI
PyFAI(Python Fast Azimuthal Integration)作为X射线衍射数据分析领域的核心开源工具,其2025.01版本带来了多项架构革新与功能增强。本次更新不仅重构了核心积分器架构,还专门针对纤维/掠入射衍射场景开发了全新模块,同时优化了数据处理流程与可视化功能。
架构重构与模块化设计
本次版本对积分器类进行了系统性重构,将原有代码按功能划分为多个专业化子模块。其中pyFAI.integrator.azimuthal
专门处理方位角积分,pyFAI.integrator.fiber
则聚焦纤维和表面衍射场景,而公共代码被整合至pyFAI.integrator.common
模块。这种模块化设计使得代码结构更加清晰,也为未来功能扩展奠定了基础。
特别值得注意的是新引入的"promote"机制概念,允许不同积分器类之间进行功能转换。例如通过ai.promote("FiberIntegrator")
可以将常规积分器提升为纤维衍射专用积分器,这种灵活的架构设计为多场景分析提供了便利。
纤维衍射分析的专业化支持
针对材料科学中日益重要的纤维/掠入射衍射场景,新版本专门开发了FiberIntegrator
类。该类提供了一系列针对性方法:
- 二维模式分析:
integrate2d_grazing_incidence
方法可生成qIP-qOOP(面内-面外散射矢量)图谱,直观展示各向异性样品的结构特征。 - 一维切片分析:通过
integrate1d_grazing_incidence
可获取特定方向的散射曲线,支持8种样品取向配置。 - 极坐标转换:新增的
integrate2d_polar
方法可将数据转换为极坐标表示(散射角vs模量),而integrate1d_polar
则可沿特定角度进行积分。 - 出射角分析:
integrate2d_exitangles
方法可将衍射图案重塑为水平和垂直出射角表示,原点对应样品水平面。
这些方法采用了优化的数学公式实现,结合numexpr包加速计算,显著提升了处理效率。同时修正了入射角(incident_angle)和倾斜角(tilt_angle)的物理模型,确保分析结果的准确性。
多几何体分析与数据整合
新引入的MultiGeometryFiber
类扩展了多几何体分析能力,专门针对纤维衍射场景。与常规的MultiGeometry
类似,但接受FiberIntegrator
列表作为输入,可同时处理多个几何配置的纤维衍射数据。这一功能特别适合需要对比不同实验条件或样品取向的研究场景。
数据处理流程优化
在数据预处理和后处理方面,本次更新带来了显著改进:
- 中值滤波支持:新增了一维数据的中值滤波功能,包括分位数平均计算,提供Python、Cython和OpenCL三种实现方式,满足不同性能需求。
- sigma-clip增强:改进了sigma-clip算法,与中值滤波配合可更有效地识别和剔除异常数据点。
- 结果重分箱:新增的
rebin1d
工具允许将二维积分结果重新分箱为一维数据,便于后续分析。 - 配置管理:采用
WorkerConfig
数据类统一管理处理参数,支持JSON序列化,提高了与工作流系统(如Ewoks)的兼容性。
可视化与用户体验
在可视化方面,pyFAI-diffmap-view
工具现在能够显示电机位置信息,方便用户在衍射图谱中定位样品位置。此外,文档模板已更新为pydata风格,提升了阅读体验。
兼容性与性能
新版本支持Python 3.9至3.13,并在多种平台上进行了充分测试,包括Windows(amd64)、Linux(amd64/arm64/ppc64le)和macOS(amd64/arm64)。通过500多次代码提交,开发团队优化了性能并提高了代码覆盖率。
应用前景
PyFAI 2025.01版本的发布,特别是纤维衍射分析模块的引入,将为高分子材料、生物纤维、薄膜材料等领域的研究提供强大工具。其优化的架构设计和增强的数据处理能力,使得从常规粉末衍射到复杂的各向异性样品分析都能获得更准确、更高效的结果。新版本的专业化功能和灵活架构,预示着PyFAI在材料表征领域的应用范围将进一步扩大。
pyFAI Fast Azimuthal Integration in Python 项目地址: https://gitcode.com/gh_mirrors/py/pyFAI
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考