Получить все границы длины из PDB - PullRequest
2 голосов
/ 02 ноября 2019

Я хочу получить все длины границ из файла 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)

Как мне решить мою задачу? Может быть, есть другая структура - я буду смотреть каждый вариант, если он работает правильно!

1 Ответ

1 голос
/ 03 ноября 2019

Насколько я понимаю, вы ищете способы рассчитать расстояние между атомами в файле PDB. Я адаптировал ваш ответ и это решение 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 с помощью оператора -.

...