在前天運(yùn)行程序 ./program/vina時(shí)净赴,fdaapp數(shù)據(jù)庫中的部分配體出現(xiàn)錯(cuò)誤。
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等也會(huì)出現(xiàn)類似的錯(cuò)誤疟呐。AutoDock對部分帶金屬離子的配體不能正常對接。在dock.log文件里顯示為(已省略部分信息):
#錯(cuò)誤的輸出
Calculate DB00188
Reading input ... Calculate DB00196#在讀取配體文件時(shí)報(bào)錯(cuò)(見上)东且,進(jìn)而直接跳過該配體計(jì)算下一個(gè)配體
mode | affinity | dist from best mode
| (kcal/mol) | rmsd l.b.| rmsd u.b.
-----+------------+----------+----------
1 -6.5 0.000 0.000
Writing output ... done.
#####################################
#正常的輸出启具,在讀取配體文件時(shí)顯示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時(shí)珊泳,會(huì)將下一配體DB00196的計(jì)算結(jié)果算到DB00188中鲁冯。而DB00196無計(jì)算結(jié)果拷沸。
Calculate DB00188
1 -6.5 0.000 0.000
Calculate DB00209
1 -6.1 0.000 0.000
解決辦法
在保存dock結(jié)果時(shí),在Calculate DB00188
前添加一行***Start***
薯演,如下圖
#添加***Start***以保證Calculate在行首
Calculate DB00188
Reading input ... ***Start***
Calculate DB00196
在讀取dock.log文件撞芍,整理以得到Score.txt文件時(shí),代碼如下:
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];
}
}