3 __doc__ =
"Align proteomics graph with the EM map."
8 from IMP
import OptionParser
13 def __init__(self, minValue=0, maxValue=10, totalWidth=12):
17 self.span = maxValue - minValue
18 self.width = totalWidth
22 def updateAmount(self, newAmount=0):
23 if newAmount < self.min:
25 if newAmount > self.max:
27 self.amount = newAmount
30 diffFromMin = float(self.amount - self.min)
31 percentDone = (diffFromMin / float(self.span)) * 100.0
32 percentDone = round(percentDone)
33 percentDone = int(percentDone)
36 allFull = self.width - 2
37 numHashes = (percentDone / 100.0) * allFull
38 numHashes = int(round(numHashes))
41 self.progBar =
"[" +
'#' * numHashes + \
42 ' ' * (allFull - numHashes) +
"]"
45 percentPlace = (len(self.progBar) / 2) - len(str(percentDone))
46 percentString = str(percentDone) +
"%"
49 self.progBar = self.progBar[
50 0:percentPlace] + percentString + self.progBar[
55 return str(self.progBar)
59 usage =
"""%prog [options] <asmb> <asmb.proteomics> <asmb.mapping>
60 <alignment.params> <combinations[output]>
61 <Fitting scores[output]>
63 Align proteomics graph with the EM map.
66 parser.add_option(
"-m",
"--max", type=
"int", dest=
"max", default=999999999,
67 help=
"maximum number of fits considered")
69 options, args = parser.parse_args()
71 parser.error(
"incorrect number of arguments")
75 def report_solutions(asmb, mdl, mhs, dmap, mapping_data, combs,
76 combs_fn_output_fn, scored_comb_output_fn, max_comb):
79 for i, mh
in enumerate(mhs):
80 fn = asmb.get_component_header(i).get_transformations_fn()
81 ensmb.add_component_and_fits(mh,
88 all_leaves = all_leaves + s1.get_selected_particles()
89 print "number of leaves:", len(all_leaves)
90 print "Get number of restraints:", len(mdl.get_restraints())
91 pb = progressBar(0, len(combs))
93 mdl.add_restraint(fitr)
96 print "going to calculate fits for:", len(combs)
97 for i, comb
in enumerate(combs):
100 ensmb.load_combination(comb)
101 ranked_combs.append([comb, fitr.evaluate(
False)])
102 ensmb.unload_combination(comb)
107 ranked_combs.sort(
lambda a, b: cmp(a[1], b[1]))
109 print "ranked combs:", len(ranked_combs)
110 ranked_combs[max_comb:] = []
111 print "ranked combs:", len(ranked_combs)
112 for comb
in ranked_combs:
113 sorted_combs.append(comb[0])
115 output = open(scored_comb_output_fn,
"w")
116 for comb, score
in ranked_combs:
119 output.write(str(ind) +
" ")
120 output.write(
"|" + str(1. - score) +
"|\n")
124 def run(asmb_fn, proteomics_fn, mapping_fn, params_fn,
125 combs_fn_output_fn, scored_comb_output_fn, max_comb):
127 asmb.set_was_used(
True)
129 dmap.get_header().set_resolution(
131 threshold = asmb.get_assembly_header().get_threshold()
132 dmap.update_voxel_size(asmb.get_assembly_header().get_spacing())
133 dmap.set_origin(asmb.get_assembly_header().get_origin())
136 alignment_params = IMP.multifit.AlignmentParams(params_fn)
137 alignment_params.show()
144 em_anchors = mapping_data.get_anchors()
150 align.set_fast_scoring(
False)
151 align.set_density_map(dmap, threshold)
152 align.add_states_and_filters()
153 align.add_all_restraints()
158 combs = align.get_combinations()
161 f = open(combs_fn_output_fn,
"w")
162 f.write(
"NO SOLUTIONS FOUND\n")
166 report_solutions(asmb, align.get_model(), align.get_molecules(), dmap,
167 mapping_data, combs, combs_fn_output_fn,
168 scored_comb_output_fn, max_comb)
172 options, args = parse_args()
173 run(args[0], args[1], args[2], args[3], args[4], args[5],
175 if __name__ ==
"__main__":
An ensemble of fitting solutions.
void set_log_level(LogLevel l)
Set the current global log level.
double get_resolution(kernel::Model *m, kernel::ParticleIndex pi)
void write_paths(const IntsList &paths, const std::string &txt_filename)
SettingsData * read_settings(const char *filename)
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.
Hierarchies get_by_type(Hierarchy mhd, GetByType t)
See IMP.multifit for more information.
DensityMap * read_map(std::string filename)
ProteomicsData * read_proteomics_data(const char *proteomics_fn)
Proteomics reader.
IMP::kernel::OptionParser OptionParser
Calculate score based on fit to EM map.
FittingSolutionRecords read_fitting_solutions(const char *fitting_fn)
Fitting solutions reader.