在7月17-24日期间,本论坛仅限等级≥level 4的成员发新的主题贴,带来的不便请谅解!(此期间请勿给管理员Sobereva发私信问学术问题)

计算化学公社

 找回密码 Forget password
 注册 Register
Views: 41|回复 Reply: 0
打印 Print 上一主题 Last thread 下一主题 Next thread

[程序/脚本开发] 【工具分享】MolCrysKit:分子晶体与有机-无机杂化晶体的建模工具包

[复制链接 Copy URL]

17

帖子

0

威望

665

eV
积分
682

Level 4 (黑子)

本帖最后由 SchrodingersCat 于 2026-7-21 20:53 编辑

准确的模拟计算离不开恰当的建模。有一大类晶态材料,其结构中包含可辨识的分子或离子片段(如有机小分子、配体、有机阳离子等),这些片段通过共价键维持自身完整性,再经由氢键、配位键、π-π 堆积、范德华力等相互作用组装成周期性晶体。药物晶体、含能材料、有机半导体、金属有机框架(MOF)、杂化钙钛矿等均属此类,大量收录于剑桥晶体学数据库(CSD)及相关结构数据库中。对这类体系做建模时,常常遇到以下问题:

  • CIF 含有占据无序,不能直接用于 MD 或 DFT 计算
  • X 射线衍射分析不能准确确定氢原子位置,部分结构数据常缺失氢原子坐标,需要手动补全
  • 切表面时容易切断共价键,破坏分子完整性,需反复人工调整
  • 批量处理 CSD 结构时,每个体系都需手动检查分子识别是否正确


过去,上述建模步骤主要依赖 Materials Studio 等 GUI 软件逐一、手动操作,难以脚本化和批量化,还容易出错。为此,我们开发了 MolCrysKit 工具包,基于图论算法自动处理上述问题,MIT 协议开源。

值得一提的是:基于此工具包,也可以通过模型上下文协议(MCP)或者Skill等方式让AI智能体协助分子晶体的建模和材料信息学分析。

核心功能

1. 分子识别
从周期性晶体结构中自动识别完整分子(正确处理跨 cell 边界的情况)。基于图论的键连接判定,不依赖残基标签。


2. Disorder 处理
自动解析 CIF 中的占据无序,生成有序结构。


3. 拓扑保全表面切割
切表面时保证分子完整性。支持指定 Miller 面、层数、真空层厚度,以及自动枚举不同终端。



4. 加氢补全
基于配位几何和 CIF formula moiety 信息自动补氢。支持常见配位构型(四面体、三角锥、弯曲等),可自定义键长规则。



5. QM 簇切割
按配位壳层从晶体中切出球形分子簇,适用于 ONIOM / embedded cluster 计算。支持冻结外壳原子、封端等选项。



安装
  1. pip install molcrys-kit
复制代码
需要 Python ≥ 3.10。依赖 ASE、NetworkX 等常用库,会自动安装。

也可以安装GitHub上最新代码:
  1. pip install git+https://github.com/SchrodingersCattt/MolCrysKit.git@main
复制代码



快速体验(CLI)

安装后自带mck命令,不写 Python 也能用:
  1. # 查看晶体基本信息(分子组成、空间群等)
  2. mck io info structure.cif

  3. # 列出晶体中所有独立分子
  4. mck io molecules structure.cif --json

  5. # 解 disorder,输出有序结构
  6. mck operate disorder disordered.cif -o ordered.cif

  7. # 补氢
  8. mck operate add-h no_hydrogen.cif -o with_h.cif

  9. # 切 (001) 表面,3层,15 Å 真空
  10. mck operate slab crystal.cif -o slab.cif --miller 0 0 1 --layers 3 --vacuum 15.0

  11. # 切 QM 簇
  12. mck operate cluster crystal.cif -o cluster.xyz --seed-index 0 --mode bond_shells
复制代码



Python API 示例

  1. import molcrys_kit as mck

  2. # 读取 CIF
  3. crystal = mck.read_mol_crystal("OCHTET12.cif")

  4. # 查看分子组成
  5. for mol in crystal.molecules:
  6.     print(mol.get_chemical_formula())

  7. # 切表面
  8. from molcrys_kit.operations import generate_topological_slab
  9. slab = generate_topological_slab(crystal, miller_indices=(0, 0, 1), layers=3, vacuum=15.0)

  10. # 切 QM 簇
  11. from molcrys_kit.operations import carve_cluster
  12. cluster = carve_cluster(crystal, seed=[0], mode="bond_shells")
复制代码



链接
GitHub:https://github.com/SchrodingersCattt/MolCrysKit
PyPI:https://pypi.org/project/molcrys-kit/
文档:见 GitHub 仓库 docs 目录


引用
如果在学术工作中使用了 MolCrysKit,请引用:
  1. Guo, M.-Y.; Zhang, W.-X. MolCrysKit: A Topology-Aware Toolkit for Bridging Experimental Molecular-Crystal Structures and Simulation-Ready Modeling. J. Chem. Inf. Model. 2026, 66(9), 4999–5007. DOI: 10.1021/acs.jcim.6c00168
复制代码



欢迎试用和反馈!使用中遇到的问题可以直接在 GitHub 提 issue,或者在本帖回复讨论。
如果有特殊的分子晶体处理需求(比如某类 disorder 解析不正确、某个体系切面有问题等),也欢迎提供 CIF 文件,我们会尽快修复。



评分 Rate

参与人数
Participants 2
eV +6 收起 理由
Reason
LittlePupil + 3 Looks good.
Serious + 3 GJ!

查看全部评分 View all ratings

本版积分规则 Credits rule

手机版 Mobile version|北京科音自然科学研究中心 Beijing Kein Research Center for Natural Sciences|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949号-1 )|网站地图

GMT+8, 2026-7-22 04:05 , Processed in 0.229328 second(s), 24 queries , Gzip On.

快速回复 返回顶部 返回列表 Return to list