NCCOOS Trac Projects: Top | Web | Platforms | Processing | Viz | Sprints | Sandbox | (Wind)

root/misc_sodar_scripts/SodarAnalysis.py

Revision 521 (checked in by cbc, 10 years ago)

Export of an ipython notebook.

Line 
1 # -*- coding: utf-8 -*-
2 # <nbformat>3.0</nbformat>
3
4 # <codecell>
5
6 import os
7 from glob import glob
8 home = os.path.join(os.sep, 'Users', 'cbcoasis', 'Documents', 'sodar')
9 ncdir = os.path.join(home, 'ncs')
10 ncext = 'nc'
11 ncs = os.path.join(ncdir, '*' + os.extsep + ncext)
12 ncs = glob(ncs)
13 ncs = [os.path.basename(nc) for nc in ncs]
14 ncs.sort()
15
16 # <codecell>
17
18 from __future__ import division
19 from scipy.io import netcdf
20 import re
21 pattern = re.compile(r'(\d{4}_\d{2}[A-Za-z]*)')
22 notnan = {}
23 noterror = {}
24 for nc in ncs:
25     ncfile = netcdf.netcdf_file(os.path.join(ncdir, nc))
26     try:
27         key = pattern.search(nc).groups()[0]
28         notnan[key] = \
29             ['{:.2f}%'.format((1 - (len(where(isnan(level))[0]) / len(level))) * 100)
30                 for level in ncfile.variables['u'].data.transpose()]
31         noterror[key] = \
32             ['{:.2f}%'.format((1 - (len([error for error in level if error != 0]) / len(level))) * 100)
33                 for level in ncfile.variables['error'].data.transpose()]
34     finally:
35         ncfile.close()
36
37 # <codecell>
38
39 for key in notnan:
40     if len(notnan[key]) < 39:
41         notnan[key].insert(0, 'N/A')
42         notnan[key].append('N/A')
43         noterror[key].insert(0, 'N/A')
44         noterror[key].append('N/A')
45     elif len(notnan[key]) == 39:
46         pass
47     else:
48         notnan[key] = notnan[key][:39]
49         noterror[key] = noterror[key][:39]
50        
51
52 # <codecell>
53
54 keys = notnan.keys()
55 keys.sort()
56 notnan_sheet = [{key:notnan[key][pct] for key in keys} for pct in range(0,39)]
57 noterror_sheet = [{key:noterror[key][pct] for key in keys} for pct in range(0,39)]
58
59 # <codecell>
60
61 import csv
62 def make_sheet(name,sheet):
63     handle = open(os.path.join(home, name), 'wb')
64     writer = csv.DictWriter(handle, keys)
65     writer.writeheader()
66     writer.writerows(sheet)
67     handle.close()
68 make_sheet('notnan.csv', notnan_sheet)
69 make_sheet('noterror.csv', noterror_sheet)
70
Note: See TracBrowser for help on using the browser.