# -*- coding: utf-8 -*-
# 3.0
#
import os
from glob import glob
home = os.path.join(os.sep, 'Users', 'cbcoasis', 'Documents', 'sodar')
ncdir = os.path.join(home, 'ncs')
ncext = 'nc'
ncs = os.path.join(ncdir, '*' + os.extsep + ncext)
ncs = glob(ncs)
ncs = [os.path.basename(nc) for nc in ncs]
ncs.sort()
#
from __future__ import division
from scipy.io import netcdf
import re
pattern = re.compile(r'(\d{4}_\d{2}[A-Za-z]*)')
notnan = {}
noterror = {}
for nc in ncs:
ncfile = netcdf.netcdf_file(os.path.join(ncdir, nc))
try:
key = pattern.search(nc).groups()[0]
notnan[key] = \
['{:.2f}%'.format((1 - (len(where(isnan(level))[0]) / len(level))) * 100)
for level in ncfile.variables['u'].data.transpose()]
noterror[key] = \
['{:.2f}%'.format((1 - (len([error for error in level if error != 0]) / len(level))) * 100)
for level in ncfile.variables['error'].data.transpose()]
finally:
ncfile.close()
#
for key in notnan:
if len(notnan[key]) < 39:
notnan[key].insert(0, 'N/A')
notnan[key].append('N/A')
noterror[key].insert(0, 'N/A')
noterror[key].append('N/A')
elif len(notnan[key]) == 39:
pass
else:
notnan[key] = notnan[key][:39]
noterror[key] = noterror[key][:39]
#
keys = notnan.keys()
keys.sort()
notnan_sheet = [{key:notnan[key][pct] for key in keys} for pct in range(0,39)]
noterror_sheet = [{key:noterror[key][pct] for key in keys} for pct in range(0,39)]
#
import csv
def make_sheet(name,sheet):
handle = open(os.path.join(home, name), 'wb')
writer = csv.DictWriter(handle, keys)
writer.writeheader()
writer.writerows(sheet)
handle.close()
make_sheet('notnan.csv', notnan_sheet)
make_sheet('noterror.csv', noterror_sheet)