Exemplo n.º 1
0
    def _load_and_sum_runs(self, spectra):
        """Load the input set of runs & sum them if there
        is more than one.
            @param spectra :: The list of spectra to load
            @returns a tuple of length 2 containing (main_detector_ws, monitor_ws)
        """
        isis = config.getFacility("ISIS")
        inst_prefix = isis.instrument("VESUVIO").shortName()

        runs = self._get_runs()

        self.summed_ws, self.summed_mon = "__loadraw_evs", "__loadraw_evs_monitors"
        for index, run in enumerate(runs):
            run = inst_prefix + str(run)
            if index == 0:
                out_name, out_mon = SUMMED_WS, SUMMED_MON
            else:
                out_name, out_mon = SUMMED_WS + 'tmp', SUMMED_MON + 'tmp'
            # Load data
            LoadRaw(Filename=run,
                    SpectrumList=spectra,
                    OutputWorkspace=out_name,
                    LoadMonitors='Exclude',
                    EnableLogging=_LOGGING_)
            LoadRaw(Filename=run,
                    SpectrumList=self._mon_spectra,
                    OutputWorkspace=out_mon,
                    EnableLogging=_LOGGING_)
            if index > 0:  # sum
                Plus(LHSWorkspace=SUMMED_WS,
                     RHSWorkspace=out_name,
                     OutputWorkspace=SUMMED_WS,
                     EnableLogging=_LOGGING_)
                Plus(LHSWorkspace=SUMMED_MON,
                     RHSWorkspace=out_mon,
                     OutputWorkspace=SUMMED_MON,
                     EnableLogging=_LOGGING_)
                DeleteWorkspace(out_name, EnableLogging=_LOGGING_)
                DeleteWorkspace(out_mon, EnableLogging=_LOGGING_)

        CropWorkspace(Inputworkspace=SUMMED_WS,
                      OutputWorkspace=SUMMED_WS,
                      XMax=self._tof_max,
                      EnableLogging=_LOGGING_)
        CropWorkspace(Inputworkspace=SUMMED_MON,
                      OutputWorkspace=SUMMED_MON,
                      XMax=self._mon_tof_max,
                      EnableLogging=_LOGGING_)
        return mtd[SUMMED_WS], mtd[SUMMED_MON]
Exemplo n.º 2
0
 def monitorTransfit(self, files, foilType, divE):
     isFirstFile = True
     isSingleFile = len(files) == 1
     firstFileName = ""
     for file in files:
         discard, fileName = path.split(file)
         fnNoExt = path.splitext(fileName)[0]
         if isFirstFile:
             firstFileName = fnNoExt
         fileName_Raw = fnNoExt + '_raw'
         fileName_3 = fnNoExt + '_3'
         LoadRaw(Filename=file, OutputWorkspace=fileName_Raw)
         CropWorkspace(InputWorkspace=fileName_Raw, OutputWorkspace=fileName_Raw, XMin=100, XMax=19990)
         NormaliseByCurrent(InputWorkspace=fileName_Raw, OutputWorkspace=fileName_Raw)
         ExtractSingleSpectrum(InputWorkspace=fileName_Raw, OutputWorkspace=fileName_3, WorkspaceIndex=3)
         DeleteWorkspace(fileName_Raw)
         ConvertUnits(InputWorkspace=fileName_3, Target='Energy', OutputWorkspace=fileName_3)
         self.TransfitRebin(fileName_3, fileName_3, foilType, divE)
         if not isFirstFile:
             Plus(LHSWorkspace=firstFileName + '_3', RHSWorkspace=fileName_3, OutputWorkspace=firstFileName + '_3')
             DeleteWorkspace(fileName_3)
         else:
             isFirstFile = False
     if isSingleFile:
         RenameWorkspace(InputWorkspace=firstFileName + '_3', OutputWorkspace=firstFileName + '_monitor')
     else:
         noFiles = len(files) ** (-1)
         CreateSingleValuedWorkspace(OutputWorkspace='scale', DataValue=noFiles)
         Multiply(LHSWorkspace=firstFileName + '_3', RHSWorkspace='scale',
                  OutputWorkspace=firstFileName + '_monitor')
         DeleteWorkspace('scale')
         DeleteWorkspace(firstFileName + '_3')
    def runTest(self):
        ws = LoadRaw(Filename='WISH00038237.raw', OutputWorkspace='38237')
        ws = ConvertUnits(ws, 'dSpacing', OutputWorkspace='38237')
        UB = np.array([[-0.00601763,  0.07397297,  0.05865706],
                       [ 0.05373321,  0.050198,   -0.05651455],
                       [-0.07822144,  0.0295911,  -0.04489172]])

        SetUB(ws, UB=UB)

        self._peaks = PredictPeaks(ws, WavelengthMin=0.1, WavelengthMax=100,
                                   OutputWorkspace='peaks')
        # We specifically want to check peak -5 -1 -7 exists, so filter for it
        self._filtered = FilterPeaks(self._peaks, "h^2+k^2+l^2", 75, '=',
                                     OutputWorkspace='filtered')

        SaveIsawPeaks(self._peaks, Filename='WISHSXReductionPeaksTest.peaks')
