pymatgen专题

pymatgen:ICOHP配位与邻居成键谱

从实际Si LOBSTER数据选择周期近邻、识别四面体并平均COHP,说明强度阈值、图权重和计数。

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

按距离找近邻可以描述几何;按投影成键量选择邻居,则可以把几何和已有电子结构分析联系起来。本例复用鸢算科技集群实际Si₂的VASP6.6.1与LOBSTER6.0.0四面体积分结果,运行pymatgen的LobsterNeighbors。

本页不重跑DFT或LOBSTER,也不把名义价态输入当作新的电荷分析。

下载实际ICOHP/COHP、结构、完整后处理与绘图脚本。

unzip pymatgen-lobster-neighbors-wave723-*.zip
cd pymatgen-lobster-neighbors
module load pymatgen/2026.9.24
bash results.sh
bash plot.sh

环境为pymatgen2026.9.24、Python3.11、NumPy/SciPy和Matplotlib。run.sh读取现有LOBSTER输出,在新建的analysis生成结果;原参考数据保留,图写到figures。

实际Si四配位周期近邻及四根所选键的平均COHP

1. 先确认输入来自同一投影分析#

head -n 10 inputs/ICOHPLIST.lobster
head -n 12 inputs/lobsterout
cat inputs/POSCAR

POSCAR的原子顺序必须与ICOHPLIST和COHPCAR一致。当前数据是a=5.43Å的两原子金刚石Si原胞;前置计算采用实际7³ Gamma网格和四面体积分,投影基组为Si 3s/3p。

准备自己数据的VASP/LOBSTER流程见LOBSTER入门与输入准备。如果原投影质量不足,应先检查基组、能带子空间和投影质量,再解释成键结果。

2. 建立ICOHP近邻对象#

python - <<'PY'
from pymatgen.core import Structure
from pymatgen.io.lobster.outputs import Icohplist
from pymatgen.analysis.lobster_env import LobsterNeighbors
s = Structure.from_file('inputs/POSCAR')
ico = Icohplist(filename='inputs/ICOHPLIST.lobster', orbitalwise=False)
neighbors = LobsterNeighbors(s,ico,
    additional_condition=0, valences=[0,0],
    perc_strength_icohp=0.15, noise_cutoff=0.1)
for row in neighbors.get_nn_info(s,0,use_weights=False):
    print(row['site_index'],row['image'],row['site'].coords,row['weight'])
PY

本例additional_condition=0不限定阳离子–阴离子;valences=[0,0]明确使用元素Si的名义中性标签。它不是Bader、Mulliken或实际Born电荷。

perc_strength_icohp=0.15按所提供成键列表的相对强度选择,noise_cutoff=0.1为本例的ICOHP噪声筛选量级。阈值不是键长,也不表示存在普适的“15%化学键标准”。

这个版本的get_nn_info只实现不加权图。use_weights=True会报不支持;返回字典中的单位图权重不能当作ICOHP加权配位数。实际成键积分应从专门的信息接口读取。

3. 保留周期镜像,不只看原子编号#

两原子原胞中,中心Si的四个近邻可以对应同一个另一Si编号的不同周期镜像。site_index和image要一起看;不能按原子编号去重后只剩一根键。

cat reference-data/Si-ICOHP-neighbor-images.csv

如果想计算所选邻居的实际空间距离,用镜像展开后的Cartesian坐标相减。不要再对它调用最小镜像距离后丢掉原先的周期平移信息。

4. 实际阈值、计数与四面体#

python - <<'PY'
from pymatgen.core import Structure
from pymatgen.io.lobster.outputs import Icohplist
from pymatgen.analysis.lobster_env import LobsterNeighbors
s = Structure.from_file('inputs/POSCAR')
ico = Icohplist(filename='inputs/ICOHPLIST.lobster', orbitalwise=False)
n = LobsterNeighbors(s,ico,additional_condition=0,valences=[0,0],
                     perc_strength_icohp=0.15,noise_cutoff=0.1)
info = n.get_info_icohps_to_neighbors(isites=[0],onlycation_isites=False)
print('键数:', info.n_bonds)
print('标签:', info.labels)
print('各键ICOHP:', info.list_icohps)
print('总ICOHP/eV:', info.total_icohp)
environment = n.get_light_structure_environment(only_indices=[0])
print(environment.coordination_environments[0])
PY

本例选择4个近邻,距离约2.35126Å,标签1、2、3、4,总ICOHP为−18.25497585eV,几何识别为T:4四面体。

对当前同一列表分别用0、0.15、0.8三个相对阈值,保留下来的都是这4根键。这说明它们在该列表中都足够强,不是程序必须让每个阈值得到不同结果。本列表没有覆盖任意远邻,不能由此推断所有更远的成键作用。

总ICOHP是所选中心的四根键积分之和,不能直接当作晶胞结合能。换中心或统计整个结构时,还要明确是否把同一无向键计了两次。

5. 平均所选邻居的COHP#

python - <<'PY'
from pymatgen.core import Structure
from pymatgen.io.lobster.outputs import Icohplist
from pymatgen.analysis.lobster_env import LobsterNeighbors
from pymatgen.electronic_structure.cohp import CompleteCohp
s = Structure.from_file('inputs/POSCAR')
ico = Icohplist(filename='inputs/ICOHPLIST.lobster', orbitalwise=False)
n = LobsterNeighbors(s,ico,additional_condition=0,valences=[0,0],
                     perc_strength_icohp=0.15,noise_cutoff=0.1)
curves = CompleteCohp.from_file('LOBSTER',
    filename='inputs/COHPCAR.lobster',structure_file='inputs/POSCAR')
label, mean = n.get_info_cohps_to_neighbors(coxxcar_obj=curves,
    isites=[0],onlycation_isites=False,per_bond=True,
    summed_spin_channels=True)
print(label)
print(mean.get_cohp())
PY

per_bond=True得到每根所选键的平均曲线,不是总曲线;summed_spin_channels说明如何处理自旋通道。本例为非自旋极化数据,若换成磁性体系,应核对通道和归一化。

图画的是−COHP:在通常COHP符号约定下,成键贡献便于显示为正;CSV同时保留COHP和−COHP两列。能量轴为E−EF,0是该投影计算的费米能。

cat reference-data/Si-ICOHP-neighbor-thresholds.csv
head -n 8 reference-data/Si-ICOHP-neighbor-average-COHP.csv

本例独立按标签取四条原始COHP求平均,核对了原生结果。需要进一步比较COOP、COBI和电荷时,分别使用其物理定义,不能只更换图上名字。专题继续阅读COHP与COOP/COBI。

接口见pymatgen LOBSTER配位分析。

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

查看配图

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

100%查看原图 ↗