def process_directory(params): #parameters for processing input_dir = params["input_directory"] ws = params["subset_wavelength_range"][0] we = params["subset_wavelength_range"][1] #read the spectrums extension = {'asd': 1, 'ASD': 1} spec_files = [os.path.join(input_dir, f) for f in os.listdir(input_dir) if get_extension(f) in extension] raw_specs = [SdalReader().read_spectrum(f) for f in spec_files] if len(raw_specs) == 0: return print("Data directory: {}".format(input_dir)) print(" Read {} {} files".format(len(raw_specs), extension)) #perform jump correction jumpcorrector = JumpCorrector(params["jumpcorrection_wavelengths"], params["jumpcorrection_stablezone"]) jc_specs = [jumpcorrector.correct(s) for s in raw_specs] print(" Jump corrected {} spectrums(s)".format(len(jc_specs))) #separate into green vegetation and non-green vegetation spectra gvd = GreenVegDetector() raw_white_specs, raw_target_specs = [], [] jc_white_specs, jc_target_specs = [], [] ndvis, reflectance_ranges = [], [] for (raw, jc) in zip(raw_specs, jc_specs): (status, ndvi, reflectance_range) = gvd.is_green_vegetation(jc) ndvis.append(ndvi) reflectance_ranges.append(reflectance_range) if status: raw_target_specs.append(raw) jc_target_specs.append(jc) else: raw_white_specs.append(raw) jc_white_specs.append(jc) print(" # white spectra: {}".format(len(jc_white_specs))) print(" # target spectra: {}".format(len(jc_target_specs))) #subset to desired wavelength range #do this for the jc_target_specs only proc_target_specs = [s.wavelength_subset(ws, we) for s in jc_target_specs] print(" Subsetted spectra to range: {}, {}".format(ws, we)) #create SpectrumGroup object for raw_target_specs raw_target_sg = SpectrumGroup() raw_target_sg.group(raw_target_specs, "raw_target") raw_target_sg.save_dataframe(input_dir) raw_target_sg.save_plots(input_dir) #create SpectrumGroup object for raw_white_specs raw_white_sg = SpectrumGroup() raw_white_sg.group(raw_white_specs, "raw_white") raw_white_sg.save_dataframe(input_dir) raw_white_sg.save_plots(input_dir) #create SpectrumGroup object for proc_target_specs proc_target_sg = SpectrumGroup() proc_target_sg.group(proc_target_specs, "proc_target") proc_target_sg.save_dataframe(input_dir) proc_target_sg.save_plots(input_dir)
def process_directory(params): #parameters for processing input_dir = params["input_directory"] ws = params["subset_wavelength_range"][0] we = params["subset_wavelength_range"][1] #read the spectrums extension = {'asd': 1, 'ASD': 1} spec_files = [ os.path.join(input_dir, f) for f in os.listdir(input_dir) if get_extension(f) in extension ] raw_specs = [SdalReader().read_spectrum(f) for f in spec_files] if len(raw_specs) == 0: return print("Data directory: {}".format(input_dir)) print(" Read {} {} files".format(len(raw_specs), extension)) #perform jump correction jumpcorrector = JumpCorrector(params["jumpcorrection_wavelengths"], params["jumpcorrection_stablezone"]) jc_specs = [jumpcorrector.correct(s) for s in raw_specs] print(" Jump corrected {} spectrums(s)".format(len(jc_specs))) #separate into green vegetation and non-green vegetation spectra gvd = GreenVegDetector() raw_white_specs, raw_target_specs = [], [] jc_white_specs, jc_target_specs = [], [] ndvis, reflectance_ranges = [], [] for (raw, jc) in zip(raw_specs, jc_specs): (status, ndvi, reflectance_range) = gvd.is_green_vegetation(jc) ndvis.append(ndvi) reflectance_ranges.append(reflectance_range) if status: raw_target_specs.append(raw) jc_target_specs.append(jc) else: raw_white_specs.append(raw) jc_white_specs.append(jc) print(" # white spectra: {}".format(len(jc_white_specs))) print(" # target spectra: {}".format(len(jc_target_specs))) #subset to desired wavelength range #do this for the jc_target_specs only proc_target_specs = [s.wavelength_subset(ws, we) for s in jc_target_specs] print(" Subsetted spectra to range: {}, {}".format(ws, we)) #create SpectrumGroup object for raw_target_specs raw_target_sg = SpectrumGroup() raw_target_sg.group(raw_target_specs, "raw_target") raw_target_sg.save_dataframe(input_dir) raw_target_sg.save_plots(input_dir) #create SpectrumGroup object for raw_white_specs raw_white_sg = SpectrumGroup() raw_white_sg.group(raw_white_specs, "raw_white") raw_white_sg.save_dataframe(input_dir) raw_white_sg.save_plots(input_dir) #create SpectrumGroup object for proc_target_specs proc_target_sg = SpectrumGroup() proc_target_sg.group(proc_target_specs, "proc_target") proc_target_sg.save_dataframe(input_dir) proc_target_sg.save_plots(input_dir)