新闻详情

新闻详情

首页 / 资讯中心 / 详情

FastCSP 端到端晶体结构预测实战:从 SMILES 到分子晶体能量景观的完整工作流

发布时间:2026/9/18 20:09:33来源:尧图网络
FastCSP 端到端晶体结构预测实战:从 SMILES 到分子晶体能量景观的完整工作流
FastCSP 端到端晶体结构预测实战从 SMILES 到分子晶体能量景观的完整工作流【免费下载链接】ocpFAIR Chemistrys library of machine learning methods for chemistry项目地址: https://gitcode.com/GitHub_Trending/oc/ocp导读本文以 FastCSP 官方示例src/fairchem/applications/fastcsp/example/为主线完整讲解一条SMILES → 构象生成 → 晶体结构生成 → ML 弛豫 → 能量修正 → 过滤去重 → 实验比对 → 振动自由能的端到端晶体结构预测Crystal Structure Prediction, CSP流水线。读者将掌握fastcsp-confgen与fastcsp两个 CLI 的用法、两个 YAML 配置文件中全部关键参数的语义与默认值、七阶段工作流的依赖关系与断点续跑机制以及如何把示例规模冒烟测试级扩展到生产级吞吐10–100 倍算力规模。示例概述两个 JACS 测试集分子示例针对 FastCSP JACS 测试集中的两个分子晶体XULDUD半刚性双环氧杂茚semi-rigid bicyclic oxaindene实验上有 2 个多晶型refcode 为XULDUD01、XULDUDWIDBAO柔性噻唑啉-硫酮flexible thiazoline-thione实验上有 1 个多晶型refcode 为WIDBAO。该示例被定位为冒烟测试smoke test或可复制粘贴的起点规模足够小、可在合理时间内跑通全部七个阶段同时保留完整的生产级工作流结构是理解 FastCSP 全流程的最佳入门素材。示例涉及的全部文件位于src/fairchem/applications/fastcsp/example/目录文件用途molecules.csv共享输入name,smiles,conformers_path,refcode,z,spg。fastcsp-confgen只读取namesmiles忽略其他列fastcsp读取name,conformers_path,refcode,z,spg忽略其他列confgen_config.yaml构象生成配置SMILES → 每个分子的 XYZ 文件fastcsp_config.yaml七阶段 CSP 工作流配置genarris_base.confGenarris 模板被fastcsp_config.yaml引用molecules.csv一条 CSV 驱动两个工具CSV 是整条流水线的契约文件两个 CLI 各取所需字段name,smiles,select_for_fastcsp,conformers_path,refcode,z,spg XULDUD,C1CC2COCC12,1,conformers/conformers_fastcsp/XULDUD/,XULDUD01,XULDUD,[1, 2, 4],[[1],[2],[14]] WIDBAO,CN(C)C(S)N1C(S)Sc2ccccc12,2,conformers/conformers_fastcsp/WIDBAO/,WIDBAO,[2, 4],[[14, 2, 4]]各列含义name分子标识贯穿整个输出目录树smilesSMILES 字符串仅fastcsp-confgen使用select_for_fastcsp可选列控制每个分子有多少个能量最低的弛豫构象被镜像进conformers_fastcsp/子目录XULDUD 取 1 个WIDBAO 取 2 个conformers_path指向fastcsp第一阶段输入的构象目录相对root解析refcode实验晶体 CCDC refcode多个用逗号分隔如XULDUD01,XULDUD供evaluate阶段使用z每个分子允许的分子数Z如 XULDUD 为[1, 2, 4]spg每个 Z 值对应的空间群编号列表嵌套列表如 XULDUD 为[[1],[2],[14]]即 Z1 时只用 SG 1Z2 时用 SG 2Z4 时用 SG 14WIDBAO 的[[14, 2, 4]]表示三种 Z 共享同一组空间群。从 confgen 源码 的结构看CSV 中凡是与CONF_GEN_DEFAULTS/RELAX_DEFAULTS中键名相同的列还会成为按行per-molecule覆盖项优先级为默认值 YAML 配置 CSV 列每个 worker 在任务启动时会打印最终解析后的配置——这为按分子精细调参提供了入口。动手前必须替换的占位符两个 YAML 配置中都含有尖括号占位符默认状态下没有任何路径是可移植的必须逐一替换PROJECT_ROOT所有输出落盘的绝对路径。必须在confgen_config.yaml和fastcsp_config.yaml中设为同一个值这样工作流才能找到PROJECT_ROOT/conformers/conformers_fastcsp/name/*.xyz该路径与molecules.csv的conformers_path列一致PATH_TO_GENARRIS安装了 Genarris 3.0 的 Python 环境仅在generate阶段使用PATH_TO_MPIRUN对 Genarris 环境可见的 MPI 启动器如mpirunPATH_TO_EXPERIMENTAL_CIFS存放refcode.cif文件的目录evaluate阶段需要没有实验参考数据可跳过YOUR_PARTITION每个阶段slurm:块的 SLURM 分区可选PATH_TO_CSD_PYTHON装有 CCDC Python API 的环境仅在把evaluate.method从pymatgen切换为csd时需要。第一步从 SMILES 生成起始构象fastcsp-confgen -c example/confgen_config.yaml该命令读取 molecules.csv此阶段只需要name和smiles两列可选的select_for_fastcsp列控制每个分子有多少构象被镜像进conformers_fastcsp/子目录每个分子提交一个 SLURM 任务最终写出PROJECT_ROOT/conformers/ ├── conformers_fastcsp/ # 按 select_for_fastcsp 精选的子集 │ ├── XULDUD/ │ │ └── XULDUD_conf_00_relaxed.xyz │ └── WIDBAO/ │ ├── WIDBAO_conf_00_relaxed.xyz │ └── WIDBAO_conf_01_relaxed.xyz ├── conformers_generated/ # 全部 RDKit 生成的弛豫前 ├── conformers_relaxed/ # 全部 UMA 弛豫后的幸存者 ├── summaries/ # 每个分子的 .json 摘要 └── slurm/ # submitit 日志这些构象经过UMA-omol 力场 BFGS 弛豫、去重Butina 聚类 能量门控、以及energy_window能量窗口裁剪。完整的逐分子处理管线见 confgen/README.md其核心步骤为种子池生成generate_conformers用四种互补策略ETKDGv3 MMFF、ETKDGv3 随机坐标 MMFF、无 MMFF 的 ETKDGv3、均匀随机扭转嵌入约initial_pool_size个构象并剔除原子碰撞与连接性改变的几何弛豫前 RMSD 聚类此时能量为零能量门控失效直接对最佳 RMSD 做 Butina 聚类先廉价丢弃近重复种子避免浪费 UMA 计算UMA 单点能对预聚类池做单点能计算输出到conformers_generated/name/UMA 弛豫使用 fastcsp 的relax_atoms驱动孤立分子、fix_symmetryfalse、relax_cellfalse丢弃失败的弛豫再做连接性检查剔除键图改变的构象弛豫后聚类 能量窗口以cluster_energy_thresh门控的 Butina 聚类再用energy_window封顶输出到conformers_relaxed/name/FastCSP 子集若select_for_fastcsp 0将该数量的最低能量弛豫构象复制进conformers_fastcsp/name/弛豫池为空时才回退用conformers_generated/不混用。值得注意的设计是立体化学不是独立阶段从输入 SMILES 一次性计算 CIP 签名用于a在每个*_confs.csv中标记每个构象的stereo_changed、stereo_diff列b在第 5 步优先选择立体化学正确的簇代表。confgen 配置文件逐项解析confgen_config.yaml 是示例实际的构象生成配置其键名与说明如下root: PROJECT_ROOT # 输出根目录与 fastcsp_config.yaml 保持一致 molecules: molecules.csv # 与 fastcsp 工作流共享的单一 CSV rdkit: initial_pool_size: 40 # RDKit ETKDG 种子池大小 seed: 42 # 随机种子 rmsd_thresh: 0.25 # Butina 聚类半径Å cluster_energy_thresh: 1.5 # kJ/mol能量差超过该值的构象对跳过 RMSD 比较 include_hydrogens: true # RMSD 是否包含全部原子false 仅重原子 output_format: xyz # fastcsp 可读 xyz/sdf/mol relax: calculator: uma_sm_1p1_omol # 使用 omol分子任务而非 omc optimizer: BFGS fmax: 0.05 # 力收敛阈值eV/Å max_steps: 100 # 最大优化步数 write_traj: false # 是否写 ASE 轨迹 energy_window: 40.0 # 最终弛豫池的能量上限kJ/mol slurm: # 每个分子的 SLURM 数组任务 timeout_min: 240 gpus_per_node: 1 cpus_per_task: 8 mem_gb: 32 # partition: YOUR_PARTITION # array_parallelism: 8关键参数说明rmsd_thresh与cluster_energy_thresh联合决定 Butina 去重的相邻判定先看能量差若两构象能量差 ≥ 1.5 kJ/mol 直接视为不同否则再比较 RMSDinclude_hydrogens决定 RMSD 是在全原子还是重原子子集上计算直接影响柔性分子的去重灵敏度energy_window是弛豫后池子的能量封顶超出最低能量 40 kJ/mol 的构象被裁掉控制进入 CSP 的构象数量calculator: uma_sm_1p1_omol表示用 UMA 的 omol孤立分子/气相任务变体做构象弛豫与后续晶体弛豫用的uma_sm_1p1_omc明确区分。该阶段还支持按分子覆盖initial_pool_size、seed、rmsd_thresh、cluster_energy_thresh、include_hydrogens、output_format、calculator、optimizer、fmax、max_steps、energy_window、select_for_fastcsp均可作为 CSV 列逐行覆盖。此外 confgen 运行是可续的——conformers_generated/或conformers_relaxed/子目录非空的分子会被跳过。第二步运行晶体结构预测工作流同一个 molecules.csv 驱动 Stage 1其conformers_path列指向PROJECT_ROOT/conformers/conformers_fastcsp/name/。按顺序运行全部 7 个阶段fastcsp -c example/fastcsp_config.yaml \ -s generate process_generated relax \ compute_conformer_corrections filter evaluate compute_free_energy第 4、6、7 阶段是可选的——去掉其中任意一个工作流仍可端到端运行自动续跑失败后重新执行同一条命令会从第一个未完成的阶段自动恢复。七阶段在源码中的落地从 core/workflow/main.py 的编排逻辑可以看到每个阶段的实际调用链与输出目录阶段配置块输入 → 输出关键实现1. generategenarris→generated_structures/generate.py 中run_genarris_jobs为每个分子生成 Genarris SLURM 作业2. process_generatedpre_relaxation_filtergenerated_structures/→raw_structures/process_generated.py 读取 Genarris 输出、去重并写 parquet3. relaxrelaxraw_structures/→relaxed/run_name/raw_structures/relax.py 用 UMA 做 ML 弛豫4. compute_conformer_corrections可选conformer_corrections改写raw_structures/默认原地conformer_correction.py5. filterpost_relaxation_filter→relaxed/run_name/filtered_structures/filter.py 能量过滤 最终去重6. evaluate可选evaluate→relaxed/run_name/matched_structures_*/eval.pypymatgen 或 CSD API7. compute_free_energy可选free_energy→relaxed/run_name/free_energy/free_energy.py 准谐波振动自由能main函数还会在启动时把config.yaml与molecules.csv复制到root下存档并通过 logging.py 的detect_restart检测是否续跑阶段列表会被reorder_stages_by_dependencies按依赖重排保证即使-s参数乱序也能正确执行。fastcsp 配置文件逐项解析fastcsp_config.yaml 是七阶段工作流的实际配置。下面按阶段逐块说明参数示例值 语义Stage 1Genarris 结构生成genarris: mpi_launcher: PATH_TO_MPIRUN # 例如 /public/apps/openmpi/.../bin/mpirun python_cmd: PATH_TO_GENARRIS/bin/python # 装有 Genarris 的 Python genarris_cli: PATH_TO_GENARRIS/cli.py genarris_base_config: genarris_base.conf # 本目录下的兄弟文件 # 可选计算节点环境初始化会前置到每个 slurm.sh # env_setup: # - source /etc/profile.d/modules.sh || true # - module load openmpi/3.1.1/gcc.7.3.0 # mpi_extra_args: --oversubscribe --bind-to none --mca btl self,vader,tcp vars: num_structures_per_spg: 10 # 小规模冒烟测试生产建议 500 read_z_from_file: true # 从 molecules.csv 按分子读取 Z read_spg_from_file: true # 从 molecules.csv 按分子读取空间群 slurm: job-name: example_genarris nodes: 1 ntasks-per-node: 20 time: 240 # partition: YOUR_PARTITIONGenarris 模板 genarris_base.conf 定义了生成器的核心行为其中多处???占位符由工作流在运行时填充如name、molecule_path、Z、num_structures_per_spg、spg_distribution_type关键控制项包括[generation]max_attempts_per_spg 100000000、tol 0.01、unit_cell_volume_mean predict、volume_mult 1.5、generation_type crystal、natural_cutoff_mult 1.2控制晶体生成的空间群采样密度与晶胞体积[symm_rigid_press]sr 0.85、method BFGS、tol 0.01控制对称性刚体加压弛豫[workflow]tasks [generation, symm_rigid_press]定义生成后紧接着的弛豫任务链。read_z_from_file: true/read_spg_from_file: true使得每个分子的 Z 与空间群列表直接来自 CSV 的z、spg列无需在配置中硬编码。Stage 2弛豫前去重pre_relaxation_filter: assign_groups: true # 运行去重 blocker 并分配 group_index remove_duplicates: true # 每组只保留一个代表 最接近组中位密度的结构 ltol: 0.3 # 晶格容差 stol: 0.4 # 位点容差Å angle_tol: 5 # 角度容差° bin_by_conf: true # 去重 bin 键加入 conf_id bin_by_z: true # 加入 Z bin_by_spg: true # 加入 spg_generated density_tol: 0.05 # 便宜的 |Δρ| 预过滤先于 sm.fit npartitions: 1 # SLURM 数组大小parquet 分区数 slurm: job-name: example_pre_relax_dedup cpus_per_task: 1 mem_gb: 100 time: 240Stage 3UMA ML 弛豫relax: calculator: uma_sm_1p1_omc # 有机分子晶体推荐使用 omc 任务 optimizer: BFGS fmax: 0.01 # 力收敛阈值eV/Å max_steps: 1000 # 最大步数 fix_symmetry: false # 弛豫时是否固定晶体对称性 relax_cell: true # 是否允许晶胞弛豫 write_traj: false slurm: num_ranks: 1 # GPU 任务数 array_parallelism: 1 timeout_min: 240从 relax.py 的CHECKPOINTS结构可以确认calculator取值来自预训练 UMA 检查点键如uma_sm_1p1_omc、uma_sm_1p1_omol、uma_sm_1p2_omc、uma_sm_1p2_omol其中omc 变体面向有机分子晶体organic molecular crystals官方注释明确推荐。弛豫输出目录名calculator_optimizer_fmax_steps_...会把这三个超参数编码进去示例中为uma_sm_1p1_omc_bfgs_0.01_1000_relaxcell。Stage 4可选逐构象片段能量修正conformer_corrections: corrector_calculator: uma_sm_1p1_omol # 气相分子任务作为 corrector separate_output: false # true 时写入镜像子目录而非原地改写 slurm: num_ranks: 20 timeout_min: 240该阶段是两级单点能方案对每个 PBC 解缠绕的分子分别用弛豫计算器和 corrector 计算器做单点能然后计算energy_corrected energy_relaxed - sum_z E_original sum_z E_corrector即用更精确的气相分子模型修正晶体中每个分子的片段能量贡献默认原地改写raw_structures/下的 parquet。实现细节见 conformer_correction.py 的apply_conformer_corrections。Stage 5弛豫后过滤与去重post_relaxation_filter: remove_problematic: true # 丢弃未收敛 / 连接性改变的 assign_groups: true # 去重 blocker group_index remove_duplicates: true # 每组保留一个代表 energy_relaxed 最低者 energy_cutoff: 20 # 高于全局最低点 20 kJ/mol 的裁掉 density_min_cutoff: 0.5 # 弛豫密度下限g/cm³ density_max_cutoff: 3.0 # 弛豫密度上限g/cm³ ltol: 0.2 stol: 0.3 angle_tol: 5 slurm: job-name: example_post_relax_dedup cpus_per_task: 40 mem_gb: 100 time: 240注意此处容差比弛豫前更紧ltol 0.3→0.2、stol 0.4→0.3因为弛豫后的结构更接近物理合理状态。去重时代表结构的选择策略也与 Stage 2 不同弛豫前取最接近组中位密度者弛豫后取energy_relaxed 最低者见 filter.py 与 deduplicate.py。Stage 6可选实验结构评估evaluate: target_xtals_dir: PATH_TO_EXPERIMENTAL_CIFS # {refcode}.cif 文件目录 method: pymatgen # pymatgen无需许可证或 csd需 CCDC API pymatgen: match_params: # 透传给 pymatgen StructureMatcher ltol: 0.2 stol: 0.3 angle_tol: 5 slurm: job-name: example_eval_pymatgen cpus_per_task: 20 mem_gb: 50 time: 240 # csd: # python_cmd: PATH_TO_CSD_PYTHON/bin/python # 装有 CSD API 的环境 # num_cpus: 40XULDUD 需要XULDUD.cif、XULDUD01.cif对应两个实验多晶型WIDBAO 需要WIDBAO.cif。没有实验参考数据时可以直接删除整个块。eval.py 支持两种匹配器pymatgenStructureMatcher无许可证要求与csdCCDC API通过子进程分块流式调用。评估输出目录后缀matched_structures_pmg_l0.2_s0.3_a5直接编码了匹配容差。Stage 7可选振动自由能准谐波free_energy: calculator: uma_sm_1p1_omc input_directory: filtered_structures # 默认对全部过滤后的结构计算 match_only: false # true 时配合 input_directory: matched_structures # 只计算与实验匹配的结构 quasiharmonic: true # 准谐波近似体积扫描 t_min: 0 t_max: 500 t_step: 10 # 温度网格K structures_per_job: 5 # 每个 SLURM 任务处理的结构数 compute_dos: false # 是否额外计算声子态密度 slurm: job-name: example_free_energy gpus_per_node: 1 cpus_per_task: 10 mem_gb: 50 time: 480该阶段对每个过滤后的结构做有限差分声子计算输出 Helmholtz/Gibbs 自由能、熵、热容等热力学量在t_min..t_max..t_step温度网格上的数组以及准谐波附加量体模量、热膨胀系数、Grüneisen 参数。match_only: true要求输入目录含match列即matched_structures否则会直接抛KeyError。全局日志logging: level: INFO # DEBUG / INFO / WARNING / ERROR console: true # 除 FastCSP.log 外同时输出到 stdout第三步检查结果作为参考官方在 scavenge 队列上端到端运行约2.5 小时阶段墙钟时间scavenge 队列输出generate~2 min7 个 Genarris 数组任务process_generated~1 min3 个去重任务relax~50 min10 个 GPU rank覆盖 12 个 parquetcompute_conformer_corrections~1 min4 个 GPU rank仅重打分filter~2 min2 个分子共 111 个过滤后结构evaluate~4 s2 个 pymatgen matcher 任务compute_free_energy~1h 35 min56 个 GPU 任务每个任务 2 个结构注该耗时仅供参考取决于具体集群与队列资源不应视为保证值。输出目录结构PROJECT_ROOT/ ├── FastCSP.log # 工作流日志 ├── config.yaml # fastcsp_config.yaml 的副本 ├── molecules.csv # 输入 CSV 的副本 │ ├── generated_structures/ # Stage 1Genarris 原始输出 │ ├── XULDUD/conf/Zz/structures.json # 每个 (mol, conf, Z, SG) 任务一个 JSON │ └── WIDBAO/conf/Zz/structures.json │ ├── raw_structures/ # Stage 2处理后、去重前 │ └── mol/conf/partition_id*/*.parquet │ ├── slurm/ # 工作流编排器的 submitit 日志 │ └── relaxed/ └── uma_sm_1p1_omc_bfgs_0.01_1000_relaxcell/ # calculator_optimizer_fmax_steps_... ├── raw_structures/ # Stage 34弛豫后 修正后 │ └── mol/conf/partition_id*/*.parquet ├── slurm/ # Stage 3 各 rank 的 submitit 日志 ├── slurm_conformer_corrections/ # Stage 4 各 rank 的 submitit 日志 ├── filtered_structures/ # Stage 5每个分子一个 parquet │ ├── XULDUD.parquet │ └── WIDBAO.parquet ├── matched_structures_pmg_l0.2_s0.3_a5/ # Stage 6evaluate后缀 容差 │ ├── XULDUD.parquet │ └── WIDBAO.parquet └── free_energy/ # Stage 7每个分子一个 parquet ├── XULDUD.parquet └── WIDBAO.parquet关键 parquet 列最终每个分子的 parquetfiltered_structures/mol.parquet及其下游产物同时携带CIFcif_generated、cif_relaxed与逐结构指标。每一行都有唯一的structure_id形如molname::confconf_id::zZ::spgSG::hash12hex可据此回溯到轨迹 / SLURM 日志 / 实验匹配结果。需要重点关注的列列名阶段含义energy_relaxed_per_molecule3UMA-omc 弛豫能量kJ/mol/分子density_relaxed,volume_relaxed3弛豫后晶胞g/cm³、ųoptimizer_converged,optimizer_steps3BFGS 是否达到fmax、用了多少步validity.crystal_relaxed.*33 个布尔量correct_z、molecule_matches_reference、connectivity_unchangedcorrection.e_fragments_{original,corrector}_per_molecule4用弛豫与 corrector 计算器得到的每分子片段单点能kJ/molenergy_corrected_per_molecule4energy_relaxed - sum_z E_original sum_z E_corrector每分子validity.conformer_corrections.applied4仅当该行两次单点能扫描都成功时为Truegroup_index5去重簇 id-1 保留的孤立结构或被过滤掉pymatgen_match,pymatgen_rmsd6仅当该行匹配到某个refcode时才非空temperatures,free_energy,gibbs_free_energies,entropy,heat_capacity,heat_capacity_P7t_min..t_max..t_step网格上的数组Helmholtz / Gibbs / S / C_v / C_pbulk_modulus_P,thermal_expansion_coefficients,gruneisen_parameters7准谐波附加量同网格数组compute_dostrue时还有phonon_dosvalidity.crystal_relaxed.*三个布尔量来自 structure.py 的check_correct_z、check_molecule_matches_reference、check_connectivity_unchanged分别校验分子数 Z 是否正确、分子是否与参考键图匹配、弛豫前后连接性是否保持不变。快速检视脚本import pandas as pd df pd.read_parquet( PROJECT_ROOT/relaxed/run_name/filtered_structures/XULDUD.parquet ) top df.nsmallest(5, energy_corrected_per_molecule) print( top[ [ structure_id, z, spg_generated, energy_corrected_per_molecule, density_relaxed, ] ] ) # 与实验 refcode 匹配上的预测结构 mdf pd.read_parquet( PROJECT_ROOT/relaxed/run_name/matched_structures_pmg_l0.2_s0.3_a5/XULDUD.parquet ) print( mdf[mdf[pymatgen_match].notna()][ [structure_id, pymatgen_match, pymatgen_rmsd] ] )nsmallest(5, energy_corrected_per_molecule)直接给出能量景观中排名前 5 的候选结构matched_structures目录下的查询则揭示哪些预测结构复现了实验多晶型以及 RMSD 偏离程度。扩展到生产规模该示例按冒烟测试规模设计——在num_structures_per_spg: 25时预期不会有实验匹配命中。生产级运行的规模大约是示例的 10–100 倍旋钮示例生产genarris.vars.num_structures_per_spg25500–2000relax.slurm.num_ranks101000–3000pre_relaxation_filter.npartitions4500–5000free_energy.structures_per_job25–20注意示例中的 fastcsp_config.yaml 实际将num_structures_per_spg设为 10、npartitions设为 1、structures_per_job设为 5README 表格给出的是另一组冒烟规模参考值两者都属于小规模范畴迁移到生产时应以官方表格的 500 起步。每个slurm:块都接受partition、mem、cpus_per_task、gpus_per_node、array_parallelism、time等标准字段。关于工作流支持的全部旋钮core/configs/example_config.yaml 提供了逐项带注释的完整参考其要点包括genarris.vars中的Z、spg_distribution_typestandard或显式空间群编号列表、num_structures_per_spg默认 500、read_z_from_file/read_spg_from_file去重相关density_bin_size、energy_bin_size、density_tol、energy_tol、apply_niggli_filter等廉价预过滤器以及bin_by_conf/bin_by_z/bin_by_spg对 bin 键的扩展bin 键越大桶越小、去重越快但跨 bin 边界的重复可能漏检free_energy的atom_disp有限差分位移默认 0.01 Å、min_lengths声子计算最小超胞边长默认 15.0 Å、energy_cutoff、max_structures等 workload 控制项。总结FastCSP 示例演示了一条从 SMILES 出发、不依赖实验晶体信息的全自动晶体结构预测流水线fastcsp-confgen先用 RDKit UMA 生成并精修气相构象fastcsp再依次执行 Genarris 晶体生成、弛豫前去重、UMA-omc 弛豫、可选片段能量修正、弛豫后过滤去重、可选实验比对与可选振动自由能计算最终产出每个候选结构带唯一structure_id、CIF 与全套能量/热力学指标的 parquet 数据集。借助共享 CSV 两级 YAML 配置 阶段依赖自动重排 断点续跑的设计这套冒烟测试可以平滑扩展到 500–2000 个结构/空间群、数千 GPU rank 的生产规模。建议读者以本示例为起点跑通流程后再对照 core/configs/example_config.yaml 的完整参数参考逐项调优。【免费下载链接】ocpFAIR Chemistrys library of machine learning methods for chemistry项目地址: https://gitcode.com/GitHub_Trending/oc/ocp创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

