def _get_rsr(self):
        """
        Get the relative spectral responses from file, find the bandname, and
        convert to the requested wave-spave (wavelength or wave number)

        """
        sensor = RelativeSpectralResponse(self.platform_name, self.instrument)

        if self.wavespace == WAVE_NUMBER:
            LOG.debug("Converting to wavenumber...")
            self.rsr, info = convert2wavenumber(sensor.rsr)
        else:
            self.rsr = sensor.rsr
            info = {'unit': sensor.unit, 'si_scale': sensor.si_scale}

        self._wave_unit = info['unit']
        self._wave_si_scale = info['si_scale']

        if isinstance(self.band, str):
            self.bandname = BANDNAMES.get(self.instrument, BANDNAMES['generic']).get(self.band, self.band)
        elif isinstance(self.band, Number):
            self.bandwavelength = self.band
            self.bandname = get_bandname_from_wavelength(self.instrument, self.band, self.rsr)

        self.wavelength_or_wavenumber = (self.rsr[self.bandname][self.detector][self.wavespace] *
                                         self._wave_si_scale)
        self.response = self.rsr[self.bandname][self.detector]['response']
        # Get the integral of the spectral response curve:
        self.rsr_integral = np.trapz(self.response, self.wavelength_or_wavenumber)
    def _get_rsr(self):
        """Get the relative spectral responses.

        Get the relative spectral responses from file, find the bandname, and
        convert to the requested wave-spave (wavelength or wave number)

        """
        sensor = RelativeSpectralResponse(self.platform_name, self.instrument)

        if self.wavespace == WAVE_NUMBER:
            LOG.debug("Converting to wavenumber...")
            self.rsr, info = convert2wavenumber(sensor.rsr)
        else:
            self.rsr = sensor.rsr
            info = {'unit': sensor.unit, 'si_scale': sensor.si_scale}

        self._wave_unit = info['unit']
        self._wave_si_scale = info['si_scale']

        if isinstance(self.band, str):
            self.bandname = BANDNAMES.get(self.instrument,
                                          BANDNAMES['generic']).get(
                                              self.band, self.band)
        elif isinstance(self.band, Number):
            self.bandwavelength = self.band
            self.bandname = get_bandname_from_wavelength(
                self.instrument, self.band, self.rsr)

        self.wavelength_or_wavenumber = (
            self.rsr[self.bandname][self.detector][self.wavespace] *
            self._wave_si_scale)
        self.response = self.rsr[self.bandname][self.detector]['response']
        # Get the integral of the spectral response curve:
        self.rsr_integral = np.trapz(self.response,
                                     self.wavelength_or_wavenumber)
示例#3
0
 def test_convert2wavenumber(self):
     """Testing the conversion of rsr from wavelength to wavenumber."""
     newrsr, info = utils.convert2wavenumber(TEST_RSR)
     unit = info['unit']
     self.assertEqual(unit, 'cm-1')
     self.assertTrue('wavenumber' in newrsr['20']['det-1'])
     self.assertFalse('wavelength' in newrsr['20']['det-1'])
     wvn_res = RESULT_RSR['20']['det-1']['wavenumber']
     wvn = newrsr['20']['det-1']['wavenumber']
     self.assertTrue(np.allclose(wvn_res, wvn))
示例#4
0
 def test_convert2wavenumber(self):
     """Testing the conversion of rsr from wavelength to wavenumber
     """
     newrsr, info = utils.convert2wavenumber(TEST_RSR)
     unit = info['unit']
     self.assertEqual(unit, 'cm-1')
     self.assertTrue('wavenumber' in newrsr['20']['det-1'])
     self.assertFalse('wavelength' in newrsr['20']['det-1'])
     wvn_res = RESULT_RSR['20']['det-1']['wavenumber']
     wvn = newrsr['20']['det-1']['wavenumber']
     self.assertTrue(np.allclose(wvn_res, wvn))
