コード例 #1
0
def test_slices():
    assert slices_config('[0:10, 20:30], [30, 40:50], [13::], [::-1]') == [
        (slice(0, 10, None), slice(20, 30, None)),
        (slice(None, 30, None), slice(40, 50, None)), (slice(13, None,
                                                             None), ),
        (slice(None, None, -1), )
    ]
コード例 #2
0
ファイル: config.py プロジェクト: pablogsal/fits_reduce
    def _load_reducer_vars(self):
        """
        Reads config file to the reducer script.
        """
        # [paths] - MANDATORY
        # strings
        self.input_extension = self.get('paths', 'input_extension')
        # booleans
        for name in ['save_masterdark', 'save_masterflat']:
            self.__setattr__(name, self.getboolean('paths', name))
        # [keywords] - MANDATORY (except for units)
        # strings
        for name in ['exposure_type', 'expousure_time', 'filter', 'observed_date', 'date_format', 'dark_type_id',
                     'bias_type_id', 'flat_type_id', 'science_type_id']:
            self.__setattr__(name, self.get('keywords', name))
        # units
        # If not defined, Unit will be dimensionless.
        # Images units: 'adu', 'electron', 'photon' and 'dimensionless_unscaled' (if unknown)
        try:
            unit = self.get('keywords', 'image_units')
            if unit not in self._permitted_image_units:
                raise ConfigError('image_units must be one of these: {0}'.format(self._permitted_image_units))
            self.image_units = unit
        except NoOptionError:
            self.image_units = units.dimensionless_unscaled
        # [overscan] - OPTIONAL
        if 'overscan' in self.sections():
            self.subtract_overscan = True
            self.overscan_regions = slices_config(self.get('overscan', 'overscan_regions'))
            self.science_regions = slices_config(self.get('overscan', 'science_regions'))
            self.overscan_axis = self.getint('overscan', 'overscan_axis')

            # Sanity check if number overscan and science regions is the same.
            if len(self.science_regions) != len(self.overscan_regions):
                raise ConfigError('science_regions and overscan_regions must have the same shape!')  # TODO: test

            # Convert the science regions to arrays with index numbers.
            self.science_trim = np.array([], dtype=int)
            for science_slice in self.science_regions:
                self.science_trim = np.append(self.science_trim, np.r_[science_slice])
            self.science_trim = np.sort(self.science_trim)
            if self.science_trim.shape != np.unique(self.science_trim).shape:
                raise ConfigError('There are two science regions that intersect each other.')  # TODO: test
        else:
            self.subtract_overscan = False
コード例 #3
0
ファイル: test_slices.py プロジェクト: pablogsal/fits_reduce
def test_slices():
    assert slices_config('[0:10, 20:30], [30, 40:50], [13::], [::-1]') == [(slice(0, 10, None), slice(20, 30, None)),
                                                                           (slice(None, 30, None), slice(40, 50, None)),
                                                                           (slice(13, None, None),),
                                                                           (slice(None, None, -1),)]