我正在运行一个修改过的Autodock程序,需要编译结果。
我有一个文件夹,其中包含数百个名为“compound_1.pdbqt”、“compound_2.pdbqt”等的 *.pdbqt文件。每个文件都有这样的结构:
MODEL 1
REMARK minimizedAffinity -7.11687565
REMARK CNNscore 0.573647082
REMARK CNNaffinity 5.82644749
REMARK 11 active torsions:
#Lots of text here
MODEL 2
REMARK minimizedAffinity -6.61898327
REMARK CNNscore 0.55260396
REMARK CNNaffinity 5.86855984
REMARK 11 active torsions:
#Lots of text here
#Repeat with 10 to 20 model
我想将文件夹中每个化合物的“MODEL”、“minimizedAffinity”、“CNNscore”和“CNNaffinity”提取到一个分隔的文本文件中,如下所示:
Compound Model minimizedAffinity CNNscore CNNaffinity
1 1 -7.11687565 0.573647082 5.82644749
1 2 -6.61898327 0.55260396 5.86855984
目前我被困在这个脚本
#! /usr/bin/env python
import sys
import glob
files = glob.glob('**/*.pdbqt',
recursive = True)
for file in files:
word1 = 'MODEL'
word2 = 'minimizedAffinity'
word3 = 'CNNscore'
word4 = 'CNNaffinity'
print(file)
with open(file) as fp:
# read all lines in a list
lines = fp.readlines()
for line in lines:
# check if string present on a current line
if line.find(word1) != -1:
print('Line:', line)
if line.find(word2) != -1:
print('Line:', line)
if line.find(word3) != -1:
print('Line:', line)
if line.find(word4) != -1:
print('Line:', line)
1条答案
按热度按时间txu3uszq1#
看看Pawpaw,这是一个专门为构建词法解析器而设计的框架,它可以分割文本并将结果收集到可搜索的树中。以下是解决您的化合物问题的方法:
代码:
输出:
注意:这段代码使用python的
print
转储输出(而不是保存到文件中),以便于在这里查看结果。