In [1]:
import sys
sys.path.append('../scripts')
import constants as c
import glob
import qcio
import qcutils
In [2]:
class ACCESSData(object):
def __init__(self):
self.globalattr = {}
self.variables = {}
self.varattr = {}
In [3]:
def access_read_mfiles(file_list=[],var_list=[]):
#ds = qcio.DataStructure()
f = ACCESSData()
#print file_list[0]
ncfile = Dataset(file_list[0])
# get the global attributes
for gattr in ncfile.ncattrs():
f.globalattr[gattr] = getattr(ncfile,gattr)
dims = ncfile.dimensions
shape = (len(dims["time"]),len(dims["lat"]),len(dims["lon"]))
if len(var_list)==0: var_list=ncfile.variables.keys()
# load the data from the first file into the data structure
for var in var_list:
access_name = cf["Variables"][var]["access_name"]
if access_name in ncfile.variables.keys():
f.variables[access_name] = ncfile.variables[access_name][:]
f.varattr[access_name] = {}
for this_attr in ncfile.variables[access_name].ncattrs():
f.varattr[access_name][this_attr] = getattr(ncfile.variables[access_name],this_attr)
else:
print "ACCESS variable "+access_name+" not found in "+file_list[0]
f.variables[access_name] = makedummyseries(shape)
ncfile.close()
if len(file_list)>1:
# loop over the remaining files and append the data
for filename in file_list[1:]:
#print filename
ncfile = Dataset(filename)
for var in var_list:
access_name = cf["Variables"][var]["access_name"]
#print var,ncfile.variables[access_name].shape
if access_name in ncfile.variables.keys():
f.variables[access_name] = numpy.concatenate((f.variables[access_name],ncfile.variables[access_name][:]),axis=0)
if access_name not in f.varattr.keys():
f.varattr[access_name] = {}
for this_attr in ncfile.variables[access_name].ncattrs():
f.varattr[access_name][this_attr] = getattr(ncfile.variables[access_name],this_attr)
else:
print "ACCESS variable "+access_name+" not found in "+filename
empty_series = makedummyseries(shape)
f.variables[access_name] = numpy.concatenate((f.variables[access_name],empty_series),axis=0)
ncfile.close()
return f
In [4]:
cf = qcio.load_controlfile(path='../controlfiles')
var_list = cf["Variables"].keys()
site_list = cf["Sites"].keys()
In [5]:
infilename = cf["Sites"][site_list[0]]["in_filepath"]+cf["Sites"][site_list[0]]["in_filename"]
In [6]:
file_list = sorted(glob.glob(infilename))
nFiles = len(file_list)
print "Processing "+str(nFiles)+" files"
outfilename = cf["Sites"][site_list[0]]["out_filepath"]+cf["Sites"][site_list[0]]["out_filename"]
In [ ]: