コード例 #1
0
ファイル: __main__.py プロジェクト: ARM-Development/qc_aod
def set_var_att_value(dataset, var_name, att_name, cds_type, att_value):

    var = dsproc.get_var(dataset, var_name)
    if var is None:
        error_string = "Required variable {} not found in dataset".format(var_name)
        dsproc.error(dsproc.EREQVAR, error_string) 
        return 0

    status = dsproc.set_att_value(var, att_name, cds_type, att_value) 

    return status
コード例 #2
0
ファイル: __main__.py プロジェクト: ARM-Development/qc_aod
def get_var_data(dataset, var_name, data_type):

    var = dsproc.get_var(dataset, var_name)
    if var is None:
        error_string = "Required variable {} not found in dataset".format(var_name)
        dsproc.error(dsproc.EREQVAR, error_string) 
        return None
        
    var_data, missing = dsproc.get_var_data(var, data_type, 0)
    if var_data is None:
        return None

    return var_data
コード例 #3
0
ファイル: __main__.py プロジェクト: ARM-Development/qc_aod
def init_var_data(dataset, var_name, start, nsamples, use_missing=False):

    var = dsproc.get_var(dataset, var_name)
    if var is None:
        error_string = "Required variable {} not found in dataset".format(var_name)
        dsproc.error(dsproc.EREQVAR, error_string) 
        return None
        
    var_data = dsproc.init_var_data(var, start, nsamples, use_missing)
    if var_data is None:
        return None

    return var_data
コード例 #4
0
ファイル: __main__.py プロジェクト: ARM-Development/qc_aod
def create_quicklook(proc_data, begin_date, end_date):

    status_string = 'create_quicklook error'

    out_dsid = proc_data.out_dsid

    # **************************
    # Create plots using run_dq_inpsector function
    # **************************
    dq_inputs = ['-t','-v','all','-E','time_offset','time',
                 'ncomparisons','time_bounds', None]

    status = dsproc.run_dq_inspector(out_dsid, begin_date, end_date, dq_inputs, 0)
    if status < 0:
        error_string = 'Could not execute call to dq_inspector' 
        dsproc.error(status_string, error_string)
        return -1

    return 1 
コード例 #5
0
ファイル: __main__.py プロジェクト: ARM-Development/qc_aod
def pre_transform_hook(user_data, begin_date, end_date, ret_data):

    status = 1

    begin_time = strftime('%Y%m%d.%H%M%S', gmtime(begin_date))
    end_time = strftime('%Y%m%d.%H%M%S', gmtime(end_date))

    FAIL_MIN = 0
    WARN_MAX = 1

    # Get QC, set every intermediata/bad value to bad
    CDS_INT   = 4
    CDS_FLOAT = 5

    ret_groups = ret_data.get_groups()
    group_names = [ g.get_name() for g in ret_groups ]

    wavelengths = [500, 870]
    
    # For each one, set values above threshold (10) to missing value
    for top_group in ret_groups:

        name = top_group.get_name()
        dsproc.debug_lv1("Retrieving: {}".format( name ) )
        
        if 'csphot' in name or 'aeronet' in name:
            var_name_prefix = 'aod_cimel'
        elif 'sgpmfrsraod1michC1' in name:
            var_name_prefix = 'aod_mfrsr_C1'
        elif 'sgpmfrsraod1michE13' in name:
            var_name_prefix = 'aod_mfrsr_E13'
        else:
            var_name_prefix = 'aod_nimfr'

        sub_groups = top_group.get_groups()
        sub_group_with_data = sub_groups[0]

        for wavelength in wavelengths:
            var_name = "{}_{}".format(var_name_prefix, wavelength)
        
            var = dsproc.get_var(sub_group_with_data, var_name)
            if var is None:
                error_string = "Required variable {} not found in dataset".format(var_name)
                dsproc.error(dsproc.EREQVAR, error_string) 
                return -1
                
            var_data, missing = dsproc.get_var_data(var, CDS_FLOAT, 0)


            # Below 0, Above 1
            below_fail_min = var_data < FAIL_MIN
            above_warn_max = var_data > WARN_MAX

            var_data[below_fail_min] = MISSING_VALUE
            var_data[above_warn_max] = MISSING_VALUE
                
            nsamples = len(var_data)


            status = dsproc.set_var_data(var, 0, nsamples, None, var_data)
            if status is None:
                return -1

            qc_var = dsproc.get_qc_var(var)
            if qc_var is not None:
                qc_var_data, missing = dsproc.get_var_data(qc_var, CDS_INT, 0) 

                # Testing setting anything not good, as bad
                not_good_qc = qc_var_data != 0
                qc_var_data[not_good_qc] = 1

                # Below 0, Above 1
                qc_var_data[below_fail_min] = 1
                qc_var_data[above_warn_max] = 1

                status = dsproc.set_var_data(qc_var, 0, nsamples, None, qc_var_data)
                if status is None:
                    return -1




    # If only one value for cimel, artificially add a sample to make 
    # transformation work
    # Note, this is a hack and not currently supported by ADI
    cimel_name = ""

    for name in group_names:
        if 'csphot' in name:
            cimel_name = name
            break

    var_name_prefix = 'aod_cimel'
    if cimel_name:

        dsproc.debug_lv1("Retrieving: {}".format(cimel_name) )
        top_group = ret_data.get_group(cimel_name)
        
        if not top_group:
            dsproc.debug_lv1("No retrieved group for {}, skipping".format(cimel_name))
        else:
        
            sub_groups = top_group.get_groups()
            sub_group_with_data = sub_groups[0]

            # 500nm cimel data
            var_name_500 = "{}_500".format(var_name_prefix, wavelength)
            
            var_500 = dsproc.get_var(sub_group_with_data, var_name_500)
            if var_500 is None:
                error_string = "Required variable {} not found in dataset".format(var_name_500)
                dsproc.error(dsproc.EREQVAR, error_string) 
                return -1
                
            var_500_data, missing = dsproc.get_var_data(var_500, CDS_FLOAT, 0)

            # Check if have only one value
            nsamples_500 = len(var_500_data)

            # 870nm cimel var
            var_name_870 = "{}_870".format(var_name_prefix, wavelength)
            
            var_870 = dsproc.get_var(sub_group_with_data, var_name_870)
            if var_870 is None:
                error_string = "Required variable {} not found in dataset".format(var_name_870)
                dsproc.error(dsproc.EREQVAR, error_string) 
                return -1
                
            if nsamples_500 == 1:
                
                dsproc.debug_lv1("Only 1 cimel sample, artificially adding another")
                dsproc.log("Only 1 cimel sample, artificially adding another")

                times = dsproc.get_sample_times(sub_group_with_data, 0)
                times[0] = times[0] + 1

                dsproc.set_sample_times(sub_group_with_data, 1, times)

                var_type = var_500_data.dtype
                fake_value = [MISSING_VALUE]
                fake_value = np.array(fake_value)
                fake_value = fake_value.astype(var_type)

                status = dsproc.set_var_data(var_500, 1, 1, None, fake_value)
                if status is None:
                    return -1

                status = dsproc.set_var_data(var_870, 1, 1, None, fake_value)
                if status is None:
                    return -1


    
    if dsproc.get_debug_level() > 1:
        dsproc.dump_retrieved_datasets("./debug_dumps", "retrieved_data.debug", 0)

    return 1