def parse_residues_file(self) -> dict:
     pdb = mp.parse_PDB(
         '/home/labs/fleishman/jonathaw/temp_residue_data/RKDS.txt')
     for res in pdb['A'].values():
         mpf.translate_and_rotate_res_to_xy_plane(
             res, self.main_residue_atoms[res.res_type])
         self.residues[res.res_type] = res
def create_pdb_AA_AA_d_z(aa1: str,
                         aa2: str,
                         d: float,
                         z: float,
                         res_maker,
                         path: str = './') -> None:
    """
    create a pdb with residues aa1 and aa2 at the XY plane at Z=z and distance d
    """
    res1 = res_maker.get_residue(aa1)
    res2 = res_maker.get_residue(aa2)

    res1.change_chain_name('A')
    res2.change_chain_name('B')

    # rotate around Z to oppose
    axis_z = mp.XYZ(0, 0, 1)
    res2.dot_matrix_me(mpf.rotation_matrix_around_vec(axis_z, np.pi))

    # translate to get d distance
    move_d = mp.XYZ(
        0, res1[res_maker.main_residue_atoms[res1.res_type][1]].xyz.y -
        res2[res_maker.main_residue_atoms[res2.res_type][1]].xyz.y + d, 0)
    res2.translate_xyz(move_d)

    # translate all to z
    move_z = mp.XYZ(0, 0, z)
    res1.translate_xyz(move_z)
    res2.translate_xyz(move_z)

    # setup in a MyPDB instance, and renumber and write
    pdb = mp.MyPDB()
    for res in [res1, res2]:
        for a in res.values():
            pdb.add_atom(a)
    pdb.renumber()
    mp.write_PDB(
        '%s/%s_%s_%.2f_%.2f.pdb' % (path, res1.res_type, res2.res_type, d, z),
        pdb)
def create_pdb_AA_AA_d_z(aa1: str, aa2: str, d: float, z: float, res_maker, path: str = "./") -> None:
    """
    create a pdb with residues aa1 and aa2 at the XY plane at Z=z and distance d
    """
    res1 = res_maker.get_residue(aa1)
    res2 = res_maker.get_residue(aa2)

    res1.change_chain_name("A")
    res2.change_chain_name("B")

    # rotate around Z to oppose
    axis_z = mp.XYZ(0, 0, 1)
    res2.dot_matrix_me(mpf.rotation_matrix_around_vec(axis_z, np.pi))

    # translate to get d distance
    move_d = mp.XYZ(
        0,
        res1[res_maker.main_residue_atoms[res1.res_type][1]].xyz.y
        - res2[res_maker.main_residue_atoms[res2.res_type][1]].xyz.y
        + d,
        0,
    )
    res2.translate_xyz(move_d)

    # translate all to z
    move_z = mp.XYZ(0, 0, z)
    res1.translate_xyz(move_z)
    res2.translate_xyz(move_z)

    # setup in a MyPDB instance, and renumber and write
    pdb = mp.MyPDB()
    for res in [res1, res2]:
        for a in res.values():
            pdb.add_atom(a)
    pdb.renumber()
    mp.write_PDB("%s/%s_%s_%.2f_%.2f.pdb" % (path, res1.res_type, res2.res_type, d, z), pdb)
 def parse_residues_file(self) -> dict:
     pdb = mp.parse_PDB("/home/labs/fleishman/jonathaw/temp_residue_data/RKDS.txt")
     for res in pdb["A"].values():
         mpf.translate_and_rotate_res_to_xy_plane(res, self.main_residue_atoms[res.res_type])
         self.residues[res.res_type] = res