diff --git a/aosstower/level_00/influxdb.py b/aosstower/level_00/influxdb.py index d29faa477f3c5663c363a948baedc055e34d8712..4dee9a4fd4b5fb50389517b0538a4862fc97922d 100644 --- a/aosstower/level_00/influxdb.py +++ b/aosstower/level_00/influxdb.py @@ -78,7 +78,13 @@ class Updater(object): if self.data.get(key) is None: self.data[key] = np.array([]) self.data[key] = np.append(self.data[key][time_mask], record[key]) - # Gets the seconds from the start of the current year. This makes any interval chronologically consistent. + # Gets the seconds from the start of the current year. This makes any interval equal to or smaller than a + # year an absolute interval (ie if the submit interval was 5 minutes, then data is submitted at 5, 10, 15, + # etc). For example: if "reference" used the start of the current minute and we wanted to submit anything in + # longer intervals than a minute, then the times that data is submitted would not be consistent. i.e. if the + # current minute was 13 and the submit interval was 5 minutes, then data would be submitted at 18, 23, 28, + # etc. If data collection went down and the next recorded current minute was 14, then data would be submitted + # at 19, 24, 29, etc (inconsistent). reference = pd.datetime(record['timestamp'].year, 1, 1) progress = (record['timestamp'] - reference).total_seconds() % self.submit_interval # If data hits or will pass over a submit_interval interval, return data. @@ -86,8 +92,8 @@ class Updater(object): return self._calculate_averages() def _calculate_averages(self): - frame = pd.DataFrame(self.data) - frame.set_index('timestamp', inplace=True) + index = self.data.pop('timestamp') + frame = pd.DataFrame(self.data, index=index) frame.mask(frame == -99999., inplace=True) # Add wind direction components so we can average wind direction properly. frame['wind_east'], frame['wind_north'], _ = calc.wind_vector_components(frame['wind_speed'],