pymatgen专题

pymatgen:替位候选与初始模型

用氧化态条件替位模型生成电中性候选,实际写出六个未松弛模型。

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

想从现有结构寻找“哪些离子替换值得先试”,可以用pymatgen的经验替位模型生成候选,再自行计算和筛选。这里的分数来自经验统计表,不是新材料稳定的概率,也不是替位形成能。

本例以实际NaCl原胞为几何起点,给Na/Cl指定+1/−1氧化态,离线生成电中性候选,并输出6个未松弛的初始模型。

下载实际候选、六个结构、脚本和图片数据。

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

经验替位分数与实际候选排序

1. 输入需要带氧化态#

from pymatgen.core import Composition
from pymatgen.analysis.structure_prediction.substitutor import Substitutor

predictor = Substitutor(threshold=0.001)
predictions = predictor.pred_from_comp(
    Composition({'Na+': 1, 'Cl-': 1}))
for result in sorted(predictions, key=lambda x: -x['probability']):
    print(result['substitutions'], result['probability'])

Na+与中性元素Na不是同一输入概念。这里氧化态是NaCl的形式化学标记,不是读取Bader电荷后自动四舍五入。

threshold=0.001是候选分数筛选阈值。本次实际得到36个电中性候选,其中包含“Na仍替为Na、Cl仍替为Cl”的恒等映射。恒等映射可以作参照,但不算一个新材料。

2. 实际保留哪些初始模型#

为了让输出可读,本例从候选中固定筛选Li/Na/K/Rb/Cs及F/Cl/Br/I元素范围,按分数降序保留前6个非恒等模型:

候选 经验条件替位分数 实际输出
NaF 0.0453843 POSCAR-01-NaF
KCl 0.0189794 POSCAR-02-KCl
NaBr 0.0179200 POSCAR-03-NaBr
NaI 0.0177745 POSCAR-04-NaI
LiCl 0.0151528 POSCAR-05-LiCl
RbCl 0.0112307 POSCAR-06-RbCl

这只是本例的显示范围,不表示其他元素不能被预测。完整36条记录在CSV中,分数没有按这六个候选重新归一化。

3. 如何真正写出结构#

from pymatgen.core import Structure, Species

s = Structure.from_file('inputs/POSCAR-NaCl')
s.add_oxidation_state_by_element({'Na': 1, 'Cl': -1})
s.replace_species({Species('Cl', -1): Species('F', -1)})
print(s.composition, s.charge)
s.remove_oxidation_states()
s.to(filename='POSCAR-NaF-initial')

完整包中按每条原生替位映射执行,并保存POSCAR与JSON:

module load pymatgen/2026.9.24
bash run.sh
ls models

环境为Python3.11及pymatgen2026.9.24,使用包内经验替位数据,不需要API key或重新编译软件。

实际写出的六个未松弛初始模型,按2×2×2显示

所有模型保持原NaCl晶胞和分数坐标,只替换元素。图为便于观察作2×2×2重复;文件仍是原始两原子模型。NaF、KCl等平衡晶格不同,因此这些结构需要后续合理的晶胞和原子位置优化,不能直接当作平衡结构。

4. 后续DFT要做什么#

先为新元素换正确赝势、电子数、截断和收敛参数;再按目标条件优化晶胞/原子位置,比较同方法的能量及稳定性。不能沿用NaCl的POTCAR,也不能把预测分数填成DFT能量。

若要比较不同组成的形成能,还需要一致的元素或化学势参照。经验替位推荐仅缩小起始搜索范围,不能代替凸包、声子或实验验证。

cat reference-data/Pymatgen-substitution-candidates.csv

替位统计分数及其条件方向见pymatgen结构预测模块。原型识别见离线原型匹配,实际形成能和候选凸包见凸包与Pourbaix图。

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

查看配图

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

100%查看原图 ↗