Spaces:
Runtime error
Runtime error
iaravagni
commited on
Commit
·
6e8eb41
0
Parent(s):
Initial commit
Browse files- .gitattributes +40 -0
- README.md +126 -0
- data/outputs/dl_predictions.csv +0 -0
- data/outputs/dl_predictions_raw.csv +0 -0
- data/outputs/ml_predictions.csv +0 -0
- data/outputs/ml_predictions_raw.csv +0 -0
- data/outputs/naive_predictions.csv +0 -0
- data/outputs/naive_predictions_raw.csv +0 -0
- data/processed/combined_dataset.csv +0 -0
- data/processed/dataset_by_patient/patient_001.csv +0 -0
- data/processed/dataset_by_patient/patient_002.csv +0 -0
- data/processed/dataset_by_patient/patient_003.csv +0 -0
- data/processed/dataset_by_patient/patient_004.csv +0 -0
- data/processed/dataset_by_patient/patient_005.csv +0 -0
- data/processed/dataset_by_patient/patient_006.csv +0 -0
- data/processed/dataset_by_patient/patient_007.csv +0 -0
- data/processed/dataset_by_patient/patient_008.csv +0 -0
- data/processed/dataset_by_patient/patient_009.csv +0 -0
- data/processed/dataset_by_patient/patient_010.csv +0 -0
- data/processed/dataset_by_patient/patient_011.csv +0 -0
- data/processed/dataset_by_patient/patient_012.csv +0 -0
- data/processed/dataset_by_patient/patient_013.csv +0 -0
- data/processed/dataset_by_patient/patient_014.csv +0 -0
- data/processed/dataset_by_patient/patient_015.csv +1674 -0
- data/processed/dataset_by_patient/patient_016.csv +0 -0
- data/processed/samples/sample_A.csv +201 -0
- data/processed/samples/sample_B.csv +202 -0
- data/processed/test_dataset.csv +0 -0
- data/processed/train_dataset.csv +0 -0
- data/processed/validation_dataset.csv +0 -0
- glucose_app.py +482 -0
- models/xgb_model.pkl +3 -0
- requirements.txt +0 -0
- scripts/dl_approach.py +354 -0
- scripts/finetuning.py +239 -0
- scripts/make_dataset.py +296 -0
- scripts/metrics.py +74 -0
- scripts/ml_approach.py +183 -0
- scripts/naive_approach.py +356 -0
- 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()
|