mcpField
H
HEA-Bench

HEA-Bench

本地服务
github.com/dfieser科研与教育13 周前更新

关于 HEA-Bench

HEA-Bench 提供高熵合金、高熵氧化物及陶瓷的描述符、相预测规则、实验数据与设计工具,适用于材料研究和成分筛选。其计算基于可追溯的封闭形式公式,并提供 Python、浏览器、桌面应用及 MCP 接口。

主要功能

  1. 01合金与氧化物描述符计算
  2. 02经验相预测规则
  3. 03Miedema 混合焓分解
  4. 04实验数据集与属性预测
  5. 05成分搜索和实验规划
  6. 06基准评估与覆盖率研究

适用场景

  1. 01计算候选合金的热力学描述符
  2. 02筛查氧化物相形成倾向
  3. 03按属性限制搜索候选成分
  4. 04规划后续实验并评估预测

MCP 相关

HEA-Bench 的 MCP 服务以 24 个确定性工具暴露计算、数据集、预测、设计和基准功能。响应包含单位或不确定性信息及相关引用键,供 MCP 客户端使用。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"dfieser-hea-bench": {
"command": "uvx",
"args": [
"hea-bench"
]
}
}
}
启动命令uvx hea-bench

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypihea-bench2.9.0

工具

24

收录的工具列表 · 更新于 2 周前

参数类型必填说明
formulastring是采用元素计数表示法的化学式,例如,等原子合金用 'CoCrFeMnNi',缩放式用 'Al0.3CoCrFeNi'。计数之和无需为 1;系统会将其归一化为摩尔分数。

详细介绍

HEA-Bench:高熵合金和氧化物的标准描述符,以及相应的计算过程。

hea-bench

Paper DOI PyPI Python CI License: MIT

用于计算标准高熵合金 (HEA)和高熵氧化物(HEO)的热力学与几何 描述符,以及经典经验相预测规则的开放、可解释工具,适用于 任意成分。每个描述符都是基于精选元素属性表的透明闭式表达式, 并已对照主要文献验证。拟合预测(硬度、相预测集)带有经过校准的 不确定性,并会标记不同于训练数据的合金。

立即试用: https://dfieser.github.io/hea-bench/。无需安装,可 完全在浏览器中运行,并支持所有库功能:用于合金、氧化物和陶瓷的 计算器(可预测属性和相)、实验数据集、合金搜索与实验规划,以及 基准测试。

HEA-Bench 浏览器计算器展示等摩尔 Cantor 合金 CoCrFeMnNi,左侧为成分,右侧为计算出的描述符。

浏览器应用中展示的等摩尔 Cantor 合金 CoCrFeMnNi。 Python 库、桌面应用和此页面打印的数值完全一致,并由一致性测试套件确保这一点。

使用 AI 编码 Agent 集成? 请参阅 AGENTS.md,了解面向机器的 API 指南、 精确的返回类型和单位、完成各项任务的最快途径,以及 需要避免的错误。

计算内容

对于任意成分,它都会报告:

  • **核心描述符:**混合熵 ΔSmix、原子尺寸失配 δ、平均熔点 Tm、Miedema 混合焓 ΔHmix、价电子浓度 VEC、Yang–Zhang Ω、Pauling 电负性失配 Δχ、Mansoori 过剩熵 SE、ΔGss、ΔGmax、King Φ、Ye φ。
  • **相预测规则:**Yeh 熵、Zhang δ、Guo–Liu VEC、Yang–Zhang Ω、King Φ、Ye φ、Senkov–Miracle κ、Tsai σ 相窗口和 Sheikh 延展性。
  • **Miedema 形成焓:**化合物/固溶体/非晶,分解为化学、弹性、结构和拓扑项。
  • **自定义元素和成对数值:**对于包含未列入表格的元素或成对焓的成分,可计算任意描述符或规则。
  • 高熵氧化物(hea_bench.oxides + 各应用的 Oxides 模式):岩盐型、钙钛矿型、萤石型和烧绿石型的可形成性描述符,基于 Shannon 离子半径,并自动分配电荷平衡的氧化态:各子晶格的构型熵、阳离子尺寸无序度、Goldschmidt t / 八面体 μ / Bartel τ、萤石型半径分散规则,以及烧绿石型半径比窗口。

