3 __doc__ =
"Generate complete models from Chimera transformations file."
8 from IMP
import ArgumentParser
13 This script, given the structure of a single subunit and the Chimera
14 transformations file, applies the transformations to generate a number of
17 p = ArgumentParser(description=desc)
18 p.add_argument(
'subunit', help=
"subunit PDB, the same given to MultiFit")
19 p.add_argument(
'degree', type=int, help=
"Cn symmetry degree")
20 p.add_argument(
'transform_file',
21 help=
"MultiFit output file in Chimera output format")
22 p.add_argument(
'num_models', type=int,
23 help=
"number of output models")
24 p.add_argument(
'output',
25 help=
"solution filename prefix; solutions are written "
30 def get_transformations(sol):
31 [ind, dock_rot_s, dock_trans_s, fit_rot_s,
32 fit_trans_s, cc_s] = sol.split(
"|")
33 s = dock_rot_s.split(
" ")
34 s1 = dock_trans_s.split(
" ")
37 float(s[0]), float(s[1]), float(s[2]),
38 float(s[3]), float(s[4]), float(s[5]),
39 float(s[6]), float(s[7]), float(s[8])),
41 s = fit_rot_s.split(
" ")
42 s1 = fit_trans_s.split(
" ")
45 float(s[0]), float(s[1]), float(s[2]),
46 float(s[3]), float(s[4]), float(s[5]),
47 float(s[6]), float(s[7]), float(s[8])),
52 def run(subunit_fn, symm_deg, sol_fn, num, output_fn):
56 for i
in range(symm_deg):
60 lines = open(sol_fn).readlines()
61 for j, sol
in enumerate(lines[:num]):
62 dock_t, fit_t = get_transformations(sol)
64 for i
in range(symm_deg):
66 curr_t = dock_t * curr_t
67 for i
in range(symm_deg):
74 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.