コード例 #1
0
def _focus_mode_groups(cycle_information, output_file_paths, save_range,
                       calibrated_spectra):
    output_list = []
    to_save = _sum_groups_of_three_ws(calibrated_spectra, output_file_paths)

    workspaces_4_to_9_name = output_file_paths["output_name"] + "_mods4-9"
    workspaces_4_to_9 = mantid.Plus(LHSWorkspace=to_save[1],
                                    RHSWorkspace=to_save[2])
    workspaces_4_to_9 = mantid.Scale(InputWorkspace=workspaces_4_to_9,
                                     Factor=0.5,
                                     OutputWorkspace=workspaces_4_to_9_name)
    to_save.append(workspaces_4_to_9)
    append = False
    index = 1
    for ws in to_save:
        if cycle_information["instrument_version"] == "new":
            mantid.SaveGSS(InputWorkspace=ws,
                           Filename=output_file_paths["gss_filename"],
                           Append=append,
                           Bank=index)
        elif cycle_information["instrument_version"] == "new2":
            mantid.SaveGSS(InputWorkspace=ws,
                           Filename=output_file_paths["gss_filename"],
                           Append=False,
                           Bank=index)

        workspace_names = ws.name()
        dspacing_ws = mantid.ConvertUnits(InputWorkspace=ws,
                                          OutputWorkspace=workspace_names,
                                          Target="dSpacing")
        remove_intermediate_workspace(ws)
        output_list.append(dspacing_ws)
        mantid.SaveNexus(Filename=output_file_paths["nxs_filename"],
                         InputWorkspace=dspacing_ws,
                         Append=append)
        append = True
        index += 1

    for i in range(0, save_range):
        monitor_ws_name = output_file_paths["output_name"] + "_mod" + str(i +
                                                                          10)

        monitor_ws = calibrated_spectra[i + 9]
        to_save = mantid.CloneWorkspace(InputWorkspace=monitor_ws,
                                        OutputWorkspace=monitor_ws_name)

        mantid.SaveGSS(InputWorkspace=to_save,
                       Filename=output_file_paths["gss_filename"],
                       Append=True,
                       Bank=i + 5)
        to_save = mantid.ConvertUnits(InputWorkspace=to_save,
                                      OutputWorkspace=monitor_ws_name,
                                      Target="dSpacing")
        mantid.SaveNexus(Filename=output_file_paths["nxs_filename"],
                         InputWorkspace=to_save,
                         Append=True)

        output_list.append(to_save)

    return output_list
コード例 #2
0
def _focus_mode_all(output_file_paths, processed_spectra,
                    attenuation_filepath):
    summed_spectra_name = output_file_paths["output_name"] + "_mods1-9"
    summed_spectra = mantid.MergeRuns(InputWorkspaces=processed_spectra[:9],
                                      OutputWorkspace=summed_spectra_name)

    summed_spectra = mantid.Scale(InputWorkspace=summed_spectra,
                                  Factor=0.111111111111111,
                                  OutputWorkspace=summed_spectra_name)
    if attenuation_filepath:
        summed_spectra = _attenuate_workspace(
            output_file_paths=output_file_paths,
            attenuated_ws=summed_spectra,
            attenuation_filepath=attenuation_filepath)

    summed_spectra = mantid.ConvertUnits(InputWorkspace=summed_spectra,
                                         Target="TOF",
                                         OutputWorkspace=summed_spectra_name)

    mantid.SaveGSS(InputWorkspace=summed_spectra,
                   Filename=output_file_paths["gss_filename"],
                   Append=False,
                   Bank=1)

    summed_spectra = mantid.ConvertUnits(InputWorkspace=summed_spectra,
                                         Target="dSpacing",
                                         OutputWorkspace=summed_spectra_name)
    mantid.SaveNexus(Filename=output_file_paths["nxs_filename"],
                     InputWorkspace=summed_spectra,
                     Append=False)

    output_list = [summed_spectra]
    for i in range(0, 5):
        spectra_index = (i + 9)  # Compensate for 0 based index
        ws_to_save = processed_spectra[
            spectra_index]  # Save out workspaces 10/11/12
        output_name = output_file_paths["output_name"] + "_mod" + str(
            spectra_index + 1)

        ws_to_save = mantid.ConvertUnits(InputWorkspace=ws_to_save,
                                         OutputWorkspace=ws_to_save,
                                         Target="TOF")
        mantid.SaveGSS(InputWorkspace=ws_to_save,
                       Filename=output_file_paths["gss_filename"],
                       Append=True,
                       Bank=i + 2)
        ws_to_save = mantid.ConvertUnits(InputWorkspace=ws_to_save,
                                         OutputWorkspace=output_name,
                                         Target="dSpacing")
        mantid.SaveNexus(Filename=output_file_paths["nxs_filename"],
                         InputWorkspace=ws_to_save,
                         Append=True)

        output_list.append(ws_to_save)

    return output_list
