![](https://cdn1.deepmd.net/static/img/d7d9741bda38a158-957c-4877-942f-4bf6f81fcc63.png?x-oss-process=image/resize,w_100,m_lfit)
![](https://cdn1.deepmd.net/bohrium/web/static/images/level-v2-1.png?x-oss-process=image/resize,w_50,m_lfit)
背景概述
对映选择性(enantioselectivity)是有机化学重要的研究主题之一. 在有机反应中, 手性催化剂的对映选择性往往与反应过渡态中一些重要的非共价相互作用(non-covalent interactions, NCIs)有关. 以Birman等报道的酰基转移反应为例:
在Birman等假设的机理中, 手性催化剂的对映选择性由-堆积或-阳离子堆积作用介导: 特定手性的过渡态因位阻作用破坏了芳环的平行取向, 不利于堆积作用的形成.
本次上机作业中, 我们将以线性回归模型定量地探索所用手性催化剂的性质对对映选择性的影响, 试图探索:
- 哪些性质参数会影响对映选择性?
- 如何优化性质参数可以提升对映选择性 (例如减少还是增加某参数)?
为此, 我们将考察如下图所示的模型体系:
其中, 底物的芳香环(A, a, b)按照特定的几何约束条件与催化剂(D, c, d)排列成复合物, 而芳环与底物的其余分子骨架(包含醇羟基和烷基)在图中箭头所示位置相连.
数据探索与清洗
数据的初步探索
在数据集nci_birman.csv
中, 包含如下三组(用作特征的)参数:
- -堆积作用参数:
d_pi_d
,d_pi_D
,e_pi_d
,e_pi_D
. 根据特定的电子结构计算方法(B97-D/def2TZVP水平), 对复合物进行几何优化, 给出几何结构信息与互作能(复合物能量减去各组分能量和). 其中:- 每组复合物中, 底物芳环由于具体朝向的不同, 存在2种可能构象(比如下图的例子), 分别以后缀
_d
和_D
作区分; - 在计算中, 对底物与催化剂分子的两个芳环施加约束条件, 使二者完全“正对彼此”(环平面平行, 且两环中心的连线与环平面垂直). 此时, 我们找到使电子能量(前缀
e_
, 单位kcal/mol)最低的、也就是使复合物最稳定的环间距(前缀d_
, 单位Å)
- 每组复合物中, 底物芳环由于具体朝向的不同, 存在2种可能构象(比如下图的例子), 分别以后缀
- 烷基几何参数:
L_Alk
,B1_Alk
,B5_Alk
, 分别代表长度、最小宽度、最大宽度. - 芳环几何参数:
L_Ar
,B1_Ar
,B5_Ar
, 分别代表长度、最小宽度、最大宽度. 后两组参数称为Sterimol参数, 其具体含义可从下图中做简单的理解:
我们的线性回归模型将以上述参数作为特征(在化学信息学中, 这些特征也常称为描述符, descriptor), 试图预测特定催化剂针对特定底物的对映选择性. 在数据集中, 选择性以对映比描述, 这是一个实验可测的量. 通过热力学公式, 我们可以将其与两种对映体的活化自由能之差之间建立定量联系:
数据的清洗与加工
对于堆积相互作用参数, 我们不妨对其进行降维: 取两个可能构象_d
和_D
的参数加权和:
其中, 权重取为(按电子能量计算的)Boltzmann因子:
任务1: 对数据nci_birman
进行进一步加工处理.
- 编写函数
prepare_data()
, 完成数据的初步清洗.- 输入:
- 直接读取自
csv
的原始数据集in_df
; - 用于进行加权和与计算的温度
temperature
, 以为单位.
- 直接读取自
- 返回: 处理好的特征和标签. 其中:
- 特征为
pd.DataFrame
格式, 包括:- 降维后的(加权)参数, 以及二者的交叉项(乘积), 分别命名为
d_pi_w
,e_pi_w
与de_pi_w
; - 所有原有的Sterimol几何参数, 名称不变.
- 降维后的(加权)参数, 以及二者的交叉项(乘积), 分别命名为
- 标签为
pd.Series
格式, 为自由能差, 单位取为kcal/mol, 命名为delta_delta_G
. 这里给出单位换算因子: .
- 特征为
- 输入:
提示
- 注意一栏的单位, 例如表格中若该栏的值为, 则实际代表, 或说.
完成该函数后, 请运行下面两个代码块先做初步检查.
完成初步检查后, 可以运行下面的代码块对该函数进行测试. 测试通过情况将关系到该任务的得分. 请勿修改该代码块中的任何内容.
拆分与归一化
原数据没有直接分出训练集和测试集, 我们可以用sklearn.model_selection.train_test_split
对数据集进行手拆分, 训练 : 测试 = 23 : 5.
随后, 进行数据的归一化(重标度)处理, 以使各个特征维度量纲一致.
任务2: 在各个数据集上分别对特征作均值-方差归一化:
返回(归一化后的)训练集与测试集. 注意: 测试集上归一化时, 正确的做法是使用训练集上算出的均值和方差, 而非在测试集上重新计算.
- 任务2.1: 编写函数
normalize()
, 完成数据特征的归一化.- 输入:
- 训练集
X_train
; - 其它数据集
other_datasets
, 以列表打包起来.
- 训练集
- 返回: 经过归一化处理的
X_train_normalized
以及其它数据集normalized_datasets
(以列表打包起来). 为了和StandardScaler
保持一致, 请确保返回值均为np.array
格式, 例如对某DataFrame
类型的变量df
使用格式转换np.array(df)
.
- 输入:
- 任务2.2: 在以下代码块的注释区回答问题: 为什么均值-方差归一化需要在训练集和测试集上分开进行? 如果先归一化再拆分, 会导致什么后果?
提示
- 归一化(在
sklearn
中叫做标准化, standardization)既可以像上机实习1演示的那样手动计算, 也可以通过函数sklearn.preprocessing.StandardScaler
实现. - 警惕机器学习模型在数据集上“作弊”.
完成该函数后, 请运行下面2个代码块先做初步检查.
完成初步检查后, 可以运行下面的代码块对该函数进行测试. 测试通过情况将关系到该任务的得分. 请勿修改该代码块中的任何内容.
模型训练与评估
我们在9个特征与23个训练样本上训练一个线性回归模型, 并评估其在5个测试样本上的预测表现.
任务3: 搭建模型, 完成训练与评估.
- 任务3.1: 编写函数
train_model()
, 实现模型训练.- 输入: 训练集
X_train, y_true_train
. - 返回: 一个训练好的线性回归模型
sklearn.linear_model.LinearRegression
.
- 输入: 训练集
- 任务3.2: 编写函数
evaluate_model()
, 实现预测图、与RMSE值的报告(作图用的函数plot_prediction()
已经给出).- 输入:
- 模型
model
与数据集X
,y_true
; - 评估模式
mode
, 可在plot
和metrics
中二选一.
- 模型
- 返回: 如果评估模式为
plot
, 则作预测图、不返回任何内容; 如果评估模式为metrics
, 则返回RMSE与值.
- 输入:
- 任务3.3: 调用你编写的函数
evaluate_model()
, 完成下述任务:- 将训练集上的预测图保存为文件
pred.png
, 以备提交; - 将测试集上的RMSE值与值打印出来.
- 将训练集上的预测图保存为文件
完成任务3.1后, 请运行下面的代码块做初步检查. 可以看到, 训练集上的RMSE值应当与0很接近.
检查完成后, 你可以继续完成任务3.2: 结合给出的函数plot_prediction()
(已经给出, 取自上机实习1), 编写函数evaluate_model()
.
完成该函数后, 你可以继续完成任务3.3: 运行下面的代码块. 我们先在训练集上作出预测图, 再报告测试集上的RMSE与.
结果分析
任务4: 运行下面的代码块, 根据参数正负, 考察各个因素对对映选择性的影响, 在注释的答题区中写下你的分析.
- -堆积作用如何影响对映选择性? (从几何结构与能量两方面考虑)
- 烷基的几何参数如何影响对映选择性? 和芳基几何参数相比, 总体看, 谁的影响更大?
提示
- 9列特征分别为:
d_pi_w
,e_pi_w
,de_pi_w
, 表征-堆积结构的距离或能量参数;L_Alk
,B1_Alk
,B5_Alk
, 表征烷基的几何参数;L_Ar
,B1_Ar
,B5_Ar
, 表征芳基的几何参数.
- 越大, 表明两种对映异构体的动力学活性相差越大, 于是对映选择性越好.
![](https://bohrium.oss-cn-zhangjiakou.aliyuncs.com/article/3/28a8f1190b014961942c3f44218323c8/29a4b29e-4a08-4dba-84f3-decf91b22376.png)
![](https://cdn1.deepmd.net/bohrium/web/static/images/level-v2-3.png?x-oss-process=image/resize,w_50,m_lfit)
![](https://cdn1.deepmd.net/static/img/3aebf081da38a158-957c-4877-942f-4bf6f81fcc63.png)
![](https://cdn1.deepmd.net/bohrium/web/static/images/level-v2-1.png?x-oss-process=image/resize,w_50,m_lfit)
![](https://cdn1.deepmd.net/static/img/d7d9741bda38a158-957c-4877-942f-4bf6f81fcc63.png?x-oss-process=image/resize,w_100,m_lfit)
![](https://cdn1.deepmd.net/bohrium/web/static/images/level-v2-1.png?x-oss-process=image/resize,w_50,m_lfit)
![](https://cdn1.deepmd.net/static/img/d7d9741bda38a158-957c-4877-942f-4bf6f81fcc63.png?x-oss-process=image/resize,w_100,m_lfit)
![](https://cdn1.deepmd.net/bohrium/web/static/images/level-v2-1.png?x-oss-process=image/resize,w_50,m_lfit)