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

PlatformPageDesign/ZPT: testDapClient.py

Line 
1 """
2 timing tests for dap.client from pydap.org
3 """
4
5 import os
6 import numpy
7 import dap.client
8 import procutil
9 import time
10
11 dapurl = r'http://whewell.marine.unc.edu/dods/nccoos/level1/jpier/met/jpier_met_2008_09.nc'
12 variable_names = ['air_pressure', 'air_temp', 'dew_temp', 'humidity', 'rainfall_day']
13
14 dapurl = 'http://dods.ndbc.noaa.gov:8080/opendap/stdmet/41043/41043h9999.nc'
15 variable_names = ['air_pressure', 'air_temperature', 'dewpt_temperature', 'wind_dir', 'wind_spd']
16
17 def testDapClient(dapurl, variable_names):
18     """
19     Return list of lists of strings representing rows and columns.
20     """
21
22     timing = []
23     start_time = time.time()
24
25     print '>>> dataset = dap.client.open(%s, verbose=1)' % dapurl
26     dataset = dap.client.open(dapurl, verbose=1)
27    
28     open_time = time.time()
29     open_elap = open_time - start_time
30     # timing.append('%.2fs (dap open)' %open_elap)
31     print '... ... %.2fs (dap open)' %open_elap
32    
33     for variable_name in variable_names:
34
35         row = []
36         variable = dataset[variable_name]
37
38         print '>>> dataset[\'%s\'].data[-1]' % variable_name
39         tic = time.time()
40         variable_value = dataset[variable_name].data[-1]
41         toc = time.time()
42         tt_get_data = tt = toc - tic
43         print '... ... %.2fs (each)' % tt
44        
45
46         # (2) variable name, data value, and data units
47         # if variable_value has length
48         # then probably a list, tuple
49         # of which we want a mean (ignoring NaN)
50         if '__len__' in dir(variable_value):
51             variable_value = numpy.mean(
52                              numpy.ma.masked_where(numpy.isnan(variable_value),
53                                                    variable_value))
54         if variable_value > 99:
55             row.append('%s %.4g (%s)' % (variable_name, variable_value, variable.units))
56         else:
57             row.append('%s %.2g (%s)' % (variable_name, variable_value, variable.units))
58                    
59         # append table row (tr)
60
61         row.append('%.2fs (data)' % tt_get_data)
62         # timing.append('%.2fs (loop)' %single_loop_elap)
63         timing.append(row)
64    
65     loop_time = time.time()
66     loop_elap = loop_time - open_time
67     total_elap = loop_time - start_time
68     timing.append('%.2fs (data total)' %loop_elap)
69     timing.append('%.2fs (total)' %total_elap)
70     print '... ... %.2fs (TOTAL)' % total_elap
71
72     return timing