def evaluate_spectra(config, logger=logging): ref = parse_ibsen_file(config['Data']['reference']) tar = parse_ibsen_file(config['Data']['target']) if tar['UTCTime']: logger.warning("Config UTCTime: %s. New UTCTime %s from IbsenFile." % (config['Processing']['utc_time'], tar['UTCTime'])) config['Processing']['utc_time'] = dict() config['Processing']['utc_time']['tar'] = tar['UTCTime'] config['Processing']['utc_time']['ref'] = ref['UTCTime'] logger.info("Tar Date: %s " % config['Processing']['utc_time']['tar']) logger.info("Ref Date: %s " % config['Processing']['utc_time']['ref']) logger.info("GPS coords (lat, lon) %s %s" % (config['Processing']['gps_coords'][0], config['Processing']['gps_coords'][1])) logger.info("Files\n \t ref: %s \n \t tar: %s \n" %(config['Data']['reference'], config['Data']['target'])) Data = DataProcess(config['Fitting']['model'], logger)() data_dict = Data.process(ref, tar) plot_meas(tar, ref) if config['Processing']['logging_level'] == 'DEBUG': plot_used_irradiance_and_reflectance(tar, ref, data_dict) WeatherParams = WeatherAtmosphereParameter(logger, config, ref['wave']) aero = Aerosol_Retrievel(WeatherParams, config['Fitting'], data_dict, logger) result, param_dict = aero.getParams() logger.info("%s \n" % result.fit_report()) logger.info("%s \n" % result.success) if config['Processing']['logging_level'] == 'DEBUG': plot_fitted_reflectance(result, param_dict, data_dict) return param_dict, result
def sort_ibsen_by_int(dirname): """ marshal, xml, or json pickel packages - todo""" """ Return: caldict: cal_dict.keys() = [IntTime1, IntTime2, ..] cal_dict[IntTime*].keys() = ['darkcurrent', 'reference'] cal_dict[IntTime*][Type].keys() = ['num_of_meas', 'data_sample_std', 'data_mean', 'data', 'start_data_index', 'data_std', 'wave', 'UTCTime', 'darkcurrent_corrected', 'tdata', 'IntTime', 'Type'] """ cal_dict = {} for file_ in glob.iglob('%s*.asc' % dirname): ibsen_dict = ip.parse_ibsen_file(file_) # Skip saturated pixel ibsen_dict['wave'] = ibsen_dict['wave'][50:] ibsen_dict['mean'] = ibsen_dict['mean'][50:] ibsen_dict['tdata'] = ibsen_dict['tdata'][:, 50:] ibsen_dict['data'] = np.transpose(ibsen_dict['tdata']) file_ = filter(None, file_.split(dirname))[0] file_key = filter(None, re.split('[0-9]{3,}\.asc', file_))[0] try: cal_dict[ibsen_dict['IntTime']][file_key]= ibsen_dict except KeyError: cal_dict[ibsen_dict['IntTime']] = dict() cal_dict[ibsen_dict['IntTime']][file_key] = ibsen_dict return cal_dict
def temperature(): FONTSTYLE = "serif" FONTSIZE = 12 hfont = {"family": FONTSTYLE, "fontsize": FONTSIZE} fontP = FontProperties() fontP.set_family(FONTSTYLE) fontP.set_size("small") gs = gridspec.GridSpec(1, 1) ax1 = plt.subplot(gs[0, :]) winter = "/home/jana_jo/DLR/Codes/measurements/LMU/291116_LMU/" summer = "/home/jana_jo/DLR/Codes/measurements/Roof_DLR/2016_09_14RoofDLR/" import glob file_prefixes = ["darkcurrent"] files_winter = sorted([file_ for file_ in glob.iglob(winter + "%s*" % file_prefixes[0])])[5:7] files_summer = sorted([file_ for file_ in glob.iglob(summer + "%s*" % file_prefixes[0])])[3:5] files_winter = [files_winter[0]] for win in files_winter: print(win) win_dict = ip.parse_ibsen_file(win) ax1.plot( win_dict["wave"][50:], win_dict["mean"][50:], color="darkblue", label="-3 $^{\circ}$C" % win_dict["IntTime"] ) files_summer = [files_summer[0]] for sum in files_summer: print(sum) sum_dict = ip.parse_ibsen_file(sum) ax1.plot( sum_dict["wave"][50:], sum_dict["mean"][50:], color="sandybrown", label="30 $^{\circ}$C" % sum_dict["IntTime"], ) assert win_dict["IntTime"] == sum_dict["IntTime"] ax1.set_ylabel("DN [a.u.]", **hfont) ax1.set_ylabel("DN [a.u.]", **hfont) ax1.set_xlabel("Wavelength [nm]", **hfont) ax1.legend(loc="best", prop=fontP, title=r" %s ms Integrationtime at temperature:" % win_dict["IntTime"]) plt.setp(ax1.get_legend().get_title(), fontsize="small", family=FONTSTYLE) plt.tight_layout() plt.show()
def calibrate_meas(data_file, dark_file, nonlinear_correction_file, response_file): import matplotlib.pyplot as plt DN, correction_values = read_nonlinear_correction_file(nonlinear_correction_file) response = np.genfromtxt(response_file, skip_header=1, delimiter=',') wave = response[:,0] scale_factors = response[:,1] data_dict = parse_ibsen_file(data_file) dark_dict = parse_ibsen_file(dark_file) ic.subtract_dark_from_mean(dark_dict, data_dict) assert data_dict['darkcurrent_corrected'] == True data_dict['tdata'] = data_dict['tdata'] / np.interp(data_dict['tdata'], DN, correction_values) data_dict['data'] = np.transpose(data_dict['tdata']) data_dict['tdata'] = data_dict['tdata'] / data_dict['IntTime'] data_dict['mean'] = data_dict['mean'] / np.interp(data_dict['mean'], DN, correction_values) data_dict['mean'] = data_dict['mean'] / data_dict['IntTime'] data_dict['data'] = np.transpose(data_dict['tdata']) data_dict['tdata']= np.divide(data_dict['tdata'] , np.interp(data_dict['wave'], wave, scale_factors)) data_dict['data'] = np.transpose(data_dict['tdata']) return data_dict
def temperature(): FONTSTYLE = 'serif' FONTSIZE = 12 hfont = {'family':FONTSTYLE, 'fontsize': FONTSIZE} fontP = FontProperties() fontP.set_family(FONTSTYLE) fontP.set_size('small') gs = gridspec.GridSpec(1, 1) ax1 = plt.subplot(gs[0, :]) winter = '/home/joanna/DLR/Codes/measurements/measurements/LMU/291116_LMU/' summer = '/home/joanna/DLR/Codes/measurements/measurements/Roof_DLR/2016_09_14RoofDLR/' import glob file_prefixes = ['darkcurrent'] files_winter = sorted([file_ for file_ in glob.iglob(winter + '%s*' % file_prefixes[0])])[5:7] files_summer = sorted([file_ for file_ in glob.iglob(summer + '%s*' % file_prefixes[0])])[3:5] files_winter = [files_winter[0]] for win in files_winter: print(win) win_dict = ip.parse_ibsen_file(win) ax1.plot(win_dict['wave'][50:], win_dict['mean'][50:],color='darkblue', label='-3 $^{\circ}$C' % win_dict['IntTime']) files_summer = [files_summer[0]] for sum in files_summer: print(sum) sum_dict = ip.parse_ibsen_file(sum) ax1.plot(sum_dict['wave'][50:], sum_dict['mean'][50:],color='sandybrown', label='30 $^{\circ}$C' % sum_dict['IntTime']) assert win_dict['IntTime'] == sum_dict['IntTime'] ax1.set_ylabel('Signal [DN]', **hfont) ax1.set_ylabel('Signal [DN]', **hfont) ax1.set_xlabel(r'Wavelength $\lambda$ [nm]', **hfont) ax1.legend(loc='best', prop=fontP, title=r' %s ms Integrationtime at temperature:' % win_dict['IntTime']) plt.setp(ax1.get_legend().get_title(), fontsize='small', family=FONTSTYLE) plt.tight_layout() plt.show()