pymatgen专题

pymatgen:离线原型识别

从实际Si、Cu、NaCl结构匹配A4、A1和B1原型,理解原胞、常规胞与匹配容差。

更新于 2026-11-12约 4 分钟阅读按任务与环境选择适用配置
阅读本篇目录

想确认手里的结构更接近金刚石、面心立方还是岩盐型,可以先做原型匹配,再决定后续建模和计算。本例使用已有实际Si、Cu、NaCl几何,运行pymatgen的离线AFLOW原型库匹配,不查询在线数据库。

下载结构、原型结果、替位候选和完整脚本。

unzip pymatgen-prototypes-wave707-*.zip
cd pymatgen-prototypes
bash results.sh

1. 使用哪个接口#

环境为pymatgen2026.9.24、Python3.11、pandas、NumPy/SciPy。本例使用PrototypeDatabaseMatcher。旧名称AflowPrototypeMatcher在该版本仍可调用,但已提示弃用,新的脚本采用当前接口。

module load pymatgen/2026.9.24

把下面保存为identify.py:

import pandas as pd
from pymatgen.core import Structure
from pymatgen.analysis.prototypes import AFLOW_PROTOTYPE_LIBRARY
from pymatgen.analysis.prototypes.matcher import PrototypeDatabaseMatcher

matcher = PrototypeDatabaseMatcher(pd.DataFrame(AFLOW_PROTOTYPE_LIBRARY))
for name in ['Si', 'Cu', 'NaCl']:
    structure = Structure.from_file('inputs/POSCAR-' + name)
    matches = matcher.get_prototypes(structure)
    print(name, [entry['tags'] for entry in matches] if matches else [])
python identify.py

2. 实际匹配到什么#

输入 空间群 Strukturbericht Pearson AFLOW原型
Si 227 A4 cF8 A_cF8_227_a
Cu 225 A1 cF4 A_cF4_225_a
NaCl 225 B1 cF8 AB_cF8_225_a_b

这里的A4为金刚石型,A1为面心立方型,B1为岩盐型。Pearson符号中的原子数描述相应常规晶胞;Si或NaCl输入是2原子原胞时,匹配到cF8并不表示文件偷偷多了6个原子。

cat reference-data/Pymatgen-prototype-identification.csv
cat inputs/POSCAR-NaCl

该输入的晶格与坐标为:

ActualNaClDFTgrid;rigidshiftcontrol,postprocessingonly
1.0
0.0000000000000000e+00 2.8500000000000001e+00 2.8500000000000001e+00
2.8500000000000001e+00 0.0000000000000000e+00 2.8500000000000001e+00
2.8500000000000001e+00 2.8500000000000001e+00 0.0000000000000000e+00
Cl Na
1 1
Direct
5.0000000000000000e-01 5.0000000000000000e-01 5.0000000000000000e-01
0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00

3. 匹配结果能说明稳定性吗#

不能。原型匹配比较结构几何及原型映射,不计算总能、压力、形成能或相变温度。不同元素可能共享同一种原型,同一材料也可能因应变、缺陷和对称性降低而匹配不到库中条目。

默认初始相对晶格长度容差0.2、位点容差0.3、角度容差5°,它们属于结构匹配流程,不是声子稳定性或能量精度标准。多候选时保存全部标签;无匹配时保留空结果,不能强行贴上最想要的原型。

修改自己的结构路径后,先核对晶格、坐标单位、周期性和占位。对带真空的二维模型,不应为了匹配三维体相原型而删除真空或改变结构。

4. 接着生成候选结构#

资料包的完整run.sh还会执行下一篇的带氧化态替位推荐:

bash run.sh
ls analysis
ls models

它仅做离线分类和几何生成,不提交DFT任务。使用新的解压目录,避免覆盖已经生成的模型。

阅读替位候选与初始模型。接口说明见pymatgen原型模块。

需要根据你的体系选择资源?联系讨论计算需求。实际可用软件与权限,以当前账户和运行环境为准。

查看配图

放大后可滚动查看细节,按 Esc 关闭。

100%查看原图 ↗