From 25c976ee58311812ced8a35e72d2377df9498630 Mon Sep 17 00:00:00 2001 From: Philoul Date: Sat, 25 Jun 2022 00:37:46 +0200 Subject: [PATCH] Add Unit Test for AutotunePrep --- .../general/autotune/AutotunePrepTest.kt | 250 +++++++++++++++ .../res/autotune/test1/Convert_Log2JSON.xlsx | Bin 0 -> 65522 bytes .../test1/oaps-iobCalc.2022-05-21.json | 286 ++++++++++++++++++ 3 files changed, 536 insertions(+) create mode 100644 app/src/test/java/info/nightscout/androidaps/plugins/general/autotune/AutotunePrepTest.kt create mode 100644 app/src/test/res/autotune/test1/Convert_Log2JSON.xlsx create mode 100644 app/src/test/res/autotune/test1/oaps-iobCalc.2022-05-21.json diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/general/autotune/AutotunePrepTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/general/autotune/AutotunePrepTest.kt new file mode 100644 index 0000000000..74c6ff6e15 --- /dev/null +++ b/app/src/test/java/info/nightscout/androidaps/plugins/general/autotune/AutotunePrepTest.kt @@ -0,0 +1,250 @@ +package info.nightscout.androidaps.plugins.general.autotune + +import dagger.android.HasAndroidInjector +import info.nightscout.androidaps.R +import info.nightscout.androidaps.TestBaseWithProfile +import info.nightscout.androidaps.data.IobTotal +import info.nightscout.androidaps.data.LocalInsulin +import info.nightscout.androidaps.data.ProfileSealed +import info.nightscout.androidaps.data.PureProfile +import info.nightscout.androidaps.database.AppRepository +import info.nightscout.androidaps.database.data.Block +import info.nightscout.androidaps.database.data.TargetBlock +import info.nightscout.androidaps.database.entities.Bolus +import info.nightscout.androidaps.database.entities.Carbs +import info.nightscout.androidaps.database.entities.GlucoseValue +import info.nightscout.androidaps.interfaces.* +import info.nightscout.androidaps.plugins.general.autotune.data.* +import info.nightscout.androidaps.utils.DateUtil +import info.nightscout.androidaps.utils.JsonHelper +import info.nightscout.androidaps.utils.T +import info.nightscout.shared.logging.AAPSLogger +import info.nightscout.shared.sharedPreferences.SP +import org.json.JSONArray +import org.json.JSONObject +import org.junit.Assert +import org.junit.Before +import org.junit.Test +import org.mockito.Mock +import org.mockito.Mockito.`when` +import java.io.File +import java.util.* +import kotlin.collections.ArrayList + +class AutotunePrepTest : TestBaseWithProfile() { + @Mock lateinit var sp: SP + @Mock lateinit var autotuneFS: AutotuneFS + @Mock lateinit var injector: HasAndroidInjector + @Mock lateinit var activePlugin: ActivePlugin + @Mock lateinit var repository: AppRepository + lateinit var autotunePrep: AutotunePrep + lateinit var autotuneIob: TestAutotuneIob + lateinit var inputProfile: ATProfile + var min5mCarbImpact = 0.0 + var autotuneMin = 0.0 + var autotuneMax = 0.0 + var startDayTime = 0L + + + @Before + fun initData() { + TimeZone.setDefault(TimeZone.getTimeZone("GMT+2")) + val inputProfileJson = File("src/test/res/autotune/test1/profile.pump.json").readText() + inputProfile = atProfileFromOapsJson(JSONObject(inputProfileJson), dateUtil)!! + val inputIobJson = File("src/test/res/autotune/test1/oaps-iobCalc.2022-05-21.json").readText() //json files build with iob/activity calculated by OAPS + val iobOapsCalcul = buildIobOaps(JSONArray(inputIobJson)) + autotuneIob = TestAutotuneIob(aapsLogger, repository, profileFunction, sp, dateUtil, activePlugin, autotuneFS, iobOapsCalcul) + autotunePrep = AutotunePrep(sp, dateUtil, autotuneFS, autotuneIob) + } + + @Test + fun autotunePrepTest() { // Test if load from file of OpenAPS categorisation is Ok + val prepjson = File("src/test/res/autotune/test1/autotune.2022-05-21.json").readText() + val oapsPreppedGlucose = PreppedGlucose(JSONObject(prepjson), dateUtil) //prep data calculated by OpenAPS autotune + val oapsEntriesJson = File("src/test/res/autotune/test1/aaps-entries.2022-05-21.json").readText() + autotuneIob.glucose = buildGlucose(JSONArray(oapsEntriesJson)) + val oapsTreatmentsJson = File("src/test/res/autotune/test1/aaps-treatments.2022-05-21.json").readText() + autotuneIob.meals = buildMeals(JSONArray(oapsTreatmentsJson)) //Only meals is used in unit test, Insulin only used for iob calculation + autotuneIob.boluses = buildBoluses(oapsPreppedGlucose) //Values from oapsPrepData because linked to iob calculation method for TBR + `when`(sp.getDouble(R.string.key_openapsama_min_5m_carbimpact, 3.0)).thenReturn(min5mCarbImpact) + + val aapsPreppedGlucose = autotunePrep.categorizeBGDatums(inputProfile, inputProfile.localInsulin, false) + try { + aapsPreppedGlucose?.let { // compare all categorization calculated by aaps plugin (aapsPreppedGlucose) with categorization calculated by OpenAPS (oapsPreppedGlucose) + for (i in aapsPreppedGlucose.crData.indices) + Assert.assertTrue(oapsPreppedGlucose.crData[i].equals(aapsPreppedGlucose.crData[i])) + for (i in aapsPreppedGlucose.csfGlucoseData.indices) + Assert.assertTrue(oapsPreppedGlucose.csfGlucoseData[i].equals(aapsPreppedGlucose.csfGlucoseData[i])) + for (i in aapsPreppedGlucose.isfGlucoseData.indices) + Assert.assertTrue(oapsPreppedGlucose.isfGlucoseData[i].equals(aapsPreppedGlucose.isfGlucoseData[i])) + for (i in aapsPreppedGlucose.basalGlucoseData.indices) + Assert.assertTrue(oapsPreppedGlucose.basalGlucoseData[i].equals(aapsPreppedGlucose.basalGlucoseData[i])) + } + ?: Assert.fail() + } catch (e: Exception) { + Assert.fail() + } + } + + + + /** + * OpenAPS profile for Autotune only have one ISF value and one IC value + */ + fun atProfileFromOapsJson(jsonObject: JSONObject, dateUtil: DateUtil, defaultUnits: String? = null): ATProfile? { + try { + min5mCarbImpact = JsonHelper.safeGetDoubleAllowNull(jsonObject, "min_5m_carbimpact") ?: return null + autotuneMin = JsonHelper.safeGetDoubleAllowNull(jsonObject, "autosens_min") ?: return null + autotuneMax = JsonHelper.safeGetDoubleAllowNull(jsonObject, "autosens_max") ?: return null + val txtUnits = JsonHelper.safeGetStringAllowNull(jsonObject, "units", defaultUnits) ?: return null + val units = GlucoseUnit.fromText(txtUnits) + val dia = JsonHelper.safeGetDoubleAllowNull(jsonObject, "dia") ?: return null + val peak = JsonHelper.safeGetIntAllowNull(jsonObject, "insulinPeakTime") ?: return null + val localInsulin = LocalInsulin("insulin", peak, dia) + val timezone = TimeZone.getTimeZone(JsonHelper.safeGetString(jsonObject, "timezone", "UTC")) + val isfJson = jsonObject.getJSONObject("isfProfile") + val isfBlocks = ArrayList(1).also { + val isfJsonArray = isfJson.getJSONArray("sensitivities") + val value = isfJsonArray.getJSONObject(0).getDouble("sensitivity") + it.add(0,Block((T.hours(24).secs()) * 1000L, value)) + } + val icBlocks = ArrayList(1).also { + val value = jsonObject.getDouble("carb_ratio") + it.add(0,Block((T.hours(24).secs()) * 1000L, value)) + } + val basalBlocks = blockFromJsonArray(jsonObject.getJSONArray("basalprofile"), dateUtil) + ?: return null + val targetBlocks = ArrayList(1).also { + it.add(0, TargetBlock((T.hours(24).secs()) * 1000L, 100.0, 100.0)) + } + + val pure = PureProfile( + jsonObject = jsonObject, + basalBlocks = basalBlocks, + isfBlocks = isfBlocks, + icBlocks = icBlocks, + targetBlocks = targetBlocks, + glucoseUnit = units, + timeZone = timezone, + dia = dia + ) + return ATProfile(ProfileSealed.Pure(pure), localInsulin, profileInjector).also { it.dateUtil = dateUtil} + } catch (ignored: Exception) { + return null + } + } + + + fun blockFromJsonArray(jsonArray: JSONArray?, dateUtil: DateUtil): List? { + val size = jsonArray?.length() ?: return null + val ret = ArrayList(size) + try { + for (index in 0 until jsonArray.length() - 1) { + val o = jsonArray.getJSONObject(index) + val tas = o.getInt("minutes") * 60 + val next = jsonArray.getJSONObject(index + 1) + val nextTas = next.getInt("minutes") * 60 + val value = o.getDouble("rate") + if (tas % 3600 != 0) return null + if (nextTas % 3600 != 0) return null + ret.add(index, Block((nextTas - tas) * 1000L, value)) + } + val last: JSONObject = jsonArray.getJSONObject(jsonArray.length() - 1) + val lastTas = last.getInt("minutes") * 60 + val value = last.getDouble("rate") + ret.add(jsonArray.length() - 1, Block((T.hours(24).secs() - lastTas) * 1000L, value)) + } catch (e: Exception) { + return null + } + return ret + } + + fun buildBoluses(preppedGlucose: PreppedGlucose): ArrayList { //if categorization is correct then I return for dose function the crInsulin calculated in Oaps + val boluses: ArrayList = ArrayList() + try { + for (i in preppedGlucose.crData.indices) { + boluses.add( + Bolus( + timestamp = preppedGlucose.crData[i].crEndTime, + amount = preppedGlucose.crData[i].crInsulin, + type = Bolus.Type.NORMAL + ) + ) + } + } catch (e: Exception) { } + return boluses + } + + fun buildMeals(jsonArray: JSONArray): ArrayList { + val list: ArrayList = ArrayList() + try { + for (index in 0 until jsonArray.length()) { + val json = jsonArray.getJSONObject(index) + val value = JsonHelper.safeGetDouble(json, "carbs", 0.0) + val timestamp = JsonHelper.safeGetLong(json, "date") + if (value > 0.0 && timestamp > startDayTime) { + list.add(Carbs(timestamp=timestamp, amount = value, duration = 0)) + } + } + } catch (e: Exception) { } + return list + } + + fun buildGlucose(jsonArray: JSONArray): List { + val list: ArrayList = ArrayList() + try { + for (index in 0 until jsonArray.length()) { + val json = jsonArray.getJSONObject(index) + val value = JsonHelper.safeGetDouble(json, "sgv") + val timestamp = JsonHelper.safeGetLong(json, "date") + list.add(GlucoseValue(raw = value, noise = 0.0, value = value, timestamp = timestamp, sourceSensor = GlucoseValue.SourceSensor.UNKNOWN, trendArrow = GlucoseValue.TrendArrow.FLAT)) + } + } catch (e: Exception) { } + if (list.size > 0) + startDayTime = list[list.size-1].timestamp + return list + } + + fun buildIobOaps(jsonArray: JSONArray): ArrayList { //if categorization is correct then I return for dose function the crInsulin calculated in Oaps + val list: ArrayList = ArrayList() + for (index in 0 until jsonArray.length()) { + val json = jsonArray.getJSONObject(index) + val time = JsonHelper.safeGetLong(json,"date") + val iob = JsonHelper.safeGetDouble(json, "iob") + val activity = JsonHelper.safeGetDouble(json, "activity") + val iobTotal = IobTotal(time) + iobTotal.iob = iob + iobTotal.activity = activity + list.add(iobTotal) + } + return list + } + + class TestAutotuneIob( + val aapsLogger: AAPSLogger, + repository: AppRepository, + val profileFunction: ProfileFunction, + val sp: SP, + val dateUtil: DateUtil, + val activePlugin: ActivePlugin, + autotuneFS: AutotuneFS, + val iobOapsCalcul: ArrayList + ) : AutotuneIob( + aapsLogger, + repository, + profileFunction, + sp, + dateUtil, + activePlugin, + autotuneFS + ) { + override fun getIOB(time: Long, localInsulin: LocalInsulin): IobTotal { + var bolusIob = IobTotal(time) + iobOapsCalcul.forEach { + if (it.time == time) + return it + } + return bolusIob + } + } +} diff --git a/app/src/test/res/autotune/test1/Convert_Log2JSON.xlsx b/app/src/test/res/autotune/test1/Convert_Log2JSON.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..5f4d84fff9958b0ed283cd4c4661e1641aa9d54d GIT binary patch literal 65522 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 F`yZXLYODYN literal 0 HcmV?d00001 diff --git a/app/src/test/res/autotune/test1/oaps-iobCalc.2022-05-21.json b/app/src/test/res/autotune/test1/oaps-iobCalc.2022-05-21.json new file mode 100644 index 0000000000..92304dbf45 --- /dev/null +++ b/app/src/test/res/autotune/test1/oaps-iobCalc.2022-05-21.json @@ -0,0 +1,286 @@ +[ + { "iob": 5.249, "activity": 0.0391, "date": 1653099848000}, + { "iob": 5.292, "activity": 0.0438, "date": 1653100148000}, + { "iob": 4.964, "activity": 0.047, "date": 1653100449000}, + { "iob": 4.674, "activity": 0.0489, "date": 1653100748000}, + { "iob": 4.377, "activity": 0.0498, "date": 1653101048000}, + { "iob": 4.077, "activity": 0.0498, "date": 1653101348000}, + { "iob": 3.73, "activity": 0.0491, "date": 1653101648000}, + { "iob": 3.389, "activity": 0.0476, "date": 1653101948000}, + { "iob": 3.055, "activity": 0.0457, "date": 1653102249000}, + { "iob": 2.782, "activity": 0.0436, "date": 1653102548000}, + { "iob": 2.47, "activity": 0.0411, "date": 1653102848000}, + { "iob": 2.22, "activity": 0.0386, "date": 1653103149000}, + { "iob": 1.935, "activity": 0.0358, "date": 1653103448000}, + { "iob": 1.711, "activity": 0.0332, "date": 1653103748000}, + { "iob": 1.452, "activity": 0.0304, "date": 1653104049000}, + { "iob": 1.927, "activity": 0.028, "date": 1653104349000}, + { "iob": 1.84, "activity": 0.027, "date": 1653104648000}, + { "iob": 1.658, "activity": 0.0258, "date": 1653104949000}, + { "iob": 1.482, "activity": 0.0245, "date": 1653105248000}, + { "iob": 1.264, "activity": 0.0229, "date": 1653105549000}, + { "iob": 1.104, "activity": 0.0212, "date": 1653105848000}, + { "iob": 0.952, "activity": 0.0194, "date": 1653106149000}, + { "iob": 1.619, "activity": 0.0181, "date": 1653106449000}, + { "iob": 1.678, "activity": 0.0184, "date": 1653106749000}, + { "iob": 1.775, "activity": 0.0187, "date": 1653107048000}, + { "iob": 1.581, "activity": 0.019, "date": 1653107348000}, + { "iob": 1.437, "activity": 0.0188, "date": 1653107648000}, + { "iob": 1.294, "activity": 0.0183, "date": 1653107948000}, + { "iob": 1.153, "activity": 0.0176, "date": 1653108249000}, + { "iob": 1.017, "activity": 0.0167, "date": 1653108548000}, + { "iob": 0.887, "activity": 0.0156, "date": 1653108848000}, + { "iob": 1.011, "activity": 0.0147, "date": 1653109148000}, + { "iob": 0.889, "activity": 0.0141, "date": 1653109448000}, + { "iob": 0.771, "activity": 0.0133, "date": 1653109748000}, + { "iob": 0.656, "activity": 0.0124, "date": 1653110049000}, + { "iob": 0.547, "activity": 0.0114, "date": 1653110348000}, + { "iob": 0.392, "activity": 0.0103, "date": 1653110649000}, + { "iob": 0.294, "activity": 0.0091, "date": 1653110949000}, + { "iob": 0.2, "activity": 0.008, "date": 1653111249000}, + { "iob": 0.065, "activity": 0.0066, "date": 1653111549000}, + { "iob": 0.034, "activity": 0.0055, "date": 1653111849000}, + { "iob": 0.549, "activity": 0.0048, "date": 1653112148000}, + { "iob": 0.674, "activity": 0.0053, "date": 1653112449000}, + { "iob": 0.597, "activity": 0.0057, "date": 1653112749000}, + { "iob": 0.468, "activity": 0.0058, "date": 1653113049000}, + { "iob": 0.389, "activity": 0.0057, "date": 1653113349000}, + { "iob": 0.262, "activity": 0.0053, "date": 1653113649000}, + { "iob": 0.186, "activity": 0.0048, "date": 1653113949000}, + { "iob": 0.064, "activity": 0.0041, "date": 1653114249000}, + { "iob": -0.005, "activity": 0.0034, "date": 1653114549000}, + { "iob": -0.12, "activity": 0.0026, "date": 1653114849000}, + { "iob": -0.181, "activity": 0.0018, "date": 1653115149000}, + { "iob": -0.287, "activity": 0.0008, "date": 1653115449000}, + { "iob": -0.34, "activity": 0, "date": 1653115749000}, + { "iob": -0.436, "activity": -0.001, "date": 1653116049000}, + { "iob": -0.48, "activity": -0.0018, "date": 1653116349000}, + { "iob": -0.519, "activity": -0.0026, "date": 1653116649000}, + { "iob": -0.554, "activity": -0.0034, "date": 1653116949000}, + { "iob": -0.585, "activity": -0.0041, "date": 1653117249000}, + { "iob": -0.662, "activity": -0.0049, "date": 1653117549000}, + { "iob": -0.687, "activity": -0.0055, "date": 1653117848000}, + { "iob": -0.708, "activity": -0.0061, "date": 1653118149000}, + { "iob": -0.726, "activity": -0.0066, "date": 1653118449000}, + { "iob": -0.351, "activity": -0.0071, "date": 1653118748000}, + { "iob": -0.218, "activity": -0.0064, "date": 1653119049000}, + { "iob": -0.088, "activity": -0.0055, "date": 1653119349000}, + { "iob": 13.594, "activity": 0.0023, "date": 1653119649000}, + { "iob": 13.552, "activity": 0.0331, "date": 1653119949000}, + { "iob": 13.224, "activity": 0.0573, "date": 1653120249000}, + { "iob": 12.838, "activity": 0.076, "date": 1653120548000}, + { "iob": 12.322, "activity": 0.09, "date": 1653120849000}, + { "iob": 11.794, "activity": 0.1001, "date": 1653121149000}, + { "iob": 11.177, "activity": 0.1068, "date": 1653121449000}, + { "iob": 10.58, "activity": 0.111, "date": 1653121749000}, + { "iob": 9.919, "activity": 0.1129, "date": 1653122049000}, + { "iob": 9.254, "activity": 0.1129, "date": 1653122349000}, + { "iob": 8.643, "activity": 0.1114, "date": 1653122649000}, + { "iob": 7.992, "activity": 0.1088, "date": 1653122949000}, + { "iob": 7.406, "activity": 0.1053, "date": 1653123248000}, + { "iob": 7.111, "activity": 0.1012, "date": 1653123549000}, + { "iob": 6.515, "activity": 0.0971, "date": 1653123849000}, + { "iob": 5.99, "activity": 0.0927, "date": 1653124149000}, + { "iob": 5.439, "activity": 0.0878, "date": 1653124448000}, + { "iob": 4.962, "activity": 0.0828, "date": 1653124749000}, + { "iob": 4.462, "activity": 0.0775, "date": 1653125048000}, + { "iob": 4.036, "activity": 0.0724, "date": 1653125349000}, + { "iob": 3.638, "activity": 0.0672, "date": 1653125649000}, + { "iob": 3.214, "activity": 0.0621, "date": 1653125948000}, + { "iob": 2.866, "activity": 0.0571, "date": 1653126249000}, + { "iob": 2.494, "activity": 0.0522, "date": 1653126549000}, + { "iob": 2.193, "activity": 0.0476, "date": 1653126849000}, + { "iob": 1.867, "activity": 0.0431, "date": 1653127149000}, + { "iob": 1.563, "activity": 0.0388, "date": 1653127449000}, + { "iob": 1.329, "activity": 0.0347, "date": 1653127748000}, + { "iob": 1.115, "activity": 0.0309, "date": 1653128049000}, + { "iob": 0.87, "activity": 0.0272, "date": 1653128349000}, + { "iob": 0.692, "activity": 0.0239, "date": 1653128649000}, + { "iob": 0.482, "activity": 0.0206, "date": 1653128948000}, + { "iob": 0.287, "activity": 0.0176, "date": 1653129249000}, + { "iob": 0.156, "activity": 0.0148, "date": 1653129548000}, + { "iob": 0.038, "activity": 0.0122, "date": 1653129848000}, + { "iob": -0.067, "activity": 0.0099, "date": 1653130149000}, + { "iob": -0.161, "activity": 0.0078, "date": 1653130448000}, + { "iob": -0.195, "activity": 0.006, "date": 1653130748000}, + { "iob": -0.271, "activity": 0.0044, "date": 1653131049000}, + { "iob": -0.339, "activity": 0.0029, "date": 1653131349000}, + { "iob": -0.4, "activity": 0.0015, "date": 1653131649000}, + { "iob": -0.155, "activity": 0.0007, "date": 1653131948000}, + { "iob": 8.11, "activity": 0.0045, "date": 1653132249000}, + { "iob": 7.992, "activity": 0.0222, "date": 1653132549000}, + { "iob": 7.745, "activity": 0.0359, "date": 1653132849000}, + { "iob": 7.488, "activity": 0.0465, "date": 1653133149000}, + { "iob": 7.136, "activity": 0.0541, "date": 1653133449000}, + { "iob": 6.8, "activity": 0.0596, "date": 1653133749000}, + { "iob": 6.441, "activity": 0.0633, "date": 1653134049000}, + { "iob": 6.022, "activity": 0.0651, "date": 1653134349000}, + { "iob": 5.644, "activity": 0.0657, "date": 1653134649000}, + { "iob": 5.216, "activity": 0.0653, "date": 1653134949000}, + { "iob": 4.962, "activity": 0.0644, "date": 1653135249000}, + { "iob": 4.544, "activity": 0.0627, "date": 1653135549000}, + { "iob": 4.185, "activity": 0.0606, "date": 1653135849000}, + { "iob": 3.839, "activity": 0.058, "date": 1653136149000}, + { "iob": 3.456, "activity": 0.055, "date": 1653136449000}, + { "iob": 3.139, "activity": 0.0519, "date": 1653136749000}, + { "iob": 2.788, "activity": 0.0486, "date": 1653137049000}, + { "iob": 2.503, "activity": 0.0453, "date": 1653137350000}, + { "iob": 2.186, "activity": 0.0418, "date": 1653137649000}, + { "iob": 3.17, "activity": 0.0407, "date": 1653137949000}, + { "iob": 3.956, "activity": 0.0413, "date": 1653138249000}, + { "iob": 3.648, "activity": 0.042, "date": 1653138549000}, + { "iob": 4.126, "activity": 0.043, "date": 1653138849000}, + { "iob": 3.81, "activity": 0.0437, "date": 1653139150000}, + { "iob": 3.541, "activity": 0.0437, "date": 1653139450000}, + { "iob": 3.272, "activity": 0.0431, "date": 1653139749000}, + { "iob": 3.588, "activity": 0.0428, "date": 1653140049000}, + { "iob": 3.875, "activity": 0.0431, "date": 1653140349000}, + { "iob": 3.608, "activity": 0.0434, "date": 1653140648000}, + { "iob": 4.271, "activity": 0.0442, "date": 1653140949000}, + { "iob": 3.996, "activity": 0.0452, "date": 1653141249000}, + { "iob": 4.298, "activity": 0.0462, "date": 1653141548000}, + { "iob": 4.015, "activity": 0.0468, "date": 1653141849000}, + { "iob": 4.538, "activity": 0.0481, "date": 1653142149000}, + { "iob": 4.245, "activity": 0.0489, "date": 1653142449000}, + { "iob": 4.729, "activity": 0.05, "date": 1653142749000}, + { "iob": 4.426, "activity": 0.0508, "date": 1653143049000}, + { "iob": 4.353, "activity": 0.051, "date": 1653143349000}, + { "iob": 4.049, "activity": 0.0507, "date": 1653143650000}, + { "iob": 3.747, "activity": 0.0498, "date": 1653143949000}, + { "iob": 3.402, "activity": 0.0483, "date": 1653144249000}, + { "iob": 3.115, "activity": 0.0464, "date": 1653144550000}, + { "iob": 2.788, "activity": 0.0441, "date": 1653144849000}, + { "iob": 2.524, "activity": 0.0417, "date": 1653145149000}, + { "iob": 2.271, "activity": 0.0391, "date": 1653145449000}, + { "iob": 2.033, "activity": 0.0365, "date": 1653145750000}, + { "iob": 1.807, "activity": 0.0338, "date": 1653146050000}, + { "iob": 1.594, "activity": 0.0312, "date": 1653146349000}, + { "iob": 1.395, "activity": 0.0286, "date": 1653146650000}, + { "iob": 1.258, "activity": 0.0262, "date": 1653146949000}, + { "iob": 1.034, "activity": 0.0236, "date": 1653147249000}, + { "iob": 0.971, "activity": 0.0215, "date": 1653147549000}, + { "iob": 1.008, "activity": 0.0197, "date": 1653147849000}, + { "iob": 0.963, "activity": 0.0183, "date": 1653148149000}, + { "iob": 1.046, "activity": 0.0171, "date": 1653148450000}, + { "iob": 0.912, "activity": 0.0161, "date": 1653148749000}, + { "iob": 1.254, "activity": 0.0156, "date": 1653149049000}, + { "iob": 1.176, "activity": 0.0154, "date": 1653149349000}, + { "iob": 1.051, "activity": 0.0149, "date": 1653149650000}, + { "iob": 0.928, "activity": 0.0142, "date": 1653149949000}, + { "iob": 1.008, "activity": 0.0138, "date": 1653150249000}, + { "iob": 0.89, "activity": 0.0133, "date": 1653150549000}, + { "iob": 0.775, "activity": 0.0127, "date": 1653150849000}, + { "iob": 0.664, "activity": 0.0118, "date": 1653151149000}, + { "iob": 0.606, "activity": 0.011, "date": 1653151449000}, + { "iob": 0.703, "activity": 0.0105, "date": 1653151749000}, + { "iob": 0.702, "activity": 0.0101, "date": 1653152049000}, + { "iob": 0.902, "activity": 0.0101, "date": 1653152349000}, + { "iob": 0.801, "activity": 0.0101, "date": 1653152649000}, + { "iob": 0.701, "activity": 0.0098, "date": 1653152949000}, + { "iob": 0.603, "activity": 0.0094, "date": 1653153249000}, + { "iob": 0.508, "activity": 0.0088, "date": 1653153549000}, + { "iob": 0.415, "activity": 0.0081, "date": 1653153849000}, + { "iob": 0.327, "activity": 0.0074, "date": 1653154149000}, + { "iob": 0.242, "activity": 0.0066, "date": 1653154449000}, + { "iob": 0.161, "activity": 0.0058, "date": 1653154749000}, + { "iob": 0.134, "activity": 0.005, "date": 1653155049000}, + { "iob": 0.4, "activity": 0.0048, "date": 1653155349000}, + { "iob": 0.475, "activity": 0.0049, "date": 1653155649000}, + { "iob": 0.401, "activity": 0.005, "date": 1653155950000}, + { "iob": 0.327, "activity": 0.0048, "date": 1653156250000}, + { "iob": 0.203, "activity": 0.0044, "date": 1653156549000}, + { "iob": 0.132, "activity": 0.004, "date": 1653156849000}, + { "iob": 0.064, "activity": 0.0034, "date": 1653157149000}, + { "iob": -0.002, "activity": 0.0028, "date": 1653157449000}, + { "iob": -0.064, "activity": 0.0022, "date": 1653157750000}, + { "iob": -0.073, "activity": 0.0016, "date": 1653158049000}, + { "iob": -0.08, "activity": 0.0011, "date": 1653158349000}, + { "iob": -0.085, "activity": 0.0007, "date": 1653158649000}, + { "iob": -0.087, "activity": 0.0004, "date": 1653158949000}, + { "iob": -0.088, "activity": 0.0001, "date": 1653159249000}, + { "iob": -0.088, "activity": -0.0001, "date": 1653159549000}, + { "iob": -0.137, "activity": -0.0004, "date": 1653159849000}, + { "iob": -0.184, "activity": -0.0007, "date": 1653160150000}, + { "iob": -0.18, "activity": -0.001, "date": 1653160449000}, + { "iob": -0.175, "activity": -0.0012, "date": 1653160749000}, + { "iob": -0.168, "activity": -0.0014, "date": 1653161049000}, + { "iob": -0.211, "activity": -0.0015, "date": 1653161350000}, + { "iob": -0.203, "activity": -0.0017, "date": 1653161649000}, + { "iob": -0.243, "activity": -0.002, "date": 1653161950000}, + { "iob": -0.282, "activity": -0.0023, "date": 1653162250000}, + { "iob": -0.32, "activity": -0.0026, "date": 1653162549000}, + { "iob": -0.357, "activity": -0.0029, "date": 1653162850000}, + { "iob": -0.391, "activity": -0.0032, "date": 1653163150000}, + { "iob": -0.375, "activity": -0.0035, "date": 1653163449000}, + { "iob": -0.357, "activity": -0.0036, "date": 1653163749000}, + { "iob": -0.149, "activity": -0.0035, "date": 1653164049000}, + { "iob": -0.132, "activity": -0.0031, "date": 1653164350000}, + { "iob": 9.296, "activity": 0.015, "date": 1653164649000}, + { "iob": 9.123, "activity": 0.0332, "date": 1653164950000}, + { "iob": 8.96, "activity": 0.0474, "date": 1653165249000}, + { "iob": 8.644, "activity": 0.0584, "date": 1653165550000}, + { "iob": 8.282, "activity": 0.0664, "date": 1653165850000}, + { "iob": 7.835, "activity": 0.0718, "date": 1653166149000}, + { "iob": 7.416, "activity": 0.0753, "date": 1653166450000}, + { "iob": 6.984, "activity": 0.0772, "date": 1653166749000}, + { "iob": 6.547, "activity": 0.0776, "date": 1653167049000}, + { "iob": 6.061, "activity": 0.0769, "date": 1653167350000}, + { "iob": 5.68, "activity": 0.0754, "date": 1653167650000}, + { "iob": 5.458, "activity": 0.0734, "date": 1653167949000}, + { "iob": 5.046, "activity": 0.0712, "date": 1653168250000}, + { "iob": 4.925, "activity": 0.069, "date": 1653168549000}, + { "iob": 4.487, "activity": 0.0663, "date": 1653168849000}, + { "iob": 4.113, "activity": 0.0633, "date": 1653169150000}, + { "iob": 3.706, "activity": 0.0599, "date": 1653169449000}, + { "iob": 3.363, "activity": 0.0566, "date": 1653169749000}, + { "iob": 3.039, "activity": 0.053, "date": 1653170049000}, + { "iob": 2.733, "activity": 0.0494, "date": 1653170350000}, + { "iob": 2.395, "activity": 0.0457, "date": 1653170650000}, + { "iob": 2.126, "activity": 0.0421, "date": 1653170950000}, + { "iob": 1.824, "activity": 0.0385, "date": 1653171250000}, + { "iob": 1.64, "activity": 0.0351, "date": 1653171549000}, + { "iob": 1.473, "activity": 0.0319, "date": 1653171849000}, + { "iob": 1.273, "activity": 0.0288, "date": 1653172150000}, + { "iob": 1.136, "activity": 0.026, "date": 1653172450000}, + { "iob": 1.011, "activity": 0.0235, "date": 1653172749000}, + { "iob": 0.852, "activity": 0.021, "date": 1653173050000}, + { "iob": 0.752, "activity": 0.0189, "date": 1653173350000}, + { "iob": 0.662, "activity": 0.0169, "date": 1653173650000}, + { "iob": 0.534, "activity": 0.0149, "date": 1653173949000}, + { "iob": 0.463, "activity": 0.0132, "date": 1653174249000}, + { "iob": 0.352, "activity": 0.0115, "date": 1653174550000}, + { "iob": 0.298, "activity": 0.0101, "date": 1653174850000}, + { "iob": 0.25, "activity": 0.0089, "date": 1653175149000}, + { "iob": 0.329, "activity": 0.0079, "date": 1653175450000}, + { "iob": 0.34, "activity": 0.0074, "date": 1653175750000}, + { "iob": 0.304, "activity": 0.0068, "date": 1653176050000}, + { "iob": 0.272, "activity": 0.0062, "date": 1653176350000}, + { "iob": 0.512, "activity": 0.006, "date": 1653176650000}, + { "iob": 0.581, "activity": 0.0061, "date": 1653176950000}, + { "iob": 1.238, "activity": 0.0075, "date": 1653177250000}, + { "iob": 1.147, "activity": 0.0088, "date": 1653177550000}, + { "iob": 1.151, "activity": 0.0098, "date": 1653177850000}, + { "iob": 1.05, "activity": 0.0104, "date": 1653178149000}, + { "iob": 0.947, "activity": 0.0107, "date": 1653178449000}, + { "iob": 0.844, "activity": 0.0106, "date": 1653178750000}, + { "iob": 0.741, "activity": 0.0104, "date": 1653179050000}, + { "iob": 0.59, "activity": 0.0099, "date": 1653179350000}, + { "iob": 0.542, "activity": 0.0093, "date": 1653179649000}, + { "iob": 0.497, "activity": 0.0087, "date": 1653179949000}, + { "iob": 0.456, "activity": 0.0081, "date": 1653180250000}, + { "iob": 0.516, "activity": 0.0077, "date": 1653180549000}, + { "iob": 0.429, "activity": 0.0072, "date": 1653180849000}, + { "iob": 0.294, "activity": 0.0066, "date": 1653181150000}, + { "iob": 0.163, "activity": 0.0058, "date": 1653181450000}, + { "iob": 0.037, "activity": 0.0049, "date": 1653181750000}, + { "iob": -0.085, "activity": 0.0039, "date": 1653182050000}, + { "iob": -0.153, "activity": 0.0029, "date": 1653182349000}, + { "iob": -0.265, "activity": 0.0018, "date": 1653182650000}, + { "iob": -0.371, "activity": 0.0007, "date": 1653182949000}, + { "iob": -0.471, "activity": -0.0005, "date": 1653183249000}, + { "iob": -0.566, "activity": -0.0016, "date": 1653183550000}, + { "iob": -0.606, "activity": -0.0026, "date": 1653183850000}, + { "iob": -0.64, "activity": -0.0036, "date": 1653184150000}, + { "iob": -0.67, "activity": -0.0044, "date": 1653184450000} +] +