XRD 谱图合成小软件 —— 从 CIF 结构因子出发,生成带有真实仪器特征的模拟衍射谱图, 可直接导入第三方检索/精修软件做物相检索、方法验证与教学演示。 提供两种发行形态:Setup 安装版(对外发布,含注册机制)与 单文件内部评估版(免安装,内部使用,无注册机制)。
当前版本 v1.4.1 · 界面支持 简体中文 / English / 日本語 三种语言, 通过菜单栏右上角「语言」菜单可在软件运行中即时切换(选择记忆在本地)。
Current version v1.4.1 · UI available in 简体中文 / English / 日本語, switchable at runtime from the Language menu (top-right); choice is remembered locally.
バージョン v1.4.1 · UI は 简体中文 / English / 日本語 に対応、 右上の「言語」メニューから実行中に切り替え可能(設定はローカルに保存)。
PolyXRD 家族成员:PolyXRD(数据分析)· PolyXRD-Converter(格式转换)· SynthPattern(谱图合成)
方式一 · CIF 合成
- 选择一个或多个 CIF(COD 标准格式),多相按质量分数混合
- 管线:空间群展开 → 结构因子 F(hkl) → Lorentz-Polarization → pseudo-Voigt 峰形 + 背底 + 噪音 → 强度整数化
- 因子取值两种模式:
- a) 推荐值(常规实验室 Cu 源参数,开箱即用)
- b) 由实测标样反算:导入仪器实测的 Si/LaB6 谱(或用内置 Si/LaB6 一键生成), 自动反算峰形(U/V/W)、η、背底、噪音并叠加到 CIF 谱
方式二 · 实测谱叠加
- 两个及以上实测谱按各自比例因子在同一 2θ 网格上叠加
导出格式
.txt— Profile Data Ascii Dump (XRD) 兼容(/// banner + 测量条件块 +<2Theta> <I>,行宽 81).xy/.dat— 定宽两列.csv— 带表头两列
默认参数按"能被第三方检索软件正确命中物相"标定(经实测参考集验证), 参数过"干净"会导致候选列表为空:
| 参数 | 默认值 | 说明 |
|---|---|---|
| FWHM | 0.15° 常数 | 常规实验室 Cu 源水平,不随 2θ 展宽 |
| 噪音 | σ = 0.3% × Imax | 常数高斯,非泊松;过小会导致检索失败 |
| Imax | 50000 counts | 噪音以 Imax 为基准 |
| 背底 | a=300, b=1.0 |
这组默认值在 tests/golden_default.json 里有逐点黄金基线守护 —— 任何让它漂移的
重构都会被 CI 拦下来。
界面左下「物理修正(高级)」分组。每启用一项都会偏离上面的标定谱, 第三方检索软件能否仍命中物相需重新验证 —— 这是刻意的取舍,不作为默认值。
| 项目 | 模型 | 说明 |
|---|---|---|
| Kα1/Kα2 双线 | 两条分量各自满足 Bragg 关系 | Iα2/Iα1 默认 0.5;间隔随 tanθ 增大。启用后波长输入框失效 |
| 择优取向 | March–Dollase W = (r²cos²α + r⁻¹sin²α)^(-3/2) |
在物相表格里逐行设置 h k l r(留空 = 无择优);r<1 片状、r=1 无择优、r>1 柱状 |
| 晶粒尺寸 | Scherrer β = Kλ/(L·cosθ),洛伦兹型 |
启用后 η(2θ) 由 Voigt 近似给出,η 输入框失效 |
| 微应变 | β = 4ε·tanθ,高斯型 |
界面单位 %,0.1% 已是块体材料的偏大值 |
| 有限厚度吸收 | A(θ) = 1 − exp(−2μt/sinθ) |
输入 μ(1/cm) 与厚度(µm);压低高角度一侧的相对强度 |
尺寸与应变按「高斯部分 = 仪器 ⊕ 应变、洛伦兹部分 = 尺寸」合成, 再用 Olivero–Longbothum 近似给出等效 pseudo-Voigt 的 FWHM 与 η。
注册机制复用家族统一的 PolyXRD-Reg 方案:注册码 = PXRD1- + Base32(单位部门名称 +
HMAC-SHA256 截断),离线校验、无需联网、无需机器码,同一注册码可在同一单位多台电脑使用。
| 发行形态 | 构建 | 注册机制 | 状态栏标识 |
|---|---|---|---|
| Setup 安装版(对外发布) | build_installer.bat → dist\PolyXRD-SynthPattern-Setup-vX.Y.Z.exe |
✅ | 最右侧(右对齐):已注册:<单位部门名称> / 未注册 |
| 单文件内部评估版(内部自用) | build_exe.bat → dist\PolyXRD-SynthPattern-internal.exe |
❌ | 居中:内部评估版本(加粗 + 红色,v1.4.1 起) |
安装版行为:
- 未注册时每次启动弹提示:「本软件未注册,版权所有,禁止用于商业用途。 如需注册请联系 sshztx@outlook.com」——点「确定」关闭后照常使用,仅作提示;
- 提示框内或「帮助 → 输入注册码 (R)…」粘贴注册码,校验通过即完成注册,此后不再提示;
- 注册成功后,主窗口最下面一排**右侧(右对齐)**显示注册的单位部门名称;
- 注册状态保存在
%APPDATA%\PolyXRD\Registration\SynthPattern.json, 每次启动重新校验注册码,手改 JSON 伪造「已注册」无效。
开发方出码:用 PolyXRD-Reg 仓库的注册机(PolyXRD-RegTool.exe 界面版 /
make_reg_code.py 命令行)根据用户提供的「单位部门名称」生成注册码。
CIF 解析器会读取 _symmetry_equiv_pos_as_xyz / _space_group_symop_operation_xyz
并展开对称操作,因此只列不对称单位的 COD CIF 也能正确计算。
内置 Si/LaB6 标样同样是写满的完整晶胞(金刚石 Si 8 个原子、LaB6 为 1 La + 6 B)。
相消干涉的反射会因浮点残差留下约 1e-32 相对强度的"数值噪声峰",引擎已按
1e-9 × |F|²_max 的相对阈值滤除。
⚠ v1.3.0 修复了 v1.2.1 的一个正确性缺陷:此前解析器忽略对称操作、内置 Si 也只写了 2 个原子,导致金刚石 Si 算出禁戒的 (100)@16.3°、(110)@23.1°,且强度压过真正的 (111)@28.44°。方式一 b) 的标样校准会因此受益,请重新生成引用旧版本输出的谱图。
- 多相混合的强度标度只用主项
∝ w_p / V_cell_p,未做 Brindley 型吸收衬度修正 (重吸收的物相在混合物里会被略微高估)。 - 原子热振动只用 CIF 里给的 U_iso/B 因子;未给时不额外叠加 Debye–Waller。
- 不建模荧光造成的背底抬升,也不建模探测器死时间。
pip install numpy pytest PySide6-Essentials
QT_QPA_PLATFORM=offscreen pytest -q
tests/ 覆盖:默认参数逐点黄金基线、对称展开与禁戒反射、Kα 双线、择优取向、
尺寸/应变展宽、吸收、导出格式的字节级约定、三语热切换与 GUI 端到端生成、
注册码回环与两种构建变体的 UI 行为。
对外发布走 Setup 安装版:从 Releases 下载
PolyXRD-SynthPattern-Setup-vX.Y.Z.exe 双击安装,向导中可指定安装位置。
单文件内部评估版不对外发布。
构建(在 cmd.exe 中运行;经 Git Bash 调用会因编码跑挂):
build_installer.bat # 安装版: PyInstaller onedir + Inno Setup -> dist\PolyXRD-SynthPattern-Setup-vX.Y.Z.exe
build_exe.bat # 内部评估版: PyInstaller onefile -> dist\PolyXRD-SynthPattern-internal.exe (+带版本号副本)
安装包脚本见 packaging/installer.iss(AppId 固定,重装/升级不会产生并行条目;
界面语言含简体中文 / English / 日本語)。
| 语言 | 菜单项 | 切换方式 |
|---|---|---|
| 简体中文 | 语言 → 简体中文 | 菜单栏右上角「语言」菜单,运行时即时切换 |
| English | Language → English | Top-right Language menu, switch at runtime |
| 日本語 | 言語 → 日本語 | 右上の「言語」メニューから実行中に切り替え |
语言偏好通过 QSettings(注册表/本地配置)保存,下次启动自动恢复。
「帮助」菜单里除「关于」外还有「版权与许可」:一个可滚动的版权页, 给出中英对照的许可要点(双许可、学术许可范围、商业授权要求、引用要求、终止条款) 与联系方式。正式条款以仓库中的 LICENSE(中文版)为准。
与 PolyXRD 家族一致,采用双许可:学术研究、教学及非商业用途免费; 商业使用需事先联系版权持有人取得独立书面授权。详见 LICENSE(中文版)。
sshztx@outlook.com · © 2026 PolyXRD Family