diffraction_peaks — DRIVE pxrd op

• 数据种类:signal × signal → table

• 调用: import fullseye as fs; fs.ledger.diffraction_peaks(two_theta, intensity, min_snr=6.0, baseline_window=None, max_peaks=200, noise=None)(要直接调用实现,import pxrd; pxrd.diffraction_peaks(two_theta, intensity, min_snr=6.0, baseline_window=None, max_peaks=200, noise=None);从台账取用则 opsdrive.get("diffraction_peaks"))

用法

从 1 维衍射剖面中拾取峰,用高斯 + 直线的局部拟合给出位置、高度、FWHM 与面积。

步骤: 以窗口 baseline_window [deg] (默认 = 范围的 4 %)的滚动最小值 → 滚动平均构建背景,在扣除背景后的值的局部极大中,超过 min_snr × 噪声者作为候选(噪声取间隔 1〜8 差分的 MAD 的最大值。也可向 noise 传入

一个数,或像 azimuthal_integrate 的 sigma 那样逐 bin 的数组 —— 要避免把中心附近或角落等像素较少的 bin 的波动误认为峰,就需要数组)。各候选的半高宽不是目测,而是由半高交点估计,在于与相邻候选的中点处截断的窗口内用 scipy.optimize.least_squares 拟合高斯 + 直线。重叠的峰会因窗口被截断而产生偏差(若要分离,用 phase_fractions)。

返回值(dict): two_theta、height、fwhm [deg]、area、snr、fit_ok(拟合是否收敛并落在窗口内)、noise、baseline(与格子等长)。若无峰则为长度 0 的数组(空 = 不是失败)。

Raises ValueError: 长度不一致、非有限、2θ 不递增、min_snr <= 0。

参考(示例数据、文献)

• 示例数据目录(下载 URL / 许可证) —— 2-D 用 skimage.data(BSD/公有领域)加合成图,3-D 给出真实数据源(Stanford/PDS 等)的下载 URL。

• 算子来历与参考文献 —— 该算子族所依据的研究/方法出处。

• 算法的正典(作者、年份)与用途见上面的族使用指南。

可运行的示例(实际调用该算子并已验证的样例)

• poc_pxrd_phase_peel — py -3.11 examples/poc_pxrd_phase_peel.py

类型可衔接的下一个算子(可接受 table 作为输入)

course_layout · course_occupancy · course_contains · world_build · world_camera · world_move · lidar_scan · rss_longitudinal_same

同类别(pxrd)

cif_read · cubic_prototype · powder_reflections · scherrer_size · debye_ring_image · detector_two_theta · detector_calibrate · azimuthal_integrate


*Provenance: pxrd.py — DRIVE 算子登记表。本条目由 tools/opdocs.py md 自动生成(请勿手工编辑)。*

© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.