从特定残基获取原子坐标并计算距离
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
我正在尝试提取 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