本文主要介绍Ai4Chemistry相关知识点补充
首先SMILES是其主要方法,是一种将化学分子用ASCII字符表示的方法,
SMILES编码规则涵盖了原子、离子、相邻与分支、环状结构、单键/双键/三键/芳香键、三维结构以及旋光异构等多个方面。以下是SMILES将分子转化为序列数据的主要方法:
1. 原子和离子
原子:由原子缩写符号表示,如C代表碳原子,O代表氧原子等。
离子:在原子符号后加上电荷数,并用方括号括起来,如[Fe+++]表示铁离子。
2. 相邻与分支
相邻原子:在SMILES字符串中,相邻的原子表示彼此相连接。
分支:通过括号来表示,如CC(=O)C表示一个碳原子连接着一个羰基(C=O)和一个碳原子。
3. 环状结构
环状结构在SMILES中被断开成线性形式,并在断开键两端的原子上用数字表示(从1开始),如环己烷表示为C1CCCCC1。如果有多处断裂,则使用2、3等数字进行标记。
4. 键的类型
单键:在SMILES中通常省略不用表示。
双键:由“=”符号表示,如C=O表示羰基。
三键:由“#”符号表示。
芳香键:按单键处理,但有时会使用交替的单键和双键来表示芳香烃环状结构(取决于软件或库的实现)。
5. 三维结构和旋光异构
三维结构:同位素使用方括号和同位素质量数表示,如[13C]。双键的几何异构由“/”和“\”表示两端单键的方向。
旋光异构:由“@”或“@@”表示S对映异构体或R对映异构体。
6. 转换过程
SMILES字符串的生成通常依赖于化学信息学软件和库,如RDKit、OpenBabel等。这些工具能够解析分子的结构,并根据SMILES编码规则将其转化为相应的序列数据。
7. 应用场景
SMILES编码在化学信息学、药物设计、生物信息学等领域有广泛应用。它使得分子结构可以以文本形式存储、传输和处理,便于进行大规模的数据分析和计算。
8. 示例
假设有一个分子结构为乙酸(acetic acid),其SMILES编码为CC(=O)O。在这个字符串中,“CC”表示两个相连的碳原子,“(=O)”表示一个双键连接的氧原子(即羰基),“O”表示一个羟基氧原子。这个字符串准确地描述了乙酸分子的结构。
相关化学反应也可以用其表示,反应物和生成物之间用“>>”联系
对于结构复杂的分子,例如苯环上链接其他不同的分子式,可以用不同的向量来表示不同的结构,再将其结合到一块,实现分子到代码的转化。
RDkit也是强大的化学辅助工具
主要功能
分子表示:
RDKit采用SMILES(简化分子输入线式表示)和InChI(国际化唯一化学标识符)等标准来表示分子,使得分子数据可以方便地存储、搜索和比较。
提供了丰富的功能来表示和操作分子结构,如从SMILES字符串创建分子对象,计算各种分子描述符(如分子量、LogP、极化度等)。
几何优化:
内置的分子力学引擎可以计算分子的最优几何构型,这对于预测分子的物理特性至关重要。
子结构查询:
快速查找数据库中的特定分子模式,这是在大规模化合物库中筛选潜在活性物质的关键功能。
化合物描述符向量化:
通过对化合物进行一系列的物理化学性质计算,生成描述性统计特征向量,实现化合物的定量描述。这些描述符包括亲脂性、极性、氢键能力等,能够全面地表征化合物的性质。
部分结构检索:
允许用户根据分子的部分结构特征进行快速检索,对于寻找具有特定生物活性的化合物、设计新的药物等应用具有重要意义。
药物发现:
通过子结构匹配和分子性质预测,帮助研究人员从大量化合物中筛选出具有潜在药理活性的分子。
材料科学:
对于新材料的设计和评估,RDKit可以计算关键的化学属性,如极性、电荷分布等。
化学数据库管理:
能够有效地索引和搜索化学结构,对大型数据库进行管理和维护。
机器学习集成:
支持将化学描述符与各种机器学习算法结合,以构建预测模型,如定量构效关系(QSAR)模型。
机器学习按照目标可以分为分类任务(classification)和回归(regression)任务两大类。所谓分类任务,就是模型预测的结果是离散的值,例如类别;那么,回归任务中,模型预测的结果就是连续的值,例如房价等等。在本次竞赛中,我们需要预测的目标是反应的产率,是0-1之间的一个连续的数值,所以是一个回归任务。
决策树分为分类型决策树和回归型决策树,划分节点的值应该尽可能相同,以提高最终效率。
最终代码的补充词汇表:
<PAD> <CLS> <MASK>
<SEP>
[UNK]
>
C
c
1
(
-
2
s
N
=
)
n
Br
3
O
[
]
[nH]
[C@H]
/
\
[C@@H]
[C@]
o
4
[C@@]
5
6
7
[n+]
.
[Br-]
S
I
F
Cl
[O-]
#
P
[Na+]
[N+]
[Cl-]
8
[Si]
[N-]
[18F]
9
[I-]
B
[S+]
[2H]
[P+]
[125I]
%10
%11
[n-]
[B-]
[O]
[o+]
[N@@+]
[N@+]
[PH]
[se]
[Se]
[s+]
[Li+]
[P@]
[P@@]
[3H]
[K+]
[OH-]
[te+]
[se+]
[Te]
[S@+]
[BH2-]
[11CH3]
[11C]
[Cl+3]
[N@@]
[S-]
[C+]
[P@+]
[C-]
[Zn+2]
[Ca+2]
[Mg+2]
[SeH]
[BH-]
[SH2]
[TeH2]
[SiH4]
[N@]
[14CH2]
[Ag]
[S@@+]
[I+]
[MgH2]
[125IH]
[Se+]
[As]
[SiH2]
[Ra]
[IH2]
[P-]
[Na]
[NH-]
[Cs]
[Zn]
[Li]
[As+]
[te]
[131I]
[Ag+]
p
[Al-3]
[Rb+]
[13CH]
[11CH]
[11CH2]
[14c]
[14C@@]
[127I]
[Mg]
[14C]
[123I]
[124I]
[F-]
[14CH3]
[135I]
%12
[NH+]
[76Br]
[32PH]
[35S]
b
[73Se]
[11C@@H]
[Se-]
[c+]
[14C@H]
[18OH]
[SH]
[S@@]
[Cs+]
[He]
[O+]
[nH+]
[NH2+]
[32P]
[Zn+]
[BH3-]
[I+3]
[Si-]
[SH+]
[19F]
[Br+2]
[I+2]
[Al+3]
[123I-]
[131I-]
[127Xe]
[133Xe]
[89Sr+2]
[N]
[82Rb+]
[75Se]
[Rb]
[81Kr]
[18F-]
[13NH3]
[K]
[Cl+2]
[Zn-2]
[SeH2]
[AsH3]
[Kr]
[Xe]
[S@]
[cH-]
[NH4+]
[Al]
[Si@]
[15n]
[SH-]
[SiH]
[11c]
[OH]
[c-]
[18FH]
[123IH]
[13c]
[13cH]
[14cH]
[Cl+]
[Sr+2]
[CH-]
[Bi]
[B]
[Ba+2]
[Bi+3]
[SiH-]
[b-]
[H+]
[13C]
[OH+]
[14CH]
[15nH]
[CaH2]
[LiH]
[C]
[Ca]
[42K+]
[123Te]
[S-2]
[223Ra+2]
[S]
[Ra+2]
[22Na+]
[125I-]
[85Sr+2]
[PH2]
[SrH2]
[15OH2]
[47Ca+2]
[85SrH2]
[45Ca+2]
[B@@-]
[B@-]
[17F]
[PH2+]
[11C-]
[Mg+]
[NaH]
[P@@+]
[SiH3-]
[P-3]
[KH]
[Be+2]
[NH3+]
[Ag-4]
[18O]
[14C@@H]
[CH]
[CH2]
[O-2]
[124I-]
[As-]
[Ba]
[223Ra]
[82Rb]
[76BrH]
[AsH]
[131Cs]
[Ru-2]
[Cu+]
[Cu+2]
[Co+2]
[Fe+2]
[Pd]
[Pd-2]
[Sc+3]
[In+3]
[SiH3]
[NH2-]
%13
[Fe+3][Sb-]
[Cu]
[Pt+4]
[Ni]
[PH+]
[Pd-]
[H]
[H-]
[Ru+2]
[Rh+]
[Ru+4]
[Ni+2]
[Mn+2]
[Mo]
[Pd+2]
[La+3]
[Cr]
[Au]
[Pd+]
[Pd-3]
[Mn]
最后补充Rnn
RNN(Recurrent Neural Network),即循环神经网络,是一种特殊的神经网络结构,主要用于处理序列数据。与传统的前馈神经网络(Feedforward Neural Network)不同,RNN 能够在处理序列的每个元素时保留对前面元素的信息,这使得它特别适合处理那些元素之间有时间或空间依赖性的任务,比如时间序列分析、文本生成、语音识别、机器翻译等。
RNN 的基本结构
RNN 的基本结构包括输入层、隐藏层和输出层,但与传统的神经网络不同的是,RNN 在隐藏层之间也建立了连接,这种连接允许信息从一个时间步传递到下一个时间步。具体来说,RNN 的隐藏层不仅接收当前时间步的输入,还接收来自上一个时间步隐藏层的输出。这样,RNN 就能够捕获序列中的历史信息。
工作原理
在 RNN 中,每个时间步的隐藏层状态 h_t 是由当前时间步的输入 x_t 和上一个时间步的隐藏层状态 h_{t-1} 共同决定的。这个过程可以表示为:
ht=f(Wxhxt+Whhht−1+bh)
其中,Wxh 和 Whh 是权重矩阵,bh 是偏置项,f 是激活函数(如 tanh 或 ReLU)。
然后,隐藏层状态 h_t 被用于计算当前时间步的输出 y_t:
yt=g(Whyht+by)
其中,Why 是权重矩阵,by 是偏置项,g 是输出层的激活函数(如 softmax,用于分类任务)。
RNN 的变体
尽管 RNN 在处理序列数据方面表现出色,但它也面临着梯度消失或梯度爆炸的问题,这限制了它学习长期依赖关系的能力。为了解决这个问题,研究者们提出了 RNN 的多种变体,包括:
LSTM(Long Short-Term Memory):通过引入门控机制(遗忘门、输入门、输出门)来控制信息的流动,LSTM 能够有效地学习长期依赖关系。
GRU(Gated Recurrent Unit):作为 LSTM 的一个简化版本,GRU 减少了门的数量(只有两个门:更新门和重置门),同时保持了 LSTM 的大部分性能优势,同时计算更加高效。