|  | 
 
| 
本帖最后由 phenylazide 于 2017-5-14 21:37 编辑
x
马上注册,结交更多好友,下载更多分子模拟资源。您需要 登录 才可以下载或查看,没有帐号?我想注册 
    
 上午我看了作者“数据挖掘“ 写的原创 文章:[原创] 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.6 | 0 | 0 |  | result_3K5K/asc_17_3K5Klog.txt: | 1 | -7.7 | 0 | 0 |  | result_3K5K/asc_21_3K5Klog.txt: | 1 | -7.4 | 0 | 0 |  | result_3K5K/BIX01294_3K5Klog.txt: | 1 | -7.8 | 0 | 0 |  | result_3K5K/UNC0224_ChemDraw_3K5Klog.txt: | 1 | -7.4 | 0 | 0 |  | result_3K5K/UNC0638_3K5Klog.txt: | 1 | -7.4 | 0 | 0 | 
 此处略去无数行
 
 
 #说明:  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()[24:26]   ##读取第25,26行的内容,log文件一般总共34行,但所要的一般在第25行,所以f.readlines()[24]
 ##但有些log文件 print 结果是-----+------------+----------+----------  所有用了个if语句,取下一行。
 if lines[0].startswith('-----+'):
 print(file, "     ,",lines[1])
 else:
 print(file, "     ,", lines[0])
 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后缀。
 
 
 
 
 
 
 
 
 
 
 
 
 | 
 |