政府燃气安全监管平台是什么?5 大核心功能与应用价值详解 2026/9/18 20:51:39

政府燃气安全监管平台是什么?5 大核心功能与应用价值详解

燃气安全监管平台正在从单一的信息化工具演变为城市治理体系的关键基础设施。长期以来,燃气安全监管面临数据分散、协同不畅、责任难压实等结构性难题,仅靠传统行政手段已难以应对日益复杂的城市燃气风险。随着物联感知、地理信息与人工智能技术的深度融…

阅读更多 →
C#机房重构中的密码模块设计与工业级实践 2026/9/18 20:51:39

C#机房重构中的密码模块设计与工业级实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
Hydrogen v2 无头电商模板实战指南:基于 Remix 的 Shopify 店铺从零部署到 Vercel 2026/9/18 20:51:39

Hydrogen v2 无头电商模板实战指南:基于 Remix 的 Shopify 店铺从零部署到 Vercel

Hydrogen v2 无头电商模板实战指南:基于 Remix 的 Shopify 店铺从零部署到 Vercel 【免费下载链接】examples Enjoy our curated collection of examples and solutions. Use these patterns to build your own robust and scalable applications. 项目地址: http…

阅读更多 →
Fluent Bit 内嵌 Zstandard 1.5.7 测试套件全解析:datagen、fullbench、fuzzer、decodecorpus 与 paramgrill 实战 2026/9/18 20:51:39

Fluent Bit 内嵌 Zstandard 1.5.7 测试套件全解析:datagen、fullbench、fuzzer、decodecorpus 与 paramgrill 实战

Fluent Bit 内嵌 Zstandard 1.5.7 测试套件全解析:datagen、fullbench、fuzzer、decodecorpus 与 paramgrill 实战 【免费下载链接】fluent-bit Fast and Lightweight Logs, Metrics and Traces processor for Linux, BSD, OSX and Windows 项目地址: https://git…

阅读更多 →
电视盒子Armbian以太网没网?4步恢复有线网络 2026/9/18 20:51:39

电视盒子Armbian以太网没网?4步恢复有线网络

电视盒子Armbian以太网没网?4步恢复有线网络 【免费下载链接】amlogic-s9xxx-armbian Supports running Armbian on Amlogic, Allwinner, and Rockchip devices. Support a311d, s922x, s905x3, s905x2, s912, s905d, s905x, s905w, s905, s905l, rk3588, rk3568, r…

阅读更多 →
数据库原理实战:从ER建模到索引优化与事务恢复 2026/9/18 20:48:38

数据库原理实战:从ER建模到索引优化与事务恢复

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