【问题标题】:Get atomic coordinates from specific residues and compute distances从特定残基获取原子坐标并计算距离
【发布时间】: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


【解决方案1】:

正如贾科莫建议的那样,

在函数外部定义一个列表,并将 cys_ox 附加到列表中。因此列表具有全局范围,您可以在函数外部访问。否则,您应该在函数开始时定义全局 cys_ox,因此 python 知道这样的变量应该具有全局范围(而不是默认函数范围),但是您可能有很多 cys_ox,所以列表更好。 – 贾科莫·卡泰纳齐

【讨论】:

  • 感谢您作为已接受的答案重新发布。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-23
  • 2015-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-20
  • 2020-12-26
相关资源
最近更新 更多