def read_processed_hsrl_data(filename, var_name=None, list_vars=None): """read_process_hsrl_data(netcdf_file,variable,list_vars = False) read a netcdf variable from a file created by write_netcdf if list_variables = True, provide a list of file variables""" from pycdf import CDF nc = CDF(filename) if not list_vars == None: nc_vars = nc.variables().keys() for name in nc_vars: print ' %30s %40s' % (name.ljust(30), nc.var(name).dimensions()) return if not var_name == None: if var_name == 'time' or var_name == 'times': # inits a datetime object from the base time base_time = nc.var('base_time').get() time_offset = nc.var('time').get() #base = datetime.datetime.fromtimestamp(base_time,tz=datetime.tzinfo("UTC")) base = datetime.datetime(1970, 1, 1, 0, 0, 0) + datetime.timedelta( seconds=int(base_time)) # adds a time offset (seconds) to the base time to make a datetime object var = np.array([(base + datetime.timedelta(seconds=x)) for x in time_offset]) else: var = nc.var(var_name).get() pass return var
def read_processed_hsrl_data(filename): """read a netcdf file created by write_netcdf. Data will be restored to python structures""" from pycdf import CDF, CDFError nc = CDF(filename) nc_vars = nc.variables().keys() for name in nc_vars: print name, ' \t\t ', nc.var(name).dimensions() tmp = nc.var(name).get()
def make_netcdf_template(instrument, in_dir, netcdf_filename, outfilename): """reads a netcdf file and creates a outfilename.json with a template for reading this netcdf file--this file will must be edited to provide name translations and variable type information""" from pycdf import CDF, CDFError if netcdf_filename.find('.bz2') >= 0: index = netcdf_filename.find('zraw/') index2 = netcdf_filename.find('_') fileid = open(in_dir + netcdf_filename, 'r') file = fileid.read() fileid.close() temp = bz2.decompress(file) # write temp file to memory rather than disk netcdf_filename = '/dev/shm/' + instrument + '_temp_file.nc' fileid = open(netcdf_filename, 'w') fileid.write(temp) nc = CDF(netcdf_filename) nc_vars = nc.variables().keys() dims = nc.dimensions() print dims f = open(outfilename, 'w') header = ( '#\n' + '#edit this file and change extention to *.json\n' + '#entry format:"\n' + '#"desired_var_name":["name_in_netcdf","select_flag"]\n' + '#var_type == "t" ,time var or time by other than z\n' + '#select_flag when set = 0 and read_mode=="min",variable skipped\n' + '#remove these comment lines before use\n' + '#\n' + '{"config":\n' + ' {"#read_mode":"all / select / min",\n' + ' "read_mode": "select"},\n' + '"selected_vars":\n' + ' {\n') f.write(header) print header first = True for name in nc_vars: var = nc.var(name) #print help(nc) if first: print ' "' + name + '":["' + name + '", 1]' f.write(' "' + name + '":["' + name + '",1]') else: print ' "' + name + '":["' + name + '",1]' f.write(',\n "' + name + '":["' + name + '",1]') first = False f.write(' }\n') f.write('}\n')