def load_data_and_normalise(filename,
                            spectrumMin=1,
                            spectrumMax=19461,
                            outputWorkspace="sample"):
    """
    Function to load in raw data, crop and normalise
    :param filename: file path to .raw
    :param spectrumMin: min spec to load (default incl. all monitors)
    :param spectrumMax: max spec to load (default includes only bank 1)
    :param outputWorkspace: name of output workspace (can be specified to stop workspaces being overwritten)
    :return: normalised and cropped data with xunit wavelength (excl. monitors)
    """
    sample, mon = LoadRaw(Filename=filename,
                          SpectrumMin=spectrumMin,
                          SpectrumMax=spectrumMax,
                          LoadMonitors="Separate",
                          OutputWorkspace=outputWorkspace)
    for ws in [sample, mon]:
        CropWorkspace(InputWorkspace=ws,
                      OutputWorkspace=ws,
                      XMin=6000,
                      XMax=99000)
        NormaliseByCurrent(InputWorkspace=ws, OutputWorkspace=ws)
        ConvertUnits(InputWorkspace=ws,
                     OutputWorkspace=ws,
                     Target='Wavelength')
    NormaliseToMonitor(InputWorkspace=sample,
                       OutputWorkspace=sample,
                       MonitorWorkspaceIndex=3,
                       MonitorWorkspace=mon)
    ReplaceSpecialValues(InputWorkspace=sample,
                         OutputWorkspace=sample,
                         NaNValue=0,
                         InfinityValue=0)
    CropWorkspace(InputWorkspace=sample,
                  OutputWorkspace=sample,
                  XMin=0.8,
                  XMax=9.3)
    return sample
Exemplo n.º 5
0
    def runTest(self):
        config["default.instrument"] = "LOQ"
        LOQ()
        MaskFile('MASK.094AA')
        Gravity(False)
        Set2D()
        Detector("main-detector-bank")
        Sample = LoadRaw('54431.raw')
        AssignSample(Sample, False)
        Can = LoadRaw('54432.raw')
        AssignCan(Can, False)
        LimitsWav(3, 4, 0.2, 'LIN')
        TransFit('LOG', 3.0, 8.0)
        Sample_Trans = LoadRaw('54435.raw')
        Sample_Direct = LoadRaw('54433.raw')
        TransmissionSample(Sample_Trans, Sample_Direct, False)
        Can_Trans = LoadRaw('54434.raw')
        Can_Direct = LoadRaw('54433.raw')
        TransmissionCan(Can_Trans, Can_Direct, False)

        #run the reduction
        WavRangeReduction(3, 4, False, '_suff')
