3 __doc__ =
"Generate complete models from Chimera transformations file."
8 from IMP
import OptionParser
12 usage =
"""%prog [options] <subunit> <symmetry degree>
13 <transformations file> <number of models> <output models>
15 This script, given the structure of a single subunit and the Chimera
16 transformations file, applies the transformations to generate a number of
19 <subunit> subunit PDB, the same given to MultiFit.
20 <symmetry degree> Cn degree.
21 <transformations file> MultiFit output in chimera output format.
22 <number of models> number of models to print.
23 <output models> Solutions are written as output.i.pdb."""
24 parser = OptionParser(usage)
25 opts, args = parser.parse_args()
27 parser.error(
"incorrect number of arguments")
31 def get_transformations(sol):
32 [ind, dock_rot_s, dock_trans_s, fit_rot_s,
33 fit_trans_s, cc_s] = sol.split(
"|")
34 s = dock_rot_s.split(
" ")
35 s1 = dock_trans_s.split(
" ")
38 float(s[0]), float(s[1]), float(s[2]),
39 float(s[3]), float(s[4]), float(s[5]),
40 float(s[6]), float(s[7]), float(s[8])),
42 s = fit_rot_s.split(
" ")
43 s1 = fit_trans_s.split(
" ")
46 float(s[0]), float(s[1]), float(s[2]),
47 float(s[3]), float(s[4]), float(s[5]),
48 float(s[6]), float(s[7]), float(s[8])),
53 def run(subunit_fn, symm_deg, sol_fn, num, output_fn):
56 for i
in range(symm_deg):
59 IMP.atom.setup_as_rigid_body(mh)
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[0], int(args[1]), args[2], int(args[3]), args[4])
76 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.
Rotation3D get_rotation_from_matrix(IMP_Eigen::Matrix3d m)
Generate a Rotation3D object from a rotation matrix.
A decorator for a rigid body.
Functionality for loading, creating, manipulating and scoring atomic structures.