diff --git a/aosstower/l00/__init__.py b/aosstower/level_00/__init__.py similarity index 100% rename from aosstower/l00/__init__.py rename to aosstower/level_00/__init__.py diff --git a/aosstower/l00/influxdb.py b/aosstower/level_00/influxdb.py similarity index 98% rename from aosstower/l00/influxdb.py rename to aosstower/level_00/influxdb.py index 0452744fc7dbe62905f0009ff05630db6b1d2c4c..dbd9f762c9d68a696fe628b640d4aa04f7cf40dd 100644 --- a/aosstower/l00/influxdb.py +++ b/aosstower/level_00/influxdb.py @@ -9,7 +9,7 @@ import time import sys import requests from metobscommon import influxdb -from aosstower.l00.parser import read_frames +from aosstower.level_00.parser import read_frames LOG = logging.getLogger(__name__) # map station name to InfluxDB tags diff --git a/aosstower/l00/parser.py b/aosstower/level_00/parser.py similarity index 100% rename from aosstower/l00/parser.py rename to aosstower/level_00/parser.py diff --git a/aosstower/l00/rrd.py b/aosstower/level_00/rrd.py similarity index 100% rename from aosstower/l00/rrd.py rename to aosstower/level_00/rrd.py diff --git a/aosstower/tests/l00/__init__.py b/aosstower/level_b1/__init__.py similarity index 100% rename from aosstower/tests/l00/__init__.py rename to aosstower/level_b1/__init__.py diff --git a/aosstower/level_b1/nc.py b/aosstower/level_b1/nc.py index 7115e8cf0ce624f229fe7c31dd7dce76eaf37694..410c42206c4fc719804f04db42518d1f1d1e5501 100644 --- a/aosstower/level_b1/nc.py +++ b/aosstower/level_b1/nc.py @@ -3,30 +3,31 @@ import sys import logging import pandas as pd from datetime import datetime as dt -from aosstower.l00 import parser +from aosstower.level_00 import parser from netCDF4 import Dataset -import numpy as np +import numpy as np import platform from aosstower import station from datetime import timedelta as delta -import calc +from aosstower.level_b1 import calc LOG = logging.getLogger(__name__) -#create the '_mean','_low','_high' file structure def make_mean_dict(source_dict): + """Create the '_mean','_low','_high' file structure.""" dest_dict = {} for key in source_dict: - dest_dict[key+'_high'] = source_dict[key] - dest_dict[key+'_mean'] = source_dict[key] - dest_dict[key+'_low'] = source_dict[key] + dest_dict[key + '_high'] = source_dict[key] + dest_dict[key + '_mean'] = source_dict[key] + dest_dict[key + '_low'] = source_dict[key] return dest_dict + mean_database = make_mean_dict(parser.database) -def filterArray(array, valid_min, valid_max): +def filter_array(array, valid_min, valid_max): qcControl = [] for value in array: @@ -35,184 +36,173 @@ def filterArray(array, valid_min, valid_max): elif valid_min != '' and value < float(valid_min): qcControl.append(np.byte(0b10)) - + elif valid_max != '' and value > float(valid_max): qcControl.append(np.byte(0b100)) - + else: qcControl.append(np.byte(0b0)) return np.array(qcControl) -# The purpose of this function is to write the dimensions -# for the nc file -# no parameters -# no returns -def writeDimensions(ncFile): +def write_dimensions(ncFile): ncFile.createDimension('time', None) ncFile.createDimension('max_len_station_name', 32) return ncFile -def createVariables(ncFile, firstStamp, chunksizes, zlib, database=parser.database): - #base_time long name + +def create_variables(ncFile, firstStamp, chunksizes, zlib, database=parser.database): + # base_time long name btln = 'base time as unix timestamp' - #base time units + # base time units btu = 'seconds since 1970-01-01 00:00:00' - #base time string + # base time string bts = firstStamp.strftime('%Y-%m-%d 00:00:00Z') - #time long name + # time long name tln = 'time offset from base_time' - #time units + # time units tu = 'seconds since ' + firstStamp.strftime('%Y-%m-%d 00:00:00Z') - - coordinates = { - #fields: type, dimension, fill, valid_min, std_name, longname, units, valid_max, cf_role, axis - 'lon': [np.float32, None, float(-999), '-180L', 'longitude', None, 'degrees_east', '180L', None], - 'lat': [np.float32, None, float(-999), '-90L', 'latitude', None, 'degrees_north', '90L', None], - 'alt': [np.float32, None, float(-999), None, 'height', 'vertical distance', 'm', None, None], - 'base_time': [np.int32, None, float(-999), None, 'time', btln, btu, None, None], - 'time_offset': [np.float64, 'time', float(-999), None, 'time', tln, tu, None, None], - 'station_name': ['c', 'max_len_station_name', '-', None, None, 'station name', None, None, 'timeseries_id'], - 'time': [np.float32, 'time', float(-999), None, None, "Time offset from epoch", "seconds since 1970-01-01 00:00:00Z", None, None, None] - } - - for key in coordinates: - attr = coordinates[key] - - if(attr[1]): + # fields: type, dimension, fill, valid_min, std_name, longname, units, valid_max, cf_role, axis + 'lon': [np.float32, None, float(-999), '-180L', 'longitude', None, 'degrees_east', '180L', None], + 'lat': [np.float32, None, float(-999), '-90L', 'latitude', None, 'degrees_north', '90L', None], + 'alt': [np.float32, None, float(-999), None, 'height', 'vertical distance', 'm', None, None], + 'base_time': [np.int32, None, float(-999), None, 'time', btln, btu, None, None], + 'time_offset': [np.float64, 'time', float(-999), None, 'time', tln, tu, None, None], + 'station_name': ['c', 'max_len_station_name', '-', None, None, 'station name', None, None, 'timeseries_id'], + 'time': [np.float32, 'time', float(-999), None, None, "Time offset from epoch", + "seconds since 1970-01-01 00:00:00Z", None, None, None] + } + + for key, attr in coordinates.items(): + if attr[1]: if attr[1] == 'max_len_station_name': - if (chunksizes) and chunksizes[0] > 32: - variable = ncFile.createVariable(key, attr[0], dimensions=(attr[1]), fill_value=attr[2], zlib=zlib, chunksizes=[32]) - + if chunksizes and chunksizes[0] > 32: + variable = ncFile.createVariable(key, attr[0], dimensions=(attr[1]), fill_value=attr[2], zlib=zlib, + chunksizes=[32]) else: - variable = ncFile.createVariable(key, attr[0], dimensions=(attr[1]), fill_value=attr[2], zlib=zlib, chunksizes=chunksizes) - + variable = ncFile.createVariable(key, attr[0], dimensions=(attr[1]), fill_value=attr[2], zlib=zlib, + chunksizes=chunksizes) else: - variable = ncFile.createVariable(key, attr[0], dimensions=(attr[1]), fill_value=attr[2], zlib=zlib, chunksizes=chunksizes) + variable = ncFile.createVariable(key, attr[0], dimensions=(attr[1]), fill_value=attr[2], zlib=zlib, + chunksizes=chunksizes) else: variable = ncFile.createVariable(key, attr[0], fill_value=attr[1], zlib=zlib, chunksizes=chunksizes) - #create var attributes + # create var attributes if key == 'alt': variable.positive = 'up' variable.axis = 'Z' - if(attr[3]): + if attr[3]: variable.valid_min = attr[3] variable.valid_max = attr[7] - if(attr[4]): + if attr[4]: variable.standard_name = attr[4] - if(attr[5]): + if attr[5]: variable.long_name = attr[5] - if(attr[6]): + if attr[6]: variable.units = attr[6] - if(attr[8]): - variable.cf_role = attr[8] + if attr[8]: + variable.cf_role = attr[8] if key == 'base_time': variable.string = bts if 'time' in key: - variable.calendar = 'gregorian' + variable.calendar = 'gregorian' for entry in database: - if(entry == 'stamp'): + if entry == 'stamp': continue varTup = database[entry] - variable = ncFile.createVariable(entry, np.float32, - dimensions=('time'), fill_value=float(-99999), zlib=zlib, chunksizes=chunksizes) + dimensions=('time'), fill_value=float(-99999), zlib=zlib, + chunksizes=chunksizes) variable.standard_name = varTup[1] variable.description = varTup[3] variable.units = varTup[4] - if(varTup[5] != ''): + if varTup[5] != '': variable.valid_min = float(varTup[5]) variable.valid_max = float(varTup[6]) qcVariable = ncFile.createVariable('qc_' + entry, 'b', - dimensions=('time'), fill_value=0b0, zlib=zlib, chunksizes=chunksizes) + dimensions=('time'), fill_value=0b0, zlib=zlib, chunksizes=chunksizes) qcVariable.long_name = 'data quality' qcVariable.valid_range = np.byte(0b1), np.byte(0b1111) qcVariable.flag_masks = np.byte(0b1), np.byte(0b10), np.byte(0b100), np.byte(0b1000) - flagMeaning = ['value is equal to missing_value', - 'value is less than the valid min', + flagMeaning = ['value is equal to missing_value', + 'value is less than the valid min', 'value is greater than the valid max', 'difference between current and previous values exceeds valid_delta.'] qcVariable.flag_meaning = ', '.join(flagMeaning) - #create global attributes + # create global attributes ncFile.source = 'surface observation' ncFile.conventions = 'ARM-1.2 CF-1.6' ncFile.institution = 'UW SSEC' ncFile.featureType = 'timeSeries' ncFile.data_level = 'b1' - #monthly files end with .month.nc - #these end with .day.nc + # monthly files end with .month.nc + # these end with .day.nc ncFile.datastream = 'aoss.tower.nc-1d-1m.b1.v00' ncFile.software_version = '00' - #generate history + # generate history ncFile.history = ' '.join(platform.uname()) + " " + os.path.basename(__file__) - + return ncFile -def getGust(rollingAvg, speeds): + +def get_gust(rollingAvg, speeds): averages = rollingAvg.tolist() maxSpeed = speeds['wind_speed'].tolist() gust = [] - for idx, average in enumerate(averages): if not average: - gust.append(np.nan) - continue - + gust.append(np.nan) + continue elif average >= 4.63 and maxSpeed[idx] > average + 2.573: - gust.append(maxSpeed[idx]) - + gust.append(maxSpeed[idx]) else: gust.append(np.nan) continue return gust -#gets the rolling mean closest to the nearest minute -def getRolling(series, minutes): - returnSeries = series.rolling(25, win_type='boxcar').mean() +def get_rolling(series, minutes): + """Get the rolling mean closest to the nearest minute""" + returnSeries = series.rolling(25, win_type='boxcar').mean() data = {} - for minute in minutes: - - #doesn't go past the minute - closestStamp = returnSeries.index.asof(minute) + # doesn't go past the minute data[minute] = returnSeries[returnSeries.index.asof(minute)] - returnSeries = pd.Series(data) - - return returnSeries + return pd.Series(data) + -def getNewWindDirection(wind_dir, wind_speed, stamps): +def get_new_wind_direction(wind_dir, wind_speed, stamps): newWindDir = {} for stamp in stamps: @@ -220,18 +210,18 @@ def getNewWindDirection(wind_dir, wind_speed, stamps): if before not in wind_speed.index: newWindDir[stamp] = None - else: speed = wind_speed[before: stamp].tolist() dire = wind_dir[before: stamp].tolist() wind_dire = calc.mean_wind_vector(speed, dire)[0] - + newWindDir[stamp] = wind_dire - + return pd.Series(newWindDir) -def minuteAverages(frame): + +def minute_averages(frame): frame['minute'] = [(ts + delta(minutes=1)).replace(second=0) for ts in frame.index] newFrame = frame.groupby('minute').mean() newFrame.index.names = [''] @@ -241,63 +231,52 @@ def minuteAverages(frame): del newFrame['wind_speed'] windSeries = frame['wind_speed'] - - windSeries = getRolling(windSeries, list(newFrame.index)) - + windSeries = get_rolling(windSeries, list(newFrame.index)) newFrame['wind_speed'] = windSeries - rollingAvg = newFrame['wind_speed'] - maxSpeed = pd.DataFrame() maxSpeed['minute'] = frame['minute'] maxSpeed['speed'] = frame['wind_speed'] - maxSpeed = frame.groupby('minute').max() - - gust = getGust(rollingAvg, maxSpeed) - + gust = get_gust(rollingAvg, maxSpeed) newFrame['gust'] = gust - + if 'wind_dir' in columns: del newFrame['wind_dir'] dupFrame = frame.set_index('minute') - stamps = newFrame.index - windDirSeries = dupFrame['wind_dir'] - windSeries = dupFrame['wind_speed'] - - windDirSeries = getNewWindDirection(windDirSeries, windSeries, stamps) - + windDirSeries = get_new_wind_direction(windDirSeries, windSeries, stamps) newFrame['wind_dir'] = windDirSeries del frame['minute'] - return newFrame.fillna(-99999) -def averageOverInterval(frame,interval_width): + +def average_over_interval(frame, interval_width): """takes a frame and an interval to average it over, and returns a minimum, maximum, and average dataframe for that interval""" ts = frame.index - #round each timestamp to the nearest n minutes - frame['interval'] = (ts.astype(int)-ts.astype(int)%(interval_width*60e9)).astype('datetime64[ns]') - outFrames = {} - outFrames['low'] = frame.groupby('interval').min() - outFrames['high'] = frame.groupby('interval').max() - outFrames['mean'] = frame.groupby('interval').mean() + # round each timestamp to the nearest n minutes + frame['interval'] = (ts.astype(int) - ts.astype(int) % (interval_width * 60e9)).astype('datetime64[ns]') + out_frames = { + 'low': frame.groupby('interval').min(), + 'high': frame.groupby('interval').max(), + 'mean': frame.groupby('interval').mean(), + } del frame['interval'] - for key in outFrames: - #append the appropriate suffix to each column - columns = outFrames[key].columns - outFrames[key].columns = ['_'.join([col,key]) for col in columns] - outFrames = pd.concat(outFrames.values(),axis=1) - return outFrames - -def getData(inputFiles): - dictData = {} + for key in out_frames: + # append the appropriate suffix to each column + columns = out_frames[key].columns + out_frames[key].columns = ['_'.join([col, key]) for col in columns] + out_frames = pd.concat(out_frames.values(), axis=1) + return out_frames + +def get_data(inputFiles): + dictData = {} for filename in inputFiles: getFrames = list(parser.read_frames(filename)) @@ -312,22 +291,23 @@ def getData(inputFiles): return pd.DataFrame(dictData).transpose().replace(-99999, np.nan) -def writeVars(ncFile, frame, database=parser.database): + +def write_vars(ncFile, frame, database=parser.database): stamps = list(frame.index) baseDTObj = dt.strptime(str(stamps[0]).split(' ')[0], '%Y-%m-%d') - #find out how much time elapsed - #since the origin to the start of the day - #in seconds - baseTimeValue = baseDTObj - dt(1970,1,1) + # find out how much time elapsed + # since the origin to the start of the day + # in seconds + baseTimeValue = baseDTObj - dt(1970, 1, 1) baseTimeValue = baseTimeValue.total_seconds() - #create time numpy + # create time numpy timeNumpy = np.empty(len(stamps), dtype='float64') counter = 0 - #write stamps in, yo + # write stamps in, yo for stamp in stamps: stampObj = dt.strptime(str(stamp), '%Y-%m-%d %H:%M:%S') @@ -339,28 +319,28 @@ def writeVars(ncFile, frame, database=parser.database): fileVar = ncFile.variables fileVar['base_time'].assignValue(baseTimeValue) fileVar['time_offset'][:] = timeNumpy - fileVar['time'][:] = timeNumpy + fileVar['time'][:] = timeNumpy - #write coordinate var values to file - #alt might not be right, need to verify + # write coordinate var values to file + # alt might not be right, need to verify fileVar['lon'].assignValue(station.LONGITUDE) fileVar['lat'].assignValue(station.LATITUDE) fileVar['alt'].assignValue(328) - #might change + # might change stationName = ("AOSS Tower") - - #transfer station name into array of chars + + # transfer station name into array of chars statChars = list(stationName) statNumpy = np.asarray(statChars) - #write station name to file + # write station name to file fileVar['station_name'][0:len(statNumpy)] = statNumpy - #writes data into file + # writes data into file for varName in frame: if varName not in fileVar: - logging.warn('Extraneous key: %s in frame'%varName) + logging.warn('Extraneous key: %s in frame' % varName) continue dataList = frame[varName].tolist() @@ -370,7 +350,7 @@ def writeVars(ncFile, frame, database=parser.database): valid_min = database[varName][5] valid_max = database[varName][6] - fileVar['qc_' + varName][:] = filterArray(dataArray, valid_min, valid_max) + fileVar['qc_' + varName][:] = filter_array(dataArray, valid_min, valid_max) coordinates = ['lon', 'lat', 'alt', 'base_time', 'time_offset', 'station_name', 'time'] @@ -386,10 +366,11 @@ def writeVars(ncFile, frame, database=parser.database): else: fileVar['qc_' + varName][:] = np.full(len(list(frame.index)), np.byte(0b1), dtype='b') - + return ncFile -#The purpose of this method is to take a begin date, and end date + +# The purpose of this method is to take a begin date, and end date # input filenames and output filename and create a netCDF file # based upon that # @param start time - a start datetime object @@ -397,136 +378,128 @@ def writeVars(ncFile, frame, database=parser.database): # @param input filenames - list of filenames # @param output filename - filename of the netcdf file -def createGiantNetCDF(start, end, inputFiles, outputName, zlib, chunkSize, - interval_width = None, database=parser.database): +def create_giant_netCDF(start, end, inputFiles, outputName, zlib, chunkSize, + interval_width=None, database=parser.database): default = False - if(chunkSize): + if (chunkSize): chunksizes = [chunkSize] else: default = True - frame = getData(inputFiles) + frame = get_data(inputFiles) - if(frame.empty): + if (frame.empty): return False else: - frame = minuteAverages(frame) + frame = minute_averages(frame) if interval_width: - frame = averageOverInterval(frame,interval_width) + frame = average_over_interval(frame, interval_width) - if(start and end): + if (start and end): frame = frame[start.strftime('%Y-%m-%d %H:%M:%S'): end.strftime('%Y-%m-%d %H:%M:%S')] - if(default): + if (default): chunksizes = [len(list(frame.index))] firstStamp = dt.strptime(str(list(frame.index)[0]), '%Y-%m-%d %H:%M:%S') ncFile = Dataset(outputName, 'w', format='NETCDF4_CLASSIC') - ncFile = writeDimensions(ncFile) + ncFile = write_dimensions(ncFile) + + ncFile = create_variables(ncFile, firstStamp, chunksizes, zlib, database) - ncFile = createVariables(ncFile, firstStamp, chunksizes, zlib,database) - ncFile.inputFiles = ', '.join(inputFiles) - ncFile = writeVars(ncFile, frame,database) + ncFile = write_vars(ncFile, frame, database) ncFile.close() - - return True -def createMultiple(filenames, outputFilenames, zlib, chunkSize): - if(outputFilenames and len(filenames) != len(outputFilenames)): - print('USAGE: number of output filenames must equal number of input filenames when start and end times are not specified') - exit(0) - - results = [] + return True - for idx, filename in enumerate(filenames): - results.append(createGiantNetCDF(None, None, [filename], outputFilenames[idx], zlib, chunkSize)) - allFalse = True +def create_multiple(filenames, outputFilenames, zlib, chunkSize): + if outputFilenames and len(filenames) != len(outputFilenames): + raise ValueError( + 'Number of output filenames must equal number of input filenames when start and end times are not specified') - for result in results: - if result == True: - allFalse = False + results = [] + for idx, filename in enumerate(filenames): + results.append(create_giant_netCDF(None, None, [filename], outputFilenames[idx], zlib, chunkSize)) - if allFalse == True: + if not any(results): raise IOError('All ASCII files were empty') -#The purpose of this method is to take a string in the format + +# The purpose of this method is to take a string in the format # YYYY-mm-ddTHH:MM:SS and convert that to a datetime object # used in coordination with argparse -s and -e params # @param datetime string # @return datetime object def _dt_convert(datetime_str): - #parse datetime string, return datetime object - try: + # parse datetime string, return datetime object + try: return dt.strptime(datetime_str, '%Y-%m-%dT%H:%M:%S') except: return dt.strptime(datetime_str, '%Y-%m-%d') + def main(): import argparse - - #argparse description argparser = argparse.ArgumentParser(description="Convert level_00 aoss tower data to level_a0", fromfile_prefix_chars='@') - #argparse verbosity info argparser.add_argument('-v', '--verbose', action="count", default=int(os.environ.get("VERBOSITY", 2)), - dest='verbosity', - help='each occurrence increases verbosity 1 level through ERROR-WARNING-INFO-DEBUG (default INFO)') - - #argparse start and end times - argparser.add_argument('-s', '--start-time', type=_dt_convert, - help="Start time of massive netcdf file, if only -s is given, a netcdf file for only that day is given" + - ". Formats allowed: \'YYYY-MM-DDTHH:MM:SS\', \'YYYY-MM-DD\'") - argparser.add_argument('-e', '--end-time', type=_dt_convert, help='End time of massive netcdf file. Formats allowed:' + - "\'YYYY-MM-DDTHH:MM:SS\', \'YYYY-MM-DD\'") - argparser.add_argument('-i', '--interval', type=float, - help='Width of the interval to average input data over in minutes.'+ - " If not specified, 1 is assumed. (Use 60 for one hour and 1440 for 1 day)") + dest='verbosity', + help='each occurrence increases verbosity 1 level through ERROR-WARNING-INFO-DEBUG (default INFO)') + + argparser.add_argument('-s', '--start-time', type=_dt_convert, + help="Start time of massive netcdf file, if only -s is given, a netcdf file for only that day is given" + + ". Formats allowed: \'YYYY-MM-DDTHH:MM:SS\', \'YYYY-MM-DD\'") + argparser.add_argument('-e', '--end-time', type=_dt_convert, + help='End time of massive netcdf file. Formats allowed:' + + "\'YYYY-MM-DDTHH:MM:SS\', \'YYYY-MM-DD\'") + argparser.add_argument('-i', '--interval', type=float, + help='Width of the interval to average input data over in minutes.' + + " If not specified, 1 is assumed. (Use 60 for one hour and 1440 for 1 day)") argparser.add_argument('-cs', '--chunk-size', type=int, help='chunk Size for the netCDF file') argparser.add_argument('-z', '--zlib', action='store_true', help='compress netCDF file with zlib') argparser.add_argument("input_files", nargs="+", - help="aoss_tower level_00 paths. Use @filename to red a list of paths from that file.") + help="aoss_tower level_00 paths. Use @filename to red a list of paths from that file.") argparser.add_argument('-o', '--output', required=True, nargs="+", help="filename pattern or filename. " + - "Should be along the lines of <filepath>/aoss_tower.YYYY-MM-DD.nc") + "Should be along the lines of <filepath>/aoss_tower.YYYY-MM-DD.nc") args = argparser.parse_args() levels = [logging.ERROR, logging.WARN, logging.INFO, logging.DEBUG] - level=levels[min(3, args.verbosity)] + level = levels[min(3, args.verbosity)] logging.basicConfig(level=level) - database = mean_database if args.interval else parser.database - if(args.start_time and args.end_time): - result = createGiantNetCDF(args.start_time, args.end_time, args.input_files, args.output[0], args.zlib, args.chunk_size, - args.interval, database) - if(result == False): + if args.start_time and args.end_time: + result = create_giant_netCDF(args.start_time, args.end_time, args.input_files, args.output[0], args.zlib, + args.chunk_size, + args.interval, database) + if not result: raise IOError('An empty ASCII file was found') - - elif(args.start_time): + elif args.start_time: end_time = args.start_time.replace(hour=23, minute=59, second=59) - result = createGiantNetCDF(args.start_time, end_time, args.input_files, args.output[0], args.zlib, args.chunk_size, - args.interval, database) - if(result == False): + result = create_giant_netCDF(args.start_time, end_time, args.input_files, args.output[0], args.zlib, + args.chunk_size, + args.interval, database) + if not result: raise IOError('An empty ASCII file was found') - - elif(args.end_time): - print('USAGE: start time must be specified when end time is specified') - + elif args.end_time: + raise ValueError('start time must be specified when end time is specified') else: - createMultiple(args.input_files, args.output, args.zlib, args.chunk_size) + create_multiple(args.input_files, args.output, args.zlib, args.chunk_size) + if __name__ == "__main__": - main() + sys.exit(main()) diff --git a/aosstower/tests/level_00/__init__.py b/aosstower/tests/level_00/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/aosstower/tests/l00/test_parser.py b/aosstower/tests/level_00/test_parser.py similarity index 94% rename from aosstower/tests/l00/test_parser.py rename to aosstower/tests/level_00/test_parser.py index 6e3dfa5b999e851ca35c24bc1cae0e0089a0d772..90d4b086a7557732b088b5172c0d123392283d15 100644 --- a/aosstower/tests/l00/test_parser.py +++ b/aosstower/tests/level_00/test_parser.py @@ -12,7 +12,7 @@ class ParserV0Tests(unittest.TestCase): "WDIR05305 143.380000\n") def _cut(self): - from aosstower.l00.parser import ParserV0 + from aosstower.level_00.parser import ParserV0 return ParserV0() def test_maybe_mine(self): @@ -38,7 +38,7 @@ class ParserV1V2Tests(unittest.TestCase): "22.669,10.417,145.2,22.665,163.94,0,0,30.015\n") def _cut(self): - from aosstower.l00.parser import ParserV1V2 + from aosstower.level_00.parser import ParserV1V2 return ParserV1V2() def test_maybe_mine(self): diff --git a/scripts/insert_influx.py b/scripts/insert_influx.py index d36e1461a83322efd841a6c669d06ac9153bc9ea..03bfa9e4695d0fd2d14b869dab9004d138011830 100644 --- a/scripts/insert_influx.py +++ b/scripts/insert_influx.py @@ -4,7 +4,7 @@ from datetime import datetime import requests from metobs.data import wind_vector_components -from aosstower.l00.parser import read_frames +from aosstower.level_00.parser import read_frames LOG = logging.getLogger(__name__) diff --git a/scripts/make_database.py b/scripts/make_database.py index 4b34d09a31a6ac2eef4553bf1c2d1fb3d8eba360..eed9d02baf953355b97bf9371ca743c93bb32275 100755 --- a/scripts/make_database.py +++ b/scripts/make_database.py @@ -5,8 +5,8 @@ import logging from datetime import datetime from metobscommon.model import RrdModel, ModelError -from aosstower.l00.parser import read_records -from aosstower.l00.rrd import initialize_rrd +from aosstower.level_00.parser import read_records +from aosstower.level_00.rrd import initialize_rrd LOG = logging