""" timing tests for dap.client from pydap.org """ import os import numpy import dap.client import procutil import time dapurl = r'http://whewell.marine.unc.edu/dods/nccoos/level1/jpier/met/jpier_met_2008_09.nc' variable_names = ['air_pressure', 'air_temp', 'dew_temp', 'humidity', 'rainfall_day'] dapurl = 'http://dods.ndbc.noaa.gov:8080/opendap/stdmet/41043/41043h9999.nc' variable_names = ['air_pressure', 'air_temperature', 'dewpt_temperature', 'wind_dir', 'wind_spd'] def testDapClient(dapurl, variable_names): """ Return list of lists of strings representing rows and columns. """ timing = [] start_time = time.time() print '>>> dataset = dap.client.open(%s, verbose=1)' % dapurl dataset = dap.client.open(dapurl, verbose=1) open_time = time.time() open_elap = open_time - start_time # timing.append('%.2fs (dap open)' %open_elap) print '... ... %.2fs (dap open)' %open_elap for variable_name in variable_names: row = [] variable = dataset[variable_name] print '>>> dataset[\'%s\'].data[-1]' % variable_name tic = time.time() variable_value = dataset[variable_name].data[-1] toc = time.time() tt_get_data = tt = toc - tic print '... ... %.2fs (each)' % tt # (2) variable name, data value, and data units # if variable_value has length # then probably a list, tuple # of which we want a mean (ignoring NaN) if '__len__' in dir(variable_value): variable_value = numpy.mean( numpy.ma.masked_where(numpy.isnan(variable_value), variable_value)) if variable_value > 99: row.append('%s %.4g (%s)' % (variable_name, variable_value, variable.units)) else: row.append('%s %.2g (%s)' % (variable_name, variable_value, variable.units)) # append table row (tr) row.append('%.2fs (data)' % tt_get_data) # timing.append('%.2fs (loop)' %single_loop_elap) timing.append(row) loop_time = time.time() loop_elap = loop_time - open_time total_elap = loop_time - start_time timing.append('%.2fs (data total)' %loop_elap) timing.append('%.2fs (total)' %total_elap) print '... ... %.2fs (TOTAL)' % total_elap return timing