对于分配,我必须读取Python中的一个小.pdb文件,更改一些值,然后将其保存为新的.pdb文件。
我的原始文件是这样:
原子19 HD2 Tyr 1 26.910 61.717 39.8 ...
要进行作业,我必须在Python中读取一个小的.pdb文件,更改一些值,然后将其保存为新的.pdb文件。
我的原始文件是这样的:
ATOM 19 HD2 TYR 1 26.910 61.717 39.871 1.00 0.00 H
ATOM 20 C TYR 1 29.796 62.354 41.246 1.00 0.00 C
ATOM 23 H SER 2 30.611 61.950 39.410 1.00 0.00 H
ATOM 24 CA SER 2 30.082 64.035 39.354 1.00 0.00 C
END
我已经尝试了熊猫,但是没有成功,因为我无法保存它也不保存索引,而我不想要它(我使用
to_csv('newfile.pdb')
)。
我找到了一个称为Biopython的模块,这是我的尝试:
from Bio.PDB import PDBParser, PDBIO
def translate_atoms(structure, resname, translation_vector):
for model in structure:
for chain in model:
for residue in chain:
if residue.resname == resname:
for atom in residue:
atom.coord += translation_vector
pdb_file = "pdb1.pdb"
# Read the PDB file
pdb_parser = PDBParser(QUIET=True)
structure = pdb_parser.get_structure("original_pdb1", pdb_file)
# Translation vector for x direction (0.55 nm, so 5.5Å)
translation_vector = [5.5, 0, 0]
# Translate all atoms of SER residue in x direction
translate_atoms(structure, "SER", translation_vector)
# Write the modified structure to a new PDB file
output_pdb = "modified_pdb1.pdb"
pdb_io = PDBIO()
pdb_io.set_structure(structure)
pdb_io.save(output_pdb)
这对更改值而言要做的事情,但是当我保存时会增加一条不需要的行,例如:
ATOM 19 HD2 TYR 1 26.910 61.717 39.871 1.00 0.00 H
ATOM 20 C TYR 1 29.796 62.354 41.246 1.00 0.00 C
ATOM 23 H SER 2 36.111 61.950 39.410 1.00 0.00 H
ATOM 24 CA SER 2 35.582 64.035 39.354 1.00 0.00 C
TER 33 SER 2
END
如果没有最后一行,我该如何保存?
谢谢您的帮助!