コード例 #3
0
def save_focused_data(d_spacing_group, tof_group, output_paths):
    """
    Saves out focused data into nxs, GSAS and .dat formats. Requires the grouped workspace
    in TOF and dSpacing and the dictionary of output paths generated by abstract_inst.
    :param d_spacing_group: The focused workspace group in dSpacing
    :param tof_group: The focused workspace group in TOF
    :param output_paths: A dictionary containing the full paths to save to
    :return: None
    """
    def ensure_dir_exists(filename):
        dirname = os.path.dirname(filename)
        if not os.path.exists(dirname):
            os.makedirs(dirname)
        return filename

    mantid.SaveGSS(InputWorkspace=tof_group,
                   Filename=ensure_dir_exists(output_paths["gss_filename"]),
                   SplitFiles=False,
                   Append=False)
    mantid.SaveNexusProcessed(InputWorkspace=tof_group,
                              Filename=ensure_dir_exists(
                                  output_paths["nxs_filename"]),
                              Append=False)

    _save_xye(ws_group=d_spacing_group,
              filename_template=ensure_dir_exists(
                  output_paths["dspacing_xye_filename"]))
    _save_xye(ws_group=tof_group,
              filename_template=ensure_dir_exists(
                  output_paths["tof_xye_filename"]))
コード例 #4
0
ファイル: pearl_output.py プロジェクト: yutiansut/mantid
def _focus_mode_mods(output_file_paths, calibrated_spectra):
    append = False
    output_list = []
    for index, ws in enumerate(calibrated_spectra):
        output_name = output_file_paths["output_name"] + "_mod" + str(index +
                                                                      1)
        tof_ws = mantid.ConvertUnits(InputWorkspace=ws,
                                     OutputWorkspace=output_name,
                                     Target=WORKSPACE_UNITS.tof)
        mantid.SaveFocusedXYE(InputWorkspace=tof_ws,
                              Filename=output_file_paths["tof_xye_filename"],
                              Append=False,
                              IncludeHeader=False)
        mantid.SaveGSS(InputWorkspace=tof_ws,
                       Filename=output_file_paths["gss_filename"],
                       Append=append,
                       Bank=index + 1)
        dspacing_ws = mantid.ConvertUnits(InputWorkspace=ws,
                                          OutputWorkspace=output_name,
                                          Target=WORKSPACE_UNITS.d_spacing)
        output_list.append(dspacing_ws)
        mantid.SaveNexus(Filename=output_file_paths["nxs_filename"],
                         InputWorkspace=dspacing_ws,
                         Append=append)

        append = True
    return output_list
コード例 #5
0
ファイル: EnginX.py プロジェクト: gemmaguest/mantid
def _save_out(run_number, focus_directory, focus_general, output, enginx_file_name_format, bank_id):
    """
    save out the files required for the focus

    @param run_number :: the run number of the focused run
    @param focus_directory :: the user directory to save to
    @param focus_general :: the general folder to copy the saved out files to
    @param output :: the workspace to save
    @param enginx_file_name_format :: the naming scheme of the files
    @param bank_id :: the bank being saved

    """
    # work out where to save the files
    dat_name, genie_filename, gss_name, hdf5_name, nxs_name = _find_focus_file_location(bank_id, focus_directory,
                                                                                        enginx_file_name_format,
                                                                                        run_number)
    if not str(bank_id).isnumeric():
        bank_id = 0
    # save the files out to the user directory
    simple.SaveFocusedXYE(InputWorkspace=output, Filename=dat_name, SplitFiles=False,
                          StartAtBankNumber=bank_id)
    simple.SaveGSS(InputWorkspace=output, Filename=gss_name, SplitFiles=False, Bank=bank_id)
    simple.SaveOpenGenieAscii(InputWorkspace=output, Filename=genie_filename, OpenGenieFormat="ENGIN-X Format")
    simple.SaveNexus(InputWorkspace=output, Filename=nxs_name)
    simple.ExportSampleLogsToHDF5(InputWorkspace=output, Filename=hdf5_name, Blacklist="bankid")
    if not focus_general == focus_directory:
        if not os.path.exists(focus_general):
            os.makedirs(focus_general)
        # copy the files to the general directory
        copy2(dat_name, focus_general)
        copy2(gss_name, focus_general)
        copy2(genie_filename, focus_general)
        copy2(nxs_name, focus_general)
        copy2(hdf5_name, focus_general)
コード例 #6
0
    def write_gss_file(ws_name_list, gss_file_name):
        """
        Write a MatrixWorkspace to a GSAS file
        Args:
            workspace:
            gss_file_name:

        Returns:

        """
        # check
        assert isinstance(ws_name_list, list) and len(ws_name_list) > 1, \
            'There must be at least 2 workspaces for conjoining operation.'
        assert isinstance(gss_file_name, str)

        # write with appending
        append_mode = False
        for i_ws, ws_name in enumerate(ws_name_list):
            simpleapi.SaveGSS(InputWorkspace=ws_name,
                              Filename=gss_file_name,
                              Format='SLOG',
                              Bank=1,
                              Append=append_mode)
            append_mode = True
        # END-FOR

        return
コード例 #7
0
    def save_combined_panel(self, run, panel):
        panel_combination = {5: 6, 4: 7, 3: 8, 2: 9, 1: 10}
        input_ws1 = "w{0}-{1}foc".format(run, panel)
        input_ws2 = "w{0}-{1}foc".format(run, panel_combination.get(panel))
        combined = "{0}{1}-{2}_{3}foc{4}".format("{0}", run, panel,
                                                 panel_combination.get(panel),
                                                 "{1}")
        combined_save = combined.format("", "{}")
        combined_ws = combined.format("w", "")

        simple.RebinToWorkspace(WorkspaceToRebin=input_ws2,
                                WorkspaceToMatch=input_ws1,
                                OutputWorkspace=input_ws2,
                                PreserveEvents='0')
        simple.Plus(LHSWorkspace=input_ws1,
                    RHSWorkspace=input_ws2,
                    OutputWorkspace=combined_ws)
        simple.ConvertUnits(InputWorkspace=combined_ws,
                            OutputWorkspace=combined_ws + "-d",
                            Target="dSpacing",
                            EMode="Elastic")

        simple.SaveGSS(combined_ws,
                       os.path.join(self.user_directory,
                                    combined_save.format("raw.gss")),
                       Append=False,
                       Bank=1)
        simple.SaveFocusedXYE(
            combined_ws,
            os.path.join(self.user_directory, combined_save.format("raw.dat")))
        simple.SaveNexusProcessed(
            combined_ws,
            os.path.join(self.user_directory, combined_save.format("raw.nxs")))
コード例 #8
0
def _focus_mode_all(output_file_paths, calibrated_spectra):
    first_spectrum = calibrated_spectra[0]
    summed_spectra = mantid.CloneWorkspace(InputWorkspace=first_spectrum)

    for i in range(1, 9):  # TODO why is this 1-8
        summed_spectra = mantid.Plus(LHSWorkspace=summed_spectra,
                                     RHSWorkspace=calibrated_spectra[i])

    summed_spectra_name = output_file_paths["output_name"] + "_mods1-9"

    summed_spectra = mantid.Scale(InputWorkspace=summed_spectra,
                                  Factor=0.111111111111111,
                                  OutputWorkspace=summed_spectra_name)
    mantid.SaveGSS(InputWorkspace=summed_spectra,
                   Filename=output_file_paths["gss_filename"],
                   Append=False,
                   Bank=1)

    summed_spectra = mantid.ConvertUnits(InputWorkspace=summed_spectra,
                                         Target="dSpacing",
                                         OutputWorkspace=summed_spectra_name)
    mantid.SaveNexus(Filename=output_file_paths["nxs_filename"],
                     InputWorkspace=summed_spectra,
                     Append=False)

    output_list = [summed_spectra]
    for i in range(0, 3):
        spectra_index = (
            i + 9
        )  # We want workspaces 10/11/12 so compensate for 0 based index
        ws_to_save = calibrated_spectra[
            spectra_index]  # Save out workspaces 10/11/12
        output_name = output_file_paths["output_name"] + "_mod" + str(
            spectra_index + 1)
        mantid.SaveGSS(InputWorkspace=ws_to_save,
                       Filename=output_file_paths["gss_filename"],
                       Append=True,
                       Bank=i + 2)
        ws_to_save = mantid.ConvertUnits(InputWorkspace=ws_to_save,
                                         OutputWorkspace=output_name,
                                         Target="dSpacing")
        output_list.append(ws_to_save)
        mantid.SaveNexus(Filename=output_file_paths["nxs_filename"],
                         InputWorkspace=ws_to_save,
                         Append=True)

    return output_list
コード例 #9
0
def _focus_mode_trans(output_file_paths, atten, instrument,
                      calibrated_spectra):
    summed_ws = mantid.CloneWorkspace(InputWorkspace=calibrated_spectra[0])
    for i in range(1, 9):  # Add workspaces 2-9 to workspace 1
        summed_ws = mantid.Plus(LHSWorkspace=summed_ws,
                                RHSWorkspace=calibrated_spectra[i])

    summed_ws = mantid.Scale(InputWorkspace=summed_ws,
                             Factor=0.111111111111111)

    if atten:
        # Clone a workspace which is not attenuated
        no_att = output_file_paths["output_name"] + "_noatten"
        mantid.CloneWorkspace(InputWorkspace=summed_ws, OutputWorkspace=no_att)

        summed_ws = mantid.ConvertUnits(InputWorkspace=summed_ws,
                                        Target="dSpacing")
        summed_ws = instrument._attenuate_workspace(summed_ws)
        summed_ws = mantid.ConvertUnits(InputWorkspace=summed_ws, Target="TOF")

    mantid.SaveGSS(InputWorkspace=summed_ws,
                   Filename=output_file_paths["gss_filename"],
                   Append=False,
                   Bank=1)
    mantid.SaveFocusedXYE(InputWorkspace=summed_ws,
                          Filename=output_file_paths["tof_xye_filename"],
                          Append=False,
                          IncludeHeader=False)

    summed_ws = mantid.ConvertUnits(InputWorkspace=summed_ws,
                                    Target="dSpacing")

    # Rename to user friendly name:
    summed_ws_name = output_file_paths["output_name"] + "_mods1-9"
    summed_ws = mantid.RenameWorkspace(InputWorkspace=summed_ws,
                                       OutputWorkspace=summed_ws_name)

    mantid.SaveFocusedXYE(InputWorkspace=summed_ws,
                          Filename=output_file_paths["dspacing_xye_filename"],
                          Append=False,
                          IncludeHeader=False)
    mantid.SaveNexus(InputWorkspace=summed_ws,
                     Filename=output_file_paths["nxs_filename"],
                     Append=False)

    output_list = [summed_ws]

    for i in range(0, 9):
        workspace_name = output_file_paths["output_name"] + "_mod" + str(i + 1)
        to_save = mantid.ConvertUnits(InputWorkspace=calibrated_spectra[i],
                                      Target="dSpacing",
                                      OutputWorkspace=workspace_name)
        output_list.append(to_save)
        mantid.SaveNexus(Filename=output_file_paths["nxs_filename"],
                         InputWorkspace=to_save,
                         Append=True)

    return output_list
