从特定残基获取原子坐标并计算距离

Get atomic coordinates from specific residues and compute distances

我正在尝试提取 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。 然而,如果我打印它,结果会很好。

我的目标是获取另一个残基中另一种原子类型的坐标并计算距离,但如果我不能在生成它们的函数之外使用结果,那是不可能的。

我能做什么?

谢谢!!!

正如 Giacomo 建议的那样,

define a list outside the function, and append cys_ox to the list. So the list has global scope and you can access outside the function. Else you should define global cys_ox at start of function, so python know that such variable should have global scope (and not the default function scope), but you may have many cys_ox, so a list is better. – Giacomo Catenazzi