From 0ac724636e1332b8084515a857aa46064fa7df61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mika=C3=ABl=20Ates?= Date: Mon, 18 Jan 2016 17:51:09 +0100 Subject: [PATCH] Add whisper backend method to get closest sample from timestamp. --- src/biomon/whisper_backend.py | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/src/biomon/whisper_backend.py b/src/biomon/whisper_backend.py index 6f22f17..ebff17d 100644 --- a/src/biomon/whisper_backend.py +++ b/src/biomon/whisper_backend.py @@ -28,6 +28,7 @@ import whisper from django.conf import settings +from . import time_utils class WhisperBackend(): @@ -114,3 +115,30 @@ class WhisperBackend(): if values: return min(values) return None + + def get_closest(self, timestamp, lookup_range=None): + if not timestamp: + return None + before = None + after = None + data = self.get_timestamped_data(lookup_range, timestamp - 1) + if data: + before = data[-1] + if before and timestamp == time_utils.unix_time(before[0]): + return before + data = self.get_timestamped_data(lookup_range, + timestamp + lookup_range - 1) + if data: + after = data[0] + if not before and not after: + return None + if before and not after: + return before + if after and not before: + return after + diff_before = timestamp - time_utils.unix_time(before[0]) + diff_after = time_utils.unix_time(after[0]) - timestamp + if diff_before <= diff_after: + return before + else: + return after