我想从PDB文件中获取所有边界长度。
我尝试过Bio.PDB
,但我不理解NeighborSearch
类及其方法:search()
和search_all()
from Bio.PDB import *
import numpy as np
structure = PDBParser().get_structure('Kek', '1wba.pdb')
atom_list = [_ for _ in structure.get_atoms()]
kek = NeighborSearch(atom_list).search_all(2)
for atom_pair in kek:
a = atom_pair[0]
b = atom_pair[1]
distance = np.linalg.norm(np.array(a.coord) - np.array(b.coord))
print(distance)
我该如何解决我的任务?也许还有另一个框架-如果可行,我会观察每个变体!
根据我的理解,您正在寻找一种方法来计算PDB文件中原子之间的距离。我调整了您的答案和this Biostars解决方案。希望对您有所帮助
import Bio.PDB
parser = Bio.PDB.PDBParser(QUIET=True)
structures = parser.get_structure('2rdx', '2rdx.pdb')
structure = structures[0]
atom_list = [_ for _ in structure.get_atoms()]
ns = Bio.PDB.NeighborSearch(atom_list)
_cutoff_dist = 5
for target in atom_list:
close_atoms = ns.search(target.coord, _cutoff_dist)
for close_atom in close_atoms:
print(target, close_atom, target - close_atom)
print ("==========")
您可以使用-
运算符轻松找到两个Atom对象之间的距离。