python脚本获取vina虚选log文件score数值。
本帖最后由 phenylazide 于 2017-5-14 21:37 编辑上午我看了作者“数据挖掘“ 写的原创 文章:[原创] vina 虚拟筛选log文件的分析的脚本,他用的是perl写的脚本
但是我自己运行了下他的代码,一直出现错误,从来没有成功过,另外尝试了下想看懂perl,但感觉比较难,难以下手去改。后来发现有两种方便的方法可以调出结果。
第一种: 在linux下面使用强大的grep命令。
---------------------------
~$ grep " 1 -" */*log.txt每个ligand的第一个pose结果就全出来了:
例如我得到结果如下:
result_3K5K/A366_3K5Klog.txt: 1 -7.6 0.000 0.000
result_3K5K/asc_17_3K5Klog.txt: 1 -7.7 0.000 0.000
result_3K5K/asc_21_3K5Klog.txt: 1 -7.4 0.000 0.000
result_3K5K/BIX01294_3K5Klog.txt: 1 -7.8 0.000 0.000
result_3K5K/UNC0224_ChemDraw_3K5Klog.txt: 1 -7.4 0.000 0.000
result_3K5K/UNC0638_3K5Klog.txt: 1 -7.4 0.000 0.000
。。。
。。。
此处略去无数行
如果增加tee命令:
~$ grep " 1 -" */*log.txt | tee -a result_first_pose.txt
则所有上述显示的结果会全部写 result_first_pose.txt
如果在将新建excel,选择数据>自文本
再选择刚才的文本文件 result_first_pose.txt > 分隔符号 > 空格 > 下一步 >完成
结果就全写了excel表格了。呵呵。
result_3K5K/A366_3K5Klog.txt:1-7.600
result_3K5K/asc_17_3K5Klog.txt:1-7.700
result_3K5K/asc_21_3K5Klog.txt:1-7.400
result_3K5K/BIX01294_3K5Klog.txt:1-7.800
result_3K5K/UNC0224_ChemDraw_3K5Klog.txt:1-7.400
result_3K5K/UNC0638_3K5Klog.txt:1-7.400
。。。
此处略去无数行
#说明:grep " 1 -"中的引号内容 克根据需要 采用正则表达式
--------------------------------------------------------------
第二种:使用以下python代码的方式。
调出所有化合物中最优pose的能量,自己瞎尝试,编了个Python的脚本。代码也较简单,但效果也不错,速度也不慢。5000个log文件在一分钟内也都搞定了。
代码很简单,如下:
---------------------------------------------------------------
import sys,os
import glob
os.chdir("D:\\vina_log_fetch\\result_all_log")#进入log文件所在的目录
for file in glob.glob("*.txt"):
try:
f = open(file,'r+')
lines = f.readlines() ##读取第25,26行的内容,log文件一般总共34行,但所要的一般在第25行,所以f.readlines()
##但有些log文件 print 结果是-----+------------+----------+----------所有用了个if语句,取下一行。
if lines.startswith('-----+'):
print(file, " ,",lines)
else:
print(file, " ,", lines)
except:
print(file," ,", "read failure")
pass
"""
用法和注意事项:
1. 请在第四行(即os.chdir那行的括号里面),修改vina log文件的存储的位置,注意使用双反斜杠 \\,不然会出错。我使用的是windows系统,批量log文件在windows的实际位置是:D:\vina_log_fetch\logFiles。 vina_fetch_top_score.py存放在D:\vina_log_fetch目录下。
2. 在cmd下,cd进入D:\vina_log_fetch目录(即vina_fetch_top_score.py所在的目录),敲击以下命令:
python vina_fetch_top_score.py > vina_top_score_list.txt
所有的top1的score和文件即可获得,结果存在vina_top_score_list.txt。
同样采用上述excel,数据>自文本的方式,可以获得excel表格
"""
-------------------------------------------------以下是python文件,使用时请产出.doc后缀。
本帖最后由 phenylazide 于 2017-5-9 17:43 编辑
以下是py文件,使用时把.doc后缀去掉 我做出的结果为什么会空一行?谢谢啦
页:
[1]