Mendelevium
Drug Design
Field Knowledge
Biology
Physics
Machine Learning & AI
Active Learning
Boltz-2
Interpretability
Mol2Image
Representations
Molecular Dynamics
Free Energy Calculation
Modeling Tools
QM
Nano Polymers
Software & Tools
Techniques
about
Home
Contact
Copyright © 2025 Xufan Gao | Academic Research Blog
Home
>
Machine Learning & AI
> Mol2Image
A Bunch of Biophysics is Loading ...
Mol2Image
Image-based Molecular Representation Learning in Drug Development: A Comprehensive Review of Methods, Implementation, and Applications
基于图像的分子表征学习在药物开发中的应用:方法、实现与应用的综合综述 I. 引言 A. AI驱动的药物发现中对先进分子表征的需求 人工智能(AI)的应用极大地推动了药物发现领域的发展。传统上,AI依赖于多种分子表征方式,如一维指纹图、二维描述符、用于自然语言处理(NLP)任务的简化分子线性输入系统(SMILES)字符串,以及用于图神经网络(GNN)的分子图。这些表征方法是基础性的,但在捕捉对药物开发流程中高精度预测至关重要的显式、细致的结构信息或复杂生物学特征方面可能存在局限性[^1]。例如,分子指纹图谱通常“未能反映分子的显式结构信息”,而NLP和GNN方法虽然功能强大,但在“准确捕捉分子特性和重要生物学特征方面的表达能力可能有限”[^1]。 每种化学物质固有的独特视觉表征为AI驱动的分析提供了一个直观且可能更强大的途径[^1]。向基于图像的方法论转变的驱动力来自几个优势:(1)通过分析图像中原子类型、其相对位置以及它们之间的连接,有效识别不同的化学物质;(2)能够利用计算机视觉(CV)领域中丰富、成熟且复杂的既有技术;(3)有潜力捕捉和提取通过其他表征形式难以获取的复杂潜在结构模式和属性关系[^1]。以往方法在全面编码分子信息方面的不足,直接推动了将视觉表征学习作为一种更具表现力的替代方案的探索和发展。 本报告全面综述了将分子数据转换为多种基于图像的模态的当代和新兴技术。具体而言,它将涵盖二维图像(静态和多通道)、三维表征(包括三维构象的二维快照、体素网格、基于表面的模型和点云)以及序列/视频格式。本报告将深入探讨图像生成的方法论,详细介绍基于Python的实现(重点是关键库和可用的代码示例),探索卷积神经网络(CNN)在药物发现中对这些表征的应用,并提供相关的学术引文。 B. 报告的范围和方法结构 本报告旨在系统地探索分子到图像转换的领域,目标是为研究人员提供一份详细、技术性和可操作的指南。 探索将从二维(2D)分子图像表征开始,涵盖从SMILES字符串生成的标准2D描绘,以及将显式化学特征编码到图像层中的更高级多通道图像。 随后,报告将转向三维(3D)分子表征。此部分内容丰富,将详细讨论: 源自三维构象异构体的二维快照图像,捕捉多个视角。 适用于三维CNN的体素化网格表征。 关注分子拓扑结构和表面理化性质的基于表面的模型。 将分子表示为具有相关特征的三维坐标集的直接点云方法。 接着将探讨新兴的分子序列和视频表征领域,重点关注如VideoMol等旨在捕捉分子动力学的技术。 一个专门的部分将涵盖多模态及其他相关方法,包括图像数据与其他模态(文本、图)的整合、迁移学习策略和自监督学习范式。 对于每种不同的模态,讨论将强调: 生成技术:将分子结构(主要来自SMILES、SDF或PDB格式)转换为目标图像类型的基本原理和算法。 关键工具和Python库:实用性地关注广泛使用的工具,如RDKit、Maestro、PyMOL,以及专门的库如DeepChem和libmolgrid。 实现细节:在可获得的情况下,将提供对公共代码库的引用(例如,来自[^1]的GitHub链接)和说明性的Python代码片段。 CNN应用:具体示例说明这些图像表征如何与CNN和几何深度学习(GDL)模型结合,用于各种药物发现任务(例如,定量构效关系(QSAR)建模、吸收、分布、代谢、排泄和毒性(ADMET)预测、药物-靶点相互作用(DTI)识别)。 广义计算机视觉领域的快速发展和成功是基于图像的化学信息学的重要催化剂。CNN架构的成熟以及为通用视觉任务开发的预训练模型的可用性,大大降低了将这些技术应用于化学数据的“活化能”[^1]。这种技术的迁移是一个反复出现的主题。 报告最后将对这些模态进行比较总结,强调它们各自的优势、局限性和计算考量,随后展望未来的研究轨迹。基于图像的表征的探索是整合多样化数据类型的更大趋势的一部分。随着这些技术的成熟,它们与其他模态(如基因组数据、蛋白质组信息、文本描述[^1]和分子图)的融合,有望实现对药物行为和结构-性质关系更全面、更细致的理解。 II. 二维(2D)分子图像表征 二维图像是分子最直接的视觉表征,通常源自SMILES字符串。它们具有简单和直观的特点,使其成为分子设计和分析,特别是高通量应用中一个引人注目的选择[^1]。 A. 二维分子图像的生成 1. 使用RDKit从SMILES生成 RDKit: 解析SMILES、生成二维坐标和渲染分子图像的主要库[^11]。其GitHub仓库是 https://github.com/rdkit/rdkit[^1]。 RDKit是一个核心的开源化学信息学工具包,广泛用于将SMILES字符串转换为二维分子图像[^1]。一般的工作流程包括解析SMILES字符串以创建RDKit Mol对象,生成用于描绘的二维坐标,然后将此布局渲染成图像格式,通常是Python中的PIL Image对象[^1]。 关键RDKit模块和函数: Chem.MolFromSmiles():将SMILES字符串解析为RDKit Mol对象[^2]。 Draw.MolToImage():从Mol对象生成PIL Image。它允许基本的自定义,如图像大小、kekulization和楔形键的显示[^4]。 Draw.MolDraw2DCairo 和 Draw.MolDraw2DSVG:高级2D绘图类。MolDraw2DCairo生成光栅图像(如PNG),MolDraw2DSVG生成矢量图像。它们提供更细致的绘图选项控制[^5]。 rdDepictor.Compute2DCoords():生成用于描绘的2D坐标。使用rdDepictor.SetPreferCoordGen(True)有助于实现更一致的分子朝向[^3]。AllChem.Compute2DCoords()是另一种选择[^11]。 针对CNN输入的关键参数和自定义: 图像大小:一致性对CNN输入至关重要。 DEEPScreen使用200x200像素[^12]。 ImageMol默认为224x224像素[^13]。 Chemception通常使用80x80像素[^14]。 RDKit的MolToImage接受一个size元组。MolDraw2DCairo则在初始化时指定宽度和高度。 分辨率和细节: DrawingOptions.dotsPerAngstrom(用于MolToImage)控制像素密度相对于分子大小的比例[^16]。 MolDrawOptions.fixedBondLength可以固定键在图像中的像素长度,以实现一致的缩放[^10]。 原子和键的高亮: highlightAtoms和highlightBonds参数可用于MolToImage以及绘图类的DrawMolecule方法[^4]。 highlightColor(用于MolToImage)或MolDrawOptions.highlightColour设置高亮颜色[^4]。 MolDrawOptions.atomColourPalette或MolDraw2D.DrawMolecule(highlightAtomColors={atom_index: (R,G,B)})允许自定义特定原子的颜色[^7]。 原子和键的颜色: MolDrawOptions.setAtomPalette({atom_index: (R,G,B)})可以设置自定义的原子颜色调色板[^10]。RDKit Cookbook也展示了使用useBWAtomPalette()生成黑白图像的方法[^6]。 图例 (Legends): DrawMolecule中的legend参数或MolsToGridImage中的legends参数可以添加文本注释[^4]。 MolDrawOptions如legendFontSize和legendFraction控制图例外观[^10]。 Python代码片段 (基础 MolToImage): from rdkit import Chem from rdkit.Chem.Draw import MolToImage mol = Chem.MolFromSmiles("CN1C=NC2=C1C(=O)N(C(=O)N2C)C") # Caffeine img = MolToImage(mol, size=(256, 256)) # img.save("caffeine_2d.png") (概念性, 基于[^4]) Python代码片段 (MolDraw2DCairo 带高亮): Python from rdkit import Chem from rdkit.Chem.Draw import rdMolDraw2D from io import BytesIO # 用于在内存中处理图像数据 # from PIL import Image # 用于查看或保存图像 mol = Chem.MolFromSmiles("Cc1ccccc1O") # o-cresol # 高亮甲基所在的子结构 (假设原子0是甲基碳,原子1是与之相连的芳香碳) # 精确的索引取决于SMILES的规范化和原子顺序 # 为了更稳健地高亮,可以使用子结构匹配获取索引 substructure = Chem.MolFromSmarts("c(C)O") # 带有甲基和羟基的芳香碳 match = mol.GetSubstructMatch(substructure) drawer = rdMolDraw2D.MolDraw2DCairo(300, 300) # width, height # drawer.drawOptions().addAtomIndices = True # 可选:添加原子索引 # drawer.drawOptions().setHighlightColour((0.0, 0.0, 1.0, 0.5)) # 蓝色, 0.5透明度 # 自定义原子颜色示例 atom_colors = {} if match: for atom_idx in match: if mol.GetAtomWithIdx(atom_idx).GetSymbol() == 'O': atom_colors[atom_idx] = (1.0, 0.0, 0.0) # 子结构中的氧原子用红色 elif mol.GetAtomWithIdx(atom_idx).GetSymbol() == 'C': atom_colors[atom_idx] = (0.0, 0.0, 1.0) # 子结构中的碳原子用蓝色 drawer.DrawMolecule(mol, highlightAtoms=match, highlightAtomColors=atom_colors, legend="o-cresol with substructure highlight") drawer.FinishDrawing() png_data = drawer.GetDrawingText() # 获取PNG数据 (bytes) # with open("o_cresol_highlighted.png", "wb") as f: # f.write(png_data) # pil_image = Image.open(BytesIO(png_data)) # pil_image.show() (概念性, 基于[^6]) ImageMol实现 官方PyTorch实现托管在GitHub上的HongxinXiang/ImageMol[^13]。用于图像生成的关键脚本包括smiles2img_pretrain.py和dataloader/image_dataloader.py[^13]。 def smiles_to_image(smis, size=224, save_path=None): try: mol = Chem.MolFromSmiles(smis) img = Draw.MolsToGridImage([mol], molsPerRow=1, subImgSize=(size, size)) if save_path is not None: img.save(save_path) return img except: return None 以下是实现这一功能的代码: import os import torch import torchvision.models as models import torchvision.transforms as transforms from rdkit import Chem from rdkit.Chem import Draw import requests from tqdm import tqdm from PIL import Image import tempfile def smiles_or_mol_to_latent(smiles_or_mol, model_name="ResNet18", image_size=224, pretrained_url="https://drive.usercontent.google.com/download?id=1wQfby8JIhgo3DxPvFeHXPc14wS-b4KB5&export=download&authuser=0", cache_dir=None, force_download=False): """ 将 SMILES 字符串或 RDKit Mol 对象转换为 latent feature 参数: smiles_or_mol: SMILES 字符串或 RDKit Mol 对象 model_name: 模型架构名称,默认为 "ResNet18" image_size: 图像大小,默认为 224x224 pretrained_url: 预训练模型的下载链接 cache_dir: 缓存目录,用于存储下载的模型 force_download: 是否强制重新下载模型 返回: latent_feature: 提取的 latent feature,形状为 (batch_size, feature_dim) """ # 确保缓存目录存在 if cache_dir is None: cache_dir = os.path.join(tempfile.gettempdir(), "imagemol_cache") os.makedirs(cache_dir, exist_ok=True) # 定义模型文件路径 model_path = os.path.join(cache_dir, "ImageMol.pth.tar") # 处理输入为 SMILES 字符串的情况 if isinstance(smiles_or_mol, str): mol = Chem.MolFromSmiles(smiles_or_mol) if mol is None: raise ValueError(f"无法解析 SMILES 字符串: {smiles_or_mol}") else: mol = smiles_or_mol # 生成分子图像 img = Draw.MolsToGridImage([mol], molsPerRow=1, subImgSize=(image_size, image_size)) img_path = os.path.join(cache_dir, "temp_molecule.png") img.save(img_path) # 下载预训练模型(如果需要) if force_download or not os.path.exists(model_path): print("开始下载预训练模型...") download_file_from_google_drive(pretrained_url, model_path) print(f"模型已下载到: {model_path}") # 加载模型 model = load_pretrained_model(model_name, image_size=image_size) # 加载预训练权重 try: checkpoint = torch.load(model_path, map_location=torch.device('cpu')) model.load_state_dict(checkpoint['model_state_dict']) print("=> 成功加载预训练权重") except Exception as e: print(f"=> 加载预训练权重失败: {e}") print("尝试直接从 torchvision 加载预训练权重...") model = load_pretrained_model(model_name, image_size=image_size, pretrained=True) # 设置为评估模式 model.eval() # 图像预处理 transform = transforms.Compose([ transforms.Resize((image_size, image_size)), transforms.ToTensor(), transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]) ]) # 加载并预处理图像 img = Image.open(img_path).convert('RGB') img_tensor = transform(img).unsqueeze(0) # 获取 latent feature with torch.no_grad(): # 移除最后一层全连接层以获取 latent feature embedding_layer = list(model.children())[:-1] embedding_model = torch.nn.Sequential(*embedding_layer) latent_feature = embedding_model(img_tensor) # 调整形状为 (batch_size, feature_dim) latent_feature = latent_feature.squeeze(-1).squeeze(-1) return latent_feature def load_pretrained_model(model_name="ResNet18", image_size=224, pretrained=False): """加载预训练模型""" if model_name == "ResNet18": model = models.resnet18(pretrained=pretrained) # 修改最后一层以适应任何输出类别数 model.fc = torch.nn.Linear(model.fc.in_features, 2) elif model_name == "ResNet34": model = models.resnet34(pretrained=pretrained) model.fc = torch.nn.Linear(model.fc.in_features, 2) elif model_name == "ResNet50": model = models.resnet50(pretrained=pretrained) model.fc = torch.nn.Linear(model.fc.in_features, 2) else: raise ValueError(f"不支持的模型架构: {model_name}") return model def download_file_from_google_drive(url, destination): """从 Google Drive 下载文件""" # 提取文件 ID file_id = url.split('/')[-2] if 'view' in url else url.split('/')[-1] base_url = 'https://docs.google.com/uc?export=download' session = requests.Session() response = session.get(base_url, params={'id': file_id}, stream=True) # 检查是否需要确认下载 for key, value in response.cookies.items(): if key.startswith('download_warning'): params = {'id': file_id, 'confirm': value} response = session.get(base_url, params=params, stream=True) break # 下载文件 CHUNK_SIZE = 32768 with open(destination, 'wb') as f: with tqdm(unit='B', unit_scale=True, unit_divisor=1024) as bar: for chunk in response.iter_content(CHUNK_SIZE): if chunk: # filter out keep-alive new chunks f.write(chunk) bar.update(len(chunk)) 这个函数的主要功能和特点: 自动处理输入:可以接受 SMILES 字符串或 RDKit Mol 对象作为输入 自动模型下载:首次调用时会自动从 Google Drive 下载预训练模型,并缓存到本地 特征提取:使用预训练模型将分子图像转换为固定维度的 latent feature 缓存机制:避免重复下载模型,提高后续调用效率 错误处理:包含输入验证和错误处理,确保函数健壮性 使用示例: # 从 SMILES 获取 latent feature smiles = "CCO" # 乙醇的 SMILES feature = smiles_or_mol_to_latent(smiles) print(f"特征形状: {feature.shape}") # 从 RDKit Mol 对象获取 latent feature from rdkit import Chem mol = Chem.MolFromSmiles("CCO") feature = smiles_or_mol_to_latent(mol) print(f"特征形状: {feature.shape}") 这个函数默认使用 ResNet18 架构,输出的 latent feature 维度为 512。如果需要其他架构,可以通过 model_name 参数指定。 2. Chemception多通道二维图像 Chemception实现 https://sharifsuliman.medium.com/designing-a-convolutional-neural-network-for-cannabis-machine-learning-part-1-e5a2d8f667af Goh等人的原始工作(2017)[^15]奠定了基础。 一个公开的实现是GitHub上的Abdulk084/Chemception[^1],它使用Keras和TensorFlow。核心逻辑通常在Jupyter笔记本(如chemcemption.ipynb)中找到[^20]。 二维分子成像在CNN应用中的一个重要进展是将显式的化学特征直接编码到图像通道中(例如RGB或RGBA),而不仅仅依赖于视觉结构。这为神经网络提供了更丰富、信息量更大的输入。 Chemception方法: 最初的Chemception论文描述了使用灰度图像,其中原子表示为按原子序数着色的点,键表示为线[^14]。 后续工作,特别是Goh等人的研究(2017年)以及Wildcard Consulting的一篇博客文章详细介绍了一种4通道图像的方法[^18]。这种多通道表示允许CNN“看到”特定位置的化学性质。 chemcepterize_mol(详见[^11] https://github.com/Abdulk084/Chemception/blob/master/chemcemption.ipynb)例证了这一点: 通道0: 编码键级 (例如,单键为1.0,双键为2.0)。 通道1: 编码原子序数。 通道2: 编码原子杂化状态 (例如,sp, sp2, sp3 表示为数值)。 通道3: 编码Gasteiger部分电荷。 图像尺寸通常不大,例如80x80像素[^14]或博客文章示例中的48x48像素[^11]。 def chemcepterize_mol(mol, embed=20.0, res=0.5): dims = int(embed*2/res) #print(dims) #print(mol) #print(",,,,,,,,,,,,,,,,,,,,,,") cmol = Chem.Mol(mol.ToBinary()) #print(cmol) #print(",,,,,,,,,,,,,,,,,,,,,,") cmol.ComputeGasteigerCharges() AllChem.Compute2DCoords(cmol) coords = cmol.GetConformer(0).GetPositions() #print(coords) #print(",,,,,,,,,,,,,,,,,,,,,,") vect = np.zeros((dims,dims,4)) #Bonds first for i,bond in enumerate(mol.GetBonds()): bondorder = bond.GetBondTypeAsDouble() bidx = bond.GetBeginAtomIdx() eidx = bond.GetEndAtomIdx() bcoords = coords[bidx] ecoords = coords[eidx] frac = np.linspace(0,1,int(1/res*2)) # for f in frac: c = (f*bcoords + (1-f)*ecoords) idx = int(round((c[0] + embed)/res)) idy = int(round((c[1]+ embed)/res)) #Save in the vector first channel vect[ idx , idy ,0] = bondorder #Atom Layers for i,atom in enumerate(cmol.GetAtoms()): idx = int(round((coords[i][0] + embed)/res)) idy = int(round((coords[i][1]+ embed)/res)) #Atomic number vect[ idx , idy, 1] = atom.GetAtomicNum() #Gasteiger Charges charge = atom.GetProp("_GasteigerCharge") vect[ idx , idy, 3] = charge #Hybridization hyptype = atom.GetHybridization().real vect[ idx , idy, 2] = hyptype return vect 输出与可视化 v = chemcepterize_mol(mol, embed=10, res=0.2) print(v.shape) # 输出:(100, 100, 4)(假设embed=10,res=0.2时dims=100) plt.imshow(v[:,:,:3]) # 可视化前3个通道(模拟RGB图像) 输出的vect是一个3 维数组,形状为(dims, dims, 4),可直接作为 CNN 的输入(类似图像的(H, W, C)格式)。 imshow(v[:,:,:3])将前 3 个通道视为 RGB 通道进行可视化,实际每个通道代表不同的化学属性,而非颜色。 KekuleScope https://github.com/isidroc/kekulescope 代码可在GitHub上的isidroc/kekulescope找到[^1]。它包括Python脚本如Kekulescope.py和load_images.py,并利用PyTorch框架[^22]。 分子转图片的代码主要来自于 kekulescope/Kekulescope.py 文件。下面是将分子转换为图片的核心代码片段,我们将其提取并进行适当修改,使其成为一个独立可用的代码片段: import os import sys from rdkit import Chem from rdkit.Chem import Draw import glob # 定义函数来生成分子图片 def generate_molecule_images(cell_line, seed, smiles_list, chembl_ids, dataset_type): base_dir = f'./images/{cell_line}/{seed}/{dataset_type}/images' os.makedirs(base_dir, exist_ok=True) svgs = glob.glob(f"{base_dir}/*svg") pngs = glob.glob(f"{base_dir}/*png") if len(svgs) == 0 and len(pngs) == 0: for i, smiles in enumerate(smiles_list): mol = Chem.MolFromSmiles(smiles) if mol is not None: svg_img = Draw.MolsToGridImage([mol], molsPerRow=1, useSVG=True) with open(f'{base_dir}/{chembl_ids[i]}.svg', 'w') as f: f.write(svg_img.data) else: print(f"SVGs ready for {dataset_type}") # 将 SVG 转换为 PNG pngs = glob.glob(f"{base_dir}/*png") if len(pngs) == 0: basedir = os.getcwd() os.chdir(base_dir) cmd = "AA=($( find . -name '*.svg' ));for i in ${AA[*]}; do convert -density 800 ${i} -resize 300x ${i}.png ; done" os.system(cmd) cmd = "rm -rf *.svg" os.system(cmd) os.chdir(basedir) # 示例使用 if __name__ == "__main__": cell_line = "KB" seed = 1 # 这里需要替换为实际的 SMILES 列表和 ChEMBL ID 列表 my_smiles = ["CCO", "CCOC"] chembl_ids = ["CHEMBL1", "CHEMBL2"] # 生成训练集图片 generate_molecule_images(cell_line, seed, my_smiles, chembl_ids, "train") # 生成验证集图片 generate_molecule_images(cell_line, seed, my_smiles, chembl_ids, "val") # 生成测试集图片 generate_molecule_images(cell_line, seed, my_smiles, chembl_ids, "test") 代码说明 函数 generate_molecule_images:该函数接受细胞系名称、随机种子、SMILES 列表、ChEMBL ID 列表和数据集类型(train、val 或 test)作为输入。它首先检查目标目录下是否已经存在 SVG 或 PNG 文件,如果不存在,则生成 SVG 图片;然后将 SVG 图片转换为 PNG 图片,并删除 SVG 文件。 KekuleScope: 采用“凯库勒结构表示”作为CNN的输入[^1]。相关的GitHub仓库isidroc/kekulescope包含一个load_images.py脚本,推测用于处理图像生成或加载,并利用了RDKit[^1]。 DEEPScreen https://github.com/cansyl/DEEPScreen 主要通过 rdkit 库将 SMILES 字符串转换为分子对象,然后使用 rdkit 的绘图功能将分子绘制为 SVG 图像,再使用 cairosvg 将 SVG 图像转换为 PNG 图像,最后删除临时的 SVG 文件。 import os import subprocess from rdkit import Chem from rdkit.Chem import Draw from rdkit.Chem.Draw import DrawingOptions import cairosvg # 假设训练文件路径 training_files_path = "/path/to/training_files" IMG_SIZE = 200 def save_comp_imgs_from_smiles(tar_id, comp_id, smiles): """ 将分子的 SMILES 表示转换为图片 :param tar_id: 目标 ID :param comp_id: 化合物 ID :param smiles: 分子的 SMILES 字符串 """ # 创建分子对象 mol = Chem.MolFromSmiles(smiles) # 设置绘图选项 DrawingOptions.atomLabelFontSize = 55 DrawingOptions.dotsPerAngstrom = 100 DrawingOptions.bondLineWidth = 1.5 # 绘制分子为 SVG 图像 svg_path = os.path.join(training_files_path, "target_training_datasets", tar_id, "imgs", "{}.svg".format(comp_id)) Draw.MolToFile(mol, svg_path, size=(IMG_SIZE, IMG_SIZE)) # 将 SVG 图像转换为 PNG 图像 png_path = os.path.join(training_files_path, "target_training_datasets", tar_id, "imgs", "{}.png".format(comp_id)) cairosvg.svg2png(url=svg_path, write_to=png_path) # 删除临时的 SVG 文件 subprocess.call(["rm", svg_path]) # 示例使用 tar_id = "example_target" comp_id = "example_compound" smiles = "CCO" # 示例 SMILES 字符串 # 创建必要的目录 target_dir = os.path.join(training_files_path, "target_training_datasets", tar_id, "imgs") os.makedirs(target_dir, exist_ok=True) # 调用函数生成图片 save_comp_imgs_from_smiles(tar_id, comp_id, smiles) 代码说明 文件来源:此代码片段来自 bin/data_processing.py 文件。 依赖安装:需要安装 rdkit 和 cairosvg 库,可以使用以下命令进行安装 DEEPScreen: 使用通过RDKit从SMILES生成的二维结构表示(200x200像素)。值得注意的是,由于SMILES表示的局限性,手性信息被省略了,而非图像生成过程本身的问题[^12]。 3. 其他工具中的特定二维图像生成 其他一些工具和研究也利用二维图像,通常以RDKit作为生成引擎,没见代码: Toxic Colors: 使用2DConvNet处理“化学品的简单二维绘图”或“简易二维草图”[^1]。具体的生成细节可能在其补充材料中[^23]。https://pubs.acs.org/doi/full/10.1021/acs.jcim.8b00338 用的是MOE ADMET-CNN: 一种基于分子二维图像的CNN,用于预测ADMET性质[^1]。https://www.sciencedirect.com/science/article/pii/S0169743919303417?via%3Dihub#sec5 RDKit QSAR-CNN (Zhong et al., 2021): 利用分子图像进行QSAR建模,特别是用于预测污染物的反应性[^1]。https://www.sciencedirect.com/science/article/pii/S1385894720341176 RDKit InterpretableDTIP (Gao et al., 2018) and CPI-GNN (Tsubaki et al., 2019; Chen et al., 2020) first convert the SMILES sequences into molecular graph with the Rdkit 从简单的二维草图到标准化的RDKit描绘,再到富含化学特征的多通道图像的演变,反映了为CNN提供更直接可用和信息更丰富的输入的持续努力。这旨在减轻网络学习基本化学特征的负担,从而可能带来性能或数据效率的提升。 B. 基于二维图像的CNN架构与应用 标准的CNN架构,包括AlexNet、VGG、ResNet、DenseNet和基于Inception的模型,经常被调整或用作处理二维分子图像的基础骨干网络[^1]。这些网络通常包含用于层次化特征提取的卷积层、用于降维和实现平移不变性的池化层,以及用于将学习到的特征映射到输出预测的全连接层[^1]。 应用领域: 生物活性和性质预测: 这是一个主要的应用领域。KekuleScope预测癌细胞系的敏感性和化合物效价[^21]。Chemception已应用于预测毒性、生化活性和溶解性质[^14]。ImageMol专注于预测一系列分子性质和药物靶点[^13]。ADMET-CNN专为ADMET性质预测而设计[^25],QSAR-CNN模型用于预测污染物反应性等任务[^33]。 毒性预测: Toxic Colors利用二维图像进行Tox21基准测试预测[^23]。Deepsnap虽然常与三维输入相关联,但在毒性预测的背景下也被引用,其中可能使用二维图像[^1]。ResNet18DNN被引用用于预测药物引起的肝损伤(DILI)[^1]。BESTox从其SMILES衍生的二元矩阵预测急性口服毒性[^37]。 药物-靶点相互作用 (DTI): DEEPScreen是一个显著的例子,使用二维结构图像预测DTI[^12]。 具体模型示例: KekuleScope: 扩展了成熟的架构,如AlexNet、DenseNet-201、ResNet152和VGG-19,通常利用在通用图像数据集(如ImageNet)上预训练的权重作为一种迁移学习形式[^1]。 Chemception: 受Google的Inception-ResNet架构启发,证明了当使用基于图像的输入时,最少的显式化学知识也能产生有竞争力的结果[^14]。 ImageMol: 采用自监督图像表征学习框架。其预训练脚本提到了ResNet18,表明可能使用ResNet骨干网络从大量未标记的分子图像中学习[^13]。 ResNet18DNN: 特别使用一个18层的残差神经网络(ResNet18)结合深度神经网络进行DILI预测[^1]。综述[^1]将其归类为基于图像的方法,尽管一些使用CNN进行DILI预测的具体研究也采用了指纹输入[^40]。 使用标准化的图像尺寸和朝向,如DEEPScreen[^12]所示,对CNN至关重要,因为CNN对输入变化敏感。如果同一个分子可以有多种描绘方式,网络可能会学到虚假的关联。像Chemception这样的多通道方法试图以结构化的方式增加特征丰富度,这在一定程度上独立于确切的二维布局。此外,将CNN应用于SMILES字符串的二维矩阵表示(例如,Hirohara M. et al.[^36], BESTox[^37])表明,“基于图像”有时可以指CNN在二维张量输入上的维度和局部模式学习能力,而不仅仅是其视觉来源。 RDKit和Python的广泛可用性,加上成熟的深度学习框架,使得基于二维图像的方法相对容易获取。然而,优化描绘参数和设计有效的多通道表示(如Chemception所示)仍然需要相当的领域专业知识,以确保呈现给CNN的视觉特征是有意义的,并且有助于学习相关的结构-性质关系。 还有并非分子图像的 Hirohara M. et al.: 这种方法略有不同,它将SMILES字符串转换为“SMILES特征矩阵”(例如,一个400x42的矩阵)。虽然不是视觉图像,但这个二维矩阵由CNN处理,展示了CNN在结构化二维序列表示上的应用[^36]。 BESTox: 类似地,此方法使用从SMILES派生的“二维二元矩阵”,编码了原子类型、键合氢数量、电荷、化合价等特征。这个矩阵(而非视觉描绘)作为CNN输入[^1]。 tCNNs (Liu et al.): 该模型通过将SMILES字符串转换为one-hot编码矩阵来处理它们。然后将一维CNN应用于药物的矩阵表示[^41]。虽然输入是从序列派生的矩阵,但其二维结构和CNN的处理方式使其处于一种模糊了纯序列和类图像表示界限的类别,正如其被包含在基于图像的综述中一样[^1]。 III. 三维(3D)分子表征 虽然二维图像提供了简单性,但它们固有地丢失了显式的三维结构信息,而这些信息对于理解分子相互作用(尤其是在药物-靶点结合中)通常至关重要。为了解决这个问题,已经开发了各种三维表征策略,范围从三维构象的二维快照集合到用于专门CNN和几何深度学习(GDL)模型的直接体素化或基于表面的输入。 A. 三维分子表征的生成 1. 源自构象异构体的三维快照图像 这种方法试图通过从不同视角捕捉分子三维构象的多个二维投影图像,从而为主要是二维的CNN提供三维信息。 Maestro (Schrödinger) 方法: 这个商业软件包可用于导入三维构象(例如,从SDF文件)。一种常用技术是在固定角度增量(例如,8次旋转,每次45°)下围绕特定轴(例如y轴)全局旋转构象。每次旋转后,保存三维模型的当前二维视图为图像。重要的是,这些用于可视化的全局旋转不改变分子的潜在三维坐标[^1]。 应用示例: Asilar等人(2020)在其“基于图像的CNN”工作中应用此技术预测肝毒性。从Maestro生成的图像通常用不同颜色描绘原子,用管状表示键,传达基本的化学和结构信息[^1]。 代码: Maestro允许使用Python脚本自动化此类工作流程。GitHub仓库https://github.com/maestro-project/maestro[^1]似乎是一个独立的项目,并非官方的Schrödinger Maestro软件。 Deepsnap (Uesawa Y., Matsuzaka Y.) 方法: 这种新颖的分子图像输入技术是为QSAR分析而开发的。它从三维化学结构生成图像,提供用户可调参数,如原子属性(可能影响描绘)、原子颜色、键半径和像素大小。一个关键方面是从多个视角捕捉图像,这有助于揭示关键的致毒构象或药理学相关的结构域[^1]。 Uesawa Y.(2018)特别描述了“Deep Snap”过程:使用CORINA Classic软件从SMILES生成三维结构并保存为SDF,然后使用Jmol将其可视化为球棍模型。这些模型随后围绕X、Y和Z轴系统地旋转360°,并以定义的增量捕捉快照(例如,每个轴向8张图像,45°增量,每个分子产生512张图像)。这些图像通常保存为256x256像素的PNG文件[^54]。由此产生的图像集用于训练AlexNet CNN模型。 代码: 综述中引用的GitHub链接snap-stanford/deepsnap[^1]涉及一个用于图深度学习的Python库,似乎与Uesawa和Matsuzaka开发的Deepsnap QSAR图像方法不同[^55]。图像方法的相关引文是Matsuzaka Y, Uesawa Y. “Optimization of a deep-learning method based on the classification of images generated by parameterized deep snap…”[^1]。 我怎么看还有MOE RDKit用于从3D生成多视角2D投影 RDKit的MolDraw3D模块主要用于创建交互式3D可视化或静态3D透视图像,而不是一系列适用于CNN序列输入的、从系统变化的视点生成的2D投影[^56]。虽然理论上可以编写RDKit脚本来旋转三维构象的坐标,然后为每个旋转状态生成标准的2D描绘,但这并非内置的高级功能,需要自定义实现。像PyMOL这样的工具更常用于生成此类多帧旋转序列(如VideoMol所示)。 2. 基于三维体素的表征 (网格) 体素化涉及将分子或蛋白质-配体复合物占据的三维空间离散化为一个规则的体积元素(体素)网格。每个体素随后可以存储代表原子存在、原子类型或其他理化性质的标量或矢量值,通常形成多个通道。这种三维“图像”直接适用于三维CNN。 一般过程:该过程通常包括定义一个边界框,设置网格分辨率(体素大小),将分子放置在此网格内,然后根据落入或靠近每个体素的原子为其分配特征值。 工具和方法: AtomNet (Wallach et al., 2015) 和 Ragoza et al. (2017) AtomNet是基于结构的生物活性预测的开创性深度CNN,利用蛋白质-配体复合物的三维网格表示[^60]。输入生成涉及将配体置于网格盒中心,并将原子类型和位置特征化为体素通道[^62]。 Ragoza等人(用户查询中提到“voxelization, smina atom types”)及相关工作如CENsible研究[^63]描述了使用libmolgrid对蛋白质-配体复合物进行体素化。例如,使用的参数包括0.5 Å的分辨率,48x48x48的网格,以及28种原子类型(可能是类smina或类AutoDock的原子类型)。 DeepSite (Jimenez et al.) 一种基于三维CNN的方法,用于预测蛋白质上的配体结合位点[^65]。 它将蛋白质结构表示为离散化为1x1x1 ų体素的三维图像。网格包含蛋白质的边界框外加8 Å的缓冲层以捕捉表面口袋[^66]。 一个关键特征是其使用8个通道表示体素占据情况,编码不同的原子特性:疏水性、芳香性、氢键受体、氢键供体、正离子化、负离子化、金属性以及一个通用的排除体积通道。这些特性源自AutoDock 4的原子类型[^66]。 DeepSite网络服务器位于 www.playmolecule.org[^70]。 KDEEP 和 Ligdream : 这些工具在用户查询中被提及并在综述中列出[^1],据称重用或类似于DeepSite的体素化方法。例如,KDEEP也采用三维网格表示[^61]。 Pafnucy (Stepniewska-Dziubinska et al.) : 使用三维CNN预测蛋白质-配体结合亲和力[^61]。 输入是一个以配体几何中心为中心的20 Å立方体盒子,离散化为1 Å分辨率的网格。这形成一个4D张量,最后一个维度包含每个网格点的19个原子特征[^72]:9位用于原子类型(B, C, N, O, P, S, Se, 卤素, 金属);1个整数表示杂化状态;1个整数表示重原子价;1个整数表示杂原子价;5位用于SMARTS定义的属性(疏水性、芳香性、受体、供体、环);1个浮点数表示部分电荷;1个整数区分配体(1)和蛋白质(-1)。如果多个原子占据单个体素,则其特征相加[^76]。 代码和使用说明可在 http://gitlab.com/cheminfIBB/pafnucy 获取[^76]。 Kuzminykh D. et al. (2018) : 这项工作直接解决了朴素体素表示中极端稀疏性的问题。他们提出了一种基于小波变换的新颖平滑方法,通过将初始离散表示与小波核进行卷积,原子被有效地“扩展”以填充附近的体素[^1]。 这种小波变换方法与高斯平滑(模糊)进行了比较。作者认为,与高斯核的简单指数衰减相比,小波变换导致的信息损失更少,并且来自不同原子的波之间的干涉能够更好地传播信息[^78]。 输入生成包括获取三维构象(例如,通过PCA定向从SMILES生成),将空间离散化为网格(例如,0.5 Å分辨率),并用原子类型(例如,对常见元素H, C, N, O, F, S使用6-9个通道的one-hot编码)表示每个单元格中的原子[^78]。 体素化的Python库: libmolgrid: 一个通用的C++/CUDA库,带有Python绑定,专为机器学习创建体素化分子数据而设计。它支持各种原子类型方案(例如,XS原子类型、元素类型、自定义回调),可以处理多个坐标集(例如,受体和配体),并包含用于高效批量采样ExampleProvider和用于生成网格张量的GridMaker。它针对GPU加速进行了优化[^63]。代码位于GitHub上的gnina/libmolgrid。 DeepChem : RdkitGridFeaturizer: 位于deepchem/feat/complex_featurizers/rdkit_grid_featurizer.py,此特征化器专为蛋白质-配体复合物设计。它创建一个以配体为中心的网格,并可以将各种特征类型编码到体素通道中,例如ECFP、SPLIF、Sybyl原子类型、电荷、氢键势、π-堆积和阳离子-π相互作用。参数包括box_width、voxel_width、feature_types和用于通过旋转复合物进行数据增强的nb_rotations[^85]。 虽然用户查询中提到了通用的VoxelFeaturizer,但在提供的材料中,RdkitGridFeaturizer更具体地记录了用于创建三维网格。DeepChem提供了一套广泛的特征化器[^87]。 代码: GitHub上的deepchem/deepchem[^86]。 MolVoxel: (SeonghwanSeo/molvoxel) 一个易于使用的Python分子体素化工具,依赖项极少(NumPy、SciPy,可选Numba、PyTorch/CUDA、RDKit、PyMOL)。它以原子坐标、半径和特征作为输入。参数包括分辨率(默认0.5)、维度(默认64)、密度类型(‘gaussian’或‘binary’)和sigma(用于高斯核,默认0.5)[^89]。 NEARL: (miemiemmmm/Nearl) 一个自动化的Python流程,旨在从分子动力学(MD)轨迹的大量系综中提取动态特征,重点是用于三维CNN的三维体素表示。一个示例将特定残基附近的子结构的质量分布特征化为一个32x32x32的网格[^90]。 体素网格中的稀疏性问题是一个重要的考虑因素。如果原子在大型三维网格中表示为单个点,则大多数体素将保持为空,导致计算效率低下,并可能妨碍三维CNN的学习过程。像Kuzminykh的小波变换、高斯模糊或将网格聚焦于感兴趣区域(例如,配体或结合位点周围)等技术对于创建更密集、信息更丰富的表示至关重要。 3. 基于三维表面的表征 这些方法通过分子的三维表面(特别是蛋白质)来表示分子,并将理化或几何特征编码到这些表面上。然后,几何深度学习模型可以在这些表面网格或从它们派生的面片上操作。 MaSIF (Molecular Surface Interaction Fingerprints) (Gainza et al.) : 方法 MaSIF是一种著名的方法,它处理蛋白质表面以解读对生物分子相互作用重要的模式[^1]。 表面生成: 它计算分子表面(使用MSMS计算溶剂排除表面)并将其离散化为网格。 特征分配: 将几何特征(例如,形状指数、距离依赖曲率)和化学特征(例如,氢键供体/受体势、通过APBS计算的静电势,以及通过PDB2PQR原子参数计算的疏水性)分配给网格的每个顶点。 面片提取: 在每个顶点周围提取具有固定测地线半径(例如9 Å或12 Å)的重叠径向面片。 指纹计算: 一个利用测地线卷积的几何深度神经网络处理这些面片,为每个表面点计算一个描述符(指纹)。 Python/脚本流程: MaSIF采用一个复杂的流程,涉及多个外部工具和Python库:reduce(用于PDB结构质子化)、MSMS(用于分子表面三角化)、BioPython(用于解析PDB文件)、PyMesh(用于处理.ply表面文件、属性和网格正则化)、PDB2PQR和APBS(用于计算泊松-玻尔兹曼静电势以导出电荷特征)、open3D(用于RANSAC对齐等任务)以及Tensorflow(作为深度学习框架)[^92]。 代码: MaSIF框架可在GitHub上的LPDI-EPFL/masif获取[^1]。data_preparation目录包含协调这些步骤的脚本(例如data_prepare_one.sh)。 PINet (Protein Interface Network) (Gainza et al., 2020) : 方法: PINet是一个几何深度神经网络,旨在预测蛋白质相互作用界面区域。它以编码两个伴侣蛋白结构的点云对作为输入[^98]。 该模型学习捕捉几何和理化分子表面的互补性,以预测相互作用区域[^99]提到PINet在点云上使用PointNet。 综述[^1]将PINet列在MaSIF下,表明它们在表面/点云上的几何深度学习方面存在概念联系或共享基础。 4. 三维点云表征 这种方法直接将分子表示为三维空间中的一组点(通常是原子),其中每个点都与一个特征向量(例如,坐标、原子类型、电荷)相关联。然后使用像PointNet这样的网络或专门的图神经网络来处理这个无序点集。 Wang Y. et al. (Briefings in Bioinformatics 2022, “A Point Cloud-Based Deep Learning Strategy for Protein-Ligand Binding Affinity Prediction”) : 方法: 这项工作将PointNet和PointTransformer架构直接应用于从蛋白质-配体复合物派生的三维点云,用于结合亲和力预测[^101]。 点云生成 : 对蛋白质-配体复合物(来自PDBbind)进行预处理(去除溶剂/金属/离子)。 坐标对齐到配体的中心以减轻平移方差。 选择距离配体中心最近的1024个原子。 每个原子(点)由6个特征描述:x, y, z坐标、范德华半径、原子量和一个来源标识符(蛋白质为1,配体为-1)。 特征进行归一化。如果原子少于1024个,则用零特征点填充该集合。 工具: 使用Python和OpenBabel进行初始点云生成,并使用C++加速此预处理步骤[^106]。 PGpocket (Zhao, He, Wang et al., 2024) : 尽管是另一个“Wang et al.”团队的不同工作,PGpocket也使用点云。它将蛋白质表面抽象为一个点云,为每个点提取几何和化学特征,然后构建一个点云图。随后应用GNN来预测结合位点[^102]。这说明了点云GNN在结构生物信息学中日益增长的兴趣。 三维表征的选择——无论是快照、体素、表面还是点云——反映了在信息内容、计算可行性以及与各种神经网络架构的兼容性之间进行权衡的不同策略。虽然提供了更丰富的空间信息,但与二维方法相比,这些方法通常伴随着更高的计算成本和数据准备复杂性。特征工程也仍然至关重要,无论是在定义体素通道内容,还是在将化学和几何特性映射到表面或点上。 B. 基于三维表征的CNN架构与应用 CNN架构的选择与所使用的三维表征类型密切相关。 对于三维体素网格: 标准的三维CNN是自然的选择。它们将二维CNN的原理扩展到三维卷积滤波器、三维池化层和全连接层。例如DeepSite、Pafnucy和AtomNet,它们使用此类架构从蛋白质-配体复合物或蛋白质结合位点的体素化表示中学习特征。 对于三维表面和网格: 采用几何深度学习(GDL)模型。例如,MaSIF使用测地线卷积,这种卷积专门设计用于在曲面和网格上操作,通过在局部表面面片上定义类似卷积的操作来实现[^92]。 对于三维点云: 使用专门的GDL架构,如PointNet[^106]和PointTransformer[^106]。这些网络旨在处理三维空间中的无序点集,学习对输入点排列不变的特征。适用于点云的GNN(如PGpocket[^102])也很常见。PINet也利用了点云处理[^99]。 应用领域: 结合亲和力预测: 一个主要应用,工具如Pafnucy[^71]、AtomNet[^60]、Ragoza等人的方法[^63]以及Wang Y.等人的PointNet/PointTransformer方法[^106]旨在预测蛋白质-配体相互作用的强度。 结合位点预测: 识别配体或其他分子可能在蛋白质表面结合的位置。例如DeepSite[^66]、KDEEP、Ligdream和MaSIF-site[^92]。 QSAR、毒性和一般性质预测: Deepsnap使用三维快照图像,应用于QSAR和毒性预测[^1]。 一般药物发现和筛选: 许多三维方法通过提供结构见解,为虚拟筛选和识别新型候选药物的更广泛目标做出贡献。 C. 三维方法的Python包和代码实现 三维分子图像生成和处理流程涉及多种Python包和外部软件。 构象生成 : RDKit: 广泛用于从SMILES或二维结构生成三维构象,常采用ETKDG(基于实验扭转角的知识距离几何)等算法[^3]。 CORINA Classic: 一种用于从二维结构或SMILES生成单个低能三维构象的软件,在DeepSnap工作流程中使用[^53]。 可视化和快照生成 : Maestro (Schrödinger): 用于分子建模和可视化的商业软件,用于生成三维构象的多角度二维快照[^1]。 PyMOL: 一个开源的分子可视化系统,可通过Python高度脚本化。VideoMol使用它将旋转的构象渲染成帧[^107]。 Jmol: 一个用于三维化学结构的开源Java查看器,在最初的DeepSnap (Uesawa) 方法中用于可视化和捕获旋转的模型[^54]。 体素化工具 : libmolgrid: (gnina/libmolgrid on GitHub) 一个C++/CUDA库,带有Python绑定,用于创建体素化的分子数据,支持各种原子类型方案和GPU加速。关键类包括ExampleProvider, GridMaker和AtomTyper[^63]。 DeepChem: (deepchem/deepchem on GitHub) 提供RdkitGridFeaturizer,用于将蛋白质-配体复合物特征化为三维网格,具有可定制的特征和数据增强选项[^85]。 MolVoxel: (SeonghwanSeo/molvoxel on GitHub) 一个Python分子体素化工具,支持不同的密度类型和计算后端(NumPy, Numba, PyTorch/CUDA)[^89]。 NEARL: (miemiemmmm/Nearl on GitHub) 一个Python流程,专注于从MD轨迹中提取动态特征到三维体素表示,用于三维CNN[^90]。 表面处理工具 (主要用于MaSIF) : MSMS: 用于计算溶剂排除表面(三角化网格)的外部命令行工具[^92]。 PyMesh: 用于处理和正则化表面网格的Python库[^92]。 APBS (Adaptive Poisson-Boltzmann Solver): 用于计算分子表面静电势的外部工具[^92]。 PDB2PQR: 用于通过分配电荷和半径来准备APBS计算的蛋白质结构的外部工具[^92]。 reduce: 为PDB结构添加氢原子[^92]。 点云处理 : OpenBabel: 可用于生成点云数据的预处理步骤,如Wang Y.等人的工作所示[^106]。 深度学习框架 : TensorFlow: MaSIF[^92]和Pafnucy(Keras API)[^76]使用。 PyTorch: 日益普及,ImageMol[^13]和KekuleScope[^22](尽管主要用于二维模型)使用。许多现代GDL库也基于PyTorch(例如,PyTorch Geometric,DeepChem与之集成[^55])。 三维表示的多样性——快照、体素、表面和点云——反映了为机器学习寻找编码复杂三维分子信息的最佳方式的持续努力。每种方法都在信息密度、计算成本以及它们最适合的神经网络架构类型之间呈现出一组独特的权衡。虽然三维方法具有捕捉二维中经常丢失的关键空间细节的潜力,但它们通常需要比二维方法更多的计算资源,并依赖于高质量三维结构数据的可用性,例如蛋白质数据库(PDB)中的数据。 IV. 分子序列和视频表征 除了静态的二维和三维图像,一些新兴方法试图捕捉分子的动态方面,或以类图像格式利用基于序列的信息供CNN处理。 A. 分子视频/序列的生成 1. 分子视频 (例如 VideoMol) 分子视频的概念旨在将分子的构象灵活性或动态特性表示为一个图像帧序列,从而提供比单个静态构象更丰富的输入。 VideoMol (Zeng, Xiang et al.) 这是一个基于分子视频的基础模型的显著例子[^107]。 方法论 : 构象生成: 该过程从生成三维构象开始。对于其预训练数据集,VideoMol利用了PCQM4Mv2数据库中的构象。对于下游任务中可能不易获得构象的情况,他们采用RDKit的MMFFOptimizeMolecule()函数和MMFF94力场来生成构象[^107]。 旋转和快照生成: 每个三维构象围绕正X、Y和Z轴进行系统的逆时针旋转。此过程为每个分子生成 $n_f=60$ 个快照(帧)。旋转角度由一个旋转矩阵 $R_z(\phi)$ 形式化,其中 $\phi = \pi/10$[^107]。 渲染: 这60个快照中的每一个都使用PyMOL渲染成分子帧,尺寸为224x224像素。使用特定的PyMOL命令确保描绘风格的一致性,例如 bg_color white; hide (hydro); set stick_ball,on; set stick_ball_ratio,3.5; set stick_radius,0.15; set sphere_scale,0.2; set valence,1; set valence_mode,0; set valence_size, 0.1[^107]。PyMOL最初生成640x480的帧,然后进行后处理(填充和调整大小)到最终的224x224尺寸[^107]。 视频拼接: 然后将60个渲染帧按顺序拼接在一起,形成最终的分子视频 $V = {v_1, v_2, …, v_{n_f}}$,其中每个 $v_i \in \mathbb{R}^{3 \times 224 \times 224}$ (假设为3个颜色通道)[^107]。 Python包/脚本 : RDKit: 用于三维构象生成(如果尚未提供)[^107]。 PyMOL: 用于将旋转的构象渲染成单独的图像帧。PyMOL可通过Python高度脚本化,从而自动化旋转和帧保存过程。PyMOL命令如mset(定义电影帧/长度)、rotate(或手动旋转后使用mview store)和mpng(将帧保存为PNG)是此类工作流程的基础[^109]。 2. 基于SMILES的序列/矩阵表示 (再访) 虽然在二维部分已讨论过,但有必要重申,一些方法以一种虽然在视觉上不是图像,但结果是适用于CNN的二维矩阵的方式处理SMILES字符串,从而以“类图像”的方式处理序列。 Hirohara M. et al.: 将SMILES字符串转换为“SMILES特征矩阵”(例如,固定大小如400x42),其中行可能表示字符位置,列表示one-hot编码的字符或派生特征。然后将此矩阵输入到二维CNN[^36]。 BESTox: 将SMILES转换为“二维二元矩阵”,编码了原子类型、键合氢数量、电荷、化合价、环信息、芳香性、手性和杂化状态等在SMILES字符串上的出现情况。此矩阵作为CNN输入[^1]。 MolPMoFiT (Li, Fourches): 此方法虽然在综述[^1]中列于自监督学习下,但主要在标记化的SMILES序列(原子级或SMILES对编码 - SPE)上使用NLP启发的架构(ULMFiT改编)[^119]。它更像是一种序列建模方法,而不是视觉意义上的基于图像的方法。 B. 基于视频/序列数据的CNN架构与应用 VideoMol : 其架构可能涉及为视频处理设计的CNN。这些可以包括将第三维处理时间序列帧的三维CNN,或混合架构如CNN-LSTM,其中CNN从每个帧中提取空间特征,而LSTM对跨帧的时间依赖性进行建模。VideoMol论文提到使用“视频编码器”提取潜在特征,并实施自监督预训练策略,通过考虑构象动态变化和理化信息来优化这些表示[^113]。 应用: 预测分子靶点和性质,识别抗病毒分子。一个关键目标是有效地理解和利用分子的三维结构动力学[^107]。 SMILES矩阵方法 (Hirohara, BESTox) : 这些通常采用标准的二维CNN。卷积滤波器从SMILES字符串的二维矩阵表示中学习局部模式,这些模式可能对应于化学基序或特征之间的顺序关系[^36]。 MolPMoFiT : 使用Transformer或类似LSTM的架构,这些是NLP中用于序列建模的标准架构,而不是在视觉图像或类图像矩阵上操作的CNN[^119]。 C. Python包和代码实现 VideoMol : 利用RDKit进行构象生成,PyMOL(可通过Python脚本化)将旋转的构象渲染成帧[^107]。在提供的摘要中未提供完整的VideoMol框架本身的公开GitHub链接。 Hirohara M. et al. : 其基于SMILES的CNN的源代码,用Chainer深度学习框架实现,据称可在 http://www.dna.bio.keio.ac.jp/smiles/ 获取[^123]。 BESTox : 摘要中未提供明确的公开代码链接[^37]。 MolPMoFiT : 实现可在GitHub上的XinhaoLi74/MolPMoFiT获取[^119]。它使用PyTorch和Fastai库[^119]。 像VideoMol这样的分子视频的引入标志着朝着捕捉分子动力学迈出了重要一步,这些动力学通常对理解生物活性至关重要,但在静态二维或单构象三维图像中会丢失。这种方法允许模型从更丰富、时间分辨的分子结构表示中学习。然而,此类视频数据(例如VideoMol中每个分子60帧)的生成和处理计算量大,可能限制了它们目前与静态图像方法相比的广泛采用。将CNN应用于SMILES字符串的矩阵表示也展示了这些网络超越纯视觉数据的多功能性,突出了如果顺序信息可以结构化为局部模式有意义的二维网格,CNN就可以有效地应用。 V. 多模态及其他相关方法 为了进一步增强分子系统的预测能力和理解,研究人员越来越多地探索多模态学习、迁移学习和自监督/无监督学习范式,通常将基于图像的表示与其他数据类型集成或利用大型未标记数据集。 A. 多模态学习方法 多模态学习旨在同时从多种类型的数据(如图像、文本和图)中学习,以构建更全面、更准确的模型[^1]。基本前提是不同的模态捕获关于分子的互补信息,它们的融合可以导致模型性能的协同改进。 Multi-modal (Wang et al. in [^1]) : 方法: 该系统专注于通过处理从化学专利中提取的文本描述和结构图像来进行化学信息重建。它采用双分支模型架构:一个分支使用CNN进行图像处理,另一个分支使用BiLSTM+CRF进行文本处理。输出被对齐以识别异构化学实体及其关系[^1]。 应用: 主要用于通过理解和链接来自不同专利数据源的信息来生成大规模的近药物化合物库。 MCNN-DDI (Asfand-E-Yar M. et al., 2024) : 方法: 一种为预测药物间相互作用(DDI)相关事件而设计的多模态CNN。它利用四个不同的CNN子模型,每个子模型专用于所涉及药物的特定特征类型:化学子结构(表示为从SMILES派生的相似性矩阵,而非直接的视觉图像)、酶、通路和药物靶点。然后组合这些子模型的输出以进行最终的DDI事件预测[^1]。 代码: 虽然论文发表在Scientific Reports[^125],但摘要中未提供直接的公开代码链接。 MultiDTI (Zhou et al.) : 方法: 该模型通过采用在异构网络上操作的联合学习框架来预测药物-靶点相互作用。它整合了来自这些网络的相互作用或关联信息以及药物和靶点的序列信息。一个关键方面是它能够将药物、靶点、副作用和疾病节点映射到一个共同的潜空间中。这使得MultiDTI能够通过基于其化学结构将其映射到这个学习到的空间中来预测新化学实体的相互作用[^1]。 代码: 可在GitHub上的Deshan-Zhou/MultiDTI获取[^1]。 ISMol (Zhang, Xiang et al., 2024) : 方法: ISMol代表基于图像和序列的双视角学习用于分子性质预测。它利用交叉注意力机制来有效融合从分子的两个不同视角提取的信息:其二维图像和其SMILES字符串表示[^128]。 代码: 论文和代码的链接可在GitHub仓库Shihang-Wang-58/papers_for_molecular_representation中找到[^128]。 CGIP (Wang et al., 2023) : 方法: CGIP,即对比图文预训练(Contrastive Graph-Image Pre-training),是一个用于分子表征学习的框架。它旨在将化学知识从分子图(显式编码连接性)迁移到分子图像(隐式编码结构)。这是通过在大量未标记分子上精心设计的模态内和模态间对比学习目标来实现的[^128]。 代码: 论文和代码的链接可在Shihang-Wang-58/papers_for_molecular_representation中找到[^128]。 越来越多地采用多模态方法反映了人们日益认识到没有任何单一的表征能够捕获分子的所有相关方面。通过将来自图像的视觉信息与来自SMILES的顺序信息、来自图的显式连接性或来自文本的上下文信息相结合,这些模型旨在实现更全面、更稳健的理解,从而可能带来准确性和泛化能力的提高。 B. 基于图像模型中的迁移学习 迁移学习涉及重用从一个任务或领域获得的知识来改进另一个(通常是目标)领域的学习,在目标领域中标记数据可能稀缺[^1]。由于生成大规模、高质量标记数据集的成本和精力很高,这在药物发现中尤其重要。 Dalkiran et al. (in [^1]) : 方法: 这项工作因采用迁移学习识别分子图像而受到关注[^1]。综述[^1]链接到一个GitHub仓库cansyl/TransferLearning4DTI,表明其专注于药物-靶点相互作用预测。一般的想法是使用在大型数据集(例如,通用图像或广泛的化学图像数据集)上预训练的模型作为特征提取器,或作为在新模型(在更具体、更小的数据集上训练)上的初始化点。摘要[^140]和[^141]讨论了DTI中的迁移学习,但并未具体说明此特定工作的图像生成。 Li et al. (in [^1] - Lingqiao Li et al., 2020 JIOHS) : 方法: 该研究应用迁移学习,使用一维CNN处理近红外(NIR)光谱数据,进行多制造商药物识别。虽然输入是光谱数据而非分子结构图像,但它例证了当数据采集困难或标记成本高昂时,迁移学习在化学分析中的效用[^1]。利用预训练模型来提高在较小相关数据集上性能的核心原则是适用的。 KekuleScope : 方法: 如前所述,KekuleScope扩展了现有的著名CNN架构(AlexNet, DenseNet-201, ResNet152, VGG-19),这些架构最初在大型、异构的图像数据集(如ImageNet)上进行了预训练。这种预训练使模型能够学习通用的视觉特征,然后针对从二维凯库勒结构表示预测化合物活性的特定任务进行微调[^1]。这是从通用领域到专门化学领域的经典迁移学习示例。 MoleCLIP (Harnik et al., 2024, ChemRxiv) : 方法: 这项近期工作明确利用OpenAI的CLIP(对比语言-图像预训练)视觉基础模型作为分子图像表征学习框架的骨干。通过从一个强大的通用视觉模型开始,MoleCLIP证明它需要明显更少的分子特异性预训练数据就能达到或超过在分子数据上从头开始训练的最新模型的性能。这突出了将知识从非常大规模的通用视觉模型迁移到化学任务的潜力[^134]。 迁移学习通过有效利用预训练模型中封装的现有知识,解决了“小数据药物发现问题”[^1]。这减少了对每个新药物发现任务的大量标记数据集的依赖,并可以加速模型开发。 C. 自监督和无监督学习 这些学习范式使模型能够从未标记的数据中学习有意义的表征,鉴于未标记化学数据的丰富性,这一点非常有利。 ImageMol (Zeng, Xiang et al.) : 方法: ImageMol是一个专为分子图像设计的无监督/自监督预训练框架。它通过关注分子图像像素中存在的局部和全局结构特征,从一个包含1000万未标记类药化合物的大型数据集中学习化学表征[^13]。预训练可能涉及分子图像重建等任务,并且该框架可以整合各种代理任务,如对比学习或拼图游戏,正如[^1]中展示的通用迁移学习流程所示,ImageMol与此一致。ResNet18被提及作为预训练脚本的骨干网络[^13]。 代码: HongxinXiang/ImageMol on GitHub[^13]。 MolPMoFiT (Li, Fourches) : 方法: 这种方法将自监督预训练应用于SMILES序列而非视觉图像。它改编了NLP中的ULMFiT(通用语言模型微调)方法。一个大规模分子结构预测模型在来自ChEMBL的一百万个未标记分子上使用标记化的SMILES(原子级或通过SMILES对编码 - SPE)进行预训练。然后将此预训练模型针对特定的QSAR任务进行微调[^119]。 代码: XinhaoLi74/MolPMoFiT on GitHub[^119]。 特别是自监督学习,通过定义使模型能够学习数据内在特征的代理任务,允许模型利用大量未标记的分子数据(SMILES字符串或生成的图像)。然后可以将这种学习到的表征迁移到下游的监督任务中,通常会带来性能和数据效率的提高。这些方法的成功突显了利用大型未标记化学数据集构建强大的基础模型的价值。 这些先进学习范式——多模态学习、迁移学习和自监督学习——与基于图像的分子表征的融合,预示着未来AI模型将能够从化学数据中学习更丰富、更具泛化性、更细致的特征。这有望通过提高预测准确性、增强数据效率以及可能揭示新的化学见解,从而显著加快药物发现的步伐。 VI. 总结与展望 本报告综述了将分子信息转换为适用于药物发现及相关化学科学领域卷积神经网络(CNN)应用的各种基于图像的表征方法。这些技术涵盖了二维图像、多方面的三维表征(快照、体素、表面、点云)以及新兴的分子视频/序列格式。 A. 关键分子到图像方法与CNN应用回顾 二维表征: 主要使用RDKit等工具从SMILES字符串生成,包括标准的凯库勒结构图和更高级的多通道图像(如Chemception),后者将化学特征直接编码到图像通道中。这些方法广泛应用于QSAR、ADMET预测、毒性筛选和DTI,通常使用标准的CNN架构。 三维表征 : 快照: 三维构象在多个角度下的二维投影(例如,使用Maestro,或如Uesawa的Deepsnap中使用的Jmol)。 体素: 将原子存在或理化性质编码到离散化的三维网格中,由三维CNN处理(例如,AtomNet, DeepSite, Pafnucy, Ragoza等人的工作, Kuzminykh D.等人的工作)。libmolgrid和DeepChem的RdkitGridFeaturizer等库有助于此过程。 表面: 带有映射特征的分子表面,由几何深度学习(GDL)模型处理(例如,MaSIF, PINet)。 点云: 将原子直接表示为带特征的三维点,由PointNet/PointTransformer等网络处理(例如,Wang Y.等人的工作)。 这些对于基于结构的任务(如结合亲和力和位点预测)至关重要。 视频/序列表征: 分子视频(例如,使用RDKit和PyMOL的VideoMol)旨在捕捉动力学。从SMILES派生的矩阵(例如,Hirohara M.等人, BESTox)以二维格式表示序列供CNN使用。 高级学习范式: 多模态学习(结合图像与文本、图等)、迁移学习(利用预训练模型)和自监督学习(从未标记数据中学习)正在增强基于图像的方法的能力(例如,ImageMol, MolPMoFiT, MoleCLIP)。 B. 不同表征模态的比较讨论 分子表征的选择并非一刀切;它涉及信息丰富度、计算成本和任务适用性之间的权衡。 二维图像: 具有生成简单(尤其适用于大型SMILES数据库)和模型训练计算成本较低的优势。它们非常适合高通量筛选和主要由宏观结构特征决定的任务。然而,它们固有地丢失了可能至关重要的显式三维空间信息。多通道二维图像试图通过将更丰富的化学信息直接编码到图像平面中来弥补这一点[^1]。 三维表征 提供对理解和预测蛋白质-配体结合等相互作用至关重要的显式空间信息。 三维构象快照提供了一种折衷方案,以比完整三维方法更低的计算成本为二维CNN提供一些三维视角,但视角有限。 体素网格是三维CNN的自然扩展,但可能存在数据稀疏和计算需求高的问题。分子在网格中的朝向如果不由数据增强或旋转不变架构处理,也可能影响结果。有效的体素通道特征工程至关重要[^66]。 表面和点云表示,由GDL模型处理,通常被认为更“自然”地适用于不规则的三维结构,可能避免一些体素化伪影。然而,GDL模型的开发和数据预处理流程(例如,MaSIF的流程[^92])可能很复杂。 视频/序列表示: 具有捕捉分子动力学和柔性的独特潜力,这些通常是生物功能的关键决定因素。VideoMol渲染旋转构象的方法是初步尝试[^107]。然而,这些方法目前在数据生成(例如,每个分子60帧)和模型训练方面计算需求最高。 C. 当前挑战 尽管取得了显著进展,基于图像的分子表征学习领域仍存在一些挑战: 图像转换损失: 将分子结构(尤其是三维结构映射到二维图像,甚至三维结构映射到离散网格)的过程可能导致关键信息的丢失或失真[^1]。 模型泛化能力: 深度学习模型,特别是CNN,需要大量的训练数据。在特定数据集或特定终点上训练的模型,如果没有广泛的重新训练或复杂的领域自适应技术,可能难以很好地泛化到新的、未见过的化学空间或不同的生物靶点[^1]。 表征的可解释性: 理解CNN为何从分子图像中做出特定预测仍然是一个重大障碍。虽然像类激活映射(CAM)和Grad-CAM这样的方法通过高亮有影响力的图像区域提供了一些见解,但增强这些“黑箱”模型的可解释性对于建立信任、推导新的科学假设和指导实验设计至关重要[^1]。这在药物发现中尤其重要,因为理解预测的机制或结构基础与预测本身同样有价值。 数据稀缺性和质量: 高质量、标记的数据集,特别是对于三维结构(例如,共结晶的蛋白质-配体复合物)或动态分子数据,通常有限。这可能阻碍鲁棒且可泛化模型的训练。 计算成本: 生成、存储和处理三维及基于视频的分子表征,以及训练相应的复杂神经网络架构,计算量可能很大,需要大量的GPU资源和时间。 D. 未来方向 该领域正在迅速发展,有几个有前景的未来方向: 改进的三维表征: 对开发更密集、信息更丰富且固有旋转/平移不变的三维输入表征的研究将继续。Kuzminykh D.等人提出的小波变换[^78]或学习到的等变表征等方法至关重要。 高级几何深度学习: 为分子图、表面和点云开发更强大、更定制化的GDL架构,可能会在基于结构的新药设计任务中产生显著改进。 增强的多模态学习集成: 预计将出现更复杂的方法,用于将图像数据与其他模态(图、序列、文本、组学数据、实验读数)融合。这可能涉及注意力机制、联合嵌入空间和协同训练策略,以利用不同数据源的互补优势[^128]。 化学基础模型: 构建和利用在海量未标记化学图像或结构数据集上预训练的大规模基础模型(类似于NLP中的GPT或CV中ImageNet训练的模型)的趋势可能会加速。像ImageMol[^13]这样的模型以及像CLIP这样的通用视觉模型的应用(例如MoleCLIP[^134])预示着这个方向。这些模型可以作为各种下游任务的强大起点,只需最少的微调。 整合分子动力学: 超越静态快照或简单旋转,更有效地表示和学习真实的分子动力学(例如,从MD模拟中),是一个关键的前沿领域。虽然VideoMol[^107]和NEARL[^90]是朝这个方向迈出的步伐,但开发计算上易于处理的方法将丰富的动态信息输入CNN/GDL模型仍然是一个挑战。 自动化和标准化流程: 开发用户友好的工具和标准化的流程,覆盖从分子输入到图像生成、特征提取、模型训练和解释的整个工作流程,对于更广泛的采用和可重复性至关重要。 增强的可解释性技术: 继续研究专门针对化学图像和三维结构的模型可解释性方法,对于从这些复杂模型中提取可操作的科学见解至关重要。 基于图像的分子表征学习的发展历程证明了跨学科创新的力量,它大量借鉴了计算机视觉的成果,同时适应了化学数据的独特挑战。随着计算资源的增长和AI方法的日益复杂,这些视觉方法有望在加速新药发现和开发方面发挥越来越关键的作用。富含信息的图像数据与先进学习范式的融合,有望解锁对分子结构与生物功能之间复杂关系的更深刻见解。 VII. 参考文献 (一个正式报告会在此处根据统一的引文风格,如ACS或Nature风格,编纂一个基于所提供摘要的完整参考文献列表。) 部分关键参考文献 (基于所提供摘要的示例性列表): Li, Y., Liu, B., Deng, J., Guo, Y., Du, H. Image-based molecular representation learning for drug development: a survey. Briefings in Bioinformatics, 2024, 25(4), bbae294. RDKit: Open-Source Cheminformatics Software. https://www.rdkit.org Riniker, S., Landrum, G. A. Better Informed Distance Geometry: Using What We Know To Improve Conformation Generation. J. Chem. Inf. Model. *2011*5, 55, 12, 2562–2574. RDKit Documentation: Molecular Drawing. https://www.rdkit.org/docs/GettingStartedInPython.html#drawing-molecules RDKit Documentation: rdkit.Chem.Draw.rdMolDraw2D — RDKit documentation. https://www.rdkit.org/docs/source/rdkit.Chem.Draw.rdMolDraw2D.html RDKit Cookbook: Drawing molecules. https://www.rdkit.org/docs/Cookbook.html#drawing-molecules Ma, B.,ደን λόViswanathan, U., Ji, H. F., & Willett, P. An evaluation of 2D fingerprint-based measures of similarity between small molecules for the prediction of protein targets. Mol. Inf. 2015, 34, 104-110. (间接相关,说明特征提取的重要性) (此处应为 MolDrawOptions.highlightAtomColors 或 DrawMolecule 中 highlightAtomColors 的具体 RDKit 文档或示例) Pillow (PIL Fork) documentation. https://pillow.readthedocs.io/ RDKit Documentation: rdkit.Chem.Draw.MolDrawOptions — RDKit documentation. https://www.rdkit.org/docs/source/rdkit.Chem.Draw.MolDrawOptions.html Wildcard Consulting Blog (David Hall). Chemception: Going from Molecules to Images in RDKit. https://wildcardconsulting.dk/chemception-going-from-molecules-to-images-in-rdkit/ (2018). (引用文献中的博客) Rifaioglu, A.S., Nalbat, E., Atalay, V., Doğan, T., Martin, M.J., Cetin-Atalay, R., Atalay, V. DEEPScreen: high performance drug–target interaction prediction with convolutional neural networks using 2-D structural compound representations. Chemical Science, 2020, 11, 2531–2557. Zeng, X., Xiang, H., Yu, L., Wang, J., Wang, Y., Liu, B., Li, K., Cheng, F. Accurate prediction of molecular properties and drug targets using a self-supervised image representation learning framework. Nature Machine Intelligence, 2022, 4, 960–972. Goh, G.B., Siegel, C., Vishnu, A., Hodas, N.O., Baker, N.A. Chemception: A Deep Neural Network with Minimal Chemistry Knowledge Matches the Performance of Expert-developed QSAR/QSPR Models. arXiv:1706.06689, 2017. (后续发表于 J. Comput. Chem.) (同14) (RDKit DrawingOptions.dotsPerAngstrom 的具体文档或示例) (RDKit MolDrawOptions.setAtomPalette 的具体文档或示例) (同11, 14) Goh, G. B., Hodas, N. O., & Vishnu, A. Deep learning for computational chemistry. J. Comput. Chem. 2017, 38, 1291-1307. GitHub repository: https://github.com/Abdulk084/Chemception (Chemception Keras/TensorFlow 实现示例) Cortés-Ciriano, I., Bender, A. KekuleScope: prediction of cancer cell line sensitivity and compound potency using convolutional neural networks trained on compound images. Journal of Cheminformatics, 2019, 11, 41. GitHub repository: https://github.com/isidroc/kekulescope (KekuleScope PyTorch 实现) Fernandez, M., Ban, F., Woo, G., Hsing, M., Yamazaki, T., LeBlanc, E., Rennie, P.S., Welch, W.J., Cherkasov, A. Toxic Colors: The Use of Deep Learning for Predicting Toxicity of Compounds Merely from Their Graphic Images. Journal of Chemical Information and Modeling, 2018, 58(8), 1533–1543. (此处应为 ADMET-CNN 的主要参考文献) Shi, T., Yang, Y., Huang, S., Catana, C., Zheng, M. Molecular image-based convolutional neural network for the prediction of ADMET properties. Chemometrics and Intelligent Laboratory Systems, 2019, 194, 103853. (此处应为 QSAR-CNN (Zhong et al.) 的主要参考文献) Zhong, R., Lv, M., Zhou, P., Li, C., Li, J., Yang, H., & Chen, J. (2021). QSAR-CNN: A novel method for predicting the reactivity of organic contaminants with OH radicals. Water Research, 190, 116722. (根据综述内容推测) (此处应为 Hirohara M. et al. 的主要参考文献) Hirohara, M., Saito, Y., Koda, Y., Sato, K., & Sakakibara, Y. (2018). Convolutional neural network based on SMILES representation of compounds for detecting chemical moti2f. BMC Bioinformatics, 19(S19), 525. (根据综述内容推测) (此处应为 BESTox 的主要参考文献) Zhao, Q., Xia, J., Hu, J., Yin, Z., & Liu, S. (2019). BESTox: a 2D SMILES-based deep learning method for acute oral toxicity prediction. Journal of Cheminformatics, 11(1), 1-12. (根据综述内容推测) (此处应为 ResNet18DNN 的主要参考文献) Zhao, J., Liu, P., Li, H., Li, S., Zhang, B., Feng, Y., … & Wang, Y. (2021). ResNet18DNN: a residual neural network for prediction of drug-induced liver injury. Briefings in Bioinformatics, 22(5), bbab056. (根据综述内容推测) Liu, P., Li, H., Li, S., Lv, H., Gong, J., Liu, H., Wang, Y. Improving prediction of phenotypic drug response on cancer cell lines using deep convolutional network. BMC Bioinformatics, 2019, 20, 241. Asilar, E., Hemmerich, J., Ecker, G.F. Image Based Liver Toxicity Prediction. Journal of Chemical Information and Modeling, 2020, 60(3), 1111–1121. (同29) (同31) (同33) GitHub repository: https://github.com/Lowpassfilter/tCNNS-Project (tCNNs 实现) (DILI预测相关文献,可能涉及指纹和CNN) (同34) (OpenBabel 相关文献或网站: http://openbabel.org) (Schrödinger Maestro 软件信息: https://www.schrodinger.com/products/maestro) (Deepsnap (Uesawa) 的相关文献或 Jmol: http://jmol.sourceforge.net/) Matsuzaka, Y., Uesawa, Y. Optimization of a deep-learning method based on the classification of images generated by parameterized deep snap a novel molecular-image-input technique for quantitative structure–activity relationship (QSAR) analysis. Frontiers in Bioengineering and Biotechnology, 2019, 7, 65. (RDKit MolDraw3D 文档: https://www.rdkit.org/docs/source/rdkit.Chem.Draw.rdMolDraw3D.html) (AtomNet 的原始文献: Wallach, I., Dzamba, M., & Heifets, A. (2015). AtomNet: A Deep Convolutional Neural Network for Bioactivity Prediction in Structure-based Drug Discover3y. arXiv:1510.02855) (Ragoza et al. 关于体素化的文献,可能与GNINA相关) Ragoza, M., Hochman, J., St-Maurice, J. P., & Koes, D. R. (2017). Ligand pose optimization with atomic grid-based potentials. Journal of Chemical Information and Modeling, 57(4), 942-957. (与libmolgrid相关) (DeepSite 的原始文献: Jimenez, J., Doerr, S., Martinez-Rosell, G., Rose, A. S., & De Fabritiis, G. (2017). DeepSite: protein-binding site predictor using 3D-convolutional neural networks. Bioinformatics, 33(19), 30346-3042.) (KDEEP 的原始文献: Jiménez, J., Škalič, M., Martínez-Rosell, G., & De Fabritiis, G. (2018). KDeep: Protein–Ligand Binding Affinity Prediction with 3D Convolutional Neural Networks. J. Chem. Inf. Model., 58(2), 287-296.) (Pafnucy 的原始文献: Stepniewska-Dziubinska, M.M., Zielenkiewicz, P., Siedlecki, P. Development and evaluation of a deep learning model for protein–ligand binding affinity prediction. Bioinformatics, 2018, 34(21), 3666–3674.) GitHub repository: http://gitlab.com/cheminfIBB/pafnucy (Pafnucy 代码) Kuzminykh, D., Kadurin, A., Zhebrak, A., Baskov, I., Nikolenko, S., Shayakhmetov, R., Zhavoronkov, A. 3D Molecular Representations Based on the Wave Transform for Convolutional Neural Networks. Molecular Pharmaceutics, 2018, 15(10), 4516–4521. GitHub repository: https://github.com/gnina/libmolgrid (libmolgrid 代码) (DeepChem RdkitGridFeaturizer 文档: https://deepchem.readthedocs.io/en/latest/api_reference/featurizers.html#rdkitgridfeaturizer) GitHub repository: https://github.com/deepchem/deepchem (DeepChem 代码) (MolVoxel 相关信息: https://github.com/SeonghwanSeo/molvoxel) (NEARL 相关信息: https://github.com/miemiemmmm/Nearl) (MaSIF 的原始文献: Gainza, P., Sverrisson, F., Monti, F., Rodolà, E., Boscaini, D., Bronstein, M.M., Correia, B.E. MaSIF: an open-source tool based on geometric deep learning for search and design of molecular surface interactions. Nature Methods, 2020, 17, 182–191.) GitHub repository: https://github.com/LPDI-EPFL/masif (MaSIF 代码) (PINet 的原始文献: Gainza, P., et al. (2020). Deciphering interaction fingerprints from protein molecular surfaces using geometric deep learning. Nature Methods, 17(2), 1582-191. 注意这篇文献与MaSIF是同一篇,PINet是其应用之一或相关后续。) (PointNet 的原始文献: Qi, C. R., Su, H., Mo, K., & Guibas, L. J. (2017). Pointnet: Deep learning on point sets for 3d classification and segmentation. *Proceedings of the IEEE conference on6* *computer vision and pattern recognitio7*n.) Wang, Y., Sun, S., Li, Z., Liu, F., & Zheng, W. (2022). A point cloud-based deep learning strategy for protein-ligand binding affinity prediction. Briefings in Bioinformatics, 23(1), bbab429. (PGpocket 的原始文献: Zhao, L., He, H., Wang, B., Liu, B., & Wang, S. (2024). PGpocket: predicting protein ligand binding sites with a pre-trained graph neural network model on point clouds. Briefings in Bioinformatics, 25(1), bbad424.) (VideoMol 的主要参考文献,例如: Zeng, X., Xiang, H., Hou, L., Zhang, T., Wang, J., Wang, Y., Li, K., Cheng, F. Molecular video-based foundation model for drug discovery. Nature Communications, 2024, 15, 123.) (PyMOL 软件信息: https://pymol.org/) (MolPMoFiT 的原始文献: Li, X., & Fourches, D. (2020). MolPMoFiT: A Universal Molecular Representation Learning Framework for Property Prediction. Journal of Chemical Information and Modeling, 60(10), 4539-4549.) GitHub repository: https://github.com/XinhaoLi74/MolPMoFiT (MolPMoFiT 代码) (MCNN-DDI 的原始文献: Asfand-E-Yar, M., et al. (2024). MCNN-DDI: A Multi-Modal Convolutional Neural Network Model for Predicting Drug-to-Drug Interaction Events. Scientific Reports, 14, XXXX. (具体文章号需查证)) (MultiDTI 的原始文献: Zhou, D., et al. (2020). MultiDTI: A general framework for predicting drug-target interactions based on graph embedding and heterogeneous network. Briefings in Bioinformatics, 21(5), 1829-1840.) GitHub repository: https://github.com/Deshan-Zhou/MultiDTI (MultiDTI 代码) (ISMol 和 CGIP 相关信息,如GitHub: https://github.com/Shihang-Wang-58/papers_for_molecular_representation 中引用的论文) (Dalkiran/TransferLearning4DTI 的相关信息) (Li et al. 2020 JIOHS 的具体文献) Harnik, M., Alon, G., Nitzan, M., & Shalev-Shwartz, S. (2024). MoleCLIP: A molecular image representation learning framework based on CLIP. ChemRxiv. DOI: 10.26434/chemrxiv-2024-r1zxt (预印本) (convAE / dmitrav/pheno-ml 的相关信息) VIII. 附录:工具与方法表 下表概述了本报告中讨论的关键分子到图像工具和方法,重点是它们的图像生成特性、底层技术、代码可用性以及在基于CNN的药物发现中的主要应用领域。 表1:用于CNN应用的分子到图像工具和方法概述 工具/方法名称 (主要参考文献) 输入分子格式 输出图像类型 关键图像生成细节/参数 核心Python库/软件 公开代码链接 主要CNN应用领域 综述引用页/表 RDKit (通用) SMILES, MOL, SDF 2D图像 (PNG, SVG) 可自定义大小、分辨率 (dotsPerAngstrom)、高亮(原子、键、颜色)、图例、描绘风格(kekulization, 楔形键)。MolToImage, MolDraw2DCairo。 RDKit, Pillow https://github.com/rdkit/rdkit 通用化学信息学, 各种QSAR/ML p.3, 表4 KekuleScope (Cortés-Ciriano & Bender, 2019) [^21] SMILES (来自ChEMBL) 2D凯库勒结构图像 标准2D表示。使用预训练CNN (AlexNet, DenseNet, ResNet, VGG)。 RDKit, PyTorch, Pillow https://github.com/isidroc/kekulescope 癌细胞系敏感性, 化合物效价 p.5, 表3, 4 Chemception (Goh et al., 2017) [^15] SMILES 2D灰度或多通道图像 4通道示例: 键级, 原子序数, Gasteiger电荷, 杂化态。图像大小 (如80x80, 48x48),分辨率 (如0.5 Å/像素)。通道编码化学特征。 RDKit, Keras/TF, Pillow https://github.com/Abdulk084/Chemception (示例) 毒性、活性、溶解性预测 p.6, 表3, 4 DEEPScreen (Rifaioglu et al., 2020) [^12] SMILES 2D结构图像 200x200像素, RDKit生成。规范朝向。省略手性。 RDKit, (DL框架) (方法在论文中,无直接代码链接) 药物-靶点相互作用 (DTI) 预测 p.5, 表3 Toxic Colors (Fernandez et al., 2018) [^23] SMILES (推测) 2D化学草图 “简易2D草图”,颜色通道相关。细节在补充材料。 (CNN框架) (细节在论文补充材料) 毒性预测 (Tox21) p.6, 表3 ImageMol (Zeng, Xiang et al., 2022) [^13] 规范SMILES 2D图像 224x224像素。Smiles2Img函数。使用ResNet18骨干的自监督预训练。 RDKit, PyTorch https://github.com/HongxinXiang/ImageMol 分子性质, 药物靶点, 抗SARS-CoV-2 p.8, 表3, 4 ADMET-CNN (Shi et al., 2019) [^1] SMILES/SDF (推测) 分子二维图像 具体图像生成参数细节不多,但专注于ADMET性质。 (CNN框架) (无直接代码链接) ADMET性质预测 p.5, 表3 QSAR-CNN (Zhong et al., 2021) [^1] SMILES/SDF (推测) 分子图像 用于预测污染物与OH自由基的反应性。应用了迁移学习和数据增强。Grad-CAM用于解释。 (CNN框架) (无直接代码链接) QSAR, 反应性预测 p.5, 表3 ResNet18DNN (Zhao et al. in [^1]) [^38] 分子结构 (推测图像或特征图) 18层ResNet提取特征用于DILI预测。输入类型需查阅原文。综述列为基于图像。 (DL框架) (无直接代码链接) 药物性肝损伤 (DILI) 预测 p.6, 表3 tCNNs (Liu et al., 2019) [^1] SMILES 1D CNN on One-Hot SMILES矩阵 规范SMILES填充到统一长度,然后one-hot编码。(72通道 x 188长度)。矩阵列作为1D卷积通道。 Python, (CNN框架) https://github.com/Lowpassfilter/tCNNS-Project 表型药物反应预测 p.7, 表4 Maestro (3D快照) [^1] 3D构象 (SDF) 2D快照图像 (多角度) 全局旋转 (如y轴, 8x45°),每视角保存图像。原子颜色,键样式。 Maestro (商业) (专有软件) 性质预测 (Asilar et al.) p.3 Deepsnap (Uesawa Y., Matsuzaka Y.) [^1] SMILES / 3D构象 3D快照图像 (参数化, 多角度) CORINA生成3D坐标, Jmol/PyMOL球棍渲染, 360°旋转 (如45°步长), 256x256 PNG。可自定义原子颜色、键半径、像素大小。 CORINA, Jmol/PyMOL, Python (此版本无公开代码链接) QSAR, 毒性预测 p.6, 表3 Pafnucy (Stepniewska-Dziubinska et al., 2018) [^76] PDB/MOL2 (Prot-Lig) 3D体素网格 20Å立方盒, 1Å分辨率。每个体素19个原子特征 (原子类型, 杂化, 价键, SMARTS属性, 电荷, 分子类型)。 OpenBabel, Chimera, Python, TF/Keras http://gitlab.com/cheminfIBB/pafnucy 蛋白质-配体结合亲和力 用户查询 DeepSite (Jimenez et al., 2017) [^66] PDB (Protein) 3D体素网格 1ų体素, 8通道 (疏水, 芳香, H键供/受, +/-离子化, 金属, 排除体积) 基于AutoDock4原子类型。网格覆盖蛋白质+8Å缓冲。 Python (推测), (CNN框架) www.playmolecule.org (服务器) 蛋白质结合位点预测 用户查询 MaSIF (Gainza et al., 2020) [^92] PDB (Protein) 带指纹的3D表面面片 MSMS表面上的测地线面片 (9Å或12Å半径)。几何 (形状指数, 曲率) 和化学 (电荷, H键, 疏水性) 特征。测地线CNN。 MSMS, PyMesh, APBS, PDB2PQR, BioPython, open3D, Python, TF https://github.com/LPDI-EPFL/masif PPI位点预测, 配体预测 用户查询 PINet (Gainza et al., 2020) [^98] PDB (蛋白对) 蛋白质结构的点云 输入点云对。学习几何和理化表面互补性。使用类PointNet架构。 Python, (GDL框架) (PINet本身代码链接不明显) 蛋白质相互作用界面预测 用户查询 VideoMol (Zeng, Xiang et al., 2024) [^107] SMILES/3D构象 分子视频 (2D帧序列) RDKit构象(MMFF94)。PyMOL旋转(X,Y,Z轴)并渲染60帧(224x224像素)。 RDKit, PyMOL, Python, (视频CNN框架) (VideoMol无公开代码链接) 分子靶点和性质预测, 抗病毒药物 用户查询 Kuzminykh D. et al. (2018) [^78] SMILES/3D构象 3D体素网格 (小波变换平滑) 0.5Å网格, one-hot原子类型 (6-9通道)。小波变换卷积以减少稀疏性并改善特征传播。 Python, (CNN框架) (无公开代码链接) 分子表征, 分类 用户查询 MultiDTI (Zhou et al.) [^126] 异构网络数据, 药/靶序列 (无直接图像生成, 映射到公共空间) 结合网络信息和序列信息。使用联合学习框架。 Python, PyTorch, scikit-learn https://github.com/Deshan-Zhou/MultiDTI 药物-靶点相互作用预测 p.7, 表4 Image-based CNN (Asilar et al., 2020) [^51] 3D构象 (SDF) 3D快照图像 (多角度) Maestro旋转3D构象 (y轴, 8x45°) 并捕获图像。颜色编码原子。图像尺寸64x64, 128x128, 192x192。COVER上采样。 Maestro, Python (推测) (无直接代码链接) 肝毒性预测 p.6, 表3 convAE (Dmitrenko et al.) [^91] 2D癌细胞图像 图像的潜在特征向量 在1M癌细胞图像上训练的卷积自编码器 (非直接分子结构)。输入图像128x128。 Python, (DL框架) https://github.com/dmitrav/pheno-ml 分析药物对癌细胞的效应 p.5, 表4 DeepChem (RdkitGridFeaturizer) [^85] 蛋白-配体文件 (PDB, SDF) 3D体素网格 以配体为中心的盒子。可自定义box_width, voxel_width。特征: ‘ecfp’, ‘splif’, ‘sybyl’, ‘charge’, ‘hbond’等。nb_rotations用于增强。 RDKit, DeepChem (Python) https://github.com/deepchem/deepchem 结合亲和力, 复合物性质 用户查询 注意:表中部分工具(如Li et al., Dalkiran et al.)主要使用非图像输入(如光谱),或其针对分子结构的图像生成细节在提供的摘要中未详细说明。BESTox和Hirohara M. et al. 使用SMILES的矩阵表示而非视觉图像。此表主要关注那些以CNN图像生成为核心或细节清晰的方法。
Machine Learning & AI
· 2025-06-05
Image-based Molecular Representation (II): 2D Molecular Image Representations
基于图像的分子表征:二维(2D)分子图像表征 二维图像是分子最直接的视觉表征,通常源自SMILES字符串。它们具有简单和直观的特点,使其成为分子设计和分析,特别是高通量应用中一个引人注目的选择。二维分子图像为CNN提供了更直接可用和信息更丰富的输入,旨在减轻网络学习基本化学特征的负担,从而可能带来性能或数据效率的提升。 一、RDKit基础用法 RDKit是解析SMILES、生成二维坐标和渲染分子图像的主要库[1]。其GitHub仓库是 https://github.com/rdkit/rdkit 。RDKit是一个核心的开源化学信息学工具包,广泛用于将SMILES字符串转换为二维分子图像。 1.1 基础工作流程 一般的工作流程包括: 解析SMILES字符串以创建RDKit Mol对象 生成用于描绘的二维坐标 将此布局渲染成图像格式,通常是Python中的PIL Image对象 1.2 关键RDKit模块和函数 基础函数 Chem.MolFromSmiles():将SMILES字符串解析为RDKit Mol对象[2] Draw.MolToImage():从Mol对象生成PIL Image,允许基本的自定义,如图像大小、kekulization和楔形键的显示[3] rdDepictor.Compute2DCoords():生成用于描绘的2D坐标。使用rdDepictor.SetPreferCoordGen(True)有助于实现更一致的分子朝向[4] AllChem.Compute2DCoords():另一种生成2D坐标的选择[5] 高级绘图类 Draw.MolDraw2DCairo:生成光栅图像(如PNG),提供更细致的绘图选项控制[6] Draw.MolDraw2DSVG:生成矢量图像,提供更细致的绘图选项控制[6] 1.3 CNN输入的关键参数和自定义 图像大小 一致性对CNN输入至关重要: DEEPScreen使用200x200像素[7] ImageMol默认为224x224像素[8] Chemception通常使用80x80像素[9] RDKit的MolToImage接受一个size元组 MolDraw2DCairo则在初始化时指定宽度和高度 分辨率和细节 DrawingOptions.dotsPerAngstrom(用于MolToImage)控制像素密度相对于分子大小的比例[10] MolDrawOptions.fixedBondLength可以固定键在图像中的像素长度,以实现一致的缩放[11] 原子和键的高亮 highlightAtoms和highlightBonds参数可用于MolToImage以及绘图类的DrawMolecule方法[3] highlightColor(用于MolToImage)或MolDrawOptions.highlightColour设置高亮颜色[3] MolDrawOptions.atomColourPalette或MolDraw2D.DrawMolecule(highlightAtomColors={atom_index: (R,G,B)})允许自定义特定原子的颜色[12] 原子和键的颜色 MolDrawOptions.setAtomPalette({atom_index: (R,G,B)})可以设置自定义的原子颜色调色板[11] RDKit Cookbook也展示了使用useBWAtomPalette()生成黑白图像的方法[13] 图例(Legends) DrawMolecule中的legend参数**或MolsToGridImage中的legends参数可以添加文本注释[3] MolDrawOptions如legendFontSize和legendFraction控制图例外观[11] 1.4 基础代码示例 基础MolToImage示例 from rdkit import Chem from rdkit.Chem.Draw import MolToImage mol = Chem.MolFromSmiles("CN1C=NC2=C1C(=O)N(C(=O)N2C)C") # Caffeine img = MolToImage(mol, size=(256, 256)) # img.save("caffeine_2d.png") MolDraw2DCairo带高亮示例 from rdkit import Chem from rdkit.Chem.Draw import rdMolDraw2D from io import BytesIO # 用于在内存中处理图像数据 # from PIL import Image # 用于查看或保存图像 mol = Chem.MolFromSmiles("Cc1ccccc1O") # o-cresol # 高亮甲基所在的子结构 substructure = Chem.MolFromSmarts("c(C)O") # 带有甲基和羟基的芳香碳 match = mol.GetSubstructMatch(substructure) drawer = rdMolDraw2D.MolDraw2DCairo(300, 300) # width, height # 自定义原子颜色示例 atom_colors = {} if match: for atom_idx in match: if mol.GetAtomWithIdx(atom_idx).GetSymbol() == 'O': atom_colors[atom_idx] = (1.0, 0.0, 0.0) # 氧原子用红色 elif mol.GetAtomWithIdx(atom_idx).GetSymbol() == 'C': atom_colors[atom_idx] = (0.0, 0.0, 1.0) # 碳原子用蓝色 drawer.DrawMolecule(mol, highlightAtoms=match, highlightAtomColors=atom_colors, legend="o-cresol with substructure highlight") drawer.FinishDrawing() png_data = drawer.GetDrawingText() # 获取PNG数据 (bytes) # with open("o_cresol_highlighted.png", "wb") as f: # f.write(png_data) 二、具体方法和实现 2.1 ImageMol 方法简介 ImageMol是一个基于分子图像的无监督预训练深度学习框架,用于计算化学药物发现[14]。该框架在1000万无标签的类药物生物活性分子上进行预训练,结合了图像处理框架和全面的分子化学知识,以视觉计算方式提取精细的像素级分子特征[15]。 ImageMol的核心创新: 利用分子图像作为化合物的特征表示,具有高精度和低计算成本 利用无监督预训练学习框架从1000万种具有多样生物活性的类药物化合物中捕获分子图像的结构信息 预训练策略 ImageMol采用五种预训练策略来优化分子编码器的潜在表示[16]: Mask-based contrastive learning (MCL):对分子图像的16×16方形区域进行掩码,训练模型最小化掩码和未掩码图像提取的潜在特征之间的距离 Molecular rationality discrimination (MRD):预测输入图像是否合理 Jigsaw puzzle prediction (JPP):将图像分解为九个补丁,随机重排后预测正确顺序 Image rotational prediction:预测图像的旋转角度 Contrastive learning:学习相似分子的相似表示 代码实现 基础图像生成: def smiles_to_image(smis, size=224, save_path=None): try: mol = Chem.MolFromSmiles(smis) img = Draw.MolsToGridImage([mol], molsPerRow=1, subImgSize=(size, size)) if save_path is not None: img.save(save_path) return img except: return None 完整的latent feature提取功能: import os import torch import torchvision.transforms as transforms import torchvision.models as models from tqdm import tqdm import requests from rdkit import Chem from rdkit.Chem import Draw def download_pretrained_model(model_url, cache_dir=None, force_download=False): """ 下载并缓存预训练模型文件 参数: model_url: 模型下载链接 cache_dir: 缓存目录(默认为系统临时目录下的 imagemol_cache) force_download: 是否强制重新下载模型 返回: model_path: 模型文件路径 """ if cache_dir is None: cache_dir = os.path.join(tempfile.gettempdir(), "imagemol_cache") os.makedirs(cache_dir, exist_ok=True) model_path = os.path.join(cache_dir, "ImageMol.pth.tar") if force_download or not os.path.exists(model_path): print("开始下载预训练模型...") download_file_from_google_drive(model_url, model_path) print(f"模型已下载到: {model_path}") return model_path def load_pretrained_model(model_name="ResNet18", image_size=224, pretrained=False, model_url=None): """ 加载预训练模型(支持从本地或远程下载) 参数: model_name: 模型架构名称 (ResNet18/ResNet34/ResNet50) image_size: 输入图像尺寸 pretrained: 是否使用 PyTorch 官方预训练权重 model_url: 自定义预训练权重下载链接 返回: model: 加载好的模型 """ # 如果指定了自定义模型链接,则先下载 if model_url: model_path = download_pretrained_model(model_url) else: model_path = None # 使用官方预训练权重 if model_name == "ResNet18": model = models.resnet18(pretrained=pretrained) elif model_name == "ResNet34": model = models.resnet34(pretrained=pretrained) elif model_name == "ResNet50": model = models.resnet50(pretrained=pretrained) else: raise ValueError(f"不支持的模型架构: {model_name}") # 如果提供了自定义模型路径,加载权重 if model_path: try: checkpoint = torch.load(model_path, map_location=torch.device('cpu')) model.load_state_dict(checkpoint['model_state_dict']) print("=> 成功加载自定义预训练权重") except Exception as e: print(f"=> 加载预训练权重失败: {e}") print("尝试直接从 torchvision 加载官方预训练权重...") model = models.resnet18(pretrained=True) # 示例回退到官方权重 return model def download_file_from_google_drive(url, destination): """ 从 Google Drive 下载文件(支持大文件) """ file_id = url.split('/')[-2] if 'view' in url else url.split('/')[-1] base_url = 'https://docs.google.com/uc?export=download' session = requests.Session() response = session.get(base_url, params={'id': file_id}, stream=True) # 处理下载确认 for key, value in response.cookies.items(): if key.startswith('download_warning'): params = {'id': file_id, 'confirm': value} response = session.get(base_url, params=params, stream=True) break # 写入文件 with open(destination, 'wb') as f: with tqdm(unit='B', unit_scale=True, unit_divisor=1024) as bar: for chunk in response.iter_content(32768): if chunk: f.write(chunk) bar.update(len(chunk)) # 示例:创建 ResNet18 模型并提取 latent feature def smiles_to_latent(smiles, model, image_size=224): """ 将 SMILES 字符串转换为 latent feature """ mol = Chem.MolFromSmiles(smiles) if mol is None: raise ValueError(f"无法解析 SMILES: {smiles}") # 生成分子图像 img = Draw.MolsToGridImage([mol], molsPerRow=1, subImgSize=(image_size, image_size)) img_path = "temp_molecule.png" img.save(img_path) # 图像预处理 transform = transforms.Compose([ transforms.Resize((image_size, image_size)), transforms.ToTensor(), transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]) ]) img_tensor = transform(Image.open(img_path).convert('RGB')).unsqueeze(0) # 提取 latent feature with torch.no_grad(): embedding_layer = list(model.children())[:-1] embedding_model = torch.nn.Sequential(*embedding_layer) latent_feature = embedding_model(img_tensor).squeeze() return latent_feature # 主程序 if __name__ == "__main__": # 1. 下载并加载模型 model_url = "https://drive.usercontent.google.com/download?id=1wQfby8JIhgo3DxPvFeHXPc14wS-b4KB5&export=download&authuser=0" model = load_pretrained_model( model_name="ResNet18", model_url=model_url # 使用自定义预训练权重 ) # 2. 示例 SMILES mol_smiles = "Cc1ccccc1O" # 异丙苯酚 latent = smiles_to_latent(mol_smiles, model) print(f"Latent feature shape: {latent.shape}") print(f"Latent feature sample: {latent[:5]}") 代码说明和来源 原仓库:https://github.com/HongxinXiang/ImageMol 主要文件:smiles2img_pretrain.py和dataloader/image_dataloader.py License:MIT License 论文:发表在Nature Machine Intelligence (2022),题目为”Accurate prediction of molecular properties and drug targets using a self-supervised image representation learning framework” 2.2 Chemception 方法简介 Chemception是受Google Inception-ResNet深度卷积神经网络启发开发的深度CNN,仅使用分子2D图像进行化学性质预测,无需提供额外的显式化学知识,如基本概念(周期性)或高级特征(分子描述符和指纹)[17]。 Chemception的关键创新: 多通道图像表示:将显式的化学特征直接编码到图像通道中,为神经网络提供更丰富、信息量更大的输入 四通道编码方案:每个通道编码不同的化学属性,使CNN能够”看到”特定位置的化学性质 多通道表示方法 Chemception采用4通道图像方法,每个通道编码特定的化学信息[18]: 通道0:编码键级(例如,单键为1.0,双键为2.0) 通道1:编码原子序数 通道2:编码原子杂化状态(例如,sp, sp2, sp3表示为数值) 通道3:编码Gasteiger部分电荷 图像尺寸通常为80x80像素或48x48像素。 代码实现 import numpy as np from rdkit import Chem from rdkit.Chem import AllChem import matplotlib.pyplot as plt def chemcepterize_mol(mol, embed=20.0, res=0.5): """ 将RDKit分子对象转换为Chemception格式的多通道图像 参数: mol: RDKit分子对象 embed: 嵌入大小,控制图像的空间范围 res: 分辨率,每像素对应的空间距离 返回: vect: 形状为(dims, dims, 4)的numpy数组,包含4个通道的化学信息 """ dims = int(embed*2/res) # 复制分子并计算Gasteiger电荷 cmol = Chem.Mol(mol.ToBinary()) cmol.ComputeGasteigerCharges() AllChem.Compute2DCoords(cmol) coords = cmol.GetConformer(0).GetPositions() # 初始化4通道图像向量 vect = np.zeros((dims, dims, 4)) # 首先处理键信息(通道0) for i, bond in enumerate(mol.GetBonds()): bondorder = bond.GetBondTypeAsDouble() bidx = bond.GetBeginAtomIdx() eidx = bond.GetEndAtomIdx() bcoords = coords[bidx] ecoords = coords[eidx] frac = np.linspace(0, 1, int(1/res*2)) for f in frac: c = (f*bcoords + (1-f)*ecoords) idx = int(round((c[0] + embed)/res)) idy = int(round((c[1] + embed)/res)) # 确保索引在图像范围内 if 0 <= idx < dims and 0 <= idy < dims: vect[idx, idy, 0] = bondorder # 保存键级到第一个通道 # 处理原子信息(通道1-3) for i, atom in enumerate(cmol.GetAtoms()): idx = int(round((coords[i][0] + embed)/res)) idy = int(round((coords[i][1] + embed)/res)) # 确保索引在图像范围内 if 0 <= idx < dims and 0 <= idy < dims: # 原子序数(通道1) vect[idx, idy, 1] = atom.GetAtomicNum() # Gasteiger电荷(通道3) try: charge = float(atom.GetProp("_GasteigerCharge")) vect[idx, idy, 3] = charge except: vect[idx, idy, 3] = 0.0 # 杂化状态(通道2) hyptype = atom.GetHybridization().real vect[idx, idy, 2] = hyptype return vect # 使用示例 def demo_chemception(): """演示Chemception图像生成""" # 创建分子对象 mol = Chem.MolFromSmiles("CCO") # 乙醇 # 生成Chemception图像 v = chemcepterize_mol(mol, embed=10, res=0.2) print(f"图像形状: {v.shape}") # 输出:(100, 100, 4) # 可视化前3个通道(模拟RGB图像) plt.figure(figsize=(12, 4)) plt.subplot(1, 4, 1) plt.imshow(v[:, :, 0], cmap='viridis') plt.title('通道0: 键级') plt.colorbar() plt.subplot(1, 4, 2) plt.imshow(v[:, :, 1], cmap='viridis') plt.title('通道1: 原子序数') plt.colorbar() plt.subplot(1, 4, 3) plt.imshow(v[:, :, 2], cmap='viridis') plt.title('通道2: 杂化状态') plt.colorbar() plt.subplot(1, 4, 4) plt.imshow(v[:, :, 3], cmap='viridis') plt.title('通道3: Gasteiger电荷') plt.colorbar() plt.tight_layout() plt.show() return v # demo_chemception() 代码说明和来源 原仓库:https://github.com/Abdulk084/Chemception 主要文件:chemcemption.ipynb License:MIT License 论文:Goh等人2017年发表的”Chemception: A Deep Neural Network with Minimal Chemistry Knowledge Matches the Performance of Expert-developed QSAR/QSPR Models”[17] 2.3 DEEPScreen 方法简介 DEEPScreen是一个大规模药物-靶点相互作用(DTI)预测系统,用于早期药物发现,使用深度卷积神经网络和化合物的2D结构表示作为输入[19]。DEEPScreen的主要优势是在输入层使用现成的2D结构表示,而不是性能有限的传统描述符。 DEEPScreen的特点: 对704个目标蛋白质进行训练(使用精心策划的生物活性数据) 使用200x200像素的2D结构表示 手性信息被省略(这是SMILES表示的局限性,而非图像生成过程的问题) 生成了近2100万个新的DTI预测 代码实现 import os import subprocess from rdkit import Chem from rdkit.Chem import Draw from rdkit.Chem.Draw import DrawingOptions import cairosvg # 配置参数 IMG_SIZE = 200 training_files_path = "/path/to/training_files" # 需要根据实际情况修改 def save_comp_imgs_from_smiles(tar_id, comp_id, smiles): """ 将分子的 SMILES 表示转换为图片 参数: tar_id: 目标 ID comp_id: 化合物 ID smiles: 分子的 SMILES 字符串 """ # 创建分子对象 mol = Chem.MolFromSmiles(smiles) if mol is None: print(f"无法解析SMILES: {smiles}") return # 设置绘图选项 DrawingOptions.atomLabelFontSize = 55 DrawingOptions.dotsPerAngstrom = 100 DrawingOptions.bondLineWidth = 1.5 # 确保目标目录存在 target_dir = os.path.join(training_files_path, "target_training_datasets", tar_id, "imgs") os.makedirs(target_dir, exist_ok=True) # 绘制分子为 SVG 图像 svg_path = os.path.join(target_dir, f"{comp_id}.svg") Draw.MolToFile(mol, svg_path, size=(IMG_SIZE, IMG_SIZE)) # 将 SVG 图像转换为 PNG 图像 png_path = os.path.join(target_dir, f"{comp_id}.png") cairosvg.svg2png(url=svg_path, write_to=png_path) # 删除临时的 SVG 文件 if os.path.exists(svg_path): subprocess.call(["rm", svg_path]) print(f"已生成图像: {png_path}") def batch_generate_images(tar_id, smiles_dict): """ 批量生成分子图像 参数: tar_id: 目标ID smiles_dict: 字典,键为化合物ID,值为SMILES字符串 """ for comp_id, smiles in smiles_dict.items(): try: save_comp_imgs_from_smiles(tar_id, comp_id, smiles) except Exception as e: print(f"生成图像失败 - 化合物ID: {comp_id}, SMILES: {smiles}, 错误: {e}") # 使用示例 if __name__ == "__main__": # 示例数据 tar_id = "CHEMBL286" smiles_data = { "CHEMBL1": "CCO", # 乙醇 "CHEMBL2": "CCOC", # 乙醚 "CHEMBL3": "CN1C=NC2=C1C(=O)N(C(=O)N2C)C", # 咖啡因 } # 生成图像 batch_generate_images(tar_id, smiles_data) 代码说明和来源 原仓库:https://github.com/cansyl/DEEPScreen 主要文件:bin/data_processing.py License:MIT License 论文:发表在Chemical Science (2020),题目为”DEEPScreen: high performance drug–target interaction prediction with convolutional neural networks using 2-D structural compound representations”[19] 依赖:需要安装rdkit和cairosvg库 2.4 KekuleScope 方法简介 KekuleScope采用”凯库勒结构表示”作为CNN的输入[20]。该方法专注于使用标准的分子结构图像进行性质预测,与其他方法的主要区别在于其对分子图像的特定处理方式。 代码实现 import os import sys from rdkit import Chem from rdkit.Chem import Draw import glob def generate_molecule_images(cell_line, seed, smiles_list, chembl_ids, dataset_type): """ 生成分子图片的主函数 参数: cell_line: 细胞系名称 seed: 随机种子 smiles_list: SMILES字符串列表 chembl_ids: ChEMBL ID列表 dataset_type: 数据集类型 ("train", "val", "test") """ base_dir = f'./images/{cell_line}/{seed}/{dataset_type}/images' os.makedirs(base_dir, exist_ok=True) svgs = glob.glob(f"{base_dir}/*svg") pngs = glob.glob(f"{base_dir}/*png") # 如果没有SVG或PNG文件,则生成SVG图像 if len(svgs) == 0 and len(pngs) == 0: for i, smiles in enumerate(smiles_list): mol = Chem.MolFromSmiles(smiles) if mol is not None: # 生成SVG图像 svg_img = Draw.MolsToGridImage([mol], molsPerRow=1, useSVG=True) svg_file_path = f'{base_dir}/{chembl_ids[i]}.svg' with open(svg_file_path, 'w') as f: f.write(svg_img.data) print(f"已生成SVG: {svg_file_path}") else: print(f"无法解析SMILES: {smiles}") else: print(f"SVGs ready for {dataset_type}") # 将 SVG 转换为 PNG pngs = glob.glob(f"{base_dir}/*png") if len(pngs) == 0: basedir = os.getcwd() os.chdir(base_dir) # 使用ImageMagick进行转换 cmd = "AA=($( find . -name '*.svg' ));for i in ${AA[*]}; do convert -density 800 ${i} -resize 300x ${i}.png ; done" try: os.system(cmd) print("SVG转PNG完成") except Exception as e: print(f"转换过程中出现错误: {e}") # 清理SVG文件 cmd = "rm -rf *.svg" os.system(cmd) os.chdir(basedir) def run_kekulescope_pipeline(cell_line="KB", seed=1): """ 运行完整的KekuleScope图像生成流程 参数: cell_line: 细胞系名称,默认为"KB" seed: 随机种子,默认为1 """ # 示例数据 smiles_list = [ "CCO", # 乙醇 "CCOC", # 乙醚 "CN1C=NC2=C1C(=O)N(C(=O)N2C)C", # 咖啡因 "CC(C)CC1=CC=C(C=C1)C(C)C(=O)O", # 布洛芬 ] chembl_ids = ["CHEMBL1", "CHEMBL2", "CHEMBL3", "CHEMBL4"] # 为不同数据集生成图像 for dataset_type in ["train", "val", "test"]: print(f"正在为{dataset_type}数据集生成图像...") generate_molecule_images(cell_line, seed, smiles_list, chembl_ids, dataset_type) # 使用示例 if __name__ == "__main__": run_kekulescope_pipeline() 代码说明和来源 原仓库:https://github.com/isidroc/kekulescope 主要文件:Kekulescope.py和load_images.py License:MIT license 框架:利用PyTorch框架 特点:使用ImageMagick进行SVG到PNG的转换,需要系统安装ImageMagick 2.5 其他相关方法 DECIMER 1.0 DECIMER (Deep lEarning for Chemical ImagE Recognition)是一个基于Transformer的光学化学结构识别工具[21],专注于从化学图像中识别和重构分子结构。该工具使用CNN进行图像解析,然后使用Transformer解码器生成SMILES字符串。 GitHub:https://github.com/Kohulan/DECIMER 特点:使用EfficientNet-B3作为编码器,处理299×299像素图像 应用:主要用于从文献中的化学结构图像提取SMILES表示 MolNexTR MolNexTR是一个结合ConvNext和Vision Transformer的深度学习模型,用于从分子图像生成SMILES字符串[22]。该模型能够同时预测原子和键,并理解它们的布局规则。 特点:结合CNN和Vision Transformer的优势 应用:分子图像识别和SMILES生成 数据集:在Indigo、ChemDraw、RDKit、CLEF、UOB、JPO、USPTO、Staker和ACS等数据集上表现优异 Toxic Colors Toxic Colors使用2DConvNet处理”化学品的简单二维绘图”[23],专注于毒性预测。该方法使用MOE软件生成分子图像,然后应用CNN进行毒性分类。 ADMET-CNN ADMET-CNN是一种基于分子二维图像的CNN,用于预测ADMET(吸收、分布、代谢、排泄、毒性)性质[24]。该方法使用RDKit生成分子图像,然后训练CNN模型预测药物的ADMET性质。 三、应用和扩展 3.1 迁移学习和预训练 现代分子图像表示学习中,迁移学习已成为一个重要趋势。在医学领域,获取大量标记数据集通常很困难,迁移学习提供了解决方案[25]。 预训练策略 ImageNet预训练:使用在ImageNet等大型图像数据集上预训练的CNN作为特征提取器 自监督预训练:如ImageMol使用的多任务预训练策略 域适应:将通用图像特征转移到化学领域 数据增强技术 为了提高模型的泛化能力和鲁棒性,研究者开发了多种数据增强技术[26]: 几何变换:旋转、翻转、缩放 颜色变换:灰度化、对比度调整 噪声添加:添加高斯噪声、椒盐噪声 分子特定增强:随机删除原子或键 3.2 模型解释性 Grad-CAM分析 分子图像CNN模型可以使用Gradient-weighted Class Activation Mapping (Grad-CAM)进行解释[27]。Grad-CAM能够识别模型关注的分子区域,帮助理解哪些结构特征对预测结果最重要。 特征可视化 通过可视化CNN不同层的激活模式,研究者可以理解模型学习到的化学特征: 低层特征:边缘、角度 中层特征:官能团、环结构 高层特征:复杂的分子骨架 3.3 多模态学习 图像-文本联合学习 结合分子图像和SMILES/SELFIES等文本表示,可以实现更强大的分子表示学习[28]: 对比学习:学习图像和文本表示之间的对应关系 多模态融合:在决策层面融合不同模态的信息 交叉注意力机制:让图像和文本表示相互增强 图像-图结构联合学习 结合2D分子图像和分子图结构,可以同时利用视觉信息和拓扑信息: 联合编码:同时处理图像和图结构 知识蒸馏:用图神经网络指导CNN学习 多任务学习:同时优化图像和图结构相关的任务 3.4 实际应用领域 药物发现 虚拟筛选:从大型化合物库中筛选活性化合物 药物重定位:发现已知药物的新适应症 ADMET预测:预测药物的吸收、分布、代谢、排泄和毒性 材料科学 聚合物性质预测:预测聚合物的物理化学性质 催化剂设计:设计高效的催化剂 能源材料:开发新型电池和太阳能材料 环境科学 污染物降解:预测污染物的降解路径和速率[26] 生态毒性评估:评估化学品对环境的影响 生物累积性预测:预测化学品在生物体内的累积 3.5 技术挑战和未来方向 当前挑战 数据质量:分子图像的标准化和质量控制 可解释性:提高模型预测的可解释性 泛化能力:在不同化学空间中的泛化性能 计算效率:处理大规模分子库的效率 未来发展方向 3D信息整合:结合3D分子构象信息[29] 动态性质预测:预测分子的动态行为 多尺度建模:从分子到细胞到器官的多尺度预测 自动化流程:端到端的自动化预测流程 四、方法对比分析 4.1 主要方法对比表 方法 图像尺寸 绘图方法 特点 主要应用 优势 限制 ImageMol 224×224 MolsToGridImage 自监督预训练多任务学习 分子性质预测药物靶点预测 • 大规模预训练• 高精度• 迁移学习能力强 • 计算资源需求高• 缺乏3D信息 Chemception 80×8048×48 calculate pixels 多通道编码(键级、原子序数、杂化、电荷) 毒性预测活性预测溶解性预测 • 化学信息丰富• 可解释性强• 计算效率高 • 图像分辨率较低• 需要化学知识编码 DEEPScreen 200×200 MolToFile 药物-靶点相互作用大规模训练 虚拟筛选药物重定位 • 专门针对DTI• 大规模数据库• 实用性强 • 应用范围有限• 缺乏手性信息 KekuleScope 300×300 MolsToGridImage 凯库勒结构表示高分辨率 分子性质预测 • 图像质量高• 标准化程度高 • 数据处理复杂• 计算开销大 DECIMER 299×299 — 图像到SMILESTransformer解码 光学结构识别文献挖掘 • 实用工具• 端到端处理 • 专门用途• 需要高质量图像 4.2 性能比较 准确性方面 ImageMol:在多个基准数据集上表现最佳,特别是在CYP450抑制预测中 Chemception:在小数据集上表现良好,与专家开发的QSAR模型性能相当 DEEPScreen:在DTI预测任务中超越传统指纹方法 计算效率 Chemception:图像尺寸小,训练和推理速度快 ImageMol:需要大量计算资源进行预训练,但推理相对高效 DEEPScreen:中等计算需求,适合实际应用 可扩展性 ImageMol:预训练模型可以轻松适应新任务 Chemception:架构简单,易于修改和扩展 DEEPScreen:专门设计,扩展到其他任务需要重新训练 4.3 选择建议 根据应用场景选择 通用分子性质预测:推荐ImageMol 毒性和溶解性预测:推荐Chemception 药物-靶点相互作用:推荐DEEPScreen 图像识别任务:推荐DECIMER 根据资源条件选择 计算资源丰富:ImageMol或KekuleScope 计算资源有限:Chemception 需要快速部署:DEEPScreen 根据数据特点选择 大规模无标签数据:ImageMol的自监督学习 小规模标注数据:Chemception的简单架构 特定领域数据:针对性训练的专用模型 参考文献 [1] Landrum G. RDKit: Open-source cheminformatics. 2020. Available: https://github.com/rdkit/rdkit [2] RDKit Documentation. Getting Started with the RDKit in Python. Available: https://www.rdkit.org/docs/GettingStartedInPython.html [3] RDKit Drawing Options Documentation. Available: https://www.rdkit.org/docs/source/rdkit.Chem.Draw.html [4] RDKit 2D Coordinate Generation. Available: https://www.rdkit.org/docs/source/rdkit.Chem.rdDepictor.html [5] RDKit AllChem Module Documentation. Available: https://www.rdkit.org/docs/source/rdkit.Chem.AllChem.html [6] RDKit Advanced Drawing Documentation. Available: https://www.rdkit.org/docs/source/rdkit.Chem.Draw.rdMolDraw2D.html [7] Rifaioglu AS, Nalbat E, Atalay V, Martin MJ, Cetin-Atalay R, Doğan T. DEEPScreen: high performance drug–target interaction prediction with convolutional neural networks using 2-D structural compound representations. Chemical Science. 2020;11(9):2531-2557. [8] Zeng X, Xiang H, Yu L, Wang J, Li K, Nussinov R, Cheng F. Accurate prediction of molecular properties and drug targets using a self-supervised image representation learning framework. Nature Machine Intelligence. 2022;4(11):1004-1016. [9] Goh GB, Siegel C, Vishnu A, Hodas NO, Baker N. Chemception: A deep neural network with minimal chemistry knowledge matches the performance of expert-developed QSAR/QSPR models. 2017. arXiv preprint arXiv:1706.06689. [10] RDKit Drawing Options Advanced Configuration. Available: https://www.rdkit.org/docs/source/rdkit.Chem.Draw.html#drawing-options [11] RDKit Molecule Drawing Options. Available: https://www.rdkit.org/docs/source/rdkit.Chem.Draw.rdMolDraw2D.html#drawing-options [12] RDKit Color Customization. Available: https://www.rdkit.org/docs/Cookbook.html [13] RDKit Cookbook. Available: https://www.rdkit.org/docs/Cookbook.html [14] Xiang H. ImageMol: A molecular image-based pre-training deep learning framework for computational drug discovery. 2022. Available: https://github.com/HongxinXiang/ImageMol [15] Li Y, Liu B, Deng J, Guo Y, Du H. Image-based molecular representation learning for drug development: a survey. Briefings in Bioinformatics. 2024;25(4):bbae294. [16] Zeng X, Xiang H, Yu L, et al. Accurate prediction of molecular properties and drug targets using a self-supervised image representation learning framework. Nature Machine Intelligence. 2022;4(11):1004-1016. [17] Goh GB, Siegel C, Vishnu A, Hodas NO, Baker N. Chemception: A deep neural network with minimal chemistry knowledge matches the performance of expert-developed QSAR/QSPR models. arXiv preprint arXiv:1706.06689. 2017. [18] Wildcard Consulting. Learn how to teach your computer to see chemistry - free Chemception models with RDKit and Keras. Available: https://www.wildcardconsulting.dk/useful-information/learn-how-to-teach-your-computer-to-see-chemistry-free-chemception-models-with-rdkit-and-keras/ [19] Rifaioglu AS, Nalbat E, Atalay V, Martin MJ, Cetin-Atalay R, Doğan T. DEEPScreen: high performance drug–target interaction prediction with convolutional neural networks using 2-D structural compound representations. Chemical Science. 2020;11(9):2531-2557. [20] KekuleScope GitHub Repository. Available: https://github.com/isidroc/kekulescope [21] Rajan K, Zielesny A, Steinbeck C. DECIMER 1.0: deep learning for chemical image recognition using transformers. Journal of Cheminformatics. 2021;13(1):61. [22] Chen BJ, Li C, Dai H, Song L. MolNexTR: A generalized deep learning model for molecular image recognition. Journal of Cheminformatics. 2024;16(1):7. [23] Fernandez M, Ban F, Woo G, et al. Toxic Colors: The use of deep learning for predicting toxicity of compounds merely from their graphic images. Journal of Chemical Information and Modeling. 2018;58(8):1533-1543. [24] Shi H, Liu S, Chen J, Li X, Ma Q, Yu B. Predicting drug-target interactions using Lasso with random forest based on evolutionary information and chemical structure. Genomics. 2019;111(6):1839-1852. [25] Dalkiran A, Rifaioglu AS, Martin MJ, et al. ECPred: a tool for the prediction of the enzymatic functions of protein sequences based on the EC nomenclature. BMC Bioinformatics. 2018;19(1):334. [26] Zhong S, Zhang K, Bagheri M, et al. Molecular image-convolutional neural network (CNN) assisted QSAR models for predicting contaminant reactivity toward OH radicals: Transfer learning, data augmentation and model interpretation. Chemical Engineering Journal. 2021;403:126393. [27] Selvaraju RR, Cogswell M, Das A, et al. Grad-CAM: Visual explanations from deep networks via gradient-based localization. In: Proceedings of the IEEE International Conference on Computer Vision. 2017:618-626. [28] Wang S, Guo Y, Wang Y, Sun H, Huang J. SMILES-BERT: Large scale unsupervised pre-training for molecular property prediction. In: Proceedings of the 10th ACM International Conference on Bioinformatics, Computational Biology and Health Informatics. 2019:429-436. [29] Liu S, Guo H, Pan X, et al. A deep learning framework combining molecular image and protein structural representations identifies candidate drugs for pain. bioRxiv. 2024. doi:10.1101/2024.06.12.598706. [30] Ståhl N, Falkman G, Karlsson A, Mathiason G, Boström J. Deep convolutional neural networks for the prediction of molecular properties: Challenges and opportunities connected to the data. Journal of Integrative Bioinformatics. 2019;16(1):20180065.
Machine Learning & AI
· 2025-06-04
Image-based Molecular Representation Learning for Drug Development: A Survey
✨ AI制药新浪潮:让AI“看脸”识药!✨ 嘿,朋友们!“AI制药”这个词是不是已经刷爆了你的朋友圈,成为科技界和医药界共同瞩目的焦点?传统的AI方法,例如让AI去“阅读”分子的化学式(像SMILES序列这种线性字符串)或者去细致分析由原子和化学键构成的分子结构图(如图神经网络GNN所做的那样),无疑已经在药物发现的征途上取得了令人鼓舞的进展,为我们筛选和设计潜在药物分子提供了有力的工具。但今天,我们要聊点更酷、更富有想象力的——让AI直接“看”分子的“照片”来学习和发现新药! 没错,你没有听错,就像我们人类通过观察面部特征来识别人一样,AI也开始学习通过分子的视觉特征来识别它们、预测它们的性质,甚至启发新药的设计。这无疑为AI制药打开了一扇全新的大门。 最近,一篇发表在国际知名期刊《Briefings in Bioinformatics》上的重磅综述 《Image-based molecular representation learning for drug development: a survey》就为我们系统地梳理了这个新兴且潜力无限的领域。这篇推文将带你深入解读这篇综述的精髓,一同探索计算机视觉(CV)这项在图像识别、自动驾驶等领域大放异彩的技术,是如何与药物研发这一古老而又充满挑战的科学领域碰撞出耀眼的火花,并有望让新药发现之路变得更加直观、更加高效!准备好了吗?让我们一起踏上这场AI“看脸”识药的奇妙探索之旅吧!想象一下,如果AI能像经验丰富的化学家一样‘一眼’洞察分子的潜力,甚至启发我们设计出从未想过的新药结构,那将为攻克疑难杂症、守护人类健康带来怎样革命性的希望? 🤔 药物研发的老大难与AI的“前浪”们 我们都深知,新药研发绝非易事,它堪称一场充满未知与挑战的“九九八十一难”的修行: 时间长:一款新药从最初的实验室概念到最终摆上药房货架,平均需要耗费10到15年漫长的时间,这期间充满了无数的变数和等待。 花钱多:动辄数十亿美元的研发投入,对于任何一家制药企业来说都是一笔巨大的开销,堪比一台高速运转的“碎钞机”,且并不能保证最终一定有回报。 失败率高:更令人沮丧的是,绝大多数进入临床试验阶段的候选化合物,最终都会因为效果不佳或安全性问题而折戟沉沙,成功率极低。 为了改变这一成本高昂、效率低下的现状,科学家们和产业界都将殷切的目光投向了飞速发展的人工智能(AI)。在AI赋能药物研发的诸多环节中,一个至关重要的核心任务,就是构建精准且高效的分子表示——也就是说,如何将复杂多样的分子结构和性质信息,巧妙地转化成AI模型能够理解并有效处理的“语言”或“数据格式”。 在“图像派”AI崭露头角之前,AI制药领域的“前浪”们已经探索并实践了多种主流的分子表示方法: 计算药学方法:这类方法历史悠久,例如利用分子指纹(记录分子中是否存在特定亚结构片段的二进制串)、拓扑指数(基于分子图理论计算得出的数值)等所谓的“描述符”来刻画分子。它们计算相对简单直接,易于理解和使用,但缺点也比较明显,这些方法往往难以全面细致地捕捉分子三维空间结构、电子云分布等精细的结构信息,有时会显得“管中窥豹”。 自然语言处理(NLP)方法:这种方法独辟蹊径,将分子的化学结构表示为线性化的字符串,如广为人知的SMILES(简化分子线性输入规范)序列或InChI(国际化学标识符)字符串。这样一来,就可以借鉴NLP领域成熟的技术(如循环神经网络RNN、Transformer等)来处理这些“分子语言”。这就像给每个分子起了个独特的“化学名”。然而,正如人的名字有时难以完全概括其性格和能力一样,这些线性“名字”在表达分子的复杂空间构象、手性特征以及重要的生物学功能时,也可能在准确捕捉分子身份和关键生物学特征方面表现出局限性。 图神经网络(GNN)方法:近年来,GNN在AI制药领域异军突起。它将分子天然地看作一个由原子(图中的节点)和化学键(图中的边)组成的图结构。GNN能够直接在图上进行学习,有效捕捉原子的邻接关系和局部化学环境。GNN在预测分子性质、药物-靶点相互作用等多种任务上都表现出色,但和NLP方法类似,它们在精确捕捉分子的全局拓扑特性、细微的立体化学差异以及那些决定其生物活性的关键三维特征方面,有时仍会遇到挑战,同样可能在准确捕捉分子身份和重要生物特征方面存在局限性。 这些“前浪”们无疑为AI制药的进步立下了汗马功劳,推动了整个领域的发展。但是,追求卓越的科研人员总是在不断探索更好、更强大的工具和方法。于是,一种全新的、更贴近人类直觉的分子表示学习方式——基于图像的分子表示学习,便应运而生,并迅速吸引了业界的广泛关注! 💡 为什么是“图像”?AI“看图识珠”的独特魅力 你可能会好奇,我们已经有了那么多表示分子的方法了,为啥还要多此一举,费劲把分子画成“照片”再让AI去学习呢?直接用图像这种方式到底有什么特别的“魔力”? 直观且独特,信息更丰富:正如世上没有两片完全相同的树叶,每个化学物质也都有其独特的视觉“长相”和空间“姿态”。一张精心绘制的2D分子结构图,或者一个能够展示其三维空间排布的3D分子图像,能够非常直观地将分子的原子组成、成键方式、官能团分布乃至空间构象等信息呈现出来。这种视觉信息对于AI来说,可能比抽象的描述符或线性序列更容易捕捉到关键的结构模式和细微差异,例如通过分析图像中原子的类型、相对位置以及原子间的连接方式,可以有效地识别不同的化学物质。 借鉴成熟技术,加速应用落地:计算机视觉(CV)作为人工智能领域发展最为成熟的分支之一,已经在图像识别(比如人脸识别、物体分类)、目标检测(比如自动驾驶中的车辆行人检测)、图像分割等诸多领域取得了举世瞩目的成功,拥有大量先进的算法模型(如CNN、Vision Transformer等)和强大的开源工具库。这些现成的、经过大规模数据验证的“轮子”和经验,可以相对容易地被迁移和应用到分子图像的分析与处理中,从而大大加速基于图像的AI制药技术的发展和落地。 捕捉复杂模式,洞察潜在规律:分子图像,特别是3D图像,能够蕴含比传统描述符或SMILES序列更为丰富的、高维度的结构信息和空间关系。AI模型,尤其是深度学习模型,擅长从这些高维数据中自动学习和提取复杂的、非线性的特征模式,例如特定的药效团形状、疏水/亲水区域的分布、潜在的分子间相互作用位点等。这些模式往往是人类难以通过肉眼观察或简单规则定义的,但对于理解分子的性质和功能至关重要。 助力理解与设计,启发药物创新:通过分析从分子图像中学习到的特征,AI不仅能够完成对分子性质的精准预测(例如预测其溶解度、渗透性、生物活性或毒性),更有潜力帮助我们更深入地理解分子的构效关系(SAR)和构性关系(SPR)。例如,通过可视化AI模型关注的图像区域(如使用CAM技术),我们可以推断出哪些结构特征对目标性质有重要贡献。这种理解反过来又可以指导我们进行更合理的分子修饰和全新的分子设计,从而加速创新药物的发现进程。 简单来说,让AI“看图识药”,就像是给AI装上了一双能够洞察分子微观世界的“火眼金睛”。它不再仅仅依赖于抽象的符号或数字,而是能够直接从分子的“视觉形象”中学习,从而更全面、更深入地洞察分子的奥秘,为药物研发带来全新的视角和强大的动力。 🚀 AI如何“看图”:解密图像分子表示学习流程 那么,AI究竟是如何一步步“看懂”这些分子图像,并从中提取有用信息的呢?这篇综述为我们精心梳理并呈现了一个通用的、条理清晰的工作流程(其核心思想可见下图示意,该图改编自原论文中的图2,旨在更形象地展示这一过程): 分子视觉表示的一般流程的图片 数据准备与筛选:万事开头难,第一步是获取高质量的分子数据。研究人员首先会从各种公开的或私有的化学与生物学数据库(例如我们耳熟能详的PubChem, ChEMBL, ZINC, DrugBank等)中,根据研究目标(比如特定疾病靶点、某一类化学结构等)提取大量的化合物信息。这些信息最常见的初始形式是SMILES(简化分子线性输入规范)字符串,它是一种用文本字符描述分子结构的便捷方式。 分子“拍照”——图像生成:接下来,需要将这些文本化的分子信息转换成AI能够“看”的图像格式。这一步至关重要,图像的质量和一致性直接影响后续模型的学习效果。 对于2D分子图像,通常会利用像RDKit这样强大的开源化学信息学工具包。RDKit能够解析SMILES字符串,创建分子图的内部表示,生成分子的2D布局,并最终渲染成图像,同时允许调整图像大小等视觉参数。 对于3D分子图像,则可能需要更复杂的处理。例如,可以使用专业的分子建模软件(如Maestro等软件)先生成分子的三维构象(即原子在空间中的具体坐标),然后再从不同的观察视角(如围绕y轴多次旋转45度)、不同的渲染风格(如球棍模型、空间填充模型等)“拍摄”这些3D结构,以捕捉更全面的空间信息和表面特征。这些全局旋转操作不会影响分子实际坐标,每次旋转后都会保存当前视图的图像。 AI“看图”学习——特征提取:当大量的分子“照片”准备就绪后,就轮到AI模型大显身手了。目前,卷积神经网络(CNN)及其各种变体(如ResNet, DenseNet, Inception等)是处理图像数据的绝对主力。这些生成的分子图像会被作为输入“喂”给CNN模型。CNN通过其独特的多层结构,包括一系列精心设计的卷积层、池化层和全连接层,能够自动地从原始像素数据中逐层抽象并学习到越来越复杂的图像特征。 卷积层通过可学习的滤波器(卷积核)扫描图像,不仅仅能检测到边缘、角点、特定形状的官能团等基础视觉模式,更关键的是,它能学习到这些模式在分子图像中的空间排布、相对位置关系,甚至是某些区域的“纹理”或“密度”差异(这可能间接反映了分子表面静电势或电子云分布的粗略特征)。这些信息对于理解分子间的相互作用和识别药效团至关重要。 池化层则对特征图进行降采样,在减少数据量的同时,努力保留那些最具区分性的核心特征,并赋予模型一定的平移、旋转不变性,使得模型对分子在图像中的朝向不那么敏感。 经过多层卷积和池化对信息的逐层提炼与抽象,全连接层最终会将这些高度浓缩的、信息量丰富的视觉特征进行整合,并输出一个能够全面代表该分子图像核心信息的特征向量。这个特征向量就是AI对该分子“长相”及其潜在化学意义的数字化理解。 训练与预测——模型优化与应用:获得了分子的图像特征向量后,最后一步就是利用这些特征来完成特定的药物研发任务。这通常涉及到模型的训练和预测阶段。 模型训练:我们会使用带有已知标签(例如,已知某个分子的生物活性值、毒性等级,或者它是否能与某个靶点结合)的分子图像数据集来训练CNN模型。通过定义合适的损失函数(衡量模型预测结果与真实标签之间的差距)和选择高效的优化算法(如梯度下降法及其变体),不断调整CNN模型内部的参数(权重和偏置),使得模型能够从图像特征中学习到预测这些标签的规律。 模型预测:一旦模型训练完成并达到满意的性能,就可以用它来对新的、未知的分子图像进行预测了。例如,输入一个新的候选药物分子的图像,训练好的模型就能输出其预测的活性值、毒性概率等信息,从而为药物筛选和优化提供决策支持。 常用公共数据库一览 (部分列举自原论文表2): 数据库名称 (Database Name) 简介 (Description) PubChem 由美国国立卫生研究院(NIH)下属的国家生物技术信息中心(NCBI)维护,是一个内容极其丰富的大型公共化学数据库,汇集了来自全球超过750个数据源的化合物、物质及生物活性数据 。 ChEMBL 由欧洲生物信息学研究所(EBI)精心维护和运营,专注于收集和整理具有类药性的生物活性分子的化学结构、实验测定的生物活性数据以及相关的基因组学信息,是药物发现的重要资源 。 ZINC 由加州大学旧金山分校(UCSF)的Irwin和Shoichet实验室合作开发和维护的商业可购买化合物数据库,特别强调化合物结构的多样性和可获得性,并提供了便捷的在线搜索和筛选功能 。 DrugBank 一个综合性的、可自由访问的在线数据库,不仅提供了已批准上市药物的详细信息(如作用机制、药代动力学、药物相互作用等),也收录了大量处于临床研究阶段的在研化合物的数据 。 MoleculeNet 由斯坦福大学Pande实验室发起并维护的一个旨在推动分子机器学习发展的基准平台,它包含了一系列精心挑选和整理的、用于评估和比较不同机器学习模型在分子性质预测任务上性能的公开数据集,涵盖了从量子力学计算到生物物理实验再到生理学效应等多个方面 。 🧠 AI“看图”的十八般武艺:核心学习方法大盘点 让AI“看图”可不是简单地用一个模型、一种方法就能包打天下。实际上,根据我们拥有的训练数据类型(比如是否有现成的“答案”或标签)、学习的目标以及想要解决的具体问题,科学家们已经发展出了多种精妙的学习范式。这篇综述独具匠心地基于计算机视觉领域成熟的学习范式分类体系,对现有基于图像的分子表示学习研究进行了系统性的归纳和总结,为我们理解这个交叉领域的全貌提供了清晰的路线图。 下面这张精心整理的大表(其内容综合并改编自原论文中的图3、图4以及表3、表4的核心信息)将带你快速了解几种主要的学习方法、它们的核心思想、一些代表性的研究工作或模型,以及它们各自的优势与面临的挑战: 学习范式 (Learning Paradigm) 核心思想 (Core Idea) 代表工作/模型 (Examples from Survey) 优点 (Pros) 挑战 (Cons) 监督学习 (Supervised Learning) (一句话概括:AI的‘看图答题’模式,有标准答案供学习)核心特点: 这类方法依赖于“有标签”的训练数据 。也就是说,我们需要为模型提供大量的分子图像,并且每张图像都对应一个已知的“答案”或“标签”(例如,该分子的生物活性值、毒性等级、是否与特定靶点结合等)。模型的目标就是学习从输入图像到这些已知标签的映射关系。 - 常规监督学习 (Vanilla) 这是最直接的监督学习方式 。简单来说,就是用带有明确标签(如IC50值、毒性分类等)的分子图像集合来训练一个深度学习模型(通常是CNN),让模型直接学习预测这些性质或活性。 KekuleScope, Chemception, Deepsnap, ResNet18DNN 数据利用高效: 如果拥有高质量的标签数据,模型能够充分学习并建立准确的预测模型 。准确率潜力高: 在数据充足且质量好的情况下,往往能达到较高的预测精度 。结果相对易于解释和验证: 由于有明确的预测目标和真实标签,模型的性能评估和结果分析相对直接 。 高度依赖标签数据: 获取大量、高质量的药物研发相关标签数据通常成本高昂且耗时(例如,需要进行大量生物实验)。对数据偏误敏感: 如果训练数据存在偏差(如类别不平衡、标签错误等),模型的性能会受到严重影响 。模型泛化能力可能受限: 模型可能只在与训练数据相似的未见数据上表现良好,对于差异较大的新分子,泛化能力可能不足 。小数据集易过拟合: 在标签数据量较少的情况下,复杂的深度学习模型很容易过フィット,即过度学习训练数据的噪声和特异性,导致在新数据上表现不佳 。 - 孪生CNN学习 (Siamese CNN) (一句话概括:AI的‘找不同’或‘连连看’高手)这种方法采用一种特殊的网络结构,包含两个或多个结构完全相同、参数共享的CNN分支 。每个分支分别处理一个输入分子图像,然后将它们各自提取的特征向量进行比较(例如计算距离或相似度),从而判断这两个分子是否相似,或者它们之间的关系 。常用于需要比较输入的任务。 tCNNs (Liu et al.), Torres et al. 适合小样本学习: 通过学习区分“相似对”和“不相似对”,即使在每个类别样本量不多的情况下也能有效学习 。强大的度量学习能力: 非常适合学习分子间的相似性或距离度量,这对于药物重定位(寻找老药新用)、虚拟筛选等任务非常有用 。所需标签数据形式更灵活: 有时只需要成对的相似/不相似标签,而非每个样本的绝对属性标签 。鲁棒性强: 对输入数据的噪声和变形具有一定的容忍度 。 计算量相对较大: 需要同时处理和比较多个输入,并训练两个网络,对计算资源的要求可能更高 。模型训练和调优更复杂: 如何设计有效的损失函数(如对比损失 、三元组损失)以及如何构建高质量的训练样本对,都需要更专业的知识和经验 。特征空间的解释性: 虽然能判断相似性,但其学习到的潜在特征空间的具体含义有时不如直接预测属性的模型那么直观。 - 多模态学习 (Multi-modal) (一句话概括:AI的‘全科医生’,综合多方信息看诊)核心思想是“博采众长”。它不仅仅依赖于单一的分子图像信息,而是尝试同时整合和学习来自多种不同类型或来源的数据(即“模态”),例如,将分子的2D/3D图像与其对应的化学名称、文本描述(如专利文献中的合成方法、性质描述)、基因表达数据、蛋白质序列信息等结合起来进行联合学习。模型的目标是学习一个能够融合所有这些信息的统一表示 ,或者让不同模态的信息相互补充、相互印证。 Wang et al. (专利图文信息重建), MCNN-DDI, MultiDTI 信息更全面,视角更多元: 通过融合不同来源的信息,可以获得对分子更完整、更立体的理解,弥补单一模态信息的不足 。可能提升预测准确性和模型鲁棒性: 不同模态的信息可以相互校验和补充,从而提高模型预测的准确性,并使其对单一模态的噪声或缺失不那么敏感 。发现跨模态关联: 有助于揭示不同类型数据之间的潜在联系,例如图像特征与文本描述中特定化学基团的对应关系,从而加深对药物作用机制的理解 。 数据整合与对齐难度大: 不同模态的数据结构、尺度、质量可能差异很大,如何有效地将它们整合、对齐并输入到模型中是一个巨大的挑战 。不同模态数据可能存在不平衡: 某些模态的数据可能远多于其他模态,导致模型学习时产生偏向,对部分模态学习不足或过度学习 。计算成本高,模型设计复杂: 处理和融合多种模态数据通常需要更复杂的模型架构和更大的计算资源 。缺乏标准化方法和基准: 多模态学习在药物研发领域的应用尚处于探索阶段,成熟的方法论和公开的基准数据集相对较少,使得不同研究之间的结果难以比较和复现 。依赖数据质量: 任何单一模态的数据质量差都可能拉低整体模型的性能 。 无监督学习 (Unsupervised Learning) (一句话概括:AI的‘自学探索’模式,无需标准答案也能发现规律)核心特点: 与监督学习相反,这类方法主要使用“无标签”的训练数据 。也就是说,我们只给模型提供大量的分子图像,但并不告诉模型这些图像对应的“正确答案”。模型需要自己从这些数据中探索和发现潜在的模式、结构或规律 。 - 常规无监督学习 (Vanilla) 这是无监督学习的基础形式 。直接在海量的、没有预先标注的分子图像数据上训练模型(例如使用自编码器、聚类算法等),让模型学习数据的内在表示或结构。这种学习到的表示常用于数据降维、异常检测、数据可视化,或者作为后续监督学习任务的“预训练”步骤,为模型提供一个好的初始化参数。 ImageMol, ADMET-CNN, QSAR-CNN 能有效利用海量无标签数据: 药物研发领域存在大量未标记的化合物数据,无监督学习为此类数据的利用提供了可能,无需昂贵的标签成本 。揭示数据中隐藏的模式和结构: 能够帮助我们发现数据中未曾预料到的聚类、关联或异常,可能启发新的科学假设和药物靶点 。辅助数据探索和可视化: 例如通过降维技术将高维分子图像数据投影到低维空间,便于研究人员观察和理解数据分布 。 学习到的模式和结果往往难以解释: 模型发现了某些模式,但这些模式的具体生物学或化学意义可能不明确,需要后续大量的实验验证才能转化为实际应用 。对输入数据的质量和预处理方法非常敏感: 噪声、冗余特征或不恰当的预处理都可能严重影响学习效果,甚至导致错误的结论 。可扩展性面临挑战: 处理超大规模生物数据时,某些无监督学习算法的计算效率可能成为瓶颈,需要大量计算资源 。评估困难且缺乏标准化: 由于没有“标准答案”,评估无监督学习模型的好坏本身就是一个难题,也缺乏统一的评估标准和方法,使得不同研究之间的结果难以比较和复现 。 - 自监督学习 (Self-supervised, SSL) (一句话概括:AI的‘自创习题’学习法,从自身数据中找监督信号)这是一种非常巧妙的无监督学习分支,可以看作是“自己监督自己”。模型通过解决自身数据内部隐含的、自动生成的“代理任务”(pretext task)来学习有用的特征表示 。例如,对于一张分子图像,可以随机遮挡掉一部分,然后让模型去预测被遮挡的部分是什么;或者将图像打乱成若干小块,让模型学习如何将它们恢复成原始图像。通过完成这些精心设计的“智力游戏”,模型被迫学习到关于数据内在结构和语义的深刻理解 。 MolPMoFiT, SMR-DDI, ConvAE 高效利用无标签数据,学习能力强: 继承了无监督学习的优点,并且通过精心设计的代理任务,能够学习到比传统无监督方法更复杂、更鲁棒的特征表示 。预训练模型具有良好的可迁移性: 通过自监督学习在大规模无标签分子图像上预训练得到的模型,其学习到的特征表示往往具有很好的泛化能力,可以方便地迁移到下游各种具体的、标签数据稀缺的药物研发任务中(如活性预测、毒性分类等),只需少量微调即可取得良好效果 。能产生多样的代理任务: 例如预测分子图的遮蔽部分或序列,从而对药物研发相关数据进行全面理解 。 代理任务的设计至关重要: 代理任务的好坏直接决定了模型能学到什么样的特征,设计一个既有效又与下游任务相关的代理任务本身就很有挑战性 。模型通常比较复杂,计算需求高: 为了完成复杂的代理任务,自监督学习模型(如基于Transformer或大型CNN的模型)往往结构复杂,训练过程对计算资源(如GPU)的需求也比较大 。结果的可解释性仍是一个挑战: 与其他深度学习方法类似,其学习过程和决策依据的透明度有待提高 。对数据质量和多样性敏感: 如果预训练数据质量不高或多样性不足(例如数据增强方式不当),学习到的表示可能存在偏差,影响下游任务性能 。 - 迁移学习 (Transfer Learning) (一句话概括:AI的‘经验借鉴’学习法,站在巨人肩膀上看得更远)核心思想是“站在巨人的肩膀上”。它指的是将一个在大型通用数据集(例如包含数百万张自然图像的ImageNet)或某个相关的源任务(例如预测一般化学分子的某种性质)上已经预训练好的模型,将其学到的知识和能力“迁移”到我们当前感兴趣的、但可能数据量不足的药物研发目标任务上 。通常的做法是固定预训练模型的大部分参数(冻结层 ),只对模型的最后几层或新添加的针对特定任务的层进行微调(fine-tuning),使用目标任务的少量标签数据进行训练。 Dalkiran et al., Li et al., ImageCLEF2018 能有效解决药物研发中目标任务数据稀疏的问题: 药物研发中很多特定任务的标签数据非常宝贵和稀缺,迁移学习使得我们可以在这些小数据集上也能训练出性能不错的模型 。加速模型训练,提升模型性能: 利用预训练模型提供的良好初始参数,可以大大缩短目标任务模型的训练时间,并且通常能达到比从零开始训练更好的性能 。利用通用知识: 预训练模型从大规模数据中学到的通用特征(如边缘、纹理、形状等对于图像任务而言)对于理解特定领域的分子图像也可能是有益的,有助于模型更快抓住关键信息 。 “负迁移”风险: 如果源域(预训练数据的领域)和目标域(药物研发任务的领域)之间差异过大,或者预训练任务与目标任务关联性不强,那么强行迁移知识反而可能损害目标任务的性能,导致效果变差 。预训练模型本身的成本和获取: 虽然有很多公开的预训练模型,但针对特定化学或生物图像的优质预训练模型仍然相对较少,自行进行大规模预训练的成本很高 。在小数据集上微调仍有 过拟合风险: 尽管迁移学习有助于缓解,但在目标数据集极小的情况下,微调过程仍然可能导致模型对目标数据过拟合 。模型选择和微调策略需要经验: 选择哪个预训练模型、如何进行微调(例如冻结哪些层、学习率如何设置等)都需要一定的经验和尝试,缺乏统一的指导原则 。 简单小结一下,帮你理清思路: 监督学习就像是一位经验丰富的老师傅,手把手地带着徒弟(AI模型)看图识物,目标非常明确(比如识别出哪些分子有活性),学出来的徒弟通常活儿干得又快又准又狠,但前提是师傅得有足够多、足够好的“教学案例”(即高质量的标签数据)。 无监督学习则更像是一位天赋异禀的学徒在“闭门造车”或“自行悟道”,虽然没有师傅指点迷津(没有标准答案),但通过观察海量的“分子图谱”,也能自己琢磨出一些门道和规律(比如发现某些分子在“长相”上可以归为一类),这种方法潜力巨大,尤其适合在正式学习具体任务前做大量的“预习”和“打基础”(即预训练)。 自监督学习可以看作是这位自学成才的学徒中的“学霸”级玩法,他不仅自己看图,还会自己给自己出各种“看图填空”、“看图拼图”的练习题来做,通过这种方式,他学到的东西更加扎实,理解也更加深刻。 迁移学习则是一位聪明的学徒,他懂得“站在巨人的肩膀上”,把在别处(比如看自然界图片)学到的识别物体轮廓、纹理的本事,巧妙地运用到观察分子“照片”的新任务上,这样往往能事半功倍,尤其是在新任务的“教学案例”不多的时候。 多模态学习则是一位追求全面的“通才”学徒,他不仅看分子的“照片”,还会去阅读关于这个分子的“文字说明书”(比如化学性质描述、相关文献等),力求从各个方面获取信息,做到“眼观六路,耳听八方”,从而对分子有更完整的认识。 🎯 “图像派”AI大显身手:主要应用领域 那么,这些学会了“察言观色”、“看图识珠”的AI模型,究竟能在药物研发的哪些关键环节大显身手,一展其能呢?综述中为我们重点介绍了以下几个已经取得显著进展或展现出巨大潜力的主要应用领域: 药物发现 (Drug Discovery) —— 开启智能筛选新篇章 背景与挑战:传统的药物发现流程,无论是基于靶点的筛选还是偶然的表型筛选,都面临着通量、成本和成功率的巨大挑战。近年来,药物发现的方法论也在悄然发生转变,表型筛选(phenotypic screening)的重要性日益凸显,因为它不依赖于对作用靶点的预先了解,有时能发现全新作用机制的药物。 图像AI的贡献:基于图像的AI模型为此带来了新的解决方案。它们可以直接利用分子图像(无论是2D结构图还是3D构象图)来预测新的、潜在的药物-靶点相互作用(DTI),或者预测化合物在特定表型筛选模型中的活性。这相当于用AI代替了传统实验中大量、重复且耗时耗力的筛选过程,实现了“智能虚拟筛选”。例如,综述中提到的 ImageMol 和 MolPMoFiT 等模型就通过学习分子图像的深层特征,在预测药物活性和靶点相互作用方面展现了令人鼓舞的潜力,为从海量化合物库中快速锁定有希望的候选分子提供了新工具。这种方法的核心在于识别候选药物化合物与目标生物大分子之间的物理相互作用。 生物活性预测 (Biological Activity Prediction) —— 精准量化药效 背景与挑战:生物活性预测是计算化学和药物化学领域的核心任务之一,其目标是基于分子的结构特征来准确预测其与特定生物靶点(如酶、受体)的结合强度,或者其在特定生物检测体系中表现出的生物学效应(如抑制常数Ki、半数有效浓度EC50等)。这是理解药物作用机制、优化先导化合物的关键。 图像AI的贡献:传统的定量构效关系(QSAR)模型在这一领域扮演了重要角色,但它们通常依赖于人工选择和计算的分子描述符(如分子量、电子亲和性、空间构型等),这些描述符的选择本身就是一项复杂的工作,且可能无法完全捕捉决定活性的所有关键信息。而新兴的、基于图像的QSAR模型,例如综述中提及的 Chemception 和 QSAR-CNN 等,则另辟蹊径,它们直接从分子的2D或3D图像中学习与生物活性相关的视觉特征,构建稳健的QSAR模型。研究表明,这类模型在许多任务上展现出与传统QSAR方法相当甚至更优的预测性能,并且省去了人工设计描述符的步骤,使得建模过程更为自动化和数据驱动。 毒性预测 (Toxicity Prediction) —— 为药物安全保驾护航 背景与挑战:药物的毒副作用是导致新药研发失败的最主要原因之一,也是临床应用中需要高度关注的问题。药物毒性是一个复杂的过程,受化合物成分、个体因素、疾病状态等多种因素影响。如果在药物研发的早期阶段就能准确识别和预测化合物的潜在毒性(如肝毒性、心脏毒性、致癌性等),将极大地节约研发成本,缩短研发周期,并最重要的是保障患者的用药安全。 图像AI的贡献:尽管传统机器学习算法(如朴素贝叶斯、SVM、随机森林)已被用于毒性预测,但随着数据量的增加,其性能常遇到瓶颈。近年来,基于图像的深度学习模型,特别是卷积神经网络(CNN),在药物毒性预测方面也显示出持续且显著的改进。AI模型可以通过学习大量已知毒性数据的化合物分子图像,识别出与特定毒性相关的结构模式或“警示结构”。例如,综述中提到的 ResNet18DNN 模型被成功应用于预测药物引起的肝损伤(DILI),而 KekuleScope、Toxic Colors 等模型也被用于基于分子图像预测化合物的毒副作用。这些研究表明,基于图像的毒性预测模型有望成为传统毒理学评估方法的重要补充。 🚧 机遇与挑战:AI“看图”的进阶之路 虽然基于图像的分子表示学习为AI制药描绘了一幅令人振奋的前景图,展现出巨大的应用潜力,但正如任何新兴技术一样,它目前仍处于相对早期的发展阶段。综述也客观地指出了该领域当前面临的一些关键挑战,并高瞻远瞩地为未来的研究方向提供了宝贵的启示: 图像转换损失与信息保真度 (Image Transformation Loss & Information Fidelity) 挑战:将抽象的分子结构信息(例如从SMILES字符串或3D坐标)忠实地、无损地映射到二维或三维图像,本身就是一个复杂的过程。在这个转换过程中,不可避免地会因为投影、渲染、视角选择等因素而丢失或扭曲部分原始的化学信息(比如细微的键角差异、动态的构象变化等)。此外,很多分子图像,特别是那些只展示骨架的2D图像,其信息密度可能相对稀疏,模型可能难以有效提取潜在特征,无法捕获配体、受体以及配体-受体相互作用的3D结构信息,从而影响性能。 未来展望:未来的研究需要更加关注如何优化分子图像的生成策略,以最大程度地保留和突出与目标性质相关的化学信息。同时,一个富有前景的方向是开发能够结合图像学习与其他多视角/多模态学习的方法。例如,可以将分子的2D图像、3D图像、光谱数据、文本描述等多种信息源融合起来,让它们相互补充、相互印证,从而构建更全面、更鲁棒的分子表示。如果AI能够从更保真的多模态信息中学习,我们或许能更早地发现那些具有独特作用机制或全新化学骨架的候选药物,甚至能更准确地预测它们在复杂生物环境中的行为。 模型泛化能力与领域适应性 (Model Generalization & Domain Adaptation) 挑战:深度学习模型,尤其是那些结构复杂的模型,通常需要大量的、多样化的训练数据才能学习到具有良好泛化能力的特征表示。然而,在药物研发的许多特定任务中,高质量的标签数据往往是稀缺的。这使得模型很容易在训练数据上表现优异,但在面对来自不同化学空间、不同实验条件或全新靶点的新分子时,其性能可能会显著下降。也就是说,模型学习到的知识可能过于“特化”于训练时所见的“领域”,难以推广到未知的“新领域”。 未来展望:提升模型的泛化能力是未来的核心攻关方向之一。可以积极探索和应用机器学习中的领域泛化(Domain Generalization)和领域自适应(Domain Adaptation)等先进技术。例如,领域对抗神经网络(DANN)试图通过学习领域不变的特征表示来消除不同数据集之间的分布差异。此外,元学习(Meta-learning)或“学会学习”的方法,旨在让模型能够从少量样本中快速适应新任务,也具有重要的应用潜力。如果AI模型能够真正实现跨领域、跨任务的知识迁移和快速适应,那意味着我们可以用更少的数据、更快地为各种新靶点、新疾病开发出有效的预测工具,极大地加速“个性化医疗”或“罕见病药物研发”等目前面临数据瓶颈的领域。 表示的隐私性与数据安全 (Representation Privacy & Data Security) 挑战:药物研发过程,特别是当涉及到临床试验数据、患者个人健康信息或具有高度商业敏感性的专有化合物数据时,数据的隐私保护和安全问题就显得尤为突出和关键。传统的集中式数据处理和模型训练方式,即将所有数据汇集到一个中央服务器进行处理,无疑会显著增加数据泄露的风险。 未来展望:联邦学习(Federated Learning)为解决这一挑战提供了一种极具吸引力的分布式学习范式。在联邦学习框架下,各个数据持有方(如不同的科研机构、医院或制药公司)可以在本地利用自己的数据训练模型,而无需将原始数据发送出本地。它们只需要向中央服务器共享模型的参数更新或中间结果,中央服务器再对这些更新进行聚合,从而协同训练出一个全局模型。这种“数据不动,模型动”的方式,能够在有效利用多方数据的同时,最大限度地保护数据隐私。此外,还可以结合差分隐私、同态加密等先进的隐私增强技术,为数据和模型安全提供更强的保障。通过以联邦方式优化表示,可以有效减少数据传输,优化带宽,缓解网络拥堵,并利用多样化数据集提升模型整体性能。 表示的可解释性与决策透明度 (Representation Interpretability & Decision Transparency) 挑战:深度学习模型,尤其是基于图像的CNN模型,常常被诟病为“黑箱模型”。也就是说,虽然它们可能在预测任务上表现出色,但我们很难直观地理解它们究竟是如何从输入的分子图像中学习到知识,并最终做出某个具体预测(例如,为什么模型认为这个分子有毒,或者为什么它认为那个分子具有高活性)的。在对安全性要求极高且需要严谨科学论证的药物研发领域,这种缺乏可解释性的“黑箱”特性是其推广应用的一大障碍。我们不仅想知道“是什么”,更想知道“为什么”。 未来展望:增强模型的可解释性,打开“黑箱”,是提升基于图像的AI制药模型实用性和可信度的关键。可以积极借鉴并发展计算机视觉领域已经取得显著进展的各种可解释性AI(XAI)方法。例如,类激活图(Class Activation Mapping, CAM)及其变体(如Grad-CAM)能够高亮显示出输入图像中对模型决策贡献最大的区域,从而帮助我们理解模型关注了分子的哪些结构特征。此外,像LIME(Local Interpretable Model-agnostic Explanations)和SHAP(SHapley Additive exPlanations)这样的模型无关解释方法,也能够为理解复杂模型的预测行为提供有价值的洞察。通过这些技术,我们可以更好地验证模型的科学合理性,发现潜在的数据偏误,甚至从模型的“思考”过程中获得新的科学启发,最终获得值得信赖和公正的表示。 🎉 总结与展望:未来可期,星辰大海! 总而言之,基于图像的分子表示学习,无疑为人工智能赋能药物研发这条充满机遇与挑战的道路,开辟了一条令人耳目一新且兴奋不已的新途径。 它巧妙地将计算机视觉的强大能力引入到微观的分子世界,凭借其表示的直观性、能够充分借鉴成熟CV技术的便捷性、以及有望捕捉传统方法难以刻画的复杂分子模式等独特优势,已经在药物的早期发现、生物活性的精准预测、以及潜在毒性的有效评估等药物研发的关键环节中,展现出了巨大的潜力与应用价值。 正如这篇精彩的综述所深刻强调的那样,尽管目前基于图像的AI制药领域尚处于蓬勃发展的初期阶段,仍然面临着诸如如何在图像转换中最大限度地保真化学信息、如何提升模型在不同化学空间和任务间的泛化能力、如何在利用数据的同时确保其隐私与安全、以及如何打开模型决策的“黑箱”以增强其可解释性和可信度等一系列挑战,但这恰恰也为未来的研究者们描绘出了一幅充满无限可能的创新蓝图,提供了广阔的探索空间和宝贵的科研机遇。 我们完全有理由满怀信心地相信,随着相关算法的持续创新、计算能力的不断增强、高质量数据集的日益丰富以及多学科交叉合作的不断深入,让AI“看脸”识药的梦想将不再仅仅停留在科幻小说的畅想之中,而是会逐渐演变成现实世界中推动新药研发流程提速增效、降低成本、并最终惠及人类健康的强大引擎!这不仅仅是计算工具的革新,更是药物研发思维模式的进化。当AI拥有了‘洞察’分子视觉语言的能力,它将成为科学家探索未知、创造奇迹的得力伙伴,共同谱写人类健康事业的新篇章。这个领域的前方,是星辰大海,未来可期!让我们共同期待并参与到这场激动人心的变革中来,见证AI如何用‘慧眼’点亮新药发现的未来! 对这个激动人心的前沿方向抱有浓厚兴趣的小伙伴们,强烈建议你们深入阅读这篇综述的原文,以便从中获取更多详尽的技术细节、前沿的研究进展以及深刻的学术洞见! 📚 主要参考文献 [1] Li, Y., Liu, B., Deng, J., Guo, Y., & Du, H. (2024). Image-based molecular representation learning for drug development: a survey. Briefings in Bioinformatics, 25(4), bbae294. https://doi.org/10.1093/bib/bbae294 🖼️ 附录:文中图表速览 以下是对原综述中主要图表标题的中文翻译,帮助大家快速回顾核心内容: 图1 (Figure 1): 现有文献中常用的分子表示方法。由于其学习原理的内在局限性,它们都无法实现准确的分子身份识别和特征提取,这促使研究人员探索一种新型的表示方法。 图2 (Figure 2): 分子视觉表示的一般流程。这里我们以CNN为例。它主要包括四个步骤:(1)从数据集中提取SMILES格式的化合物;(2)将SMILES格式表示的分子转换成图像;(3)将分子的图像表示输入到CNN模型中;(4)使用优化算法训练CNN模型进行预测和分析。 图3 (Figure 3): 基于图像处理的各种学习范式图解。具体来说,监督/无监督学习是指用有标签/无标签数据优化AI模型。多模态学习意味着我们使用不同的数据模态(例如文本、图像)协同优化AI模型,而孪生CNN利用对比学习来衡量两个不同输入之间的相似性,以实现更高效的学习。相反,迁移学习利用来自另一个相似任务的知识来辅助缺乏标签数据的目标任务。自监督学习利用数据本身的属性来生成相关标签进行优化。 图4 (Figure 4): 基于不同学习范式的分类法。这里我们列出了代表性的范式及其对应的工作。我们想澄清ImageCLEF2018是所提出方法的名称,“2018”这个日期并非我们特意添加。此外,我们注意到一些工作在其原始论文中没有给出具体名称,因此我们采用“XX等”的形式来指代该工作。 图5 (Figure 5): 孪生CNN模型图解。其核心思想是利用一个卷积网络从分子中提取药物特征,并利用另一个卷积网络从基因特征向量中提取癌细胞系的特征。 图6 (Figure 6): 药物开发中多模态学习图解。其核心思想是开发一个AI模型,以同时处理不同数据模态(即图像和文本)进行药物识别。 图7 (Figure 7): 基于迁移学习的分子识别图解。我们不使用标记数据,而是借助一个大型预训练数据集,该数据集用于生成预训练模型,我们使用此模型辅助模型学习。这里的预训练模型可以配备各种分类器以适应不同的目标任务。 图8 (Figure 8): 药物开发中基于图像的应用。给定一个分子图像,我们利用计算机视觉技术生成视觉表示,可应用于药物发现、生物活性预测和毒性预测。 表1 (Table 1): 当前关于药物开发的分子表示学习的综述。如表所示,它们都侧重于通用AI技术(GAIT)或特定技术,如NLP和GNN,而未探索与图像相关的学习模型。 表2 (Table 2): 用于药物开发的几个公共数据库。这里我们提供了这些数据库的名称、简要描述、URL和参考文献,旨在促进相关研究。 表3 (Table 3): 不同图像相关模型的图示。我们将使用相同数据集的方法分组,并为每个方法标注发表年份、期刊和具体引文,以使表格清晰。请注意,由于这些方法在其原始论文中采用不同的数据选择方案来评估其有效性,因此无法在同一数据集上对它们进行性能比较。 表4 (Table 4): 用于基于图像的分子表示学习的工具/算法/代码/脚本的完整列表。对于未给出具体名称的算法,我们使用XXX等来表示它们。
Machine Learning & AI
· 2025-05-28
<
>
Touch background to close