def run_cycles(self, xds_ascii_files): self.all_data_root = os.path.dirname(os.path.commonprefix(xds_ascii_files)) self.removed_files = [] self.removed_reason = {} print >>self.out, "********************* START FUNCTION ***********************" if self.reference_file: self.run_cycle([self.reference_file,]+xds_ascii_files) else: self.run_cycle(xds_ascii_files) if self.res_params.estimate: #self.cut_resolution(self.get_last_cycle_number()) for run_i in xrange(1, self.get_last_cycle_number()+1): try: self.estimate_resolution(run_i) except: print >>self.out, traceback.format_exc() # Don't want to stop the program. for wd in glob.glob(os.path.join(self.workdir_org, "run_*")): if os.path.exists(os.path.join(wd, "ccp4")): continue xscale_hkl = os.path.abspath(os.path.join(wd, "xscale.hkl")) sg = None # Use user-specified one. Otherwise follow pointless. try: sg = XDS_ASCII(xscale_hkl, read_data=False).symm.space_group() laue_symm_str = str(sg.build_derived_reflection_intensity_group(False).info()) worker = Pointless() result = worker.run_for_symm(xdsin=xscale_hkl, logout=os.path.join(wd, "pointless.log"), choose_laue=laue_symm_str, xdsin_to_p1=True) if "symm" in result: print >>self.out, "Pointless suggestion (forcing %s symmetry):" % laue_symm_str result["symm"].show_summary(self.out, " ") sg = str(result["symm"].space_group_info()) else: print >>self.out, "Pointless failed." except: # Don't want to stop the program. print >>self.out, traceback.format_exc() if self.space_group is not None: sg = str(self.space_group.info()) try: xds2mtz.xds2mtz(xds_file=xscale_hkl, dir_name=os.path.join(wd, "ccp4"), run_xtriage=True, run_ctruncate=True, with_multiplicity=True, space_group=sg, flag_source=self.ref_mtz) except: # Don't want to stop the program. print >>self.out, traceback.format_exc() return self.removed_files, self.removed_reason
def run_cycles(self, xds_ascii_files): self.all_data_root = os.path.dirname(os.path.commonprefix(xds_ascii_files)) self.removed_files = [] self.removed_reason = {} print >>self.out, "********************* START FUNCTION ***********************" if self.reference_file: self.run_cycle([self.reference_file,]+xds_ascii_files) else: self.run_cycle(xds_ascii_files) for i in xrange(1, self.get_last_cycle_number()+1): wd = os.path.join(self.workdir_org, "run_%.2d"%i) xds2mtz.xds2mtz(xds_file=os.path.abspath(os.path.join(wd, "xscale.hkl")), dir_name=os.path.join(wd, "ccp4"), run_xtriage=True, run_ctruncate=True) return self.removed_files, self.removed_reason
def run(params): xdsinp = "XDS.INP" workdir = os.getcwd() params.wfac1.sort() params.minpk.sort() digit_wfac1 = str(get_digit(params.wfac1)) digit_minpk = str(get_digit(params.minpk)) backup_needed = files.generated_by_CORRECT + ("XDS.INP", ) bk_prefix = make_backup(backup_needed) try: for wfac1 in params.wfac1: for minpk in params.minpk: work_name = ("CORRECT_wfac1_%." + digit_wfac1 + "f_minpk_%." + digit_minpk + "f") % (wfac1, minpk) modify_xdsinp(xdsinp, inp_params=[ ("JOB", "CORRECT"), ("WFAC1", wfac1), ("MINPK", minpk), ]) call("xds") # make .mtz file xds2mtz.xds2mtz(os.path.abspath("XDS_ASCII.HKL"), dir_name=os.path.join(workdir, "ccp4_" + work_name), run_ctruncate=True, run_xtriage=True) if params.mtz_free is not None: copy_testflag(mtzfree=params.mtz_free, mtzin=os.path.join(workdir, "ccp4_" + work_name, "XDS_ASCII.mtz")) make_backup(backup_needed, work_name + "_") finally: # 6. Revert XDS.INP, etc. revert_files(backup_needed, bk_prefix)
def run(params): xdsinp = "XDS.INP" workdir = os.getcwd() params.wfac1.sort() params.minpk.sort() digit_wfac1 = str(get_digit(params.wfac1)) digit_minpk = str(get_digit(params.minpk)) backup_needed = files.generated_by_CORRECT + ("XDS.INP",) bk_prefix = make_backup(backup_needed) try: for wfac1 in params.wfac1: for minpk in params.minpk: work_name = ("CORRECT_wfac1_%." + digit_wfac1 + "f_minpk_%." + digit_minpk + "f") % (wfac1, minpk) modify_xdsinp(xdsinp, inp_params=[("JOB", "CORRECT"), ("WFAC1", wfac1), ("MINPK", minpk)]) call("xds") # make .mtz file xds2mtz.xds2mtz( os.path.abspath("XDS_ASCII.HKL"), dir_name=os.path.join(workdir, "ccp4_" + work_name), run_ctruncate=True, run_xtriage=True, ) if params.mtz_free is not None: copy_testflag( mtzfree=params.mtz_free, mtzin=os.path.join(workdir, "ccp4_" + work_name, "XDS_ASCII.mtz") ) make_backup(backup_needed, work_name + "_") finally: # 6. Revert XDS.INP, etc. revert_files(backup_needed, bk_prefix)
# 1. Backup XDS.INP, etc. (Make copies; not renaming) bk_prefix = make_backup(backup_needed) try: # CORRECT with a modify_xdsinp(xdsinp, inp_params=[("JOB","CORRECT"), ("CORRECTIONS", None), ("NBATCH", None), ("MINIMUM_I/SIGMA", None), ("WFAC1", None) ]) call("xds", stdout=open("CORRECT_a_xds.log", "w")) # make xds_CORRECT.mtz xds2mtz.xds2mtz(os.path.abspath("XDS_ASCII.HKL"), dir_name=os.path.join(workdir, "xdsconv_CORRECT"), hklout="xds_CORRECT.mtz") # make CORRECT_a_forscale.mtz call("pointless -copy xdsin XDS_ASCII.HKL hklout %s/CORRECT_a_forscale.mtz" % workdir) make_backup(backup_needed, "CORRECT_a_") # CORRECT with b #modify_xdsinp(xdsinp, mode="b") modify_xdsinp(xdsinp, inp_params=[("JOB","CORRECT"), ("CORRECTIONS", ""), ("NBATCH", "1"), ("MINIMUM_I/SIGMA", "50"), ("WFAC1", "2") ]) call("xds", stdout=open("CORRECT_b_xds.log", "w"))
def run(params): xdsinp = "XDS.INP" workdir = os.getcwd() # concerning DELPHI= if len(params.delphi) == 0: params.delphi = [get_delphi_defined(xdsinp)] params.delphi.sort() digit_delphi = str(get_digit(params.delphi)) # concerning REFINE(INTEGRATE)= if params.all_refine_combinations: refine_params = make_all_refine_combinations() else: refine_params = get_refine_defined(xdsinp) backup_needed = files.generated_by_INTEGRATE + ("XDS.INP",) if params.run_correct: backup_needed += files.generated_by_CORRECT bk_prefix = None try: for rp in refine_params: rp_str = "refine_none" if len(rp) == 0 else "refine_" + "+".join(rp) for delphi in params.delphi: delphi_str = ("delphi_%."+digit_delphi+"f") % delphi bk_prefix = make_backup(backup_needed) # Backup existing XDS.INP and others work_name = "INTEGRATE_%s_%s" % (rp_str, delphi_str) inp_params = [("JOB","INTEGRATE"), ("DELPHI", delphi), ("REFINE(INTEGRATE)", " ".join(rp)) ] if params.run_correct: inp_params[0] = ("JOB","INTEGRATE CORRECT") modify_xdsinp(xdsinp, inp_params=inp_params) call("xds_par", stdout=sys.stdout) # Move files into a new directory. os.mkdir(work_name) for f in backup_needed: shutil.move(f, work_name) if params.run_correct: # make .mtz file try: call("xdsstat", stdin="\n", stdout=open(os.path.join(work_name, "XDSSTAT.LP"),"w"), wdir=work_name) xds2mtz.xds2mtz(os.path.abspath(os.path.join(work_name, "XDS_ASCII.HKL")), dir_name=os.path.join(workdir, work_name, "ccp4"), run_ctruncate=False, run_xtriage=True ) if params.mtz_free is not None: copy_testflag(mtzfree=params.mtz_free, mtzin=os.path.join(workdir, work_name, "ccp4", "XDS_ASCII.mtz")) except: print traceback.format_exc() print "Ignoring xds2mtz error.." print revert_files(backup_needed, bk_prefix) # Revert XDS.INP and others finally: # 6. Revert XDS.INP, etc. revert_files(backup_needed, bk_prefix)
# 1. Backup XDS.INP, etc. (Make copies; not renaming) bk_prefix = make_backup(backup_needed) try: # CORRECT with a modify_xdsinp(xdsinp, inp_params=[("JOB", "CORRECT"), ("CORRECTIONS", None), ("NBATCH", None), ("MINIMUM_I/SIGMA", None), ("WFAC1", None)]) call("xds", stdout=open("CORRECT_a_xds.log", "w")) # make xds_CORRECT.mtz xds2mtz.xds2mtz(os.path.abspath("XDS_ASCII.HKL"), dir_name=os.path.join(workdir, "xdsconv_CORRECT"), hklout="xds_CORRECT.mtz") # make CORRECT_a_forscale.mtz call( "pointless -copy xdsin XDS_ASCII.HKL hklout %s/CORRECT_a_forscale.mtz" % workdir) make_backup(backup_needed, "CORRECT_a_") # CORRECT with b #modify_xdsinp(xdsinp, mode="b") modify_xdsinp(xdsinp, inp_params=[("JOB", "CORRECT"), ("CORRECTIONS", ""), ("NBATCH", "1"), ("MINIMUM_I/SIGMA", "50"), ("WFAC1", "2")])