I'm currently in the process of manipulating a .pdb (protein data bank) file in python. My end goal is to turn the python script back into a pdb file so that I can run simulations in either VMD or PyMol.Can someone please help?
我目前正在python中操作.pdb(蛋白质数据库)文件。我的最终目标是将python脚本重新转换为pdb文件,以便我可以在VMD或PyMol中运行模拟。有人可以帮忙吗?
2 个解决方案
#1
0
This example code appears to do what you want:
此示例代码似乎执行您想要的操作:
Relevant part is:
相关部分是:
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')
#2
0
Change each element in list to something like this inside a for/while loop over each new line This is a rough way but BioPDB reads the output in just fine. I assume you have the data that you want to write out in various arrays.
在每个新行的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]))
then check if file written out can be read with PDBParser in BioPython as suggested by others.
然后检查写出的文件是否可以按照其他人的建议用BioPython中的PDBParser读取。
p=PDBParser(PERMISSIVE=1)
structure=p.get_structure('test', 'test.pdb')
#1
0
This example code appears to do what you want:
此示例代码似乎执行您想要的操作:
Relevant part is:
相关部分是:
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')
#2
0
Change each element in list to something like this inside a for/while loop over each new line This is a rough way but BioPDB reads the output in just fine. I assume you have the data that you want to write out in various arrays.
在每个新行的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]))
then check if file written out can be read with PDBParser in BioPython as suggested by others.
然后检查写出的文件是否可以按照其他人的建议用BioPython中的PDBParser读取。
p=PDBParser(PERMISSIVE=1)
structure=p.get_structure('test', 'test.pdb')