[ PROMPT_NODE_27128 ]
materials_project_api
[ SKILL_DOCUMENTATION ]
# Materials Project API 参考
本参考文档记录了如何通过 Pymatgen 的 API 集成访问 Materials Project 数据库。
## 概述
Materials Project 是一个综合性的计算材料属性数据库,包含数十万种无机晶体和分子的数据。该 API 通过 `MPRester` 客户端提供对这些数据的程序化访问。
## 安装与设置
Materials Project API 客户端现已拆分为独立包:
bash
pip install mp-api
### 获取 API 密钥
1. 访问 https://next-gen.materialsproject.org/
2. 创建账户或登录
3. 导航至仪表板/设置
4. 生成 API 密钥
5. 将其存储为环境变量:
bash
export MP_API_KEY="your_api_key_here"
或添加到 shell 配置文件中 (~/.bashrc, ~/.zshrc 等)
## 基本用法
### 初始化
python
from mp_api.client import MPRester
# 使用环境变量(推荐)
with MPRester() as mpr:
# 执行查询
pass
# 或显式传递 API 密钥
with MPRester("your_api_key_here") as mpr:
# 执行查询
pass
**重要**:务必使用 `with` 上下文管理器以确保会话正确关闭。
## 查询材料数据
### 按化学式搜索
python
with MPRester() as mpr:
# 获取所有具有该化学式的材料
materials = mpr.materials.summary.search(formula="Fe2O3")
for mat in materials:
print(f"材料 ID: {mat.material_id}")
print(f"化学式: {mat.formula_pretty}")
print(f"能量高于外壳: {mat.energy_above_hull} eV/atom")
print(f"带隙: {mat.band_gap} eV")
print()
### 按材料 ID 搜索
python
with MPRester() as mpr:
# 获取特定材料
material = mpr.materials.summary.search(material_ids=["mp-149"])[0]
print(f"化学式: {material.formula_pretty}")
print(f"空间群: {material.symmetry.symbol}")
print(f"密度: {material.density} g/cm³")
### 按化学系统搜索
python
with MPRester() as mpr:
# 获取 Fe-O 系统中的所有材料
materials = mpr.materials.summary.search(chemsys="Fe-O")
# 获取三元系统中的材料
materials = mpr.materials.summary.search(chemsys="Li-Fe-O")
### 按元素搜索
python
with MPRester() as mpr:
# 包含 Fe 和 O 的材料
materials = mpr.materials.summary.search(elements=["Fe", "O"])
# 仅包含 Fe 和 O 的材料(排除其他元素)