这部分参照我前面的博客,详细展开,会很冗长:
对接文件准备
注:蛋白质的处理方法与博客中一致,对于小分子库的批量处理及config.txt文件的参数上有差异,请参照这篇博客的内容
打开Windows的Microsoft Store在其中搜索ubuntu,直接安装即可,我安装的是18.04.5版本
可按照下面的这篇博客操作:
WLS的安装
为保险起见,建议后面所有的操作在root权限下完成,开始由于没有使用root权限,导致后面踩了一天的坑,西湖的水我的泪这个到后面具体的位置会讲到。
anaconda3的安装很容易:
wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda-1.5.0-Linux-x86_64.sh
sh Anaconda-1.5.0-Linux-x86_64.sh
# 后面一直yes即可
# 配置一下环境变量
vim ~/.bashrc
# 最后一行输入
export PATH="/你的anaconda3安装的绝对路径/anaconda3/bin:$PATH"
# 保存退出
source ~/.bashrc
这部分请使用root权限来搞,在base环境下进行,不然后面会遇到坑,numpy无法调用,MolKit也无法调用(不说了,全是泪)。
首先在官网上下载安装包:
官网下载地址
此处选择mgltools_x86_64Linux2_1.5.7.tar.gz (Linux 64 tarball installer 108Mb)
安装过程:
# 解压安装包:
tar -zxvf mgltools_x86_64Linux2_1.5.7.tar.gz
# 进入mgltools_x86_64Linux2_1.5.7,运行安装脚本
cd mgltools_x86_64Linux2_1.5.7
bash install.sh
# 安装完毕后配置环境变量
vim ~/.bashrc
# 打开后添加如下几行
export PATH=mgltools文件包的绝对路径/bin:$PATH
# 添加alias,同样在.bashrc中,新增下面4行
alias pmv='mgltools文件包的绝对路径/bin/pmv'
alias adt='mgltools文件包的绝对路径/bin/adt'
alias vision='$mgltools文件包的绝对路径/bin/vision'
alias pythonsh='mgltools文件包的绝对路径/bin/pythonsh'
# 保存退出
# 更新设置
source ~/.bashrc
安装完成后我们检查一下,确保安装成功:
# 查看python版本,mgltools包是python2编写的,因此你base环境中的python为2版本运行后续代码才不会出错
python -V
# 我的显示未python2.7.11
# 进入python,检查numpy,Molkit导入
python
>import numpy
>import MolKit
# 均未出现报错,说明安装没有问题,如果报错提示出现UCS2,建议删除,在root环境下搞
安装mgltools主要是使用其中的脚本,prepare_ligand.py和prepare_ligand4.py两个脚本可以批量处理分子库中的分子(加极性氢,电荷优化等)。mgltools中还有好多其它好用的脚本,后面的教程中会慢慢介绍。关于批量处理配体的部分我将在openbabel部分介绍。
# 创建一个openbabel的环境
conda create -n openbabel python==2.7
# 激活环境
conda activate opanbabel
# 安装openbabel
conda install openbabel -c conda-forge
# 测试安装成功
obabel -V
openbabel安装成功后,接下来对小分子库进行处理,这里用到了文献上提供的格式转换器进行smiles到sdf格式的转换(自己实验了一下,感觉效果比较好),CACTUS[1]:
CACTUS格式转换器
将smiles格式转换为sdf以后,接下来结合openbabel及prepare_ligand4.py脚本来处理,将mol2格式的分子库文件拆分并转换为.pdbqt的格式(注:openbabel也可以转换pdbqt格式,但实测效果并不好,得出的结构有时会扭曲的不像样子)。
# 首先将mol2格式转换成sdf
obabel ligand.sdf -omol2 -m
# 将大文件切分为单个小文件,共2860个小分子
obabel -i mol2 ligand.mol2 -o mol2 -O ligand.mol2 -m
# 创建文件夹
mkdir {1..2860}
# 批量将配体放入文件夹下
for i in {1..2860};do mv ./ligand${i}.mol2 ./$i;done
# 为方便后面对接,文件夹内的配体名统一改为ligand.mol2
for i in {1..2860};do cd ./$i; mv ligand*.mol2 ./ligand.mol2; cd ../;done
# 批量转换mol2文件为.pdbqt文件,用prepare_ligand4.py脚本来完成
for i in {1..2860};do cd ./$i; /绝对路径/prepare_ligand.py -l ligand.mol2 -o ligand.pdbqt; echo $i; cd ../;done
在官网上下载vina_1.2.3_linux_x86_64版本,并编译即可
官网下载链接:
vina下载地址
官网教程链接:
vina官方教程
一切准备就绪,我们进入对接过程:
把需要的建立几个文件夹,把需要的对接文件放进去:
mkdir data
cd data
mkdir input
# 随后将处理好的小分子库,蛋白质的pdbqt文件,以及config.txt文件放入到input文件夹中,
对config.txt文件稍做改动,其中receptor要写清绝对路径,对于energy_range项根据自己的体系设置, 也可不设置。
运行如下指令进行对接:
# 运行对接指令
for i in {1..2860};do cd ./$i; vina --config 绝对路径/config.txt --out ligand.log; echo $i; cd ../;done
# 等待运行完成,会生成2860个.log文件,分别存储2860个分子对接的结果
接下来对对接结果进行提取和分析:
# 提取.log文件,统一存放到log_file文件夹中
mkdir log_file
# 由于前面对接时每一个log文件都叫ligand_protease,在合并到一个文件夹中需要先按照序号进行重新命名
for i in {1..2860}; do cd $i; mv ligand_protease.log ligand_protease_$i.log;cp ligand_protease_$i.log/log_file文件夹的绝对路径/log_file/;cd ../;done
# 对.log文件进行备份
mkdir out_file_change_log_name
for i in {1..2860};do cp -r $i /绝对路径/out_file_change_log_name/;done
对于对接结果,我们关注的是亲和力,与蛋白质结合亲和力越强的分子可能性越大。
接下来写一个脚本,提取每个分子的结合亲和力信息:
# log_file文件夹中创建脚本
touch extract_affinity.py
# 进入编写
vim extract_affinity.py
# 脚本内容
# !/usr/bin/env python
import glob
log_file = glob.glob('*.log')
file1 = open('affinity.out','w')
for i in log_file:
file2 = open(i,'r')
data = file2.readlines()
file2.close()
for j in data:
if j.split()[0] == 'REMARK' and j.split()[1] == 'VINA':
if j.split()[4] == '0.000':
affinity = i + ' ' + j.split()[3]
file1.writelines(affinity + '\n')
else:
continue
file1.close()
# 退出并保存
在log_file文件夹中运行脚本即可:
python extract_affinity.py
对得到的affinity.out文件中根据能量值排序,选出合适的分子,进行进一步的MD模拟。
注:整个过程主要参考了nature protocol上的文章,及一篇简书上的教程,网络教程千千万,靠谱的凤毛麟角,这篇算保姆级的了,如果您跟着不能复现,请随时留言。此外说明一点,vina目前有GPU版本的,次教程中用到的是cpu版本,我试了一下,还是很快的,4000个左右分子,一晚上就结束了。
量很大的建议用GPU,天量对接的还可以用集群来完成,这篇博客里有记载方法,总之量体裁衣,用现有的资源,选择适合自己的。
使用GPU及集群的方法
nature protocol上的教程强烈建议读一遍,非常好,介绍了一些参数选择问题以及autodock4及vina的原理,还有一些特别的情况,有水分子参与,有金属离子存在该怎么办这类的,非常好,是以一款很有名的药——格列卫分子对接过程做例子的。_看过电影《我不是药神》的人应该对它有印象吧。
1: https://www.nature.com/articles/nprot.2016.051
2:https://www.jianshu.com/p/a6b64e9a3c4f