コード例 #10
0
ファイル: pearl_output.py プロジェクト: yutiansut/mantid
def _focus_mode_trans(output_file_paths, attenuation_filepath,
                      calibrated_spectra):
    summed_ws = mantid.MergeRuns(InputWorkspaces=calibrated_spectra[:9])
    xList = summed_ws.readX(0)

    summed_ws = mantid.CropWorkspace(InputWorkspace=summed_ws,
                                     XMin=xList[1],
                                     Xmax=xList[-2])
    summed_ws = mantid.Scale(InputWorkspace=summed_ws,
                             Factor=0.111111111111111)

    if attenuation_filepath:
        summed_ws = _attenuate_workspace(
            output_file_paths=output_file_paths,
            attenuated_ws=summed_ws,
            attenuation_filepath=attenuation_filepath)

    summed_ws = mantid.ConvertUnits(InputWorkspace=summed_ws, Target="TOF")
    mantid.SaveGSS(InputWorkspace=summed_ws,
                   Filename=output_file_paths["gss_filename"],
                   Append=False,
                   Bank=1)

    mantid.SaveFocusedXYE(InputWorkspace=summed_ws,
                          Filename=output_file_paths["tof_xye_filename"],
                          Append=False,
                          IncludeHeader=False)

    summed_ws = mantid.ConvertUnits(InputWorkspace=summed_ws,
                                    Target="dSpacing")

    # Rename to user friendly name:
    summed_ws_name = output_file_paths["output_name"] + "_mods1-9"
    summed_ws = mantid.RenameWorkspace(InputWorkspace=summed_ws,
                                       OutputWorkspace=summed_ws_name)

    mantid.SaveFocusedXYE(InputWorkspace=summed_ws,
                          Filename=output_file_paths["dspacing_xye_filename"],
                          Append=False,
                          IncludeHeader=False)
    mantid.SaveNexus(InputWorkspace=summed_ws,
                     Filename=output_file_paths["nxs_filename"],
                     Append=False)

    output_list = [summed_ws]

    for i in range(0, 9):
        workspace_name = output_file_paths["output_name"] + "_mod" + str(i + 1)
        to_save = mantid.ConvertUnits(InputWorkspace=calibrated_spectra[i],
                                      Target="dSpacing",
                                      OutputWorkspace=workspace_name)
        output_list.append(to_save)
        mantid.SaveNexus(Filename=output_file_paths["nxs_filename"],
                         InputWorkspace=to_save,
                         Append=True)

    return output_list
コード例 #11
0
def save_mantid_gsas(gsas_ws_name, gda_file_name, binning_parameters):
    """
    Save temporary GSAS file
    :param gsas_ws_name:
    :param gda_file_name:
    :param binning_parameters:
    :return:
    """
    temp1_ws = ADS.retrieve(gsas_ws_name)
    print('[DB...BAT] Before aligned {0}.. vec x: {1}... is histograms? {2}'
          ''.format(type(temp1_ws),
                    temp1_ws.readX(2)[0], temp1_ws.isHistogramData()))

    aligned_gss_ws_name = '{0}_temp'.format(gsas_ws_name)

    if isinstance(binning_parameters, numpy.ndarray):
        # align to VDRIVE
        align_to_vdrive_bin(gsas_ws_name, binning_parameters,
                            aligned_gss_ws_name)
    elif binning_parameters is not None:
        api.Rebin(InputWorkspace=gsas_ws_name,
                  OutputWorkspace=aligned_gss_ws_name,
                  Params=binning_parameters)
    # END-IF (rebin)

    aws = ADS.retrieve(aligned_gss_ws_name)
    print('[DB...INFO] Save Mantid GSS: {} is histogram: {}'.format(
        aligned_gss_ws_name, aws.isHistogramData()))

    # Convert from PointData to Histogram
    api.ConvertToHistogram(InputWorkspace=aligned_gss_ws_name,
                           OutputWorkspace=aligned_gss_ws_name)

    # Save
    print('[DB...VERY IMPORTANT] Save to GSAS File {0} as a temporary output'.
          format(gda_file_name))
    curr_ws = ADS.retrieve(aligned_gss_ws_name)
    print(
        '[DB...INFO] Into SaveGSS: number of histograms = {}, Bank 1/2 size = {}, Bank3 size = {}'
        ''.format(curr_ws.getNumberHistograms(), len(curr_ws.readX(0)),
                  len(curr_ws.readX(2))))
    print('[DB...INFO] B1[0] = {}, B1[-1] = {}, B3[0] = {}, B3[-1] = {}'
          ''.format(
              curr_ws.readX(0)[0],
              curr_ws.readX(0)[-1],
              curr_ws.readX(2)[0],
              curr_ws.readX(2)[-1]))
    api.SaveGSS(InputWorkspace=aligned_gss_ws_name,
                Filename=gda_file_name,
                SplitFiles=False,
                Append=False,
                Format="SLOG",
                MultiplyByBinWidth=False,
                ExtendedHeader=False,
                UseSpectrumNumberAsBankID=True)

    return gda_file_name
コード例 #12
0
ファイル: EnggUtils.py プロジェクト: robertapplin/mantid
def _save_output_files(focus_dirs,
                       sample_ws_foc,
                       calibration,
                       van_run,
                       rb_num=None):
    # set bankid for use in fit tab
    foc_suffix = calibration.get_foc_ws_suffix()
    xunit = sample_ws_foc.getDimension(0).name
    xunit_suffix = XUNIT_SUFFIXES[xunit]
    sample_run_no = sample_ws_foc.run().get('run_number').value
    # save all spectra to single ASCII files
    ascii_fname = _generate_output_file_name(calibration.get_instrument(),
                                             sample_run_no,
                                             van_run,
                                             calibration.get_group_suffix(),
                                             xunit_suffix,
                                             ext='')

    for focus_dir in focus_dirs:
        if not path.exists(focus_dir):
            makedirs(focus_dir)
        mantid.SaveGSS(InputWorkspace=sample_ws_foc,
                       Filename=path.join(focus_dir, ascii_fname + '.gss'),
                       SplitFiles=False,
                       UseSpectrumNumberAsBankID=True)
        mantid.SaveFocusedXYE(InputWorkspace=sample_ws_foc,
                              Filename=path.join(focus_dir,
                                                 ascii_fname + ".abc"),
                              SplitFiles=False,
                              Format="TOPAS")
        # Save nxs per spectrum
        nxs_paths = []
        mantid.AddSampleLog(Workspace=sample_ws_foc,
                            LogName="Vanadium Run",
                            LogText=van_run)
        for ispec in range(sample_ws_foc.getNumberHistograms()):
            # add a bankid and vanadium to log that is read by fitting model
            bankid = foc_suffix if sample_ws_foc.getNumberHistograms(
            ) == 1 else f'{foc_suffix}_{ispec + 1}'
            mantid.AddSampleLog(Workspace=sample_ws_foc,
                                LogName="bankid",
                                LogText=bankid.replace('_', ' '))  # overwrites
            # save spectrum as nexus
            filename = _generate_output_file_name(calibration.get_instrument(),
                                                  sample_run_no,
                                                  van_run,
                                                  bankid,
                                                  xunit_suffix,
                                                  ext=".nxs")
            nxs_path = path.join(focus_dir, filename)
            mantid.SaveNexus(InputWorkspace=sample_ws_foc,
                             Filename=nxs_path,
                             WorkspaceIndexList=[ispec])
            nxs_paths.append(nxs_path)
    return nxs_paths  # from last focus_dir only
コード例 #13
0
ファイル: SaveVulcanGSS.py プロジェクト: mcvine/mantid
    def _saveGSAS(self, gsaws, gdafilename):
        """ Save file
        """
        # Convert from PointData to Histogram
        gsaws = api.ConvertToHistogram(InputWorkspace=gsaws,
                                       OutputWorkspace=str(gsaws))

        # Save
        api.SaveGSS(InputWorkspace=gsaws, Filename=gdafilename, SplitFiles=False, Append=False,\
                Format="SLOG", MultiplyByBinWidth=False, ExtendedHeader=False, UseSpectrumNumberAsBankID=True)

        return gsaws
コード例 #14
0
    def savePDFile(self, exp, scan, filetype, sfilename):
        """ Save a reduced workspace to gsas/fullprof/topaz data file
        """
        # get workspace
        wsmanager = self.getWorkspace(exp, scan, raiseexception=True)
        if wsmanager.reducedws is None:
            raise NotImplementedError(
                "Unable to rebin the data for exp=%d, scan=%d because \
                    either data MD workspace and monitor MD workspace is not present."
                % (exp, scan))
        else:
            wksp = wsmanager.reducedws

        # save
        filetype = filetype.lower()
        if "gsas" in filetype:
            if sfilename.endswith('.dat') is True:
                sfilename.replace('.dat', '.gsa')

            api.SaveGSS(InputWorkspace=wksp,
                        Filename=sfilename,
                        SplitFiles=False,
                        Append=False,
                        MultiplyByBinWidth=False,
                        Bank=1,
                        Format="SLOG",
                        ExtendedHeader=True)
        # ENDIF

        if "fullprof" in filetype:
            if sfilename.endswith('.gsa') is True:
                sfilename.replace('.gsa', '.dat')

            api.SaveFocusedXYE(InputWorkspace=wksp,
                               StartAtBankNumber=1,
                               Filename=sfilename)
        # ENDIF

        if "topas" in filetype:
            sfilename = sfilename[:-4] + ".xye"
            api.SaveFocusedXYE(InputWorkspace=wksp,
                               StartAtBankNumber=info["bank"],
                               Filename=sfilename,
                               Format="TOPAS")
        # ENDIF

        return
