pymatgen专题

pymatgen:组成成本与资源集中度

读取随库历史元素数据,按质量分数组成计算成本和HHI,说明输入单位、归一化及数据时效。

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

想做材料初筛时,可以先整理组成和元素数据,再计算相应指标。本例在鸢算科技集群实际调用成本与HHI接口,比较NaCl、LiFePO₄、LiCoO₂、Bi₂Te₃和CuNi。

这里用的是pymatgen随库历史数据:成本表含2013年参考记录,HHI表来自历史资源研究。这些值用于演示算法,不是当前市场报价或采购建议。 换成自己的数据时,应统一币种、日期、纯度与报价口径。

下载输入、实际输出、完整分析与绘图脚本。

unzip pymatgen-composition-order-models-wave717-*.zip
cd pymatgen-composition-order-models
module load pymatgen/2026.9.24
bash results.sh
bash plot.sh

环境为pymatgen2026.9.24、Python3.11、NumPy/SciPy和Matplotlib。results.sh读已有结果;plot.sh把参考数据画到figures。run.sh会重新做这套小规模后处理,结果写到新建的analysis,不会启动DFT或MD。已有analysis时请保留它,在另一份解压目录分析。

五个实际组成的历史表成本计算及质量加权资源集中度

1. 先看输入数据格式#

head -n 8 inputs/costdb_elements.csv
head -n 8 inputs/hhi_data.csv

成本CSV每行是formula,cost_per_kg,name,BibTeX,没有表头;引用字段用竖线|包围,因此含逗号的引用也可保留。HHI文件有注释行,后续为元素、产量HHI和储量HHI。

本例把安装环境中的表复制到包内,保留其原值。HHI按组成的质量分数加权,不能误用原子分数。成本表仅含元素时,相应成本也是元素原料口径,不是化合物的实际工业制备成本。

2. 调用成本接口#

python - <<'PY'
from pathlib import Path
from pymatgen.analysis.cost import CostDBCSV, CostAnalyzer
db = CostDBCSV(str(Path('inputs/costdb_elements.csv').resolve()))
analyzer = CostAnalyzer(db)
for formula in ['NaCl', 'LiFePO4', 'LiCoO2', 'Bi2Te3', 'CuNi']:
    print(formula, analyzer.get_cost_per_kg(formula),
          analyzer.get_cost_per_mol(formula))
PY

get_cost_per_mol对应你传入的化学式单元;get_cost_per_kg是质量归一化。把化学式整体乘2,每kg值不变,每mol所指的化学式单元则改变。

组成 原表货币单位/kg 原表货币单位/mol化学式
NaCl 99.253028 5.800622
LiFePO₄ 60.299153 9.512635
LiCoO₂ 22.986208 2.249729
Bi₂Te₃ 180.043869 144.172073
CuNi 15.640800 1.911922

原表值很容易与当前商品价格不同,尤其“纯元素原料组成”和“直接采购化合物”是不同问题。加入自有化合物原料报价后,get_lowest_decomposition会在已提供的条目中找组成匹配的最低成本组合;该组合仍没有描述实际反应可行性、产率、能耗或工艺费用。

3. 调用HHI接口#

python - <<'PY'
from pymatgen.analysis.hhi import HHIModel
hhi = HHIModel()
for formula in ['NaCl', 'LiFePO4', 'LiCoO2', 'Bi2Te3', 'CuNi']:
    production, reserve = hhi.get_hhi(formula)
    print(formula, production, reserve,
          hhi.get_hhi_designation(production))
print('缺少相应元素数据:', hhi.get_hhi('LiH'))
PY
组成 质量加权产量HHI 质量加权储量HHI
NaCl 1342.6511 1106.6277
LiFePO₄ 1572.6887 1884.5408
LiCoO₂ 2235.7669 2087.1051
Bi₂Te₃ 4152.6911 5474.1501
CuNi 1311.9093 1500.0000

这是库定义的组成指标,不是重新调查各国供应量后算出的当前结果。库中的low/medium/high是历史分级规则;不能直接据此评估当前供应风险。

此版本HHI表缺少H数据,LiH返回(None,None)。不要把缺失值改成0,否则会错误表示资源非常分散。

4. 检查质量分数与单位#

cat reference-data/Pymatgen-composition-components.csv
cat reference-data/Pymatgen-composition-cost-HHI.csv
bash run.sh

若元素价格为pᵢ、质量分数为wᵢ,只有元素原料条目时,每kg成本为Σwᵢpᵢ;每mol成本再乘该化学式的kg/mol。HHI同样使用ΣwᵢHHIᵢ。本例用独立质量加权公式核对了接口输出。

换自己的数据时,把数据日期、货币和计量单位一起保存在资料中,再用同一CSV格式运行。接口说明见pymatgen分析模块。

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

查看配图

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

100%查看原图 ↗