Skip to content

About

PolyXRD 合成衍射图谱生成器:模拟 XRD 谱图,辅助物相分析与算法验证。/ Synthetic XRD pattern generator for the PolyXRD ecosystem — simulates diffraction patterns to support phase analysis and algorithm validation.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

PolyXRD SynthPattern

PolyXRD SynthPattern

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 拦下来。

可选物理修正(v1.3.0 新增,默认全部关闭)

界面左下「物理修正(高级)」分组。每启用一项都会偏离上面的标定谱, 第三方检索软件能否仍命中物相需重新验证 —— 这是刻意的取舍,不作为默认值。

项目 模型 说明
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 与 η。

注册与发行形态(v1.4.0 新增)

注册机制复用家族统一的 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 / 日本語)。

语言 / Language / 言語

语言 菜单项 切换方式
简体中文 语言 → 简体中文 菜单栏右上角「语言」菜单,运行时即时切换
English Language → English Top-right Language menu, switch at runtime
日本語 言語 → 日本語 右上の「言語」メニューから実行中に切り替え

语言偏好通过 QSettings(注册表/本地配置)保存,下次启动自动恢复。

「帮助」菜单里除「关于」外还有「版权与许可」:一个可滚动的版权页, 给出中英对照的许可要点(双许可、学术许可范围、商业授权要求、引用要求、终止条款) 与联系方式。正式条款以仓库中的 LICENSE(中文版)为准。

许可证

与 PolyXRD 家族一致,采用双许可:学术研究、教学及非商业用途免费; 商业使用需事先联系版权持有人取得独立书面授权。详见 LICENSE(中文版)。

联系方式

sshztx@outlook.com · © 2026 PolyXRD Family

About

PolyXRD 合成衍射图谱生成器:模拟 XRD 谱图,辅助物相分析与算法验证。/ Synthetic XRD pattern generator for the PolyXRD ecosystem — simulates diffraction patterns to support phase analysis and algorithm validation.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages