Example #1
0
def extract_netcdf_variable_recursive(output,data,level_desc,tree,options,check_empty=False,hdf5=None):
    level_name=level_desc[0]
    group_name=level_desc[1]
    if group_name==None or isinstance(group_name,list):
        for group in data.groups.keys():
            if ( nc_Database.is_level_name_included_and_not_excluded(level_name,options,group) and
                 nc_Database.retrieve_tree_recursive_check_not_empty(options,data.groups[group])):
                output_grp=replicate_group(output,data,group)
                if len(tree)>0:
                    extract_netcdf_variable_recursive(output_grp,data.groups[group],tree[0],tree[1:],options,check_empty=check_empty,hdf5=hdf5[group])
                else:
                    netcdf_pointers=read_soft_links.read_netCDF_pointers(data.groups[group])
                    if hdf5!=None:
                        netcdf_pointers.replicate(output_grp,check_empty=check_empty,hdf5=hdf5[group])
                    else:
                        netcdf_pointers.replicate(output_grp,check_empty=check_empty)
    else:
        if len(tree)>0:
            if group_name=='':
                extract_netcdf_variable_recursive(output,data,tree[0],tree[1:],options,check_empty=check_empty,hdf5=hdf5)
            elif group_name in data.groups.keys():
                if hdf5!=None:
                    extract_netcdf_variable_recursive(output,data.groups[group_name],tree[0],tree[1:],options,check_empty=check_empty,hdf5=hdf5[group_name])
                else:
                    extract_netcdf_variable_recursive(output,data.groups[group_name],tree[0],tree[1:],options,check_empty=check_empty)
        else:
            netcdf_pointers=read_soft_links.read_netCDF_pointers(data.groups[group_name])
            if hdf5!=None:
                netcdf_pointers.replicate(output,check_empty=check_empty,hdf5=hdf5[group_name])
            else:
                netcdf_pointers.replicate(output,check_empty=check_empty)
    return
Example #2
0
def retrieve_tree_recursive(options,data,output,queues,retrieval_function):
    if 'soft_links' in data.groups.keys():
        netcdf_pointers=read_soft_links.read_netCDF_pointers(data,options=options,queues=queues)
        netcdf_pointers.retrieve(output,
                                 retrieval_function,
                                 options,
                                 username=options.username,
                                 user_pass=options.user_pass
                                 )
    elif len(data.groups.keys())>0:
        for group in data.groups.keys():
            level_name=data.groups[group].getncattr('level_name')
            if ( is_level_name_included_and_not_excluded(level_name,options,group) and
                 retrieve_tree_recursive_check_not_empty(options,data.groups[group])):
                if (isinstance(output,netCDF4.Dataset) or
                    isinstance(output,netCDF4.Group)):
                    if not group in output.groups.keys():
                        output_grp=output.createGroup(group)
                    else:
                        output_grp=output.groups[group]
                    for att in data.groups[group].ncattrs():
                        if not att in output_grp.ncattrs():
                            output_grp.setncattr(att,data.groups[group].getncattr(att))
                else:
                    output_grp=output
                retrieve_tree_recursive(options,data.groups[group],output_grp,queues,retrieval_function)
            
    return
Example #3
0
def replace_netcdf_variable_recursive(output,data,level_desc,tree,hdf5=None,check_empty=False):
    level_name=level_desc[0]
    group_name=level_desc[1]
    if group_name==None or isinstance(group_name,list):
        for group in data.groups.keys():
            output_grp=create_group(output,data,group)
            output_grp.setncattr('level_name',level_name)
            if len(tree)>0:
                    replace_netcdf_variable_recursive(output_grp,data.groups[group],tree[0],tree[1:],hdf5=hdf5[group],check_empty=check_empty)
            else:
                netcdf_pointers=read_soft_links.read_netCDF_pointers(data.groups[group])
                netcdf_pointers.replicate(output_grp,hdf5=hdf5[group],check_empty=check_empty)
    else:
        output_grp=create_group(output,data,group_name)
        output_grp.setncattr('level_name',level_name)
        if len(tree)>0:
            replace_netcdf_variable_recursive(output_grp,data,tree[0],tree[1:],hdf5=hdf5,check_empty=check_empty)
        else:
            netcdf_pointers=read_soft_links.read_netCDF_pointers(data)
            netcdf_pointers.replicate(output_grp,hdf5=hdf5,check_empty=check_empty)
        #    netcdf_pointers=read_soft_links.read_netCDF_pointers(data)
        #    netcdf_pointers.replicate(output,hdf5=hdf5,check_empty=check_empty)
    return