Beispiel #1
0
 def augment_spectra(self, X):
     
     # Add noise to spectra if desired
     if self.max_added_noise is not None:
         X = add_noise(X, self.max_added_noise)
        
     X = np.asarray(X)
     
     # Add zeroes according to a global error array
     if self.global_err_mask is not None:
         X = apply_global_error_mask(X, self.global_err_mask)
     
     # Zero out flux values below and above certain thresholds
     if self.max_flux_value is not None:
         X[X > self.max_flux_value]=0
     if self.min_flux_value is not None:
         X[X < self.min_flux_value]=0
     
     # Inject zeros into the spectrum
     if self.max_fraction_zeros is not None:
         X = add_zeros(X, self.max_num_zeros)
             
     if self.telluric_mask_file is not None and self.telluric_mask is None:
         if self.wav is not None:
             self.telluric_mask = telluric_mask(self.telluric_mask_file, self.wav)
             X *= self.telluric_mask
         else:
             raise ValueError('Must supply wavelength array if masking tellurics!')
     elif self.telluric_mask is not None:
         X *= self.telluric_mask
         
     return X
Beispiel #2
0
    def __init__(self, indices, data_filename, targetname, mu, sigma, spec_name, min_flux_value=0, 
                 max_flux_value=None, max_added_noise=None, max_fraction_zeros=None,
                 global_err_mask=None, line_regions=None, segments_step=None, wav=None, telluric_mask_file=None,
                 batch_size=32):
        'Initialization'
        
        # Parameters for loading data
        self.data_filename = data_filename
        self.spec_name = spec_name
        self.targetname = targetname
        self.mu = mu
        self.sigma = sigma
        self.batch_size = batch_size
        self.indices = indices

        # Data augmentation stuff
        self.max_added_noise = max_added_noise
        self.max_fraction_zeros = max_fraction_zeros
        #self.err_indices = err_indices
        self.global_err_mask = global_err_mask
        self.line_regions = line_regions
        self.segments_step = segments_step
        self.min_flux_value = min_flux_value
        self.max_flux_value = max_flux_value
        self.wav = wav
        self.max_num_zeros = int(len(wav)*max_fraction_zeros)
        
        # Telluric mask
        self.telluric_mask_file = telluric_mask_file
        self.telluric_mask = None
        if self.telluric_mask_file is not None:
            if self.wav is not None:
                self.telluric_mask = telluric_mask(self.telluric_mask_file, self.wav)
            else:
                raise ValueError('Must supply wavelength array if masking tellurics!')
        
        # Generator stuff
        self.shuffle = True
        self.on_epoch_end()