コード例 #15
0
    def save_gsas(self, output_workspace, gsas_file_name, ipts_number,
                  parm_file_name):
        """
        save (rebinned) workspace to GSAS file
        :param output_workspace:
        :param gsas_file_name:
        :param ipts_number:
        :param parm_file_name:
        :return:
        """
        # check that workspace shall be point data
        if output_workspace.isHistogramData():
            raise RuntimeError(
                'Output workspace shall be point data at this stage.')

        # construct the headers
        vulcan_gsas_header = self.create_vulcan_gsas_header(
            output_workspace, gsas_file_name, ipts_number, parm_file_name)

        vulcan_bank_headers = list()
        for ws_index in range(output_workspace.getNumberHistograms()):
            bank_id = output_workspace.getSpectrum(ws_index).getSpectrumNo()
            bank_header = self.create_bank_header(
                bank_id, output_workspace.readX(ws_index))
            vulcan_bank_headers.append(bank_header)
        # END-F

        # Save
        try:
            api.SaveGSS(InputWorkspace=output_workspace,
                        Filename=gsas_file_name,
                        SplitFiles=False,
                        Append=False,
                        Format="SLOG",
                        MultiplyByBinWidth=False,
                        ExtendedHeader=False,
                        UserSpecifiedGSASHeader=vulcan_gsas_header,
                        UserSpecifiedBankHeader=vulcan_bank_headers,
                        UseSpectrumNumberAsBankID=True,
                        SLOGXYEPrecision=[1, 1, 2])
        except RuntimeError as run_err:
            raise RuntimeError(
                'Failed to call SaveGSS() due to {0}'.format(run_err))

        return
コード例 #16
0
def _save_out(run_number, focus_directory, focus_general, output, join_string,
              bank_id):
    """
    save out the files required for the focus

    @param run_number :: the run number of the focused run
    @param focus_directory :: the user directory to save to
    @param focus_general :: the general folder to copy the saved out files to
    @param output :: the workspace to save
    @param join_string :: the nameing scheme of the files
    @param bank_id :: the bank being saved

    """
    # work out where to save the files
    filename = os.path.join(focus_directory,
                            join_string.format(run_number, bank_id))
    hdf5_name = os.path.join(focus_directory, run_number + ".hdf5")
    if not unicode(bank_id).isnumeric():
        bank_id = 0
    # save the files out to the user directory
    simple.SaveFocusedXYE(InputWorkspace=output,
                          Filename=filename + ".dat",
                          SplitFiles=False,
                          StartAtBankNumber=bank_id)
    simple.SaveGSS(InputWorkspace=output,
                   Filename=filename + ".gss",
                   SplitFiles=False,
                   Bank=bank_id)
    simple.SaveOpenGenieAscii(InputWorkspace=output,
                              Filename=filename + ".his",
                              OpenGenieFormat="ENGIN-X Format")
    simple.SaveNexus(InputWorkspace=output, Filename=filename + ".nxs")
    simple.ExportSampleLogsToHDF5(InputWorkspace=output,
                                  Filename=hdf5_name,
                                  Blacklist="bankid")
    if not focus_general == focus_directory:
        if not os.path.exists(focus_general):
            os.makedirs(focus_general)
        # copy the files to the general directory
        copy2(filename + ".dat", focus_general)
        copy2(filename + ".gss", focus_general)
        copy2(filename + ".his", focus_general)
        copy2(filename + ".nxs", focus_general)
        copy2(hdf5_name, focus_general)
コード例 #17
0
def save_focused_data(d_spacing_group, tof_group, output_paths,
                      run_number_string, inst_prefix, file_ext):
    """
    Saves out focused data into nxs, GSAS and .dat formats. Requires the grouped workspace
    in TOF and dSpacing, the a dictionary of output paths generated by abstract_inst,
    the user inputted run number string and the prefix of the instrument.
    :param d_spacing_group: The focused workspace group in dSpacing
    :param tof_group: The focused workspace group in TOF
    :param output_paths: A dictionary containing the full paths to save to
    :param run_number_string: The user input run number(s) as a string to generate output name
    :param inst_prefix: The instrument prefix to generate output name
    :return: None
    """
    mantid.SaveGSS(InputWorkspace=tof_group,
                   Filename=output_paths["gss_filename"],
                   SplitFiles=False,
                   Append=False)
    mantid.SaveNexusProcessed(InputWorkspace=tof_group,
                              Filename=output_paths["nxs_filename"],
                              Append=False)

    dat_folder_name = "dat_files"
    dat_file_destination = os.path.join(output_paths["output_folder"],
                                        dat_folder_name)
    if not os.path.exists(dat_file_destination):
        os.makedirs(dat_file_destination)

    _save_xye(ws_group=d_spacing_group,
              ws_units="d",
              run_number=run_number_string,
              output_folder=dat_file_destination,
              inst_prefix=inst_prefix,
              file_ext=file_ext)
    _save_xye(ws_group=tof_group,
              ws_units="TOF",
              run_number=run_number_string,
              output_folder=dat_file_destination,
              inst_prefix=inst_prefix,
              file_ext=file_ext)
