老版DrugScreen的一些小错误

在前天运行程序 ./program/vina时,fdaapp数据库中的部分配体出现错误。

Parse error on line 12 in file "./fdaapp/DB09137.pdbqt": ATOM syntax incorrect: "Tc"
is not a valid AutoDock type. Note that AutoDock atom types are case-sensitive.

类似的,其他金属离子B, Gd, nan, Pt, As, Bi, Al, Ag, Ga, La, Sr等也会出现类似的错误。AutoDock对部分带金属离子的配体不能正常对接。在dock.log文件里显示为(已省略部分信息):

#错误的输出
Calculate DB00188
Reading input ... Calculate DB00196#在读取配体文件时报错(见上),进而直接跳过该配体计算下一个配体
mode |   affinity | dist from best mode
     | (kcal/mol) | rmsd l.b.| rmsd u.b.
-----+------------+----------+----------
   1         -6.5      0.000      0.000
Writing output ... done.
#####################################
#正常的输出,在读取配体文件时显示done
Calculate DB00209
Reading input ... done.
mode |   affinity | dist from best mode
     | (kcal/mol) | rmsd l.b.| rmsd u.b.
-----+------------+----------+----------
   1         -6.1      0.000      0.000
Writing output ... done.

因此,在得到Score.txt时,会将下一配体DB00196的计算结果算到DB00188中。而DB00196无计算结果。

Calculate DB00188
   1         -6.5      0.000      0.000

Calculate DB00209
   1         -6.1      0.000      0.000



解决办法
在保存dock结果时,在Calculate DB00188前添加一行***Start***,如下图

#添加***Start***以保证Calculate在行首
Calculate DB00188
Reading input ... ***Start***
Calculate DB00196

在读取dock.log文件,整理以得到Score.txt文件时,代码如下:

while(<FILE>)
{
      if($_=~/^Calculate/)
      {
            chomp $_;
            $temp_ligand=$_;            
      }
      if($_=~/^   1 /)
      {
            @buff=();

            system "echo $temp_ligand  >> $outdir/Score.txt";
            my @temp=split(/\s+/, $temp_ligand);
            push @buff, $temp[1];

            system "echo '$_'  >> $outdir/Score.txt";
            @temp=split(/\s+/, $_);
            push @buff, $temp[2];
            push @data, [@buff];
      }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。