Python: нужно получить энергии зарядовых пар - PullRequest
0 голосов
/ 23 апреля 2010

Я новичок в питоне. Я должен составить программу для проекта, которая принимает файл формата PDB в качестве входных данных и возвращает список всех пар внутризонных и межцепных зарядов и их энергии (используя закон Кулона, предполагая, что диэлектрическая проницаемость () равна 40,0). ). Для простоты, заряженные остатки для этой программы - это просто Arg (CZ), Lys (NZ), Asp (CG) и Glu (CD) с атомами, несущими заряд, для каждого, указанного в скобках. Программа должна сообщать о любых привлекательных или отталкивающих взаимодействиях в пределах 8,0 Å.

Вот некоторая дополнительная информация, необходимая для программы.

Eij = energy of interaction between atoms i and j in kilocalories/mole (kcals/mol)
qi = charge for atom i (+1 for Lys or Arg, -1 for Glu or Asp)
rij = distance between atoms i and j in angstroms using the distance formula

Вывод должен соответствовать следующему формату:

First residue : Second residue  Distance           Energy
Lys 10 Chain A: ASP 46 Chain A D= 4.76 ang    E= -2.32 kcals/mol

(Почему-то я не могу организовать две верхние строки, но в первой строке должны быть метки, а под ними соответствующие значения.)

Я действительно понятия не имею, как решить эту проблему, любая помощь очень ценится. Я надеюсь, что это правильное место, чтобы спросить. Заранее спасибо.

Использование python 2.5

Ответы [ 2 ]

2 голосов
/ 23 апреля 2010

Где именно ваша проблема? Ваше описание слишком общее.

Общая идея такова:

  • Загрузите файл PDB и проанализируйте каждую строку.
  • Это даст вам список атомов и их ( x , y , z ) позиции.
  • Перебирайте список в цикле , вложенном , чтобы сравнить каждый атом друг с другом.
  • Вычислить расстояние пары атомов.
  • Если их расстояние меньше 8,0 Å, рассчитать их заряд.
1 голос
/ 23 апреля 2010

вы смотрели на уже готовые решения?

http://biopython.org/wiki/Biopython

http://pymmlib.sourceforge.net/

если вы захотите свернуть свой собственный файл, у вас будет анализатор формата банка данных орудия (что тривиально). Тогда что-то вроде этого при условии, что ваша структура находится в атомах (я знаю, что это не то, что вам нужно, но, возможно, это даст вам представление, как это сделать):

for i in range(len(atoms)):
   for j in range(i):
        r = distance(i,j)
        if r < 8: Q += (atoms[i].q * atoms[j].q)/r

однако, вы должны быть осторожны с водородами, часто они не предоставлены явно, особенно с данными ЯМР

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...