Skip to content

Commit 5d3b388

Browse files
leeleolayGRCaaaaleeleolay
authored
update cgcnn and molflow doc (#1259)
* 提交文件 * Create vgg.py * 修改 * Delete xrdmatch.yaml * 提交 * 修改 * 提交 * 修改 * Update mkdocs.yml * 完善md文件 * 修改说明文件 * 提交代码 帮我把之前的模型都删除吧 * Update xrdmatch.md * Update xrdmatch.yaml * 修改配置 * 修改训练轮次 * docs: update CGCNN and MoFlow README documentation with detailed theoretical explanations and dataset descriptions - CGCNN: Add comprehensive crystal graph theory, convolutional layers explanation, pooling mechanism and mathematical formulas - MoFlow: Add detailed dataset descriptions for QM9 and ZINC250k with molecular properties and selection criteria --------- Co-authored-by: GRCaaaa <1293838668@qq.com> Co-authored-by: Ruichen Geng <149073728+GRCaaaa@users.noreply.github.com> Co-authored-by: leeleolay <you@example.com>
1 parent 803ee2b commit 5d3b388

File tree

2 files changed

+47
-2
lines changed

2 files changed

+47
-2
lines changed

docs/zh/examples/cgcnn.md

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,28 @@
2626

2727
本章节仅对 CGCNN 的模型原理进行简单地介绍,详细的理论推导请阅读 [Crystal Graph Convolutional Neural Networks for an Accurate and Interpretable Prediction of Material Properties](https://journals.aps.org/prl/abstract/10.1103/PhysRevLett.120.145301)
2828

29-
该方法的主要思想是通过一个同时编码原子信息和原子间成键相互作用的晶体图来表示晶体结构,然后在该图上构建一个卷积神经网络,通过使用DFT计算数据进行训练,自动提取最适合预测目标性质的表示。如图所示,晶体图是一个无向多图,它由代表原子的节点和代表晶体中原子之间连接的边所定义。晶体图不同于普通图,因为它允许在同一对端点之间有多条边,这是晶体图的一个特点,同时因为它们的周期性,其与分子图也有所不同。图中每个节点由一个特征向量表示,编码节点对应原子的属性。类似地,每条边同样用特征向量表示;对应于连接原子的键。
29+
CGCNN 是一个用于表示周期性晶体系统的通用机器学习框架。与依赖人工构建特征向量的传统方法不同,CGCNN 直接在晶体图 (Crystal Graph) 之上构建卷积神经网络,从而自动学习表示,以达到密度泛函理论 (DFT) 的精度预测材料性质,并提供原子层级的化学见解。
30+
31+
晶体图表示 (Crystal Graph Representation):晶体结构转化为**无向多重图** (Undirected Multigraph) $G$。
32+
* **节点 (Nodes $i$):** 代表原子。每个节点由一个特征向量 $v_i$ 描述,编码了原子属性(如族数、周期数、电负性等)。
33+
* **边 (Edges $(i,j)_k$):** 代表原子间的化学键连接。由于晶体的周期性,同一对原子之间可能存在多条边(多重图)。每条边由对应于连接原子 $i$ 和 $j$ 的第 $k$ 个键的特征向量 $u_{(i,j)_k}$ 定义。
34+
* **构建方式:** 通常在 6 Å 半径内搜索最近邻居。如果原子共享 Voronoi 面且距离足够近(基于共价键长度),则认为它们是连接的。
35+
36+
卷积层 (Convolutional Layers):核心的“学习”过程发生在卷积层。模型通过聚合周围原子和键的信息,迭代更新每个原子的特征向量,以捕捉局部化学环境。
37+
**卷积函数:** 为了区分邻居之间相互作用强度的差异,模型使用了改进后的更新规则:
38+
$$v_{i}^{(t+1)} = v_{i}^{(t)} + \sum_{j,k} \sigma(z_{(i,j)_{k}}^{(t)} W_{f}^{(t)} + b_{f}^{(t)}) \odot g(z_{(i,j)_{k}}^{(t)} W_{s}^{(t)} + b_{s}^{(t)})$$
39+
其中:
40+
* **拼接 ($z$):** $z_{(i,j)_{k}}^{(t)} = v_{i}^{(t)} \oplus v_{j}^{(t)} \oplus u_{(i,j)_{k}}$ 是中心原子向量、邻居原子向量和键向量的拼接。
41+
* **门控 ($\sigma$):** Sigmoid 函数 $\sigma(\cdot)$ 充当学习到的权重矩阵(即门控机制),用于自动区分不同邻居间相互作用的强度(例如自动忽略弱键)。
42+
* **非线性 ($g$):** 函数 $g(\cdot)$ 增加了非线性耦合。
43+
* **残差连接:** 公式中加上原始的 $v_{i}^{(t)}$ 使得训练更深层的网络变得更容易。
44+
45+
池化与输出 (Pooling and Output):经过 $R$ 层卷积层后,模型需要生成一个代表整个晶体结构的固定长度向量,无论单元格中有多少个原子。
46+
* **池化层 (Pooling Layer):** 使用**归一化求和** (Normalized Summation) 作为池化函数。
47+
$$v_{c} = \frac{1}{N} \sum_{i} v_{i}^{(R)}$$
48+
这确保了表示具有**原子索引排列不变性** (Permutational Invariance) 和**晶胞大小不变性** (Size Invariance)。
49+
50+
* **输出层 (Output Layer):** 晶体特征向量 $v_c$ 通过全连接隐藏层 ($L_1, L_2$) 以捕捉复杂的映射关系,最后通过输出层预测目标属性 $\hat{y}$(例如形成能、带隙)。
3051

3152
模型的总体结构如图所示:
3253

@@ -36,7 +57,11 @@ CGCNN 论文中预测了七种不同性质,接下来将介绍如何使用 Padd
3657

3758
### 3.1 数据集介绍
3859

39-
CGCNN 原文中使用的是 数据集 (<https://next-gen.materialsproject.org/>) 和 数据集(<https://cmr.fysik.dtu.dk/cubic_perovskites/cubic_perovskites.html>)。本案例使用自行收集的数据集进行训练测试,如果用户需要使用本案例进行相关任务,可以参考以下数据集格式:
60+
CGCNN 原文中使用的是 数据集 (<https://next-gen.materialsproject.org/>) 和 数据集(<https://cmr.fysik.dtu.dk/cubic_perovskites/cubic_perovskites.html>)。
61+
62+
*Materials Project 数据集*由伯克利加州大学与劳伦斯伯克利国家实验室合作建立的大型开放式在线材料数据库,致力于提供全面的材料性能数据、结构信息和计算模拟结果。该数据集包含了来自高通量第一性原理计算的超过百万种无机材料的数据。其中包括晶体结构、能量特性、电子结构、热力学性质等详尽信息,为研究人员提供了丰富的材料数据资源。MPDataDoc对象共包含69个字段,其中57个字段分别从材料表示、光电性质、力学性质(弹性特性、剪切性质)、物理化学性质(化学组成、物理结构、微观结构)、稳定性和反应性(也属于化学性质)、热力学性质、磁性性质等方面描述材料的性质
63+
64+
本案例使用自行收集的数据集进行训练测试,如果用户需要使用本案例进行相关任务,可以参考以下数据集格式:
4065

4166
- [CIF](https://en.wikipedia.org/wiki/Crystallographic_Information_File) 用于记录用户所需的晶体结构的文件。
4267
- [id _ prop.csv] 每个晶体的目标属性。

docs/zh/examples/moflow.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -213,6 +213,26 @@ $$
213213
<img title="MoFlow的模型结构图" src="https://paddle-org.bj.bcebos.com/paddlescience/docs/moflow.jpg" width="80%"></br>MoFlow的模型结构图
214214
</center>
215215

216+
### 2.3 数据集介绍
217+
218+
**QM9**数据集源自GDB-17数据库的枚举子集。GDB-17是一个包含1660亿种有机小分子的化学宇宙,而QM9从中筛选出了所有包含不超过9个重原子(Heavy Atoms)的稳定分子。
219+
* 分子总量: 约134,000个(具体为133,885个稳定有机分子)。
220+
* 原子构成: 仅包含碳(C)、氮(N)、氧(O)、氟(F)四种重原子,以及氢(H)。
221+
* 元素词汇表: 在MoFlow的QM9实现中,原子类型列表被严格定义为 ['C', 'N', 'O', 'F']
222+
* 最大尺寸: 9个重原子。这意味着在张量表示中,$N=9$。
223+
224+
每一个分子都经过了高精度的密度泛函理论(DFT)计算,具体是在B3LYP/6-31G(2df,p)水平上进行的。这些计算提供了几何、高能、电子和热力学性质。在MoFlow的研究中,以下性质被重点关注用于条件生成和属性优化任务:符号性质名称单位物理意义与生成模型的相关性HOMO最高占据分子轨道能量eV衡量分子的电子给体能力。HOMO能量越高,分子越容易失去电子。LUMO最低未占据分子轨道能量eV衡量分子的电子受体能力。LUMO能量越低,分子越容易接受电子。Gap ($\Delta \epsilon$)HOMO-LUMO能隙eV决定分子的化学硬度和光吸收特性。这是MoFlow进行属性优化的核心目标之一。$\mu$偶极矩 (Dipole Moment)Debye描述分子电荷分布的不对称性。生成具有特定极性的分子在材料设计中至关重要。$\alpha$各向同性极化率$Bohr^3$分子在外电场下的响应能力。$U_0$0K时的内能Hartree分子的热力学稳定性指标。$C_v$定容热容cal/mol K热力学性质,常作为回归任务的目标。
225+
226+
**ZINC250k**包含约249,455个分子图。这个子集的构建并非随机,而是遵循了严格的“类药性”(Drug-likeness)和“可合成性”标准,最初由Gómez-Bombarelli等人在其开创性的自动化学设计论文中确立,随后被MoFlow等后续研究广泛采用。
227+
筛选标准(Criteria)包括:
228+
* 重原子数限制: 分子大小限制在38个重原子以内。这远大于QM9,允许存在更复杂的环系和长链结构。
229+
* 元素多样性: 化学空间从CHNOF扩展到了包含卤素和磷硫等元素。MoFlow代码中定义的原子序数列表为:``,分别对应 C, N, O, F, P, S, Cl, Br, I。
230+
* LogP范围: 分子的脂水分配系数(LogP)需在特定范围内,以确保口服生物利用度。
231+
* 合成可及性(SA): 优先选择易于合成的分子。
232+
* 结构过滤: 剔除了包含大于8元环的分子,也剔除了带有电荷的复杂盐类形式,简化了图生成的拓扑难度。
233+
234+
235+
216236
## 3. 模型的实现
217237

218238
接下来开始讲解如何基于 PaddleScience 代码,来实现药物分子中结构重构的模型复,为实现moflow的模型构建,训练、推理以及评估,接下来仅对模型构建、训练、测试、评估等关键步骤进行阐述,而其余细节请参考 [API文档](../api/arch.md)

0 commit comments

Comments
 (0)