Exemplo n.º 6
0
    def runTest(self):
        config["default.instrument"] = "LOQ"
        LOQ()

        Set1D()
        Detector("rear-detector")
        MaskFile('MASK.094AA')
        Gravity(False)
        Sample = LoadRaw('54431.raw')
        Trans_Sample = LoadRaw('54435.raw')
        Trans_Direct = LoadRaw('54433.raw')
        Can = LoadRaw('54432.raw')
        CanTrans_Sample = LoadRaw('54434.raw')
        CanTrans_Direct = LoadRaw('54433.raw')

        SetCentre(324.765, 327.670)

        AssignSample(Sample, False)
        TransmissionSample(Trans_Sample, Trans_Direct, False)
        AssignCan(Can, False)
        TransmissionCan(CanTrans_Sample, CanTrans_Direct, False)

        WavRangeReduction(3, 9, DefaultTrans)
Exemplo n.º 7
0
    def _exec_single_foil_state_mode(self):
        """
        Execution path when a single foil state is requested
        """
        runs = self._get_runs()
        if len(runs) > 1:
            raise RuntimeError(
                "Single soil state mode does not currently support summing multiple files"
            )

        isis = config.getFacility("ISIS")
        inst_prefix = isis.instrument("VESUVIO").shortName()

        try:
            run = int(runs[0])
            run_str = inst_prefix + runs[0]
        except ValueError:
            run_str = runs[0]

        all_spectra = [item for sublist in self._spectra for item in sublist]
        LoadRaw(Filename=run_str,
                OutputWorkspace=SUMMED_WS,
                SpectrumList=all_spectra,
                EnableLogging=_LOGGING_)
        raw_group = mtd[SUMMED_WS]
        self._nperiods = raw_group.size()
        first_ws = raw_group[0]
        foil_out = WorkspaceFactory.create(first_ws)
        x_values = first_ws.readX(0)
        self.foil_out = foil_out

        foil_map = SpectraToFoilPeriodMap(self._nperiods)
        for ws_index, spectrum_no in enumerate(all_spectra):
            self._set_spectra_type(spectrum_no)
            foil_out_periods, foil_thin_periods, foil_thick_periods = self._get_foil_periods(
            )

            if self._diff_opt == "FoilOut":
                raw_grp_indices = foil_map.get_indices(spectrum_no,
                                                       foil_out_periods)
            elif self._diff_opt == "FoilIn":
                indices_thin = foil_map.get_indices(spectrum_no,
                                                    foil_thin_periods)
                indices_thick = foil_map.get_indices(spectrum_no,
                                                     foil_thin_periods)
                raw_grp_indices = indices_thin + indices_thick
            elif self._diff_opt == "FoilInOut":
                raw_grp_indices = range(0, self._nperiods)
            else:
                raise RuntimeError("Unknown single foil mode: %s." %
                                   (self._diff_opt))

            dataY = foil_out.dataY(ws_index)
            dataE = foil_out.dataE(ws_index)
            for group_index in raw_grp_indices:
                dataY += raw_group[group_index].readY(ws_index)
                dataE += np.square(raw_group[group_index].readE(ws_index))
            np.sqrt(dataE, dataE)
            foil_out.setX(ws_index, x_values)

        DeleteWorkspace(Workspace=SUMMED_WS)
        self._store_results()
Exemplo n.º 8
0
 def test_get_bin_indices_returns_a_numpy_ndarray_with_monitors(self):
     ConfigService.Instance().setString("default.facility", "ISIS")
     ws = LoadRaw("GEM40979", SpectrumMin=1, SpectrumMax=102)
     bin_indices = funcs.get_bin_indices(ws)
     self.assertTrue(isinstance(bin_indices, np.ndarray))
     ConfigService.Instance().setString("default.facility", " ")
Exemplo n.º 9
0
 def test_get_bin_indices_returns_a_numpy_ndarray_with_monitors(self):
     ws = LoadRaw("GEM40979", SpectrumMin=1, SpectrumMax=102)
     bin_indices = funcs.get_bin_indices(ws)
     self.assertTrue(isinstance(bin_indices, np.ndarray))