mol2分子庫文件拆分成單個mol2文件


    利用Python將.mol2文件格式的分子庫拆分成單個.mol2格式的文件,以便從分子庫中眾多的化合物進行拆分,有利於逐個分析所提取的化合物。拆分主要的思想如下:

    1.用戶選擇分子庫文件所在的目錄以及選擇將拆分文件所存儲的目錄

    2.讀取分子庫文件所有內容

    3.依照一定的拆分規律,將分子庫文件逐個拆分並寫入新的文件

    主要依照以上思路即可實現將.mol2分子庫文件進行拆分,廢話不多說,直接看干貨:

 1 import os
 2 from tkinter import filedialog
 3 # 拆分文件
 4 def divide_file(read_fold, write_fold):
 5     all_files = []
 6     for files in os.walk(read_fold):
 7         all_files = files[2]
 8     for file in all_files:
 9         file_path = read_fold + '/' + file
10         with open(file_path, 'r') as mol2_file:
11             contents = mol2_file.readlines()
12             contents.append('@<tripos>MOLECULE')
13             write_file(contents, write_fold, file)
14 
15 # 寫入文件
16 def write_file(article, write_fold, file_name):
17     file_name = file_name[:-5]
18     file_path = write_fold + '/' + file_name
19     if not os.path.exists(file_path):
20         os.makedirs(file_path)
21         print(file_path, "創建成功")
22     else:
23         print(file_path, "目錄已存在")
24     temp_article = []
25     molecule_count = 0
26     for line in article:
27         if not line.startswith('@<tripos>MOLECULE'):
28             temp_article.append(line)
29         elif line.startswith('@<tripos>MOLECULE'):
30             molecule_count = molecule_count + 1
31             if molecule_count == 1:
32                 temp_article.append(line)
33             elif molecule_count == 2:
34                 path = file_path + '/' + temp_article[1].rstrip("\n")+'.mol2'
35                 with open(path, 'w') as new_file:
36                     for new_line in temp_article:
37                         new_file.write(new_line)
38                 temp_article.clear()
39                 temp_article.append('@<tripos>MOLECULE')
40                 molecule_count = 1
41 
42 if __name__ == '__main__':
43     # 讀取獲得的文件夾路徑
44     read_fold = filedialog.askdirectory()
45     # 讀取寫入文件夾的路徑
46     write_fold = filedialog.askdirectory()
47     divide_file(read_fold, write_fold)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM