diff --git a/aosstower/level_b1/nc.py b/aosstower/level_b1/nc.py index 148f9533c25102729f0346d62c3a3e97b477bdd2..501e5cbfce9bf0a41d4cf0630ed76e65c9602805 100644 --- a/aosstower/level_b1/nc.py +++ b/aosstower/level_b1/nc.py @@ -118,6 +118,26 @@ def createVariables(ncFile, firstStamp, chunksizes, zlib): return ncFile +def getGust(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 + + elif average >= 4.63 and maxSpeed[idx] > average + 2.573: + gust.append(maxSpeed[idx]) + + else: + gust.append(np.nan) + continue + + return gust + def minuteAverages(frame): frame['minute'] = [(ts + delta(minutes=1)).replace(second=0) for ts in frame.index] newFrame = frame.groupby('minute').mean() @@ -132,7 +152,21 @@ def minuteAverages(frame): windSeries = windSeries.rolling(25, win_type='boxcar').mean() 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 = pd.DataFrame({'gust': gust, 'minute': list(newFrame.index)}, dtype=np.float64 + + newFrame['gust'] = gust + if 'wind_direction' in columns: del newFrame['wind_direction'] @@ -213,9 +247,10 @@ def writeVars(ncFile, frame): #writes data into file for varName in frame: dataList = frame[varName].tolist() + dataArray = np.asarray(dataList) fileVar[varName][:] = dataArray - + return ncFile #The purpose of this method is to take a begin date, and end date