OCP库3步拿到催化剂吸附能【免费下载链接】ocpFAIR Chemistry's library of machine learning methods for chemistry项目地址: https://gitcode.com/GitHub_Trending/oc/ocp你在筛非均相催化剂,需要 CO 在 Cu(100) 表面的吸附能。DFT 跑完一组候选位点是小时级工作量,而一个表面还有 ontop、bridge、hollow 等几十个候选位点要枚举。OCP库(fairchem)是 FAIR Chemistry 的机器学习化学工具包,用 UMA 机器学习势直接输出能量和力,"位点枚举 → 逐点弛豫 → 吸附能"整条流程在 GPU 上分钟级完成。fairchem 三层能力:数据、模型、应用fairchem 是 FAIR Chemistry 的中心仓库,把材料科学与量子化学的数据、模型、应用代码收在一个仓库里,可以拆成三层看:数据层:OC20/OC22/OC25(催化)、OMol25(分子与聚合物)、OMat24(无机材料)、ODAC(MOF)等数据集的配置与生成代码;src/fairchem/data/oc/ 提供 Bulk/Slab/Adsorbate 对象,从一个体相 id 就能构建候选吸附-表面构型。模型层:UMA 是等变 GNN,在 5 亿条 DFT 样本上训练,用 MoLE(Mixture of Linear Experts)路由架构;uma-s-1p2p1(6.6M 激活/290M 总参数)与uma-m-1p1(50M 激活/1.4B 总参数)两个模型覆盖 oc20、oc22、oc25、omat、omol、odac、omc 共 7 个任务,定义在 src/fairchem/core/models/uma/。应用层:AdsorbML(最低吸附能)、Cattsunami(催化反应路径)、FastCSP(晶体结构预测)等 pip 子包,按需安装。精度与速度看官方基准:UMA-S 1.2.1 在 OMol25 验证集上力 MAE 约 7.5 meV/Å,1296 原子水体系的 NVE 动力学约 45 ms/step(NVIDIA H200)。从结构到吸附能:三步拆解task_name 怎么选:1 个模型对应 7 套 DFT 理论水平输入是 ASEAtoms结构加task_name。UMA 以任务、元素组成、总电荷、总自旋作为 MoLE 路由输入,选中对应专家分支,输出能量与力(omat 任务还输出应力)。任务不是"领域开关",而是不同的 DFT 泛函:oc20 用 RPBE(无色散,训练数据不含氧化物与溶剂),oc25 用 RPBE+D3,omat 用 PBE/PBE+U,omol 用 ORCA6 的 wB97M-V 且要求atoms.info里给出总电荷与自旋多重度(默认 0/1);oc22、oc25 仅在 UMA 1.2 提供。跨任务比较能量没有意义,它们来自不同参考计算。候选位点枚举:Bulk 到 AdsorbateSlabConfig 的 4 个对象输入是一个 bulk id。处理分四步:Bulk生成体相参考结构,Slab.from_bulk_get_specific_millers按密勒指数切出表面,Adsorbate从 SMILES 数据库取吸附质,AdsorbateSlabConfig用启发式加随机放置枚举 ontop/bridge/hollow 位点。输出是Atoms列表,每个构型可单独挂 calculator 弛豫:slab = Slab.from_bulk_get_specific_millers(bulk, specific_millers=(1, 1, 1)) ads = Adsorbate(adsorbate_smiles_from_db="*H", adsorbate_db_path=db) configs = AdsorbateSlabConfig(slab[0], ads, mode="random_site_heuristic_placement", num_sites=20)轨迹异常检测:滤掉 4 类无效吸附能弛豫过程中如果吸附质脱附、解离、插层,或表面重构了,末帧能量差就不再是吸附能。DetectTrajAnomaly(见 src/fairchem/data/oc/utils/flag_anomaly.py)用轨迹首末帧加原子 tag(0=体相,1=表面,2=吸附质)输出 4 个布尔值,统计前先过滤;算吸附能时还要减去弛豫后的 slab 能量与气相原子参考能:flag = DetectTrajAnomaly(traj[0], traj[-1], traj[0].get_tags()) ok = not (flag.is_adsorbate_desorbed() or flag.is_adsorbate_dissociated() or flag.has_surface_changed())最小可运行示例:弛豫 Cu(100) 上的 CO安装两行(Python 3.10+)。UMA 检查点在 HuggingFace 上是 gated 仓库,需先用 token 登录;如需阅读或修改源码,先git clone https://gitcode.com/GitHub_Trending/oc/ocp:pip install fairchem-core huggingface-cli login # 先在 HF 申请 UMA 仓库访问权限from ase.build import fcc100, add_adsorbate, molecule from ase.optimize import LBFGS from fairchem.core import pretrained_mlip, FAIRChemCalculator predictor = pretrained_mlip.get_predict_unit("uma-s-1p2p1", device="cuda") calc = FAIRChemCalculator(predictor, task_name="oc20") slab = fcc100("Cu", (3, 3, 3), vacuum=8) # 8 Å 真空层 add_adsorbate(slab, molecule("CO"), 2.0, "bridge") # CO 放在距表面 2 Å 的桥位 slab.calc = calc LBFGS(slab).run(0.05, 100) # 弛豫到最大力 < 0.05 eV/Å print(slab.get_potential_energy())常见坑与解法首次运行报 401 或权限错误。原因:UMA 检查点在 gated 仓库,匿名下载被拒。解法:在 HuggingFace 申请 UMA 仓库访问权限,然后huggingface-cli login或设置HF_TOKEN环境变量。前几次推理很快,之后突然变慢并打印警告。原因:default 与 turbo 快速路径(merge_mole + compile)要求组成、任务、电荷、自旋在多次求值间保持不变,一旦变化会永久回退到未编译路径。解法:同质体系放同一批;异构批量用inference_settings="batch"。吸附能数值明显偏大。原因:参考减错了——漏减弛豫后的 slab 能量或气相原子参考能,或跨任务直接比较能量。解法:E_ads = E_adslab − E_slab(弛豫后) − Σ气相原子参考能(OC20 论文参考值或自行 DFT 计算);只在同一任务内比较。MOF 体系(odac 任务)另注意:训练数据只有 CO2/H2O 吸附,新框架需谨慎:资源索引docs/core/quickstart.md:UMA 快速上手与任务选择表docs/core/uma.md:7 个任务与 DFT 理论水平对照docs/catalysts/examples_tutorials/adsorption_energies/adsorption_energies.md:完整吸附能教程,从位点枚举到文献对比docs/core/common_tasks/ase_calculator.md:default/batch/turbo 推理模式细节src/fairchem/data/oc/:位点枚举代码与吸附质数据库从 quickstart 拿到第一个能量与力,再到吸附能教程跑通一次完整筛选流程。【免费下载链接】ocpFAIR Chemistry's library of machine learning methods for chemistry项目地址: https://gitcode.com/GitHub_Trending/oc/ocp创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
OCP库3步拿到催化剂吸附能【免费下载链接】ocpFAIR Chemistry's library of machine learning methods for chemistry项目地址: https://gitcode.com/GitHub_Trending/oc/ocp你在筛非均相催化剂,需要 CO 在 Cu(100) 表面的吸附能。DFT 跑完一组候选位点是小时级工作量,而一个表面还有 ontop、bridge、hollow 等几十个候选位点要枚举。OCP库(fairchem)是 FAIR Chemistry 的机器学习化学工具包,用 UMA 机器学习势直接输出能量和力,"位点枚举 → 逐点弛豫 → 吸附能"整条流程在 GPU 上分钟级完成。fairchem 三层能力:数据、模型、应用fairchem 是 FAIR Chemistry 的中心仓库,把材料科学与量子化学的数据、模型、应用代码收在一个仓库里,可以拆成三层看:数据层:OC20/OC22/OC25(催化)、OMol25(分子与聚合物)、OMat24(无机材料)、ODAC(MOF)等数据集的配置与生成代码;src/fairchem/data/oc/ 提供 Bulk/Slab/Adsorbate 对象,从一个体相 id 就能构建候选吸附-表面构型。模型层:UMA 是等变 GNN,在 5 亿条 DFT 样本上训练,用 MoLE(Mixture of Linear Experts)路由架构;uma-s-1p2p1(6.6M 激活/290M 总参数)与uma-m-1p1(50M 激活/1.4B 总参数)两个模型覆盖 oc20、oc22、oc25、omat、omol、odac、omc 共 7 个任务,定义在 src/fairchem/core/models/uma/。应用层:AdsorbML(最低吸附能)、Cattsunami(催化反应路径)、FastCSP(晶体结构预测)等 pip 子包,按需安装。精度与速度看官方基准:UMA-S 1.2.1 在 OMol25 验证集上力 MAE 约 7.5 meV/Å,1296 原子水体系的 NVE 动力学约 45 ms/step(NVIDIA H200)。从结构到吸附能:三步拆解task_name 怎么选:1 个模型对应 7 套 DFT 理论水平输入是 ASEAtoms结构加task_name。UMA 以任务、元素组成、总电荷、总自旋作为 MoLE 路由输入,选中对应专家分支,输出能量与力(omat 任务还输出应力)。任务不是"领域开关",而是不同的 DFT 泛函:oc20 用 RPBE(无色散,训练数据不含氧化物与溶剂),oc25 用 RPBE+D3,omat 用 PBE/PBE+U,omol 用 ORCA6 的 wB97M-V 且要求atoms.info里给出总电荷与自旋多重度(默认 0/1);oc22、oc25 仅在 UMA 1.2 提供。跨任务比较能量没有意义,它们来自不同参考计算。候选位点枚举:Bulk 到 AdsorbateSlabConfig 的 4 个对象输入是一个 bulk id。处理分四步:Bulk生成体相参考结构,Slab.from_bulk_get_specific_millers按密勒指数切出表面,Adsorbate从 SMILES 数据库取吸附质,AdsorbateSlabConfig用启发式加随机放置枚举 ontop/bridge/hollow 位点。输出是Atoms列表,每个构型可单独挂 calculator 弛豫:slab = Slab.from_bulk_get_specific_millers(bulk, specific_millers=(1, 1, 1)) ads = Adsorbate(adsorbate_smiles_from_db="*H", adsorbate_db_path=db) configs = AdsorbateSlabConfig(slab[0], ads, mode="random_site_heuristic_placement", num_sites=20)轨迹异常检测:滤掉 4 类无效吸附能弛豫过程中如果吸附质脱附、解离、插层,或表面重构了,末帧能量差就不再是吸附能。DetectTrajAnomaly(见 src/fairchem/data/oc/utils/flag_anomaly.py)用轨迹首末帧加原子 tag(0=体相,1=表面,2=吸附质)输出 4 个布尔值,统计前先过滤;算吸附能时还要减去弛豫后的 slab 能量与气相原子参考能:flag = DetectTrajAnomaly(traj[0], traj[-1], traj[0].get_tags()) ok = not (flag.is_adsorbate_desorbed() or flag.is_adsorbate_dissociated() or flag.has_surface_changed())最小可运行示例:弛豫 Cu(100) 上的 CO安装两行(Python 3.10+)。UMA 检查点在 HuggingFace 上是 gated 仓库,需先用 token 登录;如需阅读或修改源码,先git clone https://gitcode.com/GitHub_Trending/oc/ocp:pip install fairchem-core huggingface-cli login # 先在 HF 申请 UMA 仓库访问权限from ase.build import fcc100, add_adsorbate, molecule from ase.optimize import LBFGS from fairchem.core import pretrained_mlip, FAIRChemCalculator predictor = pretrained_mlip.get_predict_unit("uma-s-1p2p1", device="cuda") calc = FAIRChemCalculator(predictor, task_name="oc20") slab = fcc100("Cu", (3, 3, 3), vacuum=8) # 8 Å 真空层 add_adsorbate(slab, molecule("CO"), 2.0, "bridge") # CO 放在距表面 2 Å 的桥位 slab.calc = calc LBFGS(slab).run(0.05, 100) # 弛豫到最大力 < 0.05 eV/Å print(slab.get_potential_energy())常见坑与解法首次运行报 401 或权限错误。原因:UMA 检查点在 gated 仓库,匿名下载被拒。解法:在 HuggingFace 申请 UMA 仓库访问权限,然后huggingface-cli login或设置HF_TOKEN环境变量。前几次推理很快,之后突然变慢并打印警告。原因:default 与 turbo 快速路径(merge_mole + compile)要求组成、任务、电荷、自旋在多次求值间保持不变,一旦变化会永久回退到未编译路径。解法:同质体系放同一批;异构批量用inference_settings="batch"。吸附能数值明显偏大。原因:参考减错了——漏减弛豫后的 slab 能量或气相原子参考能,或跨任务直接比较能量。解法:E_ads = E_adslab − E_slab(弛豫后) − Σ气相原子参考能(OC20 论文参考值或自行 DFT 计算);只在同一任务内比较。MOF 体系(odac 任务)另注意:训练数据只有 CO2/H2O 吸附,新框架需谨慎:资源索引docs/core/quickstart.md:UMA 快速上手与任务选择表docs/core/uma.md:7 个任务与 DFT 理论水平对照docs/catalysts/examples_tutorials/adsorption_energies/adsorption_energies.md:完整吸附能教程,从位点枚举到文献对比docs/core/common_tasks/ase_calculator.md:default/batch/turbo 推理模式细节src/fairchem/data/oc/:位点枚举代码与吸附质数据库从 quickstart 拿到第一个能量与力,再到吸附能教程跑通一次完整筛选流程。【免费下载链接】ocpFAIR Chemistry's library of machine learning methods for chemistry项目地址: https://gitcode.com/GitHub_Trending/oc/ocp创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考