使用深度学习进行蛋白质-蛋白质相互作用排名
项目描述
DeepRank
内容
概述
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 的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | 8ef8c27b0d2742baf5cedf97d596506d1b1e8024ac86340ffb65502104b0dfd9 |
|
MD5 | ce5af3c4a7912fc3a3e0fd860779e87d |
|
BLAKE2b-256 | 4ff5b123ebe93af7b5085673fbfcedb6064c0c097221b5de5f59585614cfd367 |
deeprank-0.2.1-py3-none-any.whl 的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | cc938a3c0e7f4dada24473e61e5b32ec5a54f01dc6dc9a72f32426979e17b9aa |
|
MD5 | 354d7b03af2711f5848298b476e1c096 |
|
BLAKE2b-256 | 21463f38f26b4c3220963c0c1d04a21697f55023857556ac0cb52309c355c485 |