モジュールをpip install しないでPDBファイルの座標x,y,z を任意の一定量シフトするプログラム
def shift_pdb_coordinates(pdb_file, x_shift, y_shift, z_shift):
"""
PDBファイルの座標を指定された量だけシフトする関数
Parameters:
pdb_file (str): PDBファイルのパス
x_shift (float): x座標のシフト量
y_shift (float): y座標のシフト量
z_shift (float): z座標のシフト量
Returns:
str: シフト後のPDBファイルの文字列
"""
with open(pdb_file, 'r') as f:
pdb_data = f.readlines()
shifted_coordinates = []
for line in pdb_data:
if line.startswith('ATOM') or line.startswith('HETATM'):
x, y, z = float(line[30:38]), float(line[38:46]), float(line[46:54])
x += x_shift
y += y_shift
z += z_shift
line = line[:30] + f"{x:8.3f}{y:8.3f}{z:8.3f}" + line[54:]
shifted_coordinates.append(line)
return ''.join(shifted_coordinates)
shifted_pdb = shift_pdb_coordinates('path/to/pdb/file.pdb', 1.0, 2.0, 3.0)
これで1.0,2.0,3.0Åシフトすることができる。
コメント