2024.3.2
基于Murcko骨架进行7折交叉验证划分
from dgllife.utils import ScaffoldSplitter
import pandas as pd
import numpy as np
# 假设df是一个包含SMILES字符串的Pandas DataFrame
df = pd.read_csv('path_to_your_dataset.csv')
# 初始化ScaffoldSplitter
splitter = ScaffoldSplitter()
# 获取基于Murcko骨架的分割索引
# 这次我们将整个数据集作为一个整体进行分割
scaffold_sets = splitter.split(df, smiles_column='SMILES', frac_train=1.0, frac_valid=0.0, frac_test=0.0, return_smiles=False)
# 实现7折交叉验证的逻辑
def scaffold_k_fold(df, scaffold_sets, k=7):
# 生成k个不同的训练和验证集组合
for i in range(k):
validation_idx = scaffold_sets[i::k] # 每k个折叠中的一个用作验证集
train_idx = [idx for j, idx_list in enumerate(scaffold_sets) if j % k != i for idx in idx_list] # 其余的用作训练集
yield train_idx, np.concatenate(validation_idx)
# 使用生成器遍历每一折
for fold, (train_idx, valid_idx) in enumerate(scaffold_k_fold(df, scaffold_sets)):
train_df = df.iloc[train_idx]
valid_df = df.iloc[valid_idx]
# 在这里,你可以添加模型训练和评估的代码
# 例如: train_model(train_df), evaluate_model(valid_df)
print(f"Fold {fold+1}: Training on {len(train_df)} samples, Validating on {len(valid_df)} samples")
数据多样性和分布
1.识别Murcko骨架:使用合适的化学信息学工具(如RDKit、Scopy、Open Babel或其他工具提取数据集中分子的Murcko骨架)来识别和提取分子的Murcko骨架。
2.数据集多样性分析:通过统计不同骨架的出现频率来分析化学数据集的多样性。
3.化学空间可视化:使用Molecule Cloud通过Scopy进行化学结构的可视化,以直观展示数据集中的化学多样性和分布。
4.分布比较:分析和比较训练集与测试集在化学空间中的分布,确保它们在进行模型训练和测试时具有相似的化学分布。
环形亚结构的频率分析
这是一种在化学信息学和药物设计领域常用的方法,用于识别和分析分子中环状部分的出现频率。这种分析帮助研究人员理解特定的环形亚结构如何影响分子的生物活性或物理化学属性。以下是实现这种分析的一般步骤,使用了化学信息学库RDKit,它是进行此类分析的常用工具之一:
-
安装RDKit:首先,确保安装了RDKit库。RDKit可以通过Conda进行安装,使用如下命令:
conda install -c conda-forge rdkit
数据准备:准备一个包含目标化合物SMILES字符串的数据集。SMILES(简化分子输入线性表示法)是一种用于描述化学结构的文本符号表示法。
加载数据:使用RDKit加载数据集,并将SMILES字符串转换为RDKit的分子对象。
识别环形亚结构:对每个分子,使用RDKit的环形亚结构搜索功能来识别所有环形亚结构。
统计频率:统计数据集中每个独特环形亚结构的出现频率。
结果分析:根据频率排序环形亚结构,并识别出现频率最高的亚结构。
以下是用Python和RDKit实现上述步骤的示例代码:
from rdkit import Chem
from rdkit.Chem import AllChem
from collections import defaultdict
import pandas as pd
# 假设有一个包含SMILES字符串的DataFrame
df = pd.DataFrame({'smiles': ['CCO', 'OCCO', 'CCCO', 'OCCC']}) # 示例数据
# 将SMILES转换为RDKit分子对象
molecules = [Chem.MolFromSmiles(smiles) for smiles in df['smiles']]
# 创建一个字典来存储环形亚结构的频率
substructure_freq = defaultdict(int)
# 对每个分子,找到所有的环形亚结构并更新频率
for mol in molecules:
# 找到分子中的所有环
ssr = Chem.GetSymmSSSR(mol)
for ring in ssr:
# 获取环形亚结构的SMILES表示
env = Chem.PathToSubmol(mol, ring)
smiles = Chem.MolToSmiles(env)
substructure_freq[smiles] += 1
# 将结果转换为按频率排序的列表
sorted_substructures = sorted(substructure_freq.items(), key=lambda x: x[1], reverse=True)
# 打印出现频率最高的环形亚结构
for substructure, freq in sorted_substructures[:10]: # 仅展示前10个
print(f"{substructure}: {freq}")
这个简单的例子展示了如何进行环形亚结构的频率分析,实际应用中可能需要根据具体的研究目标和数据集进行相应的调整。这种分析方法是理解分子特性和生物活性中环形部分作用的重要工具。
或者:
PySmash是一个用于化学结构分析的Python包,特别是用于识别分子中的显著片段和结构警示。它通过统计分析环形亚结构并利用Morgan指纹提取和定义这些结构警示。分析中包括了用户定义的参数,比如正样本中亚结构的最小频率、统计显著性的P值阈值以及基于亚结构分类的最小准确率,允许详细和具体地识别片段。想要获取更详细的使用指南和如何根据文章中的方法使用PySmash,请参考其官方GitHub仓库pySmash/README.md at master · kotori-y/pySmash · GitHub
OECD建模规定
- (26)Organization for Economic Co-operation and Development.OECD Principles for the Validation, for Regulatory Purposes, of (Quantitative) Structure-Activity Relationship Models. https://www.oecd.org/chemicalsafety/risk-assessment/37849783.pdf (accessed April 1, 2023).
相关Python库参考文献
- (24) Alves, V. M.; Auerbach, S. S.; Kleinstreuer, N.; Rooney, J. P.;
Muratov, E. N.; Rusyn, I.; Tropsha, A.; Schmitt, C. Curated Data In Trustworthy In Silico Models Out: The Impact of Data Quality on the Reliability of Artificial Intelligence Models as Alternatives to Animal Testing. Altern. Lab. Anim. 2021, 49 (3), 73−82.
(37)Yang, Z.-Y.; Yang, Z.-J.; Lu, A.; Hou, T.; Cao, D. Scopy: an integrated negative design python library for desirable HTS/VS database design. Briefings Bioinf. 2021, 22 (3), No. bbaa194.
(39)Mansouri, K.; Grulke, C. M.; Judson, R. S.; Williams, A. J. OPERA models for predicting physicochemical properties and environmental fate endpoints. J.Cheminform. 2018, 10, 10.
(44)Wang, M.; Zheng, D.; Ye, Z.; Gan, Q.; Li, M.; Song, X.; Zhou,J.; Ma, C.; Yu, L.; Gai, Y. Deep Graph Library: A Graph-Centric,Highly-Performant Package for Graph Neural Networks,arXiv.1909.01315, arXiv.org e-Print archive, https://arxiv.org/abs/1909.01315. 2020.
(45)Li, M.; Zhou, J.; Hu, J.; Fan, W.; Zhang, Y.; Gu, Y.; Karypis, G.DGL-LifeSci: An Open-Source Toolkit for Deep Learning on Graphs in Life Science. ACS Omega 2021, 6 (41), 27233−27238.
模型应用域
(52)Tropsha, A.; Golbraikh, A. Predictive QSAR modeling workflow, model applicability domains, and virtual screening. Curr. Pharm. Des. 2007, 13 (34), 3494−3504.
(53)Weaver, S.; Gleeson, M. P. The importance of the domain of applicability in QSAR modeling. J.Mol.Graph. Model. 2008, 26 (8), 1315−1326.