4 from IMP 
import ArgumentParser
 
    6 __doc__ = 
"Score each of a set of combinations." 
   13     colors[
"Rpt1"] = [0.78, 0.78, 0.73]
 
   14     colors[
"Rpt2"] = [0.78, 0.66, 0.58]
 
   15     colors[
"Rpt3"] = [0.77, 0.43, 0.5]
 
   16     colors[
"Rpt4"] = [0.76, 0.29, 0.67]
 
   17     colors[
"Rpt5"] = [0.51, 0.14, 0.75]
 
   18     colors[
"Rpt6"] = [0.0, 0., 0.75]
 
   19     colors[
"Rpn1"] = [0.34, 0.36, 0.27]
 
   20     colors[
"Rpn2"] = [0.42, 0.43, 0.36]
 
   21     colors[
"Rpn3"] = [0.49, 0.5, 0.44]
 
   22     colors[
"Rpn5"] = [0.56, 0.57, 0.51]
 
   23     colors[
"Rpn6"] = [0.64, 0.64, 0.59]
 
   24     colors[
"Rpn7"] = [0.71, 0.71, 0.66]
 
   25     colors[
"Rpn8"] = [0.78, 0.78, 0.74]
 
   26     colors[
"Rpn9"] = [1, 0, 0]
 
   27     colors[
"Rpn10"] = [0, 1, 0]
 
   28     colors[
"Rpn11"] = [0, 0, 1]
 
   29     colors[
"Rpn12"] = [0.5, 0.2, 0.4]
 
   30     colors[
"a1"] = [0.78, 0.78, 0.73]
 
   31     colors[
"a2"] = [0.78, 0.66, 0.58]
 
   32     colors[
"a3"] = [0.77, 0.43, 0.5]
 
   33     colors[
"a4"] = [0.76, 0.29, 0.67]
 
   34     colors[
"a5"] = [0.51, 0.14, 0.75]
 
   35     colors[
"a6"] = [0.0, 0., 0.75]
 
   36     colors[
"a7"] = [0.34, 0.36, 0.27]
 
   37     colors[
"a8"] = [0.42, 0.43, 0.36]
 
   38     colors[
"a9"] = [0.49, 0.5, 0.44]
 
   39     colors[
"a10"] = [0.56, 0.57, 0.51]
 
   41     colors[
"a11"] = [0.78, 0.78, 0.73]
 
   42     colors[
"a12"] = [0.78, 0.66, 0.58]
 
   43     colors[
"a13"] = [0.77, 0.43, 0.5]
 
   44     colors[
"a14"] = [0.76, 0.29, 0.67]
 
   45     colors[
"a15"] = [0.51, 0.14, 0.75]
 
   46     colors[
"a16"] = [0.0, 0., 0.75]
 
   47     colors[
"a17"] = [0.34, 0.36, 0.27]
 
   48     colors[
"a18"] = [0.42, 0.43, 0.36]
 
   49     colors[
"a19"] = [0.49, 0.5, 0.44]
 
   50     colors[
"a20"] = [0.56, 0.57, 0.51]
 
   52     colors[
"a21"] = [0.78, 0.78, 0.73]
 
   53     colors[
"a22"] = [0.78, 0.66, 0.58]
 
   54     colors[
"a23"] = [0.77, 0.43, 0.5]
 
   55     colors[
"a24"] = [0.76, 0.29, 0.67]
 
   56     colors[
"a25"] = [0.51, 0.14, 0.75]
 
   57     colors[
"a26"] = [0.0, 0., 0.75]
 
   58     colors[
"a27"] = [0.34, 0.36, 0.27]
 
   59     colors[
"a28"] = [0.42, 0.43, 0.36]
 
   60     colors[
"a29"] = [0.49, 0.5, 0.44]
 
   61     colors[
"a30"] = [0.56, 0.57, 0.51]
 
   65 def decompose(dmap, mhs):
 
   70     full_sampled_map.set_particles(all_ps)
 
   71     full_sampled_map.resample()
 
   72     full_sampled_map.calcRMS()
 
   74         dmap.get_number_of_voxels(
 
   76         ).dmean * full_sampled_map.get_header(
 
   79     lower = dmap.get_number_of_voxels(
 
   81     ).rms * full_sampled_map.get_header(
 
   83     norm_factors = [upper, lower]
 
   84     print(
"===============my norm factors:", upper, lower)
 
   88 def score_each_protein(dmap, mhs, sd):
 
   89     norm_factors = decompose(dmap, mhs)
 
   92     for i 
in range(len(mhs)):
 
   96         mh_dmap.set_particles(leaves)
 
  100             sd.get_component_header(i).get_transformations_fn())
 
  102         for fit 
in fits[:15]:
 
  113         scores.append(mh_scores)
 
  114         print(
"=====mol", i, mh_scores)
 
  119     desc = 
"Score each of a set of combinations." 
  120     p = ArgumentParser(description=desc)
 
  121     p.add_argument(
"-m", 
"--max", dest=
"max", type=int, default=999999999,
 
  122                    help=
"maximum number of fits considered")
 
  123     p.add_argument(
"assembly_file", help=
"assembly file name")
 
  124     p.add_argument(
"proteomics_file", help=
"proteomics file name")
 
  125     p.add_argument(
"mapping_file", help=
"mapping file name")
 
  126     p.add_argument(
"param_file", help=
"parameter file name")
 
  127     p.add_argument(
"combinations_file", help=
"combinations file name")
 
  128     p.add_argument(
"scores_file", help=
"output scores file name")
 
  129     return p.parse_args()
 
  132 def run(asmb_fn, proteomics_fn, mapping_fn, params_fn, combs_fn,
 
  133         scored_comb_output_fn, max_comb):
 
  135     dmap = IMP.em.read_map(asmb.get_assembly_header().get_dens_fn())
 
  136     dmap.get_header().set_resolution(
 
  138     dmap.update_voxel_size(asmb.get_assembly_header().get_spacing())
 
  139     dmap.set_origin(asmb.get_assembly_header().get_origin())
 
  140     threshold = asmb.get_assembly_header().get_threshold()
 
  146     alignment_params = IMP.multifit.AlignmentParams(params_fn)
 
  147     alignment_params.show()
 
  150     print(
"=========", combs_fn)
 
  158         prot_data, mapping_fn)
 
  160     _ = mapping_data.get_anchors()
 
  166         mapping_data, asmb, alignment_params)
 
  167     align.set_fast_scoring(
False)
 
  169     mdl = align.get_model()
 
  170     mhs = align.get_molecules()
 
  171     align.add_states_and_filters()
 
  175     align.set_density_map(dmap, threshold)
 
  176     for i, mh 
