【发布时间】:2021-08-09 17:17:55
【问题描述】:
我正在尝试提取 PDB 文件中特定残基中原子的精确坐标。
这个想法是使用一个函数找到一个文件中半胱氨酸所有氧的坐标,找到同一个文件中组氨酸上的氮坐标,并计算它们之间的距离。
import sys
import os
os.getcwd()
filename = sys.argv[1]
def cys_ox_coord_extr():
with open(filename, "r") as fileobj:
content = fileobj.readlines()
print("Cysteine's oxygen coordinates\n")
for line in content:
if line.startswith("ATOM"):
if str(line.split()[3]) == "CYS" and str(line.split()[2]) == "O":
cys_ox = [line.split()[5], [line.split()[6], line.split()[7], line.split()[8]]]
print(cys_ox)
这个函数工作正常,我可以得到这个原子类型的坐标,但是,我不能在其他地方使用这些结果。
我无法在函数本身之外的任何地方调用“cys_ox”,即使使用 `return cys_ox. 但是,如果我打印它,结果会很好。
我的目标是在另一个残基中获取另一种原子类型的坐标并计算距离,但如果我不能在生成它们的函数之外使用结果,这是不可能的。
我能做什么?
谢谢!!!
【问题讨论】:
-
在函数外定义一个列表,并将
cys_ox附加到列表中。因此列表具有全局范围,您可以在函数外部访问。否则你应该在函数的开头定义global cys_ox,这样python就知道这样的变量应该有全局范围(而不是默认的函数范围),但是你可能有很多cys_ox,所以一个列表更好。 -
@GiacomoCatenazzi 非常感谢!现在可以了!我有什么办法可以投票给你的答案吗?
-
@GiacomoCatenazzi 请将您的建议作为答案发布,以便将来对其进行投票、接受和更新。
标签: function return coordinates