元素覆盖范围:合金包含 55 种元素(Ag Al Au Be Bi Ca Ce Co Cr Cu Dy Er Fe Ga Gd Ge Hf Ho In Ir La Li Lu Mg Mn Mo Nb Nd Ni Os Pb Pd Pr Pt Re Rh Ru Sb Sc Si Sm Sn Sr Ta Tb Th Ti Tm U V W Y Yb Zn Zr, 涵盖完整的实验活跃稀土 HEA 元素组合,以及核能、焊料和 HE-BMG 领域);Miedema 成对表覆盖 75 种元素(1485 对中有 1484 对;唯一缺失的是 Th-U,并会报告该缺口,绝不将其置零);氧化物模块的 Shannon 表覆盖 94 种元素。

数值的计算方式

整个计算流程中没有任何拟合模型。每个描述符都是基于精选表格的封闭形式表达式,报告还会在每个数值旁注明相应输入数据的文献来源。

flowchart LR
    A["Composition<br/>CoCrFeMnNi"] --> B["Curated element tables<br/>55 elements, 1484 Miedema pairs"]
    B --> C["Closed-form descriptors<br/>ΔS, δ, VEC, ΔH, Ω, Φ, φ, Λ, γ, κ"]
    C --> D["Empirical phase rules<br/>Yeh, Zhang, Guo-Liu, Yang-Zhang, King, Ye"]
    C --> E["Report<br/>per-value provenance, content-hashed result ID"]
    D --> E

四种运行方式,功能各不相缺

部分位置最适合
Web 应用https://dfieser.github.io/hea-bench/任何人,无需安装
桌面应用一个便携式 .exe,下载(无需安装),同一应用在独立窗口中运行,内置引擎,可离线使用想要在本地使用的 Windows 用户
Python 库 + CLIpip install "hea-bench[all]"脚本和笔记本
面向 AI Agent 的 MCP 服务pip install "hea-bench[mcp]",然后运行 hea-bench-mcpClaude、Cursor 和其他 MCP 客户端,提供 24 个工具

四种方式都包含所有功能,因此选择最适合你的方式即可,不会损失任何功能。这是项目长期遵循的规则,CI 会强制执行:每当某项公开功能缺少对应的库函数、MCP 工具或可用的应用界面时,tests/test_feature_parity.py 就会失败;无头浏览器会使用已构建网站的每个选项卡;已构建的桌面 exe 在附加到发布版本之前会经过相同的步骤;新安装的 wheel 会响应每个 MCP 工具。仅运行 pip install hea-bench 不会安装依赖项,并支持除拟合模型和 MCP 服务以外的所有功能;[all] 附加项会为此安装 scikit-learn 和 MCP SDK。

四种方式共用一个计算核心。浏览器/桌面端核心(web/hea-calculator-core.js)是 Python 库的纯 JS 移植版,而 tests/test_web_parity.py 确保两者在全部 1484 个二元成对数据和标准多元素测试样例上结果一致;tests/test_web_oxides_parity.py 对氧化物模块也执行相同验证,连警告消息都完全一致。应用的 Dataset、Design 和 Benchmark 选项卡以及预测面板会在页面内直接运行 Python 包本身,保持原样(Pyodide,web/hea-engine-worker.js);tests/test_web_engine.py 会检查其返回结果是否与 CPython 完全一致。

快速开始(Python)

pip install hea-bench
import hea_bench as hb

cantor = {"Co": 0.2, "Cr": 0.2, "Fe": 0.2, "Mn": 0.2, "Ni": 0.2}

hb.smix(cantor)               # 13.381 J/(mol·K)  = R · ln 5
hb.delta(cantor)              # 3.164 % atomic-size mismatch
hb.vec(cantor)                # 8.0 valence electrons
hb.mixing_enthalpy(cantor)    # -4.16 kJ/mol  (Miedema)
hb.omega(cantor)              # 5.79  (Yang–Zhang)
hb.delta_chi(cantor)          # 0.138 Pauling electronegativity mismatch
hb.s_excess(cantor)           # 0.318 J/(mol·K)  (Mansoori excess entropy)
hb.delta_g_max(cantor)        # -8.00 kJ/mol  (most-negative Miedema pair)
hb.phi_king(cantor)           # 3.533 (King 2016 proxy)
hb.phi_ye(cantor)             # 34.82 (Ye 2015 proxy)

