跳转到主要内容

使用深度学习进行蛋白质-蛋白质相互作用排名

项目描述

DeepRank

PyPI Documentation Status DOI Build Codacy Badge Coverage Status

内容

概述

alt-text

DeepRank是一个通用、可配置的深度学习框架,用于使用3D卷积神经网络(CNNs)进行数据挖掘蛋白质-蛋白质相互作用(PPIs)。

DeepRank包含用于预处理PPIs数据、计算特征和目标、以及训练和测试CNN模型的实用API。

特点

  • 预定义的原子级和残基级PPI特征类型
    • 例如:原子密度、vdW能量、残基接触、PSSM等。
  • 预定义的目标类型
    • 例如:二进制分类、CAPRI类别、DockQ、RMSD、FNAT等。
  • 灵活定义新特征和目标
  • 3D网格特征映射
  • 高效存储HDF5格式数据
  • 支持分类和回归(基于PyTorch)

安装

DeepRank需要Linux和MacOS上的Python 3.7或3.8版本。

稳定版本

DeepRank在PyPI上提供稳定版本

  • 安装模块pip install deeprank

开发版本

您还可以从分支 development 安装正在开发的源代码

  • 克隆仓库 git clone --branch development https://github.com/DeepRank/deeprank.git
  • 进入该目录 cd deeprank
  • 安装包 pip install -e ./

要检查安装是否成功,您可以运行一个测试

  • 进入测试目录 cd test
  • 运行测试套件 pytest

教程

我们在这里提供了DeepRank机制的入门介绍教程。更多详细信息可以在文档中找到 http://deeprank.readthedocs.io/en/latest/。我们在这里简要介绍Deeprank的两个主要步骤

  • 数据生成
  • 运行深度学习实验。

A. 生成数据集(使用MPI)

数据生成只需要PDBs文件( decoys 和其天然结构)以及如果需要的话PSSM。所有特征/目标以及映射到网格点上的特征都将自动计算并存储在HDF5文件中。

from deeprank.generate import *
from mpi4py import MPI

comm = MPI.COMM_WORLD

# let's put this sample script in the test folder, so the working path will be deeprank/test/
# name of the hdf5 to generate
h5file = './hdf5/1ak4.hdf5'

# for each hdf5 file where to find the pdbs
pdb_source = ['./1AK4/decoys/']


# where to find the native conformations
# pdb_native is only used to calculate i-RMSD, dockQ and so on.
# The native pdb files will not be saved in the hdf5 file
pdb_native = ['./1AK4/native/']


# where to find the pssm
pssm_source = './1AK4/pssm_new/'


# initialize the database
database = DataGenerator(
    chain1='C', chain2='D',
    pdb_source=pdb_source,
    pdb_native=pdb_native,
    pssm_source=pssm_source,
    data_augmentation=0,
    compute_targets=[
        'deeprank.targets.dockQ',
        'deeprank.targets.binary_class'],
    compute_features=[
        'deeprank.features.AtomicFeature',
        'deeprank.features.FullPSSM',
        'deeprank.features.PSSM_IC',
        'deeprank.features.BSA',
        'deeprank.features.ResidueDensity'],
    hdf5=h5file,
    mpi_comm=comm)


# create the database
# compute features/targets for all complexes
database.create_database(prog_bar=True)


# define the 3D grid
 grid_info = {
   'number_of_points': [30,30,30],
   'resolution': [1.,1.,1.],
   'atomic_densities': {'C': 1.7, 'N': 1.55, 'O': 1.52, 'S': 1.8},
 }

# Map the features
database.map_features(grid_info,try_sparse=True, time=False, prog_bar=True)

此脚本可以使用例如4个MPI进程,使用以下命令执行

    NP=4
    mpiexec -n $NP python generate.py

脚本的第一部分我们定义了寻找数据集中要包含的decoys和natives的PDBs文件的位置。在 pdb_source 中存在的所有 .pdb 文件都将用于数据集。我们需要指定找到天然构象的位置,以便能够计算RMSD和dockQ得分。对于在 pdb_source 中检测到的每个pdb文件,代码将尝试在 pdb_native 中找到相应的天然构象。

