3 __doc__ =
"Generate complete models from Chimera transformations file."
7 from IMP
import ArgumentParser
12 This script, given the structure of a single subunit and the Chimera
13 transformations file, applies the transformations to generate a number of
16 p = ArgumentParser(description=desc)
17 p.add_argument(
'subunit', help=
"subunit PDB, the same given to MultiFit")
18 p.add_argument(
'degree', type=int, help=
"Cn symmetry degree")
19 p.add_argument(
'transform_file',
20 help=
"MultiFit output file in Chimera output format")
21 p.add_argument(
'num_models', type=int,
22 help=
"number of output models")
23 p.add_argument(
'output',
24 help=
"solution filename prefix; solutions are written "
29 def get_transformations(sol):
30 [ind, dock_rot_s, dock_trans_s, fit_rot_s,
31 fit_trans_s, cc_s] = sol.split(
"|")
32 s = dock_rot_s.split(
" ")
33 s1 = dock_trans_s.split(
" ")
36 float(s[0]), float(s[1]), float(s[2]),
37 float(s[3]), float(s[4]), float(s[5]),
38 float(s[6]), float(s[7]), float(s[8])),
40 s = fit_rot_s.split(
" ")
41 s1 = fit_trans_s.split(
" ")
44 float(s[0]), float(s[1]), float(s[2]),
45 float(s[3]), float(s[4]), float(s[5]),
46 float(s[6]), float(s[7]), float(s[8])),
51 def run(subunit_fn, symm_deg, sol_fn, num, output_fn):
55 for i
in range(symm_deg):
59 lines = open(sol_fn).readlines()
60 for j, sol
in enumerate(lines[:num]):
61 dock_t, fit_t = get_transformations(sol)
63 for i
in range(symm_deg):
65 curr_t = dock_t * curr_t
66 for i
in range(symm_deg):
73 run(args.subunit, args.degree, args.transform_file, args.num_models,
77 if __name__ ==
"__main__":
void write_pdb(const Selection &mhd, TextOutput out, unsigned int model=1)
void read_pdb(TextInput input, int model, Hierarchy h)
Class for storing model, its restraints, constraints, and particles.
void transform(XYZ a, const algebra::Transformation3D &tr)
Apply a transformation to the particle.
IMP::core::RigidBody create_rigid_body(Hierarchy h)
Functionality for loading, creating, manipulating and scoring atomic structures.
Rotation3D get_rotation_from_matrix(Eigen::Matrix3d m)
Generate a Rotation3D object from a rotation matrix.