社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

PyUUL 提供了生物结构和深度学习算法之间的重要衔接

人工智能学家 • 3 年前 • 831 次点击  
编辑 | 萝卜皮
结构生物信息学缺乏连接生物结构和机器学习方法的接口,使得现代神经网络架构的应用变得十分困难。这对基于结构的生物信息学方法的发展,产生了负面影响,是结构生物学研究的瓶颈之一。
在这里,来自 VIB-KU Leuven 脑与疾病研究中心 Switch 实验室的研究人员,展示了 PyUUL——这是一个将生物结构转换为 3D 张量的数据库,支持「开箱即用」般地应用最先进的深度学习算法。
该库将生物大分子转换为计算机视觉典型的数据结构,例如体素和点云,已经对其进行了广泛的机器学习研究。此外,PyUUL 支持开箱即用的 GPU 和稀疏计算。研究人员已经使用 PyUUL 解决了一些典型的生物信息学问题,例如结构识别和对接。
该研究以「PyUUL provides an interface between biological structures and deep learning algorithms」为题,于 2022 年 2 月 18 日发布在《Nature Communications》。
一方面
AlphaFold 和 RoseTTAfold 在蛋白质折叠预测中获得的成功表明,先进的人工智能可能是解决的生物物理问题的关键。
然而,结构生物学和生物信息学在尖端机器学习(ML)算法的应用方面往往落后,ML 研究前沿使用的算法与其他学科采用的算法之间往往存在技术错位。
特别是将 ML 应用于蛋白质结构,受这种不均衡的技术可用性影响最严重。大多数现有的基于结构的计算方法仅间接使用可用的结构信息(即 PDB 结构)。
相反,这些方法从 PDB 结构中计算特征,然后将这些预先计算的值输入到传统的机器学习方法中。这可能并不是最优的解决方案。
尽管如此,研究人员面临两大问题:(1)缺乏工具将三维大分子结构的复杂数据转换为适合于简单 ML 分析的格式;(2) 在处理复杂的结构化输入数据时,传统的机器学习方法缺乏灵活性。
另一方面
计算机视觉深度学习技术在结构生物学中的早期应用已经在大量应用中显示出其有效性,包括蛋白质结合位点预测、突变效应预测和对接。科学界更广泛地使用这些算法将加速该领域的这一重要进展。
近年来,随着深度学习在计算机视觉、图像识别和自然语言处理等领域取得突破,谷歌和 Facebook 等公司通过开发灵活的开源库,不断为神经网络技术(NN)的普及做出贡献,例如 TensorFlow 和 Pytorch。
这些库允许研究人员通过允许使用任意复杂的多维张量结构作为输入特征来为任何给定问题构建临时模型,从而消除了上述经典 ML 方法的方法学限制。由于这些灵活的 NN 库提供的工具如今可供每位研究人员使用,为了在结构生物学中实现深度学习算法的应用,尚需填补的空白在于提供可靠、透明的工具,将原始三维大分子结构从 PDB 无缝地转换为适合 ML 的格式。
然后,这些新格式可以直接用作最新 NN 架构中的输入特征,包括 Transformers 和 3D 卷积 NN。
于是乎
在该研究中,研究人员旨在通过展示 PyUUL 来填补这一空白,PyUUL 是一个 Pytorch 库,旨在处理生物分子的 3D 结构,将它们转换为可微分的、用于 ML 的张量表示。
换句话说,PyUUL 允许研究人员通过将结构数据转换为用于 ML 的数据结构,将任何新开发的 NN 架构应用于他们最喜欢的结构生物学问题。
这种转换对用户来说是完全透明的,因此掩盖了 3D 结构的内在复杂性。此外,PyUUL 遵循完全端到端的方法,这意味着它可以用作 NN 的内部通道,反向传播梯度流过它。
PyUUL 支持不同的结构表示
PyUUL 提供了生物结构(例如 PDB 结构)和深度学习算法之间的接口。用户可以在三种不同类型的生物结构张量表示之间进行选择:基于体素、表面点云和体积点云
图示:PyUUL 功能概述。(来源:论文)
PyUUL 在结构生物信息学问题上的应用
作为 NN 模型如何与 PyUUL 一起使用的示例,研究人员构建了一个 NN 来识别蛋白质结构中的 α 螺旋。他们选择这个例子是因为,虽然用一个相对简单的神经网络很容易解决这个问题,但它显然需要从描述输入蛋白质的体素化体积中提取结构信息,表明蛋白质正确地转化为张量数据结构,结构信息得以保留。此外,NN 足够简单,可以清晰地显示其学习过程。