然后我们初始化 DataGenerator 对象。此对象(定义在 deeprank/generate/DataGenerator.py)需要一些输入参数

  • pdb_source: 包含在数据集中的PDB文件的路径
  • pdb_native: 找到相应天然构象的路径
  • compute_targets: 用于计算目标的模块列表
  • compute_features: 用于计算特征的模块列表
  • hdf5: 存储数据集的HDF5文件名

然后使用命令 database.create_database() 创建数据库。此函数会自动创建一个HDF5文件,其中每个pdb都有一个自己的组。在每个组中,我们可以找到复合物的pdb和其天然形式,计算的特征和计算的目标。现在我们可以将特征映射到网格上。这是通过命令 database.map_features() 完成的。如您所见,此方法需要一个字典作为输入。字典包含映射数据的说明。

  • number_of_points: 每个方向上的点数
  • resolution: Angs 中的分辨率
  • atomic_densities: {'atom_name': vvdw_radius} 需要的原子密度

原子密度按照 protein-ligand paper 进行映射。其他特征使用高斯函数(其他模式也是可能的,但某些方面是硬编码的)映射到网格点上

映射特征的可视化

要探索HDf5文件并可视化特征,您可以使用专门的浏览器 https://github.com/DeepRank/DeepXplorer。此工具允许您挖掘HDF5文件,并直接生成用于在VMD或PyMol中可视化特征的文件。此外,还集成了iPython控制台,可以用于分析特征值,绘图等...

B. 深度学习

上面生成的HDF5文件可以用作深度学习实验的输入。您可以查看文件 test/test_learn.py 以获得一些示例。我们在此简要概述了整个过程。

from deeprank.learn import *
from deeprank.learn.model3d import cnn_reg
import torch.optim as optim
import numpy as np

# input database
database = '1ak4.hdf5'

# output directory
out = './my_DL_test/'

# declare the dataset instance
data_set = DataSet(database,
            chain1='C',
            chain2='D',
            grid_info={
                'number_of_points': (10, 10, 10),
                'resolution': (3, 3, 3)},
            select_feature={
                'AtomicDensities': {'C': 1.7, 'N': 1.55, 'O': 1.52, 'S': 1.8},
                'Features': ['coulomb', 'vdwaals', 'charge', 'PSSM_*']},
            select_target='DOCKQ',
            normalize_features = True, normalize_targets=True,
            pair_chain_feature=np.add,
            dict_filter={'DOCKQ':'<1'})


# create the network
model = NeuralNet(data_set,cnn_reg,model_type='3d',task='reg',
                  cuda=False,plot=True,outdir=out)

# change the optimizer (optional)
model.optimizer = optim.SGD(model.net.parameters(),
                            lr=0.001,
                            momentum=0.9,
                            weight_decay=0.005)

# start the training
model.train(nepoch = 50,divide_trainset=0.8, train_batch_size = 5,num_workers=0)

脚本的第一部分我们创建了一个从HDF5文件创建的Torch数据库。我们可以指定一个或多个HDF5文件,甚至使用 dict_filter 参数选择一些构象。还可以使用 DataSet 的其他选项来指定特征/目标、归一化等...

然后我们创建一个以数据集作为输入参数的 NeuralNet 实例。有多个选项可用于指定要执行的任务、GPU 使用等。然后我们只需训练模型。很简单!

问题和贡献

如果您有疑问或发现错误,请通过 Github 问题频道 报告问题。

如果您想更改或进一步开发 DeepRank 代码,请查看 开发者指南 了解如何进行进一步开发。

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源分发

deeprank-0.2.1.tar.gz (704.0 kB 查看散列值)

上传时间

构建分发

deeprank-0.2.1-py3-none-any.whl (101.1 kB 查看散列值)

上传时间 Python 3

由...

AWSAWS云计算和安全赞助商DatadogDatadog监控FastlyFastlyCDNGoogleGoogle下载分析MicrosoftMicrosoftPSF赞助商PingdomPingdom监控SentrySentry错误记录StatusPageStatusPage状态页面