gpt4 book ai didi

python - 使用 python 通过两个标识符从一个巨大的文本文件中提取行作为开始和结束

转载 作者:太空宇宙 更新时间:2023-11-04 07:59:38 24 4
gpt4 key购买 nike

我编写了一个函数来从一个大文本文件中提取特定的文本 block ,示例文本如下所示:

 ATP(1):C39(3) - A:TYR(58):CD2(67)
ATP(1):C39(3) - A:TYR(58):CE2(69)
ATP(1):C59(6) - A:ILE(61):CD1(100)
ATP(1):C59(6) - A:LYS(87):CE(344)

Hydrogen bonds:
Location of Donor | Sidechain/Backbone | Secondary Structure | Count
-------------------|--------------------|---------------------|-------
LIGAND | SIDECHAIN | OTHER | 1

RECEPTOR | BACKBONE | BETA | 1

Raw data:
ATP(1):O2A(9) - A:ILE(61):HN(93) - A:ILE(61):N(92)

Hydrophobic contacts (C-C):
Sidechain/Backbone | Secondary Structure | Count
--------------------|---------------------|-------
SIDECHAIN | OTHER | 2
SIDECHAIN | BETA | 23

Raw data:
ATP(1):C39(3) - A:TYR(58):CD2(67)
ATP(1):C39(3) - A:TYR(58):CE2(69)
ATP(1):C59(6) - A:ILE(61):CD1(100)
ATP(1):C59(6) - A:LYS(87):CE(344)
ATP(1):C4(23) - A:PHE(209):CD1(1562)
ATP(1):C4(23) - A:PHE(209):CE1(1564)
ATP(1):C2(26) - A:PHE(209):CD2(1563)
ATP(1):C6(28) - A:PHE(209):CB(1560)
ATP(1):C6(28) - A:PHE(209):CG(1561)
ATP(1):C6(28) - A:PHE(209):CD1(1562)
ATP(1):C6(28) - A:VAL(286):CG2(2266)

pi-pi stacking interactions:
ATP(1):C8(30) - A:LYS(87):CG(342)
ATP(1):C8(30) - A:GLU(159):CD(1066)
ATP(1):C8(30) - A:PHE(209):CE1(1564)

我写了一个函数来提取 block :

from itertools import islice

def start_end_points(file_name):


f = open(file_name)
lines = f.readlines()

for s, line in enumerate(lines):
if "Hydrogen bonds:" in line:
print s

for e, line in enumerate(lines):
if "pi-pi stacking interactions:" in line:
print e

print islice(lines, s, e)

start_end_points("foo.txt")

有没有办法更有效地编写这段代码?因为我想将此代码用作 Web 工具的一部分,因此代码的效率非常重要。

谢谢。

最佳答案

你没有理由将整个文件加载到内存中!

def start_end_points(file_name):
with open(file_name) as f:
found = False
for line in f:
if found or ("Hydrogen bonds:" in line):
found = True
print line
if "pi-pi stacking interactions:" in line:
break

start_end_points("foo.txt")

这样一来,您只在内存中保留一个缓冲区,每行处理一次,并在到达 pi-pi... 行后立即停止读取文件。

关于python - 使用 python 通过两个标识符从一个巨大的文本文件中提取行作为开始和结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42528774/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com