# Apply the canonical rules
from hea_bench.rules import guo_vec, king_phi, yang_omega, ye_phi, zhang_delta
zhang_delta.predict(cantor)          # 'single-phase'
yang_omega.predict(cantor)           # 'single-phase'
guo_vec.predict(cantor)              # 'FCC'
king_phi.predict(cantor)             # 'solid_solution'
ye_phi.predict(cantor)               # 'solid_solution'

这些 Cantor 合金数值在测试套件中固定为标准合理性检查。规则是简单的经验替代指标,用于快速筛查而非预测,因此应据此看待其输出。

描述符后端(可选互操作)

也可以通过可插拔后端计算描述符。默认后端(native)是本软件包自带的 stdlib 实现;安装 pip install "hea-bench[interop]" 后,同一接口也可驱动已安装的 HEACalculator(GPLv3,由用户自行选择安装),这样,采用其数值作为标准的工作流就能继续使用这些数值,同时使用此处的所有下游功能:

from hea_bench.descriptors.backend import get_backend
get_backend("heacalculator").compute(cantor)   # same names, their reference data
hea-bench describe Al0.3CoCrFeNi --backend native

两个后端使用了不同的参考数据(半径约定的差异最大),因此名称相同的数值确实可能不同;按描述符进行的实测比较见 docs/backend-agreement.md。实现结构不同的量不会被刻意映射为彼此对应的量,基准测试已发布的基线也保持使用原样的 native 后端。

快速开始(氧化物)

from hea_bench import oxides

# Rost 2015 "J14" entropy-stabilized rock salt
j14 = oxides.describe_rock_salt({"Mg": 1, "Co": 1, "Ni": 1, "Cu": 1, "Zn": 1})
j14["descriptors"]["s_config"]       # 13.382 J/(mol·K) = R·ln 5
j14["oxidation_states"]              # all 2+ by charge balance

# Jiang 2018 single-phase high-entropy perovskite
pvk = oxides.describe_perovskite({"Sr": 1}, {"Zr": 1, "Sn": 1, "Ti": 1, "Hf": 1, "Mn": 1})
pvk["descriptors"]["goldschmidt_t"]  # 0.979, inside the 0.92–1.04 window
pvk["verdicts"]["bartel"]            # 'perovskite' (τ = 3.72 < 4.18)

每份 describe_* 报告都包含求解得到的氧化态、实际使用的 Shannon 半径、所有描述符、带有对应窗口的可形成性判定,以及任何警告。完整介绍见 examples/02_oxides_walkthrough.py,其中包括萤石和烧绿石筛查以及氧化态覆盖。

快速开始(陶瓷,实验性)

hea_bench.ceramics 将计算器扩展到岩盐型碳化物和氮化物,以及 AlB2 型二硼化物;仅基于成分计算,并如实说明其能力范围:

from hea_bench import ceramics

hec = ceramics.describe_rock_salt_carbide({"Ti": 1, "Zr": 1, "Hf": 1, "Nb": 1, "Ta": 1})
hec["vec_per_formula_unit"]        # 8.4, with annotated literature reference points
hec["entropy"]                     # all normalization conventions, labelled

报告提供了金属子晶格熵的所有已发表归一化约定(论文在这些约定之间切换时往往不作说明),以及带注释参考点的 VEC,而非判定结果(文献标注的是点,而非单一窗口),并明确说明了哪些内容暂不提供:尺寸失配描述符(该领域使用 DFT 二元晶胞键长计算此指标,采用引用表格需要实际的数据整理工作),以及熵形成能力或 DEED;它们是 DFT 系综量,本软件包无法也无意声称能够复现。背景信息、引用文献以及候选陶瓷数据集的许可证审查见:docs/ceramics.md。

快速开始(AI Agent、MCP)

大模型 Agent 会臆造描述符值;此服务可为其提供可靠依据。 hea_bench.mcp_server 通过 Model Context Protocol 将软件包的所有功能作为 24 个 确定性工具开放。计算器:parse_composition、批量 alloy_descriptors(包含 Miedema 焓)和 alloy_rules, 二者均支持自定义元素和成对数值;omega_sensitivity、 oxide_report、ceramic_report、element_data 和 element_coverage。数据集:corpus_build(构建本地语料库,只需运行一次)、 corpus_query、corpus_describe、corpus_export 和 measured_properties。预测:predict_properties(附带区间)和 predict_phase_set(附带预测集),二者都会提供领域标记;以及 check_applicability。设计:design_search,对元素组合范围、步长和候选项数量 设有硬性上限;以及 campaign_suggest,可使用活动文件或内联活动。基准测试: benchmark_summary、benchmark_run、benchmark_folds、 benchmark_score 和 coverage_study。还有 about。每个响应都包含单位或不确定性字段, 涉及参数化时还会提供引用键,以及库版本,因此 Agent 的推理轨迹包含可审计的凭据,而非裸浮点数;about() 会报告运行环境中有哪些功能可用,若缺少可选扩展,则会清晰提示并指出确切的安装方式。

pip install "hea-bench[mcp]"

在任意 MCP 客户端(Claude Desktop、Cursor 等)中注册,例如在 claude_desktop_config.json 中:

{ "mcpServers": { "hea-bench": { "command": "hea-bench-mcp" } } }

值得特别介绍 omega_sensitivity 工具:它会报告各对元素的 Miedema 贡献,以及当主元素的成对焓值在已发表汇编数据的波动范围内变化时 Ω 的变化幅度,因此 Agent 不只能询问数值,还能了解该数值有多可靠。

快速开始(浏览器,无需安装)

此应用完全在客户端运行,包含以下标签页:

  • 计算器。 所有描述符、九种相规则、Miedema 分解、Ω 对成对元素表的稳健性、密度、成本、带区间的硬度、相预测集和领域标记。氧化物和陶瓷(碳化物、氮化物、二硼化物)是同一标签页中的不同模式。
  • 数据集。 汇总后的实验语料库,包含每个来源的标签和论文、筛选器及 CSV 下载,还有实测硬度和密度数据。
  • 设计。 根据属性限制、规则筛选条件和 Pareto 前沿搜索成分,并基于你自己的测量结果规划实验。
  • 基准测试。 冻结的随机划分和按族分组的划分、实时重新运行基线、为你自己的预测评分,以及覆盖率研究。

有两种打开方式:

  • 打开托管网站:https://dfieser.github.io/hea-bench/。
  • 或克隆代码仓库,运行一次 python tools/build_web_engine.py (组装固定版本的页面内引擎,约 30 MB),然后运行 python -m http.server -d web 并打开 http://localhost:8000。 直接从磁盘打开 web/index.html 也能使用计算器,但浏览器会阻止 file:// 页面加载引擎,因此其他标签页需要通过本地服务器打开。

计算器自带文档:Theory 视图推导每个合金和氧化物公式并附有引用,Equations 参考资料按组排列且可筛选,References 书目也按组排列。 深层链接可直接打开相应视图(index.html#theory、 #equations、#refs)。与行为一致性密切相关的数学实现位于 web/hea-calculator-core.js 中,并通过两个一致性测试套件与 Python 实现进行回归检查。

成对评估:相预测基准测试(实验性)

已发表的 HEA 相预测准确率大多是在包含大量化学计量系列的数据集上,通过随机训练/测试集划分测得的,因此模型测试的是与训练过的合金相近的变体。这在很大程度上衡量的是已知体系内的插值。 hea_bench.benchmark 提供冻结的、按族分组的随机成对划分,基于整合后的实验数据集(约 7,700 种合金),并提供同时报告以下两种结果的评估器:

from hea_bench.benchmark import evaluate, load_benchmark
print(evaluate(my_model, load_benchmark(task="phase4")).table())

使用此软件包自带描述符的标准随机森林,在随机划分下的平衡准确率为 0.941,在分组划分下为 0.734。这两个数值都没有错;它们回答的是不同的问题(已知体系中的新化学计量组成,与未见过的元素体系),而两者之间的差距量化了随机划分得分中有多少来自对训练合金近似变体的测试。关于分组评估中插值与外推的解读,请参阅 Li 等人发表于 Commun. Mater. 6:9(2025)的论文,doi:10.1038/s43246-024-00731-w。 基线、划分摘要和完整溯源信息: docs/benchmark-baselines.md。

每个源数据集都随软件包提供,采用 CC BY 4.0 许可(参见 data/raw/README.md),而数据集只需在你的机器上构建一次,无需下载。 hea_bench.corpus.build_corpus() 会根据固定的 SHA-256 校验最大的源数据集,并构建所有版本的数据集。应用和 MCP 服务的 corpus_build 工具执行相同操作。

将数据集作为独立产品使用

基准测试背后的整合实验数据集也可以直接访问,无需涉及任务或划分机制:

from hea_bench.corpus import load_corpus

corpus = load_corpus()                # v0.2.0 (10,290 alloys), every row, full provenance
corpus.describe()                     # counts, families, agreement rate
al_bcc = corpus.query(contains=["Al"], phase="BCC", descriptor_ready=True)
al_bcc.rows[0].raw_labels             # each source's verbatim reported phase
al_bcc.to_csv("al-bcc.csv")

每一行都包含按来源记录的规范化标签和原始标签、Borg 的处理路线,以及可用时的主要文献 DOI 和上游记录标识符,因此无需离开软件包即可审计标签。溯源链、各来源的许可状态、协调规则和已知局限均记录在数据集说明卡中。load_corpus() 会打开最大的版本 v0.2.0,该版本加入了由 LLM 提取的 Chizhevskiy 数据库。 load_corpus(version="0.1.0") 加载的是人工整理的参考版本(7,783 种合金),基准测试、相预测和适用域标志始终使用此版本,因此所有已发布数值都保持不变。

不确定性与适用域

hea_bench.uncertainty 是基于该数据集拟合的所有模型的可信度层。保形预测可将任意 sklearn 风格模型封装为输出集合或区间,并提供与分布无关的有限样本覆盖率保证;适用域模型则会判断查询是否可能满足这一保证所依赖的可交换性假设:

from hea_bench.corpus import load_corpus
from hea_bench.uncertainty import ConformalClassifier, fit_domain

domain = fit_domain(load_corpus(version="0.1.0"))
domain.novelty({"Hf": 0.2, "Nb": 0.2, "Ta": 0.2, "Ti": 0.2, "Zr": 0.2})
# {'element_set_seen': True, 'family_count': ..., 'nearest_family_distance': 0.0,
#  'descriptor_distance': ..., 'element_coverage': True, 'in_domain': True, ...}

新颖性输出包括多个刻意设计为相互正交的信号,以及一个保守的 in_domain 标志,因为这些信号的失效方式各不相同,而单一标量容易引起误读。关于在未见过的合金体系中,按是否处于适用域内以及元素数量衡量的保形集合经验覆盖率,请参阅 docs/uncertainty-coverage.md。已发布的相集合通过对完整合金体系进行交叉验证来校准,并分别处理少于四种元素和四种或更多元素的合金;在单相任务中,其 90% 集合覆盖了 0.900 的未见体系合金,在相结构任务中则覆盖了 0.884。 请结合集合大小解读该标志,而不要孤立看待其中任何一项。 这些工具描述的是此软件包对你的组成在此数据集上的置信度,仅此而已。

分层明确的性能预测

hea_bench.properties 预测实验人员首先关心的内容, 并在 API 中说明数据质量,而非让人自行揣测:

from hea_bench.properties import predict_property

predict_property({"Al": 0.2, "Co": 0.2, "Cr": 0.2, "Fe": 0.2, "Ni": 0.2}, "hardness")
# PropertyPrediction(prop='hardness', value=..., unit='HV',
#                    interval=(low, high), alpha=0.1, tier='B',
#                    in_domain=True, n_training=..., ...)

A级(density、melting_temperature,以及明确标注为指示性数据的 cost_per_kg;后者基于注明日期、按元素注明来源的价格表)是 基于引用表格的封闭形式算术计算,并在有实验数据时进行验证 (docs/property-tier-a.md)。 B级(hardness,需通过 pip install "hea-bench[properties]" 安装)是 基于本包描述符训练的、带固定随机种子的随机森林,并封装在按材料族分组的 保形区间和领域标记中;其留出误差、区间校准情况,以及该误差支持和不支持的 决策,均见 docs/property-hardness.md。由于公开数据量小且异质性高,区间较宽;这是 诚实的结果,我们选择展示而非隐藏。对于公开数据无法支持可靠留出误差的性能, (如不同测试温度未受控时的屈服强度、延展性、耐腐蚀性),我们特意不予提供, 并在模型卡中说明原因。

受约束的成分搜索

hea_bench.design.search 作为筛选辅助工具,回答“应该制备什么”:在你的元素范围内 生成确定性的成分网格,按规则、性能、成分和领域约束筛选,并返回 Pareto 前沿, 其中每个候选项都附有完整依据:

from hea_bench.design import Maximize, Minimize, PropertyConstraint, search

result = search(
    elements=["Al", "Co", "Cr", "Fe", "Ni"],
    n_elements=(4, 5),
    constraints=(PropertyConstraint("density", max=8.0),),
    objectives=(Maximize("hardness"), Minimize("cost_per_kg")),
    step=0.05,
)
result.candidates[0].properties["hardness"].interval   # every number has one

默认启用领域约束(优化器最容易在数据稀缺处利用模型误差;选择退出需明确操作), 而 optimize_bound="lower" 会按拟合目标区间的保守下限排序。搜索会在严格预算内穷举, 若无法完成则会明确拒绝,而不是悄悄抽样,因此结果天然可复现。关于实测合金相对于 恢复出的前沿所处位置的研究,详见 docs/design-recovery.md;该前沿用于确定优先级,而非提供答案。

主动学习实验(使用你自己的测量数据)

hea_bench.design.campaign.Campaign 执行可反复使用的循环:记录你自己的测量结果, 获取排名后的下一批候选项,并将所有内容保存在磁盘上的普通 JSON 文件中(无需账户、服务端 或遥测):

from hea_bench.design.campaign import Campaign

campaign = Campaign("hardness", ["Al", "Co", "Cr", "Fe", "Ni"])
campaign.observe({"Al": 0.1, "Co": 0.25, "Cr": 0.2, "Fe": 0.25, "Ni": 0.2}, 430.0)
campaign.suggest(n=5)     # each Suggestion prints its interval and domain flag
campaign.save("my-campaign.json")

代理模型是带固定随机种子的随机森林。每条建议都附有一个 90 百分位的保形区间,该区间由随机森林的袋外误差确定,因此校准无需消耗你的测量数据。采集策略采用期望改进或 UCB, 并通过信念者启发式方法批量选取;硬度实验会使用你元素范围内的 Borg 记录进行热启动, 因此在你采集第 10 个样本之前,循环就已能发挥作用。若有效数据行少于 10 行,系统会拒绝运行, 而不会佯装结果可靠。Borg 硬度记录上的两次重放、与随机选择的对比及区间覆盖率,以及按年份排序的 Al-Co-Cr-Fe-Ni 重放,详见 docs/campaign-replay.md。

关于 Ω 在 ΔHmix ≈ 0 附近的说明

Ω = Tm·ΔSmix / |ΔHmix| 会在 ΔHmix → 0 时趋于无穷大,因此对于近理想合金(|ΔHmix| ≲ 1–2 kJ/mol),Ω 的数值对 Miedema 成对参数表的选择极其敏感(不同来源的 Mn 数据分歧最大)。即使数值不稳定,相判断(Ω ≫ 1.1)仍然可靠,因此在此范围内应定性解读 Ω。

项目结构

hea-bench/
├── src/hea_bench/
│   ├── descriptors/     ΔS_mix, δ, VEC, T_m, ΔH_mix, Ω, S_E, φ + data tables
│   ├── rules/           the nine empirical phase-prediction rules
│   ├── oxides/          HEO module: families, oxidation-state solver,
│   │                    Shannon radii (94 elements, vendored from pymatgen)
│   ├── ceramics/        carbides, nitrides, diborides
│   ├── corpus/          the experimental corpus: build_corpus, load_corpus
│   ├── benchmark/       frozen family-grouped + random paired splits and evaluation
│   ├── properties/      density, melting point, cost, hardness
│   ├── uncertainty/     conformal sets and intervals, phase sets, domain flag
│   ├── design/          composition search and campaigns
│   ├── mcp_server.py    the MCP server (hea-bench-mcp)
│   ├── webapp.py        the bridge the in-page engine calls
│   ├── custom.py        custom elements and pair values
│   ├── composition.py   formula parser, normalizer
│   ├── constants.py     R = 8.314
│   └── cli.py           command-line entry point
├── tests/               unit tests + BOTH Python↔JS parity suites
├── web/                 landing page + self-contained calculator (+ MathJax)
├── src-tauri/           native desktop wrapper (Rust/Tauri)
├── examples/            Cantor-alloy and oxides walkthroughs (.py + .ipynb)
└── pyproject.toml

开发

git clone https://github.com/dfieser/hea-bench
cd hea-bench
pip install -e ".[dev]"
python -m pytest tests/ -q          # includes the Python↔JS parity test (needs Node)

HTML 计算器(web/index.html,基于 web/hea-calculator-core.js)是对同一组描述符和规则的独立 JavaScript 实现。修改 Python 描述符代码时,请同步更新 JS 核心实现,并重新运行 tests/test_web_parity.py 和 tests/test_web_oxides_parity.py,确保两端实现一致。JS 核心中的元素数据表由 tests/data/_sync_js_tables.py 和 tests/data/_sync_js_oxide_tables.py 根据 Python 库生成。请重新生成这些表,切勿 手动编辑。

许可证

MIT。随附的 matminer Miedema 数据文件仍遵循其上游 BSD-3-Clause 许可证,该许可证保留在 descriptors/data/LICENSE.matminer.txt。

贡献与支持

欢迎贡献和提交 Bug 报告。开发环境设置和测试规范请参阅 CONTRIBUTING.md。

请在问题跟踪器中报告 Bug 或申请功能。在 讨论区中提问或提出想法;对于描述符的定义、某种成分适用哪条规则,或不同来源为何存在分歧等问题,问答类别是合适的地方。 这里的回答会保留下来,方便之后遇到相同问题的人查找。 如需直接联系,请发送邮件至维护者邮箱 [email protected]。 参与者须遵守行为准则。

致谢

Yen-Ming Horng(@infinitus01), 台湾独立研究员。外部可复现性与文档审查。报告了 delta_g_max 文档约定不一致的问题,该问题已在 v2.1.4 中修正。

此类外部审查关注可复现性以及文档与实现的一致性。它们不代表对相关科学结论的验证或认可。

引用

如果您在工作中使用了 hea-bench,请引用介绍该项目的论文:

Fieser, D.; Dewanjee, U.; Hu, A. HEA-Bench: An AI-Agent-Optimized Calculator of High-Entropy Alloy and Oxide Descriptors and Phase-Prediction Rules. Materials 2026, 19, 3075. https://doi.org/10.3390/ma19143075

@article{ma19143075,
  author         = {Fieser, David and Dewanjee, Unmanaa and Hu, Anming},
  title          = {{HEA-Bench}: An {AI}-Agent-Optimized Calculator of High-Entropy Alloy and Oxide Descriptors and Phase-Prediction Rules},
  journal        = {Materials},
  volume         = {19},
  year           = {2026},
  number         = {14},
  article-number = {3075},
  issn           = {1996-1944},
  doi            = {10.3390/ma19143075},
  url            = {https://www.mdpi.com/1996-1944/19/14/3075},
}

包括推荐引用方式在内的机器可读元数据位于 CITATION.cff 中(GitHub 的“引用此仓库”按钮会使用它)。如需引用您使用的软件确切版本,还应引用 Zenodo 存档:概念 DOI 10.5281/zenodo.20346287 始终指向最新版本。

引用 hea-bench 时,也请引用其实现的参数化方法所依据的原始文献:Miedema 模型的 de Boer 等人(1988 年),规则相关论文(Yeh 2004、Zhang 2008、Guo–Liu 2011、Yang–Zhang 2012、King 2016、Ye 2015),氧化物相关原始文献(Shannon 1976、Goldschmidt 1926、Bartel 2019、Spiridigliozzi 2021、Subramanian 1983),随附配对表的 matminer,以及 Shannon 半径数字化数据的 pymatgen。完整的分组参考文献列于计算器的“参考文献”视图中。

免责声明

hea-bench 报告的描述符值和规则预测均为经验估计,仅供研究和参考。规则和描述符是半经验替代指标,存在已知局限。对于其准确性、完整性、对任何特定用途的适用性或材料资格认定的适用性,均不作任何保证。未经验证的热力学方法(例如 CALPHAD 或 DFT)独立验证,不得将这些输出作为工程设计或材料资格认定的唯一依据。

本软件依照 MIT 许可证按**“原样”**提供。随附的、来自 matminer 的 Miedema 元素参数仍遵循其上游 BSD-3-Clause 许可证;请参阅 src/hea_bench/descriptors/data/LICENSE.matminer.txt。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。