コード例 #18
0
def _focus_mode_mods(output_file_paths, calibrated_spectra):
    index = 1
    append = False
    output_list = []
    for ws in calibrated_spectra:

        mantid.SaveGSS(InputWorkspace=ws,
                       Filename=output_file_paths["gss_filename"],
                       Append=append,
                       Bank=index)
        output_name = output_file_paths["output_name"] + "_mod" + str(index)
        dspacing_ws = mantid.ConvertUnits(InputWorkspace=ws,
                                          OutputWorkspace=output_name,
                                          Target="dSpacing")
        output_list.append(dspacing_ws)
        mantid.SaveNexus(Filename=output_file_paths["nxs_filename"],
                         InputWorkspace=dspacing_ws,
                         Append=append)

        append = True
        index += 1
    return output_list
コード例 #19
0
    def process_run(self,
                    number,
                    panel,
                    extension,
                    cycle_vana="09_4",
                    absorb=False,
                    number_density=0.0,
                    scattering=0.0,
                    attenuation=0.0,
                    height=0.0,
                    radius=0.0):
        ws_to_focus = self.read(number, panel, extension)
        if absorb:
            absorption_corrections(attenuation, height, number_density, radius,
                                   scattering, ws_to_focus)
        focused_ws = self.focus(ws_to_focus, panel)

        panel_crop = {
            1: (0.8, 53.3),
            2: (0.5, 13.1),
            3: (0.5, 7.77),
            4: (0.4, 5.86),
            5: (0.35, 4.99),
            6: (0.35, 4.99),
            7: (0.4, 5.86),
            8: (0.5, 7.77),
            9: (0.5, 13.1),
            10: (0.8, 53.3)
        }
        d_min, d_max = panel_crop.get(panel)
        simple.CropWorkspace(InputWorkspace=focused_ws,
                             OutputWorkspace=focused_ws,
                             XMin=d_min,
                             XMax=d_max)
        save_location = os.path.join(self.user_directory, "{0}-{1}{2}.{3}")
        if panel == 0:
            for panel_i in range(Wish.NUM_PANELS):
                focused_ws = "w{0}-{1}foc".format(number, panel_i)
                simple.CropWorkspace(InputWorkspace=focused_ws,
                                     OutputWorkspace=focused_ws,
                                     XMin=d_min,
                                     XMax=d_max)
                logger.notice(
                    "will try to load a vanadium with the name: {}".format(
                        self.get_vanadium(panel_i, cycle_vana)))
                self.apply_vanadium_corrections(cycle_vana, panel_i,
                                                focused_ws)
                simple.SaveGSS(InputWorkspace=focused_ws,
                               Filename=save_location.format(
                                   number, panel_i, extension, "gss"),
                               Append=False,
                               Bank=1)
                simple.SaveFocusedXYE(
                    focused_ws,
                    save_location.format(number, panel_i, extension, "dat"))
                simple.SaveNexusProcessed(
                    focused_ws,
                    save_location.format(number, panel_i, extension, "nxs"))
        else:
            logger.notice(
                "will try to load a vanadium with the name: {}".format(
                    self.get_vanadium(panel, cycle_vana)))
            self.apply_vanadium_corrections(cycle_vana, panel, focused_ws)
            simple.SaveGSS(InputWorkspace=focused_ws,
                           Filename=save_location.format(
                               number, panel, extension, "gss"),
                           Append=False,
                           Bank=1)
            simple.SaveFocusedXYE(
                focused_ws,
                save_location.format(number, panel, extension, "dat"))
            simple.SaveNexusProcessed(
                focused_ws,
                save_location.format(number, panel, extension, "nxs"))
        return focused_ws
