【发布时间】:2017-03-24 21:52:45
【问题描述】:
我试图在输出文件中的特定残基编号之后的一行之后写“TER”(与参考文件中的残基编号匹配)。该代码没有给我任何错误,但只从 infile 复制并且没有添加单词。当尝试在一些代码之后打印时,我认为当我尝试在 outfile 中搜索时它会中断。
这就是其中的一部分。另一个是我如何确保仅在最后一个残基编号之后添加单词“TER”(它们在彼此下方的行中有各种数量,我只想在最后一个之后添加它们)。 这是我的代码:
import sys
import argparse
def main(argv):
parser = argparse.ArgumentParser(description='Read SSBOND directives from a PDB, and generate corresponding CONECT records')
parser.add_argument('infile', help='input file (PDB format)')
parser.add_argument('outfile', help='output file (PDB format)')
parser.add_argument('reference', help =' ref')
args = parser.parse_args()
resnum_1 =[]
res = []
with open(args.infile, "r") as f, open(args.outfile, "w+") as of, open(args.reference,"r") as rf:
for line in rf:
if line[0:4] == "TER ":
resnum = line[22:27]
resname = line[17:20]
chain = line[21]
resnum_1.append(resnum)
for line in f:
of.write(line)
for line in of:
if line[0:6] == "ATOM ":
resnum_fo = line[22:27]
resname_fo = line[17:19]
chain_fo = line[21]
res.append(resnum_fo)
if resnum in resnum_1 and resnum_fo in res:
of.write("TER\n")
if __name__ == "__main__":
main(sys.argv)
非常感谢!
文件如下所示:
ATOM 0 HB2 CYX D 452 45.962 -2.641 -17.575 1.00 0.00
ATOM 0 HB3 CYX D 452 46.188 -2.186 -19.050 1.00 0.00
TER 995 CYX D 452
ATOM 995 N ARG D 492 42.476 10.547 -39.562 1.00 0.00
【问题讨论】:
-
向我们展示输入文件内容(或简化版本)、参考文件和所需输出(与上述代码产生的不同)。另一方面,我看到您在迭代输出文件时正在写入它。我认为这可能会混淆文件指针。
-
我搞定了,谢谢
-
不幸的是,我无法弄清楚 4 行中的哪一行属于哪个文件 :(
-
对不起,它们看起来都一样,只是参考文件只包含 TER 记录。其他两个没有。
-
@Loki 我的回答对你有帮助吗?如果您提供更多信息,我可能会提供进一步的帮助。
标签: python