Ejemplo n.º 1
0
    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
Ejemplo n.º 2
0
    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
Ejemplo n.º 3
0
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)
Ejemplo n.º 4
0
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)
Ejemplo n.º 5
0
    # 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"))
Ejemplo n.º 6
0
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)
Ejemplo n.º 7
0
    # 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")])