コード例 #20
0
ファイル: pearl_output.py プロジェクト: yutiansut/mantid
def _focus_mode_all(output_file_paths, processed_spectra,
                    attenuation_filepath):
    summed_spectra_name = output_file_paths["output_name"] + "_mods1-9"
    summed_spectra = mantid.MergeRuns(InputWorkspaces=processed_spectra[:9],
                                      OutputWorkspace=summed_spectra_name)
    xList = summed_spectra.readX(0)

    summed_spectra = mantid.CropWorkspace(InputWorkspace=summed_spectra,
                                          XMin=xList[1],
                                          Xmax=xList[-2])
    summed_spectra = mantid.Scale(InputWorkspace=summed_spectra,
                                  Factor=0.111111111111111,
                                  OutputWorkspace=summed_spectra_name)
    if attenuation_filepath:
        summed_spectra = _attenuate_workspace(
            output_file_paths=output_file_paths,
            attenuated_ws=summed_spectra,
            attenuation_filepath=attenuation_filepath)

    summed_spectra = mantid.ConvertUnits(InputWorkspace=summed_spectra,
                                         Target="TOF",
                                         OutputWorkspace=summed_spectra_name)

    mantid.SaveGSS(InputWorkspace=summed_spectra,
                   Filename=output_file_paths["gss_filename"],
                   Append=False,
                   Bank=1)

    summed_spectra = mantid.ConvertUnits(InputWorkspace=summed_spectra,
                                         Target="dSpacing",
                                         OutputWorkspace=summed_spectra_name)
    mantid.SaveNexus(Filename=output_file_paths["nxs_filename"],
                     InputWorkspace=summed_spectra,
                     Append=False)
    mantid.SaveFocusedXYE(InputWorkspace=summed_spectra_name,
                          Filename=output_file_paths["tof_xye_filename"],
                          Append=False,
                          IncludeHeader=False)
    output_list = [summed_spectra]
    for i in range(0, 5):
        spectra_index = (i + 9)  # Compensate for 0 based index
        ws_to_save = processed_spectra[
            spectra_index]  # Save out workspaces 10/11/12
        output_name = output_file_paths["output_name"] + "_mod" + str(
            spectra_index + 1)

        ws_to_save = mantid.ConvertUnits(InputWorkspace=ws_to_save,
                                         OutputWorkspace=ws_to_save,
                                         Target="TOF")
        mantid.SaveGSS(InputWorkspace=ws_to_save,
                       Filename=output_file_paths["gss_filename"],
                       Append=True,
                       Bank=i + 2)
        splits = output_file_paths["tof_xye_filename"].split(".")
        tof_xye_name = splits[0] + "-" + str(i + 10) + "." + splits[1]
        mantid.SaveFocusedXYE(InputWorkspace=ws_to_save,
                              Filename=tof_xye_name,
                              Append=False,
                              IncludeHeader=False)
        ws_to_save = mantid.ConvertUnits(InputWorkspace=ws_to_save,
                                         OutputWorkspace=output_name,
                                         Target="dSpacing")
        mantid.SaveNexus(Filename=output_file_paths["nxs_filename"],
                         InputWorkspace=ws_to_save,
                         Append=True)

        output_list.append(ws_to_save)

    return output_list
コード例 #21
0
ファイル: pearl_output.py プロジェクト: yutiansut/mantid
def _focus_mode_groups(output_file_paths, calibrated_spectra):
    output_list = []
    to_save = _sum_groups_of_three_ws(calibrated_spectra=calibrated_spectra,
                                      output_file_names=output_file_paths)

    workspaces_4_to_9_name = output_file_paths["output_name"] + "_mods4-9"
    workspaces_4_to_9 = mantid.MergeRuns(
        InputWorkspaces=calibrated_spectra[3:9],
        OutputWorkspace=workspaces_4_to_9_name)
    xList = workspaces_4_to_9.readX(0)

    workspaces_4_to_9 = mantid.CropWorkspace(InputWorkspace=workspaces_4_to_9,
                                             XMin=xList[1],
                                             Xmax=xList[-2])
    workspaces_4_to_9 = mantid.Scale(InputWorkspace=workspaces_4_to_9,
                                     Factor=0.5,
                                     OutputWorkspace=workspaces_4_to_9_name)
    to_save.append(workspaces_4_to_9)
    append = False
    index = 1
    for ws in to_save:
        ws = mantid.ConvertUnits(InputWorkspace=ws,
                                 OutputWorkspace=ws,
                                 Target="TOF")
        mantid.SaveGSS(InputWorkspace=ws,
                       Filename=output_file_paths["gss_filename"],
                       Append=False,
                       Bank=index)
        mantid.SaveFocusedXYE(InputWorkspace=ws,
                              Filename=output_file_paths["tof_xye_filename"],
                              Append=False,
                              IncludeHeader=False)
        workspace_names = ws.name()
        ws = mantid.ConvertUnits(InputWorkspace=ws,
                                 OutputWorkspace=workspace_names,
                                 Target="dSpacing")
        output_list.append(ws)
        mantid.SaveNexus(Filename=output_file_paths["nxs_filename"],
                         InputWorkspace=ws,
                         Append=append)
        append = True
        index += 1

    save_range = 5
    for i in range(0, save_range):
        monitor_ws_name = output_file_paths["output_name"] + "_mod" + str(i +
                                                                          10)

        monitor_ws = calibrated_spectra[i + 9]
        to_save = mantid.CloneWorkspace(InputWorkspace=monitor_ws,
                                        OutputWorkspace=monitor_ws_name)

        to_save = mantid.ConvertUnits(InputWorkspace=to_save,
                                      OutputWorkspace=to_save,
                                      Target="TOF")
        splits = output_file_paths["tof_xye_filename"].split(".")
        tof_xye_name = splits[0] + "-" + str(i + 10) + "." + splits[1]
        mantid.SaveGSS(InputWorkspace=to_save,
                       Filename=output_file_paths["gss_filename"],
                       Append=True,
                       Bank=i + 5)
        mantid.SaveFocusedXYE(InputWorkspace=to_save,
                              Filename=tof_xye_name,
                              Append=False,
                              IncludeHeader=False)
        to_save = mantid.ConvertUnits(InputWorkspace=to_save,
                                      OutputWorkspace=monitor_ws_name,
                                      Target="dSpacing")
        mantid.SaveNexus(Filename=output_file_paths["nxs_filename"],
                         InputWorkspace=to_save,
                         Append=True)

        output_list.append(to_save)

    return output_list