iaravagni commited on
Commit
6e8eb41
·
0 Parent(s):

Initial commit

Browse files
Files changed (40) hide show
  1. .gitattributes +40 -0
  2. README.md +126 -0
  3. data/outputs/dl_predictions.csv +0 -0
  4. data/outputs/dl_predictions_raw.csv +0 -0
  5. data/outputs/ml_predictions.csv +0 -0
  6. data/outputs/ml_predictions_raw.csv +0 -0
  7. data/outputs/naive_predictions.csv +0 -0
  8. data/outputs/naive_predictions_raw.csv +0 -0
  9. data/processed/combined_dataset.csv +0 -0
  10. data/processed/dataset_by_patient/patient_001.csv +0 -0
  11. data/processed/dataset_by_patient/patient_002.csv +0 -0
  12. data/processed/dataset_by_patient/patient_003.csv +0 -0
  13. data/processed/dataset_by_patient/patient_004.csv +0 -0
  14. data/processed/dataset_by_patient/patient_005.csv +0 -0
  15. data/processed/dataset_by_patient/patient_006.csv +0 -0
  16. data/processed/dataset_by_patient/patient_007.csv +0 -0
  17. data/processed/dataset_by_patient/patient_008.csv +0 -0
  18. data/processed/dataset_by_patient/patient_009.csv +0 -0
  19. data/processed/dataset_by_patient/patient_010.csv +0 -0
  20. data/processed/dataset_by_patient/patient_011.csv +0 -0
  21. data/processed/dataset_by_patient/patient_012.csv +0 -0
  22. data/processed/dataset_by_patient/patient_013.csv +0 -0
  23. data/processed/dataset_by_patient/patient_014.csv +0 -0
  24. data/processed/dataset_by_patient/patient_015.csv +1674 -0
  25. data/processed/dataset_by_patient/patient_016.csv +0 -0
  26. data/processed/samples/sample_A.csv +201 -0
  27. data/processed/samples/sample_B.csv +202 -0
  28. data/processed/test_dataset.csv +0 -0
  29. data/processed/train_dataset.csv +0 -0
  30. data/processed/validation_dataset.csv +0 -0
  31. glucose_app.py +482 -0
  32. models/xgb_model.pkl +3 -0
  33. requirements.txt +0 -0
  34. scripts/dl_approach.py +354 -0
  35. scripts/finetuning.py +239 -0
  36. scripts/make_dataset.py +296 -0
  37. scripts/metrics.py +74 -0
  38. scripts/ml_approach.py +183 -0
  39. scripts/naive_approach.py +356 -0
  40. scripts/visualizations.py +25 -0
.gitattributes ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ *.7z filter=lfs diff=lfs merge=lfs -text
2
+ *.arrow filter=lfs diff=lfs merge=lfs -text
3
+ *.bin filter=lfs diff=lfs merge=lfs -text
4
+ *.bz2 filter=lfs diff=lfs merge=lfs -text
5
+ *.ckpt filter=lfs diff=lfs merge=lfs -text
6
+ *.ftz filter=lfs diff=lfs merge=lfs -text
7
+ *.gz filter=lfs diff=lfs merge=lfs -text
8
+ *.h5 filter=lfs diff=lfs merge=lfs -text
9
+ *.joblib filter=lfs diff=lfs merge=lfs -text
10
+ *.lfs.* filter=lfs diff=lfs merge=lfs -text
11
+ *.mlmodel filter=lfs diff=lfs merge=lfs -text
12
+ *.model filter=lfs diff=lfs merge=lfs -text
13
+ *.msgpack filter=lfs diff=lfs merge=lfs -text
14
+ *.npy filter=lfs diff=lfs merge=lfs -text
15
+ *.npz filter=lfs diff=lfs merge=lfs -text
16
+ *.onnx filter=lfs diff=lfs merge=lfs -text
17
+ *.ot filter=lfs diff=lfs merge=lfs -text
18
+ *.parquet filter=lfs diff=lfs merge=lfs -text
19
+ *.pb filter=lfs diff=lfs merge=lfs -text
20
+ *.pickle filter=lfs diff=lfs merge=lfs -text
21
+ *.pkl filter=lfs diff=lfs merge=lfs -text
22
+ *.pt filter=lfs diff=lfs merge=lfs -text
23
+ *.pth filter=lfs diff=lfs merge=lfs -text
24
+ *.rar filter=lfs diff=lfs merge=lfs -text
25
+ *.safetensors filter=lfs diff=lfs merge=lfs -text
26
+ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
27
+ *.tar.* filter=lfs diff=lfs merge=lfs -text
28
+ *.tar filter=lfs diff=lfs merge=lfs -text
29
+ *.tflite filter=lfs diff=lfs merge=lfs -text
30
+ *.tgz filter=lfs diff=lfs merge=lfs -text
31
+ *.wasm filter=lfs diff=lfs merge=lfs -text
32
+ *.xz filter=lfs diff=lfs merge=lfs -text
33
+ *.zip filter=lfs diff=lfs merge=lfs -text
34
+ *.zst filter=lfs diff=lfs merge=lfs -text
35
+ *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ data/processed/data.json filter=lfs diff=lfs merge=lfs -text
37
+ data/processed/combined_dataset.json filter=lfs diff=lfs merge=lfs -text
38
+ data/processed/input_data.json filter=lfs diff=lfs merge=lfs -text
39
+ git filter=lfs diff=lfs merge=lfs -text
40
+ add filter=lfs diff=lfs merge=lfs -text
README.md ADDED
@@ -0,0 +1,126 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # 🩸 Blood Glucose Level Prediction
2
+
3
+ This project explores multiple approaches for predicting blood glucose levels using multimodal data from the Big Ideas dataset. It includes data from wearables (accelerometer), nutritional inputs, and demographic/medical history features. Our goal is to evaluate and compare naive, machine learning, and deep learning methods to provide personalized and accurate glucose level forecasts.
4
+
5
+ ---
6
+
7
+ ## 🚀 Problem Statement
8
+
9
+ Blood glucose levels are influenced by numerous variables including physical activity, food intake, and individual physiology. Early prediction can empower individuals to manage and prevent health complications, especially for those with diabetes. This project seeks to build models that can forecast glucose levels based on a combination of behavioral and clinical data.
10
+
11
+ ---
12
+
13
+ ## 📊 Dataset Preparation
14
+
15
+ Data is structured from the **Big Ideas dataset** to include the following features:
16
+
17
+ - Glucose Level (target)
18
+ - Accelerometer
19
+ - Calories
20
+ - Carbs
21
+ - Sugar
22
+ - Gender
23
+ - HbA1c
24
+ - Age
25
+
26
+ The dataset is split as follows:
27
+ - **Train:** 13 patients (~80%)
28
+ - **Validation:** 2 patients from the training set (~15%)
29
+ - **Test:** 3 patients (~20%)
30
+
31
+ ### Generated Files:
32
+ - Individual CSV for each patient
33
+ - Combined dataset CSV
34
+ - Train/Validation/Test CSVs
35
+
36
+ ---
37
+
38
+ ## 🧠 Modeling Approaches
39
+
40
+ We evaluated 3 approaches to predict glucose levels:
41
+
42
+ ### 1. 🧮 Naive Approach
43
+ - Model: `ibm-granite/granite-timeseries-ttm-r2` (zero-shot)
44
+ - No fine-tuning
45
+
46
+ ### 2. 🌲 Machine Learning
47
+ - **Model:** XGBoost Regressor
48
+ ```python
49
+ xgb_model = xgb.XGBRegressor(
50
+ n_estimators=50,
51
+ learning_rate=0.2,
52
+ max_depth=5,
53
+ objective='reg:squarederror',
54
+ random_state=42
55
+ )
56
+ ```
57
+
58
+ ### 3. 🤖 Deep Learning
59
+ - **Model:** Fine-tuned `granite-timeseries-ttm-r2` on the structured dataset
60
+
61
+ ---
62
+
63
+ ## 📈 Results
64
+
65
+ | Approach | RMSE |
66
+ |----------|------|
67
+ | Naive | 3.7812 |
68
+ | ML | 3.9681 |
69
+ | DL | 3.8762 |
70
+
71
+ ---
72
+
73
+ ## 🌐 Streamlit Web App
74
+
75
+ The interactive app allows users to:
76
+ - Upload the 3 required CSVs
77
+ - Select preloaded patient samples
78
+ - View and compare predictions from:
79
+ - Naive model
80
+ - Machine Learning model
81
+ - Deep Learning model
82
+
83
+ > 📍 A working version is deployed and publicly accessible [**here**](#) *(add your link)*
84
+
85
+ ---
86
+
87
+ ## 📽️ Final Deliverables
88
+
89
+ - 🔗 [10-minute video presentation](#)
90
+ - 🔗 [Live Streamlit app](#)
91
+
92
+ ---
93
+
94
+ ## 🔍 Ethics Statement
95
+
96
+ While this project focuses on non-invasive glucose prediction, it is not intended for real-time clinical use. Any deployment of such tools must undergo rigorous validation and ethical review. We aim to respect user privacy, and datasets used in this project are anonymized and publicly available.
97
+
98
+ ---
99
+
100
+ ## ▶️ How to Run
101
+
102
+ Follow these steps to set up the environment and launch the Streamlit app:
103
+
104
+ 1. **Clone the repository:**
105
+ ```bash
106
+ git clone https://github.com/your-username/glucose-prediction.git
107
+ cd glucose-prediction
108
+ ```
109
+
110
+ 2. **Create and activate a virtual environment:**
111
+ ```bash
112
+ python -m venv venv
113
+ source venv/bin/activate # On Windows use: venv\Scripts\activate
114
+ ```
115
+
116
+ 3. **Install dependencies:**
117
+ ```bash
118
+ pip install -r requirements.txt
119
+ ```
120
+
121
+ 4. **Run the Streamlit app:**
122
+ ```bash
123
+ streamlit run glucose_app.py --server.maxUploadSize=1000
124
+ ```
125
+
126
+ This will launch the interactive app in your browser, allowing you to upload data and view predictions from the three modeling approaches.
data/outputs/dl_predictions.csv ADDED
The diff for this file is too large to render. See raw diff
 
data/outputs/dl_predictions_raw.csv ADDED
The diff for this file is too large to render. See raw diff
 
data/outputs/ml_predictions.csv ADDED
The diff for this file is too large to render. See raw diff
 
data/outputs/ml_predictions_raw.csv ADDED
The diff for this file is too large to render. See raw diff
 
data/outputs/naive_predictions.csv ADDED
The diff for this file is too large to render. See raw diff
 
data/outputs/naive_predictions_raw.csv ADDED
The diff for this file is too large to render. See raw diff
 
data/processed/combined_dataset.csv ADDED
The diff for this file is too large to render. See raw diff
 
data/processed/dataset_by_patient/patient_001.csv ADDED
The diff for this file is too large to render. See raw diff
 
data/processed/dataset_by_patient/patient_002.csv ADDED
The diff for this file is too large to render. See raw diff
 
data/processed/dataset_by_patient/patient_003.csv ADDED
The diff for this file is too large to render. See raw diff
 
data/processed/dataset_by_patient/patient_004.csv ADDED
The diff for this file is too large to render. See raw diff
 
data/processed/dataset_by_patient/patient_005.csv ADDED
The diff for this file is too large to render. See raw diff
 
data/processed/dataset_by_patient/patient_006.csv ADDED
The diff for this file is too large to render. See raw diff
 
data/processed/dataset_by_patient/patient_007.csv ADDED
The diff for this file is too large to render. See raw diff
 
data/processed/dataset_by_patient/patient_008.csv ADDED
The diff for this file is too large to render. See raw diff
 
data/processed/dataset_by_patient/patient_009.csv ADDED
The diff for this file is too large to render. See raw diff
 
data/processed/dataset_by_patient/patient_010.csv ADDED
The diff for this file is too large to render. See raw diff
 
data/processed/dataset_by_patient/patient_011.csv ADDED
The diff for this file is too large to render. See raw diff
 
data/processed/dataset_by_patient/patient_012.csv ADDED
The diff for this file is too large to render. See raw diff
 
data/processed/dataset_by_patient/patient_013.csv ADDED
The diff for this file is too large to render. See raw diff
 
data/processed/dataset_by_patient/patient_014.csv ADDED
The diff for this file is too large to render. See raw diff
 
data/processed/dataset_by_patient/patient_015.csv ADDED
@@ -0,0 +1,1674 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ,Timestamp,Glucose,Accelerometer,Calories,Carbs,Sugar,Gender,HbA1c,Age
2
+ 11,2020-07-19 17:33:52,99.0,65.76,0.0,0.0,0.0,1,5.5,49
3
+ 12,2020-07-19 17:38:52,97.0,65.47,0.0,0.0,0.0,1,5.5,49
4
+ 13,2020-07-19 17:43:52,100.0,65.76,0.0,0.0,0.0,1,5.5,49
5
+ 14,2020-07-19 17:48:52,106.0,65.44,0.0,0.0,0.0,1,5.5,49
6
+ 15,2020-07-19 17:53:52,110.0,65.8,0.0,0.0,0.0,1,5.5,49
7
+ 16,2020-07-19 17:58:52,108.0,65.51,0.0,0.0,0.0,1,5.5,49
8
+ 17,2020-07-19 18:03:52,103.0,65.32,0.0,0.0,0.0,1,5.5,49
9
+ 18,2020-07-19 18:08:52,98.0,65.3,0.0,0.0,0.0,1,5.5,49
10
+ 19,2020-07-19 18:13:52,97.0,64.9,0.0,0.0,0.0,1,5.5,49
11
+ 20,2020-07-19 18:18:52,96.0,66.32,0.0,0.0,0.0,1,5.5,49
12
+ 21,2020-07-19 18:23:52,97.0,66.07,0.0,0.0,0.0,1,5.5,49
13
+ 22,2020-07-19 18:28:52,98.0,65.3,0.0,0.0,0.0,1,5.5,49
14
+ 23,2020-07-19 18:33:52,98.0,67.47,0.0,0.0,0.0,1,5.5,49
15
+ 24,2020-07-19 18:38:52,99.0,66.39,0.0,0.0,0.0,1,5.5,49
16
+ 25,2020-07-19 18:43:52,96.0,66.88,0.0,0.0,0.0,1,5.5,49
17
+ 26,2020-07-19 18:48:52,92.0,66.19,0.0,0.0,0.0,1,5.5,49
18
+ 27,2020-07-19 18:53:52,87.0,67.04,0.0,0.0,0.0,1,5.5,49
19
+ 28,2020-07-19 18:58:52,82.0,66.02,0.0,0.0,0.0,1,5.5,49
20
+ 29,2020-07-19 19:03:52,81.0,67.01,0.0,0.0,0.0,1,5.5,49
21
+ 30,2020-07-19 19:08:52,88.0,68.25,0.0,0.0,0.0,1,5.5,49
22
+ 31,2020-07-19 19:13:52,98.0,66.93,0.0,0.0,0.0,1,5.5,49
23
+ 32,2020-07-19 19:18:52,100.0,68.3,0.0,0.0,0.0,1,5.5,49
24
+ 33,2020-07-19 19:23:52,91.0,66.83,0.0,0.0,0.0,1,5.5,49
25
+ 34,2020-07-19 19:28:52,82.0,67.08,0.0,0.0,0.0,1,5.5,49
26
+ 35,2020-07-19 19:33:52,85.0,66.35,0.0,0.0,0.0,1,5.5,49
27
+ 36,2020-07-19 19:38:52,89.0,66.62,0.0,0.0,0.0,1,5.5,49
28
+ 37,2020-07-19 19:43:52,87.0,66.6,0.0,0.0,0.0,1,5.5,49
29
+ 38,2020-07-19 19:48:52,74.0,65.53,0.0,0.0,0.0,1,5.5,49
30
+ 39,2020-07-19 19:53:52,60.0,65.53,0.0,0.0,0.0,1,5.5,49
31
+ 40,2020-07-19 19:58:52,50.0,64.35,0.0,0.0,0.0,1,5.5,49
32
+ 41,2020-07-19 20:03:52,42.0,64.65,0.0,0.0,0.0,1,5.5,49
33
+ 42,2020-07-19 20:13:52,50.0,66.32,0.0,0.0,0.0,1,5.5,49
34
+ 43,2020-07-19 20:18:52,61.0,66.05,0.0,0.0,0.0,1,5.5,49
35
+ 44,2020-07-19 20:23:52,75.0,65.19,0.0,0.0,0.0,1,5.5,49
36
+ 45,2020-07-19 20:28:52,87.0,64.01,0.0,0.0,0.0,1,5.5,49
37
+ 46,2020-07-19 20:33:52,92.0,64.37,0.0,0.0,0.0,1,5.5,49
38
+ 47,2020-07-19 20:38:52,84.0,63.53,0.0,0.0,0.0,1,5.5,49
39
+ 48,2020-07-19 20:43:54,72.0,64.66,0.0,0.0,0.0,1,5.5,49
40
+ 49,2020-07-19 20:48:54,61.0,64.33,0.0,0.0,0.0,1,5.5,49
41
+ 50,2020-07-19 20:53:54,67.0,63.63,0.0,0.0,0.0,1,5.5,49
42
+ 51,2020-07-19 20:58:54,81.0,64.14,0.0,0.0,0.0,1,5.5,49
43
+ 52,2020-07-19 21:03:55,97.0,63.63,0.0,0.0,0.0,1,5.5,49
44
+ 53,2020-07-19 21:08:54,105.0,64.24,0.0,0.0,0.0,1,5.5,49
45
+ 54,2020-07-19 21:13:55,105.0,65.0,0.0,0.0,0.0,1,5.5,49
46
+ 55,2020-07-19 21:18:53,104.0,63.89,0.0,0.0,0.0,1,5.5,49
47
+ 56,2020-07-19 21:23:53,102.0,65.46,0.0,0.0,0.0,1,5.5,49
48
+ 57,2020-07-19 21:28:53,103.0,64.12,0.0,0.0,0.0,1,5.5,49
49
+ 58,2020-07-19 21:33:54,103.0,64.72,0.0,0.0,0.0,1,5.5,49
50
+ 59,2020-07-19 21:38:54,103.0,63.46,0.0,0.0,0.0,1,5.5,49
51
+ 60,2020-07-19 21:43:53,101.0,63.85,0.0,0.0,0.0,1,5.5,49
52
+ 61,2020-07-19 21:48:54,97.0,63.3,0.0,0.0,0.0,1,5.5,49
53
+ 62,2020-07-19 21:53:54,94.0,63.36,0.0,0.0,0.0,1,5.5,49
54
+ 63,2020-07-19 21:58:54,92.0,63.61,0.0,0.0,0.0,1,5.5,49
55
+ 64,2020-07-19 22:03:54,89.0,63.45,0.0,0.0,0.0,1,5.5,49
56
+ 65,2020-07-19 22:08:54,87.0,63.26,0.0,0.0,0.0,1,5.5,49
57
+ 66,2020-07-19 22:13:54,86.0,63.04,0.0,0.0,0.0,1,5.5,49
58
+ 67,2020-07-19 22:18:54,87.0,64.43,0.0,0.0,0.0,1,5.5,49
59
+ 68,2020-07-19 22:23:54,90.0,64.75,0.0,0.0,0.0,1,5.5,49
60
+ 69,2020-07-19 22:28:54,93.0,63.96,0.0,0.0,0.0,1,5.5,49
61
+ 70,2020-07-19 22:33:54,96.0,63.75,0.0,0.0,0.0,1,5.5,49
62
+ 71,2020-07-19 22:38:54,97.0,63.56,0.0,0.0,0.0,1,5.5,49
63
+ 72,2020-07-19 22:43:54,98.0,63.37,0.0,0.0,0.0,1,5.5,49
64
+ 73,2020-07-19 22:48:54,98.0,63.75,0.0,0.0,0.0,1,5.5,49
65
+ 74,2020-07-19 22:53:54,99.0,64.53,0.0,0.0,0.0,1,5.5,49
66
+ 75,2020-07-19 22:58:54,98.0,63.84,0.0,0.0,0.0,1,5.5,49
67
+ 76,2020-07-19 23:03:54,99.0,64.56,0.0,0.0,0.0,1,5.5,49
68
+ 77,2020-07-19 23:08:54,101.0,64.85,0.0,0.0,0.0,1,5.5,49
69
+ 78,2020-07-19 23:13:54,108.0,64.26,0.0,0.0,0.0,1,5.5,49
70
+ 79,2020-07-19 23:18:54,112.0,65.18,0.0,0.0,0.0,1,5.5,49
71
+ 80,2020-07-19 23:23:54,112.0,64.85,0.0,0.0,0.0,1,5.5,49
72
+ 81,2020-07-19 23:28:54,114.0,64.22,0.0,0.0,0.0,1,5.5,49
73
+ 82,2020-07-19 23:33:54,117.0,64.45,0.0,0.0,0.0,1,5.5,49
74
+ 83,2020-07-19 23:38:54,122.0,64.91,0.0,0.0,0.0,1,5.5,49
75
+ 84,2020-07-19 23:43:54,124.0,65.05,0.0,0.0,0.0,1,5.5,49
76
+ 85,2020-07-19 23:48:54,129.0,64.9,0.0,0.0,0.0,1,5.5,49
77
+ 86,2020-07-19 23:53:54,131.0,64.93,0.0,0.0,0.0,1,5.5,49
78
+ 87,2020-07-19 23:58:54,137.0,63.96,0.0,0.0,0.0,1,5.5,49
79
+ 88,2020-07-20 00:03:53,146.0,63.64,0.0,0.0,0.0,1,5.5,49
80
+ 89,2020-07-20 21:13:54,124.0,0.0,0.0,0.0,0.0,1,5.5,49
81
+ 90,2020-07-20 21:18:54,120.0,0.0,0.0,0.0,0.0,1,5.5,49
82
+ 91,2020-07-20 21:23:54,116.0,0.0,0.0,0.0,0.0,1,5.5,49
83
+ 92,2020-07-20 21:28:54,115.0,0.0,0.0,0.0,0.0,1,5.5,49
84
+ 93,2020-07-20 21:33:54,116.0,0.0,0.0,0.0,0.0,1,5.5,49
85
+ 94,2020-07-20 21:38:54,119.0,0.0,0.0,0.0,0.0,1,5.5,49
86
+ 95,2020-07-20 21:43:54,119.0,0.0,0.0,0.0,0.0,1,5.5,49
87
+ 96,2020-07-20 21:48:54,117.0,0.0,0.0,0.0,0.0,1,5.5,49
88
+ 97,2020-07-20 21:53:54,113.0,0.0,0.0,0.0,0.0,1,5.5,49
89
+ 98,2020-07-20 21:58:54,111.0,0.0,0.0,0.0,0.0,1,5.5,49
90
+ 99,2020-07-20 22:03:54,111.0,0.0,0.0,0.0,0.0,1,5.5,49
91
+ 100,2020-07-20 22:08:54,112.0,0.0,0.0,0.0,0.0,1,5.5,49
92
+ 101,2020-07-20 22:13:54,111.0,0.0,0.0,0.0,0.0,1,5.5,49
93
+ 102,2020-07-20 22:18:54,110.0,0.0,0.0,0.0,0.0,1,5.5,49
94
+ 103,2020-07-20 22:23:54,111.0,0.0,0.0,0.0,0.0,1,5.5,49
95
+ 104,2020-07-20 22:28:54,113.0,0.0,0.0,0.0,0.0,1,5.5,49
96
+ 105,2020-07-20 22:33:54,114.0,0.0,0.0,0.0,0.0,1,5.5,49
97
+ 106,2020-07-20 22:38:54,114.0,0.0,0.0,0.0,0.0,1,5.5,49
98
+ 107,2020-07-20 22:43:54,113.0,0.0,0.0,0.0,0.0,1,5.5,49
99
+ 108,2020-07-20 22:48:54,113.0,0.0,0.0,0.0,0.0,1,5.5,49
100
+ 109,2020-07-20 22:53:54,112.0,0.0,0.0,0.0,0.0,1,5.5,49
101
+ 110,2020-07-20 22:58:54,112.0,0.0,0.0,0.0,0.0,1,5.5,49
102
+ 111,2020-07-20 23:03:54,113.0,0.0,0.0,0.0,0.0,1,5.5,49
103
+ 112,2020-07-20 23:08:54,114.0,0.0,0.0,0.0,0.0,1,5.5,49
104
+ 113,2020-07-20 23:13:54,114.0,0.0,0.0,0.0,0.0,1,5.5,49
105
+ 114,2020-07-20 23:18:54,113.0,0.0,0.0,0.0,0.0,1,5.5,49
106
+ 115,2020-07-20 23:23:54,112.0,0.0,0.0,0.0,0.0,1,5.5,49
107
+ 116,2020-07-20 23:28:54,112.0,0.0,0.0,0.0,0.0,1,5.5,49
108
+ 117,2020-07-20 23:33:54,112.0,0.0,0.0,0.0,0.0,1,5.5,49
109
+ 118,2020-07-20 23:38:54,113.0,0.0,0.0,0.0,0.0,1,5.5,49
110
+ 119,2020-07-20 23:43:54,115.0,0.0,0.0,0.0,0.0,1,5.5,49
111
+ 120,2020-07-20 23:48:54,117.0,0.0,0.0,0.0,0.0,1,5.5,49
112
+ 121,2020-07-20 23:53:54,118.0,0.0,0.0,0.0,0.0,1,5.5,49
113
+ 122,2020-07-20 23:58:54,117.0,0.0,0.0,0.0,0.0,1,5.5,49
114
+ 123,2020-07-21 00:03:54,114.0,0.0,0.0,0.0,0.0,1,5.5,49
115
+ 124,2020-07-21 00:08:54,111.0,0.0,0.0,0.0,0.0,1,5.5,49
116
+ 125,2020-07-21 00:13:54,109.0,0.0,0.0,0.0,0.0,1,5.5,49
117
+ 126,2020-07-21 00:18:54,107.0,0.0,0.0,0.0,0.0,1,5.5,49
118
+ 127,2020-07-21 00:23:53,107.0,0.0,0.0,0.0,0.0,1,5.5,49
119
+ 128,2020-07-21 00:28:54,106.0,0.0,0.0,0.0,0.0,1,5.5,49
120
+ 129,2020-07-21 00:33:53,105.0,0.0,0.0,0.0,0.0,1,5.5,49
121
+ 130,2020-07-21 00:38:53,105.0,0.0,0.0,0.0,0.0,1,5.5,49
122
+ 131,2020-07-21 00:43:53,108.0,0.0,0.0,0.0,0.0,1,5.5,49
123
+ 132,2020-07-21 00:48:53,116.0,0.0,0.0,0.0,0.0,1,5.5,49
124
+ 133,2020-07-21 00:53:53,126.0,0.0,0.0,0.0,0.0,1,5.5,49
125
+ 134,2020-07-21 00:58:54,136.0,0.0,0.0,0.0,0.0,1,5.5,49
126
+ 135,2020-07-21 01:03:54,143.0,0.0,0.0,0.0,0.0,1,5.5,49
127
+ 136,2020-07-21 01:08:54,147.0,0.0,0.0,0.0,0.0,1,5.5,49
128
+ 137,2020-07-21 01:13:54,145.0,0.0,0.0,0.0,0.0,1,5.5,49
129
+ 138,2020-07-21 01:18:54,140.0,0.0,0.0,0.0,0.0,1,5.5,49
130
+ 139,2020-07-21 01:23:54,134.0,0.0,0.0,0.0,0.0,1,5.5,49
131
+ 140,2020-07-21 01:28:54,130.0,0.0,0.0,0.0,0.0,1,5.5,49
132
+ 141,2020-07-21 01:33:54,127.0,0.0,0.0,0.0,0.0,1,5.5,49
133
+ 142,2020-07-21 01:38:54,126.0,0.0,0.0,0.0,0.0,1,5.5,49
134
+ 143,2020-07-21 01:43:54,126.0,0.0,0.0,0.0,0.0,1,5.5,49
135
+ 144,2020-07-21 01:48:54,127.0,0.0,0.0,0.0,0.0,1,5.5,49
136
+ 145,2020-07-21 01:53:54,129.0,0.0,0.0,0.0,0.0,1,5.5,49
137
+ 146,2020-07-21 01:58:53,130.0,0.0,0.0,0.0,0.0,1,5.5,49
138
+ 147,2020-07-21 02:03:54,131.0,0.0,0.0,0.0,0.0,1,5.5,49
139
+ 148,2020-07-21 02:08:54,132.0,0.0,0.0,0.0,0.0,1,5.5,49
140
+ 149,2020-07-21 02:13:53,132.0,0.0,0.0,0.0,0.0,1,5.5,49
141
+ 150,2020-07-21 02:18:54,132.0,0.0,0.0,0.0,0.0,1,5.5,49
142
+ 151,2020-07-21 02:23:54,131.0,0.0,0.0,0.0,0.0,1,5.5,49
143
+ 152,2020-07-21 02:28:54,130.0,0.0,0.0,0.0,0.0,1,5.5,49
144
+ 153,2020-07-21 02:33:54,129.0,0.0,0.0,0.0,0.0,1,5.5,49
145
+ 154,2020-07-21 02:38:54,128.0,0.0,0.0,0.0,0.0,1,5.5,49
146
+ 155,2020-07-21 02:43:54,128.0,0.0,0.0,0.0,0.0,1,5.5,49
147
+ 156,2020-07-21 02:48:54,128.0,0.0,0.0,0.0,0.0,1,5.5,49
148
+ 157,2020-07-21 02:53:53,128.0,0.0,0.0,0.0,0.0,1,5.5,49
149
+ 158,2020-07-21 02:58:53,129.0,0.0,0.0,0.0,0.0,1,5.5,49
150
+ 159,2020-07-21 03:03:54,130.0,0.0,0.0,0.0,0.0,1,5.5,49
151
+ 160,2020-07-21 03:08:54,130.0,0.0,0.0,0.0,0.0,1,5.5,49
152
+ 161,2020-07-21 03:13:54,128.0,0.0,0.0,0.0,0.0,1,5.5,49
153
+ 162,2020-07-21 03:18:54,126.0,0.0,0.0,0.0,0.0,1,5.5,49
154
+ 163,2020-07-21 03:23:54,124.0,0.0,0.0,0.0,0.0,1,5.5,49
155
+ 164,2020-07-21 03:28:54,123.0,0.0,0.0,0.0,0.0,1,5.5,49
156
+ 165,2020-07-21 03:33:54,123.0,0.0,0.0,0.0,0.0,1,5.5,49
157
+ 166,2020-07-21 03:38:54,124.0,0.0,0.0,0.0,0.0,1,5.5,49
158
+ 167,2020-07-21 03:43:54,125.0,0.0,0.0,0.0,0.0,1,5.5,49
159
+ 168,2020-07-21 03:48:53,126.0,0.0,0.0,0.0,0.0,1,5.5,49
160
+ 169,2020-07-21 03:53:54,127.0,0.0,0.0,0.0,0.0,1,5.5,49
161
+ 170,2020-07-21 03:58:54,127.0,0.0,0.0,0.0,0.0,1,5.5,49
162
+ 171,2020-07-21 04:03:54,128.0,0.0,0.0,0.0,0.0,1,5.5,49
163
+ 172,2020-07-21 04:08:54,129.0,0.0,0.0,0.0,0.0,1,5.5,49
164
+ 173,2020-07-21 04:13:54,129.0,0.0,0.0,0.0,0.0,1,5.5,49
165
+ 174,2020-07-21 04:18:54,129.0,0.0,0.0,0.0,0.0,1,5.5,49
166
+ 175,2020-07-21 04:23:54,129.0,0.0,0.0,0.0,0.0,1,5.5,49
167
+ 176,2020-07-21 04:28:54,129.0,0.0,0.0,0.0,0.0,1,5.5,49
168
+ 177,2020-07-21 04:33:54,129.0,0.0,0.0,0.0,0.0,1,5.5,49
169
+ 178,2020-07-21 04:38:54,128.0,0.0,0.0,0.0,0.0,1,5.5,49
170
+ 179,2020-07-21 04:43:54,127.0,0.0,0.0,0.0,0.0,1,5.5,49
171
+ 180,2020-07-21 04:48:54,127.0,0.0,0.0,0.0,0.0,1,5.5,49
172
+ 181,2020-07-21 04:53:54,126.0,0.0,0.0,0.0,0.0,1,5.5,49
173
+ 182,2020-07-21 04:58:54,124.0,0.0,0.0,0.0,0.0,1,5.5,49
174
+ 183,2020-07-21 05:03:54,123.0,0.0,0.0,0.0,0.0,1,5.5,49
175
+ 184,2020-07-21 05:08:54,123.0,0.0,0.0,0.0,0.0,1,5.5,49
176
+ 185,2020-07-21 05:13:54,124.0,0.0,0.0,0.0,0.0,1,5.5,49
177
+ 186,2020-07-21 05:18:54,124.0,0.0,0.0,0.0,0.0,1,5.5,49
178
+ 187,2020-07-21 05:23:54,123.0,0.0,0.0,0.0,0.0,1,5.5,49
179
+ 188,2020-07-21 05:28:53,123.0,0.0,0.0,0.0,0.0,1,5.5,49
180
+ 189,2020-07-21 05:33:54,122.0,0.0,0.0,0.0,0.0,1,5.5,49
181
+ 190,2020-07-21 05:38:53,121.0,0.0,0.0,0.0,0.0,1,5.5,49
182
+ 191,2020-07-21 05:43:54,120.0,0.0,0.0,0.0,0.0,1,5.5,49
183
+ 192,2020-07-21 05:48:54,119.0,0.0,0.0,0.0,0.0,1,5.5,49
184
+ 193,2020-07-21 05:53:53,117.0,0.0,0.0,0.0,0.0,1,5.5,49
185
+ 194,2020-07-21 05:58:53,114.0,0.0,0.0,0.0,0.0,1,5.5,49
186
+ 195,2020-07-21 06:03:54,114.0,0.0,0.0,0.0,0.0,1,5.5,49
187
+ 196,2020-07-21 06:08:54,116.0,0.0,0.0,0.0,0.0,1,5.5,49
188
+ 197,2020-07-21 06:13:53,119.0,0.0,0.0,0.0,0.0,1,5.5,49
189
+ 198,2020-07-21 06:18:53,121.0,0.0,0.0,0.0,0.0,1,5.5,49
190
+ 199,2020-07-21 06:23:54,121.0,0.0,0.0,0.0,0.0,1,5.5,49
191
+ 200,2020-07-21 06:28:53,122.0,0.0,0.0,0.0,0.0,1,5.5,49
192
+ 201,2020-07-21 06:33:52,122.0,0.0,0.0,0.0,0.0,1,5.5,49
193
+ 202,2020-07-21 06:38:53,121.0,0.0,0.0,0.0,0.0,1,5.5,49
194
+ 203,2020-07-21 06:43:53,120.0,0.0,0.0,0.0,0.0,1,5.5,49
195
+ 204,2020-07-21 06:48:53,120.0,0.0,0.0,0.0,0.0,1,5.5,49
196
+ 205,2020-07-21 06:53:53,122.0,0.0,0.0,0.0,0.0,1,5.5,49
197
+ 206,2020-07-21 06:58:53,124.0,0.0,0.0,0.0,0.0,1,5.5,49
198
+ 207,2020-07-21 07:03:53,126.0,0.0,0.0,0.0,0.0,1,5.5,49
199
+ 208,2020-07-21 07:08:53,126.0,0.0,0.0,0.0,0.0,1,5.5,49
200
+ 209,2020-07-21 07:13:53,126.0,0.0,0.0,0.0,0.0,1,5.5,49
201
+ 210,2020-07-21 07:18:53,125.0,0.0,0.0,0.0,0.0,1,5.5,49
202
+ 211,2020-07-21 07:23:53,124.0,0.0,0.0,0.0,0.0,1,5.5,49
203
+ 212,2020-07-21 07:28:52,123.0,0.0,0.0,0.0,0.0,1,5.5,49
204
+ 213,2020-07-21 07:33:52,123.0,0.0,0.0,0.0,0.0,1,5.5,49
205
+ 214,2020-07-21 07:38:53,123.0,0.0,0.0,0.0,0.0,1,5.5,49
206
+ 215,2020-07-21 07:43:53,123.0,0.0,0.0,0.0,0.0,1,5.5,49
207
+ 216,2020-07-21 07:48:53,123.0,0.0,0.0,0.0,0.0,1,5.5,49
208
+ 217,2020-07-21 07:53:52,124.0,0.0,0.0,0.0,0.0,1,5.5,49
209
+ 218,2020-07-21 07:58:52,124.0,0.0,0.0,0.0,0.0,1,5.5,49
210
+ 219,2020-07-21 08:03:53,124.0,0.0,0.0,0.0,0.0,1,5.5,49
211
+ 220,2020-07-21 08:08:52,124.0,0.0,0.0,0.0,0.0,1,5.5,49
212
+ 221,2020-07-21 08:13:53,124.0,0.0,0.0,0.0,0.0,1,5.5,49
213
+ 222,2020-07-21 08:18:52,123.0,0.0,0.0,0.0,0.0,1,5.5,49
214
+ 223,2020-07-21 08:23:52,123.0,0.0,0.0,0.0,0.0,1,5.5,49
215
+ 224,2020-07-21 08:28:53,123.0,0.0,0.0,0.0,0.0,1,5.5,49
216
+ 225,2020-07-21 08:33:53,123.0,0.0,0.0,0.0,0.0,1,5.5,49
217
+ 226,2020-07-21 08:38:52,123.0,0.0,0.0,0.0,0.0,1,5.5,49
218
+ 227,2020-07-21 08:43:53,123.0,0.0,0.0,0.0,0.0,1,5.5,49
219
+ 228,2020-07-21 08:48:52,123.0,0.0,0.0,0.0,0.0,1,5.5,49
220
+ 229,2020-07-21 08:53:52,120.0,0.0,0.0,0.0,0.0,1,5.5,49
221
+ 230,2020-07-21 08:58:53,116.0,0.0,0.0,0.0,0.0,1,5.5,49
222
+ 231,2020-07-21 09:03:53,111.0,0.0,0.0,0.0,0.0,1,5.5,49
223
+ 232,2020-07-21 09:08:52,109.0,0.0,0.0,0.0,0.0,1,5.5,49
224
+ 233,2020-07-21 09:13:53,108.0,0.0,0.0,0.0,0.0,1,5.5,49
225
+ 234,2020-07-21 09:18:53,107.0,0.0,0.0,0.0,0.0,1,5.5,49
226
+ 235,2020-07-21 09:23:52,105.0,0.0,0.0,0.0,0.0,1,5.5,49
227
+ 236,2020-07-21 09:28:53,102.0,0.0,0.0,0.0,0.0,1,5.5,49
228
+ 237,2020-07-21 09:33:52,101.0,0.0,0.0,0.0,0.0,1,5.5,49
229
+ 238,2020-07-21 09:38:52,101.0,0.0,0.0,0.0,0.0,1,5.5,49
230
+ 239,2020-07-21 09:43:53,101.0,0.0,0.0,0.0,0.0,1,5.5,49
231
+ 240,2020-07-21 09:48:53,101.0,0.0,0.0,0.0,0.0,1,5.5,49
232
+ 241,2020-07-21 09:53:52,101.0,0.0,0.0,0.0,0.0,1,5.5,49
233
+ 242,2020-07-21 09:58:52,103.0,0.0,0.0,0.0,0.0,1,5.5,49
234
+ 243,2020-07-21 10:03:52,104.0,0.0,0.0,0.0,0.0,1,5.5,49
235
+ 244,2020-07-21 10:08:53,104.0,0.0,0.0,0.0,0.0,1,5.5,49
236
+ 245,2020-07-21 10:13:53,102.0,0.0,0.0,0.0,0.0,1,5.5,49
237
+ 246,2020-07-21 10:18:53,101.0,0.0,0.0,0.0,0.0,1,5.5,49
238
+ 247,2020-07-21 10:23:52,100.0,0.0,0.0,0.0,0.0,1,5.5,49
239
+ 248,2020-07-21 10:28:53,99.0,0.0,0.0,0.0,0.0,1,5.5,49
240
+ 249,2020-07-21 10:33:52,99.0,0.0,0.0,0.0,0.0,1,5.5,49
241
+ 250,2020-07-21 10:38:52,98.0,0.0,0.0,0.0,0.0,1,5.5,49
242
+ 251,2020-07-21 10:43:53,98.0,0.0,0.0,0.0,0.0,1,5.5,49
243
+ 252,2020-07-21 10:48:53,98.0,0.0,0.0,0.0,0.0,1,5.5,49
244
+ 253,2020-07-21 10:53:52,98.0,0.0,0.0,0.0,0.0,1,5.5,49
245
+ 254,2020-07-21 10:58:53,98.0,0.0,0.0,0.0,0.0,1,5.5,49
246
+ 255,2020-07-21 11:03:53,97.0,0.0,0.0,0.0,0.0,1,5.5,49
247
+ 256,2020-07-21 11:08:53,96.0,0.0,0.0,0.0,0.0,1,5.5,49
248
+ 257,2020-07-21 11:13:52,96.0,0.0,0.0,0.0,0.0,1,5.5,49
249
+ 258,2020-07-21 11:18:52,96.0,0.0,0.0,0.0,0.0,1,5.5,49
250
+ 259,2020-07-21 11:23:53,95.0,0.0,0.0,0.0,0.0,1,5.5,49
251
+ 260,2020-07-21 11:28:52,94.0,0.0,0.0,0.0,0.0,1,5.5,49
252
+ 261,2020-07-21 11:33:52,93.0,0.0,0.0,0.0,0.0,1,5.5,49
253
+ 262,2020-07-21 11:38:52,93.0,0.0,0.0,0.0,0.0,1,5.5,49
254
+ 263,2020-07-21 11:43:52,93.0,0.0,0.0,0.0,0.0,1,5.5,49
255
+ 264,2020-07-21 11:48:53,94.0,0.0,0.0,0.0,0.0,1,5.5,49
256
+ 265,2020-07-21 11:53:52,96.0,0.0,0.0,0.0,0.0,1,5.5,49
257
+ 266,2020-07-21 11:58:53,98.0,0.0,0.0,0.0,0.0,1,5.5,49
258
+ 267,2020-07-21 12:03:52,99.0,0.0,0.0,0.0,0.0,1,5.5,49
259
+ 268,2020-07-21 12:08:52,99.0,0.0,0.0,0.0,0.0,1,5.5,49
260
+ 269,2020-07-21 12:13:52,98.0,0.0,0.0,0.0,0.0,1,5.5,49
261
+ 270,2020-07-21 12:18:53,99.0,0.0,0.0,0.0,0.0,1,5.5,49
262
+ 271,2020-07-21 12:23:52,102.0,0.0,0.0,0.0,0.0,1,5.5,49
263
+ 272,2020-07-21 12:28:53,105.0,0.0,0.0,0.0,0.0,1,5.5,49
264
+ 273,2020-07-21 12:33:53,108.0,0.0,0.0,0.0,0.0,1,5.5,49
265
+ 274,2020-07-21 12:38:53,107.0,0.0,0.0,0.0,0.0,1,5.5,49
266
+ 275,2020-07-21 12:43:53,105.0,0.0,0.0,0.0,0.0,1,5.5,49
267
+ 276,2020-07-21 12:48:52,104.0,0.0,0.0,0.0,0.0,1,5.5,49
268
+ 277,2020-07-21 12:53:52,104.0,0.0,0.0,0.0,0.0,1,5.5,49
269
+ 278,2020-07-21 12:58:53,106.0,0.0,0.0,0.0,0.0,1,5.5,49
270
+ 279,2020-07-21 13:03:53,110.0,0.0,0.0,0.0,0.0,1,5.5,49
271
+ 280,2020-07-21 13:08:52,111.0,0.0,0.0,0.0,0.0,1,5.5,49
272
+ 281,2020-07-21 13:13:52,113.0,0.0,0.0,0.0,0.0,1,5.5,49
273
+ 282,2020-07-21 13:18:52,115.0,0.0,0.0,0.0,0.0,1,5.5,49
274
+ 283,2020-07-21 13:23:52,118.0,0.0,0.0,0.0,0.0,1,5.5,49
275
+ 284,2020-07-21 13:28:52,120.0,0.0,0.0,0.0,0.0,1,5.5,49
276
+ 285,2020-07-21 13:33:51,121.0,0.0,0.0,0.0,0.0,1,5.5,49
277
+ 286,2020-07-21 13:38:52,121.0,0.0,0.0,0.0,0.0,1,5.5,49
278
+ 287,2020-07-21 13:43:52,122.0,0.0,0.0,0.0,0.0,1,5.5,49
279
+ 288,2020-07-21 13:48:52,123.0,0.0,0.0,0.0,0.0,1,5.5,49
280
+ 289,2020-07-21 13:53:51,123.0,0.0,0.0,0.0,0.0,1,5.5,49
281
+ 290,2020-07-21 13:58:51,122.0,0.0,0.0,0.0,0.0,1,5.5,49
282
+ 291,2020-07-21 14:03:52,122.0,0.0,0.0,0.0,0.0,1,5.5,49
283
+ 292,2020-07-21 14:08:51,121.0,0.0,0.0,0.0,0.0,1,5.5,49
284
+ 293,2020-07-21 14:13:51,119.0,0.0,0.0,0.0,0.0,1,5.5,49
285
+ 294,2020-07-21 14:18:52,117.0,0.0,0.0,0.0,0.0,1,5.5,49
286
+ 295,2020-07-21 14:23:52,115.0,0.0,0.0,0.0,0.0,1,5.5,49
287
+ 296,2020-07-21 14:28:52,112.0,0.0,0.0,0.0,0.0,1,5.5,49
288
+ 297,2020-07-21 14:33:52,109.0,0.0,0.0,0.0,0.0,1,5.5,49
289
+ 298,2020-07-21 14:38:51,107.0,0.0,0.0,0.0,0.0,1,5.5,49
290
+ 299,2020-07-21 14:43:51,106.0,0.0,0.0,0.0,0.0,1,5.5,49
291
+ 300,2020-07-21 14:48:51,106.0,0.0,0.0,0.0,0.0,1,5.5,49
292
+ 301,2020-07-21 14:53:52,105.0,0.0,0.0,0.0,0.0,1,5.5,49
293
+ 302,2020-07-21 14:58:52,104.0,0.0,0.0,0.0,0.0,1,5.5,49
294
+ 303,2020-07-21 15:03:52,105.0,0.0,0.0,0.0,0.0,1,5.5,49
295
+ 304,2020-07-21 15:08:52,106.0,0.0,0.0,0.0,0.0,1,5.5,49
296
+ 305,2020-07-21 15:13:52,107.0,0.0,0.0,0.0,0.0,1,5.5,49
297
+ 306,2020-07-21 15:18:51,108.0,0.0,0.0,0.0,0.0,1,5.5,49
298
+ 307,2020-07-21 15:23:52,109.0,0.0,0.0,0.0,0.0,1,5.5,49
299
+ 308,2020-07-21 15:28:51,109.0,0.0,0.0,0.0,0.0,1,5.5,49
300
+ 309,2020-07-21 15:33:51,109.0,0.0,0.0,0.0,0.0,1,5.5,49
301
+ 310,2020-07-21 15:38:52,107.0,0.0,0.0,0.0,0.0,1,5.5,49
302
+ 311,2020-07-21 15:43:51,106.0,0.0,0.0,0.0,0.0,1,5.5,49
303
+ 312,2020-07-21 15:48:51,103.0,0.0,0.0,0.0,0.0,1,5.5,49
304
+ 313,2020-07-21 15:53:51,101.0,0.0,0.0,0.0,0.0,1,5.5,49
305
+ 314,2020-07-21 15:58:51,100.0,0.0,0.0,0.0,0.0,1,5.5,49
306
+ 315,2020-07-21 16:03:51,100.0,0.0,0.0,0.0,0.0,1,5.5,49
307
+ 316,2020-07-21 16:08:51,100.0,0.0,0.0,0.0,0.0,1,5.5,49
308
+ 317,2020-07-21 16:13:52,100.0,0.0,0.0,0.0,0.0,1,5.5,49
309
+ 318,2020-07-21 16:18:52,98.0,0.0,0.0,0.0,0.0,1,5.5,49
310
+ 319,2020-07-21 16:23:51,97.0,0.0,0.0,0.0,0.0,1,5.5,49
311
+ 320,2020-07-21 16:28:52,96.0,0.0,0.0,0.0,0.0,1,5.5,49
312
+ 321,2020-07-21 16:33:51,95.0,0.0,0.0,0.0,0.0,1,5.5,49
313
+ 322,2020-07-21 16:38:52,94.0,0.0,0.0,0.0,0.0,1,5.5,49
314
+ 323,2020-07-21 16:43:51,94.0,0.0,0.0,0.0,0.0,1,5.5,49
315
+ 324,2020-07-21 16:48:51,93.0,0.0,0.0,0.0,0.0,1,5.5,49
316
+ 325,2020-07-21 16:53:52,92.0,0.0,0.0,0.0,0.0,1,5.5,49
317
+ 326,2020-07-21 16:58:52,91.0,0.0,0.0,0.0,0.0,1,5.5,49
318
+ 327,2020-07-21 17:03:52,90.0,0.0,0.0,0.0,0.0,1,5.5,49
319
+ 328,2020-07-21 17:08:52,90.0,0.0,0.0,0.0,0.0,1,5.5,49
320
+ 329,2020-07-21 17:13:52,90.0,0.0,0.0,0.0,0.0,1,5.5,49
321
+ 330,2020-07-21 17:18:52,89.0,0.0,0.0,0.0,0.0,1,5.5,49
322
+ 331,2020-07-21 17:23:52,89.0,0.0,0.0,0.0,0.0,1,5.5,49
323
+ 332,2020-07-21 17:28:52,88.0,0.0,0.0,0.0,0.0,1,5.5,49
324
+ 333,2020-07-21 17:33:52,88.0,0.0,0.0,0.0,0.0,1,5.5,49
325
+ 334,2020-07-21 17:38:52,89.0,0.0,0.0,0.0,0.0,1,5.5,49
326
+ 335,2020-07-21 17:43:51,89.0,0.0,0.0,0.0,0.0,1,5.5,49
327
+ 336,2020-07-21 17:48:51,90.0,0.0,0.0,0.0,0.0,1,5.5,49
328
+ 337,2020-07-21 17:53:51,89.0,0.0,0.0,0.0,0.0,1,5.5,49
329
+ 338,2020-07-21 17:58:52,89.0,0.0,0.0,0.0,0.0,1,5.5,49
330
+ 339,2020-07-21 18:03:52,89.0,0.0,0.0,0.0,0.0,1,5.5,49
331
+ 340,2020-07-21 18:08:52,88.0,0.0,0.0,0.0,0.0,1,5.5,49
332
+ 341,2020-07-21 18:13:51,88.0,0.0,0.0,0.0,0.0,1,5.5,49
333
+ 342,2020-07-21 18:18:52,88.0,0.0,0.0,0.0,0.0,1,5.5,49
334
+ 343,2020-07-21 18:23:52,88.0,0.0,0.0,0.0,0.0,1,5.5,49
335
+ 344,2020-07-21 18:28:51,87.0,0.0,0.0,0.0,0.0,1,5.5,49
336
+ 345,2020-07-21 18:33:52,87.0,0.0,0.0,0.0,0.0,1,5.5,49
337
+ 346,2020-07-21 18:38:51,88.0,0.0,0.0,0.0,0.0,1,5.5,49
338
+ 347,2020-07-21 18:43:52,89.0,0.0,0.0,0.0,0.0,1,5.5,49
339
+ 348,2020-07-21 18:48:51,90.0,0.0,0.0,0.0,0.0,1,5.5,49
340
+ 349,2020-07-21 18:53:51,90.0,0.0,0.0,0.0,0.0,1,5.5,49
341
+ 350,2020-07-21 18:58:51,90.0,0.0,0.0,0.0,0.0,1,5.5,49
342
+ 351,2020-07-21 19:03:51,90.0,0.0,0.0,0.0,0.0,1,5.5,49
343
+ 352,2020-07-21 19:08:52,90.0,0.0,0.0,0.0,0.0,1,5.5,49
344
+ 353,2020-07-21 19:13:52,91.0,0.0,0.0,0.0,0.0,1,5.5,49
345
+ 354,2020-07-21 19:18:52,92.0,0.0,0.0,0.0,0.0,1,5.5,49
346
+ 355,2020-07-21 19:23:51,93.0,0.0,0.0,0.0,0.0,1,5.5,49
347
+ 356,2020-07-21 19:28:52,92.0,0.0,0.0,0.0,0.0,1,5.5,49
348
+ 357,2020-07-21 19:33:51,91.0,0.0,0.0,0.0,0.0,1,5.5,49
349
+ 358,2020-07-21 22:23:52,111.0,0.0,0.0,0.0,0.0,1,5.5,49
350
+ 359,2020-07-21 22:28:52,114.0,0.0,0.0,0.0,0.0,1,5.5,49
351
+ 360,2020-07-21 22:33:52,114.0,0.0,0.0,0.0,0.0,1,5.5,49
352
+ 361,2020-07-21 22:38:52,112.0,0.0,0.0,0.0,0.0,1,5.5,49
353
+ 362,2020-07-21 22:43:52,111.0,0.0,0.0,0.0,0.0,1,5.5,49
354
+ 363,2020-07-21 22:48:52,111.0,0.0,0.0,0.0,0.0,1,5.5,49
355
+ 364,2020-07-21 22:53:52,112.0,0.0,0.0,0.0,0.0,1,5.5,49
356
+ 365,2020-07-21 22:58:52,112.0,0.0,0.0,0.0,0.0,1,5.5,49
357
+ 366,2020-07-21 23:03:52,111.0,0.0,0.0,0.0,0.0,1,5.5,49
358
+ 367,2020-07-21 23:08:52,107.0,0.0,0.0,0.0,0.0,1,5.5,49
359
+ 368,2020-07-21 23:13:52,102.0,0.0,0.0,0.0,0.0,1,5.5,49
360
+ 369,2020-07-21 23:18:52,98.0,0.0,0.0,0.0,0.0,1,5.5,49
361
+ 370,2020-07-21 23:23:52,97.0,0.0,0.0,0.0,0.0,1,5.5,49
362
+ 371,2020-07-21 23:28:52,100.0,0.0,0.0,0.0,0.0,1,5.5,49
363
+ 372,2020-07-21 23:33:52,106.0,0.0,0.0,0.0,0.0,1,5.5,49
364
+ 373,2020-07-21 23:38:52,114.0,0.0,0.0,0.0,0.0,1,5.5,49
365
+ 374,2020-07-21 23:43:52,122.0,0.0,0.0,0.0,0.0,1,5.5,49
366
+ 375,2020-07-21 23:48:52,130.0,0.0,0.0,0.0,0.0,1,5.5,49
367
+ 376,2020-07-21 23:53:52,135.0,0.0,0.0,0.0,0.0,1,5.5,49
368
+ 377,2020-07-21 23:58:52,139.0,0.0,0.0,0.0,0.0,1,5.5,49
369
+ 378,2020-07-22 00:03:52,140.0,0.0,0.0,0.0,0.0,1,5.5,49
370
+ 379,2020-07-22 00:08:52,140.0,0.0,0.0,0.0,0.0,1,5.5,49
371
+ 380,2020-07-22 00:13:52,137.0,0.0,0.0,0.0,0.0,1,5.5,49
372
+ 381,2020-07-22 00:18:52,136.0,0.0,0.0,0.0,0.0,1,5.5,49
373
+ 382,2020-07-22 00:23:52,136.0,0.0,0.0,0.0,0.0,1,5.5,49
374
+ 383,2020-07-22 00:28:52,136.0,0.0,0.0,0.0,0.0,1,5.5,49
375
+ 384,2020-07-22 00:33:52,135.0,0.0,0.0,0.0,0.0,1,5.5,49
376
+ 385,2020-07-22 00:38:52,135.0,0.0,0.0,0.0,0.0,1,5.5,49
377
+ 386,2020-07-22 00:43:52,135.0,0.0,0.0,0.0,0.0,1,5.5,49
378
+ 387,2020-07-22 00:48:52,136.0,0.0,0.0,0.0,0.0,1,5.5,49
379
+ 388,2020-07-22 00:53:52,137.0,0.0,0.0,0.0,0.0,1,5.5,49
380
+ 389,2020-07-22 00:58:52,138.0,0.0,0.0,0.0,0.0,1,5.5,49
381
+ 390,2020-07-22 01:03:52,137.0,0.0,0.0,0.0,0.0,1,5.5,49
382
+ 391,2020-07-22 01:08:52,134.0,0.0,0.0,0.0,0.0,1,5.5,49
383
+ 392,2020-07-22 01:13:52,128.0,0.0,0.0,0.0,0.0,1,5.5,49
384
+ 393,2020-07-22 01:18:52,122.0,0.0,0.0,0.0,0.0,1,5.5,49
385
+ 394,2020-07-22 01:23:52,116.0,0.0,0.0,0.0,0.0,1,5.5,49
386
+ 395,2020-07-22 01:28:52,114.0,0.0,0.0,0.0,0.0,1,5.5,49
387
+ 396,2020-07-22 01:33:52,117.0,0.0,0.0,0.0,0.0,1,5.5,49
388
+ 397,2020-07-22 01:38:52,120.0,0.0,0.0,0.0,0.0,1,5.5,49
389
+ 398,2020-07-22 01:43:52,125.0,0.0,0.0,0.0,0.0,1,5.5,49
390
+ 399,2020-07-22 01:48:52,130.0,0.0,0.0,0.0,0.0,1,5.5,49
391
+ 400,2020-07-22 01:53:51,133.0,0.0,0.0,0.0,0.0,1,5.5,49
392
+ 401,2020-07-22 01:58:51,133.0,0.0,0.0,0.0,0.0,1,5.5,49
393
+ 402,2020-07-22 02:03:51,132.0,0.0,0.0,0.0,0.0,1,5.5,49
394
+ 403,2020-07-22 02:08:51,134.0,0.0,0.0,0.0,0.0,1,5.5,49
395
+ 404,2020-07-22 02:13:51,137.0,0.0,0.0,0.0,0.0,1,5.5,49
396
+ 405,2020-07-22 02:18:52,139.0,0.0,0.0,0.0,0.0,1,5.5,49
397
+ 406,2020-07-22 02:23:51,138.0,0.0,0.0,0.0,0.0,1,5.5,49
398
+ 407,2020-07-22 02:28:51,135.0,0.0,0.0,0.0,0.0,1,5.5,49
399
+ 408,2020-07-22 02:33:52,132.0,0.0,0.0,0.0,0.0,1,5.5,49
400
+ 409,2020-07-22 02:38:51,129.0,0.0,0.0,0.0,0.0,1,5.5,49
401
+ 410,2020-07-22 02:43:51,127.0,0.0,0.0,0.0,0.0,1,5.5,49
402
+ 411,2020-07-22 02:48:51,125.0,0.0,0.0,0.0,0.0,1,5.5,49
403
+ 412,2020-07-22 02:53:51,124.0,63.63,0.0,0.0,0.0,1,5.5,49
404
+ 413,2020-07-22 02:58:51,124.0,63.45,0.0,0.0,0.0,1,5.5,49
405
+ 414,2020-07-22 03:03:52,125.0,62.93,0.0,0.0,0.0,1,5.5,49
406
+ 415,2020-07-22 03:08:51,126.0,64.25,0.0,0.0,0.0,1,5.5,49
407
+ 416,2020-07-22 03:13:52,127.0,65.86,0.0,0.0,0.0,1,5.5,49
408
+ 417,2020-07-22 03:18:51,128.0,64.61,0.0,0.0,0.0,1,5.5,49
409
+ 418,2020-07-22 03:23:52,128.0,64.53,0.0,0.0,0.0,1,5.5,49
410
+ 419,2020-07-22 03:28:51,128.0,64.43,0.0,0.0,0.0,1,5.5,49
411
+ 420,2020-07-22 03:33:52,127.0,64.42,0.0,0.0,0.0,1,5.5,49
412
+ 421,2020-07-22 03:38:51,126.0,64.42,0.0,0.0,0.0,1,5.5,49
413
+ 422,2020-07-22 03:43:51,124.0,65.47,0.0,0.0,0.0,1,5.5,49
414
+ 423,2020-07-22 03:48:51,123.0,65.57,0.0,0.0,0.0,1,5.5,49
415
+ 424,2020-07-22 03:53:51,121.0,65.59,0.0,0.0,0.0,1,5.5,49
416
+ 425,2020-07-22 03:58:51,119.0,65.76,0.0,0.0,0.0,1,5.5,49
417
+ 426,2020-07-22 04:03:52,118.0,65.78,0.0,0.0,0.0,1,5.5,49
418
+ 427,2020-07-22 04:08:51,117.0,65.78,0.0,0.0,0.0,1,5.5,49
419
+ 428,2020-07-22 04:13:51,117.0,65.83,0.0,0.0,0.0,1,5.5,49
420
+ 429,2020-07-22 04:18:51,117.0,65.81,0.0,0.0,0.0,1,5.5,49
421
+ 430,2020-07-22 04:23:51,118.0,65.5,0.0,0.0,0.0,1,5.5,49
422
+ 431,2020-07-22 04:28:51,117.0,64.92,0.0,0.0,0.0,1,5.5,49
423
+ 432,2020-07-22 04:33:51,117.0,64.88,0.0,0.0,0.0,1,5.5,49
424
+ 433,2020-07-22 04:38:51,117.0,65.08,0.0,0.0,0.0,1,5.5,49
425
+ 434,2020-07-22 04:43:51,117.0,64.6,0.0,0.0,0.0,1,5.5,49
426
+ 435,2020-07-22 04:48:51,117.0,64.75,0.0,0.0,0.0,1,5.5,49
427
+ 436,2020-07-22 04:53:51,117.0,64.68,0.0,0.0,0.0,1,5.5,49
428
+ 437,2020-07-22 04:58:51,116.0,64.92,0.0,0.0,0.0,1,5.5,49
429
+ 438,2020-07-22 05:03:51,116.0,65.11,0.0,0.0,0.0,1,5.5,49
430
+ 439,2020-07-22 05:08:52,116.0,65.2,0.0,0.0,0.0,1,5.5,49
431
+ 440,2020-07-22 05:13:51,116.0,65.2,0.0,0.0,0.0,1,5.5,49
432
+ 441,2020-07-22 05:18:51,116.0,65.45,0.0,0.0,0.0,1,5.5,49
433
+ 442,2020-07-22 05:23:51,115.0,65.65,0.0,0.0,0.0,1,5.5,49
434
+ 443,2020-07-22 05:28:51,115.0,64.35,0.0,0.0,0.0,1,5.5,49
435
+ 444,2020-07-22 05:33:51,114.0,63.69,0.0,0.0,0.0,1,5.5,49
436
+ 445,2020-07-22 05:38:51,114.0,63.51,0.0,0.0,0.0,1,5.5,49
437
+ 446,2020-07-22 05:43:51,115.0,63.32,0.0,0.0,0.0,1,5.5,49
438
+ 447,2020-07-22 05:48:51,116.0,63.31,0.0,0.0,0.0,1,5.5,49
439
+ 448,2020-07-22 05:53:51,117.0,63.21,0.0,0.0,0.0,1,5.5,49
440
+ 449,2020-07-22 05:58:52,116.0,63.13,0.0,0.0,0.0,1,5.5,49
441
+ 450,2020-07-22 06:03:51,114.0,63.1,0.0,0.0,0.0,1,5.5,49
442
+ 451,2020-07-22 06:08:51,113.0,63.02,0.0,0.0,0.0,1,5.5,49
443
+ 452,2020-07-22 06:13:51,114.0,62.95,0.0,0.0,0.0,1,5.5,49
444
+ 453,2020-07-22 06:18:51,115.0,63.16,0.0,0.0,0.0,1,5.5,49
445
+ 454,2020-07-22 06:23:51,115.0,63.17,0.0,0.0,0.0,1,5.5,49
446
+ 455,2020-07-22 06:28:51,115.0,63.24,0.0,0.0,0.0,1,5.5,49
447
+ 456,2020-07-22 06:33:52,115.0,63.3,0.0,0.0,0.0,1,5.5,49
448
+ 457,2020-07-22 06:38:52,115.0,62.79,0.0,0.0,0.0,1,5.5,49
449
+ 458,2020-07-22 06:43:52,115.0,62.86,0.0,0.0,0.0,1,5.5,49
450
+ 459,2020-07-22 06:48:52,115.0,62.93,0.0,0.0,0.0,1,5.5,49
451
+ 460,2020-07-22 06:53:52,114.0,62.95,0.0,0.0,0.0,1,5.5,49
452
+ 461,2020-07-22 06:58:52,113.0,62.9,0.0,0.0,0.0,1,5.5,49
453
+ 462,2020-07-22 07:03:51,113.0,63.69,0.0,0.0,0.0,1,5.5,49
454
+ 463,2020-07-22 07:08:51,115.0,63.17,0.0,0.0,0.0,1,5.5,49
455
+ 464,2020-07-22 07:13:51,116.0,63.17,0.0,0.0,0.0,1,5.5,49
456
+ 465,2020-07-22 07:18:51,117.0,63.18,0.0,0.0,0.0,1,5.5,49
457
+ 466,2020-07-22 07:23:51,118.0,62.98,0.0,0.0,0.0,1,5.5,49
458
+ 467,2020-07-22 07:28:51,118.0,63.1,0.0,0.0,0.0,1,5.5,49
459
+ 468,2020-07-22 07:33:51,118.0,63.01,0.0,0.0,0.0,1,5.5,49
460
+ 469,2020-07-22 07:38:51,118.0,63.03,0.0,0.0,0.0,1,5.5,49
461
+ 470,2020-07-22 07:43:51,117.0,63.09,0.0,0.0,0.0,1,5.5,49
462
+ 471,2020-07-22 07:48:51,116.0,64.54,0.0,0.0,0.0,1,5.5,49
463
+ 472,2020-07-22 07:53:51,115.0,64.86,0.0,0.0,0.0,1,5.5,49
464
+ 473,2020-07-22 07:58:51,114.0,65.35,0.0,0.0,0.0,1,5.5,49
465
+ 474,2020-07-22 08:03:51,114.0,64.81,0.0,0.0,0.0,1,5.5,49
466
+ 475,2020-07-22 08:08:51,115.0,64.29,0.0,0.0,0.0,1,5.5,49
467
+ 476,2020-07-22 08:13:51,117.0,64.97,0.0,0.0,0.0,1,5.5,49
468
+ 477,2020-07-22 08:18:51,117.0,65.03,0.0,0.0,0.0,1,5.5,49
469
+ 478,2020-07-22 08:23:51,116.0,65.28,0.0,0.0,0.0,1,5.5,49
470
+ 479,2020-07-22 08:28:51,115.0,65.37,0.0,0.0,0.0,1,5.5,49
471
+ 480,2020-07-22 08:33:51,112.0,64.42,0.0,0.0,0.0,1,5.5,49
472
+ 481,2020-07-22 08:38:51,109.0,64.17,0.0,0.0,0.0,1,5.5,49
473
+ 482,2020-07-22 08:43:51,104.0,65.01,0.0,0.0,0.0,1,5.5,49
474
+ 483,2020-07-22 08:48:51,99.0,65.1,0.0,0.0,0.0,1,5.5,49
475
+ 484,2020-07-22 08:53:51,96.0,65.09,0.0,0.0,0.0,1,5.5,49
476
+ 485,2020-07-22 08:58:52,93.0,65.05,0.0,0.0,0.0,1,5.5,49
477
+ 486,2020-07-22 09:03:51,92.0,65.14,0.0,0.0,0.0,1,5.5,49
478
+ 487,2020-07-22 09:08:51,89.0,65.34,0.0,0.0,0.0,1,5.5,49
479
+ 488,2020-07-22 09:13:51,88.0,65.17,0.0,0.0,0.0,1,5.5,49
480
+ 489,2020-07-22 09:18:51,87.0,65.17,0.0,0.0,0.0,1,5.5,49
481
+ 490,2020-07-22 09:23:51,88.0,65.09,0.0,0.0,0.0,1,5.5,49
482
+ 491,2020-07-22 09:28:51,88.0,64.34,0.0,0.0,0.0,1,5.5,49
483
+ 492,2020-07-22 09:33:51,88.0,64.13,0.0,0.0,0.0,1,5.5,49
484
+ 493,2020-07-22 09:38:51,90.0,64.9,0.0,0.0,0.0,1,5.5,49
485
+ 494,2020-07-22 09:43:51,96.0,64.87,0.0,0.0,0.0,1,5.5,49
486
+ 495,2020-07-22 09:48:51,102.0,64.87,0.0,0.0,0.0,1,5.5,49
487
+ 496,2020-07-22 09:53:51,108.0,64.87,0.0,0.0,0.0,1,5.5,49
488
+ 497,2020-07-22 09:58:51,112.0,64.86,0.0,0.0,0.0,1,5.5,49
489
+ 498,2020-07-22 10:03:51,115.0,64.85,0.0,0.0,0.0,1,5.5,49
490
+ 499,2020-07-22 10:08:51,117.0,64.79,0.0,0.0,0.0,1,5.5,49
491
+ 500,2020-07-22 10:13:51,118.0,64.69,0.0,0.0,0.0,1,5.5,49
492
+ 501,2020-07-22 10:18:52,118.0,64.6,0.0,0.0,0.0,1,5.5,49
493
+ 502,2020-07-22 10:23:51,118.0,64.44,0.0,0.0,0.0,1,5.5,49
494
+ 503,2020-07-22 10:28:51,118.0,64.21,0.0,0.0,0.0,1,5.5,49
495
+ 504,2020-07-22 10:33:51,118.0,65.27,0.0,0.0,0.0,1,5.5,49
496
+ 505,2020-07-22 10:38:51,117.0,0.0,0.0,0.0,0.0,1,5.5,49
497
+ 506,2020-07-22 10:43:51,115.0,0.0,0.0,0.0,0.0,1,5.5,49
498
+ 507,2020-07-22 10:48:51,114.0,0.0,0.0,0.0,0.0,1,5.5,49
499
+ 508,2020-07-22 10:53:51,111.0,0.0,0.0,0.0,0.0,1,5.5,49
500
+ 509,2020-07-22 10:58:52,109.0,0.0,0.0,0.0,0.0,1,5.5,49
501
+ 510,2020-07-22 11:03:51,107.0,0.0,0.0,0.0,0.0,1,5.5,49
502
+ 511,2020-07-22 11:08:51,106.0,0.0,0.0,0.0,0.0,1,5.5,49
503
+ 512,2020-07-22 11:13:51,104.0,0.0,0.0,0.0,0.0,1,5.5,49
504
+ 513,2020-07-22 11:18:51,102.0,0.0,0.0,0.0,0.0,1,5.5,49
505
+ 514,2020-07-22 11:23:51,100.0,0.0,0.0,0.0,0.0,1,5.5,49
506
+ 515,2020-07-22 11:28:51,97.0,0.0,0.0,0.0,0.0,1,5.5,49
507
+ 516,2020-07-22 11:33:51,95.0,0.0,0.0,0.0,0.0,1,5.5,49
508
+ 517,2020-07-22 11:38:51,93.0,0.0,0.0,0.0,0.0,1,5.5,49
509
+ 518,2020-07-22 11:43:51,93.0,0.0,0.0,0.0,0.0,1,5.5,49
510
+ 519,2020-07-22 11:48:51,92.0,0.0,0.0,0.0,0.0,1,5.5,49
511
+ 520,2020-07-22 11:53:51,93.0,0.0,0.0,0.0,0.0,1,5.5,49
512
+ 521,2020-07-22 11:58:51,94.0,0.0,0.0,0.0,0.0,1,5.5,49
513
+ 522,2020-07-22 12:03:51,97.0,0.0,0.0,0.0,0.0,1,5.5,49
514
+ 523,2020-07-22 12:08:51,100.0,0.0,0.0,0.0,0.0,1,5.5,49
515
+ 524,2020-07-22 12:13:51,103.0,0.0,0.0,0.0,0.0,1,5.5,49
516
+ 525,2020-07-22 12:18:51,106.0,0.0,0.0,0.0,0.0,1,5.5,49
517
+ 526,2020-07-22 12:23:51,107.0,0.0,0.0,0.0,0.0,1,5.5,49
518
+ 527,2020-07-22 12:28:51,107.0,0.0,0.0,0.0,0.0,1,5.5,49
519
+ 528,2020-07-22 12:33:51,106.0,0.0,0.0,0.0,0.0,1,5.5,49
520
+ 529,2020-07-22 12:38:51,105.0,0.0,0.0,0.0,0.0,1,5.5,49
521
+ 530,2020-07-22 12:43:51,106.0,0.0,0.0,0.0,0.0,1,5.5,49
522
+ 531,2020-07-22 12:48:51,106.0,0.0,0.0,0.0,0.0,1,5.5,49
523
+ 532,2020-07-22 12:53:51,107.0,0.0,0.0,0.0,0.0,1,5.5,49
524
+ 533,2020-07-22 12:58:51,108.0,0.0,0.0,0.0,0.0,1,5.5,49
525
+ 534,2020-07-22 13:03:51,108.0,0.0,0.0,0.0,0.0,1,5.5,49
526
+ 535,2020-07-22 13:08:51,107.0,0.0,0.0,0.0,0.0,1,5.5,49
527
+ 536,2020-07-22 13:13:51,105.0,0.0,0.0,0.0,0.0,1,5.5,49
528
+ 537,2020-07-22 13:18:51,102.0,0.0,0.0,0.0,0.0,1,5.5,49
529
+ 538,2020-07-22 13:23:51,98.0,0.0,0.0,0.0,0.0,1,5.5,49
530
+ 539,2020-07-22 13:28:51,94.0,0.0,0.0,0.0,0.0,1,5.5,49
531
+ 540,2020-07-22 13:33:51,92.0,0.0,0.0,0.0,0.0,1,5.5,49
532
+ 541,2020-07-22 13:38:51,89.0,0.0,0.0,0.0,0.0,1,5.5,49
533
+ 542,2020-07-22 13:43:51,86.0,0.0,0.0,0.0,0.0,1,5.5,49
534
+ 543,2020-07-22 13:48:51,83.0,0.0,0.0,0.0,0.0,1,5.5,49
535
+ 544,2020-07-22 13:53:51,84.0,0.0,0.0,0.0,0.0,1,5.5,49
536
+ 545,2020-07-22 13:58:51,87.0,0.0,0.0,0.0,0.0,1,5.5,49
537
+ 546,2020-07-22 14:03:51,92.0,0.0,0.0,0.0,0.0,1,5.5,49
538
+ 547,2020-07-22 14:08:51,98.0,0.0,0.0,0.0,0.0,1,5.5,49
539
+ 548,2020-07-22 14:13:51,103.0,0.0,0.0,0.0,0.0,1,5.5,49
540
+ 549,2020-07-22 14:18:51,105.0,0.0,0.0,0.0,0.0,1,5.5,49
541
+ 550,2020-07-22 14:23:51,104.0,0.0,0.0,0.0,0.0,1,5.5,49
542
+ 551,2020-07-22 14:28:51,103.0,0.0,0.0,0.0,0.0,1,5.5,49
543
+ 552,2020-07-22 14:33:51,104.0,0.0,0.0,0.0,0.0,1,5.5,49
544
+ 553,2020-07-22 14:38:51,106.0,0.0,0.0,0.0,0.0,1,5.5,49
545
+ 554,2020-07-22 14:43:51,108.0,0.0,0.0,0.0,0.0,1,5.5,49
546
+ 555,2020-07-22 14:48:51,108.0,0.0,0.0,0.0,0.0,1,5.5,49
547
+ 556,2020-07-22 14:53:51,107.0,0.0,0.0,0.0,0.0,1,5.5,49
548
+ 557,2020-07-22 14:58:51,103.0,0.0,0.0,0.0,0.0,1,5.5,49
549
+ 558,2020-07-22 15:03:51,101.0,0.0,0.0,0.0,0.0,1,5.5,49
550
+ 559,2020-07-22 15:08:51,98.0,0.0,0.0,0.0,0.0,1,5.5,49
551
+ 560,2020-07-22 15:13:51,96.0,0.0,0.0,0.0,0.0,1,5.5,49
552
+ 561,2020-07-22 15:18:51,96.0,0.0,0.0,0.0,0.0,1,5.5,49
553
+ 562,2020-07-22 15:23:51,96.0,0.0,0.0,0.0,0.0,1,5.5,49
554
+ 563,2020-07-22 15:28:51,97.0,0.0,0.0,0.0,0.0,1,5.5,49
555
+ 564,2020-07-22 15:33:51,95.0,0.0,0.0,0.0,0.0,1,5.5,49
556
+ 565,2020-07-22 15:38:51,91.0,0.0,0.0,0.0,0.0,1,5.5,49
557
+ 566,2020-07-22 15:43:51,88.0,0.0,0.0,0.0,0.0,1,5.5,49
558
+ 567,2020-07-22 15:48:51,86.0,0.0,0.0,0.0,0.0,1,5.5,49
559
+ 568,2020-07-22 15:53:50,86.0,0.0,0.0,0.0,0.0,1,5.5,49
560
+ 569,2020-07-22 15:58:51,87.0,0.0,0.0,0.0,0.0,1,5.5,49
561
+ 570,2020-07-22 16:03:51,89.0,0.0,0.0,0.0,0.0,1,5.5,49
562
+ 571,2020-07-22 16:08:51,91.0,0.0,0.0,0.0,0.0,1,5.5,49
563
+ 572,2020-07-22 16:13:51,93.0,0.0,0.0,0.0,0.0,1,5.5,49
564
+ 573,2020-07-22 16:18:51,96.0,0.0,0.0,0.0,0.0,1,5.5,49
565
+ 574,2020-07-22 16:23:51,99.0,0.0,0.0,0.0,0.0,1,5.5,49
566
+ 575,2020-07-22 16:28:51,102.0,0.0,0.0,0.0,0.0,1,5.5,49
567
+ 576,2020-07-22 16:33:51,102.0,0.0,0.0,0.0,0.0,1,5.5,49
568
+ 577,2020-07-22 16:38:51,103.0,0.0,0.0,0.0,0.0,1,5.5,49
569
+ 578,2020-07-22 16:43:51,104.0,0.0,0.0,0.0,0.0,1,5.5,49
570
+ 579,2020-07-22 16:48:51,103.0,0.0,0.0,0.0,0.0,1,5.5,49
571
+ 580,2020-07-22 16:53:51,102.0,0.0,0.0,0.0,0.0,1,5.5,49
572
+ 581,2020-07-22 16:58:51,100.0,0.0,0.0,0.0,0.0,1,5.5,49
573
+ 582,2020-07-22 17:03:51,98.0,0.0,0.0,0.0,0.0,1,5.5,49
574
+ 583,2020-07-22 17:08:51,97.0,0.0,0.0,0.0,0.0,1,5.5,49
575
+ 584,2020-07-22 17:13:50,98.0,0.0,0.0,0.0,0.0,1,5.5,49
576
+ 585,2020-07-22 17:18:51,99.0,0.0,0.0,0.0,0.0,1,5.5,49
577
+ 586,2020-07-22 17:23:51,103.0,0.0,0.0,0.0,0.0,1,5.5,49
578
+ 587,2020-07-22 17:28:51,106.0,0.0,0.0,0.0,0.0,1,5.5,49
579
+ 588,2020-07-22 17:33:51,107.0,0.0,0.0,0.0,0.0,1,5.5,49
580
+ 589,2020-07-22 17:38:51,103.0,0.0,0.0,0.0,0.0,1,5.5,49
581
+ 590,2020-07-22 17:43:51,97.0,0.0,0.0,0.0,0.0,1,5.5,49
582
+ 591,2020-07-22 17:48:51,93.0,0.0,0.0,0.0,0.0,1,5.5,49
583
+ 592,2020-07-22 17:53:51,89.0,0.0,0.0,0.0,0.0,1,5.5,49
584
+ 593,2020-07-22 17:58:51,87.0,0.0,0.0,0.0,0.0,1,5.5,49
585
+ 594,2020-07-22 18:03:51,84.0,0.0,0.0,0.0,0.0,1,5.5,49
586
+ 595,2020-07-22 18:08:51,83.0,0.0,0.0,0.0,0.0,1,5.5,49
587
+ 596,2020-07-22 18:13:51,82.0,0.0,0.0,0.0,0.0,1,5.5,49
588
+ 597,2020-07-22 18:18:51,83.0,0.0,0.0,0.0,0.0,1,5.5,49
589
+ 598,2020-07-22 18:23:51,85.0,0.0,0.0,0.0,0.0,1,5.5,49
590
+ 599,2020-07-22 18:28:51,89.0,0.0,0.0,0.0,0.0,1,5.5,49
591
+ 600,2020-07-22 18:33:51,94.0,0.0,0.0,0.0,0.0,1,5.5,49
592
+ 601,2020-07-22 18:38:51,100.0,0.0,0.0,0.0,0.0,1,5.5,49
593
+ 602,2020-07-22 18:43:51,105.0,0.0,0.0,0.0,0.0,1,5.5,49
594
+ 603,2020-07-22 18:48:51,108.0,0.0,0.0,0.0,0.0,1,5.5,49
595
+ 604,2020-07-22 18:53:51,108.0,0.0,0.0,0.0,0.0,1,5.5,49
596
+ 605,2020-07-22 18:58:50,105.0,0.0,0.0,0.0,0.0,1,5.5,49
597
+ 606,2020-07-22 19:03:51,103.0,0.0,0.0,0.0,0.0,1,5.5,49
598
+ 607,2020-07-22 19:08:51,101.0,0.0,0.0,0.0,0.0,1,5.5,49
599
+ 608,2020-07-22 19:13:51,101.0,0.0,0.0,0.0,0.0,1,5.5,49
600
+ 609,2020-07-22 19:18:51,100.0,0.0,0.0,0.0,0.0,1,5.5,49
601
+ 610,2020-07-22 19:23:51,99.0,0.0,0.0,0.0,0.0,1,5.5,49
602
+ 611,2020-07-22 19:28:51,99.0,0.0,0.0,0.0,0.0,1,5.5,49
603
+ 612,2020-07-22 19:33:50,99.0,0.0,0.0,0.0,0.0,1,5.5,49
604
+ 613,2020-07-22 19:38:51,100.0,0.0,0.0,0.0,0.0,1,5.5,49
605
+ 614,2020-07-22 19:43:51,101.0,0.0,0.0,0.0,0.0,1,5.5,49
606
+ 615,2020-07-22 19:48:51,103.0,0.0,0.0,0.0,0.0,1,5.5,49
607
+ 616,2020-07-22 19:53:51,105.0,0.0,0.0,0.0,0.0,1,5.5,49
608
+ 617,2020-07-22 19:58:51,105.0,0.0,0.0,0.0,0.0,1,5.5,49
609
+ 618,2020-07-22 20:03:51,107.0,0.0,0.0,0.0,0.0,1,5.5,49
610
+ 619,2020-07-22 20:08:51,110.0,0.0,0.0,0.0,0.0,1,5.5,49
611
+ 620,2020-07-22 20:13:51,115.0,0.0,0.0,0.0,0.0,1,5.5,49
612
+ 621,2020-07-22 20:18:51,118.0,0.0,0.0,0.0,0.0,1,5.5,49
613
+ 622,2020-07-22 20:23:50,120.0,0.0,0.0,0.0,0.0,1,5.5,49
614
+ 623,2020-07-22 20:28:50,121.0,0.0,0.0,0.0,0.0,1,5.5,49
615
+ 624,2020-07-22 20:33:51,121.0,0.0,0.0,0.0,0.0,1,5.5,49
616
+ 625,2020-07-22 20:38:52,121.0,0.0,0.0,0.0,0.0,1,5.5,49
617
+ 626,2020-07-22 20:43:50,121.0,0.0,0.0,0.0,0.0,1,5.5,49
618
+ 627,2020-07-22 20:48:51,119.0,0.0,0.0,0.0,0.0,1,5.5,49
619
+ 628,2020-07-22 20:53:50,117.0,0.0,0.0,0.0,0.0,1,5.5,49
620
+ 629,2020-07-22 20:58:50,114.0,0.0,0.0,0.0,0.0,1,5.5,49
621
+ 630,2020-07-22 21:03:50,109.0,0.0,0.0,0.0,0.0,1,5.5,49
622
+ 631,2020-07-22 21:08:50,104.0,0.0,0.0,0.0,0.0,1,5.5,49
623
+ 632,2020-07-22 21:13:51,102.0,0.0,0.0,0.0,0.0,1,5.5,49
624
+ 633,2020-07-22 21:18:51,103.0,0.0,0.0,0.0,0.0,1,5.5,49
625
+ 634,2020-07-22 21:23:51,106.0,0.0,0.0,0.0,0.0,1,5.5,49
626
+ 635,2020-07-22 21:28:50,110.0,0.0,0.0,0.0,0.0,1,5.5,49
627
+ 636,2020-07-22 21:33:50,115.0,0.0,0.0,0.0,0.0,1,5.5,49
628
+ 637,2020-07-22 21:38:51,118.0,0.0,0.0,0.0,0.0,1,5.5,49
629
+ 638,2020-07-22 21:43:50,120.0,0.0,0.0,0.0,0.0,1,5.5,49
630
+ 639,2020-07-22 21:48:51,120.0,0.0,0.0,0.0,0.0,1,5.5,49
631
+ 640,2020-07-22 21:53:51,120.0,0.0,0.0,0.0,0.0,1,5.5,49
632
+ 641,2020-07-22 21:58:51,119.0,0.0,0.0,0.0,0.0,1,5.5,49
633
+ 642,2020-07-22 22:03:51,118.0,0.0,0.0,0.0,0.0,1,5.5,49
634
+ 643,2020-07-22 22:08:50,117.0,0.0,0.0,0.0,0.0,1,5.5,49
635
+ 644,2020-07-22 22:13:51,116.0,0.0,0.0,0.0,0.0,1,5.5,49
636
+ 645,2020-07-22 22:18:50,115.0,0.0,0.0,0.0,0.0,1,5.5,49
637
+ 646,2020-07-22 22:23:51,115.0,0.0,0.0,0.0,0.0,1,5.5,49
638
+ 647,2020-07-22 22:28:51,117.0,0.0,0.0,0.0,0.0,1,5.5,49
639
+ 648,2020-07-22 22:33:51,118.0,0.0,0.0,0.0,0.0,1,5.5,49
640
+ 649,2020-07-22 22:38:51,116.0,0.0,0.0,0.0,0.0,1,5.5,49
641
+ 650,2020-07-22 22:43:51,112.0,0.0,0.0,0.0,0.0,1,5.5,49
642
+ 651,2020-07-22 22:48:51,108.0,0.0,0.0,0.0,0.0,1,5.5,49
643
+ 652,2020-07-22 22:53:51,107.0,0.0,0.0,0.0,0.0,1,5.5,49
644
+ 653,2020-07-22 22:58:51,107.0,0.0,0.0,0.0,0.0,1,5.5,49
645
+ 654,2020-07-22 23:03:51,107.0,0.0,0.0,0.0,0.0,1,5.5,49
646
+ 655,2020-07-22 23:08:50,106.0,0.0,0.0,0.0,0.0,1,5.5,49
647
+ 656,2020-07-22 23:13:50,106.0,0.0,0.0,0.0,0.0,1,5.5,49
648
+ 657,2020-07-22 23:18:50,107.0,0.0,0.0,0.0,0.0,1,5.5,49
649
+ 658,2020-07-22 23:23:50,109.0,0.0,0.0,0.0,0.0,1,5.5,49
650
+ 659,2020-07-22 23:28:51,112.0,0.0,0.0,0.0,0.0,1,5.5,49
651
+ 660,2020-07-22 23:33:50,114.0,0.0,0.0,0.0,0.0,1,5.5,49
652
+ 661,2020-07-22 23:38:51,115.0,0.0,0.0,0.0,0.0,1,5.5,49
653
+ 662,2020-07-22 23:43:51,114.0,0.0,0.0,0.0,0.0,1,5.5,49
654
+ 663,2020-07-22 23:48:50,113.0,0.0,0.0,0.0,0.0,1,5.5,49
655
+ 664,2020-07-22 23:53:50,111.0,0.0,0.0,0.0,0.0,1,5.5,49
656
+ 665,2020-07-22 23:58:50,110.0,0.0,0.0,0.0,0.0,1,5.5,49
657
+ 666,2020-07-23 00:03:51,110.0,0.0,0.0,0.0,0.0,1,5.5,49
658
+ 667,2020-07-23 00:08:50,109.0,0.0,0.0,0.0,0.0,1,5.5,49
659
+ 668,2020-07-23 00:13:51,106.0,0.0,0.0,0.0,0.0,1,5.5,49
660
+ 669,2020-07-23 00:18:50,103.0,0.0,0.0,0.0,0.0,1,5.5,49
661
+ 670,2020-07-23 00:23:50,100.0,0.0,0.0,0.0,0.0,1,5.5,49
662
+ 671,2020-07-23 00:28:50,99.0,0.0,0.0,0.0,0.0,1,5.5,49
663
+ 672,2020-07-23 00:33:50,98.0,0.0,0.0,0.0,0.0,1,5.5,49
664
+ 673,2020-07-23 00:38:51,98.0,0.0,0.0,0.0,0.0,1,5.5,49
665
+ 674,2020-07-23 00:43:50,100.0,0.0,0.0,0.0,0.0,1,5.5,49
666
+ 675,2020-07-23 00:48:51,104.0,0.0,0.0,0.0,0.0,1,5.5,49
667
+ 676,2020-07-23 00:53:51,111.0,0.0,0.0,0.0,0.0,1,5.5,49
668
+ 677,2020-07-23 00:58:51,116.0,0.0,0.0,0.0,0.0,1,5.5,49
669
+ 678,2020-07-23 01:03:51,120.0,0.0,0.0,0.0,0.0,1,5.5,49
670
+ 679,2020-07-23 01:08:51,123.0,0.0,0.0,0.0,0.0,1,5.5,49
671
+ 680,2020-07-23 01:13:51,125.0,0.0,0.0,0.0,0.0,1,5.5,49
672
+ 681,2020-07-23 01:18:50,126.0,0.0,0.0,0.0,0.0,1,5.5,49
673
+ 682,2020-07-23 01:23:50,126.0,0.0,0.0,0.0,0.0,1,5.5,49
674
+ 683,2020-07-23 01:28:51,125.0,0.0,0.0,0.0,0.0,1,5.5,49
675
+ 684,2020-07-23 01:33:50,123.0,0.0,0.0,0.0,0.0,1,5.5,49
676
+ 685,2020-07-23 01:38:51,121.0,0.0,0.0,0.0,0.0,1,5.5,49
677
+ 686,2020-07-23 01:43:51,120.0,0.0,0.0,0.0,0.0,1,5.5,49
678
+ 687,2020-07-23 01:48:51,119.0,0.0,0.0,0.0,0.0,1,5.5,49
679
+ 688,2020-07-23 01:53:51,120.0,0.0,0.0,0.0,0.0,1,5.5,49
680
+ 689,2020-07-23 01:58:50,120.0,0.0,0.0,0.0,0.0,1,5.5,49
681
+ 690,2020-07-23 02:03:51,120.0,0.0,0.0,0.0,0.0,1,5.5,49
682
+ 691,2020-07-23 02:08:51,120.0,0.0,0.0,0.0,0.0,1,5.5,49
683
+ 692,2020-07-23 02:13:51,120.0,0.0,0.0,0.0,0.0,1,5.5,49
684
+ 693,2020-07-23 02:18:51,119.0,0.0,0.0,0.0,0.0,1,5.5,49
685
+ 694,2020-07-23 02:23:51,117.0,0.0,0.0,0.0,0.0,1,5.5,49
686
+ 695,2020-07-23 02:28:51,115.0,0.0,0.0,0.0,0.0,1,5.5,49
687
+ 696,2020-07-23 02:33:51,113.0,0.0,0.0,0.0,0.0,1,5.5,49
688
+ 697,2020-07-23 02:38:50,112.0,0.0,0.0,0.0,0.0,1,5.5,49
689
+ 698,2020-07-23 02:43:51,112.0,0.0,0.0,0.0,0.0,1,5.5,49
690
+ 699,2020-07-23 02:48:51,112.0,0.0,0.0,0.0,0.0,1,5.5,49
691
+ 700,2020-07-23 02:53:51,113.0,0.0,0.0,0.0,0.0,1,5.5,49
692
+ 701,2020-07-23 02:58:50,113.0,0.0,0.0,0.0,0.0,1,5.5,49
693
+ 702,2020-07-23 03:03:51,114.0,0.0,0.0,0.0,0.0,1,5.5,49
694
+ 703,2020-07-23 03:08:51,114.0,0.0,0.0,0.0,0.0,1,5.5,49
695
+ 704,2020-07-23 03:13:51,113.0,0.0,0.0,0.0,0.0,1,5.5,49
696
+ 705,2020-07-23 03:18:51,112.0,0.0,0.0,0.0,0.0,1,5.5,49
697
+ 706,2020-07-23 03:23:50,111.0,0.0,0.0,0.0,0.0,1,5.5,49
698
+ 707,2020-07-23 03:28:51,110.0,0.0,0.0,0.0,0.0,1,5.5,49
699
+ 708,2020-07-23 03:33:51,110.0,0.0,0.0,0.0,0.0,1,5.5,49
700
+ 709,2020-07-23 03:38:51,110.0,0.0,0.0,0.0,0.0,1,5.5,49
701
+ 710,2020-07-23 03:43:51,112.0,0.0,0.0,0.0,0.0,1,5.5,49
702
+ 711,2020-07-23 03:48:51,113.0,0.0,0.0,0.0,0.0,1,5.5,49
703
+ 712,2020-07-23 03:53:51,112.0,0.0,0.0,0.0,0.0,1,5.5,49
704
+ 713,2020-07-23 03:58:50,112.0,0.0,0.0,0.0,0.0,1,5.5,49
705
+ 714,2020-07-23 04:03:51,111.0,0.0,0.0,0.0,0.0,1,5.5,49
706
+ 715,2020-07-23 04:08:51,111.0,0.0,0.0,0.0,0.0,1,5.5,49
707
+ 716,2020-07-23 04:13:51,111.0,0.0,0.0,0.0,0.0,1,5.5,49
708
+ 717,2020-07-23 04:18:50,111.0,0.0,0.0,0.0,0.0,1,5.5,49
709
+ 718,2020-07-23 04:23:51,111.0,0.0,0.0,0.0,0.0,1,5.5,49
710
+ 719,2020-07-23 04:28:50,111.0,0.0,0.0,0.0,0.0,1,5.5,49
711
+ 720,2020-07-23 04:33:51,112.0,0.0,0.0,0.0,0.0,1,5.5,49
712
+ 721,2020-07-23 04:38:51,112.0,0.0,0.0,0.0,0.0,1,5.5,49
713
+ 722,2020-07-23 04:43:51,112.0,0.0,0.0,0.0,0.0,1,5.5,49
714
+ 723,2020-07-23 04:48:50,112.0,0.0,0.0,0.0,0.0,1,5.5,49
715
+ 724,2020-07-23 04:53:51,112.0,0.0,0.0,0.0,0.0,1,5.5,49
716
+ 725,2020-07-23 04:58:50,112.0,0.0,0.0,0.0,0.0,1,5.5,49
717
+ 726,2020-07-23 05:03:51,113.0,0.0,0.0,0.0,0.0,1,5.5,49
718
+ 727,2020-07-23 05:08:51,113.0,0.0,0.0,0.0,0.0,1,5.5,49
719
+ 728,2020-07-23 05:13:50,113.0,0.0,0.0,0.0,0.0,1,5.5,49
720
+ 729,2020-07-23 05:18:51,113.0,0.0,0.0,0.0,0.0,1,5.5,49
721
+ 730,2020-07-23 05:23:51,114.0,0.0,0.0,0.0,0.0,1,5.5,49
722
+ 731,2020-07-23 05:28:50,114.0,0.0,0.0,0.0,0.0,1,5.5,49
723
+ 732,2020-07-23 05:33:51,115.0,0.0,0.0,0.0,0.0,1,5.5,49
724
+ 733,2020-07-23 05:38:50,115.0,0.0,0.0,0.0,0.0,1,5.5,49
725
+ 734,2020-07-23 05:43:50,116.0,0.0,0.0,0.0,0.0,1,5.5,49
726
+ 735,2020-07-23 05:48:51,116.0,0.0,0.0,0.0,0.0,1,5.5,49
727
+ 736,2020-07-23 05:53:51,117.0,0.0,0.0,0.0,0.0,1,5.5,49
728
+ 737,2020-07-23 05:58:50,118.0,0.0,0.0,0.0,0.0,1,5.5,49
729
+ 738,2020-07-23 06:03:51,118.0,0.0,0.0,0.0,0.0,1,5.5,49
730
+ 739,2020-07-23 06:08:50,117.0,0.0,0.0,0.0,0.0,1,5.5,49
731
+ 740,2020-07-23 06:13:51,115.0,0.0,0.0,0.0,0.0,1,5.5,49
732
+ 741,2020-07-23 06:18:51,113.0,0.0,0.0,0.0,0.0,1,5.5,49
733
+ 742,2020-07-23 06:23:51,111.0,0.0,0.0,0.0,0.0,1,5.5,49
734
+ 743,2020-07-23 06:28:51,110.0,0.0,0.0,0.0,0.0,1,5.5,49
735
+ 744,2020-07-23 06:33:50,110.0,0.0,0.0,0.0,0.0,1,5.5,49
736
+ 745,2020-07-23 06:38:51,109.0,0.0,0.0,0.0,0.0,1,5.5,49
737
+ 746,2020-07-23 06:43:51,108.0,0.0,0.0,0.0,0.0,1,5.5,49
738
+ 747,2020-07-23 06:48:51,107.0,0.0,0.0,0.0,0.0,1,5.5,49
739
+ 748,2020-07-23 06:53:50,106.0,0.0,0.0,0.0,0.0,1,5.5,49
740
+ 749,2020-07-23 06:58:51,107.0,0.0,0.0,0.0,0.0,1,5.5,49
741
+ 750,2020-07-23 07:03:50,109.0,0.0,0.0,0.0,0.0,1,5.5,49
742
+ 751,2020-07-23 07:08:51,110.0,0.0,0.0,0.0,0.0,1,5.5,49
743
+ 752,2020-07-23 07:13:50,112.0,0.0,0.0,0.0,0.0,1,5.5,49
744
+ 753,2020-07-23 07:18:50,113.0,0.0,0.0,0.0,0.0,1,5.5,49
745
+ 754,2020-07-23 07:23:51,114.0,0.0,0.0,0.0,0.0,1,5.5,49
746
+ 755,2020-07-23 07:28:51,115.0,0.0,0.0,0.0,0.0,1,5.5,49
747
+ 756,2020-07-23 07:33:51,115.0,0.0,0.0,0.0,0.0,1,5.5,49
748
+ 757,2020-07-23 07:38:50,114.0,0.0,0.0,0.0,0.0,1,5.5,49
749
+ 758,2020-07-23 07:43:51,115.0,0.0,0.0,0.0,0.0,1,5.5,49
750
+ 759,2020-07-23 07:48:50,115.0,0.0,0.0,0.0,0.0,1,5.5,49
751
+ 760,2020-07-23 07:53:51,114.0,0.0,0.0,0.0,0.0,1,5.5,49
752
+ 761,2020-07-23 07:58:50,113.0,0.0,0.0,0.0,0.0,1,5.5,49
753
+ 762,2020-07-23 08:03:50,111.0,0.0,0.0,0.0,0.0,1,5.5,49
754
+ 763,2020-07-23 08:08:51,112.0,0.0,0.0,0.0,0.0,1,5.5,49
755
+ 764,2020-07-23 08:13:51,112.0,0.0,0.0,0.0,0.0,1,5.5,49
756
+ 765,2020-07-23 08:18:51,112.0,0.0,0.0,0.0,0.0,1,5.5,49
757
+ 766,2020-07-23 08:23:50,111.0,0.0,0.0,0.0,0.0,1,5.5,49
758
+ 767,2020-07-23 08:28:51,110.0,0.0,0.0,0.0,0.0,1,5.5,49
759
+ 768,2020-07-23 08:33:51,109.0,0.0,0.0,0.0,0.0,1,5.5,49
760
+ 769,2020-07-23 08:38:51,109.0,0.0,0.0,0.0,0.0,1,5.5,49
761
+ 770,2020-07-23 08:43:51,110.0,0.0,0.0,0.0,0.0,1,5.5,49
762
+ 771,2020-07-23 08:48:51,111.0,0.0,0.0,0.0,0.0,1,5.5,49
763
+ 772,2020-07-23 08:53:51,112.0,0.0,0.0,0.0,0.0,1,5.5,49
764
+ 773,2020-07-23 08:58:50,110.0,0.0,0.0,0.0,0.0,1,5.5,49
765
+ 774,2020-07-23 09:03:51,106.0,0.0,0.0,0.0,0.0,1,5.5,49
766
+ 775,2020-07-23 09:08:50,100.0,0.0,0.0,0.0,0.0,1,5.5,49
767
+ 776,2020-07-23 09:13:50,96.0,0.0,0.0,0.0,0.0,1,5.5,49
768
+ 777,2020-07-23 09:18:50,94.0,0.0,0.0,0.0,0.0,1,5.5,49
769
+ 778,2020-07-23 09:23:50,93.0,0.0,0.0,0.0,0.0,1,5.5,49
770
+ 779,2020-07-23 09:28:50,91.0,0.0,0.0,0.0,0.0,1,5.5,49
771
+ 780,2020-07-23 09:33:51,91.0,0.0,0.0,0.0,0.0,1,5.5,49
772
+ 781,2020-07-23 09:38:51,90.0,0.0,0.0,0.0,0.0,1,5.5,49
773
+ 782,2020-07-23 09:43:50,90.0,0.0,0.0,0.0,0.0,1,5.5,49
774
+ 783,2020-07-23 09:48:50,89.0,0.0,0.0,0.0,0.0,1,5.5,49
775
+ 784,2020-07-23 09:53:51,89.0,0.0,0.0,0.0,0.0,1,5.5,49
776
+ 785,2020-07-23 09:58:50,89.0,0.0,0.0,0.0,0.0,1,5.5,49
777
+ 786,2020-07-23 10:03:50,91.0,0.0,0.0,0.0,0.0,1,5.5,49
778
+ 787,2020-07-23 10:08:51,92.0,0.0,0.0,0.0,0.0,1,5.5,49
779
+ 788,2020-07-23 10:13:51,93.0,0.0,0.0,0.0,0.0,1,5.5,49
780
+ 789,2020-07-23 10:18:51,93.0,0.0,0.0,0.0,0.0,1,5.5,49
781
+ 790,2020-07-23 10:23:51,92.0,0.0,0.0,0.0,0.0,1,5.5,49
782
+ 791,2020-07-23 10:28:51,92.0,0.0,0.0,0.0,0.0,1,5.5,49
783
+ 792,2020-07-23 10:33:50,92.0,0.0,0.0,0.0,0.0,1,5.5,49
784
+ 793,2020-07-23 10:38:50,92.0,0.0,0.0,0.0,0.0,1,5.5,49
785
+ 794,2020-07-23 10:43:51,91.0,0.0,0.0,0.0,0.0,1,5.5,49
786
+ 795,2020-07-23 10:48:50,90.0,0.0,0.0,0.0,0.0,1,5.5,49
787
+ 796,2020-07-23 10:53:50,89.0,0.0,0.0,0.0,0.0,1,5.5,49
788
+ 797,2020-07-23 10:58:51,90.0,0.0,0.0,0.0,0.0,1,5.5,49
789
+ 798,2020-07-23 11:03:50,91.0,0.0,0.0,0.0,0.0,1,5.5,49
790
+ 799,2020-07-23 11:08:51,93.0,0.0,0.0,0.0,0.0,1,5.5,49
791
+ 800,2020-07-23 11:13:50,95.0,0.0,0.0,0.0,0.0,1,5.5,49
792
+ 801,2020-07-23 11:18:51,96.0,0.0,0.0,0.0,0.0,1,5.5,49
793
+ 802,2020-07-23 11:23:50,96.0,0.0,0.0,0.0,0.0,1,5.5,49
794
+ 803,2020-07-23 11:28:51,95.0,0.0,0.0,0.0,0.0,1,5.5,49
795
+ 804,2020-07-23 11:33:51,94.0,0.0,0.0,0.0,0.0,1,5.5,49
796
+ 805,2020-07-23 11:38:50,92.0,0.0,0.0,0.0,0.0,1,5.5,49
797
+ 806,2020-07-23 11:43:50,92.0,0.0,0.0,0.0,0.0,1,5.5,49
798
+ 807,2020-07-23 11:48:51,94.0,0.0,0.0,0.0,0.0,1,5.5,49
799
+ 808,2020-07-23 11:53:50,97.0,0.0,0.0,0.0,0.0,1,5.5,49
800
+ 809,2020-07-23 11:58:51,99.0,0.0,0.0,0.0,0.0,1,5.5,49
801
+ 810,2020-07-23 12:03:51,99.0,0.0,0.0,0.0,0.0,1,5.5,49
802
+ 811,2020-07-23 12:08:51,98.0,0.0,0.0,0.0,0.0,1,5.5,49
803
+ 812,2020-07-23 12:13:50,96.0,0.0,0.0,0.0,0.0,1,5.5,49
804
+ 813,2020-07-23 12:18:50,94.0,0.0,0.0,0.0,0.0,1,5.5,49
805
+ 814,2020-07-23 12:23:50,93.0,0.0,0.0,0.0,0.0,1,5.5,49
806
+ 815,2020-07-23 12:28:51,92.0,0.0,0.0,0.0,0.0,1,5.5,49
807
+ 816,2020-07-23 12:33:50,91.0,0.0,0.0,0.0,0.0,1,5.5,49
808
+ 817,2020-07-23 12:38:50,89.0,0.0,0.0,0.0,0.0,1,5.5,49
809
+ 818,2020-07-23 12:43:49,89.0,0.0,0.0,0.0,0.0,1,5.5,49
810
+ 819,2020-07-23 12:48:49,90.0,0.0,0.0,0.0,0.0,1,5.5,49
811
+ 820,2020-07-23 12:53:49,89.0,0.0,0.0,0.0,0.0,1,5.5,49
812
+ 821,2020-07-23 12:58:50,88.0,0.0,0.0,0.0,0.0,1,5.5,49
813
+ 822,2020-07-23 13:03:50,87.0,0.0,0.0,0.0,0.0,1,5.5,49
814
+ 823,2020-07-23 13:08:49,87.0,0.0,0.0,0.0,0.0,1,5.5,49
815
+ 824,2020-07-23 13:13:50,88.0,0.0,0.0,0.0,0.0,1,5.5,49
816
+ 825,2020-07-23 13:18:49,89.0,0.0,0.0,0.0,0.0,1,5.5,49
817
+ 826,2020-07-23 13:23:50,89.0,0.0,0.0,0.0,0.0,1,5.5,49
818
+ 827,2020-07-23 13:28:50,90.0,0.0,0.0,0.0,0.0,1,5.5,49
819
+ 828,2020-07-23 13:33:50,90.0,0.0,0.0,0.0,0.0,1,5.5,49
820
+ 829,2020-07-23 13:38:49,91.0,0.0,0.0,0.0,0.0,1,5.5,49
821
+ 830,2020-07-23 13:43:50,93.0,0.0,0.0,0.0,0.0,1,5.5,49
822
+ 831,2020-07-23 13:48:49,95.0,0.0,0.0,0.0,0.0,1,5.5,49
823
+ 832,2020-07-23 13:53:49,97.0,0.0,0.0,0.0,0.0,1,5.5,49
824
+ 833,2020-07-23 13:58:49,98.0,0.0,0.0,0.0,0.0,1,5.5,49
825
+ 834,2020-07-23 14:03:49,97.0,0.0,0.0,0.0,0.0,1,5.5,49
826
+ 835,2020-07-23 14:08:49,97.0,0.0,0.0,0.0,0.0,1,5.5,49
827
+ 836,2020-07-23 14:13:50,96.0,0.0,0.0,0.0,0.0,1,5.5,49
828
+ 837,2020-07-23 14:18:49,96.0,0.0,0.0,0.0,0.0,1,5.5,49
829
+ 838,2020-07-23 14:23:50,96.0,0.0,0.0,0.0,0.0,1,5.5,49
830
+ 839,2020-07-23 14:28:49,97.0,0.0,0.0,0.0,0.0,1,5.5,49
831
+ 840,2020-07-23 14:33:49,97.0,0.0,0.0,0.0,0.0,1,5.5,49
832
+ 841,2020-07-23 14:38:49,97.0,0.0,0.0,0.0,0.0,1,5.5,49
833
+ 842,2020-07-23 14:43:49,97.0,0.0,0.0,0.0,0.0,1,5.5,49
834
+ 843,2020-07-23 14:48:49,98.0,0.0,0.0,0.0,0.0,1,5.5,49
835
+ 844,2020-07-23 14:53:49,98.0,0.0,0.0,0.0,0.0,1,5.5,49
836
+ 845,2020-07-23 14:58:50,98.0,0.0,0.0,0.0,0.0,1,5.5,49
837
+ 846,2020-07-23 15:03:50,97.0,0.0,0.0,0.0,0.0,1,5.5,49
838
+ 847,2020-07-23 15:08:49,97.0,0.0,0.0,0.0,0.0,1,5.5,49
839
+ 848,2020-07-23 15:13:49,100.0,0.0,0.0,0.0,0.0,1,5.5,49
840
+ 849,2020-07-23 15:18:49,105.0,0.0,0.0,0.0,0.0,1,5.5,49
841
+ 850,2020-07-23 15:23:49,107.0,0.0,0.0,0.0,0.0,1,5.5,49
842
+ 851,2020-07-23 15:28:49,106.0,0.0,0.0,0.0,0.0,1,5.5,49
843
+ 852,2020-07-23 15:33:50,102.0,0.0,0.0,0.0,0.0,1,5.5,49
844
+ 853,2020-07-23 15:38:49,97.0,0.0,0.0,0.0,0.0,1,5.5,49
845
+ 854,2020-07-23 15:43:50,94.0,0.0,0.0,0.0,0.0,1,5.5,49
846
+ 855,2020-07-23 15:48:50,94.0,0.0,0.0,0.0,0.0,1,5.5,49
847
+ 856,2020-07-23 15:53:50,95.0,0.0,0.0,0.0,0.0,1,5.5,49
848
+ 857,2020-07-23 15:58:50,95.0,0.0,0.0,0.0,0.0,1,5.5,49
849
+ 858,2020-07-23 16:03:50,94.0,0.0,0.0,0.0,0.0,1,5.5,49
850
+ 859,2020-07-23 16:08:50,94.0,0.0,0.0,0.0,0.0,1,5.5,49
851
+ 860,2020-07-23 16:13:50,93.0,0.0,0.0,0.0,0.0,1,5.5,49
852
+ 861,2020-07-23 16:18:50,95.0,0.0,0.0,0.0,0.0,1,5.5,49
853
+ 862,2020-07-23 16:23:50,98.0,0.0,0.0,0.0,0.0,1,5.5,49
854
+ 863,2020-07-23 16:28:50,101.0,0.0,0.0,0.0,0.0,1,5.5,49
855
+ 864,2020-07-23 16:33:50,101.0,0.0,0.0,0.0,0.0,1,5.5,49
856
+ 865,2020-07-23 16:38:49,105.0,0.0,0.0,0.0,0.0,1,5.5,49
857
+ 866,2020-07-23 16:43:49,116.0,0.0,0.0,0.0,0.0,1,5.5,49
858
+ 867,2020-07-23 16:48:50,130.0,0.0,0.0,0.0,0.0,1,5.5,49
859
+ 868,2020-07-23 16:53:49,143.0,0.0,0.0,0.0,0.0,1,5.5,49
860
+ 869,2020-07-23 16:58:49,152.0,0.0,0.0,0.0,0.0,1,5.5,49
861
+ 870,2020-07-23 17:03:49,155.0,0.0,0.0,0.0,0.0,1,5.5,49
862
+ 871,2020-07-23 17:08:50,155.0,0.0,0.0,0.0,0.0,1,5.5,49
863
+ 872,2020-07-23 17:13:49,153.0,0.0,0.0,0.0,0.0,1,5.5,49
864
+ 873,2020-07-23 17:18:50,151.0,0.0,0.0,0.0,0.0,1,5.5,49
865
+ 874,2020-07-23 17:23:50,152.0,0.0,0.0,0.0,0.0,1,5.5,49
866
+ 875,2020-07-23 17:28:49,155.0,0.0,0.0,0.0,0.0,1,5.5,49
867
+ 876,2020-07-23 17:33:49,159.0,0.0,0.0,0.0,0.0,1,5.5,49
868
+ 877,2020-07-23 17:38:50,162.0,0.0,0.0,0.0,0.0,1,5.5,49
869
+ 878,2020-07-23 17:43:49,166.0,0.0,0.0,0.0,0.0,1,5.5,49
870
+ 879,2020-07-23 17:48:50,167.0,0.0,0.0,0.0,0.0,1,5.5,49
871
+ 880,2020-07-23 17:53:50,166.0,0.0,0.0,0.0,0.0,1,5.5,49
872
+ 881,2020-07-23 17:58:49,161.0,0.0,0.0,0.0,0.0,1,5.5,49
873
+ 882,2020-07-23 18:03:50,155.0,0.0,0.0,0.0,0.0,1,5.5,49
874
+ 883,2020-07-23 18:08:49,149.0,0.0,0.0,0.0,0.0,1,5.5,49
875
+ 884,2020-07-23 18:13:49,146.0,0.0,0.0,0.0,0.0,1,5.5,49
876
+ 885,2020-07-23 18:18:49,145.0,0.0,0.0,0.0,0.0,1,5.5,49
877
+ 886,2020-07-23 18:23:50,145.0,0.0,0.0,0.0,0.0,1,5.5,49
878
+ 887,2020-07-23 18:28:49,145.0,0.0,0.0,0.0,0.0,1,5.5,49
879
+ 888,2020-07-23 18:33:50,142.0,0.0,0.0,0.0,0.0,1,5.5,49
880
+ 889,2020-07-23 18:38:49,139.0,0.0,0.0,0.0,0.0,1,5.5,49
881
+ 890,2020-07-23 18:43:49,135.0,0.0,0.0,0.0,0.0,1,5.5,49
882
+ 891,2020-07-23 18:48:49,132.0,0.0,0.0,0.0,0.0,1,5.5,49
883
+ 892,2020-07-23 18:53:50,128.0,0.0,0.0,0.0,0.0,1,5.5,49
884
+ 893,2020-07-23 18:58:50,125.0,0.0,0.0,0.0,0.0,1,5.5,49
885
+ 894,2020-07-23 19:03:50,123.0,0.0,0.0,0.0,0.0,1,5.5,49
886
+ 895,2020-07-23 19:08:49,122.0,0.0,0.0,0.0,0.0,1,5.5,49
887
+ 896,2020-07-23 19:13:50,120.0,0.0,0.0,0.0,0.0,1,5.5,49
888
+ 897,2020-07-23 19:18:50,118.0,0.0,0.0,0.0,0.0,1,5.5,49
889
+ 898,2020-07-23 19:23:49,118.0,0.0,0.0,0.0,0.0,1,5.5,49
890
+ 899,2020-07-23 19:28:50,119.0,0.0,0.0,0.0,0.0,1,5.5,49
891
+ 900,2020-07-23 19:33:49,121.0,0.0,0.0,0.0,0.0,1,5.5,49
892
+ 901,2020-07-23 19:38:49,122.0,0.0,0.0,0.0,0.0,1,5.5,49
893
+ 902,2020-07-23 19:43:50,119.0,0.0,0.0,0.0,0.0,1,5.5,49
894
+ 903,2020-07-23 19:48:50,113.0,0.0,0.0,0.0,0.0,1,5.5,49
895
+ 904,2020-07-23 19:53:49,107.0,0.0,0.0,0.0,0.0,1,5.5,49
896
+ 905,2020-07-23 19:58:50,102.0,0.0,0.0,0.0,0.0,1,5.5,49
897
+ 906,2020-07-23 20:03:49,99.0,0.0,0.0,0.0,0.0,1,5.5,49
898
+ 907,2020-07-23 20:08:50,97.0,0.0,0.0,0.0,0.0,1,5.5,49
899
+ 908,2020-07-23 20:13:49,97.0,0.0,0.0,0.0,0.0,1,5.5,49
900
+ 909,2020-07-23 20:18:49,97.0,0.0,0.0,0.0,0.0,1,5.5,49
901
+ 910,2020-07-23 20:23:49,94.0,0.0,0.0,0.0,0.0,1,5.5,49
902
+ 911,2020-07-23 20:28:49,90.0,0.0,0.0,0.0,0.0,1,5.5,49
903
+ 912,2020-07-23 20:33:49,85.0,0.0,0.0,0.0,0.0,1,5.5,49
904
+ 913,2020-07-23 20:38:50,81.0,0.0,0.0,0.0,0.0,1,5.5,49
905
+ 914,2020-07-23 20:43:50,78.0,0.0,0.0,0.0,0.0,1,5.5,49
906
+ 915,2020-07-23 20:48:49,78.0,0.0,0.0,0.0,0.0,1,5.5,49
907
+ 916,2020-07-23 20:53:49,81.0,0.0,0.0,0.0,0.0,1,5.5,49
908
+ 917,2020-07-23 20:58:49,86.0,0.0,0.0,0.0,0.0,1,5.5,49
909
+ 918,2020-07-23 21:03:49,86.0,0.0,0.0,0.0,0.0,1,5.5,49
910
+ 919,2020-07-23 21:08:49,84.0,0.0,0.0,0.0,0.0,1,5.5,49
911
+ 920,2020-07-23 21:13:49,82.0,0.0,0.0,0.0,0.0,1,5.5,49
912
+ 921,2020-07-23 21:18:49,80.0,0.0,0.0,0.0,0.0,1,5.5,49
913
+ 922,2020-07-23 21:23:50,80.0,0.0,0.0,0.0,0.0,1,5.5,49
914
+ 923,2020-07-23 21:28:49,83.0,0.0,0.0,0.0,0.0,1,5.5,49
915
+ 924,2020-07-23 21:33:49,88.0,0.0,0.0,0.0,0.0,1,5.5,49
916
+ 925,2020-07-23 21:38:49,96.0,0.0,0.0,0.0,0.0,1,5.5,49
917
+ 926,2020-07-23 21:43:49,103.0,0.0,0.0,0.0,0.0,1,5.5,49
918
+ 927,2020-07-23 21:48:49,107.0,0.0,0.0,0.0,0.0,1,5.5,49
919
+ 928,2020-07-23 21:53:49,106.0,0.0,0.0,0.0,0.0,1,5.5,49
920
+ 929,2020-07-23 21:58:49,104.0,0.0,0.0,0.0,0.0,1,5.5,49
921
+ 930,2020-07-23 22:03:49,103.0,0.0,0.0,0.0,0.0,1,5.5,49
922
+ 931,2020-07-23 22:08:49,104.0,0.0,0.0,0.0,0.0,1,5.5,49
923
+ 932,2020-07-23 22:13:49,104.0,0.0,0.0,0.0,0.0,1,5.5,49
924
+ 933,2020-07-23 22:18:49,104.0,0.0,0.0,0.0,0.0,1,5.5,49
925
+ 934,2020-07-23 22:23:49,104.0,0.0,0.0,0.0,0.0,1,5.5,49
926
+ 935,2020-07-23 22:28:49,107.0,0.0,0.0,0.0,0.0,1,5.5,49
927
+ 936,2020-07-23 22:33:49,108.0,0.0,0.0,0.0,0.0,1,5.5,49
928
+ 937,2020-07-23 22:38:49,107.0,0.0,0.0,0.0,0.0,1,5.5,49
929
+ 938,2020-07-23 22:43:49,104.0,0.0,0.0,0.0,0.0,1,5.5,49
930
+ 939,2020-07-23 22:48:50,100.0,0.0,0.0,0.0,0.0,1,5.5,49
931
+ 940,2020-07-23 22:53:50,94.0,0.0,0.0,0.0,0.0,1,5.5,49
932
+ 941,2020-07-23 22:58:49,89.0,0.0,0.0,0.0,0.0,1,5.5,49
933
+ 942,2020-07-23 23:03:49,85.0,0.0,0.0,0.0,0.0,1,5.5,49
934
+ 943,2020-07-23 23:08:49,82.0,0.0,0.0,0.0,0.0,1,5.5,49
935
+ 944,2020-07-23 23:13:49,81.0,0.0,0.0,0.0,0.0,1,5.5,49
936
+ 945,2020-07-23 23:18:49,82.0,0.0,0.0,0.0,0.0,1,5.5,49
937
+ 946,2020-07-23 23:23:49,84.0,0.0,0.0,0.0,0.0,1,5.5,49
938
+ 947,2020-07-23 23:28:49,85.0,0.0,0.0,0.0,0.0,1,5.5,49
939
+ 948,2020-07-23 23:33:49,86.0,0.0,0.0,0.0,0.0,1,5.5,49
940
+ 949,2020-07-23 23:38:49,87.0,0.0,0.0,0.0,0.0,1,5.5,49
941
+ 950,2020-07-23 23:43:49,87.0,0.0,0.0,0.0,0.0,1,5.5,49
942
+ 951,2020-07-23 23:48:49,88.0,0.0,0.0,0.0,0.0,1,5.5,49
943
+ 952,2020-07-23 23:53:49,90.0,0.0,0.0,0.0,0.0,1,5.5,49
944
+ 953,2020-07-23 23:58:50,91.0,0.0,0.0,0.0,0.0,1,5.5,49
945
+ 954,2020-07-24 00:03:49,92.0,0.0,0.0,0.0,0.0,1,5.5,49
946
+ 955,2020-07-24 00:08:49,91.0,0.0,0.0,0.0,0.0,1,5.5,49
947
+ 956,2020-07-24 00:13:49,88.0,0.0,0.0,0.0,0.0,1,5.5,49
948
+ 957,2020-07-24 00:18:49,84.0,0.0,0.0,0.0,0.0,1,5.5,49
949
+ 958,2020-07-24 00:23:49,83.0,0.0,0.0,0.0,0.0,1,5.5,49
950
+ 959,2020-07-24 00:28:49,87.0,0.0,0.0,0.0,0.0,1,5.5,49
951
+ 960,2020-07-24 00:33:49,94.0,0.0,0.0,0.0,0.0,1,5.5,49
952
+ 961,2020-07-24 00:38:49,101.0,0.0,0.0,0.0,0.0,1,5.5,49
953
+ 962,2020-07-24 00:43:50,107.0,0.0,0.0,0.0,0.0,1,5.5,49
954
+ 963,2020-07-24 00:48:49,112.0,0.0,0.0,0.0,0.0,1,5.5,49
955
+ 964,2020-07-24 00:53:49,116.0,0.0,0.0,0.0,0.0,1,5.5,49
956
+ 965,2020-07-24 00:58:50,116.0,0.0,0.0,0.0,0.0,1,5.5,49
957
+ 966,2020-07-24 01:03:49,115.0,0.0,0.0,0.0,0.0,1,5.5,49
958
+ 967,2020-07-24 01:08:49,114.0,0.0,0.0,0.0,0.0,1,5.5,49
959
+ 968,2020-07-24 01:13:49,114.0,0.0,0.0,0.0,0.0,1,5.5,49
960
+ 969,2020-07-24 01:18:50,114.0,0.0,0.0,0.0,0.0,1,5.5,49
961
+ 970,2020-07-24 01:23:49,115.0,0.0,0.0,0.0,0.0,1,5.5,49
962
+ 971,2020-07-24 01:28:50,116.0,0.0,0.0,0.0,0.0,1,5.5,49
963
+ 972,2020-07-24 01:33:49,117.0,0.0,0.0,0.0,0.0,1,5.5,49
964
+ 973,2020-07-24 01:38:50,117.0,0.0,0.0,0.0,0.0,1,5.5,49
965
+ 974,2020-07-24 01:43:49,116.0,0.0,0.0,0.0,0.0,1,5.5,49
966
+ 975,2020-07-24 01:48:49,116.0,0.0,0.0,0.0,0.0,1,5.5,49
967
+ 976,2020-07-24 01:53:49,116.0,0.0,0.0,0.0,0.0,1,5.5,49
968
+ 977,2020-07-24 01:58:49,116.0,0.0,0.0,0.0,0.0,1,5.5,49
969
+ 978,2020-07-24 02:03:50,117.0,0.0,0.0,0.0,0.0,1,5.5,49
970
+ 979,2020-07-24 02:08:49,115.0,0.0,0.0,0.0,0.0,1,5.5,49
971
+ 980,2020-07-24 02:13:50,108.0,0.0,0.0,0.0,0.0,1,5.5,49
972
+ 981,2020-07-24 02:18:49,101.0,0.0,0.0,0.0,0.0,1,5.5,49
973
+ 982,2020-07-24 02:23:49,99.0,0.0,0.0,0.0,0.0,1,5.5,49
974
+ 983,2020-07-24 02:28:50,104.0,0.0,0.0,0.0,0.0,1,5.5,49
975
+ 984,2020-07-24 02:33:49,109.0,0.0,0.0,0.0,0.0,1,5.5,49
976
+ 985,2020-07-24 02:38:49,110.0,0.0,0.0,0.0,0.0,1,5.5,49
977
+ 986,2020-07-24 02:43:49,108.0,0.0,0.0,0.0,0.0,1,5.5,49
978
+ 987,2020-07-24 02:48:49,106.0,0.0,0.0,0.0,0.0,1,5.5,49
979
+ 988,2020-07-24 02:53:50,106.0,0.0,0.0,0.0,0.0,1,5.5,49
980
+ 989,2020-07-24 02:58:49,108.0,0.0,0.0,0.0,0.0,1,5.5,49
981
+ 990,2020-07-24 03:03:49,110.0,0.0,0.0,0.0,0.0,1,5.5,49
982
+ 991,2020-07-24 03:08:49,111.0,0.0,0.0,0.0,0.0,1,5.5,49
983
+ 992,2020-07-24 03:13:49,111.0,0.0,0.0,0.0,0.0,1,5.5,49
984
+ 993,2020-07-24 03:18:49,110.0,0.0,0.0,0.0,0.0,1,5.5,49
985
+ 994,2020-07-24 03:23:49,110.0,0.0,0.0,0.0,0.0,1,5.5,49
986
+ 995,2020-07-24 03:28:49,111.0,0.0,0.0,0.0,0.0,1,5.5,49
987
+ 996,2020-07-24 03:33:49,113.0,0.0,0.0,0.0,0.0,1,5.5,49
988
+ 997,2020-07-24 03:38:49,115.0,0.0,0.0,0.0,0.0,1,5.5,49
989
+ 998,2020-07-24 03:43:49,115.0,0.0,0.0,0.0,0.0,1,5.5,49
990
+ 999,2020-07-24 03:48:49,111.0,0.0,0.0,0.0,0.0,1,5.5,49
991
+ 1000,2020-07-24 03:53:49,108.0,0.0,0.0,0.0,0.0,1,5.5,49
992
+ 1001,2020-07-24 03:58:49,105.0,0.0,0.0,0.0,0.0,1,5.5,49
993
+ 1002,2020-07-24 04:03:49,106.0,0.0,0.0,0.0,0.0,1,5.5,49
994
+ 1003,2020-07-24 04:08:49,108.0,0.0,0.0,0.0,0.0,1,5.5,49
995
+ 1004,2020-07-24 04:13:49,112.0,0.0,0.0,0.0,0.0,1,5.5,49
996
+ 1005,2020-07-24 04:18:49,115.0,0.0,0.0,0.0,0.0,1,5.5,49
997
+ 1006,2020-07-24 04:23:49,118.0,0.0,0.0,0.0,0.0,1,5.5,49
998
+ 1007,2020-07-24 04:28:49,119.0,0.0,0.0,0.0,0.0,1,5.5,49
999
+ 1008,2020-07-24 04:33:49,120.0,0.0,0.0,0.0,0.0,1,5.5,49
1000
+ 1009,2020-07-24 04:38:49,121.0,0.0,0.0,0.0,0.0,1,5.5,49
1001
+ 1010,2020-07-24 04:43:49,121.0,0.0,0.0,0.0,0.0,1,5.5,49
1002
+ 1011,2020-07-24 04:48:49,121.0,0.0,0.0,0.0,0.0,1,5.5,49
1003
+ 1012,2020-07-24 04:53:49,121.0,0.0,0.0,0.0,0.0,1,5.5,49
1004
+ 1013,2020-07-24 04:58:49,121.0,0.0,0.0,0.0,0.0,1,5.5,49
1005
+ 1014,2020-07-24 05:03:49,120.0,0.0,0.0,0.0,0.0,1,5.5,49
1006
+ 1015,2020-07-24 05:08:49,119.0,0.0,0.0,0.0,0.0,1,5.5,49
1007
+ 1016,2020-07-24 05:13:49,117.0,0.0,0.0,0.0,0.0,1,5.5,49
1008
+ 1017,2020-07-24 05:18:49,115.0,0.0,0.0,0.0,0.0,1,5.5,49
1009
+ 1018,2020-07-24 05:23:49,113.0,0.0,0.0,0.0,0.0,1,5.5,49
1010
+ 1019,2020-07-24 05:28:49,112.0,0.0,0.0,0.0,0.0,1,5.5,49
1011
+ 1020,2020-07-24 05:33:49,112.0,0.0,0.0,0.0,0.0,1,5.5,49
1012
+ 1021,2020-07-24 05:38:49,111.0,0.0,0.0,0.0,0.0,1,5.5,49
1013
+ 1022,2020-07-24 05:43:49,108.0,0.0,0.0,0.0,0.0,1,5.5,49
1014
+ 1023,2020-07-24 05:48:49,107.0,0.0,0.0,0.0,0.0,1,5.5,49
1015
+ 1024,2020-07-24 05:53:49,108.0,0.0,0.0,0.0,0.0,1,5.5,49
1016
+ 1025,2020-07-24 05:58:49,108.0,0.0,0.0,0.0,0.0,1,5.5,49
1017
+ 1026,2020-07-24 06:03:49,109.0,0.0,0.0,0.0,0.0,1,5.5,49
1018
+ 1027,2020-07-24 06:08:49,107.0,0.0,0.0,0.0,0.0,1,5.5,49
1019
+ 1028,2020-07-24 06:13:49,111.0,0.0,0.0,0.0,0.0,1,5.5,49
1020
+ 1029,2020-07-24 06:18:49,117.0,0.0,0.0,0.0,0.0,1,5.5,49
1021
+ 1030,2020-07-24 06:23:49,128.0,0.0,0.0,0.0,0.0,1,5.5,49
1022
+ 1031,2020-07-24 06:28:49,138.0,0.0,0.0,0.0,0.0,1,5.5,49
1023
+ 1032,2020-07-24 06:33:49,142.0,0.0,0.0,0.0,0.0,1,5.5,49
1024
+ 1033,2020-07-24 06:38:49,140.0,0.0,0.0,0.0,0.0,1,5.5,49
1025
+ 1034,2020-07-24 06:43:49,132.0,0.0,0.0,0.0,0.0,1,5.5,49
1026
+ 1035,2020-07-24 06:48:49,124.0,0.0,0.0,0.0,0.0,1,5.5,49
1027
+ 1036,2020-07-24 06:53:49,117.0,0.0,0.0,0.0,0.0,1,5.5,49
1028
+ 1037,2020-07-24 06:58:49,113.0,0.0,0.0,0.0,0.0,1,5.5,49
1029
+ 1038,2020-07-24 07:03:49,110.0,0.0,0.0,0.0,0.0,1,5.5,49
1030
+ 1039,2020-07-24 07:08:49,109.0,63.05,0.0,0.0,0.0,1,5.5,49
1031
+ 1040,2020-07-24 07:13:49,108.0,63.12,0.0,0.0,0.0,1,5.5,49
1032
+ 1041,2020-07-24 07:18:49,105.0,63.57,0.0,0.0,0.0,1,5.5,49
1033
+ 1042,2020-07-24 07:23:49,101.0,63.98,0.0,0.0,0.0,1,5.5,49
1034
+ 1043,2020-07-24 07:28:49,99.0,63.77,0.0,0.0,0.0,1,5.5,49
1035
+ 1044,2020-07-24 07:33:49,97.0,64.05,0.0,0.0,0.0,1,5.5,49
1036
+ 1045,2020-07-24 07:38:49,96.0,63.72,0.0,0.0,0.0,1,5.5,49
1037
+ 1046,2020-07-24 07:43:49,94.0,64.16,0.0,0.0,0.0,1,5.5,49
1038
+ 1047,2020-07-24 07:48:49,94.0,63.57,0.0,0.0,0.0,1,5.5,49
1039
+ 1048,2020-07-24 07:53:49,96.0,63.51,0.0,0.0,0.0,1,5.5,49
1040
+ 1049,2020-07-24 07:58:49,96.0,64.25,0.0,0.0,0.0,1,5.5,49
1041
+ 1050,2020-07-24 08:03:49,95.0,63.94,0.0,0.0,0.0,1,5.5,49
1042
+ 1051,2020-07-24 08:08:49,92.0,63.64,0.0,0.0,0.0,1,5.5,49
1043
+ 1052,2020-07-24 08:13:49,93.0,63.34,0.0,0.0,0.0,1,5.5,49
1044
+ 1053,2020-07-24 08:18:49,94.0,63.66,0.0,0.0,0.0,1,5.5,49
1045
+ 1054,2020-07-24 08:23:49,94.0,63.81,0.0,0.0,0.0,1,5.5,49
1046
+ 1055,2020-07-24 08:28:48,95.0,64.94,0.0,0.0,0.0,1,5.5,49
1047
+ 1056,2020-07-24 08:33:49,96.0,63.41,0.0,0.0,0.0,1,5.5,49
1048
+ 1057,2020-07-24 08:38:49,98.0,63.34,0.0,0.0,0.0,1,5.5,49
1049
+ 1058,2020-07-24 08:43:49,100.0,64.58,0.0,0.0,0.0,1,5.5,49
1050
+ 1059,2020-07-24 08:48:49,103.0,63.94,0.0,0.0,0.0,1,5.5,49
1051
+ 1060,2020-07-24 08:53:49,105.0,63.24,0.0,0.0,0.0,1,5.5,49
1052
+ 1061,2020-07-24 08:58:49,105.0,64.79,0.0,0.0,0.0,1,5.5,49
1053
+ 1062,2020-07-24 09:03:49,103.0,63.5,0.0,0.0,0.0,1,5.5,49
1054
+ 1063,2020-07-24 09:08:49,100.0,63.75,0.0,0.0,0.0,1,5.5,49
1055
+ 1064,2020-07-24 09:13:49,97.0,63.41,0.0,0.0,0.0,1,5.5,49
1056
+ 1065,2020-07-24 09:18:49,97.0,63.22,0.0,0.0,0.0,1,5.5,49
1057
+ 1066,2020-07-24 09:23:49,96.0,63.36,0.0,0.0,0.0,1,5.5,49
1058
+ 1067,2020-07-24 09:28:49,96.0,63.15,0.0,0.0,0.0,1,5.5,49
1059
+ 1068,2020-07-24 09:33:49,93.0,63.28,0.0,0.0,0.0,1,5.5,49
1060
+ 1069,2020-07-24 09:38:49,90.0,63.1,0.0,0.0,0.0,1,5.5,49
1061
+ 1070,2020-07-24 09:43:49,90.0,63.18,0.0,0.0,0.0,1,5.5,49
1062
+ 1071,2020-07-24 09:48:49,92.0,63.23,0.0,0.0,0.0,1,5.5,49
1063
+ 1072,2020-07-24 09:53:49,95.0,63.16,0.0,0.0,0.0,1,5.5,49
1064
+ 1073,2020-07-24 09:58:49,95.0,63.38,0.0,0.0,0.0,1,5.5,49
1065
+ 1074,2020-07-24 10:03:49,95.0,63.7,0.0,0.0,0.0,1,5.5,49
1066
+ 1075,2020-07-24 10:08:49,95.0,63.49,0.0,0.0,0.0,1,5.5,49
1067
+ 1076,2020-07-24 10:13:49,98.0,63.73,0.0,0.0,0.0,1,5.5,49
1068
+ 1077,2020-07-24 10:18:49,102.0,63.32,0.0,0.0,0.0,1,5.5,49
1069
+ 1078,2020-07-24 10:23:49,106.0,63.46,0.0,0.0,0.0,1,5.5,49
1070
+ 1079,2020-07-24 10:28:49,108.0,63.48,0.0,0.0,0.0,1,5.5,49
1071
+ 1080,2020-07-24 10:33:49,105.0,63.42,0.0,0.0,0.0,1,5.5,49
1072
+ 1081,2020-07-24 10:38:49,102.0,63.13,0.0,0.0,0.0,1,5.5,49
1073
+ 1082,2020-07-24 10:43:49,99.0,63.0,0.0,0.0,0.0,1,5.5,49
1074
+ 1083,2020-07-24 10:48:49,97.0,62.9,0.0,0.0,0.0,1,5.5,49
1075
+ 1084,2020-07-24 10:53:49,95.0,63.01,0.0,0.0,0.0,1,5.5,49
1076
+ 1085,2020-07-24 10:58:49,94.0,63.42,0.0,0.0,0.0,1,5.5,49
1077
+ 1086,2020-07-24 11:03:49,95.0,64.32,0.0,0.0,0.0,1,5.5,49
1078
+ 1087,2020-07-24 11:08:49,97.0,63.94,0.0,0.0,0.0,1,5.5,49
1079
+ 1088,2020-07-24 11:13:49,99.0,64.28,0.0,0.0,0.0,1,5.5,49
1080
+ 1089,2020-07-24 11:18:49,98.0,66.76,0.0,0.0,0.0,1,5.5,49
1081
+ 1090,2020-07-24 11:23:49,96.0,64.57,0.0,0.0,0.0,1,5.5,49
1082
+ 1091,2020-07-24 11:28:49,94.0,64.16,0.0,0.0,0.0,1,5.5,49
1083
+ 1092,2020-07-24 11:33:49,93.0,64.6,0.0,0.0,0.0,1,5.5,49
1084
+ 1093,2020-07-24 11:38:49,93.0,64.54,0.0,0.0,0.0,1,5.5,49
1085
+ 1094,2020-07-24 11:43:49,93.0,65.59,0.0,0.0,0.0,1,5.5,49
1086
+ 1095,2020-07-24 11:48:48,93.0,66.12,0.0,0.0,0.0,1,5.5,49
1087
+ 1096,2020-07-24 11:53:49,92.0,65.6,0.0,0.0,0.0,1,5.5,49
1088
+ 1097,2020-07-24 11:58:49,91.0,64.81,0.0,0.0,0.0,1,5.5,49
1089
+ 1098,2020-07-24 12:03:49,91.0,64.93,0.0,0.0,0.0,1,5.5,49
1090
+ 1099,2020-07-24 12:08:49,89.0,66.31,0.0,0.0,0.0,1,5.5,49
1091
+ 1100,2020-07-24 12:13:49,89.0,64.72,0.0,0.0,0.0,1,5.5,49
1092
+ 1101,2020-07-24 12:18:49,89.0,64.51,0.0,0.0,0.0,1,5.5,49
1093
+ 1102,2020-07-24 12:23:49,89.0,65.36,0.0,0.0,0.0,1,5.5,49
1094
+ 1103,2020-07-24 12:28:49,88.0,64.76,0.0,0.0,0.0,1,5.5,49
1095
+ 1104,2020-07-24 12:33:49,88.0,64.29,0.0,0.0,0.0,1,5.5,49
1096
+ 1105,2020-07-24 12:38:49,89.0,64.26,0.0,0.0,0.0,1,5.5,49
1097
+ 1106,2020-07-24 12:43:49,88.0,63.96,0.0,0.0,0.0,1,5.5,49
1098
+ 1107,2020-07-24 12:48:49,85.0,63.65,0.0,0.0,0.0,1,5.5,49
1099
+ 1108,2020-07-24 12:53:49,83.0,63.36,0.0,0.0,0.0,1,5.5,49
1100
+ 1109,2020-07-24 12:58:49,85.0,64.09,0.0,0.0,0.0,1,5.5,49
1101
+ 1110,2020-07-24 13:03:49,91.0,63.97,0.0,0.0,0.0,1,5.5,49
1102
+ 1111,2020-07-24 13:08:49,99.0,63.61,0.0,0.0,0.0,1,5.5,49
1103
+ 1112,2020-07-24 13:13:48,107.0,64.12,0.0,0.0,0.0,1,5.5,49
1104
+ 1113,2020-07-24 13:18:49,109.0,64.3,0.0,0.0,0.0,1,5.5,49
1105
+ 1114,2020-07-24 13:23:48,105.0,63.95,0.0,0.0,0.0,1,5.5,49
1106
+ 1115,2020-07-24 13:28:49,99.0,63.9,0.0,0.0,0.0,1,5.5,49
1107
+ 1116,2020-07-24 13:33:49,94.0,63.82,0.0,0.0,0.0,1,5.5,49
1108
+ 1117,2020-07-24 13:38:49,94.0,63.7,0.0,0.0,0.0,1,5.5,49
1109
+ 1118,2020-07-24 13:43:49,95.0,64.08,0.0,0.0,0.0,1,5.5,49
1110
+ 1119,2020-07-24 13:48:48,96.0,65.92,0.0,0.0,0.0,1,5.5,49
1111
+ 1120,2020-07-24 13:53:49,95.0,64.97,0.0,0.0,0.0,1,5.5,49
1112
+ 1121,2020-07-24 13:58:49,95.0,64.0,0.0,0.0,0.0,1,5.5,49
1113
+ 1122,2020-07-24 14:03:48,95.0,64.04,0.0,0.0,0.0,1,5.5,49
1114
+ 1123,2020-07-24 14:08:49,96.0,63.9,0.0,0.0,0.0,1,5.5,49
1115
+ 1124,2020-07-24 14:13:49,96.0,63.45,0.0,0.0,0.0,1,5.5,49
1116
+ 1125,2020-07-24 14:18:49,94.0,64.15,0.0,0.0,0.0,1,5.5,49
1117
+ 1126,2020-07-24 14:23:49,92.0,64.12,0.0,0.0,0.0,1,5.5,49
1118
+ 1127,2020-07-24 14:28:48,91.0,64.23,0.0,0.0,0.0,1,5.5,49
1119
+ 1128,2020-07-24 14:33:49,92.0,63.88,0.0,0.0,0.0,1,5.5,49
1120
+ 1129,2020-07-24 14:38:49,95.0,63.54,0.0,0.0,0.0,1,5.5,49
1121
+ 1130,2020-07-24 14:43:48,96.0,63.75,0.0,0.0,0.0,1,5.5,49
1122
+ 1131,2020-07-24 14:48:49,99.0,63.38,0.0,0.0,0.0,1,5.5,49
1123
+ 1132,2020-07-24 14:53:48,101.0,63.52,0.0,0.0,0.0,1,5.5,49
1124
+ 1133,2020-07-24 14:58:49,102.0,63.41,0.0,0.0,0.0,1,5.5,49
1125
+ 1134,2020-07-24 15:03:49,102.0,63.62,0.0,0.0,0.0,1,5.5,49
1126
+ 1135,2020-07-24 15:08:49,100.0,64.23,0.0,0.0,0.0,1,5.5,49
1127
+ 1136,2020-07-24 15:13:49,98.0,63.99,0.0,0.0,0.0,1,5.5,49
1128
+ 1137,2020-07-24 15:18:49,96.0,64.02,0.0,0.0,0.0,1,5.5,49
1129
+ 1138,2020-07-24 15:23:49,94.0,65.01,0.0,0.0,0.0,1,5.5,49
1130
+ 1139,2020-07-24 15:28:49,94.0,63.87,0.0,0.0,0.0,1,5.5,49
1131
+ 1140,2020-07-24 15:33:49,95.0,64.26,0.0,0.0,0.0,1,5.5,49
1132
+ 1141,2020-07-24 15:38:49,95.0,63.38,0.0,0.0,0.0,1,5.5,49
1133
+ 1142,2020-07-24 15:43:49,95.0,64.42,0.0,0.0,0.0,1,5.5,49
1134
+ 1143,2020-07-24 15:48:49,94.0,63.76,0.0,0.0,0.0,1,5.5,49
1135
+ 1144,2020-07-24 15:53:49,95.0,65.25,0.0,0.0,0.0,1,5.5,49
1136
+ 1145,2020-07-24 15:58:48,95.0,67.11,0.0,0.0,0.0,1,5.5,49
1137
+ 1146,2020-07-24 16:03:49,96.0,63.78,0.0,0.0,0.0,1,5.5,49
1138
+ 1147,2020-07-24 16:08:49,94.0,63.82,0.0,0.0,0.0,1,5.5,49
1139
+ 1148,2020-07-24 16:13:48,93.0,64.03,0.0,0.0,0.0,1,5.5,49
1140
+ 1149,2020-07-24 16:18:49,91.0,64.21,0.0,0.0,0.0,1,5.5,49
1141
+ 1150,2020-07-24 16:23:49,90.0,64.12,0.0,0.0,0.0,1,5.5,49
1142
+ 1151,2020-07-24 16:28:49,89.0,64.01,0.0,0.0,0.0,1,5.5,49
1143
+ 1152,2020-07-24 16:33:49,90.0,63.84,0.0,0.0,0.0,1,5.5,49
1144
+ 1153,2020-07-24 16:38:49,90.0,64.12,0.0,0.0,0.0,1,5.5,49
1145
+ 1154,2020-07-24 16:43:49,90.0,63.77,0.0,0.0,0.0,1,5.5,49
1146
+ 1155,2020-07-24 16:48:48,90.0,64.41,0.0,0.0,0.0,1,5.5,49
1147
+ 1156,2020-07-24 16:53:49,91.0,63.77,0.0,0.0,0.0,1,5.5,49
1148
+ 1157,2020-07-24 16:58:48,92.0,63.76,0.0,0.0,0.0,1,5.5,49
1149
+ 1158,2020-07-24 17:03:49,94.0,63.65,0.0,0.0,0.0,1,5.5,49
1150
+ 1159,2020-07-24 17:08:48,96.0,63.92,0.0,0.0,0.0,1,5.5,49
1151
+ 1160,2020-07-24 17:13:49,96.0,63.86,0.0,0.0,0.0,1,5.5,49
1152
+ 1161,2020-07-24 17:18:48,97.0,63.89,0.0,0.0,0.0,1,5.5,49
1153
+ 1162,2020-07-24 17:23:49,96.0,63.75,0.0,0.0,0.0,1,5.5,49
1154
+ 1163,2020-07-24 17:28:49,97.0,63.66,0.0,0.0,0.0,1,5.5,49
1155
+ 1164,2020-07-24 17:33:49,98.0,64.2,0.0,0.0,0.0,1,5.5,49
1156
+ 1165,2020-07-24 17:38:49,102.0,63.9,0.0,0.0,0.0,1,5.5,49
1157
+ 1166,2020-07-24 17:43:49,106.0,64.21,0.0,0.0,0.0,1,5.5,49
1158
+ 1167,2020-07-24 17:48:49,108.0,64.49,0.0,0.0,0.0,1,5.5,49
1159
+ 1168,2020-07-24 17:53:49,107.0,64.02,0.0,0.0,0.0,1,5.5,49
1160
+ 1169,2020-07-24 17:58:49,107.0,63.84,0.0,0.0,0.0,1,5.5,49
1161
+ 1170,2020-07-24 18:03:48,109.0,64.01,0.0,0.0,0.0,1,5.5,49
1162
+ 1171,2020-07-24 18:08:49,111.0,63.86,0.0,0.0,0.0,1,5.5,49
1163
+ 1172,2020-07-24 18:13:49,111.0,64.42,0.0,0.0,0.0,1,5.5,49
1164
+ 1173,2020-07-24 18:18:49,113.0,63.81,0.0,0.0,0.0,1,5.5,49
1165
+ 1174,2020-07-24 18:23:49,114.0,64.18,0.0,0.0,0.0,1,5.5,49
1166
+ 1175,2020-07-24 18:28:48,118.0,63.96,0.0,0.0,0.0,1,5.5,49
1167
+ 1176,2020-07-24 18:33:49,118.0,63.89,0.0,0.0,0.0,1,5.5,49
1168
+ 1177,2020-07-24 18:38:48,118.0,65.08,0.0,0.0,0.0,1,5.5,49
1169
+ 1178,2020-07-24 18:43:50,117.0,63.88,0.0,0.0,0.0,1,5.5,49
1170
+ 1179,2020-07-24 18:48:49,117.0,63.84,0.0,0.0,0.0,1,5.5,49
1171
+ 1180,2020-07-24 18:53:50,117.0,63.84,0.0,0.0,0.0,1,5.5,49
1172
+ 1181,2020-07-24 18:58:50,117.0,63.74,0.0,0.0,0.0,1,5.5,49
1173
+ 1182,2020-07-24 19:03:49,117.0,63.77,0.0,0.0,0.0,1,5.5,49
1174
+ 1183,2020-07-24 19:08:50,120.0,63.77,0.0,0.0,0.0,1,5.5,49
1175
+ 1184,2020-07-24 19:13:50,121.0,63.71,0.0,0.0,0.0,1,5.5,49
1176
+ 1185,2020-07-24 19:18:50,121.0,63.85,0.0,0.0,0.0,1,5.5,49
1177
+ 1186,2020-07-24 19:23:50,120.0,63.91,0.0,0.0,0.0,1,5.5,49
1178
+ 1187,2020-07-24 19:28:50,122.0,63.85,0.0,0.0,0.0,1,5.5,49
1179
+ 1188,2020-07-24 19:33:50,124.0,63.75,0.0,0.0,0.0,1,5.5,49
1180
+ 1189,2020-07-24 19:38:49,126.0,63.82,0.0,0.0,0.0,1,5.5,49
1181
+ 1190,2020-07-24 19:43:50,128.0,64.67,0.0,0.0,0.0,1,5.5,49
1182
+ 1191,2020-07-24 19:48:49,128.0,63.7,0.0,0.0,0.0,1,5.5,49
1183
+ 1192,2020-07-24 19:53:50,126.0,63.86,0.0,0.0,0.0,1,5.5,49
1184
+ 1193,2020-07-24 19:58:49,122.0,64.75,0.0,0.0,0.0,1,5.5,49
1185
+ 1194,2020-07-24 20:03:50,117.0,63.95,0.0,0.0,0.0,1,5.5,49
1186
+ 1195,2020-07-24 20:08:50,111.0,63.78,0.0,0.0,0.0,1,5.5,49
1187
+ 1196,2020-07-24 20:13:49,106.0,64.02,0.0,0.0,0.0,1,5.5,49
1188
+ 1197,2020-07-24 20:18:50,105.0,64.19,0.0,0.0,0.0,1,5.5,49
1189
+ 1198,2020-07-24 20:23:50,105.0,63.5,0.0,0.0,0.0,1,5.5,49
1190
+ 1199,2020-07-24 20:28:50,103.0,63.88,0.0,0.0,0.0,1,5.5,49
1191
+ 1200,2020-07-24 20:33:49,100.0,63.84,0.0,0.0,0.0,1,5.5,49
1192
+ 1201,2020-07-24 20:38:49,98.0,64.03,0.0,0.0,0.0,1,5.5,49
1193
+ 1202,2020-07-24 20:43:50,104.0,63.97,0.0,0.0,0.0,1,5.5,49
1194
+ 1203,2020-07-24 20:48:50,117.0,63.86,0.0,0.0,0.0,1,5.5,49
1195
+ 1204,2020-07-24 20:53:50,132.0,64.34,0.0,0.0,0.0,1,5.5,49
1196
+ 1205,2020-07-24 20:58:49,144.0,63.56,0.0,0.0,0.0,1,5.5,49
1197
+ 1206,2020-07-24 21:03:50,152.0,63.65,0.0,0.0,0.0,1,5.5,49
1198
+ 1207,2020-07-24 21:08:50,160.0,63.73,0.0,0.0,0.0,1,5.5,49
1199
+ 1208,2020-07-24 21:13:50,169.0,63.7,0.0,0.0,0.0,1,5.5,49
1200
+ 1209,2020-07-24 21:18:50,175.0,63.6,0.0,0.0,0.0,1,5.5,49
1201
+ 1210,2020-07-24 21:23:50,177.0,63.85,0.0,0.0,0.0,1,5.5,49
1202
+ 1211,2020-07-24 21:28:50,172.0,64.34,0.0,0.0,0.0,1,5.5,49
1203
+ 1212,2020-07-24 21:33:50,164.0,64.03,0.0,0.0,0.0,1,5.5,49
1204
+ 1213,2020-07-24 21:38:50,156.0,64.07,0.0,0.0,0.0,1,5.5,49
1205
+ 1214,2020-07-24 21:43:50,151.0,63.88,0.0,0.0,0.0,1,5.5,49
1206
+ 1215,2020-07-24 21:48:50,147.0,63.87,0.0,0.0,0.0,1,5.5,49
1207
+ 1216,2020-07-24 21:53:50,144.0,63.91,0.0,0.0,0.0,1,5.5,49
1208
+ 1217,2020-07-24 21:58:50,139.0,63.96,0.0,0.0,0.0,1,5.5,49
1209
+ 1218,2020-07-24 22:03:50,135.0,63.87,0.0,0.0,0.0,1,5.5,49
1210
+ 1219,2020-07-24 22:08:49,132.0,63.86,0.0,0.0,0.0,1,5.5,49
1211
+ 1220,2020-07-24 22:13:50,130.0,63.81,0.0,0.0,0.0,1,5.5,49
1212
+ 1221,2020-07-24 22:18:49,128.0,63.75,0.0,0.0,0.0,1,5.5,49
1213
+ 1222,2020-07-24 22:23:50,126.0,63.58,0.0,0.0,0.0,1,5.5,49
1214
+ 1223,2020-07-24 22:28:49,124.0,63.51,0.0,0.0,0.0,1,5.5,49
1215
+ 1224,2020-07-24 22:33:49,121.0,63.48,0.0,0.0,0.0,1,5.5,49
1216
+ 1225,2020-07-24 22:38:50,117.0,63.38,0.0,0.0,0.0,1,5.5,49
1217
+ 1226,2020-07-24 22:43:50,114.0,63.43,0.0,0.0,0.0,1,5.5,49
1218
+ 1227,2020-07-24 22:48:49,114.0,63.33,0.0,0.0,0.0,1,5.5,49
1219
+ 1228,2020-07-24 22:53:50,114.0,63.37,0.0,0.0,0.0,1,5.5,49
1220
+ 1229,2020-07-24 22:58:49,116.0,63.43,0.0,0.0,0.0,1,5.5,49
1221
+ 1230,2020-07-24 23:03:50,117.0,63.54,0.0,0.0,0.0,1,5.5,49
1222
+ 1231,2020-07-24 23:08:49,118.0,63.66,0.0,0.0,0.0,1,5.5,49
1223
+ 1232,2020-07-24 23:13:50,119.0,63.78,0.0,0.0,0.0,1,5.5,49
1224
+ 1233,2020-07-24 23:18:49,119.0,63.31,0.0,0.0,0.0,1,5.5,49
1225
+ 1234,2020-07-24 23:23:49,118.0,63.21,0.0,0.0,0.0,1,5.5,49
1226
+ 1235,2020-07-24 23:28:49,117.0,64.49,0.0,0.0,0.0,1,5.5,49
1227
+ 1236,2020-07-24 23:33:49,118.0,63.64,0.0,0.0,0.0,1,5.5,49
1228
+ 1237,2020-07-24 23:38:49,118.0,63.52,0.0,0.0,0.0,1,5.5,49
1229
+ 1238,2020-07-24 23:43:49,119.0,63.57,0.0,0.0,0.0,1,5.5,49
1230
+ 1239,2020-07-24 23:48:50,117.0,63.49,0.0,0.0,0.0,1,5.5,49
1231
+ 1240,2020-07-24 23:53:49,115.0,63.6,0.0,0.0,0.0,1,5.5,49
1232
+ 1241,2020-07-24 23:58:50,112.0,63.53,0.0,0.0,0.0,1,5.5,49
1233
+ 1242,2020-07-25 00:03:49,110.0,63.48,0.0,0.0,0.0,1,5.5,49
1234
+ 1243,2020-07-25 00:08:49,109.0,63.57,0.0,0.0,0.0,1,5.5,49
1235
+ 1244,2020-07-25 00:13:50,108.0,63.67,0.0,0.0,0.0,1,5.5,49
1236
+ 1245,2020-07-25 00:18:50,106.0,63.6,0.0,0.0,0.0,1,5.5,49
1237
+ 1246,2020-07-25 00:23:50,105.0,63.64,0.0,0.0,0.0,1,5.5,49
1238
+ 1247,2020-07-25 00:28:50,104.0,63.53,0.0,0.0,0.0,1,5.5,49
1239
+ 1248,2020-07-25 00:33:50,104.0,63.53,0.0,0.0,0.0,1,5.5,49
1240
+ 1249,2020-07-25 00:38:49,104.0,63.62,0.0,0.0,0.0,1,5.5,49
1241
+ 1250,2020-07-25 00:43:49,104.0,63.57,0.0,0.0,0.0,1,5.5,49
1242
+ 1251,2020-07-25 00:48:49,105.0,63.86,0.0,0.0,0.0,1,5.5,49
1243
+ 1252,2020-07-25 00:53:49,106.0,63.6,0.0,0.0,0.0,1,5.5,49
1244
+ 1253,2020-07-25 00:58:50,107.0,63.38,0.0,0.0,0.0,1,5.5,49
1245
+ 1254,2020-07-25 01:03:49,107.0,63.37,0.0,0.0,0.0,1,5.5,49
1246
+ 1255,2020-07-25 01:08:49,107.0,63.25,0.0,0.0,0.0,1,5.5,49
1247
+ 1256,2020-07-25 01:13:49,107.0,63.63,0.0,0.0,0.0,1,5.5,49
1248
+ 1257,2020-07-25 01:18:50,107.0,63.98,0.0,0.0,0.0,1,5.5,49
1249
+ 1258,2020-07-25 01:23:49,107.0,63.73,0.0,0.0,0.0,1,5.5,49
1250
+ 1259,2020-07-25 01:28:49,107.0,63.78,0.0,0.0,0.0,1,5.5,49
1251
+ 1260,2020-07-25 01:33:50,107.0,63.79,0.0,0.0,0.0,1,5.5,49
1252
+ 1261,2020-07-25 01:38:49,108.0,63.8,0.0,0.0,0.0,1,5.5,49
1253
+ 1262,2020-07-25 01:43:49,109.0,63.79,0.0,0.0,0.0,1,5.5,49
1254
+ 1263,2020-07-25 01:48:50,109.0,63.83,0.0,0.0,0.0,1,5.5,49
1255
+ 1264,2020-07-25 01:53:49,110.0,63.75,0.0,0.0,0.0,1,5.5,49
1256
+ 1265,2020-07-25 01:58:49,110.0,63.72,0.0,0.0,0.0,1,5.5,49
1257
+ 1266,2020-07-25 02:03:50,109.0,63.79,0.0,0.0,0.0,1,5.5,49
1258
+ 1267,2020-07-25 02:08:49,105.0,63.56,0.0,0.0,0.0,1,5.5,49
1259
+ 1268,2020-07-25 02:13:49,101.0,63.28,0.0,0.0,0.0,1,5.5,49
1260
+ 1269,2020-07-25 02:18:50,99.0,63.92,0.0,0.0,0.0,1,5.5,49
1261
+ 1270,2020-07-25 02:23:50,103.0,64.02,0.0,0.0,0.0,1,5.5,49
1262
+ 1271,2020-07-25 02:28:49,107.0,64.05,0.0,0.0,0.0,1,5.5,49
1263
+ 1272,2020-07-25 02:33:49,110.0,64.06,0.0,0.0,0.0,1,5.5,49
1264
+ 1273,2020-07-25 02:38:49,111.0,63.95,0.0,0.0,0.0,1,5.5,49
1265
+ 1274,2020-07-25 02:43:50,110.0,63.94,0.0,0.0,0.0,1,5.5,49
1266
+ 1275,2020-07-25 02:48:50,109.0,63.93,0.0,0.0,0.0,1,5.5,49
1267
+ 1276,2020-07-25 02:53:49,108.0,63.86,0.0,0.0,0.0,1,5.5,49
1268
+ 1277,2020-07-25 02:58:49,107.0,64.14,0.0,0.0,0.0,1,5.5,49
1269
+ 1278,2020-07-25 03:03:49,106.0,64.18,0.0,0.0,0.0,1,5.5,49
1270
+ 1279,2020-07-25 03:08:49,105.0,64.11,0.0,0.0,0.0,1,5.5,49
1271
+ 1280,2020-07-25 03:13:50,104.0,64.07,0.0,0.0,0.0,1,5.5,49
1272
+ 1281,2020-07-25 03:18:49,103.0,63.77,0.0,0.0,0.0,1,5.5,49
1273
+ 1282,2020-07-25 03:23:49,102.0,63.44,0.0,0.0,0.0,1,5.5,49
1274
+ 1283,2020-07-25 03:28:50,101.0,63.33,0.0,0.0,0.0,1,5.5,49
1275
+ 1284,2020-07-25 03:33:49,102.0,63.28,0.0,0.0,0.0,1,5.5,49
1276
+ 1285,2020-07-25 03:38:49,106.0,63.75,0.0,0.0,0.0,1,5.5,49
1277
+ 1286,2020-07-25 03:43:49,109.0,63.68,0.0,0.0,0.0,1,5.5,49
1278
+ 1287,2020-07-25 03:48:50,112.0,63.62,0.0,0.0,0.0,1,5.5,49
1279
+ 1288,2020-07-25 03:53:50,112.0,64.04,0.0,0.0,0.0,1,5.5,49
1280
+ 1289,2020-07-25 03:58:49,113.0,63.78,0.0,0.0,0.0,1,5.5,49
1281
+ 1290,2020-07-25 04:03:49,109.0,63.84,0.0,0.0,0.0,1,5.5,49
1282
+ 1291,2020-07-25 04:08:50,103.0,63.61,0.0,0.0,0.0,1,5.5,49
1283
+ 1292,2020-07-25 04:13:50,101.0,63.69,0.0,0.0,0.0,1,5.5,49
1284
+ 1293,2020-07-25 04:18:50,103.0,63.69,0.0,0.0,0.0,1,5.5,49
1285
+ 1294,2020-07-25 04:23:50,108.0,63.61,0.0,0.0,0.0,1,5.5,49
1286
+ 1295,2020-07-25 04:28:50,108.0,63.6,0.0,0.0,0.0,1,5.5,49
1287
+ 1296,2020-07-25 04:33:50,108.0,63.57,0.0,0.0,0.0,1,5.5,49
1288
+ 1297,2020-07-25 04:38:50,107.0,63.66,0.0,0.0,0.0,1,5.5,49
1289
+ 1298,2020-07-25 04:43:50,104.0,63.62,0.0,0.0,0.0,1,5.5,49
1290
+ 1299,2020-07-25 04:48:49,101.0,63.57,0.0,0.0,0.0,1,5.5,49
1291
+ 1300,2020-07-25 04:53:50,99.0,63.41,0.0,0.0,0.0,1,5.5,49
1292
+ 1301,2020-07-25 04:58:49,101.0,63.36,0.0,0.0,0.0,1,5.5,49
1293
+ 1302,2020-07-25 05:03:49,103.0,63.81,0.0,0.0,0.0,1,5.5,49
1294
+ 1303,2020-07-25 05:08:50,104.0,63.79,0.0,0.0,0.0,1,5.5,49
1295
+ 1304,2020-07-25 05:13:49,105.0,63.57,0.0,0.0,0.0,1,5.5,49
1296
+ 1305,2020-07-25 05:18:50,106.0,63.47,0.0,0.0,0.0,1,5.5,49
1297
+ 1306,2020-07-25 05:23:50,106.0,63.8,0.0,0.0,0.0,1,5.5,49
1298
+ 1307,2020-07-25 05:28:49,106.0,63.82,0.0,0.0,0.0,1,5.5,49
1299
+ 1308,2020-07-25 05:33:49,106.0,63.7,0.0,0.0,0.0,1,5.5,49
1300
+ 1309,2020-07-25 05:38:50,106.0,63.58,0.0,0.0,0.0,1,5.5,49
1301
+ 1310,2020-07-25 05:43:50,107.0,63.5,0.0,0.0,0.0,1,5.5,49
1302
+ 1311,2020-07-25 05:48:50,110.0,63.84,0.0,0.0,0.0,1,5.5,49
1303
+ 1312,2020-07-25 05:53:49,111.0,63.84,0.0,0.0,0.0,1,5.5,49
1304
+ 1313,2020-07-25 05:58:50,113.0,63.84,0.0,0.0,0.0,1,5.5,49
1305
+ 1314,2020-07-25 06:03:49,115.0,63.74,0.0,0.0,0.0,1,5.5,49
1306
+ 1315,2020-07-25 06:08:49,117.0,63.77,0.0,0.0,0.0,1,5.5,49
1307
+ 1316,2020-07-25 06:13:50,117.0,63.68,0.0,0.0,0.0,1,5.5,49
1308
+ 1317,2020-07-25 06:18:50,115.0,63.64,0.0,0.0,0.0,1,5.5,49
1309
+ 1318,2020-07-25 06:23:50,115.0,64.52,0.0,0.0,0.0,1,5.5,49
1310
+ 1319,2020-07-25 06:28:50,117.0,63.7,0.0,0.0,0.0,1,5.5,49
1311
+ 1320,2020-07-25 06:33:50,117.0,63.67,0.0,0.0,0.0,1,5.5,49
1312
+ 1321,2020-07-25 06:38:50,115.0,63.62,0.0,0.0,0.0,1,5.5,49
1313
+ 1322,2020-07-25 06:43:49,114.0,63.62,0.0,0.0,0.0,1,5.5,49
1314
+ 1323,2020-07-25 06:48:50,117.0,63.48,0.0,0.0,0.0,1,5.5,49
1315
+ 1324,2020-07-25 06:53:50,119.0,63.39,0.0,0.0,0.0,1,5.5,49
1316
+ 1325,2020-07-25 06:58:49,119.0,63.46,0.0,0.0,0.0,1,5.5,49
1317
+ 1326,2020-07-25 07:03:50,118.0,64.0,0.0,0.0,0.0,1,5.5,49
1318
+ 1327,2020-07-25 07:08:50,118.0,63.85,0.0,0.0,0.0,1,5.5,49
1319
+ 1328,2020-07-25 07:13:49,119.0,63.79,0.0,0.0,0.0,1,5.5,49
1320
+ 1329,2020-07-25 07:18:49,121.0,63.76,0.0,0.0,0.0,1,5.5,49
1321
+ 1330,2020-07-25 07:23:49,124.0,63.69,0.0,0.0,0.0,1,5.5,49
1322
+ 1331,2020-07-25 07:28:49,126.0,63.77,0.0,0.0,0.0,1,5.5,49
1323
+ 1332,2020-07-25 07:33:49,126.0,63.8,0.0,0.0,0.0,1,5.5,49
1324
+ 1333,2020-07-25 07:38:50,126.0,63.68,0.0,0.0,0.0,1,5.5,49
1325
+ 1334,2020-07-25 07:43:49,126.0,63.63,0.0,0.0,0.0,1,5.5,49
1326
+ 1335,2020-07-25 07:48:49,126.0,63.44,0.0,0.0,0.0,1,5.5,49
1327
+ 1336,2020-07-25 07:53:50,125.0,63.38,0.0,0.0,0.0,1,5.5,49
1328
+ 1337,2020-07-25 07:58:50,124.0,63.22,0.0,0.0,0.0,1,5.5,49
1329
+ 1338,2020-07-25 08:03:49,121.0,63.35,0.0,0.0,0.0,1,5.5,49
1330
+ 1339,2020-07-25 08:08:49,117.0,63.21,0.0,0.0,0.0,1,5.5,49
1331
+ 1340,2020-07-25 08:13:50,114.0,63.13,0.0,0.0,0.0,1,5.5,49
1332
+ 1341,2020-07-25 08:18:49,114.0,63.7,0.0,0.0,0.0,1,5.5,49
1333
+ 1342,2020-07-25 08:23:50,116.0,63.65,0.0,0.0,0.0,1,5.5,49
1334
+ 1343,2020-07-25 08:28:50,119.0,63.86,0.0,0.0,0.0,1,5.5,49
1335
+ 1344,2020-07-25 08:33:50,120.0,63.52,0.0,0.0,0.0,1,5.5,49
1336
+ 1345,2020-07-25 08:38:50,116.0,64.53,0.0,0.0,0.0,1,5.5,49
1337
+ 1346,2020-07-25 08:43:49,114.0,62.84,0.0,0.0,0.0,1,5.5,49
1338
+ 1347,2020-07-25 08:48:49,115.0,62.87,0.0,0.0,0.0,1,5.5,49
1339
+ 1348,2020-07-25 08:53:48,121.0,62.86,0.0,0.0,0.0,1,5.5,49
1340
+ 1349,2020-07-25 08:58:48,124.0,62.95,0.0,0.0,0.0,1,5.5,49
1341
+ 1350,2020-07-25 09:03:48,125.0,63.54,0.0,0.0,0.0,1,5.5,49
1342
+ 1351,2020-07-25 09:08:48,122.0,63.45,0.0,0.0,0.0,1,5.5,49
1343
+ 1352,2020-07-25 09:13:48,117.0,64.2,0.0,0.0,0.0,1,5.5,49
1344
+ 1353,2020-07-25 09:18:48,110.0,64.29,0.0,0.0,0.0,1,5.5,49
1345
+ 1354,2020-07-25 09:23:48,104.0,63.38,0.0,0.0,0.0,1,5.5,49
1346
+ 1355,2020-07-25 09:28:48,100.0,63.55,0.0,0.0,0.0,1,5.5,49
1347
+ 1356,2020-07-25 09:33:48,98.0,63.21,0.0,0.0,0.0,1,5.5,49
1348
+ 1357,2020-07-25 09:38:48,100.0,62.94,0.0,0.0,0.0,1,5.5,49
1349
+ 1358,2020-07-25 09:43:48,104.0,62.61,0.0,0.0,0.0,1,5.5,49
1350
+ 1359,2020-07-25 09:48:48,106.0,62.83,0.0,0.0,0.0,1,5.5,49
1351
+ 1360,2020-07-25 09:53:48,106.0,63.07,0.0,0.0,0.0,1,5.5,49
1352
+ 1361,2020-07-25 09:58:48,105.0,62.95,0.0,0.0,0.0,1,5.5,49
1353
+ 1362,2020-07-25 10:03:48,106.0,63.02,0.0,0.0,0.0,1,5.5,49
1354
+ 1363,2020-07-25 10:08:48,108.0,64.91,0.0,0.0,0.0,1,5.5,49
1355
+ 1364,2020-07-25 10:13:48,108.0,64.62,0.0,0.0,0.0,1,5.5,49
1356
+ 1365,2020-07-25 10:18:48,111.0,63.55,0.0,0.0,0.0,1,5.5,49
1357
+ 1366,2020-07-25 10:23:48,114.0,63.84,0.0,0.0,0.0,1,5.5,49
1358
+ 1367,2020-07-25 10:28:48,114.0,65.0,0.0,0.0,0.0,1,5.5,49
1359
+ 1368,2020-07-25 10:33:48,110.0,64.85,0.0,0.0,0.0,1,5.5,49
1360
+ 1369,2020-07-25 10:38:48,105.0,63.69,0.0,0.0,0.0,1,5.5,49
1361
+ 1370,2020-07-25 10:43:48,101.0,63.62,0.0,0.0,0.0,1,5.5,49
1362
+ 1371,2020-07-25 10:48:48,102.0,63.37,0.0,0.0,0.0,1,5.5,49
1363
+ 1372,2020-07-25 10:53:48,107.0,64.37,0.0,0.0,0.0,1,5.5,49
1364
+ 1373,2020-07-25 10:58:48,113.0,63.99,0.0,0.0,0.0,1,5.5,49
1365
+ 1374,2020-07-25 11:03:48,114.0,64.35,0.0,0.0,0.0,1,5.5,49
1366
+ 1375,2020-07-25 11:08:48,112.0,64.47,0.0,0.0,0.0,1,5.5,49
1367
+ 1376,2020-07-25 11:13:48,108.0,64.34,0.0,0.0,0.0,1,5.5,49
1368
+ 1377,2020-07-25 11:18:48,105.0,64.3,0.0,0.0,0.0,1,5.5,49
1369
+ 1378,2020-07-25 11:23:48,103.0,64.29,0.0,0.0,0.0,1,5.5,49
1370
+ 1379,2020-07-25 11:28:48,103.0,64.29,0.0,0.0,0.0,1,5.5,49
1371
+ 1380,2020-07-25 11:33:48,104.0,64.24,0.0,0.0,0.0,1,5.5,49
1372
+ 1381,2020-07-26 09:28:47,114.0,0.0,0.0,0.0,0.0,1,5.5,49
1373
+ 1382,2020-07-26 09:33:47,113.0,0.0,0.0,0.0,0.0,1,5.5,49
1374
+ 1383,2020-07-26 09:38:47,115.0,0.0,0.0,0.0,0.0,1,5.5,49
1375
+ 1384,2020-07-26 09:43:47,117.0,0.0,0.0,0.0,0.0,1,5.5,49
1376
+ 1385,2020-07-26 09:48:47,118.0,0.0,0.0,0.0,0.0,1,5.5,49
1377
+ 1386,2020-07-26 09:53:47,118.0,0.0,0.0,0.0,0.0,1,5.5,49
1378
+ 1387,2020-07-26 09:58:47,118.0,0.0,0.0,0.0,0.0,1,5.5,49
1379
+ 1388,2020-07-26 10:03:47,117.0,0.0,0.0,0.0,0.0,1,5.5,49
1380
+ 1389,2020-07-26 10:08:47,116.0,0.0,0.0,0.0,0.0,1,5.5,49
1381
+ 1390,2020-07-26 10:13:47,113.0,0.0,0.0,0.0,0.0,1,5.5,49
1382
+ 1391,2020-07-26 10:18:47,109.0,0.0,0.0,0.0,0.0,1,5.5,49
1383
+ 1392,2020-07-26 10:23:47,104.0,0.0,0.0,0.0,0.0,1,5.5,49
1384
+ 1393,2020-07-26 10:28:47,100.0,0.0,0.0,0.0,0.0,1,5.5,49
1385
+ 1394,2020-07-26 10:33:47,99.0,0.0,0.0,0.0,0.0,1,5.5,49
1386
+ 1395,2020-07-26 10:38:47,99.0,0.0,0.0,0.0,0.0,1,5.5,49
1387
+ 1396,2020-07-26 10:43:47,103.0,0.0,0.0,0.0,0.0,1,5.5,49
1388
+ 1397,2020-07-26 10:48:47,107.0,0.0,0.0,0.0,0.0,1,5.5,49
1389
+ 1398,2020-07-26 10:53:47,114.0,0.0,0.0,0.0,0.0,1,5.5,49
1390
+ 1399,2020-07-26 10:58:47,120.0,0.0,0.0,0.0,0.0,1,5.5,49
1391
+ 1400,2020-07-26 11:03:47,127.0,0.0,0.0,0.0,0.0,1,5.5,49
1392
+ 1401,2020-07-26 11:08:47,132.0,0.0,0.0,0.0,0.0,1,5.5,49
1393
+ 1402,2020-07-26 11:13:47,132.0,0.0,0.0,0.0,0.0,1,5.5,49
1394
+ 1403,2020-07-26 11:18:47,131.0,0.0,0.0,0.0,0.0,1,5.5,49
1395
+ 1404,2020-07-26 11:23:47,129.0,0.0,0.0,0.0,0.0,1,5.5,49
1396
+ 1405,2020-07-26 11:28:47,126.0,0.0,0.0,0.0,0.0,1,5.5,49
1397
+ 1406,2020-07-26 11:33:47,124.0,0.0,0.0,0.0,0.0,1,5.5,49
1398
+ 1407,2020-07-26 11:38:47,123.0,0.0,0.0,0.0,0.0,1,5.5,49
1399
+ 1408,2020-07-26 11:43:47,121.0,0.0,0.0,0.0,0.0,1,5.5,49
1400
+ 1409,2020-07-26 11:48:47,120.0,0.0,0.0,0.0,0.0,1,5.5,49
1401
+ 1410,2020-07-26 11:53:47,119.0,0.0,0.0,0.0,0.0,1,5.5,49
1402
+ 1411,2020-07-26 11:58:47,117.0,0.0,0.0,0.0,0.0,1,5.5,49
1403
+ 1412,2020-07-26 12:03:47,116.0,0.0,0.0,0.0,0.0,1,5.5,49
1404
+ 1413,2020-07-26 12:08:47,115.0,0.0,0.0,0.0,0.0,1,5.5,49
1405
+ 1414,2020-07-26 12:13:47,116.0,0.0,0.0,0.0,0.0,1,5.5,49
1406
+ 1415,2020-07-26 12:18:47,119.0,0.0,0.0,0.0,0.0,1,5.5,49
1407
+ 1416,2020-07-26 12:23:47,121.0,0.0,0.0,0.0,0.0,1,5.5,49
1408
+ 1417,2020-07-26 12:28:47,123.0,0.0,0.0,0.0,0.0,1,5.5,49
1409
+ 1418,2020-07-26 12:33:47,125.0,0.0,0.0,0.0,0.0,1,5.5,49
1410
+ 1419,2020-07-26 12:38:46,123.0,0.0,0.0,0.0,0.0,1,5.5,49
1411
+ 1420,2020-07-26 12:43:47,121.0,0.0,0.0,0.0,0.0,1,5.5,49
1412
+ 1421,2020-07-26 12:48:47,118.0,0.0,0.0,0.0,0.0,1,5.5,49
1413
+ 1422,2020-07-26 12:53:47,116.0,0.0,0.0,0.0,0.0,1,5.5,49
1414
+ 1423,2020-07-26 12:58:46,115.0,0.0,0.0,0.0,0.0,1,5.5,49
1415
+ 1424,2020-07-26 13:03:47,114.0,0.0,0.0,0.0,0.0,1,5.5,49
1416
+ 1425,2020-07-26 13:08:47,113.0,0.0,0.0,0.0,0.0,1,5.5,49
1417
+ 1426,2020-07-26 13:13:46,112.0,0.0,0.0,0.0,0.0,1,5.5,49
1418
+ 1427,2020-07-26 13:18:47,111.0,0.0,0.0,0.0,0.0,1,5.5,49
1419
+ 1428,2020-07-26 13:23:47,110.0,0.0,0.0,0.0,0.0,1,5.5,49
1420
+ 1429,2020-07-26 13:28:46,106.0,0.0,0.0,0.0,0.0,1,5.5,49
1421
+ 1430,2020-07-26 13:33:47,103.0,0.0,0.0,0.0,0.0,1,5.5,49
1422
+ 1431,2020-07-26 13:38:47,100.0,0.0,0.0,0.0,0.0,1,5.5,49
1423
+ 1432,2020-07-26 13:43:47,101.0,0.0,0.0,0.0,0.0,1,5.5,49
1424
+ 1433,2020-07-26 13:48:46,102.0,0.0,0.0,0.0,0.0,1,5.5,49
1425
+ 1434,2020-07-26 13:53:47,103.0,0.0,0.0,0.0,0.0,1,5.5,49
1426
+ 1435,2020-07-26 13:58:47,104.0,0.0,0.0,0.0,0.0,1,5.5,49
1427
+ 1436,2020-07-26 14:03:47,104.0,0.0,0.0,0.0,0.0,1,5.5,49
1428
+ 1437,2020-07-26 14:08:47,104.0,0.0,0.0,0.0,0.0,1,5.5,49
1429
+ 1438,2020-07-26 14:13:47,104.0,0.0,0.0,0.0,0.0,1,5.5,49
1430
+ 1439,2020-07-26 14:18:46,104.0,0.0,0.0,0.0,0.0,1,5.5,49
1431
+ 1440,2020-07-26 14:23:47,103.0,0.0,0.0,0.0,0.0,1,5.5,49
1432
+ 1441,2020-07-26 14:28:46,102.0,0.0,0.0,0.0,0.0,1,5.5,49
1433
+ 1442,2020-07-26 14:33:47,102.0,0.0,0.0,0.0,0.0,1,5.5,49
1434
+ 1443,2020-07-26 14:38:47,102.0,0.0,0.0,0.0,0.0,1,5.5,49
1435
+ 1444,2020-07-26 14:43:47,102.0,0.0,0.0,0.0,0.0,1,5.5,49
1436
+ 1445,2020-07-26 14:48:47,102.0,0.0,0.0,0.0,0.0,1,5.5,49
1437
+ 1446,2020-07-26 14:53:47,102.0,0.0,0.0,0.0,0.0,1,5.5,49
1438
+ 1447,2020-07-26 14:58:46,101.0,0.0,0.0,0.0,0.0,1,5.5,49
1439
+ 1448,2020-07-26 15:03:47,98.0,0.0,0.0,0.0,0.0,1,5.5,49
1440
+ 1449,2020-07-26 15:08:47,96.0,0.0,0.0,0.0,0.0,1,5.5,49
1441
+ 1450,2020-07-26 15:13:47,96.0,0.0,0.0,0.0,0.0,1,5.5,49
1442
+ 1451,2020-07-26 15:18:47,95.0,0.0,0.0,0.0,0.0,1,5.5,49
1443
+ 1452,2020-07-26 15:23:47,95.0,0.0,0.0,0.0,0.0,1,5.5,49
1444
+ 1453,2020-07-26 15:28:47,94.0,0.0,0.0,0.0,0.0,1,5.5,49
1445
+ 1454,2020-07-26 15:33:46,94.0,0.0,0.0,0.0,0.0,1,5.5,49
1446
+ 1455,2020-07-26 15:38:47,94.0,0.0,0.0,0.0,0.0,1,5.5,49
1447
+ 1456,2020-07-26 15:43:47,95.0,0.0,0.0,0.0,0.0,1,5.5,49
1448
+ 1457,2020-07-26 15:48:47,96.0,0.0,0.0,0.0,0.0,1,5.5,49
1449
+ 1458,2020-07-26 15:53:47,98.0,0.0,0.0,0.0,0.0,1,5.5,49
1450
+ 1459,2020-07-26 15:58:46,100.0,0.0,0.0,0.0,0.0,1,5.5,49
1451
+ 1460,2020-07-26 16:03:46,102.0,0.0,0.0,0.0,0.0,1,5.5,49
1452
+ 1461,2020-07-26 16:08:47,103.0,0.0,0.0,0.0,0.0,1,5.5,49
1453
+ 1462,2020-07-26 16:13:47,102.0,0.0,0.0,0.0,0.0,1,5.5,49
1454
+ 1463,2020-07-26 16:18:47,103.0,0.0,0.0,0.0,0.0,1,5.5,49
1455
+ 1464,2020-07-26 16:23:47,107.0,0.0,0.0,0.0,0.0,1,5.5,49
1456
+ 1465,2020-07-26 16:28:47,111.0,0.0,0.0,0.0,0.0,1,5.5,49
1457
+ 1466,2020-07-26 16:33:47,115.0,0.0,0.0,0.0,0.0,1,5.5,49
1458
+ 1467,2020-07-26 16:38:46,116.0,0.0,0.0,0.0,0.0,1,5.5,49
1459
+ 1468,2020-07-26 16:43:47,115.0,0.0,0.0,0.0,0.0,1,5.5,49
1460
+ 1469,2020-07-26 16:48:47,114.0,0.0,0.0,0.0,0.0,1,5.5,49
1461
+ 1470,2020-07-26 16:53:47,113.0,0.0,0.0,0.0,0.0,1,5.5,49
1462
+ 1471,2020-07-26 16:58:47,116.0,0.0,0.0,0.0,0.0,1,5.5,49
1463
+ 1472,2020-07-26 17:03:47,119.0,0.0,0.0,0.0,0.0,1,5.5,49
1464
+ 1473,2020-07-26 17:08:46,122.0,0.0,0.0,0.0,0.0,1,5.5,49
1465
+ 1474,2020-07-26 17:13:46,124.0,0.0,0.0,0.0,0.0,1,5.5,49
1466
+ 1475,2020-07-26 17:18:47,125.0,0.0,0.0,0.0,0.0,1,5.5,49
1467
+ 1476,2020-07-26 17:23:47,127.0,0.0,0.0,0.0,0.0,1,5.5,49
1468
+ 1477,2020-07-26 17:28:46,129.0,0.0,0.0,0.0,0.0,1,5.5,49
1469
+ 1478,2020-07-26 17:33:46,130.0,0.0,0.0,0.0,0.0,1,5.5,49
1470
+ 1479,2020-07-26 17:38:46,130.0,0.0,0.0,0.0,0.0,1,5.5,49
1471
+ 1480,2020-07-26 17:43:47,130.0,0.0,0.0,0.0,0.0,1,5.5,49
1472
+ 1481,2020-07-26 17:48:46,125.0,0.0,0.0,0.0,0.0,1,5.5,49
1473
+ 1482,2020-07-26 17:53:46,116.0,0.0,0.0,0.0,0.0,1,5.5,49
1474
+ 1483,2020-07-26 17:58:47,106.0,0.0,0.0,0.0,0.0,1,5.5,49
1475
+ 1484,2020-07-26 18:03:46,103.0,0.0,0.0,0.0,0.0,1,5.5,49
1476
+ 1485,2020-07-26 18:08:46,106.0,0.0,0.0,0.0,0.0,1,5.5,49
1477
+ 1486,2020-07-26 18:13:46,111.0,0.0,0.0,0.0,0.0,1,5.5,49
1478
+ 1487,2020-07-26 18:18:47,116.0,0.0,0.0,0.0,0.0,1,5.5,49
1479
+ 1488,2020-07-26 18:23:46,118.0,0.0,0.0,0.0,0.0,1,5.5,49
1480
+ 1489,2020-07-26 18:28:46,116.0,0.0,0.0,0.0,0.0,1,5.5,49
1481
+ 1490,2020-07-26 18:33:47,112.0,0.0,0.0,0.0,0.0,1,5.5,49
1482
+ 1491,2020-07-26 18:38:47,110.0,0.0,0.0,0.0,0.0,1,5.5,49
1483
+ 1492,2020-07-26 18:43:47,113.0,0.0,0.0,0.0,0.0,1,5.5,49
1484
+ 1493,2020-07-26 18:48:47,116.0,0.0,0.0,0.0,0.0,1,5.5,49
1485
+ 1494,2020-07-26 18:53:47,118.0,0.0,0.0,0.0,0.0,1,5.5,49
1486
+ 1495,2020-07-26 18:58:47,116.0,0.0,0.0,0.0,0.0,1,5.5,49
1487
+ 1496,2020-07-26 19:03:47,111.0,0.0,0.0,0.0,0.0,1,5.5,49
1488
+ 1497,2020-07-26 19:08:47,107.0,0.0,0.0,0.0,0.0,1,5.5,49
1489
+ 1498,2020-07-26 19:13:46,103.0,0.0,0.0,0.0,0.0,1,5.5,49
1490
+ 1499,2020-07-26 19:18:47,100.0,0.0,0.0,0.0,0.0,1,5.5,49
1491
+ 1500,2020-07-26 19:23:46,98.0,0.0,0.0,0.0,0.0,1,5.5,49
1492
+ 1501,2020-07-26 19:28:46,97.0,0.0,0.0,0.0,0.0,1,5.5,49
1493
+ 1502,2020-07-26 19:33:46,97.0,0.0,0.0,0.0,0.0,1,5.5,49
1494
+ 1503,2020-07-26 19:38:47,96.0,0.0,0.0,0.0,0.0,1,5.5,49
1495
+ 1504,2020-07-26 19:43:47,95.0,0.0,0.0,0.0,0.0,1,5.5,49
1496
+ 1505,2020-07-26 19:48:46,95.0,0.0,0.0,0.0,0.0,1,5.5,49
1497
+ 1506,2020-07-26 19:53:46,95.0,0.0,0.0,0.0,0.0,1,5.5,49
1498
+ 1507,2020-07-26 19:58:46,95.0,0.0,0.0,0.0,0.0,1,5.5,49
1499
+ 1508,2020-07-26 20:03:47,95.0,0.0,0.0,0.0,0.0,1,5.5,49
1500
+ 1509,2020-07-26 20:08:47,96.0,0.0,0.0,0.0,0.0,1,5.5,49
1501
+ 1510,2020-07-26 20:13:47,99.0,0.0,0.0,0.0,0.0,1,5.5,49
1502
+ 1511,2020-07-26 20:18:47,102.0,0.0,0.0,0.0,0.0,1,5.5,49
1503
+ 1512,2020-07-26 20:23:47,108.0,0.0,0.0,0.0,0.0,1,5.5,49
1504
+ 1513,2020-07-26 20:28:47,111.0,0.0,0.0,0.0,0.0,1,5.5,49
1505
+ 1514,2020-07-26 20:33:48,115.0,0.0,0.0,0.0,0.0,1,5.5,49
1506
+ 1515,2020-07-26 20:38:47,116.0,0.0,0.0,0.0,0.0,1,5.5,49
1507
+ 1516,2020-07-26 20:43:47,118.0,0.0,0.0,0.0,0.0,1,5.5,49
1508
+ 1517,2020-07-26 20:48:48,120.0,0.0,0.0,0.0,0.0,1,5.5,49
1509
+ 1518,2020-07-26 20:53:48,122.0,0.0,0.0,0.0,0.0,1,5.5,49
1510
+ 1519,2020-07-26 20:58:48,122.0,0.0,0.0,0.0,0.0,1,5.5,49
1511
+ 1520,2020-07-26 21:03:48,122.0,0.0,0.0,0.0,0.0,1,5.5,49
1512
+ 1521,2020-07-26 21:08:48,122.0,0.0,0.0,0.0,0.0,1,5.5,49
1513
+ 1522,2020-07-26 21:13:48,120.0,0.0,0.0,0.0,0.0,1,5.5,49
1514
+ 1523,2020-07-26 21:18:47,119.0,0.0,0.0,0.0,0.0,1,5.5,49
1515
+ 1524,2020-07-26 21:23:47,117.0,0.0,0.0,0.0,0.0,1,5.5,49
1516
+ 1525,2020-07-26 21:28:48,115.0,0.0,0.0,0.0,0.0,1,5.5,49
1517
+ 1526,2020-07-26 21:33:48,113.0,0.0,0.0,0.0,0.0,1,5.5,49
1518
+ 1527,2020-07-26 21:38:47,109.0,0.0,0.0,0.0,0.0,1,5.5,49
1519
+ 1528,2020-07-26 21:43:47,104.0,0.0,0.0,0.0,0.0,1,5.5,49
1520
+ 1529,2020-07-26 21:48:47,102.0,0.0,0.0,0.0,0.0,1,5.5,49
1521
+ 1530,2020-07-26 21:53:47,101.0,0.0,0.0,0.0,0.0,1,5.5,49
1522
+ 1531,2020-07-26 21:58:47,100.0,0.0,0.0,0.0,0.0,1,5.5,49
1523
+ 1532,2020-07-26 22:03:48,99.0,0.0,0.0,0.0,0.0,1,5.5,49
1524
+ 1533,2020-07-26 22:08:48,99.0,0.0,0.0,0.0,0.0,1,5.5,49
1525
+ 1534,2020-07-26 22:13:47,100.0,0.0,0.0,0.0,0.0,1,5.5,49
1526
+ 1535,2020-07-26 22:18:47,103.0,0.0,0.0,0.0,0.0,1,5.5,49
1527
+ 1536,2020-07-26 22:23:47,106.0,0.0,0.0,0.0,0.0,1,5.5,49
1528
+ 1537,2020-07-26 22:28:47,106.0,0.0,0.0,0.0,0.0,1,5.5,49
1529
+ 1538,2020-07-26 22:33:47,105.0,0.0,0.0,0.0,0.0,1,5.5,49
1530
+ 1539,2020-07-26 22:38:47,103.0,0.0,0.0,0.0,0.0,1,5.5,49
1531
+ 1540,2020-07-26 22:43:47,102.0,0.0,0.0,0.0,0.0,1,5.5,49
1532
+ 1541,2020-07-26 22:48:47,103.0,0.0,0.0,0.0,0.0,1,5.5,49
1533
+ 1542,2020-07-26 22:53:47,104.0,0.0,0.0,0.0,0.0,1,5.5,49
1534
+ 1543,2020-07-26 22:58:46,107.0,0.0,0.0,0.0,0.0,1,5.5,49
1535
+ 1544,2020-07-26 23:03:46,111.0,0.0,0.0,0.0,0.0,1,5.5,49
1536
+ 1545,2020-07-26 23:08:46,116.0,0.0,0.0,0.0,0.0,1,5.5,49
1537
+ 1546,2020-07-26 23:13:47,119.0,0.0,0.0,0.0,0.0,1,5.5,49
1538
+ 1547,2020-07-26 23:18:46,122.0,0.0,0.0,0.0,0.0,1,5.5,49
1539
+ 1548,2020-07-26 23:23:47,124.0,0.0,0.0,0.0,0.0,1,5.5,49
1540
+ 1549,2020-07-26 23:28:46,125.0,0.0,0.0,0.0,0.0,1,5.5,49
1541
+ 1550,2020-07-26 23:33:46,126.0,0.0,0.0,0.0,0.0,1,5.5,49
1542
+ 1551,2020-07-26 23:38:47,128.0,0.0,0.0,0.0,0.0,1,5.5,49
1543
+ 1552,2020-07-26 23:43:46,129.0,0.0,0.0,0.0,0.0,1,5.5,49
1544
+ 1553,2020-07-26 23:48:47,127.0,0.0,0.0,0.0,0.0,1,5.5,49
1545
+ 1554,2020-07-26 23:53:47,121.0,0.0,0.0,0.0,0.0,1,5.5,49
1546
+ 1555,2020-07-26 23:58:47,115.0,0.0,0.0,0.0,0.0,1,5.5,49
1547
+ 1556,2020-07-27 00:03:46,110.0,0.0,0.0,0.0,0.0,1,5.5,49
1548
+ 1557,2020-07-27 00:08:47,106.0,0.0,0.0,0.0,0.0,1,5.5,49
1549
+ 1558,2020-07-27 00:13:46,106.0,0.0,0.0,0.0,0.0,1,5.5,49
1550
+ 1559,2020-07-27 00:18:46,108.0,0.0,0.0,0.0,0.0,1,5.5,49
1551
+ 1560,2020-07-27 00:23:46,114.0,0.0,0.0,0.0,0.0,1,5.5,49
1552
+ 1561,2020-07-27 00:28:47,122.0,0.0,0.0,0.0,0.0,1,5.5,49
1553
+ 1562,2020-07-27 00:33:46,132.0,0.0,0.0,0.0,0.0,1,5.5,49
1554
+ 1563,2020-07-27 00:38:46,138.0,0.0,0.0,0.0,0.0,1,5.5,49
1555
+ 1564,2020-07-27 00:43:46,141.0,0.0,0.0,0.0,0.0,1,5.5,49
1556
+ 1565,2020-07-27 00:48:47,141.0,0.0,0.0,0.0,0.0,1,5.5,49
1557
+ 1566,2020-07-27 00:53:46,141.0,0.0,0.0,0.0,0.0,1,5.5,49
1558
+ 1567,2020-07-27 00:58:47,140.0,0.0,0.0,0.0,0.0,1,5.5,49
1559
+ 1568,2020-07-27 01:03:46,139.0,0.0,0.0,0.0,0.0,1,5.5,49
1560
+ 1569,2020-07-27 01:08:46,137.0,0.0,0.0,0.0,0.0,1,5.5,49
1561
+ 1570,2020-07-27 01:13:46,134.0,0.0,0.0,0.0,0.0,1,5.5,49
1562
+ 1571,2020-07-27 01:18:46,130.0,0.0,0.0,0.0,0.0,1,5.5,49
1563
+ 1572,2020-07-27 01:23:47,127.0,0.0,0.0,0.0,0.0,1,5.5,49
1564
+ 1573,2020-07-27 01:28:47,125.0,0.0,0.0,0.0,0.0,1,5.5,49
1565
+ 1574,2020-07-27 01:33:47,124.0,0.0,0.0,0.0,0.0,1,5.5,49
1566
+ 1575,2020-07-27 01:38:46,123.0,0.0,0.0,0.0,0.0,1,5.5,49
1567
+ 1576,2020-07-27 01:43:47,122.0,0.0,0.0,0.0,0.0,1,5.5,49
1568
+ 1577,2020-07-27 01:48:47,121.0,0.0,0.0,0.0,0.0,1,5.5,49
1569
+ 1578,2020-07-27 01:53:46,120.0,0.0,0.0,0.0,0.0,1,5.5,49
1570
+ 1579,2020-07-27 01:58:46,119.0,0.0,0.0,0.0,0.0,1,5.5,49
1571
+ 1580,2020-07-27 02:03:47,117.0,0.0,0.0,0.0,0.0,1,5.5,49
1572
+ 1581,2020-07-27 02:08:47,115.0,0.0,0.0,0.0,0.0,1,5.5,49
1573
+ 1582,2020-07-27 02:13:47,115.0,0.0,0.0,0.0,0.0,1,5.5,49
1574
+ 1583,2020-07-27 02:18:47,116.0,0.0,0.0,0.0,0.0,1,5.5,49
1575
+ 1584,2020-07-27 02:23:47,118.0,0.0,0.0,0.0,0.0,1,5.5,49
1576
+ 1585,2020-07-27 02:28:47,120.0,0.0,0.0,0.0,0.0,1,5.5,49
1577
+ 1586,2020-07-27 02:33:47,121.0,0.0,0.0,0.0,0.0,1,5.5,49
1578
+ 1587,2020-07-27 02:38:47,122.0,0.0,0.0,0.0,0.0,1,5.5,49
1579
+ 1588,2020-07-27 02:43:46,122.0,0.0,0.0,0.0,0.0,1,5.5,49
1580
+ 1589,2020-07-27 02:48:47,123.0,0.0,0.0,0.0,0.0,1,5.5,49
1581
+ 1590,2020-07-27 02:53:46,123.0,0.0,0.0,0.0,0.0,1,5.5,49
1582
+ 1591,2020-07-27 02:58:47,124.0,0.0,0.0,0.0,0.0,1,5.5,49
1583
+ 1592,2020-07-27 03:03:47,124.0,0.0,0.0,0.0,0.0,1,5.5,49
1584
+ 1593,2020-07-27 03:08:46,124.0,0.0,0.0,0.0,0.0,1,5.5,49
1585
+ 1594,2020-07-27 03:13:46,124.0,0.0,0.0,0.0,0.0,1,5.5,49
1586
+ 1595,2020-07-27 03:18:47,126.0,0.0,0.0,0.0,0.0,1,5.5,49
1587
+ 1596,2020-07-27 03:23:46,126.0,0.0,0.0,0.0,0.0,1,5.5,49
1588
+ 1597,2020-07-27 03:28:47,127.0,0.0,0.0,0.0,0.0,1,5.5,49
1589
+ 1598,2020-07-27 03:33:46,127.0,0.0,0.0,0.0,0.0,1,5.5,49
1590
+ 1599,2020-07-27 03:38:46,129.0,0.0,0.0,0.0,0.0,1,5.5,49
1591
+ 1600,2020-07-27 03:43:47,129.0,0.0,0.0,0.0,0.0,1,5.5,49
1592
+ 1601,2020-07-27 03:48:46,130.0,0.0,0.0,0.0,0.0,1,5.5,49
1593
+ 1602,2020-07-27 03:53:46,130.0,0.0,0.0,0.0,0.0,1,5.5,49
1594
+ 1603,2020-07-27 03:58:46,132.0,0.0,0.0,0.0,0.0,1,5.5,49
1595
+ 1604,2020-07-27 04:03:46,134.0,0.0,0.0,0.0,0.0,1,5.5,49
1596
+ 1605,2020-07-27 04:08:46,136.0,0.0,0.0,0.0,0.0,1,5.5,49
1597
+ 1606,2020-07-27 04:13:47,136.0,0.0,0.0,0.0,0.0,1,5.5,49
1598
+ 1607,2020-07-27 04:18:47,136.0,0.0,0.0,0.0,0.0,1,5.5,49
1599
+ 1608,2020-07-27 04:23:47,136.0,0.0,0.0,0.0,0.0,1,5.5,49
1600
+ 1609,2020-07-27 04:28:47,135.0,0.0,0.0,0.0,0.0,1,5.5,49
1601
+ 1610,2020-07-27 04:33:46,131.0,0.0,0.0,0.0,0.0,1,5.5,49
1602
+ 1611,2020-07-27 04:38:47,126.0,0.0,0.0,0.0,0.0,1,5.5,49
1603
+ 1612,2020-07-27 04:43:46,121.0,0.0,0.0,0.0,0.0,1,5.5,49
1604
+ 1613,2020-07-27 04:48:47,119.0,0.0,0.0,0.0,0.0,1,5.5,49
1605
+ 1614,2020-07-27 04:53:46,120.0,0.0,0.0,0.0,0.0,1,5.5,49
1606
+ 1615,2020-07-27 04:58:46,122.0,0.0,0.0,0.0,0.0,1,5.5,49
1607
+ 1616,2020-07-27 05:03:47,124.0,0.0,0.0,0.0,0.0,1,5.5,49
1608
+ 1617,2020-07-27 05:08:46,123.0,0.0,0.0,0.0,0.0,1,5.5,49
1609
+ 1618,2020-07-27 05:13:47,123.0,0.0,0.0,0.0,0.0,1,5.5,49
1610
+ 1619,2020-07-27 05:18:47,122.0,0.0,0.0,0.0,0.0,1,5.5,49
1611
+ 1620,2020-07-27 05:23:46,122.0,0.0,0.0,0.0,0.0,1,5.5,49
1612
+ 1621,2020-07-27 05:28:46,123.0,0.0,0.0,0.0,0.0,1,5.5,49
1613
+ 1622,2020-07-27 05:33:47,124.0,0.0,0.0,0.0,0.0,1,5.5,49
1614
+ 1623,2020-07-27 05:38:46,125.0,0.0,0.0,0.0,0.0,1,5.5,49
1615
+ 1624,2020-07-27 05:43:47,125.0,0.0,0.0,0.0,0.0,1,5.5,49
1616
+ 1625,2020-07-27 05:48:46,124.0,0.0,0.0,0.0,0.0,1,5.5,49
1617
+ 1626,2020-07-27 05:53:47,124.0,0.0,0.0,0.0,0.0,1,5.5,49
1618
+ 1627,2020-07-27 05:58:46,123.0,0.0,0.0,0.0,0.0,1,5.5,49
1619
+ 1628,2020-07-27 06:03:47,122.0,0.0,0.0,0.0,0.0,1,5.5,49
1620
+ 1629,2020-07-27 06:08:46,122.0,0.0,0.0,0.0,0.0,1,5.5,49
1621
+ 1630,2020-07-27 06:13:46,121.0,0.0,0.0,0.0,0.0,1,5.5,49
1622
+ 1631,2020-07-27 06:18:46,120.0,0.0,0.0,0.0,0.0,1,5.5,49
1623
+ 1632,2020-07-27 06:23:47,118.0,0.0,0.0,0.0,0.0,1,5.5,49
1624
+ 1633,2020-07-27 06:28:47,116.0,0.0,0.0,0.0,0.0,1,5.5,49
1625
+ 1634,2020-07-27 06:33:46,113.0,0.0,0.0,0.0,0.0,1,5.5,49
1626
+ 1635,2020-07-27 06:38:46,114.0,0.0,0.0,0.0,0.0,1,5.5,49
1627
+ 1636,2020-07-27 06:43:46,116.0,0.0,0.0,0.0,0.0,1,5.5,49
1628
+ 1637,2020-07-27 06:48:47,120.0,0.0,0.0,0.0,0.0,1,5.5,49
1629
+ 1638,2020-07-27 06:53:46,122.0,0.0,0.0,0.0,0.0,1,5.5,49
1630
+ 1639,2020-07-27 06:58:46,121.0,0.0,0.0,0.0,0.0,1,5.5,49
1631
+ 1640,2020-07-27 07:03:47,118.0,0.0,0.0,0.0,0.0,1,5.5,49
1632
+ 1641,2020-07-27 07:08:46,115.0,0.0,0.0,0.0,0.0,1,5.5,49
1633
+ 1642,2020-07-27 07:13:46,114.0,0.0,0.0,0.0,0.0,1,5.5,49
1634
+ 1643,2020-07-27 07:18:47,112.0,0.0,0.0,0.0,0.0,1,5.5,49
1635
+ 1644,2020-07-27 07:23:47,108.0,0.0,0.0,0.0,0.0,1,5.5,49
1636
+ 1645,2020-07-27 07:28:46,104.0,0.0,0.0,0.0,0.0,1,5.5,49
1637
+ 1646,2020-07-27 07:33:47,103.0,0.0,0.0,0.0,0.0,1,5.5,49
1638
+ 1647,2020-07-27 07:38:47,103.0,0.0,0.0,0.0,0.0,1,5.5,49
1639
+ 1648,2020-07-27 07:43:47,103.0,0.0,0.0,0.0,0.0,1,5.5,49
1640
+ 1649,2020-07-27 07:48:46,100.0,0.0,0.0,0.0,0.0,1,5.5,49
1641
+ 1650,2020-07-27 07:53:46,98.0,0.0,0.0,0.0,0.0,1,5.5,49
1642
+ 1651,2020-07-27 07:58:47,98.0,0.0,0.0,0.0,0.0,1,5.5,49
1643
+ 1652,2020-07-27 08:03:46,99.0,0.0,0.0,0.0,0.0,1,5.5,49
1644
+ 1653,2020-07-27 08:08:46,100.0,0.0,0.0,0.0,0.0,1,5.5,49
1645
+ 1654,2020-07-27 08:13:46,99.0,0.0,0.0,0.0,0.0,1,5.5,49
1646
+ 1655,2020-07-27 08:18:46,98.0,0.0,0.0,0.0,0.0,1,5.5,49
1647
+ 1656,2020-07-27 08:23:46,96.0,0.0,0.0,0.0,0.0,1,5.5,49
1648
+ 1657,2020-07-27 08:28:46,95.0,0.0,0.0,0.0,0.0,1,5.5,49
1649
+ 1658,2020-07-27 08:33:46,94.0,0.0,0.0,0.0,0.0,1,5.5,49
1650
+ 1659,2020-07-27 08:38:46,93.0,0.0,0.0,0.0,0.0,1,5.5,49
1651
+ 1660,2020-07-27 08:43:46,93.0,0.0,0.0,0.0,0.0,1,5.5,49
1652
+ 1661,2020-07-27 08:48:46,93.0,0.0,0.0,0.0,0.0,1,5.5,49
1653
+ 1662,2020-07-27 08:53:47,94.0,0.0,0.0,0.0,0.0,1,5.5,49
1654
+ 1663,2020-07-27 08:58:47,94.0,0.0,0.0,0.0,0.0,1,5.5,49
1655
+ 1664,2020-07-27 09:03:46,97.0,0.0,0.0,0.0,0.0,1,5.5,49
1656
+ 1665,2020-07-27 09:08:47,101.0,0.0,0.0,0.0,0.0,1,5.5,49
1657
+ 1666,2020-07-27 09:13:46,107.0,0.0,0.0,0.0,0.0,1,5.5,49
1658
+ 1667,2020-07-27 09:18:46,115.0,0.0,0.0,0.0,0.0,1,5.5,49
1659
+ 1668,2020-07-27 09:23:47,122.0,0.0,0.0,0.0,0.0,1,5.5,49
1660
+ 1669,2020-07-27 09:28:46,129.0,0.0,0.0,0.0,0.0,1,5.5,49
1661
+ 1670,2020-07-27 09:33:47,133.0,0.0,0.0,0.0,0.0,1,5.5,49
1662
+ 1671,2020-07-27 09:38:46,133.0,0.0,0.0,0.0,0.0,1,5.5,49
1663
+ 1672,2020-07-27 09:43:47,134.0,0.0,0.0,0.0,0.0,1,5.5,49
1664
+ 1673,2020-07-27 09:48:46,132.0,0.0,0.0,0.0,0.0,1,5.5,49
1665
+ 1674,2020-07-27 09:53:47,127.0,0.0,0.0,0.0,0.0,1,5.5,49
1666
+ 1675,2020-07-27 09:58:46,118.0,0.0,0.0,0.0,0.0,1,5.5,49
1667
+ 1676,2020-07-27 10:03:46,108.0,0.0,0.0,0.0,0.0,1,5.5,49
1668
+ 1677,2020-07-27 10:08:47,101.0,0.0,0.0,0.0,0.0,1,5.5,49
1669
+ 1678,2020-07-27 10:13:46,97.0,0.0,0.0,0.0,0.0,1,5.5,49
1670
+ 1679,2020-07-27 10:18:46,93.0,0.0,0.0,0.0,0.0,1,5.5,49
1671
+ 1680,2020-07-27 10:23:46,90.0,0.0,0.0,0.0,0.0,1,5.5,49
1672
+ 1681,2020-07-27 10:28:47,87.0,0.0,0.0,0.0,0.0,1,5.5,49
1673
+ 1682,2020-07-27 10:33:46,86.0,0.0,0.0,0.0,0.0,1,5.5,49
1674
+ 1683,2020-07-27 10:38:46,86.0,0.0,0.0,0.0,0.0,1,5.5,49
data/processed/dataset_by_patient/patient_016.csv ADDED
The diff for this file is too large to render. See raw diff
 
data/processed/samples/sample_A.csv ADDED
@@ -0,0 +1,201 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ,Timestamp,Glucose,Accelerometer,Calories,Carbs,Sugar,Gender,HbA1c,Age,patient_id
2
+ 6982,2020-02-27 10:51:20,124.0,0.0,0.0,0.0,0.0,1,6.4,49,4
3
+ 6983,2020-02-27 10:56:20,118.0,0.0,0.0,0.0,0.0,1,6.4,49,4
4
+ 6984,2020-02-27 11:01:20,113.0,0.0,0.0,0.0,0.0,1,6.4,49,4
5
+ 6985,2020-02-27 11:06:20,110.0,0.0,0.0,0.0,0.0,1,6.4,49,4
6
+ 6986,2020-02-27 11:11:20,107.0,0.0,0.0,0.0,0.0,1,6.4,49,4
7
+ 6987,2020-02-27 11:16:19,105.0,0.0,0.0,0.0,0.0,1,6.4,49,4
8
+ 6988,2020-02-27 11:21:20,104.0,0.0,0.0,0.0,0.0,1,6.4,49,4
9
+ 6989,2020-02-27 11:26:20,105.0,0.0,0.0,0.0,0.0,1,6.4,49,4
10
+ 6990,2020-02-27 11:31:20,106.0,0.0,0.0,0.0,0.0,1,6.4,49,4
11
+ 6991,2020-02-27 11:36:20,106.0,0.0,0.0,0.0,0.0,1,6.4,49,4
12
+ 6992,2020-02-27 11:41:20,105.0,0.0,0.0,0.0,0.0,1,6.4,49,4
13
+ 6993,2020-02-27 11:46:20,105.0,0.0,0.0,0.0,0.0,1,6.4,49,4
14
+ 6994,2020-02-27 11:51:20,105.0,0.0,0.0,0.0,0.0,1,6.4,49,4
15
+ 6995,2020-02-27 11:56:20,105.0,0.0,0.0,0.0,0.0,1,6.4,49,4
16
+ 6996,2020-02-27 12:01:20,106.0,0.0,0.0,0.0,0.0,1,6.4,49,4
17
+ 6997,2020-02-27 12:06:20,107.0,0.0,0.0,0.0,0.0,1,6.4,49,4
18
+ 6998,2020-02-27 12:11:20,107.0,0.0,0.0,0.0,0.0,1,6.4,49,4
19
+ 6999,2020-02-27 12:16:20,105.0,0.0,0.0,0.0,0.0,1,6.4,49,4
20
+ 7000,2020-02-27 12:21:20,102.0,0.0,0.0,0.0,0.0,1,6.4,49,4
21
+ 7001,2020-02-27 12:26:20,99.0,0.0,0.0,0.0,0.0,1,6.4,49,4
22
+ 7002,2020-02-27 12:31:20,97.0,0.0,0.0,0.0,0.0,1,6.4,49,4
23
+ 7003,2020-02-27 12:36:20,96.0,0.0,0.0,0.0,0.0,1,6.4,49,4
24
+ 7004,2020-02-27 12:41:20,95.0,0.0,0.0,0.0,0.0,1,6.4,49,4
25
+ 7005,2020-02-27 12:46:20,97.0,0.0,0.0,0.0,0.0,1,6.4,49,4
26
+ 7006,2020-02-27 12:51:21,98.0,0.0,0.0,0.0,0.0,1,6.4,49,4
27
+ 7007,2020-02-27 12:56:20,100.0,0.0,0.0,0.0,0.0,1,6.4,49,4
28
+ 7008,2020-02-27 13:01:20,101.0,0.0,0.0,0.0,0.0,1,6.4,49,4
29
+ 7009,2020-02-27 13:06:21,101.0,0.0,0.0,0.0,0.0,1,6.4,49,4
30
+ 7010,2020-02-27 13:11:20,100.0,0.0,0.0,0.0,0.0,1,6.4,49,4
31
+ 7011,2020-02-27 13:16:20,99.0,0.0,0.0,0.0,0.0,1,6.4,49,4
32
+ 7012,2020-02-27 13:21:20,97.0,0.0,0.0,0.0,0.0,1,6.4,49,4
33
+ 7013,2020-02-27 13:26:20,96.0,0.0,0.0,0.0,0.0,1,6.4,49,4
34
+ 7014,2020-02-27 13:31:21,96.0,0.0,34.0,8.9,7.6,1,6.4,49,4
35
+ 7015,2020-02-27 13:36:20,98.0,0.0,34.0,8.9,7.6,1,6.4,49,4
36
+ 7016,2020-02-27 13:41:20,100.0,0.0,34.0,8.9,7.6,1,6.4,49,4
37
+ 7017,2020-02-27 13:46:20,102.0,0.0,34.0,8.9,7.6,1,6.4,49,4
38
+ 7018,2020-02-27 13:51:20,102.0,0.0,34.0,8.9,7.6,1,6.4,49,4
39
+ 7019,2020-02-27 13:56:21,101.0,0.0,34.0,8.9,7.6,1,6.4,49,4
40
+ 7020,2020-02-27 14:01:20,100.0,0.0,34.0,8.9,7.6,1,6.4,49,4
41
+ 7021,2020-02-27 14:06:20,100.0,0.0,34.0,8.9,7.6,1,6.4,49,4
42
+ 7022,2020-02-27 14:11:21,98.0,0.0,34.0,8.9,7.6,1,6.4,49,4
43
+ 7023,2020-02-27 14:16:20,96.0,0.0,34.0,8.9,7.6,1,6.4,49,4
44
+ 7024,2020-02-27 14:21:20,94.0,0.0,34.0,8.9,7.6,1,6.4,49,4
45
+ 7025,2020-02-27 14:26:21,92.0,0.0,34.0,8.9,7.6,1,6.4,49,4
46
+ 7026,2020-02-27 14:31:21,92.0,0.0,0.0,0.0,0.0,1,6.4,49,4
47
+ 7027,2020-02-27 14:36:21,94.0,0.0,0.0,0.0,0.0,1,6.4,49,4
48
+ 7028,2020-02-27 14:41:20,98.0,0.0,0.0,0.0,0.0,1,6.4,49,4
49
+ 7029,2020-02-27 14:46:20,102.0,0.0,0.0,0.0,0.0,1,6.4,49,4
50
+ 7030,2020-02-27 14:51:20,108.0,0.0,0.0,0.0,0.0,1,6.4,49,4
51
+ 7031,2020-02-27 14:56:20,111.0,0.0,0.0,0.0,0.0,1,6.4,49,4
52
+ 7032,2020-02-27 15:01:20,110.0,0.0,0.0,0.0,0.0,1,6.4,49,4
53
+ 7033,2020-02-27 15:06:20,107.0,0.0,0.0,0.0,0.0,1,6.4,49,4
54
+ 7034,2020-02-27 15:11:20,102.0,0.0,0.0,0.0,0.0,1,6.4,49,4
55
+ 7035,2020-02-27 15:16:20,98.0,0.0,0.0,0.0,0.0,1,6.4,49,4
56
+ 7036,2020-02-27 15:21:20,97.0,0.0,0.0,0.0,0.0,1,6.4,49,4
57
+ 7037,2020-02-27 15:26:20,98.0,0.0,0.0,0.0,0.0,1,6.4,49,4
58
+ 7038,2020-02-27 15:31:20,98.0,0.0,0.0,0.0,0.0,1,6.4,49,4
59
+ 7039,2020-02-27 15:36:20,99.0,0.0,0.0,0.0,0.0,1,6.4,49,4
60
+ 7040,2020-02-27 15:41:20,101.0,0.0,0.0,0.0,0.0,1,6.4,49,4
61
+ 7041,2020-02-27 15:46:20,103.0,0.0,0.0,0.0,0.0,1,6.4,49,4
62
+ 7042,2020-02-27 15:51:21,104.0,0.0,0.0,0.0,0.0,1,6.4,49,4
63
+ 7043,2020-02-27 15:56:20,103.0,0.0,0.0,0.0,0.0,1,6.4,49,4
64
+ 7044,2020-02-27 16:01:21,103.0,0.0,852.0,0.0,0.0,1,6.4,49,4
65
+ 7045,2020-02-27 16:06:20,103.0,0.0,852.0,0.0,0.0,1,6.4,49,4
66
+ 7046,2020-02-27 16:11:21,101.0,0.0,852.0,0.0,0.0,1,6.4,49,4
67
+ 7047,2020-02-27 16:16:20,100.0,0.0,852.0,0.0,0.0,1,6.4,49,4
68
+ 7048,2020-02-27 16:21:20,101.0,0.0,852.0,0.0,0.0,1,6.4,49,4
69
+ 7049,2020-02-27 16:26:21,101.0,0.0,852.0,0.0,0.0,1,6.4,49,4
70
+ 7050,2020-02-27 16:31:21,100.0,0.0,852.0,0.0,0.0,1,6.4,49,4
71
+ 7051,2020-02-27 16:36:21,97.0,0.0,852.0,0.0,0.0,1,6.4,49,4
72
+ 7052,2020-02-27 16:41:21,95.0,0.0,852.0,0.0,0.0,1,6.4,49,4
73
+ 7053,2020-02-27 16:46:21,94.0,0.0,852.0,0.0,0.0,1,6.4,49,4
74
+ 7054,2020-02-27 16:51:20,90.0,0.0,852.0,0.0,0.0,1,6.4,49,4
75
+ 7055,2020-02-27 16:56:21,87.0,0.0,852.0,0.0,0.0,1,6.4,49,4
76
+ 7056,2020-02-27 17:01:20,85.0,0.0,0.0,0.0,0.0,1,6.4,49,4
77
+ 7057,2020-02-27 17:06:20,88.0,0.0,0.0,0.0,0.0,1,6.4,49,4
78
+ 7058,2020-02-27 17:11:20,90.0,0.0,0.0,0.0,0.0,1,6.4,49,4
79
+ 7059,2020-02-27 17:16:21,91.0,0.0,0.0,0.0,0.0,1,6.4,49,4
80
+ 7060,2020-02-27 17:21:21,90.0,0.0,0.0,0.0,0.0,1,6.4,49,4
81
+ 7061,2020-02-27 17:26:21,90.0,0.0,0.0,0.0,0.0,1,6.4,49,4
82
+ 7062,2020-02-27 17:31:21,90.0,0.0,0.0,0.0,0.0,1,6.4,49,4
83
+ 7063,2020-02-27 17:36:20,90.0,0.0,0.0,0.0,0.0,1,6.4,49,4
84
+ 7064,2020-02-27 17:41:21,87.0,0.0,0.0,0.0,0.0,1,6.4,49,4
85
+ 7065,2020-02-27 17:46:20,82.0,0.0,0.0,0.0,0.0,1,6.4,49,4
86
+ 7066,2020-02-27 17:51:21,78.0,0.0,0.0,0.0,0.0,1,6.4,49,4
87
+ 7067,2020-02-27 17:56:21,78.0,0.0,0.0,0.0,0.0,1,6.4,49,4
88
+ 7068,2020-02-27 18:01:21,79.0,0.0,68.0,17.0,15.0,1,6.4,49,4
89
+ 7069,2020-02-27 18:06:21,77.0,0.0,68.0,17.0,15.0,1,6.4,49,4
90
+ 7070,2020-02-27 18:11:20,72.0,0.0,68.0,17.0,15.0,1,6.4,49,4
91
+ 7071,2020-02-27 18:16:21,64.0,0.0,68.0,17.0,15.0,1,6.4,49,4
92
+ 7072,2020-02-27 18:21:21,58.0,0.0,68.0,17.0,15.0,1,6.4,49,4
93
+ 7073,2020-02-27 18:26:21,60.0,0.0,68.0,17.0,15.0,1,6.4,49,4
94
+ 7074,2020-02-27 18:31:21,69.0,0.0,68.0,17.0,15.0,1,6.4,49,4
95
+ 7075,2020-02-27 18:36:20,80.0,0.0,68.0,17.0,15.0,1,6.4,49,4
96
+ 7076,2020-02-27 18:41:21,90.0,0.0,68.0,17.0,15.0,1,6.4,49,4
97
+ 7077,2020-02-27 18:46:21,98.0,0.0,68.0,17.0,15.0,1,6.4,49,4
98
+ 7078,2020-02-27 18:51:21,108.0,0.0,68.0,17.0,15.0,1,6.4,49,4
99
+ 7079,2020-02-27 18:56:20,113.0,0.0,68.0,17.0,15.0,1,6.4,49,4
100
+ 7080,2020-02-27 19:01:20,116.0,0.0,0.0,0.0,0.0,1,6.4,49,4
101
+ 7081,2020-02-27 19:06:19,114.0,0.0,0.0,0.0,0.0,1,6.4,49,4
102
+ 7082,2020-02-27 19:11:20,110.0,0.0,0.0,0.0,0.0,1,6.4,49,4
103
+ 7083,2020-02-27 19:16:20,106.0,0.0,0.0,0.0,0.0,1,6.4,49,4
104
+ 7084,2020-02-27 19:21:20,106.0,0.0,0.0,0.0,0.0,1,6.4,49,4
105
+ 7085,2020-02-27 19:26:20,108.0,0.0,0.0,0.0,0.0,1,6.4,49,4
106
+ 7086,2020-02-27 19:31:19,112.0,0.0,0.0,0.0,0.0,1,6.4,49,4
107
+ 7087,2020-02-27 19:36:20,112.0,0.0,0.0,0.0,0.0,1,6.4,49,4
108
+ 7088,2020-02-27 19:41:19,110.0,0.0,0.0,0.0,0.0,1,6.4,49,4
109
+ 7089,2020-02-27 19:46:19,109.0,0.0,0.0,0.0,0.0,1,6.4,49,4
110
+ 7090,2020-02-27 19:51:19,112.0,0.0,0.0,0.0,0.0,1,6.4,49,4
111
+ 7091,2020-02-27 19:56:19,116.0,0.0,0.0,0.0,0.0,1,6.4,49,4
112
+ 7092,2020-02-27 20:01:20,117.0,0.0,0.0,0.0,0.0,1,6.4,49,4
113
+ 7093,2020-02-27 20:06:19,117.0,0.0,0.0,0.0,0.0,1,6.4,49,4
114
+ 7094,2020-02-27 20:11:19,117.0,0.0,0.0,0.0,0.0,1,6.4,49,4
115
+ 7095,2020-02-27 20:16:20,112.0,0.0,0.0,0.0,0.0,1,6.4,49,4
116
+ 7096,2020-02-27 20:21:20,105.0,0.0,0.0,0.0,0.0,1,6.4,49,4
117
+ 7097,2020-02-27 20:26:20,102.0,0.0,0.0,0.0,0.0,1,6.4,49,4
118
+ 7098,2020-02-27 20:31:20,104.0,0.0,0.0,0.0,0.0,1,6.4,49,4
119
+ 7099,2020-02-27 20:36:19,109.0,0.0,0.0,0.0,0.0,1,6.4,49,4
120
+ 7100,2020-02-27 20:41:19,112.0,0.0,0.0,0.0,0.0,1,6.4,49,4
121
+ 7101,2020-02-27 20:46:19,113.0,0.0,0.0,0.0,0.0,1,6.4,49,4
122
+ 7102,2020-02-27 20:51:19,109.0,0.0,0.0,0.0,0.0,1,6.4,49,4
123
+ 7103,2020-02-27 20:56:19,104.0,0.0,0.0,0.0,0.0,1,6.4,49,4
124
+ 7104,2020-02-27 21:01:19,101.0,0.0,0.0,0.0,0.0,1,6.4,49,4
125
+ 7105,2020-02-27 21:06:19,103.0,0.0,0.0,0.0,0.0,1,6.4,49,4
126
+ 7106,2020-02-27 21:11:19,106.0,63.82,0.0,0.0,0.0,1,6.4,49,4
127
+ 7107,2020-02-27 21:16:19,116.0,64.94,0.0,0.0,0.0,1,6.4,49,4
128
+ 7108,2020-02-27 21:21:20,127.0,65.11,0.0,0.0,0.0,1,6.4,49,4
129
+ 7109,2020-02-27 21:26:19,136.0,64.84,0.0,0.0,0.0,1,6.4,49,4
130
+ 7110,2020-02-27 21:31:19,139.0,64.92,0.0,0.0,0.0,1,6.4,49,4
131
+ 7111,2020-02-27 21:36:20,138.0,64.77,0.0,0.0,0.0,1,6.4,49,4
132
+ 7112,2020-02-27 21:41:20,131.0,63.54,0.0,0.0,0.0,1,6.4,49,4
133
+ 7113,2020-02-27 21:46:19,122.0,65.98,0.0,0.0,0.0,1,6.4,49,4
134
+ 7114,2020-02-27 21:51:19,113.0,64.9,0.0,0.0,0.0,1,6.4,49,4
135
+ 7115,2020-02-27 21:56:20,112.0,65.09,0.0,0.0,0.0,1,6.4,49,4
136
+ 7116,2020-02-27 22:01:19,113.0,63.77,0.0,0.0,0.0,1,6.4,49,4
137
+ 7117,2020-02-27 22:06:20,114.0,63.53,0.0,0.0,0.0,1,6.4,49,4
138
+ 7118,2020-02-27 22:11:19,109.0,63.45,0.0,0.0,0.0,1,6.4,49,4
139
+ 7119,2020-02-27 22:16:20,106.0,63.0,0.0,0.0,0.0,1,6.4,49,4
140
+ 7120,2020-02-27 22:21:20,106.0,63.88,0.0,0.0,0.0,1,6.4,49,4
141
+ 7121,2020-02-27 22:26:19,110.0,64.83,0.0,0.0,0.0,1,6.4,49,4
142
+ 7122,2020-02-27 22:31:20,114.0,64.99,0.0,0.0,0.0,1,6.4,49,4
143
+ 7123,2020-02-27 22:36:20,116.0,65.11,0.0,0.0,0.0,1,6.4,49,4
144
+ 7124,2020-02-27 22:41:19,119.0,65.22,0.0,0.0,0.0,1,6.4,49,4
145
+ 7125,2020-02-27 22:46:20,121.0,65.23,0.0,0.0,0.0,1,6.4,49,4
146
+ 7126,2020-02-27 22:51:20,123.0,65.5,0.0,0.0,0.0,1,6.4,49,4
147
+ 7127,2020-02-27 22:56:19,124.0,65.54,0.0,0.0,0.0,1,6.4,49,4
148
+ 7128,2020-02-27 23:01:20,125.0,65.54,0.0,0.0,0.0,1,6.4,49,4
149
+ 7129,2020-02-27 23:06:19,126.0,65.52,0.0,0.0,0.0,1,6.4,49,4
150
+ 7130,2020-02-27 23:11:19,126.0,65.54,0.0,0.0,0.0,1,6.4,49,4
151
+ 7131,2020-02-27 23:16:20,125.0,65.58,0.0,0.0,0.0,1,6.4,49,4
152
+ 7132,2020-02-27 23:21:20,125.0,65.61,0.0,0.0,0.0,1,6.4,49,4
153
+ 7133,2020-02-27 23:26:20,125.0,64.13,0.0,0.0,0.0,1,6.4,49,4
154
+ 7134,2020-02-27 23:31:20,124.0,63.75,0.0,0.0,0.0,1,6.4,49,4
155
+ 7135,2020-02-27 23:36:20,121.0,63.75,0.0,0.0,0.0,1,6.4,49,4
156
+ 7136,2020-02-27 23:41:20,118.0,63.77,0.0,0.0,0.0,1,6.4,49,4
157
+ 7137,2020-02-27 23:46:21,117.0,63.69,0.0,0.0,0.0,1,6.4,49,4
158
+ 7138,2020-02-27 23:51:20,117.0,63.7,0.0,0.0,0.0,1,6.4,49,4
159
+ 7139,2020-02-27 23:56:21,118.0,63.68,0.0,0.0,0.0,1,6.4,49,4
160
+ 7140,2020-02-28 00:01:20,118.0,63.43,0.0,0.0,0.0,1,6.4,49,4
161
+ 7141,2020-02-28 00:06:20,115.0,63.43,0.0,0.0,0.0,1,6.4,49,4
162
+ 7142,2020-02-28 00:11:20,111.0,64.74,0.0,0.0,0.0,1,6.4,49,4
163
+ 7143,2020-02-28 00:16:20,112.0,64.05,0.0,0.0,0.0,1,6.4,49,4
164
+ 7144,2020-02-28 00:21:20,117.0,63.82,0.0,0.0,0.0,1,6.4,49,4
165
+ 7145,2020-02-28 00:26:20,124.0,63.7,0.0,0.0,0.0,1,6.4,49,4
166
+ 7146,2020-02-28 00:31:20,127.0,63.69,0.0,0.0,0.0,1,6.4,49,4
167
+ 7147,2020-02-28 00:36:20,125.0,63.61,0.0,0.0,0.0,1,6.4,49,4
168
+ 7148,2020-02-28 00:41:20,122.0,63.9,0.0,0.0,0.0,1,6.4,49,4
169
+ 7149,2020-02-28 00:46:20,118.0,63.84,0.0,0.0,0.0,1,6.4,49,4
170
+ 7150,2020-02-28 00:51:20,117.0,63.99,0.0,0.0,0.0,1,6.4,49,4
171
+ 7151,2020-02-28 00:56:20,119.0,64.12,0.0,0.0,0.0,1,6.4,49,4
172
+ 7152,2020-02-28 01:01:19,121.0,64.17,0.0,0.0,0.0,1,6.4,49,4
173
+ 7153,2020-02-28 01:06:20,123.0,64.16,0.0,0.0,0.0,1,6.4,49,4
174
+ 7154,2020-02-28 01:11:19,125.0,64.21,0.0,0.0,0.0,1,6.4,49,4
175
+ 7155,2020-02-28 01:16:20,127.0,64.93,0.0,0.0,0.0,1,6.4,49,4
176
+ 7156,2020-02-28 01:21:20,127.0,65.33,0.0,0.0,0.0,1,6.4,49,4
177
+ 7157,2020-02-28 01:26:20,126.0,63.93,0.0,0.0,0.0,1,6.4,49,4
178
+ 7158,2020-02-28 01:31:20,125.0,63.77,0.0,0.0,0.0,1,6.4,49,4
179
+ 7159,2020-02-28 01:36:19,124.0,63.72,0.0,0.0,0.0,1,6.4,49,4
180
+ 7160,2020-02-28 01:41:20,123.0,64.3,0.0,0.0,0.0,1,6.4,49,4
181
+ 7161,2020-02-28 01:46:20,122.0,64.38,0.0,0.0,0.0,1,6.4,49,4
182
+ 7162,2020-02-28 01:51:20,123.0,64.46,0.0,0.0,0.0,1,6.4,49,4
183
+ 7163,2020-02-28 01:56:20,124.0,64.24,0.0,0.0,0.0,1,6.4,49,4
184
+ 7164,2020-02-28 02:01:19,123.0,64.17,0.0,0.0,0.0,1,6.4,49,4
185
+ 7165,2020-02-28 02:06:20,114.0,64.82,0.0,0.0,0.0,1,6.4,49,4
186
+ 7166,2020-02-28 02:11:20,104.0,65.01,0.0,0.0,0.0,1,6.4,49,4
187
+ 7167,2020-02-28 02:16:19,95.0,65.09,0.0,0.0,0.0,1,6.4,49,4
188
+ 7168,2020-02-28 02:21:19,96.0,63.85,0.0,0.0,0.0,1,6.4,49,4
189
+ 7169,2020-02-28 02:26:19,98.0,63.84,0.0,0.0,0.0,1,6.4,49,4
190
+ 7170,2020-02-28 02:31:20,100.0,63.85,0.0,0.0,0.0,1,6.4,49,4
191
+ 7171,2020-02-28 02:36:19,102.0,63.86,0.0,0.0,0.0,1,6.4,49,4
192
+ 7172,2020-02-28 02:41:20,110.0,64.71,0.0,0.0,0.0,1,6.4,49,4
193
+ 7173,2020-02-28 02:46:20,118.0,63.11,0.0,0.0,0.0,1,6.4,49,4
194
+ 7174,2020-02-28 02:51:20,120.0,63.08,0.0,0.0,0.0,1,6.4,49,4
195
+ 7175,2020-02-28 02:56:20,110.0,64.6,0.0,0.0,0.0,1,6.4,49,4
196
+ 7176,2020-02-28 03:01:20,100.0,64.93,0.0,0.0,0.0,1,6.4,49,4
197
+ 7177,2020-02-28 03:06:19,96.0,65.05,0.0,0.0,0.0,1,6.4,49,4
198
+ 7178,2020-02-28 03:11:19,98.0,65.05,0.0,0.0,0.0,1,6.4,49,4
199
+ 7179,2020-02-28 03:16:19,100.0,65.05,0.0,0.0,0.0,1,6.4,49,4
200
+ 7180,2020-02-28 03:21:19,104.0,65.13,0.0,0.0,0.0,1,6.4,49,4
201
+ 7181,2020-02-28 03:26:19,112.0,64.58,0.0,0.0,0.0,1,6.4,49,4
data/processed/samples/sample_B.csv ADDED
@@ -0,0 +1,202 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ,Timestamp,Glucose,Accelerometer,Calories,Carbs,Sugar,Gender,HbA1c,Age,patient_id
2
+ 14551,2020-03-14 12:42:19,93.0,63.84,0.0,0.0,0.0,1,5.3,49,7
3
+ 14552,2020-03-14 12:47:18,93.0,63.99,0.0,0.0,0.0,1,5.3,49,7
4
+ 14553,2020-03-14 12:52:18,92.0,64.01,0.0,0.0,0.0,1,5.3,49,7
5
+ 14554,2020-03-14 12:57:18,93.0,63.04,0.0,0.0,0.0,1,5.3,49,7
6
+ 14555,2020-03-14 13:02:19,95.0,62.96,0.0,0.0,0.0,1,5.3,49,7
7
+ 14556,2020-03-14 13:07:19,98.0,65.77,0.0,0.0,0.0,1,5.3,49,7
8
+ 14557,2020-03-14 13:12:18,101.0,64.26,0.0,0.0,0.0,1,5.3,49,7
9
+ 14558,2020-03-14 13:17:18,101.0,64.15,0.0,0.0,0.0,1,5.3,49,7
10
+ 14559,2020-03-14 13:22:18,99.0,64.5,0.0,0.0,0.0,1,5.3,49,7
11
+ 14560,2020-03-14 13:27:18,98.0,64.75,0.0,0.0,0.0,1,5.3,49,7
12
+ 14561,2020-03-14 13:32:18,98.0,64.35,0.0,0.0,0.0,1,5.3,49,7
13
+ 14562,2020-03-14 13:37:18,98.0,64.41,0.0,0.0,0.0,1,5.3,49,7
14
+ 14563,2020-03-14 13:42:18,97.0,63.79,0.0,0.0,0.0,1,5.3,49,7
15
+ 14564,2020-03-14 13:47:19,97.0,64.35,0.0,0.0,0.0,1,5.3,49,7
16
+ 14565,2020-03-14 13:52:19,97.0,64.19,0.0,0.0,0.0,1,5.3,49,7
17
+ 14566,2020-03-14 13:57:18,99.0,64.05,0.0,0.0,0.0,1,5.3,49,7
18
+ 14567,2020-03-14 14:02:18,103.0,64.35,0.0,0.0,0.0,1,5.3,49,7
19
+ 14568,2020-03-14 14:07:18,111.0,63.8,0.0,0.0,0.0,1,5.3,49,7
20
+ 14569,2020-03-14 14:12:18,118.0,63.24,0.0,0.0,0.0,1,5.3,49,7
21
+ 14570,2020-03-14 14:17:18,124.0,64.21,0.0,0.0,0.0,1,5.3,49,7
22
+ 14571,2020-03-14 14:22:18,132.0,64.5,0.0,0.0,0.0,1,5.3,49,7
23
+ 14572,2020-03-14 14:27:19,142.0,64.5,0.0,0.0,0.0,1,5.3,49,7
24
+ 14573,2020-03-14 14:32:18,149.0,64.23,0.0,0.0,0.0,1,5.3,49,7
25
+ 14574,2020-03-14 14:37:18,154.0,63.72,0.0,0.0,0.0,1,5.3,49,7
26
+ 14575,2020-03-14 14:42:18,156.0,63.83,0.0,0.0,0.0,1,5.3,49,7
27
+ 14576,2020-03-14 14:47:18,158.0,64.29,0.0,0.0,0.0,1,5.3,49,7
28
+ 14577,2020-03-14 14:52:17,151.0,65.21,0.0,0.0,0.0,1,5.3,49,7
29
+ 14578,2020-03-14 14:57:18,140.0,64.47,0.0,0.0,0.0,1,5.3,49,7
30
+ 14579,2020-03-14 15:02:18,125.0,64.34,0.0,0.0,0.0,1,5.3,49,7
31
+ 14580,2020-03-14 15:07:18,112.0,64.38,0.0,0.0,0.0,1,5.3,49,7
32
+ 14581,2020-03-14 15:12:18,97.0,65.47,0.0,0.0,0.0,1,5.3,49,7
33
+ 14582,2020-03-14 15:17:18,87.0,71.63,0.0,0.0,0.0,1,5.3,49,7
34
+ 14583,2020-03-14 15:22:17,82.0,65.34,0.0,0.0,0.0,1,5.3,49,7
35
+ 14584,2020-03-14 15:27:18,84.0,64.35,0.0,0.0,0.0,1,5.3,49,7
36
+ 14585,2020-03-14 15:32:18,85.0,65.24,0.0,0.0,0.0,1,5.3,49,7
37
+ 14586,2020-03-14 15:37:18,86.0,64.48,0.0,0.0,0.0,1,5.3,49,7
38
+ 14587,2020-03-14 15:42:18,85.0,64.19,0.0,0.0,0.0,1,5.3,49,7
39
+ 14588,2020-03-14 15:47:19,84.0,63.62,0.0,0.0,0.0,1,5.3,49,7
40
+ 14589,2020-03-14 15:52:19,81.0,64.06,0.0,0.0,0.0,1,5.3,49,7
41
+ 14590,2020-03-14 15:57:19,84.0,64.3,0.0,0.0,0.0,1,5.3,49,7
42
+ 14591,2020-03-14 16:02:19,92.0,64.4,0.0,0.0,0.0,1,5.3,49,7
43
+ 14592,2020-03-14 16:07:19,100.0,64.15,0.0,0.0,0.0,1,5.3,49,7
44
+ 14593,2020-03-14 16:12:19,104.0,64.61,0.0,0.0,0.0,1,5.3,49,7
45
+ 14594,2020-03-14 16:17:19,103.0,64.67,0.0,0.0,0.0,1,5.3,49,7
46
+ 14595,2020-03-14 16:22:18,102.0,64.54,0.0,0.0,0.0,1,5.3,49,7
47
+ 14596,2020-03-14 16:27:19,101.0,64.05,0.0,0.0,0.0,1,5.3,49,7
48
+ 14597,2020-03-14 16:32:19,101.0,64.11,0.0,0.0,0.0,1,5.3,49,7
49
+ 14598,2020-03-14 16:37:18,101.0,63.77,0.0,0.0,0.0,1,5.3,49,7
50
+ 14599,2020-03-14 16:42:18,101.0,63.97,0.0,0.0,0.0,1,5.3,49,7
51
+ 14600,2020-03-14 16:47:18,101.0,63.69,0.0,0.0,0.0,1,5.3,49,7
52
+ 14601,2020-03-14 16:52:17,103.0,65.68,0.0,0.0,0.0,1,5.3,49,7
53
+ 14602,2020-03-14 16:57:18,104.0,64.46,0.0,0.0,0.0,1,5.3,49,7
54
+ 14603,2020-03-14 17:02:17,105.0,64.51,0.0,0.0,0.0,1,5.3,49,7
55
+ 14604,2020-03-14 17:07:18,103.0,64.75,0.0,0.0,0.0,1,5.3,49,7
56
+ 14605,2020-03-14 17:12:18,99.0,64.09,0.0,0.0,0.0,1,5.3,49,7
57
+ 14606,2020-03-14 17:17:18,94.0,65.01,0.0,0.0,0.0,1,5.3,49,7
58
+ 14607,2020-03-14 17:22:17,89.0,64.32,0.0,0.0,0.0,1,5.3,49,7
59
+ 14608,2020-03-14 17:27:18,87.0,64.7,0.0,0.0,0.0,1,5.3,49,7
60
+ 14609,2020-03-14 17:32:17,87.0,64.62,0.0,0.0,0.0,1,5.3,49,7
61
+ 14610,2020-03-14 17:37:18,90.0,65.89,0.0,0.0,0.0,1,5.3,49,7
62
+ 14611,2020-03-14 17:42:17,92.0,63.86,0.0,0.0,0.0,1,5.3,49,7
63
+ 14612,2020-03-14 17:47:18,93.0,64.99,0.0,0.0,0.0,1,5.3,49,7
64
+ 14613,2020-03-14 17:52:18,92.0,64.98,0.0,0.0,0.0,1,5.3,49,7
65
+ 14614,2020-03-14 17:57:19,91.0,63.61,0.0,0.0,0.0,1,5.3,49,7
66
+ 14615,2020-03-14 18:02:18,90.0,63.15,0.0,0.0,0.0,1,5.3,49,7
67
+ 14616,2020-03-14 18:07:18,89.0,63.18,0.0,0.0,0.0,1,5.3,49,7
68
+ 14617,2020-03-14 18:12:18,89.0,64.39,0.0,0.0,0.0,1,5.3,49,7
69
+ 14618,2020-03-14 18:17:18,91.0,64.58,0.0,0.0,0.0,1,5.3,49,7
70
+ 14619,2020-03-14 18:22:18,94.0,65.57,0.0,0.0,0.0,1,5.3,49,7
71
+ 14620,2020-03-14 18:27:18,97.0,64.8,0.0,0.0,0.0,1,5.3,49,7
72
+ 14621,2020-03-14 18:32:18,97.0,66.24,0.0,0.0,0.0,1,5.3,49,7
73
+ 14622,2020-03-14 18:37:18,96.0,68.92,0.0,0.0,0.0,1,5.3,49,7
74
+ 14623,2020-03-14 18:42:19,93.0,65.81,0.0,0.0,0.0,1,5.3,49,7
75
+ 14624,2020-03-14 18:47:17,89.0,66.57,0.0,0.0,0.0,1,5.3,49,7
76
+ 14625,2020-03-14 18:52:18,85.0,66.82,0.0,0.0,0.0,1,5.3,49,7
77
+ 14626,2020-03-14 18:57:18,83.0,65.24,0.0,0.0,0.0,1,5.3,49,7
78
+ 14627,2020-03-14 19:02:17,82.0,64.59,0.0,0.0,0.0,1,5.3,49,7
79
+ 14628,2020-03-14 19:07:18,83.0,64.64,0.0,0.0,0.0,1,5.3,49,7
80
+ 14629,2020-03-14 19:12:18,84.0,64.81,0.0,0.0,0.0,1,5.3,49,7
81
+ 14630,2020-03-14 19:17:18,86.0,64.73,0.0,0.0,0.0,1,5.3,49,7
82
+ 14631,2020-03-14 19:22:18,87.0,64.78,0.0,0.0,0.0,1,5.3,49,7
83
+ 14632,2020-03-14 19:27:18,90.0,63.92,0.0,0.0,0.0,1,5.3,49,7
84
+ 14633,2020-03-14 19:32:18,92.0,64.17,0.0,0.0,0.0,1,5.3,49,7
85
+ 14634,2020-03-14 19:37:18,94.0,65.4,0.0,0.0,0.0,1,5.3,49,7
86
+ 14635,2020-03-14 19:42:18,97.0,64.55,0.0,0.0,0.0,1,5.3,49,7
87
+ 14636,2020-03-14 19:47:18,100.0,63.93,0.0,0.0,0.0,1,5.3,49,7
88
+ 14637,2020-03-14 19:52:18,104.0,63.32,0.0,0.0,0.0,1,5.3,49,7
89
+ 14638,2020-03-14 19:57:18,107.0,63.47,0.0,0.0,0.0,1,5.3,49,7
90
+ 14639,2020-03-14 20:02:19,109.0,63.51,0.0,0.0,0.0,1,5.3,49,7
91
+ 14640,2020-03-14 20:07:18,110.0,63.3,0.0,0.0,0.0,1,5.3,49,7
92
+ 14641,2020-03-14 20:12:19,111.0,63.33,0.0,0.0,0.0,1,5.3,49,7
93
+ 14642,2020-03-14 20:17:18,111.0,63.91,0.0,0.0,0.0,1,5.3,49,7
94
+ 14643,2020-03-14 20:22:18,110.0,64.3,0.0,0.0,0.0,1,5.3,49,7
95
+ 14644,2020-03-14 20:27:18,108.0,65.51,0.0,0.0,0.0,1,5.3,49,7
96
+ 14645,2020-03-14 20:32:18,105.0,64.1,0.0,0.0,0.0,1,5.3,49,7
97
+ 14646,2020-03-14 20:37:19,104.0,63.08,0.0,0.0,0.0,1,5.3,49,7
98
+ 14647,2020-03-14 20:42:18,105.0,62.84,0.0,0.0,0.0,1,5.3,49,7
99
+ 14648,2020-03-14 20:47:18,107.0,62.79,0.0,0.0,0.0,1,5.3,49,7
100
+ 14649,2020-03-14 20:52:19,106.0,64.08,0.0,0.0,0.0,1,5.3,49,7
101
+ 14650,2020-03-14 20:57:18,106.0,64.35,0.0,0.0,0.0,1,5.3,49,7
102
+ 14651,2020-03-14 21:02:19,107.0,64.05,0.0,0.0,0.0,1,5.3,49,7
103
+ 14652,2020-03-14 21:07:19,110.0,63.94,0.0,0.0,0.0,1,5.3,49,7
104
+ 14653,2020-03-14 21:12:19,114.0,64.07,0.0,0.0,0.0,1,5.3,49,7
105
+ 14654,2020-03-14 21:17:19,118.0,63.63,0.0,0.0,0.0,1,5.3,49,7
106
+ 14655,2020-03-14 21:22:19,120.0,64.09,0.0,0.0,0.0,1,5.3,49,7
107
+ 14656,2020-03-14 21:27:19,122.0,64.07,0.0,0.0,0.0,1,5.3,49,7
108
+ 14657,2020-03-14 21:32:19,122.0,64.27,0.0,0.0,0.0,1,5.3,49,7
109
+ 14658,2020-03-14 21:37:18,122.0,63.86,0.0,0.0,0.0,1,5.3,49,7
110
+ 14659,2020-03-14 21:42:19,122.0,64.57,0.0,0.0,0.0,1,5.3,49,7
111
+ 14660,2020-03-14 21:47:18,124.0,64.34,0.0,0.0,0.0,1,5.3,49,7
112
+ 14661,2020-03-14 21:52:18,127.0,64.1,0.0,0.0,0.0,1,5.3,49,7
113
+ 14662,2020-03-14 21:57:19,124.0,64.13,0.0,0.0,0.0,1,5.3,49,7
114
+ 14663,2020-03-14 22:02:18,118.0,64.37,0.0,0.0,0.0,1,5.3,49,7
115
+ 14664,2020-03-14 22:07:18,115.0,64.76,0.0,0.0,0.0,1,5.3,49,7
116
+ 14665,2020-03-14 22:12:18,123.0,64.75,0.0,0.0,0.0,1,5.3,49,7
117
+ 14666,2020-03-14 22:17:18,133.0,64.92,0.0,0.0,0.0,1,5.3,49,7
118
+ 14667,2020-03-14 22:22:19,137.0,64.21,0.0,0.0,0.0,1,5.3,49,7
119
+ 14668,2020-03-14 22:27:18,133.0,63.92,0.0,0.0,0.0,1,5.3,49,7
120
+ 14669,2020-03-14 22:32:19,128.0,64.18,0.0,0.0,0.0,1,5.3,49,7
121
+ 14670,2020-03-14 22:37:19,126.0,66.12,0.0,0.0,0.0,1,5.3,49,7
122
+ 14671,2020-03-14 22:42:19,125.0,64.86,0.0,0.0,0.0,1,5.3,49,7
123
+ 14672,2020-03-14 22:47:18,124.0,64.8,0.0,0.0,0.0,1,5.3,49,7
124
+ 14673,2020-03-14 22:52:18,123.0,64.35,0.0,0.0,0.0,1,5.3,49,7
125
+ 14674,2020-03-14 22:57:17,120.0,64.41,0.0,0.0,0.0,1,5.3,49,7
126
+ 14675,2020-03-14 23:02:18,116.0,64.55,0.0,0.0,0.0,1,5.3,49,7
127
+ 14676,2020-03-14 23:07:16,113.0,64.22,0.0,0.0,0.0,1,5.3,49,7
128
+ 14677,2020-03-14 23:12:16,113.0,64.38,0.0,0.0,0.0,1,5.3,49,7
129
+ 14678,2020-03-14 23:17:17,115.0,64.46,0.0,0.0,0.0,1,5.3,49,7
130
+ 14679,2020-03-14 23:22:16,117.0,64.48,0.0,0.0,0.0,1,5.3,49,7
131
+ 14680,2020-03-14 23:27:17,116.0,65.07,0.0,0.0,0.0,1,5.3,49,7
132
+ 14681,2020-03-14 23:32:16,116.0,63.37,0.0,0.0,0.0,1,5.3,49,7
133
+ 14682,2020-03-14 23:37:16,120.0,63.3,0.0,0.0,0.0,1,5.3,49,7
134
+ 14683,2020-03-14 23:42:17,128.0,63.2,0.0,0.0,0.0,1,5.3,49,7
135
+ 14684,2020-03-14 23:47:16,130.0,63.11,0.0,0.0,0.0,1,5.3,49,7
136
+ 14685,2020-03-14 23:52:17,129.0,63.39,0.0,0.0,0.0,1,5.3,49,7
137
+ 14686,2020-03-14 23:57:17,127.0,63.44,0.0,0.0,0.0,1,5.3,49,7
138
+ 14687,2020-03-15 00:02:16,125.0,63.43,0.0,0.0,0.0,1,5.3,49,7
139
+ 14688,2020-03-15 00:07:17,119.0,63.39,0.0,0.0,0.0,1,5.3,49,7
140
+ 14689,2020-03-15 00:12:17,113.0,64.16,0.0,0.0,0.0,1,5.3,49,7
141
+ 14690,2020-03-15 00:17:16,113.0,63.21,0.0,0.0,0.0,1,5.3,49,7
142
+ 14691,2020-03-15 00:22:17,118.0,63.19,0.0,0.0,0.0,1,5.3,49,7
143
+ 14692,2020-03-15 00:27:16,125.0,63.37,0.0,0.0,0.0,1,5.3,49,7
144
+ 14693,2020-03-15 00:32:16,125.0,63.36,0.0,0.0,0.0,1,5.3,49,7
145
+ 14694,2020-03-15 00:37:17,121.0,63.36,0.0,0.0,0.0,1,5.3,49,7
146
+ 14695,2020-03-15 00:42:16,116.0,63.36,0.0,0.0,0.0,1,5.3,49,7
147
+ 14696,2020-03-15 00:47:17,112.0,63.37,0.0,0.0,0.0,1,5.3,49,7
148
+ 14697,2020-03-15 00:52:17,109.0,63.37,0.0,0.0,0.0,1,5.3,49,7
149
+ 14698,2020-03-15 00:57:17,107.0,63.42,0.0,0.0,0.0,1,5.3,49,7
150
+ 14699,2020-03-15 01:02:17,106.0,63.47,0.0,0.0,0.0,1,5.3,49,7
151
+ 14700,2020-03-15 01:07:17,105.0,63.5,0.0,0.0,0.0,1,5.3,49,7
152
+ 14701,2020-03-15 01:12:16,104.0,63.51,0.0,0.0,0.0,1,5.3,49,7
153
+ 14702,2020-03-15 01:17:17,104.0,63.51,0.0,0.0,0.0,1,5.3,49,7
154
+ 14703,2020-03-15 01:22:17,104.0,63.58,0.0,0.0,0.0,1,5.3,49,7
155
+ 14704,2020-03-15 01:27:17,103.0,64.94,0.0,0.0,0.0,1,5.3,49,7
156
+ 14705,2020-03-15 01:32:17,102.0,64.9,0.0,0.0,0.0,1,5.3,49,7
157
+ 14706,2020-03-15 01:37:18,103.0,64.17,0.0,0.0,0.0,1,5.3,49,7
158
+ 14707,2020-03-15 01:42:17,106.0,64.12,0.0,0.0,0.0,1,5.3,49,7
159
+ 14708,2020-03-15 01:47:18,109.0,64.06,0.0,0.0,0.0,1,5.3,49,7
160
+ 14709,2020-03-15 01:52:17,110.0,64.71,0.0,0.0,0.0,1,5.3,49,7
161
+ 14710,2020-03-15 01:57:17,106.0,64.95,0.0,0.0,0.0,1,5.3,49,7
162
+ 14711,2020-03-15 02:02:18,100.0,65.31,0.0,0.0,0.0,1,5.3,49,7
163
+ 14712,2020-03-15 02:07:17,98.0,65.35,0.0,0.0,0.0,1,5.3,49,7
164
+ 14713,2020-03-15 02:12:17,100.0,65.36,0.0,0.0,0.0,1,5.3,49,7
165
+ 14714,2020-03-15 02:17:17,101.0,65.28,0.0,0.0,0.0,1,5.3,49,7
166
+ 14715,2020-03-15 02:22:17,96.0,64.16,0.0,0.0,0.0,1,5.3,49,7
167
+ 14716,2020-03-15 02:27:18,95.0,64.0,0.0,0.0,0.0,1,5.3,49,7
168
+ 14717,2020-03-15 02:32:17,94.0,63.91,0.0,0.0,0.0,1,5.3,49,7
169
+ 14718,2020-03-15 02:37:17,98.0,63.41,0.0,0.0,0.0,1,5.3,49,7
170
+ 14719,2020-03-15 02:42:18,97.0,64.43,0.0,0.0,0.0,1,5.3,49,7
171
+ 14720,2020-03-15 02:47:17,101.0,65.16,0.0,0.0,0.0,1,5.3,49,7
172
+ 14721,2020-03-15 02:52:18,100.0,65.48,0.0,0.0,0.0,1,5.3,49,7
173
+ 14722,2020-03-15 02:57:18,98.0,63.79,0.0,0.0,0.0,1,5.3,49,7
174
+ 14723,2020-03-15 03:02:17,93.0,63.5,0.0,0.0,0.0,1,5.3,49,7
175
+ 14724,2020-03-15 03:07:17,90.0,64.73,0.0,0.0,0.0,1,5.3,49,7
176
+ 14725,2020-03-15 03:12:17,89.0,64.49,0.0,0.0,0.0,1,5.3,49,7
177
+ 14726,2020-03-15 03:17:17,93.0,64.39,0.0,0.0,0.0,1,5.3,49,7
178
+ 14727,2020-03-15 03:22:17,99.0,64.43,0.0,0.0,0.0,1,5.3,49,7
179
+ 14728,2020-03-15 03:27:17,99.0,64.47,0.0,0.0,0.0,1,5.3,49,7
180
+ 14729,2020-03-15 03:32:17,93.0,64.13,0.0,0.0,0.0,1,5.3,49,7
181
+ 14730,2020-03-15 03:37:17,88.0,63.56,0.0,0.0,0.0,1,5.3,49,7
182
+ 14731,2020-03-15 03:42:17,86.0,63.61,0.0,0.0,0.0,1,5.3,49,7
183
+ 14732,2020-03-15 03:47:17,88.0,63.67,0.0,0.0,0.0,1,5.3,49,7
184
+ 14733,2020-03-15 03:52:17,90.0,63.59,0.0,0.0,0.0,1,5.3,49,7
185
+ 14734,2020-03-15 03:57:17,92.0,64.59,0.0,0.0,0.0,1,5.3,49,7
186
+ 14735,2020-03-15 04:02:17,93.0,64.95,0.0,0.0,0.0,1,5.3,49,7
187
+ 14736,2020-03-15 04:07:17,94.0,65.07,0.0,0.0,0.0,1,5.3,49,7
188
+ 14737,2020-03-15 04:12:18,96.0,65.15,0.0,0.0,0.0,1,5.3,49,7
189
+ 14738,2020-03-15 04:17:17,97.0,65.22,0.0,0.0,0.0,1,5.3,49,7
190
+ 14739,2020-03-15 04:22:17,95.0,65.54,0.0,0.0,0.0,1,5.3,49,7
191
+ 14740,2020-03-15 04:27:17,93.0,64.09,0.0,0.0,0.0,1,5.3,49,7
192
+ 14741,2020-03-15 04:32:17,92.0,63.91,0.0,0.0,0.0,1,5.3,49,7
193
+ 14742,2020-03-15 04:37:17,94.0,63.81,0.0,0.0,0.0,1,5.3,49,7
194
+ 14743,2020-03-15 04:42:17,96.0,63.74,0.0,0.0,0.0,1,5.3,49,7
195
+ 14744,2020-03-15 04:47:17,97.0,65.07,0.0,0.0,0.0,1,5.3,49,7
196
+ 14745,2020-03-15 04:52:17,97.0,65.06,0.0,0.0,0.0,1,5.3,49,7
197
+ 14746,2020-03-15 04:57:17,96.0,65.11,0.0,0.0,0.0,1,5.3,49,7
198
+ 14747,2020-03-15 05:02:16,94.0,65.21,0.0,0.0,0.0,1,5.3,49,7
199
+ 14748,2020-03-15 05:07:17,92.0,65.26,0.0,0.0,0.0,1,5.3,49,7
200
+ 14749,2020-03-15 05:12:16,91.0,65.26,0.0,0.0,0.0,1,5.3,49,7
201
+ 14750,2020-03-15 05:17:16,91.0,65.34,0.0,0.0,0.0,1,5.3,49,7
202
+ 14751,2020-03-15 05:22:17,93.0,65.4,0.0,0.0,0.0,1,5.3,49,7
data/processed/test_dataset.csv ADDED
The diff for this file is too large to render. See raw diff
 
data/processed/train_dataset.csv ADDED
The diff for this file is too large to render. See raw diff
 
data/processed/validation_dataset.csv ADDED
The diff for this file is too large to render. See raw diff
 
glucose_app.py ADDED
@@ -0,0 +1,482 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import pandas as pd
3
+ import numpy as np
4
+ import matplotlib.pyplot as plt
5
+ import os
6
+ import joblib
7
+ from sklearn.metrics import root_mean_squared_error
8
+
9
+ from make_dataset import create_features
10
+ from naive_approach import get_column_specs, prepare_data, zeroshot_eval, simple_diagonal_averaging
11
+ from ml_approach import format_dataset
12
+
13
+ SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
14
+ CONTEXT_LENGTH = 52
15
+ PREDICTION_LENGTH = 6
16
+
17
+ # Custom theme settings
18
+ st.set_page_config(
19
+ page_title="Glucose Level Prediction App",
20
+ page_icon="📊",
21
+ layout="wide"
22
+ )
23
+
24
+ # Apply custom styling with CSS
25
+ st.markdown("""
26
+ <style>
27
+ /* Primary accent color */
28
+ .stButton button, .stSelectbox, .stMultiselect, .stSlider, .stNumberInput {
29
+ border-color: #58A618 !important;
30
+ }
31
+ .stProgress .st-bo {
32
+ background-color: #58A618 !important;
33
+ }
34
+ .st-bq {
35
+ color: #58A618 !important;
36
+ }
37
+ /* Header styling */
38
+ h1, h2, h3 {
39
+ color: #58A618 !important;
40
+ }
41
+ .stTabs [data-baseweb="tab-list"] button [data-testid="stMarkdownContainer"] p {
42
+ color: #58A618 !important;
43
+ }
44
+ /* Success messages */
45
+ .element-container .stAlert.st-ae.st-af {
46
+ border-color: #58A618 !important;
47
+ color: #58A618 !important;
48
+ }
49
+ /* Link color */
50
+ a {
51
+ color: #58A618 !important;
52
+ }
53
+ /* Button color */
54
+ .stButton>button {
55
+ background-color: #58A618 !important;
56
+ color: white !important;
57
+ }
58
+ /* Make background white */
59
+ .stApp {
60
+ background-color: white !important;
61
+ }
62
+ /* Tab styling */
63
+ .stTabs [data-baseweb="tab-list"] {
64
+ gap: 10px;
65
+ }
66
+ .stTabs [data-baseweb="tab"] {
67
+ background-color: #f0f0f0;
68
+ border-radius: 4px 4px 0 0;
69
+ padding: 10px 16px;
70
+ border: 1px solid #ccc;
71
+ }
72
+ .stTabs [data-baseweb="tab"][aria-selected="true"] {
73
+ background-color: white;
74
+ border-bottom: 3px solid #58A618;
75
+ }
76
+ </style>
77
+ """, unsafe_allow_html=True)
78
+
79
+ # Initialize session state variables if they don't exist
80
+ if 'combined_data' not in st.session_state:
81
+ st.session_state.combined_data = None
82
+ if 'files_uploaded' not in st.session_state:
83
+ st.session_state.files_uploaded = False
84
+ if 'data_processed' not in st.session_state:
85
+ st.session_state.data_processed = False
86
+
87
+ # Title and description
88
+ st.title("Glucose Level Prediction App")
89
+ st.markdown("""
90
+ This app allows you to upload glucose measurements, food logs, and accelerometer data
91
+ to analyze patterns and predict glucose levels.
92
+ """)
93
+
94
+ # Choose data source
95
+ st.subheader("Choose Data Source")
96
+ data_option = st.selectbox(
97
+ "Select how you'd like to provide input data:",
98
+ ("Upload files", "Sample A", "Sample B")
99
+ )
100
+
101
+ glucose_data = None
102
+ food_data = None
103
+ accel_data = None
104
+ combined_data = None
105
+ show_tabs = False
106
+
107
+ if data_option == "Upload files":
108
+ st.subheader("Upload Your Data Files")
109
+
110
+ glucose_file = st.file_uploader("Upload Glucose Levels CSV", type=["csv"], key="glucose")
111
+ food_file = st.file_uploader("Upload Food Logs CSV", type=["csv"], key="food")
112
+ accel_file = st.file_uploader("Upload Accelerometer Data CSV", type=["csv"], key="accel")
113
+
114
+ st.subheader("Patient Demographics")
115
+
116
+ # Gender selection
117
+ gender = st.selectbox("Select Patient Gender", options=["Female", "Male", "Other"], index=0)
118
+
119
+ # HbA1c input
120
+ hba1c = st.number_input("Enter HbA1c (%)", min_value=3.0, max_value=15.0, step=0.1)
121
+
122
+ all_files_uploaded = (glucose_file is not None) and (food_file is not None) and (accel_file is not None)
123
+
124
+ # Attempt to load files if they exist
125
+ if glucose_file is not None:
126
+ try:
127
+ glucose_data = pd.read_csv(glucose_file)
128
+ st.success("Glucose data loaded successfully!")
129
+ except Exception as e:
130
+ st.error(f"Error loading glucose data: {e}")
131
+ glucose_data = None
132
+
133
+ if food_file is not None:
134
+ try:
135
+ food_data = pd.read_csv(food_file)
136
+ st.success("Food logs loaded successfully!")
137
+ except Exception as e:
138
+ st.error(f"Error loading food logs: {e}")
139
+ food_data = None
140
+
141
+ if accel_file is not None:
142
+ try:
143
+ accel_data = pd.read_csv(accel_file)
144
+ st.success("Accelerometer data loaded successfully!")
145
+ except Exception as e:
146
+ st.error(f"Error loading accelerometer data: {e}")
147
+ accel_data = None
148
+
149
+ # Update the upload status in session state
150
+ st.session_state.files_uploaded = all_files_uploaded
151
+
152
+ # Show message if not all files are uploaded
153
+ if not all_files_uploaded:
154
+ st.warning("Please upload all three data files to enable data processing.")
155
+
156
+ col1, col2, col3 = st.columns([1,1,1])
157
+
158
+ with col2:
159
+ # Add a button to process the data - disabled until all files are uploaded
160
+ if st.button('Process Data', key='process_data_button', disabled=not all_files_uploaded):
161
+ if all_files_uploaded:
162
+ try:
163
+ # Call create_features with appropriate parameters
164
+ combined_data = create_features(
165
+ bg_df=glucose_data,
166
+ food_df=food_data,
167
+ acc_df=accel_data,
168
+ gender=gender,
169
+ hba1c=hba1c,
170
+ add_patient_id=True
171
+ )
172
+ st.session_state.combined_data = combined_data
173
+ st.session_state.data_processed = True
174
+ st.success("Data processed successfully!")
175
+ show_tabs = True
176
+ except Exception as e:
177
+ st.error(f"Error processing data: {e}")
178
+ st.session_state.data_processed = False
179
+ show_tabs = False
180
+
181
+ st.subheader("Expected File Formats:")
182
+
183
+ col1, col2, col3 = st.columns(3)
184
+
185
+ with col1:
186
+ st.markdown("""
187
+ **Glucose Levels CSV:**
188
+ - Timestamp column
189
+ - Glucose measurement values
190
+ """)
191
+
192
+ with col2:
193
+ st.markdown("""
194
+ **Food Logs CSV:**
195
+ - Timestamp column
196
+ - Carbohydrates
197
+ - Sugar
198
+ - Calories
199
+ """)
200
+
201
+ with col3:
202
+ st.markdown("""
203
+ **Accelerometer Data CSV:**
204
+ - Timestamp column
205
+ - Activity measurements
206
+ """)
207
+
208
+ # Check if data was previously processed
209
+ if st.session_state.data_processed and st.session_state.combined_data is not None:
210
+ combined_data = st.session_state.combined_data
211
+ show_tabs = True
212
+
213
+ elif data_option == "Sample A":
214
+ combined_data_path = os.path.join(SCRIPT_DIR, '..', 'data', 'processed', 'samples', 'sample_A.csv')
215
+ combined_data = pd.read_csv(combined_data_path)
216
+ st.session_state.combined_data = combined_data
217
+ st.session_state.data_processed = True
218
+ st.success("Sample A loaded successfully!")
219
+ show_tabs = True
220
+
221
+ elif data_option == "Sample B":
222
+ combined_data_path = os.path.join(SCRIPT_DIR, '..', 'data', 'processed', 'samples', 'sample_B.csv')
223
+ combined_data = pd.read_csv(combined_data_path)
224
+ st.session_state.combined_data = combined_data
225
+ st.session_state.data_processed = True
226
+ st.success("Sample B loaded successfully!")
227
+ show_tabs = True
228
+
229
+ # Add some spacing
230
+ st.write("")
231
+ st.write("")
232
+
233
+ # Only show tabs if sample data is loaded or user data has been successfully processed
234
+ if show_tabs:
235
+ # Create tabs for data exploration
236
+ tab1, tab2, tab3 = st.tabs(["Naive Model", "Machine Learning Model", "Deep Learning Model"])
237
+
238
+ with tab1:
239
+ st.subheader("Naive Model")
240
+
241
+ if st.button('Make prediction', key='naive_button'):
242
+ if combined_data is not None:
243
+
244
+ # Add your naive model prediction code here
245
+ try:
246
+ # Call naive model prediction functions
247
+ column_specs = get_column_specs()
248
+ prepared_data = prepare_data(combined_data, column_specs["timestamp_column"])
249
+
250
+ train_file = os.path.join(SCRIPT_DIR, '..', 'data', 'processed', 'train_dataset.csv')
251
+ train_data = pd.read_csv(train_file)
252
+ train_data = prepare_data(train_data, column_specs["timestamp_column"])
253
+ predictions = zeroshot_eval(
254
+ train_df=train_data,
255
+ test_df=prepared_data,
256
+ batch_size=8
257
+ )
258
+
259
+ # Get all step columns
260
+ step_columns = [col for col in predictions["predictions_df"].columns if col.startswith("Glucose_step_")]
261
+
262
+ # Apply simple diagonal averaging by patient
263
+ final_results = simple_diagonal_averaging(
264
+ predictions["predictions_df"],
265
+ prepared_data,
266
+ CONTEXT_LENGTH,
267
+ step_columns
268
+ )
269
+
270
+ # Visualize predictions vs actual values
271
+ fig, ax = plt.subplots(figsize=(10, 6))
272
+
273
+ # Filter out zero predictions
274
+ non_zero_mask = final_results['averaged_prediction'] != 0
275
+ filtered_results = final_results[non_zero_mask]
276
+
277
+ # Plot predictions (only non-zero values) in green
278
+ ax.plot(filtered_results['Timestamp'], filtered_results['averaged_prediction'],
279
+ label='Predicted', alpha=0.7, color='#58A618')
280
+
281
+ # Plot actual values (all data) in blue
282
+ ax.plot(final_results['Timestamp'], final_results['Glucose'],
283
+ label='Ground truth', alpha=0.7, color='#1f77b4')
284
+
285
+ ax.set_title('Glucose Predictions vs Actual Values')
286
+ ax.set_xlabel('Time')
287
+ ax.set_ylabel('Glucose Level')
288
+ ax.legend()
289
+
290
+ st.pyplot(fig)
291
+
292
+ y_true = final_results['Glucose'][CONTEXT_LENGTH:].reset_index(drop=True)
293
+ y_pred = final_results['averaged_prediction'][CONTEXT_LENGTH:].reset_index(drop=True)
294
+
295
+ # Filter out zero predictions
296
+ non_zero_mask = y_pred != 0
297
+ y_true_filtered = y_true[non_zero_mask]
298
+ y_pred_filtered = y_pred[non_zero_mask]
299
+
300
+ if len(y_pred_filtered) > 0:
301
+ rmse = np.sqrt(root_mean_squared_error(y_true_filtered, y_pred_filtered))
302
+ st.subheader("Performance Metrics")
303
+ st.metric("AVERAGE RMSE", f"{rmse:.4f}")
304
+ else:
305
+ st.subheader("Performance Metrics")
306
+ st.metric("AVERAGE RMSE", "N/A")
307
+
308
+ except Exception as e:
309
+ st.error(f"Error in naive model prediction: {e}")
310
+ else:
311
+ st.error("Data not available. Please try again.")
312
+
313
+ with tab2:
314
+ st.subheader("Machine Learning Model")
315
+
316
+ if st.button('Make prediction', key='ml_button'):
317
+ if combined_data is not None:
318
+ X_test, y_test = format_dataset(combined_data, CONTEXT_LENGTH, PREDICTION_LENGTH)
319
+
320
+ model_output_path = os.path.join(SCRIPT_DIR, '..', 'models', 'xgb_model.pkl')
321
+ xgb_model = joblib.load(model_output_path)
322
+
323
+ y_test_pred = xgb_model.predict(X_test)
324
+
325
+ final_results = simple_diagonal_averaging(
326
+ pd.DataFrame(y_test_pred),
327
+ combined_data,
328
+ CONTEXT_LENGTH,
329
+ pd.DataFrame(y_test_pred).columns
330
+ )
331
+
332
+ # Visualize predictions vs actual values
333
+ fig, ax = plt.subplots(figsize=(10, 6))
334
+
335
+ # Plot all actual values in blue
336
+ ax.plot(final_results['Timestamp'], final_results['Glucose'],
337
+ label='Ground truth', alpha=0.7, color='#1f77b4')
338
+
339
+ # Replace zeros with NaN (which matplotlib will skip when plotting)
340
+ plot_predictions = final_results['averaged_prediction'].copy()
341
+ plot_predictions = plot_predictions.replace(0, float('nan'))
342
+
343
+ # Plot predictions with NaN instead of zeros in green
344
+ ax.plot(final_results['Timestamp'], plot_predictions,
345
+ label='Predicted', alpha=0.7, color='#58A618')
346
+
347
+ ax.set_title('Glucose Predictions vs Actual Values')
348
+ ax.set_xlabel('Time')
349
+ ax.set_ylabel('Glucose Level')
350
+ ax.legend()
351
+
352
+ st.pyplot(fig)
353
+
354
+ # Calculate and display metrics for single patient
355
+ y_true = final_results['Glucose'][CONTEXT_LENGTH:].reset_index(drop=True)
356
+ y_pred = final_results['averaged_prediction'][CONTEXT_LENGTH:].reset_index(drop=True)
357
+
358
+ # Filter out zero predictions
359
+ non_zero_mask = y_pred != 0
360
+ y_true_filtered = y_true[non_zero_mask]
361
+ y_pred_filtered = y_pred[non_zero_mask]
362
+
363
+ if len(y_pred_filtered) > 0:
364
+ rmse = np.sqrt(root_mean_squared_error(y_true_filtered, y_pred_filtered))
365
+ st.subheader("Performance Metrics")
366
+ st.metric("AVERAGE RMSE", f"{rmse:.4f}")
367
+ else:
368
+ st.subheader("Performance Metrics")
369
+ st.metric("AVERAGE RMSE", "N/A")
370
+
371
+ else:
372
+ st.error("Data not available. Please try again.")
373
+
374
+ with tab3:
375
+ st.subheader("Deep Learning Model")
376
+
377
+ if st.button('Make prediction', key='dl_button'):
378
+ if combined_data is not None:
379
+ column_specs = get_column_specs()
380
+ prepared_data = prepare_data(combined_data, column_specs["timestamp_column"])
381
+
382
+ train_file = os.path.join(SCRIPT_DIR, '..', 'data', 'processed', 'train_dataset.csv')
383
+ train_data = pd.read_csv(train_file)
384
+ train_data = prepare_data(train_data, column_specs["timestamp_column"])
385
+ predictions = zeroshot_eval(
386
+ train_df=train_data,
387
+ test_df=prepared_data,
388
+ batch_size=8,
389
+ model_path="iaravagni/ttm-finetuned-model"
390
+ )
391
+
392
+ # Get all step columns
393
+ step_columns = [col for col in predictions["predictions_df"].columns if col.startswith("Glucose_step_")]
394
+
395
+ # Apply simple diagonal averaging by patient
396
+ final_results = simple_diagonal_averaging(
397
+ predictions["predictions_df"],
398
+ prepared_data,
399
+ CONTEXT_LENGTH,
400
+ step_columns
401
+ )
402
+
403
+ # Visualize predictions vs actual values
404
+ fig, ax = plt.subplots(figsize=(10, 6))
405
+
406
+ # Filter out zero predictions
407
+ non_zero_mask = final_results['averaged_prediction'] != 0
408
+ filtered_results = final_results[non_zero_mask]
409
+
410
+ # Plot predictions (only non-zero values) in green
411
+ ax.plot(filtered_results['Timestamp'], filtered_results['averaged_prediction'],
412
+ label='Predicted', alpha=0.7, color='#58A618')
413
+
414
+ # Plot actual values (all data) in blue
415
+ ax.plot(final_results['Timestamp'], final_results['Glucose'],
416
+ label='Ground truth', alpha=0.7, color='#1f77b4')
417
+
418
+ ax.set_title('Glucose Predictions vs Actual Values')
419
+ ax.set_xlabel('Time')
420
+ ax.set_ylabel('Glucose Level')
421
+ ax.legend()
422
+
423
+ st.pyplot(fig)
424
+
425
+ # Calculate and display metrics for single patient
426
+ y_true = final_results['Glucose'][CONTEXT_LENGTH:].reset_index(drop=True)
427
+ y_pred = final_results['averaged_prediction'][CONTEXT_LENGTH:].reset_index(drop=True)
428
+
429
+ # Filter out zero predictions
430
+ non_zero_mask = y_pred != 0
431
+ y_true_filtered = y_true[non_zero_mask]
432
+ y_pred_filtered = y_pred[non_zero_mask]
433
+
434
+ if len(y_pred_filtered) > 0:
435
+ rmse = np.sqrt(root_mean_squared_error(y_true_filtered, y_pred_filtered))
436
+ st.subheader("Performance Metrics")
437
+ st.metric("AVERAGE RMSE", f"{rmse:.4f}")
438
+ else:
439
+ st.subheader("Performance Metrics")
440
+ st.metric("AVERAGE RMSE", "N/A")
441
+ else:
442
+ st.error("Data not available. Please try again.")
443
+ else:
444
+ st.info("Upload and process data or select a sample dataset to view prediction models.")
445
+
446
+ # Add some spacing
447
+ st.write("")
448
+ st.write("")
449
+
450
+ # App information and disclaimer
451
+ st.markdown("""
452
+ ---
453
+ ### About this App
454
+
455
+ This application is designed to help analyze and predict glucose levels based on glucose measurements,
456
+ food logs, and physical activity data. The app merges these datasets based on timestamps to identify
457
+ patterns and make predictions.
458
+
459
+ Please note that this is a demonstration tool and should not be used for medical decisions without
460
+ consultation with healthcare professionals.
461
+
462
+ """)
463
+
464
+ # Add a footer with the custom color
465
+ st.markdown("""
466
+ <style>
467
+ .footer {
468
+ position: fixed;
469
+ left: 0;
470
+ bottom: 0;
471
+ width: 100%;
472
+ background-color: white;
473
+ color: #58A618;
474
+ text-align: center;
475
+ padding: 10px;
476
+ border-top: 2px solid #58A618;
477
+ }
478
+ </style>
479
+ <div class="footer">
480
+ <p>Glucose Prediction Application © 2025</p>
481
+ </div>
482
+ """, unsafe_allow_html=True)
models/xgb_model.pkl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:2720a062fb6c9e5983e40ea463eafe5c40997d0b9dd13fe7fdb1e7b4406d882f
3
+ size 2572912
requirements.txt ADDED
Binary file (7.08 kB). View file
 
scripts/dl_approach.py ADDED
@@ -0,0 +1,354 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import tempfile
3
+ import pandas as pd
4
+ import warnings
5
+ import torch
6
+ import numpy as np
7
+ from transformers import Trainer, TrainingArguments, set_seed
8
+
9
+ from tsfm_public import TimeSeriesPreprocessor
10
+ from tsfm_public.models.tinytimemixer import TinyTimeMixerForPrediction
11
+ from tsfm_public.toolkit.get_model import get_model
12
+ from tsfm_public.toolkit.dataset import ForecastDFDataset
13
+
14
+ # Constants
15
+ SEED = 42
16
+ TTM_MODEL_PATH = "iaravagni/ttm-finetuned-model"
17
+ CONTEXT_LENGTH = 52 # 4.33 hrs
18
+ PREDICTION_LENGTH = 6 # 30 mins
19
+ OUT_DIR = "ttm_finetuned_models/"
20
+
21
+ def setup_environment():
22
+ """
23
+ Set up the environment for model training and evaluation.
24
+ Creates necessary directories and sets random seed for reproducibility.
25
+ """
26
+ set_seed(SEED)
27
+ os.makedirs(OUT_DIR, exist_ok=True)
28
+ os.makedirs(os.path.join(OUT_DIR, 'results'), exist_ok=True)
29
+
30
+ def load_dataset(file_path):
31
+ """
32
+ Load the dataset from the specified file path.
33
+
34
+ Args:
35
+ file_path (str): Path to the dataset CSV file
36
+
37
+ Returns:
38
+ pd.DataFrame: The loaded dataset
39
+ """
40
+ return pd.read_csv(file_path)
41
+
42
+ def prepare_data(data, timestamp_column):
43
+ """
44
+ Prepare the dataset by converting timestamp column to datetime format.
45
+
46
+ Args:
47
+ data (pd.DataFrame): The dataset
48
+ timestamp_column (str): Name of the timestamp column
49
+
50
+ Returns:
51
+ pd.DataFrame: The processed dataset
52
+ """
53
+ data[timestamp_column] = pd.to_datetime(data[timestamp_column])
54
+ return data
55
+
56
+ def get_column_specs():
57
+ """
58
+ Define and return column specifications for the dataset.
59
+
60
+ Returns:
61
+ dict: Column specifications including timestamp, ID, target, and control columns
62
+ """
63
+ timestamp_column = "Timestamp"
64
+ id_columns = ["patient_id"]
65
+ target_columns = ["Glucose"]
66
+ control_columns = ["Accelerometer", "Calories", "Carbs", "Sugar", "Gender", "HbA1c", "Age"]
67
+
68
+ return {
69
+ "timestamp_column": timestamp_column,
70
+ "id_columns": id_columns,
71
+ "target_columns": target_columns,
72
+ "control_columns": control_columns,
73
+ }
74
+
75
+ def create_test_only_dataset(ts_preprocessor, test_dataset, train_dataset=None, stride=1, enable_padding=True, **dataset_kwargs):
76
+ """
77
+ Creates a preprocessed pytorch dataset for testing only.
78
+
79
+ Args:
80
+ ts_preprocessor: TimeSeriesPreprocessor instance
81
+ test_dataset: Pandas dataframe for testing
82
+ train_dataset: Optional pandas dataframe for training the scaler
83
+ stride: Stride used for creating the dataset
84
+ enable_padding: If True, datasets are created with padding
85
+ dataset_kwargs: Additional keyword arguments to pass to ForecastDFDataset
86
+
87
+ Returns:
88
+ ForecastDFDataset for testing
89
+ """
90
+ # Standardize the test dataframe
91
+ test_data = ts_preprocessor._standardize_dataframe(test_dataset)
92
+
93
+ # Train the preprocessor on the training data if provided, otherwise use test data
94
+ if train_dataset is not None:
95
+ train_data = ts_preprocessor._standardize_dataframe(train_dataset)
96
+ ts_preprocessor.train(train_data)
97
+ else:
98
+ ts_preprocessor.train(test_data)
99
+
100
+ # Preprocess the test data
101
+ test_data_prep = test_data.copy() # Skip preprocessing to avoid scaling errors
102
+
103
+ # Specify columns
104
+ column_specifiers = {
105
+ "id_columns": ts_preprocessor.id_columns,
106
+ "timestamp_column": ts_preprocessor.timestamp_column,
107
+ "target_columns": ts_preprocessor.target_columns,
108
+ "observable_columns": ts_preprocessor.observable_columns,
109
+ "control_columns": ts_preprocessor.control_columns,
110
+ "conditional_columns": ts_preprocessor.conditional_columns,
111
+ "categorical_columns": ts_preprocessor.categorical_columns,
112
+ "static_categorical_columns": ts_preprocessor.static_categorical_columns,
113
+ }
114
+
115
+ params = column_specifiers
116
+ params["context_length"] = ts_preprocessor.context_length
117
+ params["prediction_length"] = ts_preprocessor.prediction_length
118
+ params["stride"] = stride
119
+ params["enable_padding"] = enable_padding
120
+
121
+ # Add frequency token - this is critical for TinyTimeMixer
122
+ params["frequency_token"] = ts_preprocessor.get_frequency_token(ts_preprocessor.freq)
123
+
124
+ # Update with any additional kwargs
125
+ params.update(**dataset_kwargs)
126
+
127
+ # Create the ForecastDFDataset
128
+ test_dataset = ForecastDFDataset(test_data_prep, **params)
129
+
130
+ if len(test_dataset) == 0:
131
+ raise RuntimeError("The generated test dataset is of zero length.")
132
+
133
+ return test_dataset
134
+
135
+
136
+
137
+ def zeroshot_eval(train_df, test_df, batch_size, context_length=CONTEXT_LENGTH, forecast_length=PREDICTION_LENGTH, model_path=TTM_MODEL_PATH):
138
+ """
139
+ Performs zero-shot evaluation of time series forecasting on test data.
140
+
141
+ Args:
142
+ train_df: Training dataframe
143
+ test_df: Testing dataframe
144
+ batch_size: Batch size for evaluation
145
+ context_length: Number of time steps to use as context
146
+ forecast_length: Number of time steps to predict
147
+
148
+ Returns:
149
+ dict: Dictionary containing predictions dataframe and metrics
150
+ """
151
+ column_specifiers = get_column_specs()
152
+
153
+ # Create preprocessor with scaling disabled
154
+ tsp = TimeSeriesPreprocessor(
155
+ timestamp_column=column_specifiers["timestamp_column"],
156
+ id_columns=column_specifiers["id_columns"],
157
+ target_columns=column_specifiers["target_columns"],
158
+ control_columns=column_specifiers["control_columns"],
159
+ context_length=context_length,
160
+ prediction_length=forecast_length,
161
+ scaling=False,
162
+ encode_categorical=False,
163
+ force_return="zeropad",
164
+ )
165
+
166
+ # Load model
167
+ zeroshot_model = get_model(
168
+ model_path,
169
+ context_length=context_length,
170
+ prediction_length=forecast_length,
171
+ freq_prefix_tuning=False,
172
+ freq=None,
173
+ prefer_l1_loss=False,
174
+ prefer_longer_context=True,
175
+ )
176
+
177
+ # Create test dataset
178
+ dset_test = create_test_only_dataset(ts_preprocessor=tsp, test_dataset=test_df, train_dataset=train_df)
179
+
180
+ # Setup trainer
181
+ temp_dir = tempfile.mkdtemp()
182
+ zeroshot_trainer = Trainer(
183
+ model=zeroshot_model,
184
+ args=TrainingArguments(
185
+ output_dir=temp_dir,
186
+ per_device_eval_batch_size=batch_size,
187
+ seed=SEED,
188
+ report_to="none",
189
+ ),
190
+ )
191
+
192
+ # Get predictions
193
+ predictions_dict = zeroshot_trainer.predict(dset_test)
194
+
195
+ # Process predictions
196
+ processed_predictions = process_predictions(predictions_dict, tsp, column_specifiers["target_columns"])
197
+
198
+ # Get evaluation metrics
199
+ metrics = zeroshot_trainer.evaluate(dset_test)
200
+
201
+ return {
202
+ "predictions_df": processed_predictions,
203
+ "metrics": metrics
204
+ }
205
+
206
+ def process_predictions(predictions_dict, tsp, target_columns):
207
+ """
208
+ Process the predictions from the Trainer into a usable DataFrame.
209
+
210
+ Args:
211
+ predictions_dict: Predictions from the Trainer
212
+ tsp: TimeSeriesPreprocessor instance
213
+ target_columns: List of target column names
214
+
215
+ Returns:
216
+ pd.DataFrame: DataFrame containing processed predictions
217
+ """
218
+ # Extract predictions
219
+ if hasattr(predictions_dict, 'predictions'):
220
+ raw_predictions = predictions_dict.predictions
221
+ else:
222
+ raw_predictions = predictions_dict.get('predictions', predictions_dict)
223
+
224
+ # Handle tuple predictions (mean and uncertainty)
225
+ if isinstance(raw_predictions, tuple):
226
+ predictions = raw_predictions[0]
227
+ else:
228
+ predictions = raw_predictions
229
+
230
+ # Get shape information
231
+ n_samples, n_timesteps, n_features = predictions.shape
232
+
233
+ # Create DataFrame for processed predictions
234
+ processed_df = pd.DataFrame()
235
+
236
+ # Extract predictions for each target and timestep
237
+ for i, col in enumerate(target_columns):
238
+ if i < n_features:
239
+ for t in range(n_timesteps):
240
+ processed_df[f"{col}_step_{t+1}"] = predictions[:, t, i]
241
+
242
+ return processed_df
243
+
244
+ def simple_diagonal_averaging(predictions_df, test_data, context_length, step_columns):
245
+ """
246
+ Improved approach to diagonally averaging predictions by patient.
247
+ Properly handles the last rows of predictions to ensure all available
248
+ predicted values are used.
249
+
250
+ Args:
251
+ predictions_df (pd.DataFrame): DataFrame with step-wise predictions
252
+ test_data (pd.DataFrame): Original test data with patient IDs
253
+ context_length (int): Number of context steps used in the model
254
+ step_columns (list): List of step column names
255
+
256
+ Returns:
257
+ pd.DataFrame: DataFrame with averaged predictions
258
+ """
259
+ # Create a new dataframe for the final results
260
+ final_df = test_data.copy()
261
+
262
+ # Initialize prediction column with zeros/NaN
263
+ final_df['averaged_prediction'] = 0
264
+
265
+ # Process each patient separately
266
+ for patient_id in test_data['patient_id'].unique():
267
+ # Get indices for this patient
268
+ patient_mask = final_df['patient_id'] == patient_id
269
+ patient_indices = final_df[patient_mask].index
270
+
271
+ # Skip the first context_length rows for this patient
272
+ start_idx = min(context_length, len(patient_indices))
273
+
274
+ # For each row after the context window
275
+ for i in range(start_idx, len(patient_indices)):
276
+ row_idx = patient_indices[i]
277
+ pred_row_idx = i - context_length
278
+
279
+ # Skip if the prediction row index is negative
280
+ if pred_row_idx < 0:
281
+ continue
282
+
283
+ # Get the corresponding prediction row
284
+ if pred_row_idx < len(predictions_df):
285
+ # Average the predictions for all steps
286
+ avg_prediction = predictions_df.iloc[pred_row_idx][step_columns].mean()
287
+ final_df.loc[row_idx, 'averaged_prediction'] = avg_prediction
288
+ else:
289
+ # Handle the case where we've run out of prediction rows
290
+ # Calculate how many steps beyond the last prediction row we are
291
+ excess_steps = pred_row_idx - len(predictions_df) + 1
292
+
293
+ # Make sure we don't go beyond the available steps
294
+ if excess_steps < len(step_columns):
295
+ # Use the last row of predictions but only the appropriate steps
296
+ relevant_steps = step_columns[excess_steps:]
297
+ if relevant_steps:
298
+ avg_prediction = predictions_df.iloc[-1][relevant_steps].mean()
299
+ final_df.loc[row_idx, 'averaged_prediction'] = avg_prediction
300
+
301
+ return final_df
302
+
303
+
304
+ def main():
305
+ """
306
+ Main function to execute the time series forecasting workflow.
307
+ """
308
+ # Setup
309
+ # setup_environment()
310
+
311
+ # Get dataset path
312
+ script_dir = os.path.dirname(os.path.abspath(__file__))
313
+ test_file = os.path.join(script_dir, '..', 'data', 'processed', 'test_dataset.csv')
314
+ train_file = os.path.join(script_dir, '..', 'data', 'processed', 'train_dataset.csv')
315
+
316
+ # Load and prepare data
317
+ test_data = load_dataset(test_file)
318
+ train_data = load_dataset(train_file)
319
+ column_specs = get_column_specs()
320
+ test_data = prepare_data(test_data, column_specs["timestamp_column"])
321
+ train_data = prepare_data(train_data, column_specs["timestamp_column"])
322
+
323
+ # Run zero-shot evaluation
324
+ results = zeroshot_eval(
325
+ train_df=train_data,
326
+ test_df=test_data,
327
+ batch_size=8,
328
+ context_length=CONTEXT_LENGTH,
329
+ forecast_length=PREDICTION_LENGTH
330
+ )
331
+
332
+ # Get all step columns
333
+ step_columns = [col for col in results["predictions_df"].columns if col.startswith("Glucose_step_")]
334
+
335
+ # Apply simple diagonal averaging by patient
336
+ final_results = simple_diagonal_averaging(
337
+ results["predictions_df"],
338
+ test_data,
339
+ CONTEXT_LENGTH,
340
+ step_columns
341
+ )
342
+
343
+ # Save raw predictions to CSV
344
+ raw_predictions_path = os.path.join(script_dir, '..', 'data', 'outputs', 'dl_predictions_raw.csv')
345
+ results["predictions_df"].to_csv(raw_predictions_path, index=False)
346
+
347
+ # Save final results to CSV
348
+ final_results_path = os.path.join(script_dir, '..', 'data', 'outputs', 'dl_predictions.csv')
349
+ final_results.to_csv(final_results_path, index=False)
350
+
351
+ return
352
+
353
+ if __name__ == "__main__":
354
+ main()
scripts/finetuning.py ADDED
@@ -0,0 +1,239 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import tempfile
3
+ import pandas as pd
4
+ import warnings
5
+ import torch
6
+ import numpy as np
7
+ import math
8
+ from transformers import Trainer, TrainingArguments, set_seed, EarlyStoppingCallback, Trainer
9
+ from torch.optim import AdamW
10
+ from torch.optim.lr_scheduler import OneCycleLR
11
+
12
+ from tsfm_public import TimeSeriesPreprocessor
13
+ from tsfm_public.models.tinytimemixer import TinyTimeMixerForPrediction
14
+ from tsfm_public.toolkit.get_model import get_model
15
+ from tsfm_public.toolkit.dataset import ForecastDFDataset
16
+ from tsfm_public.toolkit.callbacks import TrackingCallback
17
+
18
+ from huggingface_hub import login, create_repo, upload_folder
19
+
20
+
21
+ SEED = 42
22
+ TTM_MODEL_PATH = "ibm-granite/granite-timeseries-ttm-r2"
23
+ CONTEXT_LENGTH = 52 # 4.33 hrs
24
+ PREDICTION_LENGTH = 6 # 30 mins
25
+
26
+ def get_column_specs():
27
+ """
28
+ Define and return column specifications for the dataset.
29
+
30
+ Returns:
31
+ dict: Column specifications including timestamp, ID, target, and control columns
32
+ """
33
+ timestamp_column = "Timestamp"
34
+ id_columns = ["patient_id"]
35
+ target_columns = ["Glucose"]
36
+ control_columns = ["Accelerometer", "Calories", "Carbs", "Sugar", "Gender", "HbA1c", "Age"]
37
+
38
+ return {
39
+ "timestamp_column": timestamp_column,
40
+ "id_columns": id_columns,
41
+ "target_columns": target_columns,
42
+ "control_columns": control_columns,
43
+ }
44
+
45
+ def create_dataset(ts_preprocessor, dataframe, train_df, column_specs, context_length, prediction_length, stride=1):
46
+ """
47
+ Create a ForecastDFDataset using the proper parameters based on the example.
48
+
49
+ Args:
50
+ dataframe: Pandas dataframe with time series data
51
+ column_specs: Dictionary with column specifications
52
+ context_length: Context window length
53
+ prediction_length: Prediction horizon length
54
+ stride: Stride for sliding window
55
+
56
+ Returns:
57
+ ForecastDFDataset instance
58
+ """
59
+
60
+ # Convert timestamp to datetime if needed
61
+ if not pd.api.types.is_datetime64_any_dtype(dataframe[column_specs["timestamp_column"]]):
62
+ dataframe[column_specs["timestamp_column"]] = pd.to_datetime(dataframe[column_specs["timestamp_column"]])
63
+
64
+ # Standardize the test dataframe
65
+ dataframe = ts_preprocessor._standardize_dataframe(dataframe)
66
+
67
+ ts_preprocessor.train(train_df)
68
+
69
+
70
+ # Preprocess the test data
71
+ dataframe_prep = dataframe.copy() # Skip preprocessing to avoid scaling errors
72
+
73
+ # Specify columns
74
+ column_specifiers = {
75
+ "id_columns": ts_preprocessor.id_columns,
76
+ "timestamp_column": ts_preprocessor.timestamp_column,
77
+ "target_columns": ts_preprocessor.target_columns,
78
+ "observable_columns": ts_preprocessor.observable_columns,
79
+ "control_columns": ts_preprocessor.control_columns,
80
+ "conditional_columns": ts_preprocessor.conditional_columns,
81
+ "categorical_columns": ts_preprocessor.categorical_columns,
82
+ "static_categorical_columns": ts_preprocessor.static_categorical_columns,
83
+ }
84
+
85
+ params = column_specifiers
86
+ params["context_length"] = ts_preprocessor.context_length
87
+ params["prediction_length"] = ts_preprocessor.prediction_length
88
+ params["stride"] = stride
89
+ params["enable_padding"] = True
90
+
91
+ # Add frequency token - this is critical for TinyTimeMixer
92
+ params["frequency_token"] = ts_preprocessor.get_frequency_token(ts_preprocessor.freq)
93
+
94
+ # Create the ForecastDFDataset
95
+ dataset = ForecastDFDataset(dataframe_prep, **params)
96
+
97
+
98
+ return dataset
99
+
100
+
101
+ def finetune(train_df, valid_df, learning_rate,num_epochs,batch_size, OUT_DIR, context_length=CONTEXT_LENGTH, forecast_length=PREDICTION_LENGTH):
102
+ finetune_forecast_args = TrainingArguments(
103
+ output_dir=os.path.join(OUT_DIR, "output"),
104
+ overwrite_output_dir=True,
105
+ learning_rate=learning_rate,
106
+ num_train_epochs=num_epochs,
107
+ do_eval=True,
108
+ eval_strategy="epoch",
109
+ per_device_train_batch_size=batch_size,
110
+ per_device_eval_batch_size=batch_size,
111
+ dataloader_num_workers=8,
112
+ save_strategy="epoch",
113
+ logging_strategy="epoch",
114
+ save_total_limit=1,
115
+ logging_dir=os.path.join(OUT_DIR, "logs"), # Specify a logging directory
116
+ load_best_model_at_end=True, # Load the best model when training ends
117
+ metric_for_best_model="eval_loss", # Metric to monitor for early stopping
118
+ greater_is_better=False, # For loss
119
+ )
120
+
121
+ # Create the early stopping callback
122
+ early_stopping_callback = EarlyStoppingCallback(
123
+ early_stopping_patience=2, # Number of epochs with no improvement after which to stop
124
+ early_stopping_threshold=0.001, # Minimum improvement required to consider as improvement
125
+ )
126
+ tracking_callback = TrackingCallback()
127
+
128
+ column_specifiers = get_column_specs()
129
+
130
+ tsp = TimeSeriesPreprocessor(
131
+ timestamp_column=column_specifiers["timestamp_column"],
132
+ id_columns=column_specifiers["id_columns"],
133
+ target_columns=column_specifiers["target_columns"],
134
+ control_columns=column_specifiers["control_columns"],
135
+ context_length=context_length,
136
+ prediction_length=forecast_length,
137
+ scaling=False,
138
+ encode_categorical=False,
139
+ force_return="zeropad",
140
+ )
141
+
142
+ # Create datasets
143
+ print("Creating training dataset...")
144
+ train_dataset = create_dataset(
145
+ tsp,
146
+ dataframe=train_df,
147
+ train_df=train_df,
148
+ column_specs=column_specifiers,
149
+ context_length=context_length,
150
+ prediction_length=forecast_length
151
+ )
152
+
153
+ print("Creating validation dataset...")
154
+ valid_dataset = create_dataset(
155
+ tsp,
156
+ dataframe=valid_df,
157
+ train_df=train_df,
158
+ column_specs=column_specifiers,
159
+ context_length=context_length,
160
+ prediction_length=forecast_length
161
+ )
162
+
163
+ finetune_forecast_model = get_model(
164
+ TTM_MODEL_PATH,
165
+ context_length=context_length,
166
+ prediction_length=forecast_length,
167
+ num_input_channels=tsp.num_input_channels,
168
+ decoder_mode="mix_channel", # ch_mix: set to mix_channel for mixing channels in history
169
+ prediction_channel_indices=tsp.prediction_channel_indices,
170
+ )
171
+
172
+ # Optimizer and scheduler
173
+ optimizer = AdamW(finetune_forecast_model.parameters(), lr=learning_rate)
174
+ scheduler = OneCycleLR(
175
+ optimizer,
176
+ learning_rate,
177
+ epochs=num_epochs,
178
+ steps_per_epoch=math.ceil(len(train_dataset) / (batch_size)),
179
+ )
180
+
181
+ finetune_forecast_trainer = Trainer(
182
+ model=finetune_forecast_model,
183
+ args=finetune_forecast_args,
184
+ train_dataset=train_dataset,
185
+ eval_dataset=valid_dataset,
186
+ callbacks=[early_stopping_callback, tracking_callback],
187
+ optimizers=(optimizer, scheduler),
188
+ )
189
+
190
+ # Fine tune
191
+ finetune_forecast_trainer.train()
192
+
193
+ return finetune_forecast_trainer.model
194
+
195
+ def upload_to_hf(model):
196
+ model.save_pretrained("model/finetuned_ttm_model")
197
+
198
+ username = 'iaravagni'
199
+ repo_name = "ttm-finetuned-model" # customize this
200
+
201
+ upload_folder(
202
+ repo_id=f"{username}/{repo_name}",
203
+ folder_path="./model", # path to your trained model dir
204
+ path_in_repo="", # root of the repo
205
+ )
206
+
207
+ return
208
+
209
+
210
+ def main():
211
+
212
+ # Get dataset path
213
+ script_dir = os.path.dirname(os.path.abspath(__file__))
214
+ validation_file = os.path.join(script_dir, '..', 'data', 'processed', 'validation_dataset.csv')
215
+ train_file = os.path.join(script_dir, '..', 'data', 'processed', 'train_dataset.csv')
216
+
217
+ # Load and prepare data
218
+ validation_data = pd.read_csv(validation_file)
219
+ train_data = pd.read_csv(train_file)
220
+
221
+ # Load and prepare data
222
+ validation_data = pd.read_csv("/content/validation_dataset.csv")
223
+ train_data = pd.read_csv("/content/train_dataset.csv")
224
+
225
+
226
+ learning_rate = 0.002
227
+ num_epochs = 13
228
+ batch_size = 64
229
+
230
+ OUT_DIR = "model"
231
+
232
+ ttm_finetuned_model = finetune(train_data, validation_data, learning_rate,num_epochs,batch_size, OUT_DIR)
233
+
234
+ return
235
+
236
+
237
+ # Main entry point
238
+ if __name__ == '__main__':
239
+ main()
scripts/make_dataset.py ADDED
@@ -0,0 +1,296 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import pandas as pd
2
+ import numpy as np
3
+ import json
4
+ import os
5
+
6
+ # Get the directory where the script is located
7
+ SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
8
+
9
+ def clean_blood_glucose_df(bg_df):
10
+ """
11
+ Filter a blood glucose dataframe to keep only rows where Event Type is 'EGV' (Estimated Glucose Value).
12
+
13
+ Args:
14
+ bg_df (pd.DataFrame): DataFrame containing blood glucose data
15
+
16
+ Returns:
17
+ pd.DataFrame: Filtered DataFrame with only EGV events
18
+ """
19
+ # Filter the rows where Event Type is 'EGV'
20
+ bg_df = bg_df[bg_df['Event Type'] == 'EGV']
21
+ return bg_df
22
+
23
+ def get_accelerometer_values(acc_df, time_series_df, window_size='1h'):
24
+ """
25
+ Calculate accelerometer magnitude values and add them to the time series dataframe.
26
+ Uses a weighted average where more recent values have higher weight.
27
+
28
+ Args:
29
+ acc_df (pd.DataFrame): DataFrame containing accelerometer data
30
+ time_series_df (pd.DataFrame): DataFrame to add accelerometer values to
31
+ window_size (str, optional): Time window to consider for calculations. Defaults to '1h'.
32
+
33
+ Returns:
34
+ pd.DataFrame: Original DataFrame with added accelerometer magnitude values
35
+ """
36
+ # Calculate magnitude for accelerometer data
37
+ acc_df['Magnitude'] = np.sqrt(acc_df[' acc_x']**2 + acc_df[' acc_y']**2 + acc_df[' acc_z']**2).round(2)
38
+ acc_df['Magnitude'] = pd.to_numeric(acc_df['Magnitude'], errors='coerce')
39
+
40
+ weighted_avgs = []
41
+ window_timedelta = pd.Timedelta(window_size)
42
+
43
+ for ts in time_series_df['Timestamp']:
44
+ # Select only accelerometer data within the time window
45
+ relevant_acc = acc_df[(acc_df['Timestamp'] >= ts - window_timedelta) & (acc_df['Timestamp'] <= ts)]
46
+
47
+ if not relevant_acc.empty:
48
+ # Compute weighted average: more recent values have higher weight
49
+ time_diffs = (ts - relevant_acc['Timestamp']).dt.total_seconds()
50
+ weights = 1 / (time_diffs + 1) # Avoid division by zero
51
+ weighted_avg = ((relevant_acc['Magnitude'] * weights).sum() / weights.sum()).round(2)
52
+ else:
53
+ weighted_avg = 0
54
+
55
+ weighted_avgs.append(weighted_avg)
56
+
57
+
58
+ time_series_df['Accelerometer'] = weighted_avgs
59
+
60
+ return time_series_df
61
+
62
+ def get_food_values(food_df, time_series_df, window_size='1h'):
63
+ """
64
+ Calculate food metrics (calories, carbs, sugar) for each timestamp in the time series dataframe.
65
+
66
+ Args:
67
+ food_df (pd.DataFrame): DataFrame containing food log data
68
+ time_series_df (pd.DataFrame): DataFrame to add food metrics to
69
+ window_size (str, optional): Time window to consider for calculations. Defaults to '1h'.
70
+
71
+ Returns:
72
+ pd.DataFrame: Original DataFrame with added food metrics columns
73
+ """
74
+ # Initialize arrays for food metrics
75
+ calories = []
76
+ carbs = []
77
+ sugar = []
78
+
79
+ window_timedelta = pd.Timedelta(window_size)
80
+
81
+ for ts in time_series_df['Timestamp']:
82
+ # Select only food data within the time window
83
+ food_in_window = food_df[(food_df['Timestamp'] >= ts - window_timedelta) &
84
+ (food_df['Timestamp'] <= ts)]
85
+
86
+ # Calculate cumulative values
87
+ if not food_in_window.empty:
88
+ calories.append(food_in_window['calorie'].sum())
89
+ carbs.append(food_in_window['total_carb'].sum())
90
+ sugar.append(food_in_window['sugar'].sum())
91
+ else:
92
+ calories.append(0.0)
93
+ carbs.append(0.0)
94
+ sugar.append(0.0)
95
+
96
+ # Add to time series dataframe
97
+ time_series_df['Calories'] = calories
98
+ time_series_df['Carbs'] = carbs
99
+ time_series_df['Sugar'] = sugar
100
+
101
+ return time_series_df
102
+
103
+ def calculate_age(born, as_of_date=pd.Timestamp('2019-01-01')):
104
+ """
105
+ Calculate age based on date of birth.
106
+
107
+ Args:
108
+ born (str or timestamp): Date of birth
109
+ as_of_date (pd.Timestamp, optional): Reference date for age calculation.
110
+ Defaults to January 1, 2019.
111
+
112
+ Returns:
113
+ int: Age in years
114
+ """
115
+ born = pd.Timestamp(born)
116
+
117
+ # Calculate age
118
+ age = as_of_date.year - born.year
119
+
120
+ return age
121
+
122
+ def split_train_test_patients(df, seed=42):
123
+ """
124
+ Split dataset into training, validation, and test sets based on patient IDs.
125
+
126
+ Args:
127
+ df (pd.DataFrame): Combined dataset with patient_id column
128
+ seed (int, optional): Random seed for reproducibility. Defaults to 42.
129
+
130
+ Returns:
131
+ tuple: (training DataFrame, validation DataFrame, test DataFrame)
132
+ """
133
+ np.random.seed(seed)
134
+ training_patients = np.random.choice(np.arange(1, 16), size=13, replace=False)
135
+
136
+ test_patients = np.setdiff1d(np.arange(1, 16), training_patients)
137
+
138
+ validation_patients = np.random.choice(training_patients, size=2, replace=False)
139
+
140
+ training_patients = np.setdiff1d(training_patients, validation_patients)
141
+
142
+ df_train = df[df['patient_id'].isin(training_patients)]
143
+ df_val = df[df['patient_id'].isin(validation_patients)]
144
+ df_test = df[df['patient_id'].isin(test_patients)]
145
+
146
+ return df_train, df_val, df_test
147
+
148
+ def create_features(bg_df, acc_df, food_df, gender, hba1c, add_patient_id = False):
149
+ """
150
+ Process raw data and create a time series DataFrame with features from multiple sources.
151
+
152
+ Args:
153
+ bg_df (pd.DataFrame): Blood glucose data
154
+ acc_df (pd.DataFrame): Accelerometer data
155
+ food_df (pd.DataFrame): Food log data
156
+ gender (str): Patient gender
157
+ hba1c (float): Patient HbA1c value
158
+
159
+ Returns:
160
+ pd.DataFrame: Time series DataFrame with combined features
161
+ """
162
+ # Clean and convert 'Timestamp' columns to datetime format
163
+ bg_df['Timestamp'] = pd.to_datetime(bg_df['Timestamp (YYYY-MM-DDThh:mm:ss)'], errors='coerce')
164
+ acc_df['Timestamp'] = pd.to_datetime(acc_df['datetime'], errors='coerce')
165
+ food_df['Timestamp'] = pd.to_datetime(food_df['time_begin'], errors='coerce')
166
+
167
+ # Sort values by date time
168
+ bg_df = bg_df.sort_values(by='Timestamp')
169
+ acc_df = acc_df.sort_values(by='Timestamp')
170
+
171
+ # Reset index and then find the row where 'Event Type' is 'DateOfBirth'
172
+ reset_df = bg_df.reset_index(drop=True)
173
+ patient_dob = reset_df[reset_df['Event Type'] == 'DateOfBirth']['Patient Info'].values[0]
174
+
175
+ patient_age = calculate_age(patient_dob)
176
+
177
+ bg_df = clean_blood_glucose_df(bg_df)
178
+
179
+ # Initialize a new DataFrame for the time series
180
+ time_series_df = pd.DataFrame(index=bg_df.index) # Use the glucose timestamps as the index
181
+
182
+ time_series_df[['Timestamp','Glucose']] = bg_df[['Timestamp','Glucose Value (mg/dL)']]
183
+
184
+ # time_series_df = get_acc_hr_values(acc_df, hr_df, time_series_df)
185
+ time_series_df = get_accelerometer_values(acc_df, time_series_df)
186
+ time_series_df = get_food_values(food_df, time_series_df)
187
+
188
+ time_series_df['Gender'] = np.where(gender == 'FEMALE', 1, 0)
189
+ time_series_df['HbA1c'] = hba1c
190
+ time_series_df['Age'] = patient_age
191
+
192
+ if add_patient_id:
193
+ time_series_df['patient_id'] = 0
194
+
195
+ return time_series_df
196
+
197
+ def create_dataframes():
198
+ """
199
+ Create individual patient dataframes by processing raw data files.
200
+
201
+ Reads data for patients 1-16, processes it, and saves individual CSV files
202
+ for each patient in the processed/dataset_by_patient directory.
203
+
204
+ Returns:
205
+ None
206
+ """
207
+ data_path = os.path.join(SCRIPT_DIR, "data", "raw", "big_ideas_dataset")
208
+
209
+ for i in range(1, 17):
210
+ patient = f"{i:03d}"
211
+
212
+ print("Patient"+str(i))
213
+
214
+ # Load files
215
+ bg_df = pd.read_csv(os.path.join(data_path, patient, f"Dexcom_{patient}.csv"))
216
+ acc_df = pd.read_csv(os.path.join(data_path, patient, f"ACC_{patient}.csv"))
217
+ food_df = pd.read_csv(os.path.join(data_path, patient, f"Food_Log_{patient}.csv"))
218
+ demographic_data = pd.read_csv(os.path.join(data_path, "Demographics.csv"))
219
+
220
+ patient_demographics = demographic_data[demographic_data['ID'] == i]
221
+
222
+ gender = patient_demographics['Gender'].values[0] # Assuming you want the first value
223
+
224
+ hba1c = patient_demographics['HbA1c'].values[0]
225
+
226
+ time_series_df = create_features(bg_df, acc_df, food_df, gender, hba1c)
227
+
228
+ output_dir = os.path.join(SCRIPT_DIR, "data", "processed", "dataset_by_patient")
229
+ # Create directory if it doesn't exist
230
+ os.makedirs(output_dir, exist_ok=True)
231
+
232
+ output_path = os.path.join(output_dir, f"patient_{patient}.csv")
233
+ time_series_df.to_csv(output_path)
234
+
235
+ return
236
+
237
+ def combine_dataframes():
238
+ """
239
+ Combine individual patient dataframes into a single dataset and create
240
+ train/validation/test splits.
241
+
242
+ Reads the individual patient CSV files, combines them, and creates
243
+ split datasets based on patient IDs for train, validation, and test sets.
244
+
245
+ Returns:
246
+ None
247
+ """
248
+ data_path = os.path.join(SCRIPT_DIR, "data", "processed", "dataset_by_patient")
249
+ combined_df = pd.DataFrame()
250
+
251
+ for i in range(1, 17):
252
+ patient = f"{i:03d}"
253
+
254
+ print(f"Patient {i}")
255
+
256
+ current_df = pd.read_csv(os.path.join(data_path, f"patient_{patient}.csv"))
257
+
258
+ current_df["patient_id"] = i
259
+
260
+ combined_df = pd.concat([combined_df, current_df], ignore_index=True)
261
+
262
+ combined_df = combined_df.iloc[:, 1:]
263
+
264
+ df_train, df_val, df_test = split_train_test_patients(combined_df)
265
+
266
+ output_path = os.path.join(SCRIPT_DIR, "data", "processed")
267
+ # Create directory if it doesn't exist
268
+ os.makedirs(output_path, exist_ok=True)
269
+
270
+ combined_df.to_csv(os.path.join(output_path, "combined_dataset.csv"))
271
+ df_train.to_csv(os.path.join(output_path, "train_dataset.csv"))
272
+ df_val.to_csv(os.path.join(output_path, "validation_dataset.csv"))
273
+ df_test.to_csv(os.path.join(output_path, "test_dataset.csv"))
274
+
275
+ return
276
+
277
+ def main():
278
+ """
279
+ Main function to run the dataset creation pipeline.
280
+
281
+ Executes the full data processing workflow:
282
+ 1. Creates individual patient dataframes
283
+ 2. Combines them into a single dataset
284
+ 3. Creates train/validation/test splits
285
+
286
+ Returns:
287
+ None
288
+ """
289
+ print("Running make_dataset script...")
290
+ create_dataframes()
291
+ combine_dataframes()
292
+
293
+ return
294
+
295
+ if __name__ == '__main__':
296
+ main()
scripts/metrics.py ADDED
@@ -0,0 +1,74 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import pandas as pd
2
+ import os
3
+ from sklearn.metrics import root_mean_squared_error
4
+ import numpy as np
5
+
6
+ SEED = 42
7
+ TTM_MODEL_PATH = "iaravagni/ttm-finetune-model"
8
+ CONTEXT_LENGTH = 52 # 4.33 hrs
9
+ PREDICTION_LENGTH = 6 # 30 mins
10
+
11
+ def main():
12
+ """
13
+ Main function to execute the metrics for the three approaches.
14
+ """
15
+ # Get dataset path
16
+ script_dir = os.path.dirname(os.path.abspath(__file__))
17
+ naive_pred_path = os.path.join(script_dir, '..', 'data', 'outputs', 'naive_predictions.csv')
18
+ ml_pred_path = os.path.join(script_dir, '..', 'data', 'outputs', 'ml_predictions.csv')
19
+ dl_pred_path = os.path.join(script_dir, '..', 'data', 'outputs', 'dl_predictions.csv')
20
+
21
+ # Load and prepare data
22
+ naive_pred_df = pd.read_csv(naive_pred_path)
23
+ ml_pred_df = pd.read_csv(ml_pred_path)
24
+ dl_pred_df = pd.read_csv(dl_pred_path)
25
+
26
+ y_true = naive_pred_df[['Glucose', 'patient_id']]
27
+ naive_pred = naive_pred_df['averaged_prediction']
28
+ ml_pred = ml_pred_df['averaged_prediction']
29
+ dl_pred = dl_pred_df['averaged_prediction']
30
+
31
+ rmse_list = []
32
+
33
+ for patient in y_true['patient_id'].unique():
34
+ patient_mask = y_true['patient_id'] == patient
35
+
36
+ y_true_patient = y_true[patient_mask].reset_index(drop=True)
37
+ naive_pred_patient = naive_pred[patient_mask].reset_index(drop=True)
38
+ ml_pred_patient = ml_pred[patient_mask].reset_index(drop=True)
39
+ dl_pred_patient = dl_pred[patient_mask].reset_index(drop=True)
40
+
41
+ y_true_aux = y_true_patient['Glucose'][CONTEXT_LENGTH:].reset_index(drop=True)
42
+ naive_pred_aux = naive_pred_patient[CONTEXT_LENGTH:].reset_index(drop=True)
43
+ ml_pred_aux = ml_pred_patient[CONTEXT_LENGTH:].reset_index(drop=True)
44
+ dl_pred_aux = dl_pred_patient[CONTEXT_LENGTH:].reset_index(drop=True)
45
+
46
+ rmse_naive = np.sqrt(root_mean_squared_error(y_true_aux, naive_pred_aux))
47
+ rmse_ml = np.sqrt(root_mean_squared_error(y_true_aux, ml_pred_aux))
48
+ rmse_dl = np.sqrt(root_mean_squared_error(y_true_aux, dl_pred_aux))
49
+
50
+ rmse_list.append([rmse_naive, rmse_ml, rmse_dl])
51
+
52
+ model_names = ['Naive', 'ML', 'DL']
53
+ rmse_array = np.array(rmse_list)
54
+
55
+ print("Average RMSEs:")
56
+ for name, avg in zip(model_names, rmse_array.mean(axis=0)):
57
+ print(f" {name}: {avg:.4f}")
58
+
59
+ print("\nHighest and Lowest RMSE per model:")
60
+ for i, model in enumerate(model_names):
61
+ max_val = np.max(rmse_array[:, i])
62
+ min_val = np.min(rmse_array[:, i])
63
+ max_patient = y_true['patient_id'].unique()[np.argmax(rmse_array[:, i])]
64
+ min_patient = y_true['patient_id'].unique()[np.argmin(rmse_array[:, i])]
65
+
66
+ print(f" {model}:")
67
+ print(f" Highest RMSE = {max_val:.4f} (Patient {max_patient})")
68
+ print(f" Lowest RMSE = {min_val:.4f} (Patient {min_patient})")
69
+
70
+ return
71
+
72
+ if __name__ == "__main__":
73
+ main()
74
+
scripts/ml_approach.py ADDED
@@ -0,0 +1,183 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import pandas as pd
3
+ import numpy as np
4
+ import xgboost as xgb
5
+ from sklearn.metrics import root_mean_squared_error
6
+ import joblib
7
+
8
+
9
+ # Constants for window sizes
10
+ X_WINDOW_SIZE = 52
11
+ Y_WINDOW_SIZE = 30 // 5
12
+
13
+ def format_dataset(df, X_window_size, y_window_size):
14
+ """
15
+ Format the dataset by applying sliding window technique to the dataframe and prepare the input features and labels.
16
+ """
17
+ X_list, y_list = [], []
18
+
19
+ for patient in df['patient_id'].unique():
20
+ df_i = df[df['patient_id'] == patient]
21
+
22
+ # Sliding window view to generate features and labels
23
+ X_i = np.lib.stride_tricks.sliding_window_view(df_i.values, (X_window_size, df_i.shape[1]))
24
+ y_i = np.lib.stride_tricks.sliding_window_view(df_i.values, (y_window_size, df_i.shape[1]))
25
+
26
+ X_i = X_i[:-y_window_size]
27
+ y_i = y_i[X_window_size:]
28
+
29
+ X_list.append(X_i)
30
+ y_list.append(y_i)
31
+
32
+ X_matrix = np.concatenate(X_list, axis=0)
33
+ y_matrix = np.concatenate(y_list, axis=0)
34
+
35
+ # Reshaping and cleaning up the matrices
36
+ X_matrix = X_matrix.reshape(X_matrix.shape[0], X_matrix.shape[2], X_matrix.shape[3])
37
+ y_matrix = y_matrix.reshape(y_matrix.shape[0], y_matrix.shape[2], y_matrix.shape[3])
38
+
39
+ # Drop unnecessary columns (timestamp and patient_id)
40
+ X_matrix = X_matrix[:,:,2:-1]
41
+ y_matrix = y_matrix[:,:,2]
42
+
43
+ # Flatten X and y for XGBoost input
44
+ X_flat = X_matrix.reshape(X_matrix.shape[0], -1)
45
+ y_flat = y_matrix.reshape(y_matrix.shape[0], -1)
46
+
47
+ return X_flat, y_flat
48
+
49
+ # Function to train the model
50
+ def train_model(model, X_train, y_train):
51
+ """
52
+ Train the given model with the training data.
53
+ """
54
+ model.fit(X_train, y_train)
55
+ return model
56
+
57
+ # Function to evaluate the model
58
+ def evaluate_model(y_true, y_pred, dataset_name="Validation"):
59
+ """
60
+ Evaluate model performance on the provided dataset.
61
+ """
62
+ rmse = root_mean_squared_error(y_true, y_pred)
63
+ print(f'Root Mean Squared Error on {dataset_name} Data: {rmse:.4f}')
64
+
65
+ def simple_diagonal_averaging(predictions_df, test_data, context_length, step_columns):
66
+ """
67
+ Simple approach to diagonally averaging predictions by patient.
68
+ Skips the first context_length rows and averages the rest for each timestamp.
69
+
70
+ Args:
71
+ predictions_df (pd.DataFrame): DataFrame with step-wise predictions
72
+ test_data (pd.DataFrame): Original test data with patient IDs
73
+ context_length (int): Number of context steps used in the model
74
+ step_columns (list): List of step column names
75
+
76
+ Returns:
77
+ pd.DataFrame: DataFrame with averaged predictions
78
+ """
79
+ # Create a new dataframe for the final results
80
+ final_df = test_data.copy()
81
+
82
+ # Initialize prediction column with zeros/NaN
83
+ final_df['averaged_prediction'] = 0
84
+
85
+ # Process each patient separately
86
+ for patient_id in test_data['patient_id'].unique():
87
+ # Get indices for this patient
88
+ patient_mask = final_df['patient_id'] == patient_id
89
+ patient_indices = final_df[patient_mask].index
90
+
91
+ # Skip the first context_length rows for this patient
92
+ start_idx = min(context_length, len(patient_indices))
93
+
94
+ # For each row after the context window
95
+ for i in range(start_idx, len(patient_indices)):
96
+ row_idx = patient_indices[i]
97
+ pred_row_idx = i - context_length
98
+
99
+ # Skip if the prediction row index is negative
100
+ if pred_row_idx < 0:
101
+ continue
102
+
103
+ # Get the corresponding prediction row
104
+ if pred_row_idx < len(predictions_df):
105
+ # Average the predictions for all steps
106
+ avg_prediction = predictions_df.iloc[pred_row_idx][step_columns].mean()
107
+ final_df.loc[row_idx, 'averaged_prediction'] = avg_prediction
108
+
109
+ return final_df
110
+
111
+ def main():
112
+ print("Running machine_learning_approach script...")
113
+
114
+ script_dir = os.path.dirname(os.path.abspath(__file__))
115
+ test_file = os.path.join(script_dir, '..', 'data', 'processed', 'test_dataset.csv')
116
+ train_file = os.path.join(script_dir, '..', 'data', 'processed', 'train_dataset.csv')
117
+ validation_file = os.path.join(script_dir, '..', 'data', 'processed', 'validation_dataset.csv')
118
+
119
+ # Load datasets
120
+ df_train = pd.read_csv(train_file)
121
+ df_validation = pd.read_csv(validation_file)
122
+ df_test = pd.read_csv(test_file)
123
+
124
+ # Format datasets
125
+ X_train, y_train = format_dataset(df_train, X_WINDOW_SIZE, Y_WINDOW_SIZE)
126
+ X_val, y_val = format_dataset(df_validation, X_WINDOW_SIZE, Y_WINDOW_SIZE)
127
+ X_test, y_test = format_dataset(df_test, X_WINDOW_SIZE, Y_WINDOW_SIZE)
128
+
129
+ # Initialize the model
130
+ xgb_model = xgb.XGBRegressor(
131
+ n_estimators=50,
132
+ learning_rate=0.2,
133
+ max_depth=5,
134
+ objective='reg:squarederror',
135
+ random_state=42
136
+ )
137
+
138
+ # Train model on the training dataset
139
+ xgb_model = train_model(xgb_model, X_train, y_train)
140
+
141
+ y_val_pred = xgb_model.predict(X_val)
142
+
143
+ # Evaluate on the validation set
144
+ evaluate_model(y_val, y_val_pred, "Validation")
145
+
146
+ # Re-train on the combined training and validation dataset
147
+ X_train_complete = np.concatenate((X_train, X_val), axis=0)
148
+ y_train_complete = np.concatenate((y_train, y_val), axis=0)
149
+ xgb_model = train_model(xgb_model, X_train_complete, y_train_complete)
150
+
151
+ model_output_path = os.path.join(script_dir, '..', 'models', 'xgb_model.pkl')
152
+ joblib.dump(xgb_model, model_output_path)
153
+
154
+ xgb_model = joblib.load(model_output_path)
155
+
156
+ y_test_pred = xgb_model.predict(X_test)
157
+
158
+ # Evaluate on the test set
159
+ evaluate_model(y_test, y_test_pred, "Test")
160
+
161
+ output_dir = os.path.join(script_dir, '..', 'data', 'outputs', 'ml_predictions_raw.csv')
162
+
163
+ # Save test set results
164
+ pd.DataFrame(y_test_pred).to_csv(output_dir)
165
+
166
+ final_results = simple_diagonal_averaging(
167
+ pd.DataFrame(y_test_pred),
168
+ df_test,
169
+ X_WINDOW_SIZE,
170
+ pd.DataFrame(y_test_pred).columns
171
+ )
172
+
173
+ # Save final results to CSV
174
+ final_results_path = os.path.join(script_dir, '..', 'data', 'outputs', 'ml_predictions.csv')
175
+ final_results.to_csv(final_results_path, index=False)
176
+
177
+ return
178
+
179
+
180
+
181
+ # Main entry point
182
+ if __name__ == '__main__':
183
+ main()
scripts/naive_approach.py ADDED
@@ -0,0 +1,356 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import tempfile
3
+ import pandas as pd
4
+ import warnings
5
+ import torch
6
+ import numpy as np
7
+ from transformers import Trainer, TrainingArguments, set_seed
8
+
9
+ from tsfm_public import TimeSeriesPreprocessor
10
+ from tsfm_public.models.tinytimemixer import TinyTimeMixerForPrediction
11
+ from tsfm_public.toolkit.get_model import get_model
12
+ from tsfm_public.toolkit.dataset import ForecastDFDataset
13
+
14
+ # Constants
15
+ SEED = 42
16
+ TTM_MODEL_PATH = "ibm-granite/granite-timeseries-ttm-r2"
17
+ CONTEXT_LENGTH = 52 # 4.33 hrs
18
+ PREDICTION_LENGTH = 6 # 30 mins
19
+ OUT_DIR = "ttm_finetuned_models/"
20
+
21
+ def setup_environment():
22
+ """
23
+ Set up the environment for model training and evaluation.
24
+ Creates necessary directories and sets random seed for reproducibility.
25
+ """
26
+ set_seed(SEED)
27
+ os.makedirs(OUT_DIR, exist_ok=True)
28
+ os.makedirs(os.path.join(OUT_DIR, 'results'), exist_ok=True)
29
+
30
+ def load_dataset(file_path):
31
+ """
32
+ Load the dataset from the specified file path.
33
+
34
+ Args:
35
+ file_path (str): Path to the dataset CSV file
36
+
37
+ Returns:
38
+ pd.DataFrame: The loaded dataset
39
+ """
40
+ return pd.read_csv(file_path)
41
+
42
+ def prepare_data(data, timestamp_column):
43
+ """
44
+ Prepare the dataset by converting timestamp column to datetime format.
45
+
46
+ Args:
47
+ data (pd.DataFrame): The dataset
48
+ timestamp_column (str): Name of the timestamp column
49
+
50
+ Returns:
51
+ pd.DataFrame: The processed dataset
52
+ """
53
+ data[timestamp_column] = pd.to_datetime(data[timestamp_column])
54
+ return data
55
+
56
+ def get_column_specs():
57
+ """
58
+ Define and return column specifications for the dataset.
59
+
60
+ Returns:
61
+ dict: Column specifications including timestamp, ID, target, and control columns
62
+ """
63
+ timestamp_column = "Timestamp"
64
+ id_columns = ["patient_id"]
65
+ target_columns = ["Glucose"]
66
+ control_columns = ["Accelerometer", "Calories", "Carbs", "Sugar", "Gender", "HbA1c", "Age"]
67
+
68
+ return {
69
+ "timestamp_column": timestamp_column,
70
+ "id_columns": id_columns,
71
+ "target_columns": target_columns,
72
+ "control_columns": control_columns,
73
+ }
74
+
75
+ def create_test_only_dataset(ts_preprocessor, test_dataset, train_dataset=None, stride=1, enable_padding=True, **dataset_kwargs):
76
+ """
77
+ Creates a preprocessed pytorch dataset for testing only.
78
+
79
+ Args:
80
+ ts_preprocessor: TimeSeriesPreprocessor instance
81
+ test_dataset: Pandas dataframe for testing
82
+ train_dataset: Optional pandas dataframe for training the scaler
83
+ stride: Stride used for creating the dataset
84
+ enable_padding: If True, datasets are created with padding
85
+ dataset_kwargs: Additional keyword arguments to pass to ForecastDFDataset
86
+
87
+ Returns:
88
+ ForecastDFDataset for testing
89
+ """
90
+ # Standardize the test dataframe
91
+ test_data = ts_preprocessor._standardize_dataframe(test_dataset)
92
+
93
+ # Train the preprocessor on the training data if provided, otherwise use test data
94
+ if train_dataset is not None:
95
+ train_data = ts_preprocessor._standardize_dataframe(train_dataset)
96
+ ts_preprocessor.train(train_data)
97
+ else:
98
+ ts_preprocessor.train(test_data)
99
+
100
+ # Preprocess the test data
101
+ test_data_prep = test_data.copy() # Skip preprocessing to avoid scaling errors
102
+
103
+ # Specify columns
104
+ column_specifiers = {
105
+ "id_columns": ts_preprocessor.id_columns,
106
+ "timestamp_column": ts_preprocessor.timestamp_column,
107
+ "target_columns": ts_preprocessor.target_columns,
108
+ "observable_columns": ts_preprocessor.observable_columns,
109
+ "control_columns": ts_preprocessor.control_columns,
110
+ "conditional_columns": ts_preprocessor.conditional_columns,
111
+ "categorical_columns": ts_preprocessor.categorical_columns,
112
+ "static_categorical_columns": ts_preprocessor.static_categorical_columns,
113
+ }
114
+
115
+ params = column_specifiers
116
+ params["context_length"] = ts_preprocessor.context_length
117
+ params["prediction_length"] = ts_preprocessor.prediction_length
118
+ params["stride"] = stride
119
+ params["enable_padding"] = enable_padding
120
+
121
+ # Add frequency token - this is critical for TinyTimeMixer
122
+ params["frequency_token"] = ts_preprocessor.get_frequency_token(ts_preprocessor.freq)
123
+
124
+ # Update with any additional kwargs
125
+ params.update(**dataset_kwargs)
126
+
127
+ # Create the ForecastDFDataset
128
+ test_dataset = ForecastDFDataset(test_data_prep, **params)
129
+
130
+ if len(test_dataset) == 0:
131
+ raise RuntimeError("The generated test dataset is of zero length.")
132
+
133
+ return test_dataset
134
+
135
+
136
+
137
+ def zeroshot_eval(train_df, test_df, batch_size, context_length=CONTEXT_LENGTH, forecast_length=PREDICTION_LENGTH, model_path=TTM_MODEL_PATH):
138
+ """
139
+ Performs zero-shot evaluation of time series forecasting on test data.
140
+
141
+ Args:
142
+ train_df: Training dataframe
143
+ test_df: Testing dataframe
144
+ batch_size: Batch size for evaluation
145
+ context_length: Number of time steps to use as context
146
+ forecast_length: Number of time steps to predict
147
+
148
+ Returns:
149
+ dict: Dictionary containing predictions dataframe and metrics
150
+ """
151
+ column_specifiers = get_column_specs()
152
+
153
+ # Create preprocessor with scaling disabled
154
+ tsp = TimeSeriesPreprocessor(
155
+ timestamp_column=column_specifiers["timestamp_column"],
156
+ id_columns=column_specifiers["id_columns"],
157
+ target_columns=column_specifiers["target_columns"],
158
+ control_columns=column_specifiers["control_columns"],
159
+ context_length=context_length,
160
+ prediction_length=forecast_length,
161
+ scaling=False,
162
+ encode_categorical=False,
163
+ force_return="zeropad",
164
+ )
165
+
166
+ # Load model
167
+ zeroshot_model = get_model(
168
+ model_path,
169
+ context_length=context_length,
170
+ prediction_length=forecast_length,
171
+ freq_prefix_tuning=False,
172
+ freq=None,
173
+ prefer_l1_loss=False,
174
+ prefer_longer_context=True,
175
+ )
176
+
177
+ # Create test dataset
178
+ dset_test = create_test_only_dataset(ts_preprocessor=tsp, test_dataset=test_df, train_dataset=train_df)
179
+
180
+ # Setup trainer
181
+ temp_dir = tempfile.mkdtemp()
182
+ zeroshot_trainer = Trainer(
183
+ model=zeroshot_model,
184
+ args=TrainingArguments(
185
+ output_dir=temp_dir,
186
+ per_device_eval_batch_size=batch_size,
187
+ seed=SEED,
188
+ report_to="none",
189
+ ),
190
+ )
191
+
192
+ # Get predictions
193
+ predictions_dict = zeroshot_trainer.predict(dset_test)
194
+
195
+ # Process predictions
196
+ processed_predictions = process_predictions(predictions_dict, tsp, column_specifiers["target_columns"])
197
+
198
+ # Get evaluation metrics
199
+ metrics = zeroshot_trainer.evaluate(dset_test)
200
+
201
+ return {
202
+ "predictions_df": processed_predictions,
203
+ "metrics": metrics
204
+ }
205
+
206
+ def process_predictions(predictions_dict, tsp, target_columns):
207
+ """
208
+ Process the predictions from the Trainer into a usable DataFrame.
209
+
210
+ Args:
211
+ predictions_dict: Predictions from the Trainer
212
+ tsp: TimeSeriesPreprocessor instance
213
+ target_columns: List of target column names
214
+
215
+ Returns:
216
+ pd.DataFrame: DataFrame containing processed predictions
217
+ """
218
+ # Extract predictions
219
+ if hasattr(predictions_dict, 'predictions'):
220
+ raw_predictions = predictions_dict.predictions
221
+ else:
222
+ raw_predictions = predictions_dict.get('predictions', predictions_dict)
223
+
224
+ # Handle tuple predictions (mean and uncertainty)
225
+ if isinstance(raw_predictions, tuple):
226
+ predictions = raw_predictions[0]
227
+ else:
228
+ predictions = raw_predictions
229
+
230
+ # Get shape information
231
+ n_samples, n_timesteps, n_features = predictions.shape
232
+
233
+ # Create DataFrame for processed predictions
234
+ processed_df = pd.DataFrame()
235
+
236
+ # Extract predictions for each target and timestep
237
+ for i, col in enumerate(target_columns):
238
+ if i < n_features:
239
+ for t in range(n_timesteps):
240
+ processed_df[f"{col}_step_{t+1}"] = predictions[:, t, i]
241
+
242
+ return processed_df
243
+
244
+ def simple_diagonal_averaging(predictions_df, test_data, context_length, step_columns):
245
+ """
246
+ Improved approach to diagonally averaging predictions by patient.
247
+ Properly handles the last rows of predictions to ensure all available
248
+ predicted values are used.
249
+
250
+ Args:
251
+ predictions_df (pd.DataFrame): DataFrame with step-wise predictions
252
+ test_data (pd.DataFrame): Original test data with patient IDs
253
+ context_length (int): Number of context steps used in the model
254
+ step_columns (list): List of step column names
255
+
256
+ Returns:
257
+ pd.DataFrame: DataFrame with averaged predictions
258
+ """
259
+ # Create a new dataframe for the final results
260
+ final_df = test_data.copy()
261
+
262
+ # Initialize prediction column with zeros/NaN
263
+ final_df['averaged_prediction'] = 0
264
+
265
+ # Convert step_columns to list if it's not already
266
+ step_columns = list(step_columns)
267
+
268
+ # Process each patient separately
269
+ for patient_id in test_data['patient_id'].unique():
270
+ # Get indices for this patient
271
+ patient_mask = final_df['patient_id'] == patient_id
272
+ patient_indices = final_df[patient_mask].index
273
+
274
+ # Skip the first context_length rows for this patient
275
+ start_idx = min(context_length, len(patient_indices))
276
+
277
+ # For each row after the context window
278
+ for i in range(start_idx, len(patient_indices)):
279
+ row_idx = patient_indices[i]
280
+ pred_row_idx = i - context_length
281
+
282
+ # Skip if the prediction row index is negative
283
+ if pred_row_idx < 0:
284
+ continue
285
+
286
+ # Get the corresponding prediction row
287
+ if pred_row_idx < len(predictions_df):
288
+ # Average the predictions for all steps
289
+ avg_prediction = predictions_df.iloc[pred_row_idx][step_columns].mean()
290
+ final_df.loc[row_idx, 'averaged_prediction'] = avg_prediction
291
+ else:
292
+ # Handle the case where we've run out of prediction rows
293
+ # Calculate how many steps beyond the last prediction row we are
294
+ excess_steps = pred_row_idx - len(predictions_df) + 1
295
+
296
+ # Make sure we don't go beyond the available steps
297
+ if excess_steps < len(step_columns):
298
+ # Use the last row of predictions but only the appropriate steps
299
+ relevant_steps = step_columns[excess_steps:]
300
+ if len(relevant_steps) > 0: # Check if list is not empty
301
+ avg_prediction = predictions_df.iloc[-1][relevant_steps].mean()
302
+ final_df.loc[row_idx, 'averaged_prediction'] = avg_prediction
303
+
304
+ return final_df
305
+
306
+ def main():
307
+ """
308
+ Main function to execute the time series forecasting workflow.
309
+ """
310
+ # Setup
311
+ # setup_environment()
312
+
313
+ # Get dataset path
314
+ script_dir = os.path.dirname(os.path.abspath(__file__))
315
+ test_file = os.path.join(script_dir, '..', 'data', 'processed', 'test_dataset.csv')
316
+ train_file = os.path.join(script_dir, '..', 'data', 'processed', 'train_dataset.csv')
317
+
318
+ # Load and prepare data
319
+ test_data = load_dataset(test_file)
320
+ train_data = load_dataset(train_file)
321
+ column_specs = get_column_specs()
322
+ test_data = prepare_data(test_data, column_specs["timestamp_column"])
323
+ train_data = prepare_data(train_data, column_specs["timestamp_column"])
324
+
325
+ # Run zero-shot evaluation
326
+ results = zeroshot_eval(
327
+ train_df=train_data,
328
+ test_df=test_data,
329
+ batch_size=8,
330
+ context_length=CONTEXT_LENGTH,
331
+ forecast_length=PREDICTION_LENGTH
332
+ )
333
+
334
+ # Get all step columns
335
+ step_columns = [col for col in results["predictions_df"].columns if col.startswith("Glucose_step_")]
336
+
337
+ # Apply simple diagonal averaging by patient
338
+ final_results = simple_diagonal_averaging(
339
+ results["predictions_df"],
340
+ test_data,
341
+ CONTEXT_LENGTH,
342
+ step_columns
343
+ )
344
+
345
+ # Save raw predictions to CSV
346
+ raw_predictions_path = os.path.join(script_dir, '..', 'data', 'outputs', 'naive_predictions_raw.csv')
347
+ results["predictions_df"].to_csv(raw_predictions_path, index=False)
348
+
349
+ # Save final results to CSV
350
+ final_results_path = os.path.join(script_dir, '..', 'data', 'outputs', 'naive_predictions.csv')
351
+ final_results.to_csv(final_results_path, index=False)
352
+
353
+ return
354
+
355
+ if __name__ == "__main__":
356
+ main()
scripts/visualizations.py ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import pandas as pd
2
+ import numpy as np
3
+ import matplotlib.pyplot as plt
4
+
5
+ def plot_results(y_pred, y_true, df, sample_number):
6
+ """
7
+
8
+ """
9
+
10
+ row_number = 0
11
+
12
+ for patient in df['patient_id'].unique():
13
+ n_samples = df[df['patient_id'] == patient].shape[0]
14
+
15
+ time = np.arange(0, n_samples*5, 5)
16
+
17
+ # podria plotear el tramo anterior tambien
18
+ plt.plot(time, y_pred[row_number:row_number+n_samples], label = 'Prediction')
19
+ plt.plot(time, y_true[row_number:row_number+n_samples], label = 'Ground truth')
20
+
21
+ plt.xlabel("Time (minutes)")
22
+ plt.ylabel("Blood Glucose Level")
23
+ plt.title(f'Patient{patient}')
24
+
25
+ plt.show()