Exemplo n.º 1
0
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
Exemplo n.º 2
0
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
Exemplo n.º 3
0
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()
Exemplo n.º 4
0
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
Exemplo n.º 5
0
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()