3 from __future__
import print_function
5 from IMP
import OptionParser
7 __doc__ =
"Add RMSD to reference to each fitting file."
10 usage =
"""%prog [options] <asmb.input> <proteomics> <mapping> <align param>
12 Given a set of local fits (e.g. generated by fit_fft), the RMSD between each
13 subunit and a reference orientation is calculated and added to each fitting
14 file, in the final "RMSD to reference" column. (The original fitting file is
15 not modified; a new fitting file is created with a '.RMSD' extension.)
17 Note that the assembly input file must contain a reference PDB filename for
18 each subunit (in the rightmost column).
20 parser = OptionParser(usage)
21 parser.add_option(
"-d", action=
"store_true", dest=
"use_dock",
22 help=
"if set the docking transformation is used (and not the fitting transformation)")
23 (options, args) = parser.parse_args()
25 parser.error(
"incorrect number of arguments")
26 return [options, args]
29 def run(asmb_fn, proteomics_fn, mapping_fn, params_fn, dock_trans):
35 prot_data, mapping_fn)
36 alignment_params = IMP.multifit.AlignmentParams(params_fn)
38 mapping_data, asmb, alignment_params)
42 mdl = align.get_model()
43 mhs = align.get_molecules()
45 for i, mh
in enumerate(mhs):
46 fits_fn = asmb.get_component_header(i).get_transformations_fn()
48 print(
"calculating rmsd for", len(fits),
"fits of protein", mh.get_name())
51 asmb.get_component_header(i).get_reference_fn(),
53 rb = IMP.atom.setup_as_rigid_body(mh_ref)
56 for i, rec
in enumerate(fits):
57 fit_t = rec.get_fit_transformation()
59 fit_t = rec.get_dock_transformation()
62 rec.set_rmsd_to_reference(rmsd)
69 options, args = parse_args()
70 run(args[0], args[1], args[2], args[3], options.use_dock)
72 if __name__ ==
"__main__":
An ensemble of fitting solutions.
def main
Run a set of tests; similar to unittest.main().
SettingsData * read_settings(const char *filename)
GenericHierarchies get_leaves(Hierarchy mhd)
Get all the leaves of the bit of hierarchy.
void read_pdb(TextInput input, int model, Hierarchy h)
ProteinsAnchorsSamplingSpace read_protein_anchors_mapping(multifit::ProteomicsData *prots, const std::string &anchors_prot_map_fn, int max_paths=INT_MAX)
Align proteomics graph to EM density map.
double get_rmsd(const Selection &s0, const Selection &s1)
void transform(XYZ a, const algebra::Transformation3D &tr)
Apply a transformation to the particle.
Fitting atomic structures into a cryo-electron microscopy density map.
void write_fitting_solutions(const char *fitting_fn, const FittingSolutionRecords &fit_sols, int num_sols=-1)
Write fitting solutions to a file.
ProteomicsData * read_proteomics_data(const char *proteomics_fn)
Proteomics reader.
FittingSolutionRecords read_fitting_solutions(const char *fitting_fn)
Fitting solutions reader.