From 9843f139ad97968a3c2053857db44fcc0054b20f Mon Sep 17 00:00:00 2001 From: Milos Kozak Date: Sun, 5 Mar 2017 15:22:35 +0100 Subject: [PATCH] fixed bugs in autosens --- .../nightscout/androidaps/data/MealData.java | 2 +- .../androidaps/plugins/OpenAPSAMA/Autosens.java | 16 +++++++++++++--- .../plugins/OpenAPSAMA/OpenAPSAMAPlugin.java | 2 +- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/info/nightscout/androidaps/data/MealData.java b/app/src/main/java/info/nightscout/androidaps/data/MealData.java index 18919c3c8a..a9136f88c2 100644 --- a/app/src/main/java/info/nightscout/androidaps/data/MealData.java +++ b/app/src/main/java/info/nightscout/androidaps/data/MealData.java @@ -25,7 +25,7 @@ public class MealData { NSProfile profile = MainApp.getConfigBuilder().getActiveProfile().getProfile(); if (profile == null) return; - List bgReadings = MainApp.getDbHelper().getBgreadingsDataFromTime((long) (new Date().getTime() - 60 * 60 * 1000L * profile.getDia() * 2), false); + List bgReadings = MainApp.getDbHelper().getBgreadingsDataFromTime((long) (new Date().getTime() - 60 * 60 * 1000L * profile.getDia() * 2), true); long now = new Date().getTime(); long dia_ago = now - (new Double(1.5d * profile.getDia() * 60 * 60 * 1000l)).longValue(); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/OpenAPSAMA/Autosens.java b/app/src/main/java/info/nightscout/androidaps/plugins/OpenAPSAMA/Autosens.java index e44b810d36..af32422e01 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/OpenAPSAMA/Autosens.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/OpenAPSAMA/Autosens.java @@ -34,6 +34,7 @@ public class Autosens { for (int i = 1; i < glucose_data.size(); ++i) { long bgTime = glucose_data.get(i).getTimeIndex(); long lastbgTime = glucose_data.get(i - 1).getTimeIndex(); + //log.error("Processing " + i + ": " + new Date(bgTime).toString() + " " + glucose_data.get(i).value + " Previous: " + new Date(lastbgTime).toString() + " " + glucose_data.get(i - 1).value); if (glucose_data.get(i).value < 39 || glucose_data.get(i - 1).value < 39) { continue; } @@ -52,23 +53,32 @@ public class Autosens { newBgreading.timeIndex = nextbgTime; double gapDelta = glucose_data.get(i).value - lastbg; //console.error(gapDelta, lastbg, elapsed_minutes); - double nextbg = lastbg + (5 / elapsed_minutes * gapDelta); + double nextbg = lastbg + (5d / elapsed_minutes * gapDelta); newBgreading.value = Math.round(nextbg); //console.error("Interpolated", bucketed_data[j]); bucketed_data.add(newBgreading); + //log.error("******************************************************************************************************* Adding:" + new Date(newBgreading.timeIndex).toString() + " " + newBgreading.value); elapsed_minutes = elapsed_minutes - 5; lastbg = nextbg; lastbgTime = nextbgTime; } + j++; + BgReading newBgreading = new BgReading(); + newBgreading.value = glucose_data.get(i).value; + newBgreading.timeIndex = bgTime; + bucketed_data.add(newBgreading); + //log.error("******************************************************************************************************* Copying:" + new Date(newBgreading.timeIndex).toString() + " " + newBgreading.value); } else if (Math.abs(elapsed_minutes) > 2) { j++; BgReading newBgreading = new BgReading(); newBgreading.value = glucose_data.get(i).value; newBgreading.timeIndex = bgTime; bucketed_data.add(newBgreading); + //log.error("******************************************************************************************************* Copying:" + new Date(newBgreading.timeIndex).toString() + " " + newBgreading.value); } else { bucketed_data.get(j).value = (bucketed_data.get(j).value + glucose_data.get(i).value) / 2; + //log.error("***** Average"); } } //console.error(bucketed_data); @@ -82,8 +92,8 @@ public class Autosens { int secondsFromMidnight = NSProfile.secondsFromMidnight(new Date(bgTime)); String hour = ""; - Date d = new Date(secondsFromMidnight); - if (secondsFromMidnight % 3600 < 3 * 60 || secondsFromMidnight % 3600 > 57 * 60) { + //log.debug(new Date(bgTime).toString()); + if (secondsFromMidnight % 3600 < 2.5 * 60 || secondsFromMidnight % 3600 > 57.5 * 60) { hour += "(" + Math.round(secondsFromMidnight / 3600d) + ")"; } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/OpenAPSAMA/OpenAPSAMAPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/OpenAPSAMA/OpenAPSAMAPlugin.java index 2cbffae52a..e011f49fb8 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/OpenAPSAMA/OpenAPSAMAPlugin.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/OpenAPSAMA/OpenAPSAMAPlugin.java @@ -217,7 +217,7 @@ public class OpenAPSAMAPlugin implements PluginBase, APSInterface { startPart = new Date(); long oldestDataAvailable = MainApp.getConfigBuilder().getActiveTempBasals().oldestDataAvaialable(); - List bgReadings = MainApp.getDbHelper().getBgreadingsDataFromTime(Math.max(oldestDataAvailable, (long) (new Date().getTime() - 60 * 60 * 1000L * (24 + profile.getDia()))), false); + List bgReadings = MainApp.getDbHelper().getBgreadingsDataFromTime(Math.max(oldestDataAvailable, (long) (new Date().getTime() - 60 * 60 * 1000L * (24 + profile.getDia()))), true); log.debug("Limiting data to oldest available temps: " + new Date(oldestDataAvailable).toString() + " (" + bgReadings.size() + " records)"); Profiler.log(log, "getBgreadingsDataFromTime()", startPart);