示例#5
0
    def get_rsr(self):
        """Get all spectral responses for the sensor"""
        from pyspectral.utils import convert2wavenumber
        from pyspectral.rsr_reader import RelativeSpectralResponse

        sensor = RelativeSpectralResponse(self.platform_name,
                                          self.instrument)
        LOG.debug("Wavenumber? %s", str(self.wavespace))
        if self.wavespace == WAVE_NUMBER:
            LOG.debug("Converting to wavenumber...")
            self.rsr, info = convert2wavenumber(sensor.rsr)
        else:
            self.rsr = sensor.rsr
            info = {'unit': sensor.unit, 'si_scale': sensor.si_scale}

        self._wave_unit = info['unit']
        self._wave_si_scale = info['si_scale']
    def get_rsr(self):
        """Get all spectral responses for the sensor"""

        from pyspectral.utils import convert2wavenumber
        from pyspectral.rsr_reader import RelativeSpectralResponse

        sensor = RelativeSpectralResponse(self.platform, self.satnumber,
                                          self.instrument)
        LOG.debug("Wavenumber? " + str(self.wavespace))
        if self.wavespace == WAVE_NUMBER:
            LOG.debug("Converting to wavenumber...")
            self.rsr, info = convert2wavenumber(sensor.rsr)
        else:
            self.rsr = sensor.rsr
            info = {'unit': sensor.unit, 'si_scale': sensor.si_scale}

        self._wave_unit = info['unit']
        self._wave_si_scale = info['si_scale']
示例#7
0
    def convert(self):
        """Convert spectral response functions from wavelength to wavenumber"""

        from pyspectral.utils import convert2wavenumber
        if self._wavespace == WAVL:
            rsr, info = convert2wavenumber(self.rsr)
            for band in rsr.keys():
                for det in rsr[band].keys():
                    self.rsr[band][det]['wavenumber'] = rsr[
                        band][det]['wavenumber']
                    self.rsr[band][det]['response'] = rsr[
                        band][det]['response']
                    self.unit = info['unit']
                    self.si_scale = info['si_scale']
            self._wavespace = WAVN
        else:
            raise NotImplementedError("Conversion from wavenumber to " +
                                      "wavelength not supported yet")
示例#8
0
 def convert(self):
     """Convert spectral response functions from wavelength to wavenumber."""
     if self._wavespace == WAVE_LENGTH:
         rsr, info = convert2wavenumber(self.rsr)
         for band in rsr.keys():
             for det in rsr[band].keys():
                 self.rsr[band][det][WAVE_NUMBER] = rsr[
                     band][det][WAVE_NUMBER]
                 self.rsr[band][det]['response'] = rsr[
                     band][det]['response']
                 self.unit = info['unit']
                 self.si_scale = info['si_scale']
         self._wavespace = WAVE_NUMBER
         for band in rsr.keys():
             for det in rsr[band].keys():
                 self.rsr[band][det]['central_wavenumber'] = \
                     get_central_wave(self.rsr[band][det][WAVE_NUMBER], self.rsr[band][det]['response'])
                 del self.rsr[band][det][WAVE_LENGTH]
     else:
         errmsg = "Conversion from {wn} to {wl} not supported yet".format(wn=WAVE_NUMBER, wl=WAVE_LENGTH)
         raise NotImplementedError(errmsg)
示例#9
0
    def convert(self):
        """Convert spectral response functions from wavelength to wavenumber"""

        from pyspectral.utils import (convert2wavenumber, get_central_wave)
        if self._wavespace == WAVE_LENGTH:
            rsr, info = convert2wavenumber(self.rsr)
            for band in rsr.keys():
                for det in rsr[band].keys():
                    self.rsr[band][det][WAVE_NUMBER] = rsr[
                        band][det][WAVE_NUMBER]
                    self.rsr[band][det]['response'] = rsr[
                        band][det]['response']
                    self.unit = info['unit']
                    self.si_scale = info['si_scale']
            self._wavespace = WAVE_NUMBER
            for band in rsr.keys():
                for det in rsr[band].keys():
                    self.rsr[band][det]['central_wavenumber'] = \
                        get_central_wave(self.rsr[band][det][WAVE_NUMBER], self.rsr[band][det]['response'])
                    del self.rsr[band][det][WAVE_LENGTH]
        else:
            errmsg = "Conversion from {wn} to {wl} not supported yet".format(wn=WAVE_NUMBER, wl=WAVE_LENGTH)
            raise NotImplementedError(errmsg)