pdbqt到pdb或mol2的批量转换

2018年1月22日

AutoDock Vina作为一款开源的分子对接软件,具有速度快,算法准确等优点,特别适合用于搭建基于分子对接的虚拟筛选。但是由Vina给出的虚拟筛选的结果却是pdbqt格式的!目前支持pdbqt格式的软件并不多,而且很多软件对pdbqt格式的识别并不是很好,常常不能正确的识别原子及键类型。本教程中将利用MGLTools、UCSF Chimera和Open Babel软件演示如何批量的将pdbqt分子文件转换为标准的pdb和mol2分子文件。

 

操作系统:CentOS 6.8 x64

软件:MGLTools、UCSF Chimera、Open Babel

分子文件:MOL1_out.pdbqt、MOL2_out.pdbqt和MOL3_out.pdbqt

 

现在使用PyMOL软件打开由Vina给出的对接结果——MOL1_out.pdbqt分子,如下:

可以看到,Vina软件输出的pdbqt中没有非极性氢原子,并且芳环识别错误(pdbqt中芳香C以A表示)。很明显,我们需要将pdbqt格式转换为标准的分子格式(mol2、pdb等)。如果只是少数几个pdbqt格式的分子,我们可以使用Autodock Tools转换,当需要转换的分子较多时,则需要借助脚本了。

 

1. pdbqt转换为pdb

此步骤推荐使用MGLTools中的pdbqt_to_pdb.py脚本转换pdbqt格式为pdb。教程中使用3个pdbqt文件演示批量操作。工作目录(root/WOKESPACE/pdbqt2pdb,因为在桌面创建了文件夹WOKESPACE的快捷方式,所以图片中显示的位置为root/Desktop/WOKRSPACE/pdbqt2pdb)中的文件及目录结构如下:

其中,文件夹pdbqt用于放置输入的pdbqt格式分子,文件夹pdb用于存放输出的pdb格式分子,pdbqt2pdb.sh即将pdbqt格式转换为pdb格式的脚本文件,resnum.sh为一个备用脚本。

pdbqt2pdb.sh脚本的内容如下:

#!/bin/sh

echo "***`date +"%Y-%m-%d %H:%M:%S"` Converting all molecules into pdb format..."

for file in `ls ./pdbqt/`

do

    NAME=`echo $file | cut -d "." -f1`

    $ADT_HOME/Utilities24/pdbqt_to_pdb.py -f ./pdbqt/$file -o ./pdb/${NAME}.pdb

    wait

done

echo "***`date +"%Y-%m-%d %H:%M:%S"` Job done!"

其中变量ADT_HOME为MGLTools中AutoDock Tools的家目录。

将MOL1_out.pdbqt、MOL2_out.pdbqt和MOL3_out.pdbqt三个分子文件放入工作目录中的文件夹pdbqt中,并在工作目录打开终端,输入sh pdbqt2pdb.sh运行脚本。

转换完成!

需要说明的是,转换过来的pdb文件中的残基编号(第6列)必须为数字,否则在下一步中,UCSF Chimera软件不能打开分子文件。由pdbqt_to_pdb.py转换pdbqt得到的pdb文件中,第6列有时不是数字。如果不是数字(本教程中手动将第6列改为AAA,用于演示),如下:

可使用脚本resnum.sh更正,脚本内容如下:

#!/bin/sh

for file in `ls ./pdb`

do

    sed -i 's/AAA/1  /g' ./pdb/$file

done

其中,sed -i 's/AAA/1  /g' ./pdb/$file中,“AAA”为被替换的内容,“1  ”为替换后的内容。注意,替换后的内容与替换前的内容必须具有相同的字符数,即此处1后面必须有两个空格。否则会导致pdb格式错误。

运行脚本,更正pdb文件:

更正后内容如下:

 

2. 补全pdb文件信息

1中的转换得到的pdb分子,虽然已转换成标准的pdb格式,但这些分子中不包含非极性氢原子,并且没有CONECT信息。在使用PyMOL(或Open Babel等)添加氢原子很可能出现加氢错的情况,如下:

芳环及最右侧C原子上的氢添加错误!在使用中,发现UCSF Chimera软件能很好的处理这种不包含CONECT信息的pdb分子文件。下图是UCSF Chimera的加氢结果:

现在我们演示如何批量的补全1中的pdb分子文件。

本步骤的工作目录(root/WOKESPACE/CHIMERA)中的文件及目录结构如下:

其中,文件夹input-pdb中用于放置待加氢的pdb分子,文件夹output-pdb中用于储存加氢后的pdb分子。setup.sh脚本用于生成UCSF Chimera软件的输入脚本。为了方便,我们也将下一步(pdb转mol2)中的相关文件(夹)放在这个工作目录中。pdb2mol2.sh脚本可将output-pdb中的pdb分子转换为mol2分子,并储存在mol2文件夹中。

setup.sh脚本内容如下:

#!/bin/sh

for file in `ls input-pdb`

do

    echo "open /root/WOKESPACE/CHIMERA/input-pdb/$file"

    echo "addh"

    echo "write #0 /root/WOKESPACE/CHIMERA/output-pdb/$file"

    echo "delete"

done

其中/root/WOKESPACE/CHIMERA/为当前的工作目录,实际使用中需要根据您的工作目录进行调整。将1中得到的3个pdb文件放置于文件夹input-pdb中,在工作目录中打开终端并输入如下命令生成UCSF Chimera的输入文件。

sh setup.sh > chimera.in

打开UCSF Chimera软件,点击Favorites > Command Line打开命令行输入栏。在命令行输入栏中输入read /root/WOKESPACE/CHIMERA/chimera.in,回车,执行批量加氢脚本。

文件夹output-pdb中已成功生成了补全信息后的pdb文件,完成!

注意:不能使用一个chimera.in脚本执行过多分子的批量操作,建议一个chimera.in文件中不要包含大于400个分子的加氢操作,否则会导致UCSF Chimera软件卡顿。这可能与图形化软件的缓存有关。所以,在处理过多分子时,需要将上面生成的chimera.in拆分成多个文件。文件chimera.in中,每4行命令为处理一个分子的一组命令,拆分文件时要千万注意。

 

3. pdb转换为mol2

基于对接的虚拟筛选后,通常还需要进行其他的筛选步骤。因此,有时有必要将pdb格式转换为适用性更好的mol2格式。这时,就需要借助Open Babel软件了。

工作目录及用到的文件等已在上一步骤说明,脚本pdb2mol2.sh的内容如下:

#!/bin/sh

echo "***`date +"%Y-%m-%d %H:%M:%S"` converting all molecules into mol2 format..."

cd ./output-pdb

for file in `ls ./`

do

    NAME=`echo $file | cut -d '.' -f 1`

    mv $file $NAME

    babel -ipdb $NAME -omol2 ../mol2/${NAME}.mol2

    mv $NAME $file

    wait

done

echo "***`date +"%Y-%m-%d %H:%M:%S"` Job done!"

其中,mv $file $NAME可将MOL1_out.pdb、MOL_2.pdb和MOL_3.pdb分别重命名为MOL_1、MOL_2和MOL_3,这样做的目的是为了避免得到的mol2文件中第二行的名称里包含“.pdb”字样。mv $NAME $file则是为了还原pdb文件的名称。

运行脚本pdb2mol2.sh,转换格式。

 

OK,您已成功批量的将pdbqt文件转换成了标准的pdb和mol2文件。但是在实际应用中,分子数过多时还需要设置多个线程在后台同时执行任务。这就需要一定的Linux shell基础了,一般来说借助一个取余判断就可以做到。

好运~

版权声明:本文由Seif Joe于2018/01/22原创发表

转载请注明:pdbqt到pdb或mol2的批量转换 | Seif Joe

分享: