Example #1
0
def angle_between_3_XYZs(p1: mp.XYZ, p2: mp.XYZ, p3: mp.XYZ) -> float:
    """
    return the angle between 3 points, in radians:w

    """
    ba = p1.as_nparray() - p2.as_nparray()
    bc = p3.as_nparray() - p2.as_nparray()
    cosine_angle = np.dot(ba, bc) / (np.linalg.norm(ba) * np.linalg.norm(bc))
    return np.arccos(cosine_angle)
Example #2
0
def angle_between_3_XYZs( p1: mp.XYZ, p2: mp.XYZ, p3: mp.XYZ ) -> float:
    """
    return the angle between 3 points, in radians:w

    """
    ba = p1.as_nparray() - p2.as_nparray()
    bc = p3.as_nparray() - p2.as_nparray()
    cosine_angle = np.dot( ba, bc ) / ( np.linalg.norm( ba ) * np.linalg.norm( bc ) )
    return np.arccos( cosine_angle )
Example #3
0
def rotation_matrix_around_vec( axis: mp.XYZ, theta: float ):
    """
    calcualted the rotation matrix to roatate an boject around axis theta radian degrees
    based on:
    http://www.euclideanspace.com/maths/algebra/vectors/angleBetween/
    and
    http://stackoverflow.com/questions/6802577/python-rotation-of-3d-vector
    """
    return linalg.expm3(np.cross(np.eye(3), axis.as_list()/np.float64(linalg.norm(axis.as_list()))*theta))
def main():
    pdb = parse_PDB(sys.argv[1])
    for name, xyz in zip(
        ['B', 'C', 'X'],
        [XYZ(7.5, 0, 0), XYZ(0, 7.5, 0),
         XYZ(7.5, 7.5, 7.5)]):
        new_chain = copy.deepcopy(pdb.chains['A'])
        new_chain.change_chain_name(name)
        new_chain.translate_xyz(xyz)
        pdb.add_chain(new_chain)
        pdb.renumber()
    write_PDB('test.pdb', pdb)
def read_RBs(file_name):
    results = []
    with open(file_name, 'r') as fin:
        for l in fin:
            floats = [float(a) for a in l.split()[1:]]
            rb = RigidBody(XYZ(floats[0], floats[1], floats[2]),
                           XYZ(floats[3], floats[4], floats[5]),
                           XYZ(floats[6], floats[7], floats[8]),
                           XYZ(floats[9], floats[10], floats[11]))
            results.append(rb)
            break
    print(results)
Example #6
0
def rotation_matrix_around_vec(axis: mp.XYZ, theta: float):
    """
    calcualted the rotation matrix to roatate an boject around axis theta radian degrees
    based on:
    http://www.euclideanspace.com/maths/algebra/vectors/angleBetween/
    and
    http://stackoverflow.com/questions/6802577/python-rotation-of-3d-vector
    """
    return linalg.expm3(
        np.cross(
            np.eye(3),
            axis.as_list() / np.float64(linalg.norm(axis.as_list())) * theta))