Example #1
0
    def __init__(self, sub_configdic: dict = None):

        self._wavelength_file_type = str
        self.wavelength_file = None

        self._integrations_type = int
        self.integrations = None
        """Number of integrations comprising the measurement.  
        Noise diminishes with the square root of this number.  Applicable in concert with parametric_noise_file 
        or pushbroom_noise_file"""

        self._unknowns_type = InstrumentUnknowns
        self.unknowns: InstrumentUnknowns = None

        self._fast_resample_type = bool
        self.fast_resample = True
        """bool: Approximates a complete resampling by a convolution with a uniform FWHM."""

        self._statevector_type = StateVectorConfig
        self.statevector: StateVectorConfig = StateVectorConfig({})

        self._SNR_type = float
        self.SNR = None
        """float: We have several ways to define the instrument noise.  The simplest model is based on a single uniform 
        SNR number that is signal-independnet and applied uniformly to all wavelengths"""

        self._parametric_noise_file_type = str
        self.parametric_noise_file = None
        """str: We have several ways to define the instrument noise.
        The second option is a parametric, signal- and wavelength-
        dependent noise function. This is given by a four-column
        ASCII Text file.  Rows represent, respectively, the reference
        wavelength, and coefficients A, B, and C that define the
        noise-equivalent radiance via NeDL = A * sqrt(B+L) + C
        For the actual radiance L."""

        self._pushbroom_noise_file_type = str
        self.pushbroom_noise_file = None
        """str: We have several ways to define the instrument noise.
        The third option is a full pushbroom noise model that
        specifies noise columns and covariances independently for
        each cross-track location via an ENVI-format binary data file."""

        self._nedt_noise_file_type = str
        self.nedt_noise_file = None
        """str: We have several ways to define the instrument noise.  The last is NEDT noise"""

        self.set_config_options(sub_configdic)

        # If necessary, initialize some blank options
        if self.statevector is None:
            self.statevector = StateVectorConfig({})
Example #2
0
    def __init__(self, sub_configdic: dict = None):

        self._statevector_type = StateVectorConfig
        self.statevector: StateVectorConfig = StateVectorConfig({})

        self._lut_grid_type = OrderedDict
        self.lut_grid = None

        self._unknowns_type = RadiativeTransferUnknownsConfig
        self.unknowns: RadiativeTransferUnknownsConfig = None

        self.set_config_options(sub_configdic)

        # sort lut_grid
        for key, value in self.lut_grid.items():
            self.lut_grid[key] = sorted(self.lut_grid[key])
        self.lut_grid = OrderedDict(
            sorted(self.lut_grid.items(), key=lambda t: t[0]))

        # Hold this parameter for after the config_options, as radiative_transfer_engines
        # have a special (dynamic) load
        self._radiative_transfer_engines_type = list()
        self.radiative_transfer_engines = []

        self._set_rt_config_options(
            sub_configdic['radiative_transfer_engines'])
Example #3
0
    def __init__(self, sub_configdic: dict = None):

        self._topography_model_type = bool
        self.topography_model = False
        """ 
        Flag to indicated whether to use atopographic-flux (topoflux)
        implementation of the forward model. Only currently functional
        with multipart MODTRAN
        """

        self._statevector_type = StateVectorConfig
        self.statevector: StateVectorConfig = StateVectorConfig({})

        self._lut_grid_type = OrderedDict
        self.lut_grid = None

        self._unknowns_type = RadiativeTransferUnknownsConfig
        self.unknowns: RadiativeTransferUnknownsConfig = None

        self.set_config_options(sub_configdic)

        # sort lut_grid
        for key, value in self.lut_grid.items():
            self.lut_grid[key] = sorted(self.lut_grid[key])
        self.lut_grid = OrderedDict(sorted(self.lut_grid.items(), key=lambda t: t[0]))

        # Hold this parameter for after the config_options, as radiative_transfer_engines
        # have a special (dynamic) load
        self._radiative_transfer_engines_type = list()
        self.radiative_transfer_engines = []

        self._interpolator_style_type = str
        self.interpolator_style = 'nds-1'
        """str: Style of interpolation.  Options are rd for scipy RegularGridInterpolator or nds-k 
        for ndsplines with k degrees"""

        self._set_rt_config_options(sub_configdic['radiative_transfer_engines'])