图示:PyUUL在结构生物信息学问题上的应用。(来源:论文)

此示例的目的是表明 PyUUL 的体积表示具有高度信息性,并且 ML 方法可以轻松地从中建模结构生物学概念(例如二级结构)。
PyUUL 提供的张量表示是几个计算机视觉实用程序库的标准输入,例如 torch-Geometric 和 torch-points3d。第一个提供前沿网络模块,例如graph-CNN,而第二个还包括几种网络架构,可以即插即用的方式使用,如果与 PyUUL 配对,则完全可以开箱即用。
使用教程: https://pyuul.readthedocs.io/examples/example1.html
PyUUL 也适用于核酸和小分子
PyUUL 已构建为尽可能通用。因此,可以将任何生物分子转换为张量表示,包括小分子和核酸。此功能旨在帮助用户在药物重新定位或化学发现等主题中应用现代 ML 算法。此外,在处理超分子复合物或核酶时,处理核酸的可能性可能很有用。
当前版本的 PyUUL 提供了大多数常见的非蛋白质生物分子和原子的数据。但是,如果提供了原子半径,它也可以处理包含更多奇异原子的分子。PyUUL 的文档中提供了有关如何生成不受支持分子的体积表示的教程。
使用 PyUUL 进行基于结构的端到端蛋白质聚类
新的 NN 方法通常会模糊回归器和分类器之间的划分,因为它们的灵活性允许这些模型处理预测任务的中间风格。这方面的一个例子是度量学习,这是一种允许神经网络学习「如何将输入对象映射到学习的潜在空间」的技术,其中保留了这些对象之间距离的目标定义(度量)。
作为显示 PyUUL 功能的概念证明,研究人员提出了一种用于蛋白质折叠识别的蛋白质结构的旋转不变度量学习的 NN。他们收集了 491 个蛋白质结构,分为 4 个不同的 SCOP 类别;然后训练了一个 NN 来执行基于 PyUUL 体积蛋白质表示的监督聚类。
他们使用的 NN 是一个 3D Siamese NN,它将蛋白质的 PyUUL 体素表示作为输入,并将它们映射到一个潜在空间,使用 ST 层来确保旋转不变性。这个潜在空间是蛋白质的抽象矢量表示,其中具有相似结构的蛋白质由相似的向量表示,而具有完全不同结构的蛋白质更远。
换句话说,研究人员构建了一个有监督的聚类算法,该算法根据用作输入的 PyUUL 体积表示中存在的形状信息为蛋白质分配一个签名。
另外,还可以使用 PyUUL 进行基于梯度的蛋白质结构优化。
GPU 并行化、稀疏张量和资源使用
PyUUL 可以使用来自 Pytorch 的稀疏张量计算体积。这通常会提高性能,尤其是在将许多卷批处理在一起时。这是因为空体素通常占主导地位。即使目前 Pytorch 对稀疏 NN 的支持在某种程度上受到限制,许多第三方库与 Facebook 研究小组一起目前正在开发以允许稀疏计算。PyUUL 具有完整的 GPU 计算支持,所有操作都可以由 CPU 或 GPU 处理。
结语
在结构生物学中,采用最新的深度学习算法比其他科学领域要滞后。主要因素是生物结构以特殊的数据格式存储,作为深度学习方法的输入并非易事。PyUUL 可以用来解决这个问题,方法是将大分子中包含的原始结构数据与深度学习算法所需的输入格式连接起来。还有其他公开可用的软件包可以将生物结构转换为体积(主要是基于体素)表示。
但是,在 PyUUL 中,体积变换是以可微分的方式执行的,这意味着 Pytorch 计算的梯度可以通过它。这个特性对于端到端序列到结构的神经网络的开发是必不可少的,因为梯度应该从输入流到损失函数而不会中断。
具有端到端架构的 AlphaFold 最近在 CASP14 竞赛中的成功凸显了这种神经网络的潜力。因此,PyUUL 可用于在此类架构中轻松实现基于 3D 的 NN 模块。
PyUUL 获取地址:
https://pyuul.readthedocs.io/
https://bitbucket.org/grogdrinker/pyuul/
论文链接:https://www.nature.com/articles/s41467-022-28327-3

人工智能 × [ 生物 神经科学 数学 物理 材料 ]

「ScienceAI」关注人工智能与其他前沿技术及基础科学的交叉研究与融合发展

欢迎注标星,并点击右下角点赞在看

点击读原文,加入专业从业者社区,以获得更多交流合作机会及服务。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/128328
 
831 次点击