在清洗文件过程,单纯查找一个文件是不能满足到大量文件计算需求。清洗和过滤大量的小分子文件显然成了必要的需求。
其实python在寻找清洗文件过程并不难,在乎怎么把清洗完的文件用于计算分析才是核心的诉求。
下面我们看看在一堆文件里面,批量查询对应目标列表。
import re
import os
def walk(path):
if not os.path.exists(path):
return []
files_paths = []
for parent, dirnames, filenames in os.walk(path):
for filename in filenames:
files_paths.append(os.path.join(parent, filename))
return files_paths
def findcar6(mol2file):
pattern = re.compile(r'\w+\.ar')
with open(mol2file, 'r') as f:
content = f.read()
ret_list = pattern.findall(content)
num = ret_list.count('C.ar')
return num == 6
if __name__ == "__main__":
allfiles = walk(r"G:\pyabs\labs\pdbbind\general_set")
for f in allfiles:
file_name, ext = os.path.splitext(f)
if ext == '.mol2' and findcar6(f):
print(os.path.basename(f))
试验完后,会输出一堆文件名称,这些文件就包含6个C.ar 文件文件。
担心脚本会出现错误。再人工去校验。发现验证通过了第一步。
观察里面对应的结构,可以看到苯环的结构体正是我们想找的小分子文件。
反复经过多次验证,可以大概刷选出相应的文件。有了这些文件即可用来计算三维空间里面作用力。
目前仅仅是清洗过程中一个很小很小应用。还可以利用可视化工具来实现。这些都是看需求去实现了。