def run(params, target_files): assert params.normalization in ("no", "E") ofs = open(params.dat_out, "w") xac_files = util.read_path_list(params.lstin) targets = read_target_files(target_files, params.d_min, params.d_max, params.normalization, ofs) cellcon = CellConstraints(targets.values()[0].space_group()) #for i, t in enumerate(targets): ofs.write("# target%.3d = %s\n" % (i,t)) ofs.write("# normalization = %s\n" % params.normalization) ofs.write("# d_min, d_max = %s, %s\n" % (params.d_min, params.d_max)) ofs.write("file %s " % cellcon.get_label_for_free_params()) ofs.write(" ".join( map(lambda x: "cc.%.3d nref.%.3d" % (x, x), xrange(len(targets))))) ofs.write("\n") for xac_file in xac_files: print "reading", xac_file xac = xds_ascii.XDS_ASCII(xac_file) xac.remove_rejected() iobs = xac.i_obs(anomalous_flag=False).merge_equivalents( use_internal_variance=False).array() ofs.write("%s %s" % (xac_file, cellcon.format_free_params(iobs.unit_cell()))) fail_flag = False if params.normalization == "E": try: normaliser = kernel_normalisation(iobs, auto_kernel=True) iobs = iobs.customized_copy( data=iobs.data() / normaliser.normalizer_for_miller_array, sigmas=iobs.sigmas() / normaliser.normalizer_for_miller_array) except: fail_flag = True for i, ta in enumerate(targets.values()): if fail_flag: ofs.write(" % .4f %4d" % cc_num) else: cc_num = calc_cc(iobs, ta) ofs.write(" % .4f %4d" % cc_num) ofs.write("\n")
def make_plot(lp, log_out): ofs = open(log_out, "w") ofs.write("$TABLE: Parameters estimated for each frame:\n") ofs.write("$GRAPHS\n") ofs.write(":scales") ofs.write(":A:1,2:\n") ofs.write(":number of overloaded/strong/unexpected reflections") ofs.write(":A:1,3,4,5:\n") ofs.write(":SIGMAB (beam divergence e.s.d.)") ofs.write(":A:1,6:\n") ofs.write(":SIGMAR (reflecting range e.s.d.)") ofs.write(":A:1,7:\n") ofs.write("$$\n") ofs.write("Frame scale overlods nstrong nrej sigmaD sigmaM $$\n$$\n") for f, scale, novl, nstr, nrej, sd, sm in zip(lp.frames, lp.scales, lp.overloads, lp.strongs, lp.rejecteds, lp.sigmads, lp.sigmars): ofs.write("%5d %s %d %d %d %s %s\n" % (f, scale, novl, nstr, nrej, sd, sm)) ofs.write("$$\n") ofs.write("\n\n\n") ofs.write("$TABLE: Parameters estimated for each block:\n") ofs.write("$GRAPHS\n") ofs.write(":unit cell length a") ofs.write(":A:1,2:\n") cellconstr = CellConstraints(lp.space_group) if not cellconstr.is_b_equal_a(): ofs.write(":unit cell length b") ofs.write(":A:1,3:\n") if not cellconstr.is_c_equal_a_b(): ofs.write(":unit cell length c") ofs.write(":A:1,4:\n") if not cellconstr.is_angle_constrained("alpha"): ofs.write(":unit cell angle alpha") ofs.write(":A:1,5:\n") if not cellconstr.is_angle_constrained("beta"): ofs.write(":unit cell angle beta") ofs.write(":A:1,6:\n") if not cellconstr.is_angle_constrained("gamma"): ofs.write(":unit cell angle gamma") ofs.write(":A:1,7:\n") ofs.write(":rotations off from initial orientation") ofs.write(":A:1,8,9,10:\n") ofs.write(":distance") ofs.write(":A:1,11:\n") ofs.write(":deviations from predicted positions") ofs.write(":A:1,12,13:\n") ofs.write(":beam center") ofs.write(":A:1,14,15:\n") ofs.write(":missetting angles") ofs.write(":A:1,16,17,18:\n") ofs.write("$$\n") ofs.write( "#image a b c alpha beta gamma rotx roty rotz dist spot spindle orgx orgy phix phiy phiz$$\n$$\n" ) for images, param in sorted(lp.blockparams.items()): for i in images: print >> ofs, "%4d " % i, " ".join(param.get( "cell", ["D"] * 6)), " ".join(param.get( "rotation", ["D"] * 3)), param.get("dist", "D"), param.get( "spot", "D"), param.get("spindle", "D"), " ".join( param.get("orig", ["D"] * 2)), " ".join( param.get("misset", ["D"] * 3)) ofs.write("$$\n") ofs.write("\n\n\n") ofs.write("$TABLE: sigmaB and sigmaR on 9 areas for each block:\n") ofs.write("$GRAPHS\n") ofs.write(":SIGMAB") ofs.write(":A:1,2,3,4,5,6,7,8,9,10:\n") ofs.write(":SIGMAR") ofs.write(":A:1,11,12,13,14,15,16,17,18,19:\n") ofs.write("$$\n") ofs.write("#image %s %s$$\n$$\n" % (" ".join(["sigmab%d" % x for x in range(1, 10)]), " ".join( ["sigmar%d" % x for x in range(1, 10)]))) for images, param in sorted(lp.blockparams.items()): for i in images: print >> ofs, "%4d " % i, " ".join(param["sigmab9"]), " ".join( param["sigmar9"]) ofs.write("$$\n") ofs.write("\n\n\n")
def add_cells_and_files(self, cells, symm_str): self.cells = cells # Table table_str = "" for idx, xac in enumerate(cells): cell = cells[xac] table_str += "<tr>\n" table_str += " <td>%.4d</td><td>%s</td>" % (idx+1, xac) # idx, file table_str += "".join(map(lambda x: "<td>%.2f</td>"%x, cell)) table_str += "\n</tr>\n" # Hist cellconstr = CellConstraints(sgtbx.space_group_info(symm_str).group()) show_flags = (True, not cellconstr.is_b_equal_a(), not cellconstr.is_c_equal_a_b(), not cellconstr.is_angle_constrained("alpha"), not cellconstr.is_angle_constrained("beta"), not cellconstr.is_angle_constrained("gamma")) names = ("a", "b", "c", "α", "β", "γ") hist_str = "" label1 = "" for i, (name, show) in enumerate(zip(names, show_flags)): tmp = "" if i in (0,3): tmp += "<tr>" if show: tmp += "<th>%s</th>" % name if i in (2,5): tmp += "</tr>" if i < 3: hist_str += tmp else: label1 += tmp hist_str += "\n<tr>\n" for idx, (name, show) in enumerate(zip(names, show_flags)): if idx==3: hist_str += "</tr>" + label1 + "<tr>" if not show: continue vals = flex.double(map(lambda x: x[idx], cells.values())) if len(vals) == 0: continue nslots = max(30, int((max(vals) - min(vals)) / 0.5)) hist = flex.histogram(vals, n_slots=nslots) x_vals = map(lambda i: hist.data_min() + hist.slot_width() * (i+.5), xrange(len(hist.slots()))) y_vals = hist.slots() hist_str += """ <td> <div id="chartdiv_cell%(idx)d" style="width: 500px; height: 400px;"></div> <script> var chart_cell%(idx)d = AmCharts.makeChart("chartdiv_cell%(idx)d", { "type": "serial", "theme": "none", "legend": { "useGraphSettings": true, "markerSize":12, "valueWidth":0, "verticalGap":0 }, "dataProvider": [%(data)s], "valueAxes": [{ "minorGridAlpha": 0.08, "minorGridEnabled": true, "position": "top", "axisAlpha":0 }], "graphs": [{ "balloonText": "[[category]]: [[value]]", "title": "%(name)s", "type": "column", "fillAlphas": 0.8, "valueField": "yval" }], "rotate": false, "categoryField": "xval", "categoryAxis": { "gridPosition": "start", "title": "" } }); </script> </td> """ % dict(idx=idx, name=name, data=",".join(map(lambda x: '{"xval":%.2f,"yval":%d}'%x, zip(x_vals,y_vals))) ) hist_str += "</tr>" self.html_inputfiles = """ <h2>Input files</h2> %d files for merging in %s symmetry <h3>Unit cell histogram</h3> <table> %s </table> <h3>Files</h3> <a href="#" onClick="toggle_show('div-input-files'); return false;">Show/Hide</a> <div id="div-input-files" style="display:none;"> <table class="cells"> <tr> <th>idx</th> <th>file</th> <th>a</th> <th>b</th> <th>c</th> <th>α</th> <th>β</th> <th>γ</th> </tr> %s </table> </div> """ % (len(cells), symm_str, hist_str, table_str) self.write_html()
def make_plot(lp, log_out): ofs = open(log_out, "w") ofs.write("$TABLE: Parameters estimated for each frame:\n") ofs.write("$GRAPHS\n") ofs.write(":scales") ofs.write(":A:1,2:\n") ofs.write(":number of overloaded reflections") ofs.write(":A:1,3:\n") ofs.write(":number of unexpected reflections") ofs.write(":A:1,4:\n") ofs.write(":SIGMAB (beam divergence e.s.d.)") ofs.write(":A:1,5:\n") ofs.write(":SIGMAR (reflecting range e.s.d.)") ofs.write(":A:1,6:\n") ofs.write("$$\n") ofs.write("Frame scale overlods nrej sigmaD sigmaM $$\n$$\n") for f, scale, novl, nrej, sd, sm in zip(lp.frames, lp.scales, lp.overloads, lp.rejecteds, lp.sigmads, lp.sigmars): ofs.write("%5d %s %d %d %s %s\n" % (f, scale, novl, nrej, sd, sm)) ofs.write("$$\n") ofs.write("\n\n\n") ofs.write("$TABLE: Parameters estimated for each block:\n") ofs.write("$GRAPHS\n") ofs.write(":unit cell length a") ofs.write(":A:1,2:\n") cellconstr = CellConstraints(lp.space_group) if not cellconstr.is_b_equal_a(): ofs.write(":unit cell length b") ofs.write(":A:1,3:\n") if not cellconstr.is_c_equal_a_b(): ofs.write(":unit cell length c") ofs.write(":A:1,4:\n") if not cellconstr.is_angle_constrained("alpha"): ofs.write(":unit cell angle alpha") ofs.write(":A:1,5:\n") if not cellconstr.is_angle_constrained("beta"): ofs.write(":unit cell angle beta") ofs.write(":A:1,6:\n") if not cellconstr.is_angle_constrained("gamma"): ofs.write(":unit cell angle gamma") ofs.write(":A:1,7:\n") ofs.write(":rotations off from initial orientation") ofs.write(":A:1,8,9,10:\n") ofs.write(":distance") ofs.write(":A:1,11:\n") ofs.write(":deviations from predicted positions") ofs.write(":A:1,12,13:\n") ofs.write(":beam center") ofs.write(":A:1,14,15:\n") ofs.write(":missetting angles") ofs.write(":A:1,16,17,18:\n") ofs.write("$$\n") ofs.write("#image a b c alpha beta gamma rotx roty rotz dist spot spindle orgx orgy phix phiy phiz$$\n$$\n") for images, param in sorted(lp.blockparams.items()): for i in images: print >>ofs, "%4d " % i, " ".join(param.get("cell", ["D"]*6)), " ".join(param.get("rotation", ["D"]*3)), param.get("dist","D"), param.get("spot","D"), param.get("spindle","D"), " ".join(param.get("orig",["D"]*2)), " ".join(param.get("misset",["D"]*3)) ofs.write("$$\n") ofs.write("\n\n\n") ofs.write("$TABLE: sigmaB and sigmaR on 9 areas for each block:\n") ofs.write("$GRAPHS\n") ofs.write(":SIGMAB") ofs.write(":A:1,2,3,4,5,6,7,8,9,10:\n") ofs.write(":SIGMAR") ofs.write(":A:1,11,12,13,14,15,16,17,18,19:\n") ofs.write("$$\n") ofs.write("#image %s %s$$\n$$\n" % (" ".join(["sigmab%d"%x for x in range(1,10)]), " ".join(["sigmar%d"%x for x in range(1,10)]))) for images, param in sorted(lp.blockparams.items()): for i in images: print >>ofs, "%4d " % i, " ".join(param["sigmab9"]), " ".join(param["sigmar9"]) ofs.write("$$\n") ofs.write("\n\n\n")