PDBファイルの座標x,y,z を任意の一定量シフトするプログラム

モジュールを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Åシフトすることができる。

コメント