name: pymatgen description: | 使用pymatgen(Python材料基因组学)进行计算材料科学的全面指南。覆盖结构创建和操作、文件I/O(CIF、POSCAR、XYZ)、 对称性分析、Materials Project API集成、相图、电子结构分析以及DFT输入生成。适用于处理晶体结构、材料 属性、计算化学计算或材料数据库。触发词包括 ‘pymatgen’、‘晶体结构’、‘Materials Project’、‘CIF文件’、‘POSCAR’、‘能带结构’、 '相图’或材料分析任务。 allowed-tools: “*”
Pymatgen材料分析
使用pymatgen分析晶体结构、访问材料数据库以及与计算化学代码接口的系统指南。
Pymatgen工作流
1. 确定任务类型
你想做什么?
结构创建/加载:
- 从零创建结构 →
references/core-objects.md - 从文件读取(CIF、POSCAR、XYZ) →
references/file-io.md - 从Materials Project获取 →
references/materials-project.md - 从对称性生成 →
references/structure-analysis.md
结构分析:
- 分析对称性/空间群 →
references/structure-analysis.md - 比较结构 →
references/structure-analysis.md - 计算属性 →
references/properties.md - 可视化结构 →
references/visualization.md
结构操作:
- 创建超晶胞/表面 →
references/transformations.md - 替代原子 →
references/transformations.md - 应用对称操作 →
references/transformations.md - 为NEB插值 →
references/transformations.md
材料数据库:
- 查询Materials Project →
references/materials-project.md - 检索结构/属性 →
references/materials-project.md - 构建相图 →
references/phase-diagrams.md
电子结构:
- 解析能带结构 →
references/electronic-structure.md - 绘制DOS →
references/electronic-structure.md - 分析VASP输出 →
references/vasp-integration.md
输入生成:
- 创建VASP输入 →
references/vasp-integration.md - 生成Gaussian输入 →
references/file-io.md - 设置计算 →
references/vasp-integration.md
2. 核心Pymatgen工作流
基本模式:
# 1. 导入模块
from pymatgen.core import Structure, Lattice, Element
# 2. 加载或创建结构
structure = Structure.from_file("POSCAR")
# 3. 分析或操作
print(f"化学式: {structure.composition.reduced_formula}")
print(f"空间群: {structure.get_space_group_info()}")
# 4. 如有需要,进行变换
supercell = structure * (2, 2, 1) # 2x2x1超晶胞
# 5. 写入输出
supercell.to(filename="POSCAR_supercell")
快速参考 - 常见任务
加载结构: Structure.from_file("file.cif") - 自动检测格式
创建结构: 参见references/core-objects.md了解Element、Lattice、Structure创建
分析对称性: SpacegroupAnalyzer(struct).get_space_group_symbol()
制作超晶胞: structure * (2, 2, 1)或使用变换
查询MP: MPRester(key).get_structure_by_material_id("mp-149")
生成VASP: MPRelaxSet(struct).write_input("dir")
绘制能带/DOS: 参见references/electronic-structure.md
所有任务的详细示例在参考文件中。
任务路由
核心对象和创建
路由到: references/core-objects.md
何时使用:
- 从零创建结构
- 理解Element、Site、Structure类
- 处理Lattice对象
- 创建分子
- 组成分析
关键类:
- Element、Species
- Lattice
- Site、PeriodicSite
- Structure、Molecule
- Composition
文件输入/输出
路由到: references/file-io.md
何时使用:
- 读取CIF、POSCAR、XYZ文件
- 将结构写入文件
- 格式转换
- 解析计算输出
- 处理多种格式
支持格式:
- CIF(晶体学信息文件)
- POSCAR/CONTCAR(VASP)
- XYZ(分子坐标)
- JSON(序列化)
- 许多计算化学代码
结构分析
路由到: references/structure-analysis.md
何时使用:
- 查找空间群
- 对称操作
- 比较结构
- 获取原始/常规晶胞
- 邻居分析
关键工具:
- SpacegroupAnalyzer
- StructureMatcher
- VoronoiAnalysis
- 距离计算
结构变换
路由到: references/transformations.md
何时使用:
- 创建超晶胞
- 制作表面/表面
- 替代元素
- 扰动结构
- 高通量工作流
关键模块:
- pymatgen.transformations.standard_transformations
- pymatgen.transformations.advanced_transformations
- pymatgen.alchemy
Materials Project API
路由到: references/materials-project.md
何时使用:
- 查询材料数据库
- 通过化学式获取结构
- 检索计算属性
- 访问实验数据
- 构建化学系统
关键类:
- MPRester用于API访问
- 需要来自materialsproject.org的API密钥
相图
路由到: references/phase-diagrams.md
何时使用:
- 构建相图
- 分析稳定性
- 查找分解产物
- Pourbaix图
- 巨势图
关键类:
- PhaseDiagram
- PhaseDiagramError(用于稳定性分析)
- PourbaixDiagram
电子结构
路由到: references/electronic-structure.md
何时使用:
- 分析能带结构
- 绘制DOS
- 查找带隙
- 分析轨道贡献
- 电子属性计算
关键模块:
- pymatgen.electronic_structure.bandstructure
- pymatgen.electronic_structure.dos
- pymatgen.electronic_structure.plotter
VASP集成
路由到: references/vasp-integration.md
何时使用:
- 生成VASP输入
- 解析VASP输出
- 创建输入集
- 高通量VASP
- 自定义INCAR设置
关键类:
- MPRelaxSet、MPStaticSet等
- Vasprun、Outcar解析器
- Poscar、Incar类
常见模式
模式1:结构分析
- 加载 → 分析组成/对称性 → 获取原始/常规
- 参见
examples/structure_analysis.py了解完整工作流
模式2:从Materials Project到计算
- 查询MP → 获取结构 → 生成VASP输入 → 自定义设置
- 参见
examples/mp_to_vasp.py
模式3:高通量替代
- 加载基础结构 → 应用变换 → 写入输出
- 参见
examples/substitution_study.py
模式4:电子结构分析
- 解析vasprun.xml → 提取能带结构/DOS → 绘制并分析
- 参见
examples/band_structure.py
所有模式在examples/目录中有完整代码详细说明。
安装和设置
安装Pymatgen
pip install pymatgen
# 或带有可选依赖
pip install pymatgen[all]
配置Materials Project API
# 在materialsproject.org注册以获取API密钥
pmg config --add PMG_MAPI_KEY your_api_key_here
设置VASP赝势路径
pmg config --add PMG_VASP_PSP_DIR /path/to/vasp/potentials
配置文件
位于~/.pmgrc.yaml:
PMG_MAPI_KEY: your_api_key_here
PMG_VASP_PSP_DIR: /path/to/vasp/potentials
PMG_DEFAULT_FUNCTIONAL: PBE
常见问题和解决方案
问题:结构未定义
问题: NameError: name 'Structure' is not defined
解决方案:
from pymatgen.core import Structure
问题:API密钥无效
问题: MPRester返回认证错误
解决方案:
- 从materialsproject.org获取API密钥(免费账户)
- 配置:
pmg config --add PMG_MAPI_KEY your_key - 或直接传递:
MPRester("your_key")
问题:POTCAR生成失败
问题: 无法写入POTCAR文件
解决方案:
- 设置PSP目录:
pmg config --add PMG_VASP_PSP_DIR /path - 确保VASP赝势已正确安装
- 检查目录结构是否符合预期格式
问题:可选依赖导入错误
问题: ImportError用于绘图或专业模块
解决方案:
pip install pymatgen[all] # 安装所有可选依赖
# 或特定依赖:
pip install matplotlib # 用于绘图
pip install scipy # 用于分析工具
最佳实践
面向对象方法
- 使用Structure/Molecule对象,而非原始坐标
- 利用内置方法(组成、对称性等)
- 链接操作以提高清晰度
序列化
- 使用
as_dict()/from_dict()进行持久化 - 偏好JSON而非pickle以支持代码演化
- 对复杂对象使用MontyEncoder/MontyDecoder
变换
- 使用Transformation类以提高可重现性
- TransformedStructure跟踪历史
- Alchemy框架用于高通量
输入集
- 使用MPRelaxSet、MPStaticSet进行标准计算
- 通过修改Incar进行自定义
- 使用InputGenerator进行自定义工作流
Materials Project
- 使用上下文管理器:
with MPRester(...) as mpr: - 尽可能批量查询
- 缓存结果以避免重复API调用
示例目录
参见examples/了解完整工作流:
structure_analysis.py- 综合结构分析mp_query.py- Materials Project查询phase_diagram.py- 相图构建band_structure.py- 电子结构分析vasp_workflow.py- VASP计算设置substitution_study.py- 高通量替代研究
参考文档
references/core-objects.md- Element、Structure、Lattice、Compositionreferences/file-io.md- 读写所有文件格式references/structure-analysis.md- 对称性、比较、邻居references/transformations.md- 超晶胞、替代、扰动references/materials-project.md- API使用和查询references/phase-diagrams.md- 相图构建references/electronic-structure.md- 能带结构和DOSreferences/vasp-integration.md- VASP输入/输出处理references/properties.md- 计算属性references/visualization.md- 结构可视化
外部资源
- 官方文档: https://pymatgen.org/
- Materials Project: https://materialsproject.org/
- GitHub: https://github.com/materialsproject/pymatgen
- 论坛: https://matsci.org/pymatgen