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

root/sodarlevel2/trunk/sodarlevel2.py

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

Add comments to show latest month is being processed.

Line 
1 """
2 Make level 2 sodar NetCDF for latest level 1 NetCDF.
3
4 For sodar data after January 2013, level 2 NetCDF
5 is the same as level 1 NetCDF. So simply copy level 1
6 to level 2, except change the process_level global
7 attribute to 'level2'.
8
9 Sodar data prior to February 2013 was previously processed
10 from level 1 to level 2 by a manual process. This script
11 simply ensures that the latest sodar data is also copied
12 to level 2.
13 """
14
15 __author__ = 'Chris Calloway'
16 __email__ = 'cbc@unc.edu'
17 __copyright__ = 'Copyright 2014 UNC-CH Marine Sciences'
18 __version__ = '1.0.0'
19
20 import os
21 import datetime
22 import pycdf as cdf
23 from glob import glob
24
25 level1 = "/seacoos/data/nccoos/level1/billymitchell/sodar1"
26 level2 = "/seacoos/data/nccoos/level2/billymitchell/sodar1"
27
28 ncext = 'nc'
29 ncs = os.path.join(level1, '*' + os.extsep + ncext)
30 ncs = glob(ncs)
31 ncs = [os.path.basename(nc) for nc in ncs]
32 ncs.sort() # months in order
33 nc = ncs[-1] # latest month
34
35 try:
36     now = datetime.datetime.utcnow().replace(microsecond=0).strftime("%Y-%m-%d %H:%M:%S")
37     srcnc = os.path.join(level1, nc)
38     destnc = os.path.join(level2, nc)
39     print now, __file__, "reading", srcnc
40     src = cdf.CDF(srcnc)
41     dest = cdf.CDF(destnc, cdf.NC.WRITE | cdf.NC.CREATE | cdf.NC.TRUNC)
42     dest.automode(True)
43     for key in src.attributes().keys():
44         if key not in ('process_level', 'release_date', 'creation_date', 'modification_date'):
45             src.attr(key).copy(dest)
46     dest.release_date = now
47     dest.creation_date = now
48     dest.modification_date = now
49     dest.process_level = 'level2'
50     for key, (value, index, flag) in src.dimensions(True).items():
51         if flag:
52             dest.def_dim(key, cdf.NC.UNLIMITED)
53         else:
54             dest.def_dim(key, value)
55     for key, (dims, lens, vtype, index) in src.variables().items():
56         var = dest.def_var(key, vtype, dims)
57         for attr in src.var(key).attributes().keys():
58             src.var(key).attr(attr).copy(var)
59         data = src.var(key).get()
60         var.put(data, (0,) * data.ndim, data.shape)
61     dest.sync()
62 finally:
63     src.close()
64     dest.close()
65 now = datetime.datetime.utcnow().replace(microsecond=0).strftime("%Y-%m-%d %H:%M:%S")
66 print now, __file__, "wrote", destnc
Note: See TracBrowser for help on using the browser.