5 from IMP
import ArgumentParser
7 __doc__ =
"Write assembly transformation file in other formats."
12 def __init__(self, fh):
15 def write_header(self, settings):
19 class ChimeraFormatter(Formatter):
20 """Each line in 'chimera' format lists the transformation index, the
21 cross correlation score, and then the transformation for each component,
22 as a rotation matrix (row-major order) and a translation in angstroms.
25 def write_line(self, ind, score, transforms):
26 self.fh.write(str(ind) +
"\t" + score +
"\t")
29 v = t.get_rotation().get_rotation_matrix_row(k)
31 str(v[0]) +
" " + str(v[1]) +
" " + str(v[2]) +
" ")
32 v = t.get_translation()
34 str(v[0]) +
" " + str(v[1]) +
" " + str(v[2]) +
" | ")
39 """Each line in 'dockref' format lists the transformation for each
40 component, as a set of three Euler angles (in radians about the
41 fixed x, y and z axes) and a translation in angstroms."""
43 def write_header(self, sd):
45 for i
in range(sd.get_number_of_component_headers()):
46 self.fh.write(sd.get_component_header(i).get_name() +
"|")
49 def write_line(self, ind, score, transforms):
52 tr = t.get_translation()
54 self.fh.write(
"%.6g %.6g %.6g %.6g %.6g %.6g|"
55 % (eulers.get_x(), eulers.get_y(), eulers.get_z(),
60 formatters = {
'chimera': ChimeraFormatter,
61 'dockref': DockRefFormatter}
66 Write assembly transformation file in other formats.
68 """ +
"\n\n".join(x.__doc__
for x
in formatters.values())
71 p.add_argument(
"-f",
"--format", default=
'chimera',
72 choices=list(formatters.keys()),
73 help=
"type of output to generate ("
74 +
", ".join(formatters.keys())
75 +
"; default: chimera)")
76 p.add_argument(
"assembly_file", help=
"assembly file name")
77 p.add_argument(
"combinations_file", help=
"combinations file name")
78 p.add_argument(
"output_file", help=
"output file name")
82 def run(asmb_fn, combs_fn, fmt):
88 for i
in range(sd.get_number_of_component_headers()):
89 fn = sd.get_component_header(i).get_transformations_fn()
91 for ind, line
in enumerate(open(combs_fn)):
95 fmt.write_line(ind, score,
96 [fits[i][int(c)].get_fit_transformation()
97 for i, c
in enumerate(comb.split())])
102 fmt = formatters[args.format](open(args.output_file,
'w'))
103 run(args.assembly_file, args.combinations_file, fmt)
106 if __name__ ==
"__main__":
SettingsData * read_settings(const char *filename)
FixedXYZ get_fixed_xyz_from_rotation(const Rotation3D &r)
The inverse of rotation_from_fixed_xyz()
Fitting atomic structures into a cryo-electron microscopy density map.
IMP-specific subclass of argparse.ArgumentParser.
FittingSolutionRecords read_fitting_solutions(const char *fitting_fn)
Fitting solutions reader.