in enumerate(mhs):
 
  177         ensmb.add_component_and_fits(
 
  179                 asmb.get_component_header(i).get_transformations_fn()))
 
  182             rgb = colors[mh.get_name()] 
  184             rgb = colors[names[i]] 
  185         color = IMP.display.Color(rgb[0], rgb[1], rgb[2]) 
  186         for p in IMP.core.get_leaves(mh): 
  187             g= IMP.display.XYZRGeometry(p) 
  195     align.add_all_restraints()
 
  197     rs = align.get_restraint_set().get_restraints()
 
  198     print(
"Get number of restraints:", len(rs))
 
  200         rr = IMP.RestraintSet.get_from(r)
 
  201         for i 
in range(rr.get_number_of_restraints()):
 
  202             print(rr.get_restraint(i).get_name())
 
  203     output = open(scored_comb_output_fn, 
"w")
 
  207     for i 
in range(asmb.get_number_of_component_headers()):
 
  208         c = asmb.get_component_header(i)
 
  209         fn = c.get_reference_fn()
 
  214         rr = IMP.RestraintSet.get_from(r)
 
  215         for i 
in range(rr.get_number_of_restraints()):
 
  216             output.write(rr.get_restraint(i).get_name() + 
"|")
 
  221     print(
"Number of combinations:", len(combs[:max_comb]))
 
  223     print(
"native score")
 
  226         rr = IMP.RestraintSet.get_from(r)
 
  227         for j 
in range(rr.get_number_of_restraints()):
 
  228             print(rr.get_restraint(j).get_name(), rr.evaluate(
False))
 
  231     for i, comb 
in enumerate(combs[:max_comb]):
 
  232         print(
"Scoring combination:", comb)
 
  233         ensmb.load_combination(comb)
 
  236             rr = IMP.RestraintSet.get_from(r)
 
  237             for j 
in range(rr.get_number_of_restraints()):
 
  238                 print(rr.get_restraint(j).get_name())
 
  239                 rscore = rr.evaluate(
False)
 
  241                     num_violated = num_violated + 1
 
  243         print(str(all_leaves[0]) + 
" :: " + str(all_leaves[-1]))
 
  244         score = sf.evaluate(
False)
 
  246         msg = 
"COMB" + str(i) + 
"|" 
  248             rr = IMP.RestraintSet.get_from(r)
 
  249             for j 
in range(rr.get_number_of_restraints()):
 
  250                 current_name = rr.get_restraint(j).get_name()
 
  251                 if current_name != prev_name:
 
  252                     msg += 
' ' + current_name + 
' ' 
  253                     prev_name = current_name
 
  254                 rscore = rr.get_restraint(j).evaluate(
False)
 
  255                 msg += str(rscore) + 
"|" 
  257                     num_violated = num_violated + 1
 
  261             num_violated) + 
"||||" + str(
 
  262             fitr.evaluate(
False)) + 
"||:" 
  266         output.write(msg + 
"\n")
 
  268         ensmb.unload_combination(comb)
 
  274     run(args.assembly_file, args.proteomics_file, args.mapping_file,
 
  275         args.param_file, args.combinations_file, args.scores_file, args.max)
 
  278 if __name__ == 
"__main__":
 
An ensemble of fitting solutions. 
 
double get_coarse_cc_coefficient(const DensityMap *grid1, const DensityMap *grid2, double grid2_voxel_data_threshold, bool allow_padding=false, FloatPair norm_factors=FloatPair(0., 0.))
Calculates the cross correlation coefficient between two maps. 
 
void write_pdb(const Selection &mhd, TextOutput out, unsigned int model=1)
 
Create a scoring function on a list of restraints. 
 
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. 
 
Class for sampling a density map from particles. 
 
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. 
 
ProteomicsData * read_proteomics_data(const char *proteomics_fn)
Proteomics reader. 
 
void set_log_level(LogLevel l)
Set the current global log level. 
 
IntsList read_paths(const char *txt_filename, int max_paths=INT_MAX)
Read paths. 
 
Calculate score based on fit to EM map. 
 
FittingSolutionRecords read_fitting_solutions(const char *fitting_fn)
Fitting solutions reader. 
 
double get_resolution(Model *m, ParticleIndex pi)
Estimate the resolution of the hierarchy as used by Representation.