LeDock/Vina大批量分子对接结果提取与过滤
废话不多说,在LeDock或AutoDock Vina对接后的对接结果的提取与过滤。
1. LeDock对接结果处理
LeDock分子对接软件支持SDF格式和Mol2格式的小分子作为输入文件进行对接,但对接后的结果文件中打分的提取各不相同,以下是两种分子格式的打分提取脚本。
为了方便后期的数据处理分析,推荐使用SDF格式的分子文件作为LeDock对接的输入文件。
1.1 用SDF文件做的对接
使用SDF格式的分子进行对接,对接后的结果文件默认以"_dock.sdf"为结尾命名。
#提取ledock结果文件中第一个打分值。
echo > ../ledock_result.txt
#读取结果文件,提取第一个打分值,将其保存在”ledock_result.txt“文件中
for i in `ls *_dock.sdf`
do
id=`basename $i _dock.sdf`
awk -v id="${id}" '/> <Score>/ { getline; print id " " $0; exit }' $i>> ../../ledock_result.txt
done
1.2 Mol2格式分子对接
使用Mol2格式的分子进行对接,对接后的结果文件默认以".dok"为结尾命名。
#对接后的结果.dok文件的存储路径
file_path="ledock_docking/dok"
cd ${file_path}
echo >${file_path}/ledock_result.txt
#提取结果文件中的所有打分,将其保存至ledock_result.txt文件中
for dok in `ls *.dok`
do
id=`basename ${dok} .dok`
grep "Score" ${dok}|awk -F 'Score: ' '{print $2}' | awk -v id="${id}" '{print id " " $1}' >>${file_path}/ledock_result.txt
done
#提取第一个打分值
awk '!seen[$3]++' ${file_path}/ledock_result.txt >${file_path}/ledock_result_uniq.txt
1.3 对接打分排序、过滤
# sort将对接结果按照升序排序
sort -k2,2n ledock_result_uniq.txt
# 将排序结果保存
sort -k2,2n ledock_result_uniq.txt >ledock_result_uniq_sort.txt
# 设置一个阈值过滤打分,threshold = -11
awk '$2 < -11' ledock_result_uniq_sort.txt
# 将过滤后的结果保存
awk '$2 < -11' ledock_result_uniq_sort.txt >ledock_result_uniq_sort_11.txt
2. AutoDock Vina对接结果处理
AutoDock Vina对接软件只支持PDBQT格式的分子作为输入文件,并输出相同格式的结果文件,因此以下以默认的"_out.pdbqt"作为输出格式提取所有对接分子库的打分。
echo > ../vina_score.txt
#读取结果文件,提取第一个打分值,将其保存在”vina_result.txt“文件中
for i in `ls *_out.pdbqt`
do
name=`basename $i _out.pdbqt`
grep "REMARK VINA RESULT" -m 1 $i|awk -v id="$name" '{print id " " $4}'>>../vina_score.txt
done
2.2 对接打分排序、过滤
# sort将对接结果按照升序排序
sort -k2,2n vina_score.txt
# 将排序结果保存
sort -k2,2n vina_score.txt >vina_score_sort.txt
# 设置一个阈值过滤打分,threshold = -11
awk '$2 < -11' vina_score_sort.txt
# 将过滤后的结果保存
awk '$2 < -11' vina_score_sort.txt >vina_score_sort_11.txt