Как вывести файл .pdb с помощью скрипта Python?

В настоящее время я работаю с файлом .pdb (банком данных о белках). файл на питоне. Моя конечная цель — превратить скрипт Python обратно в файл pdb, чтобы я мог запускать симуляции либо в VMD, либо в PyMol. Может ли кто-нибудь помочь?


person Alicia Burns    schedule 22.07.2013    source источник
comment
Можете ли вы уточнить, в чем проблема, с которой вы столкнулись? Вам просто интересно, как написать файл .pdb, или есть какие-то дополнительные тонкости в вопросе?   -  person Blckknght    schedule 22.07.2013
comment
У меня такое ощущение, что у вас есть файл pdb в качестве входных данных для вашего сценария, затем вы выполняете некоторые манипуляции с данными, а затем хотите снова вывести pdb с обновленной измененной информацией, верно? Если да, то пробовали ли вы биопитоны? biopython.org/wiki/Documentation   -  person arturomp    schedule 22.07.2013
comment
Да, это именно то, что я пытаюсь сделать. Я использовал biopython для извлечения координат из исходного файла pdb. Но я действительно новичок во многих этих вещах, и я не уверен, как использовать его для вывода pdb с обновленной информацией об манипулировании.   -  person Alicia Burns    schedule 23.07.2013
comment
было бы полезно, если бы вы разместили образец кода, который вы написали, чтобы помочь нам увидеть, где вы застряли. это тоже может помочь: biopython.org/wiki/   -  person arturomp    schedule 23.07.2013


Ответы (2)


Измените каждый элемент в списке на что-то подобное внутри цикла for/while для каждой новой строки. Это грубый способ, но BioPDB отлично считывает вывод. Я предполагаю, что у вас есть данные, которые вы хотите записать в различные массивы.

  j[0] = j[0].ljust(6)#atom#6s
  j[1] = j[1].rjust(5)#aomnum#5d
  j[2] = j[2].center(4)#atomname$#4s
  j[3] = j[3].ljust(3)#resname#1s
  j[4] = j[4].rjust(1) #Astring
  j[5] = j[5].rjust(4) #resnum
  j[6] = str('%8.3f' % (float(coords[i][0]))).rjust(8) #x
  j[7] = str('%8.3f' % (float(coords[i][1]))).rjust(8)#y
  j[8] = str('%8.3f' % (float(coords[i][2]))).rjust(8) #z\
  j[9] =str('%6.2f'%(float(j[9]))).rjust(6)#occ
  j[10]=str('%6.2f'%(float(j[10]))).ljust(6)#temp
  j[11]=j[11].rjust(12)#elname    
  f1.write("%s%s %s %s %s%s    %s%s%s%s%s%s\n"% j[0],j[1],j[2],j[3],j[4],j[5],j[6],j[7],j[8],j[9],j[10],j[11]))

затем проверьте, можно ли прочитать записанный файл с помощью PDBParser в BioPython, как это было предложено другими.

  p=PDBParser(PERMISSIVE=1)
  structure=p.get_structure('test', 'test.pdb')
person sridharn    schedule 17.06.2017

Этот пример кода делает то, что вы хотите:

Соответствующая часть:

import sys
from Bio.PDB import PDBIO
from Bio.PDB.PDBParser import PDBParser
PDB_input = sys.argv[1]
parser = PDBParser()
structure = parser.get_structure('self', PDB_input)
# DELETED CODE THAN MANIPULATED PDB OBJECT 
w = PDBIO()
w.set_structure(structure)
w.save('corrected_from_CHARMM_to_PDB.pdb')
person Vince    schedule 26.09.2013